20章 更新和刪除資料
利用mysql中insert
語句插入資料
此前章節一直使用select
語句,但還有三個經常使用的sql語句需要掌握(insert
、update
和delete
)。
插入的幾種形式,
1. 插入完整行;
2. 插入行的部分資料;
3. 插入多行;
4.插入某些查詢的結果;
- 注意,由於mysql的安全機制,需要注意許可權。
需要指定插入的表名和行值。一般插入操作沒有返回值,舉例,
mysql> insert into customers values(null, 'pep e. lapew', '100 main street', 'los angeles', 'ca', '90046', 'usa', null, null);
query ok, 1 row affected (0.00 sec)
分析:第一列cust_id為null
。這是因為在customers
表中,該列由mysql自動增量,所以指定乙個null
值。
- 注意,雖然此語法簡單,但並非安全。上面語句高度依賴表中列的次序。即使可以得到這些資訊,但不能保證下次使用時,表的次序因為種種原因經過調整,引起輸入錯誤。更保險的輸入方式應該為,
mysql> insert into customers (cust_name, cust_address, cust_city, cust_state, cust_zip, cust_country,cust_contact, cust_email) values('pep e. lapew', '100 main street', 'los angeles', 'ca', '90046', 'usa', null, null);
query ok, 1 row affected (0.00 sec)
同時,此方式下,自動增量的cust_id
的null
非必須。所以,縱使與表中列的次序不同,也可以完成插入操作。因此當比給出列名的時候,必須正確的給出每列《所有列》的值。
如果表的定義允許,可以選擇在insert
操作時忽略某些列。忽略的列必須滿足如下條件,
1. 該列定義為允許null
;
2. 表中給出預設值;
插入多行,只需要在每組值用圓括號並且逗號隔開即可。
mysql> insert into customers (cust_name, cust_address, cust_city, cust_state, cust_zip, cust_country,cust_contact, cust_email) values('pep e. lapew', '100 main street', 'los angeles', 'ca', '90046', 'usa', null, null), ('pep e. lapew', '200 main street', 'los angeles', 'ca', '90046', 'usa', null, null);
query ok, 1 row affected (0.00 sec)
insert
一般用來插入單行,但是與select
結合後,可以使用所謂的insert select
,舉例說明
mysql> insert into customers(cust_id, cust_contact, cust_email, cust_name, cust_address, cust_city, cust_state, cust_zip, cust_country) select cust_id, cust_contact, cust_email, cust_name, cust_address, cust_city, cust_state, cust_zip, cust_country from custnew;
分析:使用insert select
從custnew中將所有資料匯入customers。select
語句將檢索資訊傳入insert
。
- 注意,此例子中,將cust_id一併匯入(cust_id被定義為非空、自增),因此必須確保匯入的cust_id不重複。否則,需要省略此列,有sql自增。同時檢索列與插入列的名字不需要相同,mysql只關心對應列順序。
update
和delete
使用
updare
語句由三部分組成,
例子,更新單列,
mysql> update customers set cust_email = '[email protected]'
where cust_id = 10005;
分析:updare
總是以要更新的表的名字開始,set
為賦值命令
例子,使用多列更新時,只需要一次set
命令即可
mysql> update customers set cust_name = 'the fudds', cust_email = '[email protected]'
where cust_id = 10005;
分析:
1. 如果多列更新,並且在一行或多行賦值時出現錯誤,則整個update
操作都會被取消(更新不會進行)。可以使用ignore
關鍵字。
2. 為了刪除每列的值,可以賦值為null
。
mysql> update customers set cust_email =
null
where cust_id =
10005;
使用delete
語句,進行刪除操作,形式如下
- 從表中刪除特定行;
- 從表中刪除所有的行。
- 注意,在使用delete
語句時,同樣必須嚴格小心,不要省略where
語句,否則會更新表中所有行。
-delete
不需要列名或萬用字元。delete
語句刪除整行而不是整列,若刪除整列需要使用update
操作(在不使用where
語句前提下,更新資料)。
- 若需要刪除所有資料,不需要使用delete
語句,使用速度更快的truncate table
。操作原理為,刪除原**,並建立新錶。
除非更新和刪除每一行,使用update
、delete
操作都需要使用where
;
保證每個表,都有主鍵,以便與使用where
語句進行唯一性檢索;
在使用update
、delete
前,需要進行select
測試,保證過濾條件的正確性;
使用強制實施引用完整的資料庫,保證不會刪除與其他表有關聯的資料的行。
MySQL(九)插入 更新和刪除
常用的sql語句,除了select用於查詢,還有insert update delete等。一 insert insert 用來插入 或新增 行到資料庫中,常見方式有以下幾種 插入完整的行 插入行的一部分 插入多行 插入某些查詢的結果 1 插入完整的行 例如 insert into usertabl...
MySQL基礎(6) 插入資料 更新和刪除資料
本篇主要整理除select之外的3個經常使用的sql語句。1 插入完整的行 例項1 insert語句需要指定表名和被插入到新行中的值 values insert語句一般不會產生輸出 第一列cust id也為null,是因為每次插入乙個新行時,該列由mysql自動增量。你不想給出乙個值 這是mysql...
MySQL更新和刪除
更新和刪除的操作sql語句比較簡單,不過要注意使用update的時候,要注意weher條件的限制,下面的語句是只更新id為10005的email位址,如果不加where語句限制,那麼將表中所有的email更新為 elmer fudd.com 刪除某個列的值,設定為null即可。刪除行的sql語句,使...