首页 > 代码库 > Mysql 基础 高级查询
Mysql 基础 高级查询
在西面内容中 car 和 nation 都表示 表名
1.无论 高级查询还是简单查询 都用 select.. from..语句 from 后面 加表名 可以使一张表也可以是多张表 表和表之间用逗号隔开
2. 简单查询和高级查询 不是 独立的 高级查询里面 同样可以用到 简单查询
3.简单查询与复杂查询的联系: 简单查询里面 后面的条件 未知时 需要用另一个 查询来代替 这样就变成了高级查询
4.链接查询 和 联合查询的区别:1. 链接查询 连接两张以上的表 输出时 显示在一张表里 ; 联合查询 以另一张表为条件 只输出 一张表的内容
联合查询时 注意 相关查询 : 子查询 和父查询 的关系 父查询 的条件 时子查询 子查询的条件同样引用子查询
2.相同点 关联在一起时 表示必须建立外键关系;
一.链接查询
1.链接查询 对结果集列的扩展
select*from 表名
查询多张表 查询结果 在一张表中显示
select * from info,nation #形成笛卡尔积 缺点 查询速度慢(产生大量冗余数据)
select * from 表1名, 表1名where 表1名.列名=表2名.列名
select * from info,nation where info.code=nation.code
select info.code, info. name, birthday from info,nation where info.code=nation.code
因为 birthday 在两张表里 没有重复 所以可以直接写 (比如简单查询里面)
select * from info join nation on info.nation=nation.code
二.联合查询 union
select 列名,列名 from 表1名
union
select 列名,列名 from 表2名
三. 子查询(查询效率高 重要)
父查询 : 外层查询
子查询: 里层查询
子查询 查询出的结果作为父查询的条件
- 无关子查询
子查询和父查询没有关系 子查询可以单独执行
父查询:select *from info where nation=()
子查询: select code from nation where name=’汉族’
select *from info where nation=(select code from nation where name=’汉族’)
②.查询系列名为‘宝马5系’的所有汽车信息
select * from car where brand=(select brand_code from brand where brand_name=‘宝马5系‘)
- 相关子查询
子查询在执行的时候 和父查询有关系 子查询不能单独执行
1.查询汽车表中 油耗小于平均油耗的所有汽车信息
父查询: 汽车的信息: select * from car where oil<平均油耗
子查询: 平均油耗; select avg(oil) from car where brand =该系列
select * from car as a where oil<(select avg(oil) from car as b where b.brand=a.brand)
Mysql 基础 高级查询