您的位置:首页 > 数据库 > MySQL

09--MySQL自学教程:多表查询之内连接、外连接以及【子查询】

2017-05-22 17:41 936 查看

1.为什么要拆表?

去除冗余数据


2.表与表之间的关系



一对一
比如
人和身份证
QQ和QQ密码
一对多(多对一)
比如:学生和成绩的关系
多对多
比如:老师和学生的关系


3.多表查询



使用的表格demo1student、demo2和demo3数据如下:







1)合并结果集



sql语句

-- 合并结果集  union和union all
-- union 默认会去除完全一样的数据
SELECT * FROM demo2 UNION SELECT * FROM demo3;
-- union all 不会去除重复数据
SELECT * FROM demo2 UNION ALL SELECT * FROM demo3;


查询结果:

1)– union 默认会去除完全一样的数据

SELECT * FROM demo2 UNION SELECT * FROM demo3;




2)– union all 不会去除重复数据

SELECT * FROM demo2 UNION ALL SELECT * FROM demo3;




2)连接查询



a.笛卡尔积



b.内连接inner



sql语句

-- 内连接
-- 将demo2和demo1student中分数相同的数据取出来合并在一起
SELECT * FROM demo2 INNER JOIN demo1student ON demo2.score=demo1student.score;
-- 将demo2和demo1student中id相同的数据取出,并且只显示这些信息:demo1student.id,demo1student.name,demo1student.age,demo1student.gender
-- 因为demo2和demo1student有3个id相同,所以会查询出三个数据
SELECT demo1student.id,demo1student.name,demo1student.age,demo1student.gender FROM demo2 INNER JOIN demo1student ON demo2.id=demo1student.id;


查询结果:

1)– 将demo2和demo1student中分数相同的数据取出来合并在一起

SELECT * FROM demo2 INNER JOIN demo1student ON demo2.score=demo1student.score;




2)– 将demo2和demo1student中id相同的数据取出,并且只显示这些信息:demo1student.id,demo1student.name,demo1student.age,demo1student.gender

– 因为demo2和demo1student有3个id相同,所以会查询出三个数据

SELECT demo1student.id,demo1student.name,demo1student.age,demo1student.gender
FROM demo2 INNER JOIN demo1student ON demo2.id=demo1student.id;




c.外连接outer



select * from table1 left/right outer join table2 on 条件



d.自然连接natural



对比内连接和自然连接来说明:自然连接

自然连接可以自动去除重复这里是id

sql语句

-- 自然连接natural
SELECT * FROM demo2 INNER JOIN demo3; -- 内连接
SELECT * FROM demo2 NATURAL JOIN demo3;  -- 自然连接


查询结果



3)子查询



sql语句

-- 子查询
-- 语句含义:查出分数比id=4学生的年龄与分数和大的学生信息
SELECT * FROM demo1student WHERE score>(SELECT age+score FROM demo1student WHERE id=4);

-- 这里只是为了说明子查询怎么用,出的这个示例本身没有任何意义。


查询结果:



4.查询的实际应用(见下节)

地址:MySQL数据查询应用(实战)(一)http://blog.csdn.net/baidu_37107022/article/details/72629784

MySQL数据查询应用(实战)(二)http://blog.csdn.net/baidu_37107022/article/details/72630044
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐