第一步,先介绍约束的概念以及常见的六种约束:
第一步,先介绍约束的概念以及常见的六种约束:
在MySQL中,约束是对表中数据的限制,可以在创建表的过程中定义或者在表创建完成之后添加。六种常见数据库约束包括:
- PRIMARY KEY (主键)
- FOREIGN KEY(外键)
- UNIQUE(唯一)
- NOT NULL(非空)
- CHECK(检查)
- DEFAULT(默认)
主键的作用是唯一标识每张表内每一行数据,一个表只能有一个主键。外键是用来建立表之间关联的,从一张表中创建一个对应另一张表中主键的列即可。唯一约束是保证表中的某个列的值是唯一的,不与其他行重复。非空约束是保证表中某个列不为空。检查约束是保证表中某个列的值符合一定的条件。默认约束是当表中某个列的值未指定时,默认给这一列赋值。
第二步,分别对六种约束进行一一讲解:
主键约束的示例:可以创建一个students表,然后给这个表创建一个id列,然后使用PRIMARY KEY关键词将这个列设置为主键。示例代码:
CREATE TABLE students (
id INT NOT NULL AUTO_INCREMENT,
name varchar(255) NOT NULL,
age INT DEFAULT NULL,
PRIMARY KEY (id)
);
外键约束的示例:可以创建一个students和一个grades表来演示外键的示例。students表中的id列作为主键,grades表中有一个student_id列来与students表中的id列建立关联关系。示例代码:
CREATE TABLE students (
id INT NOT NULL AUTO_INCREMENT,
name varchar(255) NOT NULL,
age INT DEFAULT NULL,
PRIMARY KEY (id)
);
CREATE TABLE grades (
id INT NOT NULL AUTO_INCREMENT,
class varchar(255) NOT NULL,
grade INT DEFAULT NULL,
student_id INT NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (student_id) REFERENCES students(id)
);
唯一约束的示例:可以为students表添加一个unique索引,保证name列的值唯一。示例代码:
CREATE UNIQUE INDEX idx_unique_name ON students (name);
非空约束的示例:在students表中,可以让name列不允许为空。示例代码:
CREATE TABLE students (
id INT NOT NULL AUTO_INCREMENT,
name varchar(255) NOT NULL,
age INT DEFAULT NULL,
PRIMARY KEY (id)
);
检查约束的示例:在students表中,可以设置age列的值只允许为正整数。示例代码:
CREATE TABLE students (
id INT NOT NULL AUTO_INCREMENT,
name varchar(255) NOT NULL,
age INT DEFAULT NULL,
CHECK (age > 0),
PRIMARY KEY (id)
);
默认约束的示例:在students表中,如果不指定age列的值,则将age列的值设置为20。示例代码:
CREATE TABLE students (
id INT NOT NULL AUTO_INCREMENT,
name varchar(255) NOT NULL,
age INT DEFAULT 20,
PRIMARY KEY (id)
);
第三步,总结:
MySQL的六种约束各有不同的作用和应用场景,这些约束可以保证表中的数据存储的合法性和有效性,也可以使得表与表之间的关系更加紧密。实际开发中,我们根据需求选择合适的约束,并将其应用在相应的列上,以达到更好的数据约束和存储效果。
本文标题为:MySQL六种约束的示例详解(全网最全)
基础教程推荐
- MySQL删除数据库的方法举例 2023-08-06
- Mongodb 用户权限管理及配置详解 2023-07-16
- 让Redis突破内存大小的限制 2023-09-12
- ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY'解决方法 2023-02-06
- SpringSession通过Redis统计在线用户数量的实现代码 2023-07-13
- Mysql查询优化的一些实用方法总结 2024-01-03
- SQL Server存储过程生成insert语句实例 2024-02-12
- MySQL与Oracle 差异比较之四条件循环语句 2024-02-12
- 如何使用密码连接redis服务 2023-09-12
- CentOS7下安装MongoDB数据库过程 2023-07-15