创建数据表的语句为: CREATE TABLE
, 语法规则如下:
$ CREATE TABLE <表名> ( 字段名1 数据类型 [列级别约束条件] [默认值], 字段名2 数据类型 [列级别约束条件] [默认值], …… );点击复制复制失败已复制
使用 CREATE TABLE
创建表时,必须指定一下信息:
- 要创建的表名称,不区分大小写,不能使用SQL语言中的关键字,如:
DROP
、ALTER
、INSERT
等 - 数据表中每一个列(字段)的名称和数据类型,如果创建多个列,要用
逗号
隔开。
示例:
$ CREATE TABLE ( id INT, name VARCHAR(25), age INT )点击复制复制失败已复制
约束条件
主键约束
主键又称 主码
,是表中一列或多列的组合。 主键约束
(Primary Key Constraint)要求主键列的数据唯一,并且不允许为空。主键能够唯一标识表中的一条记录,可以结合外键来定义不同数据表之间的关系,并且可以加快数据可查询的速度。主键和记录直减的关系如同身份证和人之间的关系,他们之间是一一对应的。主键分为两种类型: 单字段主键
和 多字段联合主键
。
单字段主键
主键由一个字段组成,SQL语句格式分为以下两种情况。
- 在定义列的同时指定主键。
语法规则如下:
字段名 数据类型 PRIMARY KEY点击复制复制失败已复制
示例:
$ CREATE TABLE ( id INT PRIMARY KEY, name VARCHAR(25), age INT )点击复制复制失败已复制
- 在定义完所有列之后指定主键
语法规则如下:
[CONSTRAINT <约束名>] PRIMARY KEY [字段名]点击复制复制失败已复制
示例:
$ CREATE TABLE ( id INT PRIMARY KEY, name VARCHAR(25), age INT, PRIMARY KEY(id) )点击复制复制失败已复制
注意:
两种写法仅仅是写法上的区别,不会有任何本质上的不同。
多字段联合主键
主键由多个字段联合组成,语法规则如下:
PRIMARY KEY [字段1,字段2,……,字段n]点击复制复制失败已复制
示例:
$ CREATE TABLE ( id INT PRIMARY KEY, name VARCHAR(25), school VARCHAR(50), age INT, PRIMARY KEY(name,school) )点击复制复制失败已复制
外键约束
外键用来在两个表的数据之间建立链接,可以是一列或者多列。一个表可以有一个或多个外键。外键对应的是 参照完整性
,可以为空值,若不为空,则每一个外键值必须等于另一个表中主键的某个值。
外键:
表中的一个字段,可以不是本表的主键,但必须对应另外一个表的主键。外键的主要作用是保证数据引用的完整性。定义外键后,不允许删除在另一个表中具有关联关系的行。
主表(父表):
对于两个具有关联关系的表而言,相关联字段中主键所在的那个表就是主表。
从表(字表):
对于两个具有关联关系的表而言,相关联字段中外键所在的那个表就是从表。
语法规则:
[CONSTRAINT <外键名>] FOREIGN KEY 字段名1[,字段名2,……] REFERENCES <主表名> 主键列1[,主键列2,……]点击复制复制失败已复制
外键名为定义的 外键约束的名称
,一个表中不能有相同名称的外键。 字段名表示从表需要添加外键约束的字段列。 主表名即被从表外键所依赖的表的名称 主键列表示主表中定义的主键字段或者字段组合。
示例:
先创建一个部门表:
$ CREATE TABLE department ( id INT PRIMARY KEY, name VARCHAR(25) NOT NULL, location VARCHAR(50) );点击复制复制失败已复制
再创建一个员工表:
$ CREATE TABLE employee ( id INT PRIMARY KEY, name VARCHAR(25) NOT NULL, department_id INT, salary FLOAT, CONSTRAINT fk_employee_department FOREIGN KEY(department_id) REFERENCES department(id) );点击复制复制失败已复制
注意
子表的外键必须关联父表的主键,且关联字段的数据类型必须匹配。
非空约束
非空约束
(Not Null Constraint)指字段的值不能为空。
语法规则如下:
字段名 数据类型 NOT NULL点击复制复制失败已复制
示例:
$ CREATE TABLE ( id INT PRIMARY KEY, name VARCHAR(25) NOT NULL, school VARCHAR(50), age INT )点击复制复制失败已复制
唯一性约束
唯一性约束
(Unique Constraint)要求添加该约束的列字段的值唯一,允许为空,但只能出现一个空值。唯一约束可以确保一列或者几个列不出现重复值。
- 在定义完列之后直接指定唯一约束
语法规则如下:
字段名 数据类型 UNIQUE点击复制复制失败已复制
示例:
$ CREATE TABLE ( id INT PRIMARY KEY, name VARCHAR(25) UNIQUE, school VARCHAR(50), age INT )点击复制复制失败已复制
- 在定义完所有列之后直接指定唯一约束
语法规则如下:
[CONSTRAINT <约束名>] UNIQUE(<字段名>)点击复制复制失败已复制
示例:
$ CREATE TABLE ( id INT PRIMARY KEY, name VARCHAR(25), school VARCHAR(50), age INT, CONSTRAINT STH UNIQUE(name) )点击复制复制失败已复制
默认约束
默认约束
(Default Constraint)指定某列的默认值。
语法规则如下:
字段名 数据类型 DEFAULT 默认值点击复制复制失败已复制
示例:
$ CREATE TABLE ( id INT PRIMARY KEY, name VARCHAR(25), school VARCHAR(50) DEFAULT '默认学校', age INT )