• DDL语言详解


    数据库模式定义语言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语句:

      DDL[1]

    执行完这条语句之后,Oracle所有的DDL语句,均无法执行,包括SYS用户。
  • 相关阅读:
    用ZooKeeper做为注册中心搭建基于Spring Cloud实现服务注册与发现
    spring-cloud-starter-hystrix(断路器)服务不通或者调用失败后的错误处理和回调
    spring-boot-starter-actuator(健康监控)配置和使用
    为什么Java使用System.getenv()获取刚刚设置的环境变量时为空
    Java获取系统环境变量(System Environment Variable)和系统属性(System Properties)以及启动参数的方法
    为什么Linux下的环境变量要用大写而不是小写
    Spring Boot在开发时实现热部署(开发时修改文件保存后自动重启应用)(spring-boot-devtools)
    Ubuntu 16.04添加多张虚拟网卡
    Javascript网址跳转方法
    MySQL出现:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure Last packet sent to the server was 0 ms ago.
  • 原文地址:https://www.cnblogs.com/langtianya/p/3021230.html
Copyright © 2020-2023  润新知