15-mysql -- 创建表时添加《列级约束》《表级约束》

约束分类

六大约束:
1 not null:非空,用于保证字段值不为空
2 default:默认,保证字段有默认值
3 primary key:主键,保证字段值具有唯一性,且非空
4 unique :唯一键,用于保证该字段的值具有唯一性,可以为空
5 check:检查约束(mysql中不支持)
6 foreign key:外键,用于限制两个表的关系,用于保证该字段的值必须来自主表的关联列的值

添加约束的时机:
1 创建表时
2 修改表时

约束的添加分类:
1 列级约束:六大约束语法上都支持,但外键约束没有效果
2 表级约束:除了非空、默认,其他都支持

添加列级约束

CREATE TABLE stuInfo(
	id INT PRIMARY KEY,#主键
	stuName VARCHAR(20) NOT NULL,#非空
	gender CHAR(1) CHECK (gender='男' OR '女'),#检查
	seat INT UNIQUE,#唯一
	age INT DEFAULT 18#默认值
	majorId INT REFERENCES major(id)#外键,这种写法无效,只能在表级约束中添加
);

添加表级约束

语法:在各个字段的最后面添加 constraint 约束名 约束类型

CREATE TABLE stuInfo(
	id INT,
	stuname VARCHAR(20),
	gender CHAR(1),
	seat INT,
	age INT,
	majorId VARCHAR(20),
	
	CONSTRAINT pk PRIMARY KEY(id),#主键
	CONSTRAINT uq UNIQUE(seat),#唯一键
	#constraint ck check(gender='男' or gender='女'),#检查
	CONSTRAINT fk_stuInfo_major FOREIGN KEY(majorId) REFERENCES jobs(job_id)#外键
);

也可以将constraint关键字省略

CREATE TABLE stuInfo(
	id INT,
	stuname VARCHAR(20),
	gender CHAR(1),
	seat INT,
	age INT,
	majorId VARCHAR(20),
	
	PRIMARY KEY(id),#主键
	UNIQUE(seat),#唯一键
	#constraint ck check(gender='男' or gender='女'),#检查
	FOREIGN KEY(majorId) REFERENCES jobs(job_id)#外键
);

通用的写法:主键、唯一、不为空等在列级约束中添加,外键在表级约束中添加

CREATE TABLE stuInfo(
	id INT PRIMARY KEY,
	stuname VARCHAR(20) NOT NULL,
	gender CHAR(1),
	seat INT UNIQUE,
	age INT DEFAULT 18,
	majorId VARCHAR(20),

	FOREIGN KEY(majorId) REFERENCES jobs(job_id)#外键
);

主键vs唯一

		保证唯一性	是否允许为空  一个表中可否有多个	是否允许组合
主键  		√			×			至多有1个			可以,但不推荐
唯一		√			√			可以有多个			可以,但不推荐

猜你喜欢

转载自blog.csdn.net/weixin_40719943/article/details/106797902