DDL
数据定义语言(Data Definition Language,DDL)是SQL语言集中负责数据结构定义与数据库对象定义的语言,由CREATE
、ALTER
与DROP
三个语法所组成,现在被纳入SQL指令中作为其中一个子集。
CREATE
CREATE
是负责数据库对象的建立,举凡数据库、数据表、数据库索引、预存程序、用户函数、触发程序或是用户自定类型等对象,都可以使用 CREATE 指令来建立,而为了各式数据库对象的不同,CREATE 有很多参数
创建数据库
语法格式
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
[create_specification] ...
create_specification:
[DEFAULT] CHARACTER SET [=] charset_name
| [DEFAULT] COLLATE [=] collation_name
示例:
-- 创建school数据库,字符集为utf8
CREATE DATABASE school CHARACTER SET = utf8;
创建表
语法格式
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
(create_definition,...)
[table_options]
[partition_options]
create_definition:
col_name column_definition
column_definition:
data_type [NOT NULL | NULL] [DEFAULT default_value]
[AUTO_INCREMENT] [UNIQUE [KEY]] [[PRIMARY] KEY]
[COMMENT 'string']
table_option:
AUTO_INCREMENT [=] value
| [DEFAULT] CHARACTER SET [=] charset_name
| [DEFAULT] COLLATE [=] collation_name
| ENGINE [=] engine_name
示例:
CREATE TABLE student (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT 'student id',
name VARCHAR(20) NOT NULL COMMENT 'student name',
age TINYINT UNSIGNED COMMENT 'student age',
gender ENUM('M', 'F') NOT NULL DEFAULT 'M' COMMENT 'student gender',
comtime DATETIME NOT NULL COMMENT 'Admission time'
) CHARSET utf8 ENGINE=INNODB ;
DROP
DROP 则是删除数据库对象的指令,并且只需要指定要删除的数据库对象名称
删库
语法格式
DROP {DATABASE | SCHEMA} [IF EXISTS] db_name
删表
语法格式
DROP [TEMPORARY] TABLE [IF EXISTS]
tbl_name [, tbl_name] ...
[RESTRICT | CASCADE]
ALTER
ALTER 是负责数据库对象修改的指令,相较于 CREATE 需要定义完整的数据对象参数,ALTER 则是可依照要修改的幅度来决定使用的参数,参数有点多,下面列举常用的几种。
- 修改表名
ALTER TABLE student RENAME stu;
- 添加列和列定义
ALTER TABLE stu ADD age INT;
- 添加多个列
ALTER TABLE stu ADD gender VARRCHA(20) , ADD qq INT;
- 表中的首列添加一列
ALTER TABLE stu ADD classid VARCHAR(20) FIRST;
- 在age列后面添加一个telnum列
ALTER TABLE stu ADD telnum INT AFTER age;
- 删除列及列定义
ALTER TABLE stu DROP qq;
- 将id列的数据类型改为varchar类型
ALTER TABLE stu MODIFY id VARCHAR(20);
- 将birthday列名字改为birth
ALTER TABLE stu CHANGE birthday birth DATETIME;