標籤:結構 update ... date 基礎上 info 基礎 記錄 table
十一.增加資料
現有一張student表,表設計如下:
sno為主鍵並自增,saddress 表示地址,設定了預設值:‘廣東省廣州市‘
1.完整的增加一條 insert into tables values(val1,val2,...,valn)
insert into student values(NULL,‘李冰‘,‘男‘,‘[email protected]‘)
注意:
a.必需要保證values() 中的值 與 表中列的按順序順序一一對應 ,個數一致
b.sno主鍵設定自增後,可以交由mysql 自動處理, 可以傳入NULL值,此時該記錄的 sno 會由自動產生
缺點:當表結構發生變化時,此時insert 會報錯
2.按照指定列增加 insert into table_name(column1,column2,...,columnn) values(val1,val2,...,valn)
insert into student(sname,ssex) values(‘王明‘,‘男‘)
注意:
a.同樣需要保證values中的值的個數 與前面指定的 列的個數順序 對應
優點:
a.列的順序可以自己指定, 同樣value值也要與列名對應 ,以後表中新增列時,insert 語句 不會受影響
b.相比插入完整的一行 , 插入指定列,一些不必要的值,可以不用傳, 只需要傳一些必傳的值,sql語句變的更簡潔了
3.增加多行記錄 Insert into table_name valuesvalues(val1,val2,...,valn),values(val1,val2,...,valn),values(val1,val2,...,valn)
insert into student values(NULL,‘李玲‘,‘女‘,‘liling163.com‘),(NULL,‘大才‘,‘男‘,NULL),(NULL,‘逍遙‘,‘男‘,‘[email protected]‘)
在 1 ,2 的基礎上 只需要在values 後 跟上多組資料即可,插入多行
優點: 插入多行有兩種形式, 單行插入執行多次 , 多行插入執行1次 , 相比前者而言 ,多行插入執行1次, 效能耗時會大大減少
4.插入 select語句查詢出的資料
insert into student(sname,ssex,semail,saddress)
select sname,ssex,semail,saddress from student
這種方式 不會要求select查出的列名與 需要插入資料的表的列名 一致, 只需保證順序一致, 資料相容即可
insert 提高資料庫效能:
1.生產中, 可能會出現並發訪問資料庫,進行增刪改查的情況, 一般情況查的優先順序更高一些. 同時insert 時,需要建立索引 耗時較久,同時還可能造成後續select語句效能的降低
此時可以通過降低 insert 語句的優先順序, 來提高效能 ;文法格式: insert low_priority into ... . 同樣也適用於delete update語句
2.多行插入執行1次 效能要高於 一行插入執行多次
安全: 可以禁用使用者的insert許可權,限制部分使用者的不可以進行insert 保證資料的安全
十二.更新,刪除 資料
update 語句一定要搭配where子句使用,否則更新就是更新整張表中的所有資料,這種誤操作,會造成難以想象的結果....
更新單列 update tablename set column = newValue where condition
update student set semail = ‘[email protected]‘ where sname = ‘王明‘
更新多列update tablename set column1 = newValue1 ,column2 = newValue2,...column_n = newValuen where condition
update student set semail = ‘[email protected]‘,saddress = ‘廣東省東莞市‘ where sname = ‘王明‘
30分鐘回顧MySQL文法(下)