数据库模式定义语言DDL(Data Definition Language),是用于描述数据库中要存储的现实世界实体的语言。一个数据库模式包含该数据库中所有实体的描述定义。这些定义包括结构定义、操作方法定义等。



数据库模式定义语言并非程序设计语言,DDL数据库模式定义语言是SQL语言(结构化程序设计语言)的组成部分。SQL语言包括四种主要程序设计语言类别的语句:数据定义语言(DDL),数据操作语言(DML),数据控制语言(DCL)和事务控制语言(TCL)。



DDL描述的模式,必须由计算机软件进行编译,转换为便于计算机存储、查询和操纵的格式,完成这个转换工作的程序称为模式编译器。



模式编译器处理模式定义主要产生两种类型的数据:数据字典以及数据类型和结构定义。



数据字典和数据库内部结构信息是创建该模式所对应的数据库的依据,根据这些信息创建每个数据库对应的逻辑结构;对数据库数据的访问、查询也根据模式信息决定数据存取的方式和类型,以及数据之间的关系和对数据的完整性约束。



数据字典是模式的内部信息表示,数据字典的存储方式对不同的DBMS各不相同。



数据类型和结构的定义,是指当应用程序与数据库连接操作时,应用程序需要了解产生和提取的数据类型和结构。是为各种宿主语言提供的用户工作区的数据类型和结构定义,使用户工作区和数据库的逻辑结构相一致,减少数据的转换过程,这种数据类型和结构的定义通常用一个头文件来实现。



数据库模式的定义通常有两种方式: 交互方式定义模式和通过数据描述语言DDL 描述文本定义模式。



编辑本段常见的DDL语句



CREATE DATABASE



创建数据库



CREATE {DATABASE | SCHEMA} db_name



[create_specification [, create_specification] ...]



create_specification:



[DEFAULT] CHARACTER SET charset_name



| [DEFAULT] COLLATE collation_name



CREATE TABLE



 



创建数据库表格



CREATE [TEMPORARY] TABLE tbl_name



[(create_definition,...)]



[table_options] [select_statement]



ALTER TABLE



修改数据库表格



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 TABLE



删除数据库表格



DROP [TEMPORARY] TABLE



tbl_name [, tbl_name] ...



[RESTRICT | CASCADE]



CREATE VIEW



 



创建查询命令



CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]



VIEW view_name [(column_list)]



AS select_statement



[WITH [CASCADED | LOCAL] CHECK OPTION]



ALTER VIEW



修改查询命令



ALTER [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]



VIEW view_name [(column_list)]



AS select_statement



[WITH [CASCADED | LOCAL] CHECK OPTION]



DROP VIEW



删除查询命令



DROP VIEW



view_name [, view_name] ...



[RESTRICT | CASCADE]



TRUNCATE TABLE



删除数据表内容



TRUNCATE TABLE name [DROP/REUSE STORAGE] 



DROP STORAGE:显式指明释放数据表和索引的空间 



REUSE STORAGE:显式指明不释放数据表和索引的空间



编辑本段禁用DDL语句



在一些特定情况下,如:金融、安全、税务等等部门,有一些数据库为了安全需要,需要禁止执行DDL语句。在Oracle数据库下,禁止DDL语句需要执行下面的SQL语句:


执行完这条语句之后,Oracle所有的DDL语句,均无法执行,包括SYS用户。