增(insert into)
插入所有列的數據
不寫具體列名要確保字段都對應正確
-- 假設你有一個名為 "employees" 的表,有多個列
INSERT INTO employees
VALUES (101, 'Alice', 'Manager', 50000);
插入指定列的數據
-- 假設你有一個名為 "students" 的表,有 id、name 和 age 列
INSERT INTO students (name, age)
VALUES ('John', 20);
一次插入多行數據
INSERT INTO students (name, age)
VALUES('John', 20),('Alice', 22),('Bob', 21),('Emma', 23);
查(select from)
全列查詢*
使用通配符*
語法
select * from 表名;
注意
- 一般情況下不建議使用全列查詢, 不然數據太多影響性能甚至出現問題
指定列查詢
語法
select 列名1,列名2,... from 表名;
注意
- 列名可以不按順序寫
查詢字段為表達式
舉例
select id,name,10 from user;
-- 打印id列,name列,還有"10"列這列每行數據都是10select id,name,english+10 from exam;
-- 打印id列,name列,(english+10)列這列每個數據都是原始的english數據+10select id,name,chinese+math+english from exam;
-- 同理
別名as
為查詢結果中的列指定別名,結果集中以別名作為該列的名稱
舉例
select id,name,chinese+math+english as '總分' from exam;
注意
- as不加不報錯, 建議加
去重distinct
對某列數據進行去重, 針對的是每行所有的列數據
示例
select id,math from exam;
-- 當math有重復的時候,都會打印select distinct id,math from exam;
-- 當id和math完全重復時只顯示一個
排序order by
舉例(ASC升序,DESC降序)
select name,math from exam order by math ASC;
-- 按math升序排序select name,chinese from exam order by chinese DESC;
-- 按chinese降序排序
對于null的排序
- null與正常數據比較, 都是最小的, 升序就在上面降序就在下面
- null與別的值比較都會返回false
- null和0是兩個東西
- null與任何值運算都是null
使用表達式及別名排序
select name,chinese+math+english as total from exam order by total DESC;
-- order by 后面也可以寫表達式
多字段排序
select name,chinese,math,english from exam order by chinese DESC,math ASC,english ASC;
-- 先按chinese降序排序,當分數相同時再按math升序排序,要是又一樣按english升序排序
條件查詢where
運算符說明
運算符 | 說明 |
---|---|
>, >= <,<= | 字面意思 |
= | 等于 |
null不安全, null=null結果是null | |
<=> | 等于 |
null安全, null=null結果是true | |
!=, <> | 不等于 |
between A and B | 如果x屬于[A,B], 返回true |
in (A,B,C,D,…) | 如果x屬于A,B,C,D,…其中一個就返回true |
is null | 字面意思 |
is not null | 字面意思 |
like | 模糊匹配 |
% 表示0~任意多個字符 | |
_表示任意一個字符 | |
and | 字面意思 |
or | 字面意思 |
not | 字面意思 |
注意
- where后面不可以用別名
- and的優先級高于or, 可以搭配括號
分頁查詢limit
舉例
-- 按id分頁, 每頁3個記錄, 分別顯示1,2,3頁-- 第1頁
select * from exam order by id limit 3 offset 0;
-- 第2頁
select * from exam order by id limit 3 offset 3;
-- 第3頁
select * from exam order by id limit 3 offset 6;-- limit限制每頁數量, offset表示從第幾行開始顯示-- 從0開始往后查3條
select * from exam order by id limit 0,3;
改(update tablename set)
說明
要配合where限定條件找到需要修改的數據
語法
update 表名 set 列名=數據 (限定條件);
舉例
update exam set math=99 where name='張三';update exam set math=99,chinese=88 where name='李四';-- 將總成績倒數前三的人數學成績加10分
update exam set math=math+10 order by(chinese+math+english) ASC limit 3;
刪(delete from tablename)
說明
要配合where限定條件找到需要修改的數據
語法
delete from 表名 (where) (order by) (limit)