DML(資料操縱語言)、DQL(查詢)
DML包含對資料的增加、修改刪除
1、插入資料INSERT INTO
Insert into 表名 (列名) values (值列表);
-----------------
INSERT INTO table_name ( field1, field2,...fieldN )
VALUES
( value1, value2,...valueN );
2、更新值 UPDATE
Update 表名 set 欄位= 新值 [where 條件];
----------------
UPDATE table_name
SET field1=new-value1,
field2=new-value2
[WHERE Clause];
-- 如果不指定條件,那麼UPDATE將會更新表中所有值
3、刪除DELETE
DELETE FROM table_name [WHERE Clause];
-- 如果不指定條件,那麼DELETE將會刪除表中所有值
DQL
0、語句順序參照
select [all | distinct] 表示式列表 [as 別名]
from 表名或者檢視名
[where 條件表示式]
[group by 列名]
[having 搜尋表示式]
[order by 列名 [asc | desc]]
1、簡單查詢SELECT
SELECT * FROM <table_name>;
-- SELECT語句也可單獨使用用來除錯
SELECT "print_text";
SELECT a*b;
2、重新命名列AS
SELECT <columu_a> AS <columu_b> FROM table_name;
3、限制行數LIMIT
-- LIMIT 子句寫在SQL語句的最後即可
-- LIMIT 行數的下標是從0開始
-- 如果只帶一個值,那麼將返回5行,從第一行開始
LIMIT 5;
-- 如果帶兩個值,那麼前一個個數代表起始行下標,後一個代表行數
LIMIT 0,5;
4、結果去重DISTINCT
DISTINCT直接寫在SELECT關鍵字後面
5、過濾 WHERE
SELECT field1, field2,...fieldN FROM table_name1, table_name2...
[WHERE condition1 [AND [OR]] condition2.....;
Select * from 表名 where 條件 = 某值 and/or 條件2 = 某值 ;
範圍條件
BETWEEN 0 AND 5;
NOT BETWEEN 0 AND 5;
匹配
IN
NOT IN
6、聚合函式和分組
深入理解GROUP BY和聚合函式
1.聚合函式的分類
- Count(列名或者*)
獲取結果集中的行數
- Count(*)
不會忽略null,而count(列)會忽略該列的null
- avg(列名)
獲取結果集中某列的平均值
- Max(列名)
:獲取結果集中某列的最大值
- Min(列名)
獲取結果集中某列的最小值
- Sum(列名)
獲取結果集中某列的總和
聚合函式的書寫位置:SELECT [DISTINCT] 之後
2、分組GROUP BY
SELECT <column_name>, [function(column_name)]
FROM <table_name>
GROUP BY <column_name>;
-- 多列分組
GROUP BY 列1,列2;
3、HAVING
過濾
a、對聚合函式的過濾
b、HAVING
與WHERE
的區別
1、
where
後不能跟聚合函式,因為where
執行順序大於聚合函式。
2、where
子句的作用是在對查詢結果進行分組前,將不符合where
條件的行去掉,即在分組之前過濾資料,條件中不能包含聚組函式,使用where條件顯示特定的行。
3、having
子句的作用是篩選滿足條件的組,即在分組之後過濾資料,條件中經常包含聚組函式,使用having
條件顯示特定的組,也可以使用多個分組標準進行分組。
轉自:https://blog.csdn.net/jdjh1024/article/details/76647866
4、HAVING
子句一般寫在GROUP BY
後面
7、模糊查詢
在
WHERE
後面跟LIKE
%:匹配多個字元,包含0個的字元
_:只能匹配一個字元,不包含0個的字元
8、連線查詢
內連線:inner join 表名 on 連線條件
外連線:
左外連線:左表 left outer join 右表 on 連線條件
右外連線:左表 right outer join 右表 on 連線條件
自連線:自己和自己表查詢
9、子查詢
select語句可以巢狀在其他語句中(crud),這些巢狀的select語句被稱為子查詢
in子查詢
exists子查詢:測試子查詢的結果是否為空,為空–>false
比較子查詢:> >= < <= <> != = (可以和any 和all 聯合使用) !> !<
any:表示滿足子查詢結果的任何一個。和<、<=搭配,表示小於等於列表中的最大值;而和>、>=配合時表示大於等於列表中的最小值。
all:表示滿足子查詢結果的所有結果。和<、<=搭配,表示小於等於列表中的最小值;而和>、>=配合時表示大於等於列表中的最大值。
10、聯合查詢
將多個查詢的結果合併到一個結果集中(union not union)
查詢1 union(查詢2 union 查詢3)
排序聯合查詢結果:order by 放在最後一個查詢語句的後面
11、檢視
檢視–>虛表 便於查詢(crud都可以)
它是基於一個表或多個表的邏輯表,檢視本身不包含任何資料。可以把檢視看成是虛擬的表,只是一個查詢語句的結果,它的資料最終是從表中獲取的,這些表通常稱為源表或基表。
特點
使資料簡化--->簡化在開發中使用複雜sql的冗餘
使資料更加獨立-->修改源表結構不會影響應用本身
增加安全性--->不直接操作源表
建立:
create view 檢視名 as 查詢語句
刪除:
drop view 檢視名