1、主键约束:
三个特点:非空、唯一、可以被引用。
1).创建表时指定主键的两种方式:
方式一:
CREATE TABLE stu (
`sid` INT PRIMARY KEY,
`sname` VARCHAR (20),
`age` INT,
`gender` VARCHAR (10)
)ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT='学生表';
方式二:CREATE TABLE stu (
`sid` INT,
`sname` VARCHAR (20),
`age` INT,
`gender` VARCHAR (10),
PRIMARY KEY(`sid`)
)ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT='学生表';
2).修改表时指定主键
ALTER TABLE stu ADD PRIMARY KEY(`sid`);
3).删除主键
ALTER TABLE stu DROP PRIMARY KEY;
2、主键自增长
1).创建表时指定主键自增长
CREATE TABLE stu (
`sid` INT AUTO_INCREMENT PRIMARY KEY,
`sname` VARCHAR (20),
`age` INT,
`gender` VARCHAR (10)
)ENGINE=INNODB AUTO_INCREMENT=10000 DEFAULT CHARSET=utf8 COMMENT='学生表';
2).修改表时设置主键自增长(设置自增长时,该字段必须是个key,如果不是则需要添加)
ALTER TABLE stu CHANGE sid sid INT AUTO_INCREMENT PRIMARY KEY;
3).修改表时删除主键自增长
ALTER TABLE stu CHANGE sid sid INT;
3、非空约束
某列不能设置为NULL值,所以要对该列添加非空约束。
CREATE TABLE stu(
`sid` INT AUTO_INCREMENT PRIMARY KEY,
`sname` VARCHAR(20) NOT NULL,
`age` INT,
`gender` VARCHAR (10)
)ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT='学生表';
4、唯一约束
某些列不能设置重复的值,所以可以对该列添加唯一约束。
CREATE TABLE stu(
`sid` INT AUTO_INCREMENT PRIMARY KEY,
`sname` VARCHAR(20) NOT NULL UNIQUE,
`age` INT,
`gender` VARCHAR (10)
)ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT='学生表';
5、外键约束
外键用于关联另一张表,可以确定另一张表记录的字段,用于保持数据的一致性。比如:A表中的一个字段,是B表的主键,那他就可以是A表的外键。
特点:外键可以为空,可以重复,但是不能是主表中引用的字段没有的值。
特点:外键可以为空,可以重复,但是不能是主表中引用的字段没有的值。
1).创建表时指定外键
A表:
CREATE TABLE dept (
`deptno` INT PRIMARY KEY AUTO_INCREMENT,
`deptname` VARCHAR (50)
) ENGINE = INNODB DEFAULT CHARSET = utf8 COMMENT = '部门表' ;
B表:
CREATE TABLE emp(
`empno` INT PRIMARY KEY AUTO_INCREMENT,
`empname` VARCHAR(50) NOT NULL UNIQUE,
`deptno` INT NOT NULL,
CONSTRAINT fk_emp_dept FOREIGN KEY(deptno) REFERENCES dept(deptno)
)ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT='员工表';
2).修改表时指定外键
ALTER TABLE emp
ADD CONSTRAINT fk_emp_dept FOREIGN KEY (deptno) REFERENCES dept (deptno) ;