栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MySQL数据库约束与表的设计

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MySQL数据库约束与表的设计

⭐️前言⭐️

本文主要介绍MySQL数据库中一些常用的约束,以及表的设计方法。

博客主页: 【如风暖阳】
精品Java专栏【JavaSE】、【备战蓝桥】、【JavaEE初阶】、【MySQL】、【数据结构】
欢迎点赞  收藏 ⭐留言评论 私信必回哟

本文由 【如风暖阳】 原创,首发于 CSDN

博主将持续更新学习记录收获,友友们有任何问题可以在评论区留言

博客中涉及源码及博主日常练习代码均已上传码云(gitee)、GitHub


内容导读
  • MySQL数据库约束与表的设计
    • 1.数据库约束
      • 1.1 约束类型
      • 1.2 NULL约束
      • 1.3 UNIQUE:唯一约束
      • 1.4 DEFAULT:默认值约束
      • 1.5 PRIMARY KEY:主键约束
      • 1.6 FOREIGN KEY:外键约束
    • 2.表的设计
      • 2.1 一对一
      • 2.2 一对多
      • 2.3 多对多

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));

1.3 UNIQUE:唯一约束

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

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

1.4 DEFAULT:默认值约束

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

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

1.5 PRIMARY KEY:主键约束

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

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


对于整数类型的主键,常搭配自增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;

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 一对一

人与其账户一对一

2.2 一对多

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

2.3 多对多

学生表和课程表
一个学生可以选多门课程,一个课程可以被多个学生选择
两个表多对多时常常需要第三个中间表来做关联。


⭐️最后的话⭐️

总结不易,希望uu们不要吝啬你们的哟(^U^)ノ~YO!!如有问题,欢迎评论区批评指正

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1035465.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号