使用主键约束
主键又称主码,是表中一列或多列的组合。主键约束要求主键列的数据唯一,并且不允许为空。主键能够唯一地标识表中的一条记录,可以结合外键来定义不同数据表之间的关系,并且可以加快数据库查询的速度。主键和记录之间的关系如同身份证和人之间的关系是一一对应的。主键分为两种类型,单字段主键和多字段联合主键。
定义的方式也分为两种,一种是在定义列的同时指定主键,一种是完成所有列之后指定主键
CREATE TABLE tr_user
(
id INT(11) PRIMARY KEY,
name VARCHAR(25),
dept_id INT(11),
salary FLOAT
)
#或者
CREATE TABLE tr_user
(
id INT(11),
name VARCHAR(25),
dept_id INT(11),
salary FLOAT,
PRIMARY KEY(id)
)
#定义联合主键的时候为
CREATE TABLE tr_user
(
id INT(11),
name VARCHAR(25),
dept_id INT(11),
salary FLOAT,
PRIMARY KEY(id,name)
)
使用外键约束
外键用来在两个表的数据之间建立连接,它可以是一列或多列,一张表可以有一个或多个外键。外键对应的是参照完整性,一个表的外键可以是空值,若不为空值,则每一个外键值必须等于另一张表中主键的某个值。
外键是表中的一个字段,它可以不是本表的主键,但对应另外一张表的主键。外键的主要作用是保证数据引用的完整性,定义外键后,不允许删除在另一张表中具有关联关系的行。
====================================
2016.7.30验证,外键关联主表的字段可以不是主键
====================================
主表:对于两个具有关联关系的表,相关联字段中主键所在的表是主表。
子表:对于两个具有关联关系的表,相关联字段中外键所在的表是子表。
创建外键的语法规则:
[CONSTRAINT <外键名>] FOREIGN KEY 字段名1 [,字段名2,...]
REFERENCES <主表名> 主键列1 [,主键列2,...]
#创建一个部门表
CREATE TABLE tr_dept
(
id INT(11) COMMENT '部门编号',
name VARCHAR(25) COMMENT '部门名称',
location VARCHAR(50) COMMENT '部门位置',
PRIMARY KEY(id)
);
#创建一个员工表
CREATE TABLE tr_user
(
id INT(11) COMMENT '员工id',
name VARCHAR(25) COMMENT '员工姓名',
deptId INT(11) COMMENT '部门编号',
salary FLOAT COMMENT '薪水',
PRIMARY KEY(id)
CONSTRAINT fk_user1 FOREIGN KEY(deptId) REFERENCES tr_dept(id)
);
执行成功后,在表tr_user上添加了名为fk_user1的外键约束,外键的名称为deptId,其依赖表tr_deot的主键id。
关联指的是在关系型数据库中,相关表之间的联系。它是通过相容或相同的属性或属性组来表示。子表的外键必须关联父表的主键,且关联字段的数据类型必须匹配,如果类型不一样,则创建字表时,就会出现错误。
使用非空约束
非空约束指字段的值不能为空。对于使用了非空约束的字段,如果再添加数据时没有指定值,数据库系统就会报错。
创建方式: 字段名 数据类型 not null。
使用唯一性约束
唯一性约束,要求该列唯一,允许为空,但只能出现一次。保证一列或几列不出现重复值。
也有两种语法方式:
字段名 数据类型 UNIQUE;
[CONSTRAINT <约束名>] UNIQUE(<字段名>[,<字段名>,...]);
PRIMARY KEY 跟UNIQUE的区别在于,PRIMAEY只能有一个而UNIQUE可以多个,且主键值不能为空。
使用默认约束
指定某一列的默认值,如果新增一条记录时,没有给值,就会使用默认值
使用语法 : 字段名 数据类型 DEFAULT 默认值
使用表的属性值自动增加
在数据库的应用中,经常希望每次插入新纪录时,系统自动生成字段的主键值自动加1,这个时候就可以通过表主键添加AUTO_INCREMENT来实现。一张表只能有一个字段使用AUTO_INCREMENT,且该字段必须是主键的一部分
使用语法为:字段名 数据类型 AUTO_INCREMENT