MySQL 约束

概念

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

分类

1、主键约束 :primary key
2、非空约束 : not null
3、唯一约束 :unique
4、外键约束 : foreign key

一、主键约束

1、非空且唯一
2、一张表只能有一个字段为主键
3、主键就是表中的唯一标识

4、创建表时添加主键约束

-- 创建表时设置主键
CREATE TABLE stu(
	id INT PRIMARY KEY,-- 编号设置为主键
	NAME VARCHAR(10)
);

5、删除主键
-- 删除主键
ALTER TABLE stu DROP PRIMARY KEY;

创建完表后添加主键

-- 创建完表后添加主键
ALTER TABLE stu MODIFY id INT PRIMARY KEY;

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

4.1在创建表时添加主键约束,并完成主键自动增长
CREATE TABLE stu(
	id INT PRIMARY KEY AUTO_INCREMENT,-- 编号设置为主键
	NAME VARCHAR(10)
);

4.2自动添加1

INSERT INTO stu VALUE(NULL,'ccc');

4.3删除和添加自动增长

-- 删除自动增长
ALTER TABLE stu MODIFY id INT;
-- 添加自动增长‘
ALTER TABLE stu MODIFY id INT AUTO_INCREMENT;

二、非空约束

1、创建表时添加约束

CREATE TABLE stu1(
	id INT,
	NAME VARCHAR(20) NOT NULL -- name 为非空
	
);

2、删除非空约束

-- 删除name非空约束

ALTER TABLE stu1 MODIFY NAME VARCHAR(20);


3、创建表后添加非空约束

-- 创建表后添加非空约束
ALTER TABLE stu1 MODIFY NAME VARCHAR(20) NOT NULL;

三、唯一约束

某一列的值不能重复
唯一约束可以有null值,但只有一条记录为null值


1、在创建表是添加唯一约束

-- 在创建表是添加唯一约束
CREATE TABLE stu(
	id INT,
	phone_number VARCHAR(11) UNIQUE-- 手机号 唯一值
);

2、删除唯一约束

-- 删除唯一约束
ALTER TABLE stu DROP INDEX phone_number;

3、创建表之后添加唯一约束
-- 创建表之后添加唯一约束
ALTER TABLE stu MODIFY phone_number VARCHAR(11) UNIQUE;


四、外键约束

1、创建表时可以添加外键,让表与表产生关系,从而保证数据的正确性。

-- 使用数据库db1
USE db1;

-- 创建部门表(id,dep_name,dep_location)
CREATE TABLE department(
	id INT PRIMARY KEY AUTO_INCREMENT,
	dep_name VARCHAR(20),
	de_location VARCHAR(20)
);

-- 创建员工表(id,name,age,dep_id)
CREATE TABLE employee(
	id INT PRIMARY KEY AUTO_INCREMENT,
	NAME VARCHAR(10),
	age INT,
	dep_id INT, -- 外键对应主表的主键
	
	-- 创建外键的语法
	-- CONSTRAINT 外键名 FOREIGN KEY (外键列名)REFERENCE 外键所在的表(外键所在的表的主键)
	CONSTRAINT emp_dept_fk FOREIGN KEY (dep_id) REFERENCES department(id)	
);

-- 添加数据

-- 添加两个部门
INSERT INTO department VALUE(NULL,'研发部','广州'),
			    (NULL,'销售部','深圳');
	
-- 添加员工
INSERT INTO employee(NAME,age,dep_id)VALUE('张三',20,1);
INSERT INTO employee(NAME,age,dep_id)VALUE('李四',21,1);
INSERT INTO employee(NAME,age,dep_id)VALUE('黄五',20,1);
INSERT INTO employee(NAME,age,dep_id)VALUE('陈六',20,2);
INSERT INTO employee(NAME,age,dep_id)VALUE('吴七',21,2);
INSERT INTO employee(NAME,age,dep_id)VALUE('王八',18,2);

-- 查询数据
SELECT *FROM employee;
SELECT *FROM department;


2、删除外键

-- 删除外键
ALTER TABLE employee DROP FOREIGN KEY emp_dept_fk;


3、创建表之后添加外键

-- 创建表之后添加外键
ALTER TABLE employee ADD CONSTRAINT emp_dept_fk FOREIGN KEY (dep_id) REFERENCES department(id);

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

稻田里展望者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值