码迷,mamicode.com
首页 > 数据库 > 详细

mysql中的约束

时间:2021-04-26 13:16:40      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:update   for   drop   mil   操作   bsp   dex   alter   rem   

## 约束

 

* 概念:对表中的数据进行限定,保证数据的正确性、有效性和完整性。

* 分类:

1. 主键约束:primary key

2. 非空约束:not null

3. 唯一约束:unique

4. 外键约束:foreign key

 

* 非空约束:not null

1. 创建表时添加约束

CREATE TABLE stu(

id INT,

NAME VARCHAR(20) NOT NULL -- name为非空

);

2. 创建表完后,添加非空约束

alter table stu modify name varchar(20) not null;

3. 删除name的非空约束

alter table stu modify name varchar(20);

* 唯一约束:unique,值不能重复

1. 创建表时,添加唯一约束

CREATE TABLE stu(

id INT,

phone_number VARCHAR(20) UNIQUE -- 添加了唯一约束

);

* 注意mysql中,唯一约束限定的列的值可以有多个null

 

-- 删除唯一约束

-- alter table stu modify phone_number varchar(20);-- 无效

alter table stu drop index phone_number;

 

-- 在创建表后,添加唯一约束

alter table stu modify phone_number varchar(20) unique;

* 主键约束:primary key

1. 注意:

1. 含义:非空且唯一

2. 一张表只能有一个字段为主键

3. 主键就是表中记录的唯一标识

2. 再创建表时,添加主键约束

CREATE TABLE stu(

id INT PRIMARY KEY, -- 给id添加主键约束

NAME VARCHAR(20)

);

3. 删除主键

-- 错误 alter table stu modify id int;

alter table stu drop primary key;

4. 创建完表后,添加主键

alter table stu modify id int primary key;

5. 自动增长:

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

 

2.在创建表时,添加主键约束,并且完成主键自增长

CREATE TABLE stu(

id INT PRIMARY KEY AUTO_INCREMENT,

NAME VARCHAR(20)

);

 

3. 删除自动增长

alter table stu modify id int;

4. 添加自动增长

alter table stu modify id int auto_increment;

* 外键约束:foreign key ,让表与表产生关系,从而保证数据的正确性。

1. 在创建表时,可以添加外键

* 语法:

create table 表名(

......

外键列

constraint 外键名称 foreign key (外键列名称(任意))references 主表名称

(主表列名称)

);

例:

CREATE TABLE department(

id INT PRIMARY KEY AUTO_INCREMENT,

dep_name VARCHAR(20)

);

CREATE TABLE employee(

id INT PRIMARY KEY AUTO_INCREMENT,

NAME VARCHAR(20),

age INT,

dep_id INT, -- 外键对应主表的主键

CONSTRAINT emp_dept_fk FOREIGN KEY (dep_id) REFERENCES

department(id)

);

INSERT INTO department VALUES(NULL,‘研发部‘),(NULL,‘销售部‘);

INSERT INTO employee (NAME,dep_id) VALUES (‘张‘,1);

INSERT INTO employee (NAME,dep_id) VALUES (‘张1‘,1);

INSERT INTO employee (NAME,dep_id) VALUES (‘张2‘,2);

INSERT INTO employee (NAME,dep_id) VALUES (‘张3‘,2);

INSERT INTO employee (NAME,dep_id) VALUES (‘张4‘,2);

INSERT INTO employee (NAME,dep_id) VALUES (‘张5‘,1);

INSERT INTO employee (NAME,dep_id) VALUES (‘张6‘,1);

2. 删除外键

alter table 表名 drop foreign key 外键名称;

3. 创建表之后,添加外键

alter table 表名 add constraint 外键名称 foreign key (外键字段名称)

references 主表名称(主表列名称);

4. 级联操作

1. 添加级联操作

语法:alter table 表名 add constraint 外键名称 foreigh key (外键字段名称)

references 主表名称(主表列名称)on update cascade on delete cascade;

2. 分类:

1. 级联更新:on update cascade

2. 级联删除: on updata cascade

 

mysql中的约束

标签:update   for   drop   mil   操作   bsp   dex   alter   rem   

原文地址:https://www.cnblogs.com/mrmrwjk/p/14697812.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!