程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MYSQL基礎01(新增,修改,刪除)

MYSQL基礎01(新增,修改,刪除)

編輯:MySQL綜合教程

MYSQL基礎01(新增,修改,刪除)


INSERT   1.插入一條記錄 ,很簡單的標准sql   insert into mytable(col1,col2,col3) values('val1','val2',4); 說明:請留意最後的分號; 用慣了mssql ,最不適應的地方就是,mysql中每條sql語句必須用分號間開,否則如果想一次執行多條語句,就會報錯.   另外,如果使用自增ID,插入時也可以設置自增ID的值,而不報錯; 這對於數據遷移是一大方便.   2.復制表的數據,這跟mssql是一樣的   insert into mytable(col1,col2,col3) select col1,col2,col3 from copytable; 3.新增表並同時復制數據,這個跟mssql不同 (ms:select * into newtable from copytable)   CREATE TABLE newtable SELECT * FROM copytable WHERE 1=2; 說明:跟mssql一樣,只是單純復制表結構,索引什麼的並不會復制過來; 去掉where 條件將會復制所有數據   4.批量插入,mysql的特點,有點似鏈式寫法 (相當好用!)   insert into mytable (col1,col2,col3) values ('A','VAL1',1),('B','VAL2',2),('C','VAL3',3); 說明:執行效率相當高,同時插入數萬記錄也只是10秒以內;而且對於項目中的處理字符,實現批量插入相當輕松,我特別喜歡這個語句.   UPDATE   1.標准sql   UPDATE mytable SET col1='A',col2='val1',col3=1 where id='0001'; 2.表連接更新,同時更新多列,部分跟mssql一致   UPDATE newtable a,oldtable b set a.col1=b.col1,a.col2=b.col2 where a.id=b.id; 說明:mssql的寫法更加靈活,支持該寫法: update newtable set col1=oldtabel.col1,col2=oldtabel.col2 from oldtabel where newtable.id=oldtabel.id   3.批量更新   REPLACE INTO mytable (id,name)VALUES ('01','hello'),('02','haha'); 說明:跟批量插入的格式是一樣的, 當values後面的數據插入到mytable中不會引起主鍵沖突或唯一索引沖突時,那麼就會直接新增數據, 否則就會修改數據.簡單點說就是,如果記錄存在則更新,如果記錄不存在則插入; 上例中,如果執行插入操作,受影響行數為2, 如果執行修改操作,受影響行數為4; 所以執行修改操作的本質是先delete,然後再插入.所以如果更新的字段不齊,其它字段將變為默認值  下面是該功能的增強版   INSERT INTO mytable(id,name,col)VALUES (78,'456','55'),(88,'456','d') ON DUPLICATE KEY UPDATE name=VALUES(name),col=VALUES(col); INSERT INTO mytable(id,name,col)VALUES (78,'456','55'),(88,'456','d') ON DUPLICATE KEY UPDATE name=VALUES(name); --只更新name   說明:跟replace 是一樣的,唯一不同的是可以選擇更新的列, 其它的列的值並不會受影響.   DELETE   1.標准sql   delete from mytable where id='001'; 2.清空表, 跟mssql是一樣的   truncate table mytable; 說明:執行後,自增ID也會從1開始編號.   處理數據時注意事項   1.對日期類型的列插入數據時,如果插入的值不符合日期格式,mysql 並不會報錯,但是會保存為'0000-00-00 00:00:00'的格式, 一般的程序並不會承認,所以你會發現後台讀取數據沒有問題,而應用程序讀取數據時會報錯. 這個我被坑慘了.   下面是網上找到的解決辦法,並沒有實際測試   給jdbc   url加上   zeroDateTimeBehavior參數:   datasource.url=jdbc:mysql://localhost:3306/testdbuseUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true   zeroDateTimeBehavior=round是為了指定MySql中的DateTime字段默認值查詢時的處理方式;默認是拋出異常,   對於值為0000-00-00   00:00:00(默認值)的紀錄,如下兩種配置,會返回不同的結果:   zeroDateTimeBehavior=round   //結果: 0001-01-01   00:00:00.0   zeroDateTimeBehavior=convertToNull   //結果 null   目前關於mysql的新增更新刪除就是以上內容,遇到新情況再補充吧

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved