MySQL數(shù)據(jù)庫(kù)操作DML?插入數(shù)據(jù),刪除數(shù)據(jù),更新數(shù)據(jù)
DML介紹
DML是指數(shù)據(jù)操作語(yǔ)言,英文全稱是Data Manipulation Language,用來(lái)對(duì)數(shù)據(jù)庫(kù)中表的數(shù)據(jù)記錄進(jìn)行更新。
關(guān)鍵字:
- 插入insert
- 刪除delete
- 更新update
數(shù)據(jù)插入
insert into 表 (列名1,列名2,列名3...) values (值1,值2,值3...); //向表中插入某些 insert into 表 values (值1,值2,值3...); //向表中插入所有列
這里的兩種方式,第一種需要指定插入的列,有時(shí)候,我們需要把某些值賦值為NULL,不需要插入這些為空的數(shù)據(jù),那么此時(shí)第一個(gè)方式就比較好。
insert into student(sid,name,gender,age,birth,address,score) values(1001,'王小王-123','男',18,'1996-12-23','北京',83.5);
如果要使用第二種方式就需要,將所有的數(shù)據(jù)全部填充,少一個(gè)也不可以的
數(shù)據(jù)修改
首先我們準(zhǔn)備數(shù)據(jù):
update 表名 set 字段名=值,字段名=值...; update 表名 set 字段名=值,字段名=值... where 條件;
第一種方法會(huì)將所有的列進(jìn)行修改,而第二種只會(huì)通過(guò)where條件進(jìn)行匹配到對(duì)應(yīng)的數(shù)據(jù)進(jìn)行修改
-- 將所有學(xué)生的地址修改為重慶 update student set address = '重慶'; -- 講id為1004的學(xué)生的地址修改為北京 update student set address = '北京' where id = 1004 -- 講id為1005的學(xué)生的地址修改為北京,成績(jī)修成績(jī)修改為100 update student set address = '廣州',score=100 where id = 1005
數(shù)據(jù)刪除
delete from 表名 [where 條件]; truncate table 表名 或者 truncate 表名
注意這里的兩種語(yǔ)法雖然都是對(duì)數(shù)據(jù)進(jìn)行刪除,但是二者的內(nèi)部方法卻是不一樣的;
truncate和delete只刪除數(shù)據(jù)不刪除表的結(jié)構(gòu);drop刪除表的結(jié)構(gòu)被依賴的約束(constrain),觸發(fā)器(trigger),索引(index),依賴于該表的存儲(chǔ)過(guò)程/函數(shù)將保留,但是變?yōu)閕nvalid(無(wú)效的)狀態(tài)
- 1、delete一般用來(lái)刪除表中的某一條或者一行數(shù)據(jù),在不設(shè)置WHERE條件下可以刪除表中的所有信息,將該操作保存在事務(wù)日志中在以后需要的時(shí)候還可以進(jìn)行回滾操作。對(duì)表執(zhí)行delete之后,該表不會(huì)減少表或者索引所占用的空間。也就是說(shuō)還可以恢復(fù)
- 2、truncate是清空的意思,從字面就可以理解為一次刪除就可以將表里的數(shù)據(jù)全部清除,沒有回滾操作。對(duì)表執(zhí)行truncate之后,表和索引就會(huì)恢復(fù)到初始的大小,但是對(duì)于delete刪除之后,索引會(huì)接著上面的繼續(xù)創(chuàng)建,這就是二者的本質(zhì)區(qū)別
- 3、drop可以將表的結(jié)構(gòu)和數(shù)據(jù)內(nèi)容都刪除。對(duì)表執(zhí)行drop之后,該表所占用的空間全部釋放。
- 4、delete和truncate都是對(duì)數(shù)據(jù)進(jìn)行操作,區(qū)別是范圍不同。delete可以針對(duì)數(shù)據(jù)中的table、view兩種類型。而truncate只能針對(duì)table類型。
- 5、速度上:drop>truncate>delete;
- 6、在沒有備份的時(shí)候,尤其小心使用drop和truncate,刪除部分?jǐn)?shù)據(jù)行用delete帶上where子句,回滾段要足夠大。刪除表用drop。想要保留表而將所有數(shù)據(jù)刪除,如果和事務(wù)無(wú)關(guān),用truncate即可,如果和事務(wù)有關(guān),或者想觸發(fā)trigger,還是用delete。如果是整理表內(nèi)部的碎片,可以用truncate跟上reuse stroage,再重新導(dǎo)入/插入數(shù)據(jù)
- 7、delete是DML(數(shù)據(jù)操作語(yǔ)言)語(yǔ)句,執(zhí)行后不會(huì)自動(dòng)提交;drop、truncate都是DDL(數(shù)據(jù)定義語(yǔ)言)語(yǔ)句,執(zhí)行后會(huì)自動(dòng)提交。
-- 1.刪除sid為1004的學(xué)生數(shù)據(jù) delete from student where sid = 1004; -- 2.刪除表所有數(shù)據(jù) delete from student; -- 3.清空表數(shù)據(jù) truncate table student; truncate student;
到此這篇關(guān)于MySQL數(shù)據(jù)庫(kù)操作DML 插入數(shù)據(jù),刪除數(shù)據(jù),更新數(shù)據(jù)的文章就介紹到這了,更多相關(guān)MySQL數(shù)據(jù)庫(kù)操作DML 內(nèi)容請(qǐng)搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。