1. 程式人生 > >資料庫基礎04——(DML)增刪改

資料庫基礎04——(DML)增刪改

資料庫基礎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 支援這個特性,應該使用它