09--MySQL自学教程:多表查询之内连接、外连接以及【子查询】
2018-03-02 08:58
1006 查看
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
2
3
4
5
查询结果:
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
2
3
4
5
6
查询结果:
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; -- 自然连接1
2
3
查询结果
3)子查询
sql语句
-- 子查询 -- 语句含义:查出分数比id=4学生的年龄与分数和大的学生信息 SELECT * FROM demo1student WHERE score>(SELECT age+score FROM demo1student WHERE id=4); -- 这里只是为了说明子查询怎么用,出的这个示例本身没有任何意义。1
2
3
4
5
查询结果:
4.查询的实际应用(见下节)
地址:MySQL数据查询应用(实战)(一)http://blog.csdn.net/baidu_37107022/article/details/72629784MySQL数据查询应用(实战)(二)http://blog.csdn.net/baidu_37107022/article/details/72630044
相关文章推荐
- 09--MySQL自学教程:多表查询之内连接、外连接以及【子查询】
- 07--MySQL自学教程:DQL(Data Query Language:数据库查询语言)简介、基础查询、条件查询、模糊查询以及排序(一)
- 07--MySQL自学教程:DQL(Data Query Language:数据库查询语言)简介、基础查询、条件查询、模糊查询以及排序(一)
- MySQL中基本的多表连接查询教程
- MySQL中对表连接查询的简单优化教程
- navicate连接Linux下mysql慢,卡,以及mysql相关查询,授权
- MySQL中基本的多表连接查询教程
- 史上最简单的 MySQL 教程(二十六)「连接查询(上)」
- 史上最简单的 MySQL 教程(二十七)「连接查询(下)」
- MySQL中基本的多表连接查询教程
- mysql的关系以及连接查询
- 史上最简单的 MySQL 教程(二十六)「连接查询(上)」
- MySQL中对表连接查询的简单优化教程
- MySQL中基本的多表连接查询教程
- MySQL基础教程33-连接查询-内连接
- mysql的左外连接, 右外连接以及内连接查询
- mysql中左连接,右连接,内连接查询,以及与where之间关系
- Solr部署,连接mysql,实现模糊查询功能,以及按照距离排序功能
- MySQL中基本的多表连接查询教程
- MySQL基础教程34-连接查询-外连接