第一步,先介绍约束的概念以及常见的六种约束:
第一步,先介绍约束的概念以及常见的六种约束:
在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的timestamp时间戳详解及2038问题 2023-07-26
- MYSQL 数据库时间字段 INT,TIMESTAMP,DATETIME 性能效率的比较介绍 2023-12-19
- Oracle中分析函数over()的用法及说明 2023-07-23
- SQL SERVER 里的错误处理(try catch) 2024-01-18
- Pycharm使用Gitee解读 2023-07-27
- MySQL与Oracle 差异比较之四条件循环语句 2024-01-19
- MySQL查询优化之查询慢原因和解决技巧 2023-12-22
- 使用 Python 查找本月的最后一天的方法汇总 2023-07-27
- Java连接Redis及使用 2023-09-12
- PostgreSQL实现按年、月、日、周、时、分、秒的分组统计 2023-07-21