MySQL数据库约束与表的设计

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: 本文主要介绍MySQL数据库中一些常用的约束,以及表的设计方法。

1.数据库约束


1.1 约束类型


  • NOT NULL - 指示某列不能存储 NULL 值。
  • UNIQUE - 保证某列的每行必须有唯一的值。
  • DEFAULT - 规定没有给列赋值时的默认值。
  • PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
  • FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。


1.2 NULL约束


创建表时,指定某列不为空


drop table if exists student;
create table student(id int not null ,name varchar(20));


微信图片_20230111121249.png

1.3 UNIQUE:唯一约束


指定某列为唯一的、不重复的。

drop table if exists student;
create table student(id int unique ,name varchar(20));


微信图片_20230111121246.png

1.4 DEFAULT:默认值约束


指定插入数据时,name列为空,默认值unknown


drop table if exists student;
create table student(id int unique ,name varchar(20) default 'unknown');


微信图片_20230111121242.png

1.5 PRIMARY KEY:主键约束


指定某列为主键,作为标识需要保证唯一性(主键primary key其实就是unique和not null的结合)


drop table if exists student;
create table student(id int primary key ,name varchar(20));


微信图片_20230111121235.png

对于整数类型的主键,常搭配自增auto_increment来使用,默认每次加一。


drop table if exists student;
create table student(id int primary key auto_increment,name varchar(20));
insert into student values (null,'张三'),(null,'李四');
select * from student;


微信图片_20230111121232.png


1.6 FOREIGN KEY:外键约束


外键将子表与父表关联起来,且被关联的父表的列必须是primary key或者unique


语法:


foreign key (字段名) references 父表(列);

比如两张表:学生表和班级表


班级表classes:id为主键

drop table if exists classes;
create table classes (id int primary key auto_increment,name varchar(20));

学生表student:一个学生对应一个班级,一个班级对应多个学生。id为主键,classes_id为外键,关联班级表id。

drop table if exists student;
create table student (id int primary key auto_increment,name varchar(20),classes_id int,foreign key (classes_id) references classes(id));

必须保证学生表里的每个记录,班级id(classes_id)必须在班级表中存在;

也就是说父表(classes)对子表(student)产生了约束,同时子表也会对父表产生约束,在删除父表中的某条记录时,如果该记录被子表引用,也无法删除(比如在classes表中有班级id 3被子表student 中的某一个学生引用,则若想直接删除父表中3这条记录,则无法直接删除)。


2.表的设计


在项目实际生产时,我们可能面对的是多个实体,所以在着手建立数据库之前,需要先根据实体的关系来完成表的设计,所以引出来下边的三大范式。


2.1 一对一


人与其账户一对一


微信图片_20230111121227.png


微信图片_20230111121224.png

2.2 一对多

一个班级包含多个学生,但一个学生只能属于一个班级


微信图片_20230111121220.png

微信图片_20230111121217.png



2.3 多对多

学生表和课程表

一个学生可以选多门课程,一个课程可以被多个学生选择

两个表多对多时常常需要第三个中间表来做关联。

微信图片_20230111121214.png

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
4月前
|
存储 安全 关系型数据库
MySQL数据库约束条件概述及其重要性讨论。
正确地实现并管理好各类紧缩条件将直接影响到企业信息管理水平与服务质量,在当今大数据背景下更显得格外重要;任何设计师都需要深刻理解其原理与运作机晰承担起责任使得所托管资料安全稳固同时又具备良好伸缩灵活度迎合日益复杂商务需求变动.
190 11
|
NoSQL 关系型数据库 MySQL
2024Mysql And Redis基础与进阶操作系列(4-2)作者——LJS[含MySQL非空、唯一性、PRIMARY KEY、自增列/自增约束举例说明等详解步骤及常见报错问题对应的解决方法]
24MySQL非空、唯一性、PRIMARY KEY、自增列/自增约束举例说明等详解步骤及常见报错问题对应的解决方法(4-2) 学不会你来砍我!!!
|
关系型数据库 MySQL
MYSQL-多表操作-外键约束
MYSQL-多表操作-外键约束
|
关系型数据库 MySQL
MYSQL:约束(主键约束)
MYSQL:约束(主键约束)
|
存储 SQL 关系型数据库
【MySQL基础篇】MySQL约束语法
文章介绍了MySQL中表的约束概念,包括非空、唯一、主键、默认和外键约束,以及如何在创建和修改表时指定这些约束。外键约束用于保持数据的一致性和完整性,文章通过示例展示了添加、删除外键的语法,并讨论了不同的删除/更新行为,如CASCADE和SETNULL。
【MySQL基础篇】MySQL约束语法
|
关系型数据库 MySQL 数据处理
MySQL函数与约束
MySQL 提供了丰富的函数和强大的约束机制,用于数据处理和完整性维护。通过掌握这些工具,可以有效地管理和分析数据库中的数据,确保数据的一致性和准确性。无论是在日常数据查询中使用内置函数,还是在数据库设计中应用各种约束,都是确保数据库系统稳定、高效运行的关键。希望本文对您理解和应用 MySQL 函数与约束有所帮助。
186 1
|
存储 关系型数据库 MySQL
MySQL(条件约束)
为了校验数据,让数据的正确性能够得到保证,约束,能够引进更多的检查操作,但是也会增加系统的成本开销
|
Ubuntu 关系型数据库 MySQL
ubuntu使用aliyun源+mysql删除有外键约束的数据+查看特定目录的大小
ubuntu使用aliyun源+mysql删除有外键约束的数据+查看特定目录的大小
184 4
|
SQL 关系型数据库 MySQL
MySQL中外键的使用及外键约束策略
这篇文章讨论了MySQL中使用外键的重要性,包括外键的概念、不使用外键可能导致的问题、如何设置外键约束以及不同的外键约束策略(如CASCADE和SET NULL),并通过示例演示了这些概念。
MySQL中外键的使用及外键约束策略
|
存储 关系型数据库 MySQL
MySQL数据库基础:约束
约束是对数据库表中字段施加的规则,确保数据的正确性、有效性和完整性。主要分为非空约束、唯一约束、默认约束、主键约束和外键约束。非空约束禁止字段值为null;唯一约束确保字段值唯一,允许null值重复;默认约束设定默认值;主键约束结合非空与唯一约束,并可设为自增型;外键约束则通过关联其他表的主键,保证数据一致性。检查约束确保字段值满足特定条件。
279 1

热门文章

最新文章

推荐镜像

更多