数据库的约束(mysql)

数据库的约束(mysql)

1)约束概念:
为表中字段定义相关的数据存储限制条件

2)约束分类:

a. 主键约束:primary key
b. 外键约束: foreign key
c. 唯一约束: unique
d. 非空约束: not null
e. 默认约束: default
f. 检查约束: check(mysql不支持,oracle支持)

3)约束定义

a.创建表语法里面定义约束
b.修改表语法里面定义约束

4)创建表约束

Create table 表名(
  列名 数据类型 约束,
  列名 数据类型 约束,
  列名 数据类型 约束
)

–主键约束:唯一不可以重复;且不能为空
create table mds_user(
u_id int primary key,
u_name char(20)
)

–外键约束(foreign key)
–父表和子表在关系上的定义
–规则:父表必须有主键,子表里面会创建一个字段,这个字段就是外键。而这个外键是关联父表主键。

–外键约束定义

CREATE TABLE school( -- 父表
  school_id INT PRIMARY KEY,
  school_name CHAR(20)
)

CREATE TABLE teacher( -- 子表
  teacher_id INT PRIMARY KEY,
  teacher_name CHAR(20),
  school_id INT, -- 外键一定是在子表里面
  FOREIGN KEY(school_id) REFERENCES school(school_id)
)
--下面这一句是查询语句
SELECT school_name, teacher_name FROM school, teacher
WHERE school.`school_id` = teacher.`school_id`

–外键需要注意事项
1)不能直接删除父表 drop table 父表
2)如果父表数据已经引用子表里面,则不能直接删除父表数据 delete from 父表
3)先删除子表数据,然后才能删除父表的数据

– 唯一约束

CREATE TABLE mds_user(
  u_id INT PRIMARY KEY,
  u_name CHAR(20) UNIQUE -- 唯一约束 
)
-- 非空约束
CREATE TABLE mds_user(
  u_id INT PRIMARY KEY,
  u_name CHAR(20) UNIQUE, -- 唯一约束 
  u_address CHAR(50) NOT NULL -- 非空约束
)

-- 默认约束
CREATE TABLE mds_user(
  u_id INT PRIMARY KEY,
  u_name CHAR(20) UNIQUE, -- 唯一约束 
  u_address CHAR(50) NOT NULL, -- 非空约束
  u_sex CHAR(2) DEFAULT '男'
)

– 可以在一个列上面定义多个约束

CREATE TABLE mds_product(
  p_id INT PRIMARY KEY,
  p_name CHAR(50) NOT NULL DEFAULT '华为手机'
)

5)通过alter命令来操作约束
– 添加主键约束

Alter table 表名 add primary key(字段)
SHOW KEYS FROM mds_user -- 查看表里面的键
ALTER TABLE mds_user ADD PRIMARY KEY(u_id);

– 删除主键约束

Alter table 表名 drop primary key

ALTER TABLE mds_user DROP PRIMARY KEY

– 添加外键约束

Alter table 表名 add constraint 约束名 foreign key(子表_字段) references 父表名(父表_字段)
CREATE TABLE school( -- 父表
  school_id INT PRIMARY KEY,
  school_name CHAR(20)
)

CREATE TABLE teacher( -- 子表
  teacher_id INT PRIMARY KEY,
  teacher_name CHAR(20),
  school_id INT -- 外键一定是在子表里面
)

ALTER TABLE teacher ADD CONSTRAINT fk_teacher FOREIGN KEY(school_id) REFERENCES school(school_id);

– 删除外键约束

Alter table 表名 drop foreign key 约束名

ALTER TABLE teacher DROP FOREIGN KEY fk_teacher

– 添加非空约束
– 如果数据库里面已经有数据,则必须去检查字段里面是否含有null,如果有null,则非空约束不能添加成功

Alter table teacher modify 字段 数据类型 not null

ALTER TABLE teacher MODIFY teacher_name CHAR(20) NOT NULL;
ALTER TABLE teacher MODIFY teacher_name CHAR(20) NULL;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值