数据库——DQL(语句查询)
查詢的基本結構:
概念:
查詢(DQL)是數據庫中最為常用和復雜的一種SQL結構,學會編寫查詢SQL是程序員必須具備的能力。
要從數據庫中查詢數據,我們要使用SQL的SELECT語句。標準SELECT查詢由SELECT子句、FROM子句、WHERE子句、ORDER BY子句組成。
標準結構:SELECT [DISTINCT] {*|列名[別名], .....}
FROM 表名
[WHERE 過濾條件]
[ORDER BY 列1,列2....]
投影操作:
概念:投影才做是查詢語句里必須有的子句,關鍵字則為SELECT。將選擇對表中哪些列進行操作,將這些列出現在結果中。
標準結構:SELECT 列1,列2 FROM 表名
書寫方法:
1.如果選擇某個表中的多個列,那么列名之間用逗號分隔;
2.如果是單個列,只需要列出該列的列名即可;
3.如果選擇所有的列,可以簡單的用“*”號代替列名列表。
例: Select f_name,f_club from t_player
Select * from t_team; // *表示代表所有的列(不建議使用,要全寫)
表前綴:SELECT t_student.姓名 FROM t_sudent
例:Select t_team.f_teamName from t_ team;
列別名:使用別名,可以使SQL語句和返回的數據更用以讀懂、更容易理解。在多個表中有同樣的別名的時候,使用別名更容易區分;
在列名或表名用AS關鍵字類提供別名;
語法:SELECT 列A AS A,列B AS B,列C AS C FROM 表名 AS T
當使用表名的別名時,可以在同一SQL語句中的列名使用別名;
例:SELECT T.列A AS A, T.列B AS B,T.列C AS C FROM 表名 AS T
Select f_name as id,f_club from t_player; //as id表示別名
計算列:在數據庫管理中,我們也可以執行返回計算列的SELECT查詢。返回計算列意味著數據不存在與數據庫中,但是可以沖數據庫中的數據構造或者計算的來;
例:將每個學生年齡加上10歲顯示:
SELECT 年齡+10 FROM t_student
CONCAT函數:做字符串拼接
投影列也可以用字符串連接,MySQL中字符串連接用CONCAT函數,
例:SELECT CONCAT(姓名,‘-’,年齡) FROM t_student
Select concat (f_teamCoach,’是’,f_teamName,’的主教練’) as 描述,f_teamNum as 球員數 from t_team;
排除重復數據:數據庫表的同列中,經常有相同值,多次出現。有時需喲啊確保返回唯一的數據行,這時需要使用DISTINCT關鍵字來排除重復的行數據。
標準結構:SELECT DISTINCT 列1 FROM 表名
SELECT DISTINCT 性別 FROM t_student
返回限定行數的查詢:在MySQL中可以限制查詢的行數,并制定從第幾行開始到第幾行結束。
標準結構:SELECT 列1,列2 FROM t_student LIMIT 開始序號,返回的行數
例:Select * from t_player limit 0,50; //查看從0行開始
如果用1個參數,則表示從第一行開始返回制定行數的結果。
如果用2個參數,則表示從指定行開始返回知道那個行數的結果。
注:LIMIT序號是從0開始。LIMIT只能用于MySQL中。
簡單查詢中的選擇操作:
WHERE關鍵字:
運算符:
單條件選擇操作:WHERE子句應用搜索條件SELECT查詢獲得的數據,搜索條件可以采用不同的形式,但是條件的值都是布爾值。在此情況下,只對“列C = 值”為真的行干星期。如果條件為真,行就被返回;如果為假或UNKNOWN(因為null值的存在),則被忽略。
標準結構:SELECT 列1,列2 FROM 表 WHERE 列3 = 值
例:Select * from t_player where f_club = ‘曼聯’;
多條件選擇操作:組合WHERE條件
AND:并且
標準結構:SELECT 列A,列B FROM 表 WHERE 條件1 and 條件2
例:SELECT * FROM t_player WHERE f_dateOfBirth>='1980-1-1' AND f_dateOfBirth<='2000-1-1';
OR:或者
標準結構:SELECT 列A,列B FROM 表 WHERE 條件1 or 條件2
例:SELECT * FROM t_player WHERE f_club='曼聯' OR f_club='拜仁慕尼黑';
執行返回測試:BETWEEN;一個范圍搜索,大于等于下限,并且小于等于上限。
標準結構:SELECT 列A,列B FROM 表 WHERE 列C BETWEEN 下限 AND 上限
例:Select * from t_player where f_number BETWEEN 5 and 8;
定義集合關系:在制定的某幾個值中進行搜索
標準結構 IN: SELECT 列A,列B FROM 表 WHERE 列C IN(值集合);
例:Select * from t_player where f_club in ('曼聯','拜仁募集黑','ac米蘭');
標準結構 NOTIN: SELECT 列A,列B FROM 表 WHERE 列C NOTIN(值集合);
例:Select * from t_player where f_club not in ('曼聯','拜仁募集黑','ac米蘭'); //not 表示除了
模糊查詢:模糊查詢是一種比較使用的過濾方式,利用通配符來實現模糊查詢。
通配符:“_”通配符:_ 表示任何單個字符;
“%”通配符:% 表示包含零個或多個任意字符
標準結構 LIKE: SELECT 列A,列B FROM 表 WHERE 列C LIKE 模式
例:Select * from t_player where f_club like ‘曼%’;
Select * from t_player where f_club like ‘%米’; //% 不限定字符
Select * from t_player where f_club like ‘_ _’; // _ 一個表示一個字符
Select * from t_player where f_club not like ‘曼%’; //not 表示除了
空查詢:在數據庫中判斷某列師傅為空不能用 = null,而應該用IS null 或 IN not null。使用其它任何比較運算符來匹配null得到的都是FALSE的結果,比較null = null也是返回FALSE。注:不能用=號或!=等號表示
例:SELECT * FROM t_student WHERE 性別 IS null
Select * from t_player where F_club is null; //是空
Select * from t_player where F_club is not null; //not 不是空
簡單查詢中的排序操作:
概念:排序操作是指當查詢的結果投影出來后以哪一列或及列的順序進行排列。如果不指定則以數據庫默認順序排列。
標準結構:
單列排序:SELECT 列A,列B,列C FROM 表 ORDER BY 列A
例:Select * from t_player ORDER BY f_date OfBirth; //ASC 升序 可不寫默認
Select * from t_player ORDER BY f_date OfBirth DESC; // DESC 降序
其中ORDER BY子句指定列A用于數據排序,列A的值可以是字母、數字、時間等。
多列排序:SELECT 列A,列B,列C FROM 表 ORDER BY 列A,列B,列C....
例:Select * from t_player ORDER BY f_dateOfBirth DESC, f_numberDESC;
Select * from t_player wher f_dateOfBirth BETWEEN’1992-1-1’ and ‘1992-12-9’ORDER BY f_dateOfBirth DESC, f_numberDESC;
其中ORDER BY子句后指定多個列名時,是根據后面列名的順序確定優先級。
小結:
基本查詢SQL的執行順序
1.執行FROM
2.WHERE條件過濾
3.執行SELECT投影列
4.執行ORDER BY排序
總結
以上是生活随笔為你收集整理的数据库——DQL(语句查询)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 莴苣是发物吗
- 下一篇: 利宝车险怎么样(中国保险公司十大排名)