服务器相关(5):mysql约束

本文详细介绍了数据库中的六种约束类型:主键(primary key)确保唯一标识记录,非空(not null)要求字段不能为空,唯一(unique)限制字段值的唯一性,外键(foreign key)建立表间关联,检查(check)限制字段值范围,自增长(auto increment)自动为字段赋递增数值。通过示例展示了这些约束在实际操作中的应用。
摘要由CSDN通过智能技术生成

-- 约束primary key、not null、unique、foreign key、check、auto_increment

一、主键(primary key)

CREATE TABLE email_tab(
id INT PRIMARY KEY,
`name`VARCHAR(32),
email VARCHAR(32)
);
-- 主键列的值不可以重复
INSERT INTO email_tab
	VALUES(1,'jack','jack@163.com')
INSERT INTO email_tab
	VALUES(2,'tom','tom@163.com')
INSERT INTO email_tab
	VALUES(2,'ch','ch@163.com')

在这里插入图片描述

二、非空(not null)

当插入数据时,必须提供数据

三、唯一(unique)

CREATE TABLE unique_tab(
id INT UNIQUE,     --unique不可重复,可以有多个null
`name`VARCHAR(32),
email VARCHAR(32)
);
INSERT INTO unique_tab
	VALUES(1,'jack','jack@163.com')
INSERT INTO unique_tab
	VALUES(1,'tom','tom@163.com')

在这里插入图片描述

四、外键(foreign key)

-- 创建主表 班级表
	CREATE TABLE my_class(
	id INT PRIMARY KEY, -- 班级编号
	`name`VARCHAR(32) NOT NULL DEFAULT''
	);
	-- 创建从表 学生表
	CREATE TABLE my_stu(
	id INT PRIMARY KEY, -- 学生编号
	`name`VARCHAR(32) NOT NULL DEFAULT'',
	class_id INT, -- 学生所在的班级编号
	-- 指定外键关系
	FOREIGN KEY(class_id)REFERENCES my_class(id)
	);
	
	-- 添加数据
	INSERT INTO my_class
		VALUES (100,'java'),(200,'web');
	SELECT * FROM my_class;
	
	INSERT INTO my_stu
		VALUES (1,'tom',100);
	INSERT INTO my_stu
		VALUES (2,'jack',200);
	INSERT INTO my_stu
		VALUES (3,'ch',300);  --班级不存在,插入数据失败

在这里插入图片描述

五、check

创建表
	CREATE TABLE check_tab(
	id INT PRIMARY KEY,
	`name`VARCHAR(32),
	sex VARCHAR(6) CHECK (sex IN('man','women')),
	sal DOUBLE CHECK (sal >1000 AND sal<2000)
	);
	添加数据测试
	INSERT INTO check_tab
		VALUES (1,'ch','man',1100);
	SELECT * FROM check_tab;

六、自增长(auto_increment)

CREATE TABLE zizengzhang_tab(
		id INT PRIMARY KEY AUTO_INCREMENT, --自增长
		email VARCHAR(32) NOT NULL DEFAULT'',
		`name`VARCHAR(32) NOT NULL DEFAULT''
	
	);
	
	-- 测试自增长
	INSERT INTO zizengzhang_tab
		VALUES(NULL,'jack@qq.com','jack');
	SELECT * FROM zizengzhang_tab;
	INSERT INTO zizengzhang_tab
		VALUES(NULL,'tom@qq.com','tom');
	SELECT * FROM zizengzhang_tab;

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值