MySQL数据库(三)

一、表结构修改

表结构修改(alter)
1.修改表名:alter table tb_name rename to new_name;
2.修改字段名:alter table tb_name change name new_name data_type;
3.修改字段类型:ALTER TABLE tb_name MODIFY field_name data_type;
4.添加字段:ALTER TABLE tb_name ADD [COLUMN] field_name data_type;
5.删除字段:ALTER TABLE tb_name DROP [COLUMN] field_name;

二、约束条件

约束条件
约束是一种限制,通过对表中的数据做出限制,来确保表中数据的完整性,唯一性
在这里插入图片描述

默认约束(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)
);
自动编号,和主键组合使用,一个表里面只能有一个自增长
auto_increment 要求用在主键上

外键约束(foreign key)
保持数据的一致性,我有的你一定有, 你没有的, 我绝对没有
1.B表中的id_b字段,只能添加 id_a中已有的数据。
2. A表中id_a 被参照的数据, 不能被修改和删除。
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)
);

三、表关系

选课系统(E-R图)

在这里插入图片描述

一对一关系(学生详情)
举例,学生表中有学号、姓名、学院,但学生还有些比如电话,家庭住址等比较私密的信息,这些信息不会放在学生表当中,会新建一个学生的详细信息表来存放。
这时的学生表和学生的详细信息表两者的关系就是一对一的关系,因为一个学生只有一条详细信息。用主键加主键的方式来实现这种关系。
#建立详细学生表:
create table student_details(
id int primary key,
sex varchar(20) not null,
age int,
address varchar(20) comment ‘家庭住址’,
parents varchar(20),
home_num varchar(20),
foreign key (id) references student(s_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) #外键
);
insert into department values(1,‘外语学院’),(2,‘计算机学院’);
insert into student values(1,‘佳能’,2),(2,‘lucky’,1);

多对多关系(学生选课)
举例,学生要报名选修课,一个学生可以报名多门课程,一个课程有很多的学生报名,那么学生表和课程表两者就形成了多对多关系。
对于多对多关系,需要创建中间表实现。
#建立课程表:
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
);
insert into cours values (1, ’python编程’), (2, ’大学英语’), (3, ‘音乐鉴赏’);
insert into select values(1,3); 表示学号为一的同学选择了音乐鉴赏这门课程

总结
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43993089/article/details/86442950