這里寫目錄標題
- 一、DML
- 1、INSERT語句
- 1)、給指定列添加數據
- 2)、給全部列添加數據
- 3)、批量數據添加數據
- 4)、操作
- 2、UPDATE語句
- 3、DELETE語句
- 二、DQL
- 1、單表查詢
- 1)查詢語法
- 2)查詢全部
- 3)查詢部分
- 4)條件查詢
- 5)聚合函數
- 6)排序查詢
- 7)分組查詢
- 8)分頁查詢
一、DML
1、INSERT語句
1)、給指定列添加數據
-- 標準語法
INSERT INTO 表名(列名1,列名2,...) VALUES (值1,值2,...);
2)、給全部列添加數據
-- 標準語法
INSERT INTO 表名 VALUES (值1,值2,值3,...);
3)、批量數據添加數據
-- 默認添加所有列數據 標準語法
INSERT INTO 表名 VALUES (值1,值2,值3,...),(值1,值2,值3,...),(值1,值2,值3,...);
4)、操作
#給指定列添加數據
insert into product(ID,NAME,PRICE,BRAND,STOCK) values(1,'YU7','32.99','小米','2');#默認全部列添加數據,注意插入數據要匹配表的字段數
insert into product VALUES(1,'SU7','30.99','小米','10','2025-07-10');#批量添加數據
insert into product(ID,NAME,PRICE,BRAND,STOCK) values
(1,'X1','22.99','寶馬','4'),
(1,'X3','32.99','寶馬','5'),
(1,'X5','42.99','寶馬','6');insert into product values
(1,'GLA','25.99','奔馳','10','2025-07-10'),
(1,'GLB','28.99','奔馳','10','2025-07-10'),
(1,'GLC','33.99','奔馳','10','2025-07-10'),
(1,'GLE','63.99','奔馳','10','2025-07-10');
注意:
- 列名和值的數量以及數據類型要對應
- 除了數字類型,其他數據類型的數據都需要加引號(單雙引號都可以,推薦單引號)
2、UPDATE語句
-- 標準語法
UPDATE 表名 SET 列名1 = 值1,列名2 = 值2,... [where 條件];
-- 標準語法
update product set CREATETIME = '2025-07-11' where BRAND = '寶馬';
注意:
- 修改語句中必須加條件
- 如果不加條件,則將所有數據都修改(慎重)
3、DELETE語句
-- 標準語法
DELETE FROM 表名 [WHERE 條件];
注意:
- 修改語句中必須加條件
- 如果不加條件,則將所有數據都修改
- 如果在生產環境使用update和delete命令一定要慎重
二、DQL
1、單表查詢
1)查詢語法
select字段列表
from表名列表
where條件列表
group by分組字段
having分組之后的條件
order by排序
limit分頁限定
2)查詢全部
-- 標準語法
SELECT * FROM 表名;--查詢product表中所有數據
select * from product
注意:
- 在代碼開發中不要用select * ,因為對性能,查詢速度都有影響。
3)查詢部分
- 多個字段查詢
-- 標準語法
SELECT 列名1,列名2,... FROM 表名;-- 查詢名稱、價格、品牌
select name,price,brand from product
- 去重查詢
去重查詢關鍵字:distinct,這是sql中常用的關鍵字。
-- 標準語法
SELECT DISTINCT 列名1,列名2,... FROM 表名;
--查詢品牌
select distinct brand from product
--查詢名稱以及品牌
select distinct name,brand from product
從上面兩個結果可以看出:
- 對單列使用distinct去除重復值時,會過濾掉多余重復相同的值,只返回唯一的值。
- 對多列數據進行去重處理,只需在DISTINCT關鍵字后依次列出需要去重的字段名,并用英文逗號隔開即可。
- 計算列的值(四則運算)
-- 標準語法
SELECT 列名1 運算符(+ - * /) 列名2 FROM 表名;
計算列的值
標準語法:
SELECT 列名1 運算符(+ - * /) 列名2 FROM 表名;
如果某一列為null,可以進行替換
ifnull(表達式1,表達式2)
表達式1:想替換的列
表達式2:想替換的值
- 起別名
-- 標準語法
SELECT 列名1,列名2,... AS 別名 FROM 表名;
-- 查詢商品名稱和庫存,庫存數量在原有基礎上加10。進行null值判斷。起別名為getSum
SELECT NAME,IFNULL(stock,0)+10 AS getsum FROM product;
4)條件查詢
- 條件分類
項目 | Value |
---|---|
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
= | 等于 |
<> 或 != | 不等于 |
BETWEEN … AND … | 在某個范圍之內(都包含) |
IN(…) | 多選一 |
LIKE 占位符 | 模糊查詢 _單個任意字符 %多個任意字符 |
IS NULL | 是NULL |
IS NOT NULL | 不是NULL |
AND 或 && | 并且 |
OR 或 || | 或者 |
NOT 或 ! | 非,不是 |
- 條件查詢優先級
- 括號:括號的條件會被優先處理。
- 邏輯運算符:and 、or
- 比較運算符:=,<>,!=,>,<>=,<=
- between和in
- like
- is null
- exists
- order by
- limit
- 條件查詢語法
-- 標準語法
SELECT 列名 FROM 表名 WHERE 條件;
-- 查詢庫存大于20的商品信息
select * from product where STOCK >20-- 查詢品牌為寶馬的商品信息
select * from product where BRAND ='寶馬'-- 查詢金額在30~ 50之間的商品信息
select * from product where PRICE between 30 and 50;
select * from product where PRICE >30 and PRICE <50;-- 查查詢庫存為14,15,16的商品信息
select * from product where stock in (14,15,16);-- 查詢庫存為null的商品信息
select * FROM product where stock is null; -- 查詢庫存不為null的商品信息
select * FROM product where stock is not null; -- 查詢名稱以小米為開頭的商品信息
SELECT * FROM product WHERE NAME LIKE '小米%';-- 查詢名稱第二個字是馬的商品信息
select * from product where brand like '_馬%'-- 查詢名稱為四個字符的商品信息
select * from product where brand like '____'
5)聚合函數
將一列數據作為一個整體,進行縱向的計算
項目 | Value |
---|---|
count(列名) | 統計數量(一般選用不為null的列) |
max(列名) | 最大值 |
min(列名) | 最小值 |
sum(列名) | 求和 |
avg(列名) | 平均值 |
- 聚合函數語法
-- 標準語法
SELECT 函數名(列名) FROM 表名 [WHERE 條件];-- 計算product表中總記錄條數
SELECT COUNT(*) FROM product;-- 獲取最高價格
SELECT MAX(price) FROM product;
-- 獲取最高價格的商品名稱
SELECT NAME,price FROM product WHERE price = (SELECT MAX(price) FROM product);-- 獲取最低庫存
SELECT MIN(stock) FROM product;
-- 獲取最低庫存的商品名稱
SELECT NAME,stock FROM product WHERE stock = (SELECT MIN(stock) FROM product);-- 獲取總庫存數量
SELECT SUM(stock) FROM product;
-- 獲取品牌為蘋果的總庫存數量
SELECT SUM(stock) FROM product WHERE brand='蘋果';-- 獲取品牌為小米的平均商品價格
SELECT AVG(price) FROM product WHERE brand='小米';
6)排序查詢
- 排序分類
- 多個排序條件,當前邊的條件值一樣時,才會判斷第二條件
- 對指定列排序,ASC升序(默認的) DESC降序
- 排序語法
-- 標準語法
SELECT 列名 FROM 表名 [WHERE 條件] ORDER BY 列名1 排序方式1,列名2 排序方式2;-- 按照庫存升序排序asc可省略
select * from product order by stock;-- 查詢名稱中包含小米的商品信息。按照金額降序排序
select * from product where brand like '%小米%' order by price des
-- 按照金額升序排序,如果金額相同,按照庫存降序排列
select * from product order by price,stock desc;
7)分組查詢
-- 標準語法
SELECT 列名 FROM 表名 [WHERE 條件] GROUP BY 分組列名 [HAVING 分組后條件過濾] [ORDER BY 排序列名 排序方式];-- 按照品牌分組,獲取每組商品的總金額
SELECT brand,SUM(price) FROM product GROUP BY brand;-- 對金額大于30元的商品,按照品牌分組,獲取每組商品的總金額
SELECT brand,SUM(price) FROM product WHERE price > 4000 GROUP BY brand;-- 對金額大于30元的商品,按照品牌分組,獲取每組商品的總金額,只顯示總金額大于70的
select brand ,SUM(price) AS getSum from product where PRICE >30 group by brand having getSum >70;-- 對金額大于40元的商品,按照品牌分組,獲取每組商品的總金額,只顯示總金額大于70元的、并按照總金額的降序排列
select brand ,SUM(price) AS getSum from product where PRICE >30 group by brand having getSum >70 order by getSum Desc;
8)分頁查詢
-- 標準語法
SELECT * FROM 表名 LIMIT (頁碼-1)*每頁數量, 每頁數量;
-- 公式:開始索引 = (當前頁碼-1) * 每頁顯示的條數-- 每頁顯示2條數據
SELECT * FROM product LIMIT 0,2; -- 第一頁 開始索引=(1-1) * 2
SELECT * FROM product LIMIT 2,2; -- 第二頁 開始索引=(2-1) * 2
SELECT * FROM product LIMIT 4,2; -- 第三頁 開始索引=(3-1) * 2
SELECT * FROM product LIMIT 6,2; -- 第四頁 開始索引=(4-1) * 2