⭐️前言⭐️
本文主要介绍MySQL数据库中一些常用的约束,以及表的设计方法。
博客主页: 【如风暖阳】
精品Java专栏【JavaSE】、【备战蓝桥】、【JavaEE初阶】、【MySQL】、【数据结构】
欢迎点赞 收藏 ⭐留言评论 私信必回哟本文由 【如风暖阳】 原创,首发于 CSDN
博主将持续更新学习记录收获,友友们有任何问题可以在评论区留言
博客中涉及源码及博主日常练习代码均已上传码云(gitee)、GitHub
创建表时,指定某列不为空
drop table if exists student;
create table student(id int not null ,name varchar(20));
指定某列为唯一的、不重复的。
drop table if exists student;
create table student(id int unique ,name varchar(20));
指定插入数据时,name列为空,默认值unknown
drop table if exists student;
create table student(id int unique ,name varchar(20) default 'unknown');
指定某列为主键,作为标识需要保证唯一性(主键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;
外键将子表与父表关联起来,且被关联的父表的列必须是primary key或者unique
语法:
foreign key (字段名) references 父表(列);
比如两张表:学生表和班级表
drop table if exists classes;
create table classes (id int primary key auto_increment,name varchar(20));
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这条记录,则无法直接删除)。
在项目实际生产时,我们可能面对的是多个实体,所以在着手建立数据库之前,需要先根据实体的关系来完成表的设计,所以引出来下边的三大范式。
学生表和课程表
一个学生可以选多门课程,一个课程可以被多个学生选择
两个表多对多时常常需要第三个中间表来做关联。
⭐️最后的话⭐️
总结不易,希望uu们不要吝啬你们的哟(^U^)ノ~YO!!如有问题,欢迎评论区批评指正