Mysql基礎:03.DML 資料操作語言
阿新 • • 發佈:2021-11-08
DML語言
資料操作語言
- 插入:insert
- 修改:update
- 刪除:delete
一、插入語句
1. 方式一 (常用)
語法:insert into 表名 (欄位1,…) values(值1,…);
特點:
- 插入的值的型別要與列的型別一致或相容
- 列的順序可以調換
- 列數和值的個數必須一致
- 列名可以省略,預設所有列
- 不可以為null的列必須插入值。可以為null的列有兩種方式插入null
- 寫列名,賦值寫null
- 不寫列名,不賦值
#1.插入的值的型別要與列的型別一致或相容 INSERT INTO jobs(`job_id`,`job_title`,`min_salary`,`max_salary`) VALUES('ABC','anything',1000,2000); #2.列的順序可以調換 INSERT INTO jobs(`job_id`,`min_salary`,`max_salary`,`job_title`) VALUES('DEF',1000,2000,'anything'); #3.列數和值的個數必須一致 INSERT INTO jobs(`job_id`,`min_salary`,`max_salary`,`job_title`) VALUES('DEF',2000,'anything'); # 報錯 #4.可以省略列名,預設所有列,而且列的順序和表中列的順序一致 INSERT INTO jobs VALUES('GHI','anything',1000,2000); #5.不可以為null的列必須插入值。可以為null的列有兩種方式插入null #方式一:寫列名,賦值寫null INSERT INTO jobs(`job_id`,`job_title`,`min_salary`,`max_salary`) VALUES('jkl',NULL,NULL,NULL); #方式二:不寫列名,不賦值 INSERT INTO jobs(`job_id`) VALUES('mno');
2. 方式二
語法:insert into 表名 set 列名=值,列名=值……
INSERT INTO `jobs`
SET `job_id`= 'OPQ',`min_salary` = 1000;
3. 兩種方式對比
- 方式一支援插入多行,方式二不支援
INSERT INTO `jobs`
VALUES('ABC','anything',1000,2000)
,('DEF',1000,2000,'anything')
,('jkl',NULL,NULL,NULL);
- 方式一支援子查詢,方式二不支援
INSERT INTO `jobs`(`job_id`,`min_salary`,`max_salary`,`job_title`) SELECT 'ABC','anything',1000,2000; # 用select的結果替代values
二、修改語句
修改表的記錄
1. 修改單表記錄
- 語法:update 表名 set 列=新值,列=新值,… where 篩選條件;
UPDATE `jobs` SET `min_salary` = 1500
WHERE `job_id`='ABC';
2. 修改多表記錄
有時想根據當前的表內容去修改另一個表中的內容,需要用到連線表
-
sql92語法:update 表1 別名, 表2 別名 set 列=值,… where 連線條件 and 篩選條件;
-
sql99語法:update 表1 別名 inner|left|right join 表2 別名 on 連線條件 set 列=值,… where 篩選條件;
# 修改job_title為Accounting Manager的職工的salary為20000,原本為12000
# employees表中沒有job_title這一屬性,jobs表才有
UPDATE `employees` e LEFT JOIN `jobs` j ON e.`job_id`=j.`job_id`
SET e.salary = 20000
WHERE j.job_title = 'Accounting Manager';
三、刪除語句
1. 方式一:delete
單表刪除
-
語法:delete from 表名 where 篩選條件
DELETE FROM jobs WHERE `job_id`='OPQ' OR `job_id`='mno';
多表刪除
-
sql99語法:
delete 表1的別名,表2的別名 from 表1 別名 inner|left|right join 表2 別名 on 連線條件 where 篩選條件;
2. 方式二:truncate
-
語法:truncate table 表名
truncate table jobs
truncate只能刪除整個表,不能新增where條件
3. 兩種方式的對比
- delete 可以加where 條件,truncate不能加
- delete刪除效率低,truncate刪除效率高,因為truncate沒有where條件
- 假如要刪除的表中有自增長列,如果用delete刪除後,再插入資料,自增長列的值從斷點開始,而truncate刪除後,再插入資料,自增長列的值從1開始。
- delete刪除有返回值,會告知有幾行受到影響,truncate刪除沒有返回值,雖然是全部刪除但並不告知有幾行受影響
- delete刪除可以回滾,truncate刪除不能回滾