第一步,先介绍约束的概念以及常见的六种约束:
第一步,先介绍约束的概念以及常见的六种约束:
在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数据权限的实现详情 2022-08-31
- 深入聊一聊springboot项目全局异常处理那些事儿 2023-12-03
- Redis键过期和键迁移 2023-09-13
- redis分布式应用 2023-09-12
- MySQL8.0.28安装教程详细图解(windows 64位) 2023-07-26
- 详解SQLAlchemy框架使用手册 2023-07-27
- Oracle CDB管理实现多租户管理功能 2023-07-23
- PostgreSQL自增主键用法及在mybatis中的使用教程 2023-07-21
- Django的性能优化实现解析 2023-12-11
- postgresql的jsonb数据查询和修改的方法 2023-07-20
