DDL语句详解
DDL
数据定义语言 (Data Definition Language, DDL) ,它主要包括三个关键字:create ,alter , drop(数据库关键字不分大小写 ),主要操作对象 有数据库、表、索引、视图等.
操作数据库
创建数据库
create databases 数据库名称;
使用这个数据库
use 数据库名称;
删除这个数据库
drop database 数据库名称;
注意:执行的SQL语句不区分大小写,一个SQL语句末尾要加上;
操作表结构
表【TABLE】是数据库中存储数据的载体。
2.2.1 语法结构
然后我们来看下DDL是如何来操作表【TABLE】的。
CREATE TABLE 表名称
(
列名称1 数据类型,
列名称2 数据类型,
列名称3 数据类型,
....
)
创建一张用户表
CREATE TABLE T_USER(
id int(3) ,
user_name varchar(30)
)
2.2.2 添加注释
为了让别人能清楚我们定义的字段的含义,我们需要给我们创建的字段添加对应的注释来说明。
CREATE TABLE T_USER(
id int(3) ,
user_name varchar(30) COMMENT '用户名'
)COMMENT='用户表'
或者在建表后添加
ALTER TABLE t_user
MODIFY COLUMN user_name varchar(20) COMMENT 'aaa' ;
2.2.3 删除表
删除表通过DROP
关键字来实现
DROP TABLE T_USER;
2.2.4 修改表
添加字段
ALTER TABLE T_USER ADD address VARCHAR(2);
修改字段类型
ALTER TABLE T_USER MODIFY address VARCHAR(50);
修改字段名称
ALTER TABLE T_USER RENAME COLUMN address TO address666;
删除字段
ALTER TABLE T_USER DROP COLUMN address666;
2.2.5 表结构的约束
非空约束
ALTER TABLE T_USER
CHANGE id id INT NOT NULL COMMENT '主键';
或者在建表的时候指定
# 删除表
DROP TABLE T_USER;
CREATE TABLE T_USER(
id INT(5) NOT NULL COMMENT '主键',
user_name VARCHAR(20) COMMENT '账号' ,
age INT(2) COMMENT '年龄' DEFAULT 18
)COMMENT='用户表' ;
默认值
DROP TABLE T_USER;
CREATE TABLE T_USER(
id INT(5) NOT NULL COMMENT '主键',
user_name VARCHAR(20) COMMENT '账号' ,
age INT(2) COMMENT '年龄' DEFAULT 18
)COMMENT='用户表' ;
唯一约束
该字段中不能出现相同的值,null除外
DROP TABLE T_USER;
CREATE TABLE T_USER(
id INT(5) UNIQUE COMMENT '主键',
user_name VARCHAR(20) COMMENT '账号' ,
age INT(2) COMMENT '年龄' DEFAULT 18
)COMMENT='用户表' ;
建表后设置字段的唯一约束条件
ALTER TABLE t_user add CONSTRAINT unique_name UNIQUE(user_name);
alter table t_user add unique (user_name);
主键
能唯一标识一条记录的字段,不能为空,唯一约束,只能有一个主键。
DROP TABLE T_USER;
CREATE TABLE T_USER(
id INT(5) PRIMARY KEY COMMENT '主键',
user_name VARCHAR(20) COMMENT '账号' ,
age INT(2) COMMENT '年龄' DEFAULT 18
)COMMENT='用户表' ;
联合主键:多个字段组合的信息是不能出现重复的
ALTER TABLE t_user
ADD PRIMARY KEY (id, user_name);
外键
外键就是在主表中可以重复出现,但是它的值是另一个表的主键,外键使两个表相关,外键可约束表的数据的更新,外键和主键表联系,数据类型要统一,长度(存储大小)要统一,在更新数据的时候会保持一致性
# 删除表
DROP TABLE T_USER;
CREATE TABLE T_USER(
id INT(5) PRIMARY KEY COMMENT '主键',
user_name VARCHAR(20) COMMENT '账号' ,
age INT(2) COMMENT '年龄' DEFAULT 18,
deptid INT(30) ,
CONSTRAINT FK_DEPT_ID FOREIGN KEY(deptid) REFERENCES T_DEPT(dept_id)
)COMMENT='用户表' ;
ALTER TABLE T_USER ADD
CONSTRAINT FK_DEPT_ID FOREIGN KEY(deptid) REFERENCES T_DEPT(dept_id)
注意:外键字段的级联关系,如果我们要删除外键对应的主键记录,那么必须要先删除该注解对应的所有的外键记录,否则删除不成功,
实际开发中我们对主键的使用比较少。
check
粒度更细的约束。
DROP TABLE T_USER;
CREATE TABLE T_USER(
id INT(5) PRIMARY KEY COMMENT '主键',
user_name VARCHAR(20) COMMENT '账号' ,
age INT(3) COMMENT '年龄' ,
CHECK (age > 0 AND age < 40)
)COMMENT='用户表' ;
between and
in not in or
2.2.6 字段类型
MySQL 中定义数据字段的类型对你数据库的优化是非常重要的。
MySQL 支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。
数值类型
日期和时间类型
字符串类型
char(n) 和 varchar(n) 中括号中 n 代表字符的个数,并不代表字节个数,比如 CHAR(30) 就可以存储 30 个字符。
CHAR 和 VARCHAR 类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换