資料庫基礎04——(DML)增刪改
阿新 • • 發佈:2018-12-12
資料庫基礎04——(DML)增刪改
1、INSERT
語法:
insert into 表名(列名1,列名2,列名3..) values(值1,值2,值3..);--向表中插入某些列
insert into 表名 values(值1,值2,值3..); /*向表中插入所有列,一般少用,儘量用上一種,因為即使表結構改了上一種也能用*/
如果要省略部分列就要保證,這些列可以為null或者建表的時候設定了預設值。
注意:
- 列名數於values後面的值得個數相等
- 列的順序與插入的值的順序一致
- 列名的型別與插入的值要一致
- 插入值的時候不能超過最大長度
- 值如果是字串或者日期需要加單引號
2、INSERT SELECT(插入檢索出的結果)
注意:INSERT SELECT,它可以用一條INSERT插入多行,不管SELECT語句返回多少行,都將被 INSERT 插入。
insert into 表名1[(列名1,列名2...)]-- 可選插入部分列 或者所有列
select [*|(列名1,列名2...)]--這裡查詢的列名要和插入的一一對應
from 表名2
[where 條件]
例如:
INSERT INTO Customers(cust_id,
cust_contact,
cust_email,
cust_name,
cust_address)
SELECT cust_id,
cust_contact,
cust_email,
cust_name,
cust_address
FROM CustNew;
3、UPDATE
update 表名 set 欄位名=值,欄位名=值...; --更新所有行
update 表名 set 欄位名=值,欄位名=值... where 條件;--更新特定行
注意:
使用Update 時一定要加 where 條件,如果不加條件就會將整個表的欄位更新。所以一定一定一定加條件
- 列名的型別與修改的值一致
- 修改值的時候不能超過最大長度
- 值如果是字串或者日期要加引號
4、DELETE
delete from 表名 [where 條件]
/*如果不帶where 條件就是刪除所有行,如果帶where 就是刪除特定行*/
刪除表中所有記錄用delete from 表名;還是用 truncate table 表名?
注意:delete 是一條一條的刪除,不親空 auto_increment記錄數。
truncate是直接將整張表刪除,重新建表,auto_increment 將重置為0。 所以刪除效率更高。
事務方面:delete 刪除的資料,如果在一個事務內是可以找回,但是truncate 刪除的資料是不可以找回的。
**UPDATE 或 DELETE 時所遵循的重要原則: **
- 除非確實打算更新和刪除每一行,否則絕對不要使用不帶 WHERE 子句的 UPDATE 或 DELETE 語句。
- 保證每個表都有主鍵,儘可能像 WHERE 子句那樣使用它(可以指定各主鍵、多個值或值的範圍)。
- 在 UPDATE 或 DELETE 語句使用 WHERE 子句前,應該先用 SELECT 進行測試,保證它過濾的是正確的記錄,以防編寫的 WHERE 子句不正確。
- 使用強制實施引用完整性的資料庫(關聯的),這樣 DBMS 將不允許刪除其資料與其他表相關聯的行。
- 有的 DBMS 允許資料庫管理員施加約束,防止執行不帶 WHERE 子句的 UPDATE 或 DELETE 語句。如果所採用的 DBMS 支援這個特性,應該使用它