约束和策略
1.主键
primary key
用来标识唯一记录,每个表只能有一个主键,值需非空且唯一。
建表添加主键(三种方式):
CREATE TABLE stu1(
id int primary key,
name varchar(10)
);
CREATE TABLE stu2(
id int,
name varchar(10),
primary key(id)
);
CREATE TABLE stu3(
id int,
name varchar(10),
);
ALTER TABLE stu3 ADD CONSTRAINT stu_pk primary key(id);
删除主键:
ALTER TABLE stu DROP primary key;
主键自增策略:auto_increment
必须加在整数类型的列后。
CREATE TABLE stu1(
id int primary key auto_increment,
name varchar(10)
);
ALTER TABLE stu MODIFY id int auto_incrrement
修改初始值:
ALTER TABLE 表名 ATUOINCREMENT = 起始值
截断表:truncate
truncate table 表名
DELETE和TRUNCATE对于主键自增策略的区别
DELETE 删除表中的数据,但不重置AUTO_INCREMENT的值。
2.非空约束
NOT NULL
CREATE TABLE stu1(
id int ,
name varchar(10) NOT NULL
);
CREATE TABLE stu2(
id int ,
name varchar(10)
);
ALTER TABLE stu2 MODIFY name varchar(20) NOT NULL
3.唯一约束
UNIQUE
添加方式:
CREATE TABLE stu1(
id int ,
name varchar(10) UNIQUE
);
CREATE TABLE stu2(
id int ,
name varchar(10)
);
ALTER TABLE stu2 ADD CONSTRAINT stu_unq UNIQUE(name)
删除方式
ALTER TABLE stu2 DROP INDEX stu_unq
4.缺省(默认值)约束
DEFAULT
添加方式:
CREATE TABLE stu1(
id int ,
name varchar(10) DEFAULT '张三'
);
CREATE TABLE stu2(
id int ,
name varchar(10)
);
ALTER TABLE stu2 CHANGE COLUMN name name varchar(20) DEFAULT '张三';
删除方式:
ALTER TABLE stu2 CHANGE COLUMN name name varchar(20) DEFAULT null;
5.外键约束
一张表中的某个字段引用另一个表的主键。
主表: 约束别人的表
副表/从表: 使用别人的数据,被约束的表
添加方式:
[CONSTRAINT] [外键约束名称] FOREIGN KEY(外键字段名) REFERENCES 主表名(主键字段名)
alter table 从表名 add constraint [约束名] foreign key(外键列) reference 主表(主表主键列)
CREATE TABLE stu1(
id int primary key auto_increment,
name varchar(10)
course_id int
CONSTRAINT stu_courseid_ref_course_id_fk FOREIGN KEY(course_id) REFERENCES course(id)
);
CREATE TABLE stu2(
id int primary key auto_increment,
name varchar(10)
course_id int
);
ALTER TABLE stu2 ADD CONSTRAINT stu_coureid_ref_course_id_fk FOREIGN KEY(course_id) REFERENCE course(id)
6.外键的级联操作
谨慎用级联操作
ON UPDATE CASCADE ON DELETE CASCADE