1. 程式人生 > >DML(資料操縱語言)、DQL(查詢)

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、HAVINGWHERE的區別

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 檢視名