SQL學習筆記11——SQL中操作數據之插改刪
回顧
前面我們學習了SQL中查詢數據的一些基礎,它們都屬于DQL語言,即數據查詢語言;接下來我們將學習DML語言,即數據操作語言,主要包含:
- 插入:insert
- 修改:update
- 刪除:delete
插入語句
語法:
# 方式一:經典的插入
insert into 表名(字段名,...) values(值,...);
# 插入多行
insert into 表名(字段名,...) values(值,...),(值,...),...;
# 方式二
insert into 表名 set 字段=值,字段=值,...;
特點
- 插入的值的類型要與列的類型一致或兼容
- 不可以為NULL的列必須插入值
- 可以為NULL的列有以下兩種方式插入值
- 插入NULL值
- 直接省略,默認以NULL填充
- 列的順序可以交換,只要值得順序與之對應即可,這當然就要求了列數和值的個數必須一致
- 可以省略列名,默認則是所有列,而且列的順序和表中列的順序一致
- 方式一做子查詢時必須省略value,方式如下
INSERT INTO customers ( cust_id, cust_name ) SELECT 1211111121,'1211111121';
兩種插入方式的對比
| 是否支持插入多行 | 是否支持子查詢 | |
|---|---|---|
| 方式一 | YES | YES |
| 方式二 | NO | NO |
修改數據
修改單表的記錄★
語法
update 表名 set 字段=值,字段=值 【where 篩選條件】;
修改多表的記錄
語法
# sql92語法
update 表1 別名,表2 別名
set 列=值,...
where 連接條件
and 篩選條件;
# sql99語法
update 表1 別名
left|right|inner join 表2 別名
on 連接條件
set 字段=值,字段=值,...
【where 篩選條件】;
案例
- 修改沒有男朋友的女神的男朋友編號都為2號
UPDATE boys bo
RIGHT JOIN beauty b
ON bo.id = b.boyfriend_id
SET b.boyfriend_id = 2
WHERE b.id IS NULL;
刪除數據
方式一:使用delete
刪除單表的記錄★
語法:
delete from 表名 【where 篩選條件】【limit 條目數】
案例:
- 刪除手機號以9結尾的女神信息
DELETE FROM beauty WHERE phone LIKE '%9';
刪除多表的記錄
語法:
#sql92
delete 表1的別名,表2的別名#總之,這里寫要刪數據的表的別名
from 表1 別名,表2 別名
where 連接條件
and 篩選條件;
#sql99
delete 表1的別名,表2的別名#總之,這里寫要刪數據的表的別名
from 表1 別名
inner|left|right join 表2 別名
on 連接條件
where 篩選條件;
案例:
- 刪除張無忌的女朋友的信息
DELETE b FROM beauty b INNER JOIN boys bo ON b.boyfriend_id = bo.id WHERE bo.boyName = '張無忌';
方式二:使用truncate
語法:
#整表刪除
truncate table 表名;
deleta vs truncate
| 可否加where | 效率 | 刪除后再插入數據自增長列的值起始值 | 是否有返回值 | 可否回滾 | |
|---|---|---|---|---|---|
| delete | YES | 低一點 | 從斷點開始 | 有 | 可以 |
| truncate | NO | 高一點 | 從1開始 | 無 | 不能 |
浙公網安備 33010602011771號