009_查询表内容
1. 查詢表內容命令: select [distinct] [*] [`列名1`, `列名2`, ...] from `表名1`, `表名2`, ... [where 條件1 [and|or] 條件2 ...] [group by having] [order by] [limit N|limit M, N] [offset M]; 。
2. select語句
2.1. select語句用于從數據庫中選取數據。選擇顯示哪些列, 結果被存儲在一個結果表中, 稱為結果集。
2.2. select語句使用星號(*)返回表的所有字段數據。
2.3. 查詢所有列命令: select * from `表名`; 。
2.4. 查詢部分列命令: select [`列名1`, `列名2`, ...] from `表名`; 。
3. distinct關鍵詞
3.1. 在表中, 一個列可能會包含多個重復值, 有時您也許希望僅僅列出不同的值。distinct關鍵詞用于返回唯一不同的值。
3.2. 去重查詢命令: select distinct [`列名1`, `列名2`, ...] form `表名`; 。
4. 查詢語句中你可以使用一個或者多個表, 表之間使用逗號分割。
5. where子句
5.1. where子句來設定查詢條件。
5.2. where子句類似于程序語言中的if條件, 根據MySQL表中的字段值來讀取指定的數據。
5.3. 使用主鍵來作為where子句的條件查詢是非??焖俚?。
6. 關系運算符?
6.1. 關系運算符通常用于where子句中。
6.2. <>: 不等于, 標準SQL語法。
6.3. !=: 不等于, 非標準SQL語法。
6.4. 查詢姓別等于女的學生
6.5. 查詢姓別不等于女的學生
6.6. 查詢身高大于1.80的學生
6.7. 查詢身高大于等于1.80的學生
6.8. 查詢身高小于1.80的學生
6.9. 查詢身高小于等于1.80的學生
6.10. NULL值處理
6.10.1. 關于NULL的條件比較運算是比較特殊的。你不能使用=NULL或!=NULL在列中查找NULL值。
6.10.2. 在MySQL中, NULL值與任何其它值的比較(即使是NULL)永遠返回NULL, 即NULL=NULL返回NULL。
6.10.3. MySQL中處理NULL使用IS NULL和IS NOT NULL運算符。
6.10.4. IS NULL當列的值是NULL, 此運算符返回true。
6.10.5. IS NOT NULL當列的值不為NULL, 運算符返回true。
6.10.6. <=>比較操作符(不同于 = 運算符), 當比較的的兩個值相等或者都為NULL時返回true, 一般不用這個。
6.10.7. 查詢名字為NULL的學生。
6.10.8. 查詢名字不為NULL的學生。
7. MySQL的where子句的字符串比較是不區分大小寫的。你可以使用binary關鍵字來設定where子句的字符串比較是區分大小寫的。
8. 邏輯運算: and, or, not
8.1. not非, 查詢非女性學生
8.2. and & or運算符用于基于一個以上的條件對記錄進行過濾。
8.3. 如果第一個條件和第二個條件都成立, 則and運算符顯示一條記錄。
8.4. 如果第一個條件和第二個條件中只要有一個成立, 則or運算符顯示一條記錄。
8.5. and并列, 多個條件都滿足。查詢性別不是男也不是女的學生
8.6. or或, 滿足任一條件就行。查詢性別是男或者性別是女的學生
9. 模糊查詢like
9.1. like操作符用于在where子句中搜索列中的指定模式。
9.2. %: 替代0個或多個字符。
9.3. _: 替代一個字符。
9.4. 查詢name中包含l的學生
9.5. 查詢name中不包含l的學生
9.6. 查詢name倒數第二個字符是l的學生
10. in操作符
10.1. in操作符允許您在where子句中規定多個值。
10.2. 查詢姓別是男或者女的學生
10.3. 查詢姓別不是男或者女的學生
11. between操作符
11.1. between操作符選取介于兩個值之間的數據范圍內的值。這些值可以是數值、文本或者日期。
11.2. 選取身高在1.70和1.80之間的學生(非整數匹配并不好使, 還是關系運算符更好用)
11.3. 選取身高不在1.70和1.80之間的學生(非整數匹配并不好使, 還是關系運算符更好用)
11.4. 查詢名字第一個字母a到j之間的學生(一般不用這種方式查詢)
11.5. 查詢名字第一個字母在a到z, 第二個字母a到j之間的學生(一般不用這種方式查詢)
11.6. 查詢出生日期從1980-01-16 09:23:33到2019-05-16 23:20:53的學生
12. limit & offset子句
12.1. limit屬性只有一個參數的時候, 設置的是返回的記錄數。limit有兩個參數的時候, 第一個參數設置偏移量, 第二個參數設置的是返回的記錄數。
12.2. 你可以通過offset指定select語句開始查詢的數據偏移量, 默認情況下偏移量為0。offset要跟在只有一個參數的limit屬性后面使用。
12.3. 使用limit屬性查詢5條記錄
12.4. 使用limit屬性, 從第三條記錄起, 查詢5條記錄
12.5. 使用limit和offset屬性, 從第三條記錄起, 查詢5條記錄
13. 排序查詢: order by
13.1. order by關鍵字用于對結果集按照一個列或者多個列進行排序。
13.2. order by關鍵字默認按照升序(asc)對記錄進行排序。如果需要按照降序對記錄進行排序, 您可以使用desc關鍵字。
13.3. 按身高升序對學生排序
13.4. 按身高降序對學生排序
13.5. 身高按升序, 體重按降序對學生排序
14. 分組: group by
14.1. group by語句用于結合聚合函數, 根據一個或多個列對結果集進行分組。
14.2. count()聚合函數, 返回行數。
14.3. avg()聚合函數, 返回平均值。
14.4. 按性別分組, 并且查出每組多少人
14.5. 在SQL中增加having子句原因是, where關鍵字無法與聚合函數一起使用。having子句可以讓我們篩選分組后的各組數據。
14.6. 按性別分組, 并且平均身高大于1.72的學生
15. SQL別名
15.1. 通過使用SQL的as關鍵字, 可以為表名稱或列名稱指定別名。事實上as關鍵字也可以省略。
15.2. 基本上, 創建別名是為了讓表名稱或列名稱的可讀性更強。
15.3. 如果別名稱包含空格, 要求使用雙引號或方括號。
15.4. 在查詢中涉及超過一個表, 可以使用別名。
15.5. 在查詢中使用了函數, 可以使用別名。
15.6. 列名稱很長或者可讀性差, 可以使用別名。
15.7. 需要把兩個列或者多個列結合在一起, 可以使用別名。
15.8. 列別名查詢
15.9. 表別名查詢
16. 查詢一條按平均身高排序, 按姓別分組, 姓別是男或者女的學生數據
17. 編寫順序
17.1. select .. from .. where .. group by .. having .. order by .. ?limit and offset
18. 執行順序
18.2. from .. where .. group by .. having .. select .. order by .. ?limit and offset
總結
- 上一篇: 008_表内容的插入删除修改
- 下一篇: 010_多表的表关系