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/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中左连接,右连接,内连接查询,以及与where之间关系
- IDEA连接mysql教程,以及出现java.lang.ClassNotFoundException: com.mysql.jdbc.Driver的解决办法
- MySQL中对表连接查询的简单优化教程
- MySQL中基本的多表连接查询教程
- mysql的左外连接, 右外连接以及内连接查询
- Java自学之路-Java基础教程-36:Java的数据库连接操作以及外部jar包导入
- MySQL教程-应用篇-连接查询
- MySQL中基本的多表连接查询教程
- 08--MySQL自学教程:DQL(数据库查询)字段控制查询、聚合函数、分组查询、limit(二)
- MySQL基础教程33-连接查询-内连接
- 连接数据库的步骤SQL Server 与mysql 以及一些数据库查询语句
- MySQL中基本的多表连接查询教程
- 史上最简单的 MySQL 教程(二十六)「连接查询(上)」
- 史上最简单的 MySQL 教程(二十七)「连接查询(下)」
- mysql 简单教程(一) ----数据库连接和简单查询
- Solr部署,连接mysql,实现模糊查询功能,以及按照距离排序功能