一、篩選條件:
(一)、比較運算符:
1、等於: = ( 注意!不是 == )
2、不等於: != 或 <>
3、大於: >
4、大於等於: >=
5、小於: <
6、小於等於: <=
7、IS NULL
8、IS NOT NULL
(二)、邏輯運算符:
與 AND 或 OR 非 NOT
(三)、其他操作:
1、排序(order by):
SELECT columns FROM tb_name ORDER BY col [asc/desc] ;
-- 正序 asc(默認) -- 倒序 desc
2、限制(limit):
SELECT columns FROM tb_name LIMIT start, count ;
-- LIMIT count;
-- LIMIT start,count;
3、去重(distinct):
SELECT DISTINCT filer_name FROM tb_name;
4、模糊查詢 like "%"
任意多個字符: %
任意一個字符: _
5、查詢範圍:
(1)、連續範圍:BETWEEN a AND b
a <= value <= b
(2)、間隔查詢:IN
a in (10, 20, 30 [...])
二、聚合與分組(重難點):
(一)、常用聚合函數:
-- 統計個數
COUNT(column)
-- 最大值
MAX(column)
-- 最小值
MIN(column)
-- 求和
SUM(column)
-- 平均值
AVG(column)
-- 列出字段全部值
GROUP_CONCAT(column)
(二)、分組查詢(group by):
SELECT group_column, aggregations
FROM tb_name
GROUP BY group_column;
-- 在分組的情況下,只能夠出現分組字段和聚合字段
-- 其他的字段沒有意義,會報錯!
(三)、聚合篩選(having):
SELECT group_column, aggregations
FROM tb_name
GROUP BY group_column
HAVING conditions;
-- 加having條件表達式,可以對輸出的結果做出限制
假如說:
一個查詢語句中同時包含了別名(as),聚合函數, where, having
那麼他們的執行順序是
1、先是執行:where
2、然後執行:聚合函數和別名
3、最後執行:having
三、子查詢(瞭解):
(一)、概念:將一個查詢的結果留下來用於下一次查詢 ( select 中嵌套 select )。
(二)、要求:1、嵌套在查詢內部;
2、必須始終出現在圓括號內。
-- 求出學生的平均年齡
select avg(age) from student;
-- 查找出大於平均年齡的數據
select * from student where age > 20;
--#將求出的平均年齡的SQL語句用於查找大於平均年齡的語句中
select * from student where age > (select avg(age) from student);
四、連接查詢(瞭解):
(一)、內連接(inner join)
1、無條件內連接:
無條件內連接,又名交叉連接/笛卡爾連接
第一張表種的每一項會和另一張表的每一項依次組合
select * from student [inner] join grades;
2、有條件內連接:
在無條件內鏈接的基礎上,加上一個on子句
當連接的時候,篩選出那些有實際意義的記錄來進行組合
select * from student inner join grades on number = student_number;
(二)、外連接({left | right} join)
1、左外連接: (以左表爲基準)
兩張表做連接的時候,在連接條件不匹配的時候
留下左表中的數據,而右表中的數據以NULL填充
select * from student left join grades on number=student_number;
2、右外連接: (以右表爲基準)
對兩張表做連接的時候,在連接條件不匹配的時候
留下右表中的數據,而左表中的數據以NULL填充
select * from grades right join student on number=student_number;
寫在最後:
1、本人由於在學校剛學,博客也是邊學習,邊更新,寫的不好的地方,希望各位大佬指正;
2、有時候學業繁忙,更新會比較慢。