一、什么是约束
约束英文:constraint
约束实际上就是表中数据的限制条件
二、约束作用
表在设计的时候加入约束的目的就是为了保证表中的记录完整和有效
比如name字段中要让其用户名不重复,这就需要添加约束。或者必须注册的时候需要添加邮箱等
三、约束种类
非空约束(not null)
唯一性约束(unique)
主键约束(primary key) PK
外键约束(foreign key) FK
检查约束(目前MySQL不支持、Oracle支持)
实例:创建表时候用的约束
CREATE TABLE `t_user` (
`Id` int(11) NOT NULL AUTO_INCREMENT, -- 自增
`name` varchar(18) NOT NULL unique, -- 唯一性约束
`password` varchar(18) NOT NULL,
PRIMARY KEY (`Id`)
) ENGINE=InnoDB AUTO_INCREMENT=1018 DEFAULT CHARSET=utf8;
emp | CREATE TABLE `emp` (
`empno` int(10) unsigned NOT NULL AUTO_INCREMENT,
`ename` varchar(15) DEFAULT NULL,
`job` varchar(10) DEFAULT NULL,
`mgr` int(10) unsigned DEFAULT NULL,
`hiredate` date DEFAULT NULL,
`sal` decimal(7,2) DEFAULT NULL,
`comm` decimal(7,2) DEFAULT NULL,
`deptno` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`empno`),
KEY `deptno` (`deptno`),
CONSTRAINT `emp_ibfk_1` FOREIGN KEY (`deptno`) REFERENCES `dept` (`deptno`)
ENGINE=InnoDB AUTO_INCREMENT=7935 DEFAULT CHARSET=utf8 |
emp | create table `emp` (
`empno` int(10) unsigned not null auto_increment,
`ename` varchar(15) default null,
`job` varchar(10) default null,
`mgr` int(10) unsigned default null,
`hiredate` date default null,
`sal` decimal(7,2) default null,
`comm` decimal(7,2) default null,
`deptno` int(10) unsigned default null,
primary key (`empno`),
key `deptno` (`deptno`),
constraint `emp_ibfk_1` foreign key (`deptno`) references `dept` (`deptno`)
engine=innodb auto_increment=7935 default charset=utf8 |