约束
概念
对表中的数据进行限定,保证数据的正确性,有效性和完整性;
分类
-
主键约束 PRIMARY KEY
非空且唯一,一张表只能有一个字段是主键,主键就是表中的唯一标识。
CREATE TABLE stu( id INT PRIMARY KEY, phone VARCHAR(20) UNIQUE );
表格创建后,删除主键
ALTER TABLE stu DROP PRIMARY KEY;
表格创建后,添加主键
ALTER TABLE stu MODIFY id INT PRIMARY KEY;
-
非空约束 NOT NULL
CREATE TABLE stu( id INT, name VARCHAR(10) NOT NULL );
表格创建后,删除非空约束
ALTER TABLE stu MODIFY name VARCHAR(10);
表格创建后,添加非空约束
ALTER TABLE stu MODIFY name VARCHAR(10) NOT NULL;
-
唯一约束 UNIQUE
CREATE TABLE stu( id INT, phone VARCHAR(20) UNIQUE );
表格创建后,删除唯一约束
ALTER TABLE stu DROP INDEX phone;
表格创建后,增加唯一约束
ALTER TABLE stu MODIFY name VARCHAR(10) UNIQUE;
-
外键约束 FOREIGN KEY
创建部门表CREATE TABLE department( id INT PRIMARY KEY auto_increment, name VARCHAR(10) NOT NULL );
向表内添加数据
INSERT INTO department VALUES(NULL,'技术部'); INSERT INTO department VALUES(NULL,'产品部');
创建人员表,并使用外键关联部门表
CREATE TABLE users( id INT PRIMARY KEY auto_increment, name VARCHAR(10) NOT NULL, age INT NOT NULL, dem_id INT NOT NULL, -- 外键关联部门表 CONSTRAINT dem_user_fk FOREIGN KEY (dem_id) REFERENCES department(id) );
向表内添加数据
INSERT INTO users VALUES(NULL,'进击的煎饼果子',20,1); INSERT INTO users VALUES(NULL,'进击的山竹',20,2); INSERT INTO users VALUES(NULL,'进击的菠萝',20,1);
删除外键关联
ALTER TABLE users DROP FOREIGN KEY dem_user_fk;
添加外键
ALTER TABLE users ADD CONSTRAINT dem_user_fk FOREIGN KEY (dem_id) REFERENCES department(id);
添加外键,设置级联更新,设置级联删除
ALTER TABLE users ADD CONSTRAINT dem_user_fk FOREIGN KEY (dem_id) REFERENCES department(id) ON UPDATE CASCADE ON DELETE CASCADE;
-
自动增长
和主键约束一起使用CREATE TABLE stu( id INT PRIMARY KEY AUTO_INCREMENT, phone VARCHAR(20) UNIQUE );
表格创建后,删除自动增长
ALTER TABLE stu MODIFY id INT;
表格创建后,添加自动增长
ALTER TABLE stu MODIFY id INT AUTO_INCREMENT;