上篇我們提到SELECT查詢語句的使用,本次介紹DML(Data Manipulation Language)——數據操作語言,指對資料庫進行增刪改的操作指令,主要有INSERT、UPDATE、DELETE三種,代表插入、更新與刪除,這是學習MySQL必要掌握的基本知識。
方語法中 [] 中內容可以省略。
INSERT操作
逐行插入
語法格式如下:
1、欄位名稱和值需要保證數量一直,類型一直,位置一 一對應,否則可能導致異常。
2、not null的欄位需要保證有插入的值,否則會報非空的異常信息。允許null的欄位如果不想輸入數據,欄位和值都不出現,或者value用null代替。
3、數值類型,值不需要用單引號括起來,其他的如字符型或日期類型,值需要用單引號括起來;
4、如果表名後面的column_name 省略不寫,則代表覆蓋該表的所有欄位。值的順序和表中欄位順序須保持一致。
5、上述第二種語法的寫法更繁瑣,現在比較少使用。
測試一下:
1、上述第一個語法,values 後面的值個數需要同等配對 column的數量,可以設置多個,逗號隔開,提高數據插入效率。
2、第二個語法,select查詢的欄位和插入數據的欄位數量、順序、類型需要一致。 insert的欄位可以省略,代表插入t_name表所有欄位。條件可選。
測試一下:
1、alias 是別名的意思,別名越簡單識別性越強越好,容易辨認,方便操作,沒有別名情況下,表名就是別名
2、as alias 中as也是可選的,where 條件也是可選的,所以用戶可以選擇需要的,符合特定條件的部分數據進行更新。
測試一下:
還有一種方式是同時更新多個表,使用不同的別名以及一些條件去限制,不過不建議這麼做,操作易錯,並且不好維護。
DELETE操作
delete方式刪除
語法格式如下:
1、跟上面一樣,alias代表別名,沒有別名情況下,表名就是別名
2、如果表設置了別名,則delete後面必須跟上別名,否則資料庫會報異常。
測試一下:
3、如果刪除表中所有的數據,則後面不帶上where條件即可,不過要謹慎使用喲。
看起來跟delete很像,但是重新插入數據會發現,他的自增主鍵會重新從1開始,但是delete的是直接在原來的所以自增值之後往上加。看下面id欄位。
那 truncate 和 delete有什麼區別呢?我們來梳理下。
truncate和delete的比較
1、truncate 指的是清空表的數據、釋放表的空間,但不刪除表的架構定義(表結構)。因為不包含Where條件,所以不是刪除具體行,而是將整個表清空了。
2、而delete 語句是刪除表中的數據行,可以在後面帶上條件控制刪除的維度、範圍,它每次從表中刪除一行,會同時將該行的刪除操作作為事務保存在日誌中,用於進行可能的回滾操作。
3、truncate 和 delete 一樣的地方是:只是刪除數據,涉及到的表結構及其列、約束、索引等均不會變。
4、如果被外鍵 foreign key 約束,不能使用truncate ,只能使用不帶where子句的delete語句。
5、truncate 操作會記錄在日誌中,delete操作會放到 rollback segement 中,執行時要等事務被commit才會生效;所以delete 會觸發刪除觸發器(如果有的話),truncate 不會。
6、如果像上面我們測試的那樣,包含自增欄位,truncate方式清空之後,自增列的值會被初始化從1開始。
delete方式要分情況判斷(如果數據全部delete,資料庫未被重啟,則按照之前max+1;資料庫重啟了,則一樣會重新開始計算自增列的初始值)。
7、還有drop,drop語句會刪除表包括 結構、數據、依賴該表的約束(constrain),觸發器(trigger)索引(index)等。
宜久財務諮詢有限公司是專業的財務諮詢服務公司,主要服務領域為企業管理諮詢、投資諮詢、稅務諮詢、代理記帳、審計驗資、財務外包、企業登記。
公司自2002年成立以來,經過十幾年的奮鬥拼搏,擁有由註冊會計師、註冊稅務師、高級會計師、律師等「高、精、尖」人才組成的專業團隊,業務涉及美國、新加坡及國內主要城市,在美國、新加坡、香港、深圳、青島、南京、廈門、太原、濟南、蘇州、廣州等大中城市設有分支機構、成員所。
來源:宜久財務專家,如需轉載或引用需申請授權,版權歸宜久財務所有。