MYSQL的约束

MYSQL的约束

说明:本文是在观看黑马57期视频做的笔记。

1、 约束的概念

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

2、约束的分类

主键约束:primary key
非空约束:not null
唯一约束:unique
外键约束:foreign key

2.1 非空约束——not null

1.添加非空约束

--1、创建表时添加约束
CREATE TABLE stu(
id INT,
NAME VARCHAR(20)  NOT NULL
);

--2、创建表结束之后添加非空约束
ALTER TABLE stu MODIFY NAME VARCHAR(20) NOT NULL ;

2、删除非空约束

--删除name的非空约束
--1、修改列
ALTER TABLE stu MODIFY NAME VARCHAR(20);
DESC stu;
SELECT * FROM stu;
--插入非空数据时,不会报错
INSERT INTO stu (id,NAME) VALUES (1,'wang');
INSERT INTO stu (id,NAME) VALUES (2,DEFAULT);
2.2 唯一约束——unique

```sql
--1、创建时添加唯一约束
CREATE TABLE stu(id INT,
phone_number VARCHAR(20) UNIQUE
);

INSERT INTO stu (id,phone_number) VALUES (1,'18855128920');
INSERT INTO stu (id,phone_number) VALUES (3,'18855128920');
INSERT INTO stu (id,phone_number) VALUES (2,'18867808920');

--2、删除phone_number的唯一约束
ALTER TABLE stu drop index phone_number;

--3、添加phone_number的唯一约束
ALTER TABLE stu MODIFY phone_number VARCHAR(20) UNIQUE;
SELECT * FROM stu;

注意:

  • 唯一约束所在的列可以添加null,但只可以添加一个。
  • 添加唯一约束之前确保之前插入的数据没有重复。
2.3主键约束——primary key

注意:

  • 含义:唯一且非空 .
  • 一张表只能有一个主键。
  • 主键是表中记录的唯一标识

1、在创建表时添加主键

#主键约束
--1、在创建表时添加主键约束
CREATE TABLE stu(id INT PRIMARY KEY,
phone_number VARCHAR(20) NOT NULL
);
INSERT INTO stu(id, phone_number) VALUES (1,'18855128920');
INSERT INTO stu(id, phone_number) VALUES (2,'18855120920');
#报错,主键唯一:Duplicate entry '2' for key 'PRIMARY'
INSERT INTO stu(id, phone_number) VALUES (2,'18855128340');
#报错,主键不为空:Column 'id' cannot be null
INSERT INTO stu(id, phone_number) VALUES (NULL,'18855128340');

--2、删除主键
ALTER TABLE stu DROP PRIMARY KEY;
#没有报错
INSERT INTO stu(id, phone_number) VALUES (2,'18855128340');
INSERT INTO stu(id, phone_number) VALUES (NULL,'18855128340');

--3、在创建完表之后添加主键
CREATE TABLE stu(id INT ,
phone_number VARCHAR(20) NOT NULL
);
ALTER TABLE stu MODIFY id INTO PRIMARY KEY;

INSERT INTO stu(id, phone_number) VALUES (1,'18855128920');
INSERT INTO stu(id, phone_number) VALUES (2,'18855120920');
#报错,主键唯一:Duplicate entry '2' for key 'PRIMARY'
INSERT INTO stu(id, phone_number) VALUES (2,'18855128340');
#报错,主键不为空:Column 'id' cannot be null
INSERT INTO stu(id, phone_number) VALUES (NULL,'18855128340');
SELECT * FROM stu;

2、删除主键primary key

--2、删除主键
ALTER TABLE stu DROP PRIMARY KEY;
#没有报错
INSERT INTO stu(id, phone_number) VALUES (2,'18855128340');
INSERT INTO stu(id, phone_number) VALUES (NULL,'18855128340');

自动增长:
1、概念
使用auto_increment完成值得自动增长。
2、创建表时添加在主键primary key 之后。

CREATE TABLE stu(id INT PRIMARY KEY AUTO_INCREMENT, phone_number VARCHAR(20) NOT NULL );
3、删除自动增长

ALTER TABLE stu MODIFY id VARCHAR(20);

2.4 外键约束——foreign key

1、外键约束

  • 在从表中与主表主键对应的那一列
  • 主表: 一方,用来约束别人的表
  • 从表: 多方,被别人约束的表

2、添加外键

方式一:

ALTER TABLE 从表 ADD CONSTRAINT [外键约束名称] FOREIGN KEY (外键字段名) ==REFERENCES ==主表(主键字段名);

方式二:
CONSTRAINT [外键约束名称] FOREIGN KEY(外键字段名) REFERENCES 主表名(主键字段名)

3、删除外键

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

4、代码记录

#创建部门表(id, dep_name, dep_location)
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_depid_fk FOREIGN KEY (dep_id)  REFERENCES department(id)
#constraint emp_depid_fk foreign key (dep_id) references department(id)
);
#删除 employee 表的 emp_depid_fk 外键
ALTER TABLE employee DROP FOREIGN KEY emp_depid_fk;

#在 employee 表情存在的情况下添加外键
ALTER TABLE employee ADD CONSTRAINT emp_depid_fk
FOREIGN KEY (dep_id) REFERENCES department(id);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值