目录
DDL (DATA DEFINITION LANGUAGE) :数据定义语言
1 CREATE
创建数据库、表...等
1.1 CREATE DATABASE 创建数据库
CREATE DATABASE database_name;
判断不存在创建
CREATE DATABASE IF NOT EXISTS database_name;
指定字符集
CREATE DATABASE database_name CHARSET = UTF8MB4;
CREATE DATABASE database_name CHARACTER SET UTF8MB4;
1.2 CREATE TABLE 创建表
CREATE TABLE table_name (
column1_name INT(10),
column2_name CHAR(10),
...
);
例:
CREATE TABLE user (
id BIGINT(20) UNSIGNED PRIMARY KEY AUTO_INCREMENT COMMENT 'user id',
name VARCHAR(20) NOT NULL COMMENT 'user name',
age INT(3) UNSIGNED DEFAULT NULL COMMENT 'user age',
gender TINYINT(2) NOT NULL COMMENT 'user gender',
state INT(3) UNSIGNED ZEROFILL DEFAULT '0' COMMENT 'user state'
) DEFAULT CHARSET = UTF8MB4;
根据已存在的表创建新表
CREATE TABLE table_name_1
AS
SELECT column_1, column_2, ... FROM table_name_2;
例:
CREATE TABLE user1
AS
SELECT id, name, age FROM user;
1.3 CREATE VIEW 创建视图
CREATE VIEW view_name AS
SELECT column5_name, column6_name, colmun7_name
FROM table1_name, table2_name, table3_name
WHERE table1_name.column3_name = table2_name.column3_name
AND table2_name.column4_name = table3_name.column4_name;
2 ALTER
修改表结构
2.1 ALTER ADD 新增表字段
ALTER TABLE table_name ADD column_name INT(10);
例:
ALTER TABLE user ADD address VARCHAR(50) DEFAULT NULL COMMENT 'user address';
新增字段默认添加在最后,可使用 FIRST 和 AFTER 关键字指定新增字段的位置 ;
例:
在某个字段之前添加新字段:
ALTER TABLE user
ADD address VARCHAR(50) DEFAULT NULL COMMENT 'user address'
AFTER gender;
添加字段为第一列:
ALTER TABLE user
ADD address VARCHAR(50) DEFAULT NULL COMMENT 'user address'
FIRST;
2.2 ALTER CHANGE 修改表字段
ALTER TABLE table_name
CHANGE column_name column_name INT(20);
例:
ALTER TABLE user
CHANGE address address VARCHAR(30)
DEFAULT '4 Privet Drive Little Whinging';
2.3 ALTER DROP 删除表字段
ALTER TABLE table_name DROP column_name;
例:
ALTER TABLE user DROP address;
3 DROP
删除数据库、表
3.1 DROP DATABASE 删除数据库
DROP DATABASE database_name;
判断存在则删除
DROP DATABASE IF EXISTS database_name;
3.2 DROP TABLE 删除表
DROP TABLE table_name;
4 约束条件
4.1 主键 PRIMARY KEY
- 一张表只能有一个字段是主键
- 主键字段的值不为null且唯一
- 一般表中的第一个字段会设置为主键
- INT类型的主键可以搭配自增 AUTO_INCREMENT 使用
例: 创建 t_city 表,将id字段设置为自增的主键
INSERT INT t_city (
id BIGINT(20) PRIMARY KEY AUTO_INCREMENT,
city VARCHAR(20)
) DEFAULT CHARSET = UTF8MB4;
4.2 非空 NOT NULL
字段的值不能为空
例:创建 t_city 表,设置city字段的值不能为空
CREATE TABLE t_city (
id BIGINT(20) PRIMARY KEY,
city VARCHAR(20) NOT NULL
) DEFAULT CHARSET = UTF8MB4;
4.3 唯一 UNIQUE
字段值唯一,不能有重复
例:创建 t_city 表,将city字段添加唯一约束
CREATE TABLE t_city (
id BIGINT(20) PRIMARY KEY,
city VARCHAR(20) NOT NULL,
UNIQUE (city)
) DEFAULT CHARSET = UTF8MB4;
4.4 外键 FOREIGN KEY
- 外键:在一张表的某个字段上存另一个表的主键字段值
- 外键所在的字段无法添加主键字段中不存在的值
- 删除主键时,若外键含有改主键的值则无法删除,除非将外键值修改为其他主键值或设置为null
例:创建t_district表,将id_c字段设置为外键
CREATE TABLE t_district (
id BIGINT(20) PRIMARY KEY,
district VARCHAR(20) NOT NULL,
id_c BIGINT(20),
FOREIGN KEY (id_c) REFERENCES t_city(id)
);
4.5 默认 DEFAULT
字段的值设置默认值
例:创建 t_city 表,将code字段添加默认值
CREATE TABLE t_city (
id BIGINT(20) PRIMARY KEY,
city VARCHAR(20) NOT NULL,
code INT(10) DEFAULT '100000',
UNIQUE (city)
) DEFAULT CHARSET = UTF8MB4;