标签:create 自动 思路 style 情况下 电话 报名 sel 多对多
默认约束(default)
CREATE TABLE tb( id int default ‘a’ , name varchar(20) );
插入数据的时候,如果没有明确为字段赋值,
则自动赋予默认值
在没有设置默认值的情况下,默认值为NULL
非空约束(not null)
CREATE TABLE tb( id int not null, name varchar(20) );
限制一个字段的值不能为空,
Insert的时候必须为该字段赋值
空字符不等于NULL
唯一约束(unique key)
CREATE TABLE tb( id int unique key, name varchar(20) );
限制一个字段的值不重复,
该字段的数据不能出现重复的
确保字段中值的唯一
主键约束(primary key)
CREATE TABLE tb( id int primary key, name varchar(20) );
通常每张表都需要一个主键来体现唯一性
每张表里面只能有一个主键
主键 = 非空 + 唯一
自增长约束(auto_increment)
CREATE TABLE tb( id int auto_increment, name varchar(20) );
指定由哪个位置开始自增:
CREATE TABLE tb( id int auto_increment, name varchar(20) )auto_increment=100;
自动编号,和主键组合使用,
一个表里面只能有一个自增长
auto_increment 要求用在主键上
外键约束(foreign key)
CREATE TABLE a( id_a int primary key, name varchar(20) );
保持数据的一致性
我有的你一定有, 你没有的, 我绝对没有
CREATE TABLE b( id_b int primary key, name varchar(20), foreign key (id_b) references a(id_a) );
1. B表中的id_b字段,只能添加 id_a中已有的数据。
2. A表中id_a 被参照的数据, 不能被修改和删除
那么到这里,约束就这些啦,我们写简单的表结构游戏;
举例,学生表中有学号、姓名、学院,但学生还有些比如电话,家庭住址等比较私密的信息,这些信息不会放在学生表当中,会新建一个学生的详细信息表来存放。
这时的学生表和学生的详细信息表两者的关系就是一对一的关系,因为一个学生只有一条详细信息。用主键加主键的方式来实现这种关系。
# 学生表(一对一字段)
create table student( id int primary key auto_increment, name varchar(20) not null );
# 学生详细信息表(一对一字段)
create table student_datailes( id_x int primary key, sex varchar(20), age int, height int not null, foreign key (id_x) references student(id) );
通常情况下,学校中一个学院可以有很多的学生,而一个学生只属于某一个学院。
学院与学生之间的关系就是一对多的关系,通过外键关联来实现这种关系。
# 学院表(一对多字段关联)
create table department( d_id int primary key auto_increment, # 学院id d_name varchar(20) not null # 学院名 );
# 学生表(一对多字段关联)
create table student( s_id int primary key auto_increment, # 学生id s_name varchar(20) not null, # 学生名字 dept_id int not null, # 所属学院 id foreign key(dept_id) references department(d_id) #外键 );
多对多关系(学生选课)
学生要报名选修课,一个学生可以报名多门课程,一个课程有很多的学生报名,那么学生表和课程表两者就形成了多对多关系。
对于多对多关系,需要创建中间表实现。
#建立课程表:
create table cours( cours_id int primary key auto_increment, cours_name varchar(20) not null );
# 选课表 (中间表)
create table select( s_id int, #用来记录学生id cours_id int, #用来记录 课程id primary key(s_id,cours_id), # 联合主键 foreign key(s_id) references student(s_id), # 关联学生id foreign key(cours_id) references cours(cours_id) # 关联 课程id );
那么 现在 :学院表,学生表,课程表,选课表, 4张表已经关联在一起了,我们可以插入参数了。
以上做为学习总结,思路有点乱。
标签:create 自动 思路 style 情况下 电话 报名 sel 多对多
原文地址:https://www.cnblogs.com/lixy-88428977/p/9557371.html