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ù)全部清除,沒(méi)有回滾操作。對(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、在沒(méi)有備份的時(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)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql 報(bào)錯(cuò) incompatible with sql_mode=only
這篇文章主要為大家介紹了mysql 報(bào)錯(cuò) incompatible with sql_mode=only_full_group_by解決方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10MySQL索引詳解及演進(jìn)過(guò)程及面試題延伸
這篇文章主要介紹了MySQL索引詳解及演進(jìn)過(guò)程以及延申出面試題,索引在關(guān)系型數(shù)據(jù)庫(kù)中,是一種單獨(dú)的、物理的對(duì)數(shù)據(jù)庫(kù)表中的一列或者多列值進(jìn)行排序的一種存儲(chǔ)結(jié)構(gòu)2022-07-07mysql服務(wù)無(wú)法啟動(dòng)報(bào)錯(cuò)誤1067解決方法(mysql啟動(dòng)錯(cuò)誤1067 )
mysql服務(wù)無(wú)法啟動(dòng)報(bào)錯(cuò)誤1067解決方法,大家參考使用吧2013-12-12count(1)、count(*)與count(列名)的執(zhí)行區(qū)別詳解
這篇文章主要介紹了count(1)、count(*)與count(列名)的執(zhí)行區(qū)別詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11navicat連接mysql出現(xiàn)2059錯(cuò)誤的解決方法
這篇文章主要為大家詳細(xì)介紹了navicat連接mysql出現(xiàn)2059錯(cuò)誤的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-11-11Mysql遷移Postgresql的實(shí)現(xiàn)示例
本文主要介紹了Mysql遷移Postgresql的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03