天天看點

深入解析MySQL:查詢的基本操作

作者:JAVA後端架構
深入解析MySQL:查詢的基本操作

概述

提到查詢,就回到我們第四篇的SQL語言分類了,DQL(Data QueryLanguage),也就是資料查詢語言,實際就是從資料庫中擷取資料的一種指令方式。我們給資料庫發送一個查詢語句的指令,資料庫按需傳回相應的資料。

查詢基本文法

select column_name1,column_name2,... from tname;           

SQL 中不區分大小寫,select語句中不區分大小寫,SELECT和select、FROM和from效果一樣。

查詢的結果放在一個表格中,表格的第1行稱為列頭,第2行開始是資料,類屬于一個二維數組。

查詢單個字段

配置字段名稱,格式如下:

1 select column_name1 from tname;           
1 mysql> use test;
 2 Database changed
 3 
 4 mysql> select name from user3;
 5 +-------+
 6 | name  |
 7 +-------+
 8 | brand |
 9 | sol     |
10 +-------+
11 2 rows in set           

查詢多個字段

多個字段使用逗号隔開,文法格式如下

1 select column_name1,column_name2,... from tname;           
1 mysql> use test;
 2 Database changed
 3 
 4 mysql> select id,age,name from user3;
 5 +----+-----+-------+
 6 | id | age | name  |
 7 +----+-----+-------+
 8 |  1 |  20 | brand |
 9 |  2 |  22 | sol   |
10 +----+-----+-------+
11 2 rows in set           

查詢所有字段

使用*号通配符來表示,文法格式如下

1 select * from tname;           
1 mysql> use test;
 2 Database changed
 3 
 4 mysql> select * from user3;
 5 +----+-----+-------+
 6 | id | age | name  |
 7 +----+-----+-------+
 8 |  1 |  20 | brand |
 9 |  2 |  22 | sol   |
10 +----+-----+-------+
11 2 rows in set           

常量的查詢

對于常量值的查詢,可以不來源于表,格式如下

1 select const1,const2,const3;           
1 mysql> select 100,'brand',1.5;
2 +-----+-------+-----+
3 | 100 | brand | 1.5 |
4 +-----+-------+-----+
5 | 100 | brand | 1.5 |
6 +-----+-------+-----+
7 1 row in set           

表達式的查詢

sql的加減乘除等等表達式的查詢,格式如下:

1 select expression1,expression2,...;           
1 mysql> select 1+2,1-2,1*7,17/2,17%2,(2+3)*5,8>5,7=4;
2 +-----+-----+-----+------+------+---------+-----+-----+
3 | 1+2 | 1-2 | 1*7 | 17/2 | 17%2 | (2+3)*5 | 8>5 | 7=4 |
4 +-----+-----+-----+------+------+---------+-----+-----+
5 |   3 |  -1 |   7 | 8.5  |    1 |      25 |   1 |   0 |
6 +-----+-----+-----+------+------+---------+-----+-----+
7 1 row in set           

函數的查詢

可以在查詢中加上各種類型的系統函數或者使用者自定義函數,來簡化一些較複雜的查詢過程。格式如下:

1 select func1,func2,func3,...;           
1 mysql> select abs(-6),round(5.7),length('brand'),now();
2 +---------+------------+-----------------+---------------------+
3 | abs(-6) | round(5.7) | length('brand') | now()               |
4 +---------+------------+-----------------+---------------------+
5 |       6 | 6          |               5 | 2020-11-06 21:07:41 |
6 +---------+------------+-----------------+---------------------+
7 1 row in set           

表和字段的查詢

查詢列名都會以列的定義名稱顯示,這樣顯示的時候檢視不友善,還容易暴露資料庫的資訊給業務,為了增強腳本可閱讀性,我們經常使用字段别名。

設定表的别名更主要的還是在于書寫查詢語句時候的便利,并避免多表查詢時的字段混淆。格式如下:

1 select talias.column_name1 col1,talias.column_name2 col2 from  tname [as] talias;           
1 mysql> use test;
 2 Database changed
 3 
 4 mysql> select u.id as 主鍵,u.age as 年齡,u.name as 名稱 from user3 u;
 5 +------+------+-------+
 6 | 主鍵 | 年齡 | 名稱  |
 7 +------+------+-------+
 8 |    1 |   20 | brand |
 9 |    2 |   22 | sol   |
10 +------+------+-------+
11 2 rows in set           

混合查詢

查詢具體表的字段是可以跟表達式,常量等混合在一起的,這樣才能應付複雜的業務。

1 mysql> select '中國2020人口普查' as 标題,u.id as 主鍵,u.age as 年齡,u.name as 名稱,now() as 查詢時間,2020*rand() as 随機數 from user3 u;
2 +------------------+------+------+-------+---------------------+--------------------+
3 | 标題             | 主鍵 | 年齡 | 名稱  | 查詢時間            | 随機數             |
4 +------------------+------+------+-------+---------------------+--------------------+
5 | 中國2020人口普查 |    1 |   20 | brand | 2020-11-06 21:23:39 | 1236.3585094328582 |
6 | 中國2020人口普查 |    2 |   22 | sol   | 2020-11-06 21:23:39 | 344.21752367561453 |
7 +------------------+------+------+-------+---------------------+--------------------+
8 2 rows in set           

總結

1、本片隻是查詢的基礎篇,後續會引出 查詢的過濾條件、排序、分頁、分組、正則比對過濾,以及複雜查詢的性能優化等等。

2、查詢資料的時候,應遵循應需而查,查詢需要的字段即可,切勿随意的使用*,資料量大的時候性能差距就明顯了。

為幫助開發者們提升面試技能、有機會入職BATJ等大廠公司,特别制作了這個專輯——這一次整體放出。

大緻内容包括了: Java 集合、JVM、多線程、并發程式設計、設計模式、Spring全家桶、Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、MongoDB、Redis、MySQL、RabbitMQ、Kafka、Linux、Netty、Tomcat等大廠面試題等、等技術棧!

深入解析MySQL:查詢的基本操作

歡迎大家關注公衆号【Java爛豬皮】,回複【666】,擷取以上最新Java後端架構VIP學習資料以及視訊學習教程,然後一起學習,一文在手,面試我有。

每一個專欄都是大家非常關心,和非常有價值的話題,如果我的文章對你有所幫助,還請幫忙點贊、好評、轉發一下,你的支援會激勵我輸出更高品質的文章,非常感謝!

深入解析MySQL:查詢的基本操作

繼續閱讀