MySQL数据库

MYSQL——约束

2019-06-25  本文已影响0人  So_ProbuING

约束

概念

约束是对表中的数据进行限定,从而保证数据的正确性、有效性和完整性

分类

非空约束

添加方式

  1. 在创建表的时候添加约束
CREATE TABLE stu1(
                            id INT,
                            name varchar(20) NOT NULL -- 非空约束
);

2.创建表后通过修改表添加非空约束

ALTER TABLE stu1 MODIFY name varchar(20) NOT NULL;

唯一约束

被unique修饰的列的值是不能重复的

创建表

CREATE TABLE stu1(
                            id INTEGER,
                            phone_number varchar(20) UNIQUE -- 手机号唯一约束
);

在mysql中 null值不属于重复的值,可以有多个Null

修改表

ALTER TABLE stu1 DROP INDEX phone_number;

主键约束

概念

创建表时,添加主键约束

CREATE TABLE stu1(
                    id integer PRIMARY KEY, -- 主键约束
                    name varchar(20)
);

创建完表后,添加主键

ALTER TABLE stu1 MODIFY id INTEGER PRIMARY KEY;

删除主键

ALTER TABLE stu1 DROP PRIMARY KEY;

主键约束——自动增长

基本概念

如果某一列是数值类型的,使用auto_increment 可以来完成值得自动增长

创建

CREATE TABLE stu1(id INTEGER PRIMARY KEY AUTO_INCREMENT,
                                        NAME VARCHAR(20)
);

自动增长只和上一条记录有关

ALTER TABLE stu1 MODIFY id INTEGER AUTO_INCREMENT;

删除自增长

ALTER TABLE stu1 MODIFY id INTEGER;
主键无法被删除,但是可以删除自增长属性

外键约束

语法

CREATE TABLE 表名(
... 常规列创建
外键列
constraint 外键名称 foreign key (外键列名称) references 主表名称(主表列名称)
);

### 创建表时指定外键
-- 创建部门表
create table department(
id int primary key auto_increment,
dep_name varchar(20),
dep_location varchar(20)
);
-- 创建员工表(id,name,age,dep_id)
-- 多方,从表
create table employee(
id int primary key auto_increment,
name varchar(20),
age int,
dep_id int, -- 外键对应主表的主键
CONSTRAINT emp_dept_id_fk FOREIGN KEY (dep_id) REFERENCES department(id) -- 添加外键约束 外键为部门表的id字段
);

删除外键

ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;

ALTER TABLE employee DROP FOREIGN KEY emp_dept_id_fk;

创建表之后添加外键

ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称);

ALTER TABLE employee ADD CONSTRAINT emp_dept_id_fk FOREIGN KEY (dep_id) REFERENCES department(id);

外键可以为NULL 但是不可以为不存在的外键值

级联操作

级联操作需要添加外键的时候设置级联操作

设置级联更新

ALTER TABLE employee ADD CONSTRAINT emp_dept_id_fk FOREIGN KEY (dep_id) REFERENCES department(id) 
ON UPDATE CASCADE;

设置级联删除

ALTER TABLE employee ADD CONSTRAINT emp_dept_id_fk FOREIGN KEY (dep_id) REFERENCES department(id) 
ON UPDATE CASCADE ON DELETE CASCADE;

设置级联删除后,外键关联的数据被删除后,关联被删除的对应值也会跟着删除

上一篇 下一篇

猜你喜欢

热点阅读