20常见约束 ——MySQL

-- 常见约束
/*
含义:用于限制表中的数据,保证数据的准确和可靠性

分类:
	1.not null  				 		非空
	2.default="默认值"   				默认,保障字段有默认值
	3.primary key  			 			主键,保证字段唯一且非空
	4.unique    		                唯一约束,保证字段具有唯一性,但是可以为空(只允许一个为空)
	5.check>80  				 		检查约束【MySQL中不支持】,输入的值必须大于80
	6.foreign key references        外键,用于限制两个表的关系。用于保证该字段的值必须来自主表的关联列的值
																	在从表中添加外键约束,用于引用主表中某列的值

primary key 和 unique的对比
					保证唯一性	是否允许为空    一个表中允许的个数      是否允许组合
		主键       1           0									1个										1
		唯一       1           1									n个										1

外键:
		1.要求在从表设置外键关系
		2.从表的外键列的类型和主表的关联列的类型要求一致或兼容,名称五要求
		3.主表的关联列必须是一个key(一般是主键或唯-键)
		4.插入数据时,先插如主表,在插入从表
		5.删除数据时,先删除从表,再删除主表


添加约束的时机:(在添加数据之前)
	1.在创建表时添加
	2.在修改表时添加

约束的添加分类:
	1.列级约束:(6大约束在语法上都支持,但是外键约束没有效果)
	2.表级约束:(除了not null ,default,其他都支持)
*/

-- CREATE TABLE 表名(
-- 	字段名 字段类型 约束
-- )


#创建表时添加约束
-- 1.添加列级约束
/*
CREATE TABLE test1(
	id int PRIMARY KEY, #主键约束
	sname VARIANCE(20) NO null, #非空约束
	gender CHAR(1) CHECK(gender="男" or gender="女"), #检查约束(但是在MySQL没有效果)
	seat int unique, #唯一约束
	age int default 18,#默认约束
	majorId INT foreign key references major1(id)#外键约束,majorId只能是major表中的id值(但是在MySQL没有效果)
);
CREATE table major1(
	id int primary key,
	majorName VARIANCE(20)  
);
*/
-- 2.添加表级约束
-- 语法:constraint 【自定义的约束名】 约束类型(字段名)
/*
CREATE TABLE test2(
	id int,
	sname VARIANCE(20),
	gender CHAR(1),
	seat int,
	age int,
	majorId INT,

	constraint pk primary key(id,sname),#主键约束(id,sname为一个组合主键)
	constraint uq unique(seat),#唯一约束
	constraint ck check(gender="男" or gender="女"),#检查约束(MySQL不支持)
	constraint fk_tes2_major2 foreign key(majorId) references major2(id)#外键约束,majorId只能是major表中的id值(但是在MySQL没有效果)

);
CREATE table major2(
	id int primary key,
	majorName VARIANCE(20)  
);
*/


#修改表时添加约束
/*
CREATE TABLE test3(
	id int,
	sname VARIANCE(20),
	gender CHAR(1),
	seat int,
	age int,
	majorId INT
)
CREATE table major3(
	id int primary key,
	majorName VARIANCE(20)  
);
-- 1.添加非空约束
#给sname添加not null 约束
-- ①列级约束
alter table test3 modify column sname varchar(20) not null;
-- ②表级约束
alter table test3 add not null(aname);

#给majorId添加外键
alter table test3 add foreign key(majorId) references major3(id);


#删除约束
-- 修改表时删除not null约束
alter table test3 modify column sname varchar(20);
-- 修改表时删除主键约束
alter table test3 modify column id varchar(20);
alter table test3 drop primary key;
-- 修改表时删除外键约束
alter table test3 drop foreign key 外键名;

*/










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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值