SQL学习之DDL

DDL 的基础语法

DDL 的英文全称是 Data Definition Language,中文是数据定义语言。它定义了数据库的结构和数据表的结构。

在 DDL 中,我们常用的功能是增删改,分别对应的命令是 CREATE、DROP 和 ALTER。

创建和删除一个数据库:
CREATE DATABASE nba;
DROP DATABASE nba;

创建表的语法:
CREATE TABLE table_name

我们一般用Navicat来创建表,例如我们想创建以下规则的一张表:
SQL学习之DDL
player_id 是数据表 player 的主键,且自动增长;player_id、team_id、player_name 这三个字段均不为空,height 字段可以为空。

则在Navicat中如下设计:
SQL学习之DDL
还可以给player_name增加索引。
SQL学习之DDL
修改表结构:

添加字段,比如我在数据表中添加一个 age 字段,类型为int(11):
ALTER TABLE player ADD (age int(11));

修改字段名,将 age 字段改成player_age:
ALTER TABLE player RENAME COLUMN age to player_age;

修改字段的数据类型,将player_age的数据类型设置为float(3,1):
ALTER TABLE player MODIFY (player_age float(3,1));

删除字段, 删除刚才添加的player_age字段:
ALTER TABLE player DROP COLUMN player_age;

数据包约束

主键约束:
主键起的作用是唯一标识一条记录,不能重复,不能为空,即 UNIQUE+NOT NULL。一个数据表的主键只能有一个。主键可以是一个字段,也可以由多个字段复合组成。

外键约束:
外键确保了表与表之间引用的完整性。一个表中的外键对应另一张表的主键。外键可以是重复的,也可以为空。比如 player_id 在 player 表中是主键,如果你想设置一个球员比分表即 player_score,就可以在 player_score 中设置 player_id 为外键,关联到 player 表中。

字段的约束:

唯一性约束:
唯一性约束表明了字段在表中的数值是唯一的,即使我们已经有了主键,还可以对其他字段进行唯一性约束。比如我们在 player 表中给 player_name 设置唯一性约束,就表明任何两个球员的姓名不能相同。需要注意的是,唯一性约束和普通索引(NORMAL INDEX)之间是有区别的。唯一性约束相当于创建了一个约束和普通索引,目的是保证字段的正确性,而普通索引只是提升数据检索的速度,并不对字段的唯一性进行约束。

NOT NULL 约束。对字段定义了 NOT NULL,即表明该字段不应为空,必须有取值。

DEFAULT,表明了字段的默认值。如果在插入数据的时候,这个字段没有取值,就设置为默认值。比如我们将身高 height 字段的取值默认设置为 0.00,即DEFAULT 0.00。

CHECK 约束,用来检查特定字段取值范围的有效性,CHECK 约束的结果不能为 FALSE,比如我们可以对身高 height 的数值进行 CHECK 约束,必须≥0,且<3,即CHECK(height>=0 AND height<3)。

总结

SQL学习之DDL
对于外键,在现在的项目开发中,已经用的相对较少了,更多的是在业务层进行实现。