插入
單行插入
1.insert into 表名 values(col1_value,col2_value,...);
- 每個列必須提供一個值,如果沒有值,要提供NULL值
- 每個列必須與它在表中定義的次序相同
2.insert into 表名(col1,col2...) values(col1_value,col2_value...);
- values必須與指定的列名次序匹配,不一定按照列在表中的實際出現的次序,即使表結構改變也能正常的工作
注意
如果表的定義允許,在插入時可以省略某些列,表的定義應該如下
- 該列允許為NULL值
- 在表定義時給出默認值,如果插入時不給出值,則使用默認值
多行插入
insert into 表名(col1,col2...) values(col1_value1,col2_value1...),values(col1_value2,col2_value2...),values(col1_value3,col2_value3...);
插入檢索出的數據
insert into 表名1(col1,col2...) select col1,col2... from 表名2
- 這條語句插入多少行依賴於表名1中有多少行,如果表名1為空,則沒有數據插入,此操作為合法操作
- 它不關心select返回的列名,使用的是列的位置,select中的第一列用於填充表中的第一列等
- select可以使用where過濾數據
拓展
由於數據庫是被客戶訪問,對處理什么請求及什么次序處理是MySQL任務,insert很耗時並且可能降低select語句的性能
insert low_priority into 可以降低insert優先級也使用update和delete
更新
更新的是列,由三部分組成
- 要更新的表
- 列名和他們的值
- 確定要更新的過濾條件
update 表名 -> set 列名=要更新的值 -> where 過濾條件;
注意
- 一定要使用where!!!where!!!where!!!
- 可以在update中使用子查詢,能夠使select語句檢索出的數據更新列數據
- 如果使用update更新多行,在更新時出現一個或多個錯誤,則整個update操作被取消,恢復到被更新的原來的值,若使用update ignore 表,可以繼續更新
- 保證每個表都有主鍵,像where字句那樣使用它
- 使用where之前,先使用select進行測試,保證過濾出正確的記錄
刪除
刪除的是整行
delete from 表名 -> where 過濾條件;
要刪除全部的行用
truncate table 表名;
此操作是將原來的表刪除並創建一個新表,並不是逐行刪除數據
注意
- 一定要使用where!!!where!!!where!!!
- delete刪除的是表中的行或所有的行,不刪除表本身
- 保證每個表都有主鍵,像where字句那樣使用它
- 使用where之前,先使用select進行測試,保證過濾出正確的記錄
- 刪除列用update
- 強制實施引用完整性的數據庫,這樣mysql不允許刪除具有與其他表相關聯的數據的行
