7.1:SELECT語句基本格式:
SELECT {*|字段列表} [FROM <表1>,<表2>... [where <表達式> [GROUP BY <group by 字段> ] [HAVING <expression> [{<operator> <expression>}...]] [ORDER BY <order by 字段>] [LIMIT {<offest>,} <row count>]]
正則表達式
- {*|字段列表}:
*
表明全部字段|字段1,字段2,字段3...- FROM <表1>,<表2>...:查詢的數據來自那張表
- WHERE子句:查詢條件
- GROUP BY <字段>:結果按某字段分組
- HAVING子句 :分組後結果查詢條件,跟在group by 後使用
- [ORDER BY <字段>]:結果按某字段排序
7.2:單表查詢
- 查詢全部字段
SELECT * FROM 表名
- 查詢指定字段(提示:若非取全部字段,建議按需獲取字段信息,提高查詢效率)
SELECT 字段一、字段2... FROM 表名
- 查詢指定記錄,單條件(查詢條件 例:id=3)
SELECT 字段一、字段2... FROM 表名 WHERE 查詢條件
- 查詢空值
SELECT 字段一、字段2... FROM 表名 WHERE 字段1 is null
SELECT 字段一、字段2... FROM 表名 WHERE 字段1 is not null
- 多條件的查詢(查詢條件 例:id=3 and name='abc' and ...)
SELECT 字段一、字段2... FROM 表名 WHERE 查詢條件
- 對查詢結果進行排序(默認asc升序 desc 降序)
SELECT 字段一、字段2... FROM 表名 WHERE 查詢條件 ORDER BY 字段1 ASC|DESC
- 查詢記錄去重
SELECT DISTINCT 字段1 FROM 表名
- 查詢結果分組
SELECT 字段1,字段2... FROM 表名 GROUP BY 字段1 HAVING <條件表達式>
- 限制顯示條數(LIMIT 0,5)
SELECT 字段1,字段2... FROM 表名 LIMIT 0(位置偏移量即第幾行開始),5(行數)
7.3: 聚合函數
函數
參數
做用
AVG()
列名
返回某列的平均值
COUNT()
列名
返回某列的行數
MAX()
列名
返回某列的最大值
MIN()
列名
返回某列的最小值
SUM()
列名
返回某列的和
7.4:鏈接查詢|關聯查詢(內連|外連)
1.內鏈接(INNER JOIN)
2.外鏈接(LEFT JOIN | RIGHT JOIN)sql
鏈接類型
鏈接方式
返回結果
內鏈接
INNER JOIN
返回知足全部條件的記錄即兩表的交集
外鏈接
LEFT JOIN
返回包括左表中的全部記錄和右表中鏈接字段相等的記錄,即兩表的交集+剩下的左表的數據
外鏈接
RIGHT JOIN
返回包括右表中的全部記錄和左表中鏈接字段相等的記錄,即兩表的交集+剩下的右表的數據
7.5:子查詢
將一個查詢(子查詢)的結果當作另外一個查詢(主查詢)的條件去搜索返回結果
子查詢經常使用操做符express
名稱
用法
描述
ANY()
>(比較運算符) ANY(子查詢)
知足子查詢的任一條件,返回一結果當作主查詢的條件
SOME()
>(比較運算符) SOME(子查詢)
知足子查詢的任一條件,返回一結果當作主查詢的條件
ALL()
>(比較運算符) ALL(子查詢)
知足子查詢的全部條件,返回結果當作主查詢的條件
IN()
IN(子查詢)
結果等同於 = ANY(子查詢)
EXISTS()
EXISTS(子查詢)
子查詢返回行,則爲true,反之false,即要麼執行主查詢,要麼不執行主查詢
比較運算符
>(比較運行符) 子查詢(返回結果爲標量)
where 子句的查詢條件爲比較子查詢返回的值
7.6:合併查詢結果
用 union 關鍵字 將兩個或多個select查詢結果合併成一個
兩個或多個select查詢結果的列數、數據類型必須同樣
union 去重; union all 不去重.效率高點。函數
- 例:
SELECT abc,def FROM table1 union SELECT abc,def FROM table2
7.7:查詢條件使用模糊匹配
一、使用REGEXP關鍵字指定正則表達式的字符匹配模式code
選項
說明
例子
匹配值示例
^
匹配文本的開始字符
'^b'匹配以字母b開頭的字符串
book、big、banana、bike
$
匹配文本的結束字符
'st$'匹配以st結尾的字符串
test、resist、persist
.
匹配任何單個字符
'b.t'匹配任何b和t之間有一個字符
bit、bat、but、bite
*
匹配零個或多個在它前面的字符
'f*n'匹配字符n前面有任意個字符f
fn、fan、faan、abcn
+
匹配前面的字符1次或屢次
'ba+'匹配以b開頭,後面至少緊跟一個a
ba、bay、bare、battle
<字符串>
匹配包含指定字符的文本
'fa'
fan、afa、faad
[字符集合]
匹配字符集合中的任何一個字符
'[xz]'匹配x或者z
dizzy、zebra、x-ray、 extra
[^]
匹配不在括號中的任何字符
'[^abc]'匹配任何不包含a、b或c的字符串
desk、fox、f8ke
字符串{n,}
匹配前面的字符串至少n次
b{2}匹配至少2個的b
bbb、bbbb、bbbbbbb
字符串{n,m}
匹配前面的字符串至少n次,至多m次
b{2,4}匹配最少2個,最多4個b
bbb、bbbb
二、使用LIKE關鍵字匹配字符
where 字段1 like %abc% 同 where 字段1 regexp 'abc' 查找帶abc的字符
where 字段1 like abc% 同 where 字段1 regexp '^abc' 查找abc開頭的字符
where 字段1 like %abc 同 where 字段1 regexp 'abc$' 查找abc結束的字符
regexp
查詢sql書寫我的建議:排序