SQL的刪除語(yǔ)句
大家好,我是IT修真院鄭州分院第七期的學(xué)員馮亞超蜂莉,一枚正直純潔善良的JAVA程序員 今天給大家分享一下,SQL的刪除語(yǔ)句.
1.背景介紹
“數(shù)據(jù)庫(kù)” ---起源于 20 世經(jīng) 90 年代,當(dāng)時(shí)美國(guó)為了戰(zhàn)爭(zhēng)的需要错洁,把各種情報(bào)收集在一起,存儲(chǔ)隱藏在計(jì)算機(jī)內(nèi)戒突,叫做 Data Base(DB)現(xiàn)在屯碴,一切活動(dòng)都離不開數(shù)據(jù)。
MySQL是一種開放源代碼的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS)膊存,使用最常用的數(shù)據(jù)庫(kù)管理語(yǔ)言--結(jié)構(gòu)化查詢語(yǔ)言(SQL)進(jìn)行數(shù)據(jù)庫(kù)管理导而。
“SQL” ----是用于訪問(wèn)和處理數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)的計(jì)算機(jī)語(yǔ)言,簡(jiǎn)稱結(jié)構(gòu)化查詢語(yǔ)言
SQL中的刪除語(yǔ)句一共有四種,分別對(duì)應(yīng)不同的功能
2.知識(shí)剖析
四種刪除語(yǔ)句
delete:
delete from table_name where some_column=some_value
用于刪除表中的行
delete from table_name/delete * from table_name;
用于刪除表中所有的行,也就是刪除表中所有的數(shù)據(jù)
drop:
drop table table_name;
用于刪除整個(gè)表,包括表結(jié)構(gòu)
drop database database_name;
用于刪除數(shù)據(jù)庫(kù)
alter:
alter table table_name drop column column_name;
用于刪除表中的列
alter table table_name drop index index_name;
用于刪除表中的索引
truncate:
truncate table table_name;
用于刪除表內(nèi)的數(shù)據(jù)
3.常見問(wèn)題
四種刪除語(yǔ)句中哪些功能是相同的?
哪些功能是不同的?
這幾種刪除語(yǔ)句的區(qū)別?
刪除后可以恢復(fù)嗎?哪些刪除是可以恢復(fù)的?
4.解決方案
哪些功能是不同的?
1.truncate table table_name 刪除表內(nèi)容釋放表空間保留表結(jié)構(gòu)(即:只刪除表內(nèi)的數(shù)據(jù)隔崎,不刪除表本身今艺。相當(dāng)于Delete語(yǔ)句不寫where子句一樣),不使用事務(wù)處理即和事務(wù)無(wú)關(guān)
2.delete table table_name [where子句] delete屬于數(shù)據(jù)操作語(yǔ)言(DML,data maintain Language)爵卒,不能自動(dòng)提交事務(wù)虚缎,需commit提交 這個(gè)操作會(huì)放到 rollback segement 中,事務(wù)提交之后才生效钓株; 如果有相應(yīng)的 trigger实牡,執(zhí)行的時(shí)候?qū)⒈挥|發(fā)。 delete 語(yǔ)句不影響表所占用的 extent轴合,高水線(high watermark)保持原位置不動(dòng)
3. drop table table_name drop屬于數(shù)據(jù)定義語(yǔ)言(DDL,data define language)可以自動(dòng)提交事務(wù)创坞; drop 語(yǔ)句將刪除表的結(jié)構(gòu)被依賴的約束(constrain)、觸發(fā)器(trigger)受葛、索引(index)【刪除表數(shù)據(jù)同時(shí)刪除表結(jié)構(gòu)】题涨; 依賴于該表的存儲(chǔ)過(guò)程/函數(shù)將保留,但是變?yōu)?invalid 狀態(tài)。
這幾種刪除語(yǔ)句的區(qū)別?
在速度上,一般來(lái)說(shuō),drop> truncate > delete.
如果想要?jiǎng)h除表,用drop;
如果想要保留該表,但要?jiǎng)h除所有記錄,而且和事務(wù)無(wú)關(guān)時(shí),用truncate;
當(dāng)你要?jiǎng)h除部分記錄時(shí),或者想觸發(fā)trigger,用delete,注意要帶上where子句.
注意: 對(duì)于有主外鍵關(guān)系的表,不能使用truncate而應(yīng)該使用不帶where子句的delete語(yǔ)句,由于truncate不記錄在日志中,不能夠激活觸發(fā)器
刪除后可以恢復(fù)嗎?哪些刪除是可以恢復(fù)的?
數(shù)據(jù)庫(kù)刪除后的數(shù)據(jù)想要恢復(fù)分三種情況:
1.有沒(méi)有備份?
2.有沒(méi)有開啟binlog?
3.如果兩者都沒(méi)開,只能使用第三方恢復(fù)軟件,或者找專業(yè)的數(shù)據(jù)恢復(fù)公司
5.編碼實(shí)戰(zhàn)
6.擴(kuò)展思考
關(guān)于alter語(yǔ)句
alter語(yǔ)句屬于drop語(yǔ)句的分支
--------------------------------------------------------------------------------------------------------------------
“我們相信人人都可以成為一個(gè)工程師总滩,現(xiàn)在開始纲堵,找個(gè)師兄,帶你入門咳秉,掌控自己學(xué)習(xí)的節(jié)奏婉支,學(xué)習(xí)的路上不再迷茫”澜建。
這里是技能樹.IT修真院向挖,成千上萬(wàn)的師兄在這里找到了自己的學(xué)習(xí)路線蝌以,學(xué)習(xí)透明化,成長(zhǎng)可見化何之,師兄1對(duì)1免費(fèi)指導(dǎo)跟畅。快來(lái)與我一起學(xué)習(xí)吧 溶推!