Mysql多表查询

来源:互联网 发布:王宝强判决结果 知乎 编辑:程序博客网 时间:2024/05/16 17:49

多表关联关系种类


1.一对一

例如   人与身份证

person表

字段 id  name

card表


字段 id number pid



2.一对多(最常见,开发中应用于最多的一种关系)


例如  员工与部门
emp
字段   empno ,ename  ,deptno
dept
字段   deptno   address dname



3.多对多(会产生一个中间表,用户来描述表与表之间的映射关系)


例如  教师与学生

teacher
id   name  
student
id   name  

ts 
id tid sid


多对多举例
create table teacher(id int primary key auto_increment,name varchar(20))create table student(id int primary key auto_increment,name varchar(20))create table ts(id int primary key auto_increment,tid int,sid int,constraint tid_fk foreign key(tid) references teacher(id),constraint sid_fk foreign key(sid) references student(id))insert into teacher(name) values('tom');insert into teacher(name) values('tony');insert into student(name) values('zhangsan');insert into student(name) values('lisi');insert into ts(tid,sid) values(1,1);insert into ts(tid,sid) values(1,2);insert into ts(tid,sid) values(2,2);


多表查询

l连接分类
•交叉连接
•内连接
•左外连接
•右外连接
•全连接
•自连接



多表查询时会产生笛卡尔积(简单说将两个表中所有字段相乘)
为了消除迪卡尔积,需要对表与表之间进行条件判断
比较常见,主外键等值判断。

在多表查询中我们首先要做的事情就是将迪卡尔积消除,
然后在根据具体的条件进行操作。




0 0
原创粉丝点击