MySQL-约束(主键..)

本文介绍了SQL数据库中主键的规则(不允许重复且非空)、唯一性的应用(包括UNIQUE约束和默认值),外键关联的设置,复合主键的概念,以及自增长属性的使用和管理。通过实例展示了如何在MySQL中实现这些特性。
摘要由CSDN通过智能技术生成

主键

# 主键

CREATE TABLE t17
	(id INT PRIMARY KEY,
	`name` VARCHAR(32),
	email VARCHAR(32));

INSERT INTO t17
	VALUES(1,'ybj','ybj@163.com');

-- 主键不能重复且不能为空null
INSERT INTO t17
	VALUES(1,'cyt','cyt@163.com'); -- 主键重复无法添加

-- 一张表最多只有一个主键,但可以是复合主键(id+name)
-- 复合主键要满足都相同才无法添加,也就是同样的id和name
CREATE TABLE t18
	(id INT,
	`name` VARCHAR(32),
	email VARCHAR(32),
	PRIMARY KEY(id,`name`));
DESC t18

UNIQUE

# unique独特的
CREATE TABLE t17
	(id INT UNIQUE, -- 表示id列不可以重复
	`name` VARCHAR(32),
	email VARCHAR(32));

-- unique如果没有指定not null,则可以为null
-- unique + not nall 类似 主键primary key
-- 一张表可以有多个unique

外键

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

# foreign key外键

-- 主表,外键所连的列必须primary key或者unique修饰
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));

DESC my_class
DESC my_stu

INSERT INTO my_class
	VALUES(100,'java'),(200,'web');
INSERT INTO my_stu
	VALUES(1,'tom',100)
INSERT INTO my_stu
	VALUES(2,'ybj',200)
INSERT INTO my_stu
	VALUES(2,'cyt',300) -- 外键约束,添加失败,没有300班级

SELECT * FROM my_class
SELECT * FROM my_stu

check

# check mysql5.7还不支持check,只做语法校验
-- check就是限制你添加的数据范围

CREATE TABLE t23
	(id INT PRIMARY KEY, 
	`name` VARCHAR(32) NOT NULL DEFAULT '',
	sex VARCHAR(6) CHECK (sex IN('man','woman')),
	sal DOUBLE CHECK (sal BETWEEN 1000 AND 2000));

INSERT INTO t23
	VALUES(1,'tom','m',1500)
	
SELECT * FROM t23

自增长

在这里插入图片描述

在这里插入图片描述

# 自增长
-- 一般和主键配合使用,单独使用需要配合unique
-- 如果直接指定值,就按指定值,但后面的自增长就按指定值之后的值
CREATE TABLE t24
	(id INT PRIMARY KEY AUTO_INCREMENT,
	`name` VARCHAR(32));
	
INSERT INTO t24
	VALUES(NULL,'jack')

SELECT * FROM t24

INSERT INTO t24
	VALUES(NULL,'tom')
	
INSERT INTO t24
	(`name`) VALUES ('cyt')

ALTER TABLE t24 AUTO_INCREMENT = 10; -- 修改自增长从10开始,默认从1

INSERT INTO t24
	(`name`) VALUES ('ybj')
  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值