mysql常见约束及代码示例(上)

基础语法

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name(
	字段 1 数据类型 [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT]
	 [约束定义语句] [COMMENT 'string'],
	字段 2 数据类型[NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT]
	 [约束定义语句] [COMMENT 'string'] ,...,
	字段 n 数据类型[NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT]
	 [约束定义语句] [COMMENT 'string'],
	[[constraINT 约束名] 约束定义语句]
)
[TABLE_options] [select_statement];

使用默认值约束

语法

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] 表名(
	字段名 1 数据类型 [NOT NULL | NULL] [DEFAULT 默认值],
	字段名 2 数据类型 [NOT NULL | NULL] [DEFAULT 默认值],
	……
)

设置时间戳默认值

CREATE TABLE t1(
	id INT,
	date1 TIMESTAMP
);

INSERT INTO t1(id) VALUES(1);
INSERT INTO t1(id) VALUES(2);
SELECT * FROM t1; 
)

唯一性约束

语法``

[CONSTRAINT 约束名] UNIQUE [(字段名)]

学生表

create table if not exists Student
(StuID char(8),
StuName varchar(10),
StuSex char(2),
StuBirthday date,
Native varchar(20) comment '籍贯',
National char(6) comment '民族',
Telephone char(11),
ClassID char(10)
);

示例

为学生表中的 Telephone 字段增加唯一键约束

ALTER TABLE student ADD CONSTRAINT uq_tel UNIQUE(telephone);

非空约束

语法

```sql
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] 表名(
	字段名 1 数据类型 [NOT NULL | NULL] [DEFAULT 默认值],
	字段名 2 数据类型 [NOT NULL | NULL] [DEFAULT 默认值],
	……
)

示例

修改学生表 student,将学生姓名修改为不允许为空值。

ALTER TABLE student MODIFY StuName VARCHAR(10) NOT NULL;

检查约束

语法

[CONSTRAINT 约束名] CHECK(检查约束的表达式)

示例一

创建点名表,包括的字段有学号、课程号、出勤次数、缺勤次数、迟到次数。其中,学号和课
程是组合主键;出勤次数、缺勤次数、迟到次数这三个字段都是大于等于 0 的检查约束。

CREATE TABLE RollCall(
	StuID CHAR(8),
	CourseID CHAR(8),
	AttendNumber INT check(AttendNumber>=0),
	AbsenceNumber INT check(AbsenceNumber>=0),
	LateNumber INT check(LateNumber>=0),
	PRIMARY KEY(StuID,CourseID)
);

示例二

修改教师表,为教师的性别字段增加检查约束,性别只能是‘男’或‘女’。

ALTER TABLE Teacher ADD CHECK(TeacherSex IN('男','女'))
发布了19 篇原创文章 · 获赞 9 · 访问量 873

猜你喜欢

转载自blog.csdn.net/qq_43761222/article/details/104876756