Oracle是第一個(gè)商品化的數(shù)據(jù)庫(kù)管理系統(tǒng)德澈,由甲骨文公司(Oracle)推出记餐,其采用標(biāo)準(zhǔn)SQL,支持多種數(shù)據(jù)類(lèi)型和平臺(tái)粗恢,功能強(qiáng)大拟逮。同類(lèi)產(chǎn)品還有IBM的DB2,Sybase,微軟的SQL Server和現(xiàn)屬于Oracle公司的MySQL.
結(jié)構(gòu)化查詢(xún)語(yǔ)言
SQL(Structured Query Language)結(jié)構(gòu)化查詢(xún)語(yǔ)言适滓,是在關(guān)系型數(shù)據(jù)庫(kù)中執(zhí)行檢索及維護(hù)的標(biāo)準(zhǔn)語(yǔ)言敦迄,可以用來(lái)操作,定義和控制數(shù)據(jù)凭迹。
所有的數(shù)據(jù)庫(kù)都是用相同或者相似的語(yǔ)言罚屋,SQL可以分為以下幾類(lèi):
- 數(shù)據(jù)定義語(yǔ)言(DDL):Data Definition Language
- 數(shù)據(jù)操縱語(yǔ)言(DML):Data Manipulation Language
- 事務(wù)控制語(yǔ)言(TCL):Transaction Control Language
- 數(shù)據(jù)查詢(xún)語(yǔ)言(DQL):Data Query Language
- 數(shù)據(jù)控制語(yǔ)言(DCL):Data Control Language
DDL
用于建立,修改和刪除數(shù)據(jù)庫(kù)對(duì)象嗅绸,此類(lèi)語(yǔ)言的操作都和數(shù)據(jù)庫(kù)的結(jié)構(gòu)掛鉤脾猛,所以凡是對(duì)表結(jié)構(gòu)做出改動(dòng)的都屬于DDL
- CREATE: 創(chuàng)建表或者其他對(duì)象的結(jié)構(gòu)
CREATE TABLE emp (
id NUMBER(5),
name VARCHAR2(20),
gender VARCHAR2(1),
hiredate DATE
);
- ALERT: 修改表或其他對(duì)象的結(jié)構(gòu)
ALERT TABLE emp ADD (
salary NUMBER(6,2)
);
ALERT TABLE emp MODIFY(
gender VARCHAR2(1) DEFAULT 'M'
);
- DROP: 刪除表或其他對(duì)象的結(jié)構(gòu)
ALERT TABLE emp DROP(name);//刪除字段
DROP TABLE emp;//刪除表對(duì)象
- TRUNCATE: 刪除表數(shù)據(jù),保留表結(jié)構(gòu)
TRUNCATE TABLE emp;
DML
數(shù)據(jù)操縱語(yǔ)言鱼鸠,用于操作數(shù)據(jù)庫(kù)數(shù)據(jù)猛拴,例如增加,修改和刪除數(shù)據(jù)等蚀狰,和事務(wù)相關(guān)愉昆,執(zhí)行完畢后必須提交才能生效。這里解釋一下數(shù)據(jù)庫(kù)事務(wù)這個(gè)概念麻蹋。事務(wù)是指作為數(shù)據(jù)庫(kù)工作過(guò)程當(dāng)中的單個(gè)邏輯單元跛溉,要么完全的執(zhí)行,要么完全的不執(zhí)行扮授。比方說(shuō)一次銀行轉(zhuǎn)賬操作芳室,與數(shù)據(jù)庫(kù)相關(guān)的操作包括檢查賬戶(hù)和密碼,賬戶(hù)余額刹勃,取款堪侯,轉(zhuǎn)賬,更新賬戶(hù)余額信息等荔仁。這一系列操作如果任意一個(gè)環(huán)節(jié)出錯(cuò)都不允許對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)進(jìn)行更改伍宦,賬戶(hù)信息必須還原到初始狀態(tài),否則數(shù)據(jù)庫(kù)將會(huì)產(chǎn)生混亂咕晋,而事務(wù)則正是用來(lái)保證這一系列操作過(guò)程的穩(wěn)定性和可預(yù)測(cè)性雹拄。
- INSERT:將數(shù)據(jù)插入到數(shù)據(jù)庫(kù)中
INSERT INTO emp
(id,name,gender)
VALUES
(10001,kevin,M);
- UPDATE 更新數(shù)據(jù)庫(kù)中已有的數(shù)據(jù)
UPDATE emp
SET name='zhangsan' WHERE id=10001;
- DELETE 刪除數(shù)據(jù)庫(kù)中數(shù)據(jù)
DELETE FROM emp WHERE name='zhangsan';
修改和刪除表中數(shù)據(jù)時(shí)都必須使用WHERE關(guān)鍵字做條件限定,若不指定掌呜,將修改和刪除表中所有數(shù)據(jù)滓玖。
DELETE,DROP和TRUNCATE關(guān)鍵字都有刪除的作用质蕉,這三者的區(qū)別是:
相同點(diǎn)
- TRUNCATE和不帶WHERE子句的DELETE,DROP都會(huì)刪除表中數(shù)據(jù)
- TRUNCATE和DROP都是DDL語(yǔ)句势篡,執(zhí)行后直接提交不可回退
- TRUNCATE和DELETE只會(huì)刪除表數(shù)據(jù)翩肌,不會(huì)刪除表結(jié)構(gòu)。
** 不同點(diǎn)**
- 事務(wù)操作上 DELETE是事務(wù)操作語(yǔ)言禁悠,操作可以回退念祭,其他兩者無(wú)法回退
- 執(zhí)行效率上 DELETE每次刪除一行,逐行刪除碍侦,TRUNCATE針對(duì)整張表數(shù)據(jù)進(jìn)行刪除粱坤,DROP針對(duì)整張表對(duì)象刪除,因此通常刪除效率上 DROP>TRUNCATE> DELETE