1、數(shù)據(jù)定義語言DDL
DDL((Data Definition Language):主要的命令有CREATE、ALTER、DROP等,用于定義/修改/刪除數(shù)據(jù)對(duì)象(如表)的數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)類型、表之間的鏈接和約束等初始化工作,大多在建立表時(shí)使用,或者說,DDL語言操作的對(duì)象是數(shù)據(jù)庫中的對(duì)象而非對(duì)象所包含的數(shù)據(jù)。
DDL包含以下語句:
1、CREATE : 在數(shù)據(jù)庫中創(chuàng)建新的數(shù)據(jù)對(duì)象 2、ALTER : 修改數(shù)據(jù)庫中對(duì)象的數(shù)據(jù)結(jié)構(gòu) 3、DROP : 刪除數(shù)據(jù)庫中的對(duì)象 4、DISABLE/ENABLE TRIGGER : 修改觸發(fā)器的狀態(tài) 5、UPDATE STATISTIC : 更新表/視圖統(tǒng)計(jì)信息 6、TRUNCATE TABLE : 清空表中數(shù)據(jù) 7、COMMENT : 給數(shù)據(jù)對(duì)象添加注釋 8、RENAME : 更改數(shù)據(jù)對(duì)象名稱
注意:
當(dāng)執(zhí)行DDL語句時(shí),在每一條語句前后,數(shù)據(jù)庫(oracle/Mysql)都將提交當(dāng)前的事務(wù)。如果用戶使用insert命令將記錄插入到數(shù)據(jù)庫后,執(zhí)行了一條DDL語句(如create table),此時(shí)來自insert命令的數(shù)據(jù)將被提交到數(shù)據(jù)庫。當(dāng)DDL語句執(zhí)行完成時(shí),DDL語句會(huì)被自動(dòng)提交,不能回滾。
2、數(shù)據(jù)操作語言DML
DML(Data Manipulation Language):用于添加/刪除/修改/查詢/合并數(shù)據(jù)庫中數(shù)據(jù),比如SELECT、UPDATE、INSERT、DELETE、MERGE操作,是用來對(duì)數(shù)據(jù)庫里的表數(shù)據(jù)進(jìn)行操作的語言。
DML包含以下語句:
1、INSERT :將數(shù)據(jù)插入到表或視圖 2、DELETE :從表或視圖刪除數(shù)據(jù) 3、SELECT :從表或視圖中獲取數(shù)據(jù) 4、UPDATE :更新表或視圖中的數(shù)據(jù) 5、MERGE : 對(duì)數(shù)據(jù)進(jìn)行合并操作(插入/更新/刪除)
注意:
當(dāng)執(zhí)行DML命令如果沒有提交,將不會(huì)被其他會(huì)話看到。除非在DML命令之后執(zhí)行了DDL命令或DCL命令,或用戶退出會(huì)話,或終止實(shí)例,此時(shí)系統(tǒng)會(huì)自動(dòng)發(fā)出commit命令,使未提交的DML命令提交。
3、數(shù)據(jù)控制語言DCL
DCL(Data Control Language):是用來設(shè)置或更改數(shù)據(jù)庫用戶或角色權(quán)限的語句,包括(grant,deny,revoke等)。
DCL包含以下語句:
1、GRANT : 賦予用戶某種控制權(quán)限 2、REVOKE :取消用戶某種控制權(quán)限
數(shù)據(jù)控制語言只要是對(duì)用戶進(jìn)行創(chuàng)建、刪除、密碼修改以及給用戶賦予權(quán)限和刪除權(quán)限扽一系列操作。
4、事務(wù)控制語言(TCL)
TCL(Transaction Control Language):用來對(duì)事務(wù)進(jìn)行管理。
TCL包含以下語句:
1、COMMIT : 保存已完成事務(wù)動(dòng)作結(jié)果 2、SAVEPOINT : 保存事務(wù)相關(guān)數(shù)據(jù)和狀態(tài)用以可能的回滾操作 3、ROLLBACK : 恢復(fù)事務(wù)相關(guān)數(shù)據(jù)至上一次COMMIT操作之后 4、SET TRANSACTION : 設(shè)置事務(wù)選項(xiàng)
由于DML語句對(duì)表數(shù)據(jù)進(jìn)行操作的時(shí)候都會(huì)加上行級(jí)鎖,確認(rèn)完成后,必須加上事物處理結(jié)束的命令COMMIT才能正式生效,否則改變不一定寫入數(shù)據(jù)庫里。如果想撤回這些操作, 可以用命令 ROLLBACK 復(fù)原。
在運(yùn)行INSERT,DELETE和UPDATE語句前最好估算一下可能操作的記錄范圍,應(yīng)該把它限定在較小范圍內(nèi),例如一萬條記錄,否則ORACLE處理這個(gè)事物用到很大的回退段。程序響應(yīng)慢甚至失去響應(yīng)。如果記錄數(shù)上十萬以上這些操作。可以把這些SQL語句分段分次完成。其間加上COMMIT確認(rèn)事物處理。
根據(jù)語句操作目標(biāo)的不同,還是很好區(qū)分這四種類型:DDL-數(shù)據(jù)對(duì)象; DML-數(shù)據(jù); DCL-權(quán)限; TCL-事務(wù)。
唯一需要注意的是TRUNCATE,盡管從功能上看相當(dāng)于DELETE表中所有數(shù)據(jù),但由于它所操作的對(duì)象是table這個(gè)級(jí)別而非row(由于某種原因不能立即刪除表數(shù)據(jù)時(shí),TRUNCATE會(huì)鎖定整張表,而DELETE鎖定的則是row),所以歸在DDL中。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com