定義
模式描述語言即資料庫模式定義語言,簡稱為DDL。是用於描述資料庫中要存儲的現實世界實體的語言。一個資料庫模式包含該資料庫中所有實體的描述定義。
功能
資料庫模式描述語言DDL,是用於描述資料庫中要存儲的現實世界實體的語言。一個資料庫模式包含該資料庫中所有實體的描述定義。這些定義包括結構定義、操作方法定義等。
DDL描述的模式,必須由計算機軟體進行編譯,轉換為便於計算機存儲、查詢和操縱的格式,完成這個轉換工作的程式稱為模式編譯器。模式編譯器處理模式定義主要產生兩種類型的數據:數據字典以及數據類型和結構定義。數據字典和資料庫內部結構信息是創建該模式所對應的資料庫的依據,根據這些信息創建每個資料庫對應的邏輯結構;對資料庫數據的訪問、查詢也根據模式信息決定數據存取的方式和類型,以及數據之間的關係和對數據的完整性約束。數據字典是模式的內部信息表示,數據字典的存儲方式對不同的DBMS各不相同。數據類型和結構的定義,是指當應用程式與資料庫連線操作時,應用程式需要了解產生和提取的數據類型和結構。是為各種宿主語言提供的用戶工作區的數據類型和結構定義,使用戶工作區和資料庫的邏輯結構相一致,減少數據的轉換過程,這種數據類型和結構的定義通常用一個頭檔案來實現。
資料庫模式的定義通常有兩種方式: 互動方式定義模式和通過數據描述語言 DDL 描述文本定義模式。
常見語句
創建資料庫
CREATE {DATABASE | SCHEMA} db_name
[create_specification [, create_specification] ...]
create_specification:
[DEFAULT] CHARACTER SET charset_name
| [DEFAULT] COLLATE collation_name
創建資料庫表格
CREATE [TEMPORARY] TABLE tbl_name
[(create_definition,...)]
[table_options] [select_statement]
修改資料庫表格
ALTER TABLE tbl_name
alter_specification [, alter_specification] ...
alter_specification:
ADD [COLUMN] column_definition [FIRST | AFTER col_name ]
| ADD [COLUMN] (column_definition,...)
| ADD INDEX (index_col_name,...)
| ADD [CONSTRAINT [symbol]]
PRIMARY KEY (index_col_name,...)
| ADD [CONSTRAINT [symbol]]
UNIQUE (index_col_name,...)
| ADD (index_col_name,...)
| ADD [CONSTRAINT [symbol]]
FOREIGN KEY (index_col_name,...)
[reference_definition]
| ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}
| CHANGE [COLUMN] old_col_name column_definition
[FIRST|AFTER col_name]
| MODIFY [COLUMN] column_definition [FIRST | AFTER col_name]
| DROP [COLUMN] col_name
| DROP PRIMARY KEY
| DROP INDEX index_name
| DROP FOREIGN KEY fk_symbol
| DISABLE KEYS
| ENABLE KEYS
| RENAME [TO] new_tbl_name
| ORDER BY col_name
| CONVERT TO CHARACTER SET charset_name [COLLATE collation_name]
| [DEFAULT] CHARACTER SET charset_name [COLLATE collation_name]
| DISCARD TABLESPACE
| IMPORT TABLESPACE
| table_options
刪除資料庫表格
DROP [TEMPORARY] TABLE
tbl_name [, tbl_name] ...
[RESTRICT | CASCADE]
創建查詢命令
CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
VIEW view_name [(column_list)]
AS select_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]
修改查詢命令
ALTER [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
VIEW view_name [(column_list)]
AS select_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]
刪除查詢命令
DROP VIEW
view_name [, view_name] ...
[RESTRICT | CASCADE]
刪除數據表內容
TRUNCATE TABLE name [DROP/REUSE STORAGE]
DROP STORAGE:顯式指明釋放數據表和索引的空間
REUSE STORAGE:顯式指明不釋放數據表和索引的空間
其他語言
SQL語言包括四類種主要程式設計語言類別的語句:數據查詢語言(DQL),數據操作語言(DML)和數據定義語言(DDL)及數據控制語言(DCL)。
數據查詢語言DQL
數據查詢語言DQL基本結構是由SELECT子句,FROM子句,WHERE子句組成的查詢塊:
SELECT <欄位名表>
FROM <表或視圖名>
WHERE <查詢條件>
示例:查詢年齡大於28歲的所有學生的信息 SELECT * FROM student WHERE sage>28。
數據操作語言DML
數據操縱語言DML主要有三種形式:
1) 插入:INSERT
語法格式1: insert into 表名 values(值1,值2......,值n);
語法格式2: insert into 表明(欄位名1,欄位名2,......,欄位名n) values(值1,值2,......,值n)。
2) 更新:UPDATE
語法格式:update 表名 set 賦值表達式 [where 條件]
3) 刪除:DELETE
語法格式:delete from 表 [where 條件]。
數據定義語言DDL
數據定義語言DDL用來創建資料庫中的各種對象:表、視圖、索引、同義詞、聚簇等。例如:
CREATE TABLE/VIEW/INDEX/SYN/CLUSTER
DDL操作是隱性提交的,不能rollback。
數據控制語言DCL
數據控制語言DCL用來授予或回收訪問資料庫的某種特權,並控制資料庫操縱事務發生的時間及效果,對資料庫實行監視等。如:
1) GRANT:授權。
2) ROLLBACK [WORK] TO [SAVEPOINT]:回退到某一點。ROLLBACK:回滾。
回滾命令使資料庫狀態回到上次最後提交的狀態。其格式為:SQL>ROLLBACK。
3) COMMIT [WORK]:提交。
在資料庫的插入、刪除和修改操作時,只有當事務在提交到資料庫時才算完成。在事務提交前,只有運算元據庫的這個人才能有權看到所做的事情,別人只有在最後提交完成後才可以看到。提交數據有三種類型:顯式提交、隱式提交及自動提交。下面分別說明這三種類型。
(1)顯式提交
用COMMIT命令直接完成的提交為顯式提交。其格式為:SQL>COMMIT;
(2) 隱式提交
用SQL命令間接完成的提交為隱式提交。這些命令是:
ALTER,AUDIT,COMMENT,CONNECT,CREATE,DISCONNECT,DROP,
EXIT,GRANT,NOAUDIT,QUIT,REVOKE,RENAME。
(3) 自動提交
若把AUTOCOMMIT設定為ON,則在插入、修改、刪除語句執行後,系統將自動進行提交,這就是自動提交。其格式為:SQL>SET AUTOCOMMIT ON 。
禁用
在一些特定情況下,如:金融、安全、稅務等等部門,有一些資料庫為了安全需要,需要禁止執行DDL語句。在Oracle資料庫下,禁止DDL語句需要執行下面的SQL語句:
執行完這條語句之後,Oracle所有的DDL語句,均無法執行,包括SYS用戶。