【SQL 语言】 DDL
【SQL 语言】 DDL
Metadata
title: 【SQL 语言】 DDL
date: 2022-12-20 15:24
tags:
- 行动阶段/完成
- 主题场景/数据存储
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/数据存储/DB_语言
categories:
- 数据存储
keywords:
- 数据存储
description: 数据库模式定义语言DDL(Data Definition Language),是用于描述数据库中要存储的现实世界实体的语言。
简介
定义包括结构定义、操作方法定义等。
数据库模式定义语言并非程序设计语言,DDL数据库模式定义语言是SQL语言(结构化查询语言)的组成部分。SQL语言包括四种主要程序设计语言类别的语句:数据定义语言(DDL),数据操作语言(DML),数据控制语言(DCL)和事务控制语言(TCL)。
DDL描述的模式,必须由计算机软件进行编译,转换为便于计算机存储、查询和操纵的格式,完成这个转换工作的程序称为模式编译器。
模式编译器处理模式定义主要产生两种类型的数据:数据字典以及数据类型和结构定义。
数据字典和数据库内部结构信息是创建该模式所对应的数据库的依据,根据这些信息创建每个数据库对应的逻辑结构;对数据库数据的访问、查询也根据模式信息决定数据存取的方式和类型,以及数据之间的关系和对数据的完整性约束。
数据字典是模式的内部信息表示,数据字典的存储方式对不同的DBMS各不相同。
数据类型和结构的定义,是指当应用程序与数据库连接操作时,应用程序需要了解产生和提取的数据类型和结构。是为各种宿主语言提供的用户工作区的数据类型和结构定义,使用户工作区和数据库的逻辑结构相一致,减少数据的转换过程,这种数据类型和结构的定义通常用一个头文件来实现。
数据库模式的定义通常有两种方式: 交互方式定义模式和通过数据描述语言DDL 描述文本定义模式。
常见的DDL语句
创建数据库
CREATE {DATABASE | SCHEMA} db_name
[create_specification [, create_specification] ...]
create_specification:
[DEFAULT] CHARACTER SET charset_name -- 字符集
| [DEFAULT] COLLATE collation_name -- 排序
CREATE DATABASE test;
USE test;
创建数据库表格
CREATE [TEMPORARY] TABLE tbl_name
[(create_definition,...)]
[table_options] [select_statement]
CREATE TABLE mytable (
id INT NOT NULL AUTO_INCREMENT,
col1 INT NOT NULL DEFAULT 1,
col2 VARCHAR(45) NULL,
col3 DATE NULL,
PRIMARY KEY (`id`));
修改数据库表格
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 -- 表设置
添加列
ALTER TABLE mytable
ADD col CHAR(20);
修改列和属性
---ALTER TABLE 表名 CHANGE 原字段名 新字段名 字段类型 约束条件
ALTER TABLE mytable
CHANGE col col1 CHAR(32) NOT NULL DEFAULT '123';
删除列
ALTER TABLE mytable
DROP COLUMN col;
删除数据库表格
DROP [TEMPORARY] TABLE
tbl_name [, tbl_name] ...
[RESTRICT | CASCADE]
DROP TABLE mytable;
创建查询视图命令
CREATE[ORREPLACE][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:显式指明不释放数据表和索引的空间
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 蝶梦庄生!
评论