37、表之间存在的关系
一对一/一对多
多对多案例:学生选课,一个学生可以选修多门课,每门课也可以有多个学生选择,在多对多关系中,一般需要引入两个外键
多对多关系的建立方法
1、创建课程表
Create table course(cid int primary key auto_increment,cname varchar(30),stu_id varchar(30),stu_name);
2、创建学生表
Create table student(stu_id primary key auto_increment,stu_name varchar(30),majored-in-course varchar(30),cid int);
3、创建学生与选课关系表
Create table course_student_rel(
Cid int,
Stu_id int,
);
4、设置外键
Alter table course_student_rel add constraint fk_cid foreign key(cid) references course(cid);
Alter table course_student_rel add constraint fk_stu_id foreign key(stu_id) references student(stu_id);
38、多表查询
多表查询的步骤
1、合并结果集(union/union all)
合并结果集本质上就是把两个select语句的查询结果合并到一起
合并结果集有两种方式,分别是union和union all。使用union合并时会去除重复记录,而用union all合并时不会去除重复记录。
语法结构:
select*from 表1 union select from 表2;
select*from 表1 union all select from 表2;
注意:被合并的两张表其列数和列类型必须相同
2、连接查询
如果简单地使用select同时查询两张表,那么只会得到笛卡尔积