高级查询:

1.连接查询      指把2张表或者多张表之间做一个连接,所有数据放在一个表里显示。适用于有外键关系的2张表或多张表。如果没有加外键关系,但是这2张表有联系,也可以加连接查询。

select * from Info,Nation

形成笛卡尔积    第1张表有5条数据,第2张表有10条数据,显示出来的表就会有50条数据。

select * from Info,Nation where Info.nation=Nation.code    筛选符合条件的数据(info表里的nation和nation表里的code一样)

select Info.code,Info.name,Info.sex,Nation.name as '民族',Info.birthday from Info,Nation where Info.nation=Nation.code

(在表中显示info表和nation表中的Info表的code列,Info表的name列,Info表的sex列,Nation表的name列,并且把name显示为'民族',Info表的birthday列,同时要满足条件info中的nation值和nation表中的code值相等)

select * from Info join Nation on Info.nation=Nation.code

info表和nation表连接,后面是连接条件。

没有任何关系的表是无法连接的,能够连接的表肯定是有关系的,即使关系没有加。

2.联合查询

连接查询是扩展的表的列,增加列的数目。联合查询是对表的行扩展,增加行的列数。

select code,name from Info

union

select code,name from Nation

选择info表里的code列和name列,再选择nation表里的code列和name列,中间用union连接。两个表查询的列的数量一定要相等。

3.子查询

子查询也称里层查询。

子查询查询的结果作为父查询的条件

(1)无关子查询:子查询执行的时候和父查询没有关系。子查询可以单独执行,它在执行的时候和外层查询没有任何关系。

查民族为'汉族'的所有学生信息

select * from Info where nation=(select code from nation where name='汉族')

()里面的是内查询,查询出的结果作为外层查询的条件。

查询生产厂商为'一汽大众'的所有汽车信息

select * from car where brand=()

select brand_code from brand where prod_code=()

select prod_code from productor where prod_name='一汽大众'

select * from car where brand in(select brand_code from brand where prod_code=(select prod_code from productor where prod_name='一汽大众'))

查询顺序为:prod_code——brand_code——所有汽车信息。最外层的不能用=,因为括号里面可能出现多个值,所以要用in。如果很确定括号里面只有1个值,可以用=,不确定的可以用in。

(2)相关子查询

子查询在执行的时候需要用到父查询的内容

查询汽车表中,汽车油耗小于该系列平均油耗的所有汽车信息

select * from car where oil

select avg(oil) from car where brand =(该系列)

select * from car a where oil

把外层查询的表取名为a,里层的表取名为b,a和b是同一个表,但是为了区分外层和里层,取名a、b。里面的表在求平均油耗的时候系列代号应该等于外面的表的系列代号。a.brand取的不是所有的系列代号,因为外面的表先进行,当判断条件时无法继续进行,再进行里面的表,所以里面的表取的系列代号是外面的进行的系列代号的值,不是所有的系列代号。

MySQL列数不确定查询_MySQL的高级查询相关推荐

  1. mysql查询过程从客户端发送查询请求_MySQL查询过程和高级查询

    最近有个需求,要修改现有存储结构,涉及查询条件和查询效率的考量,看了几篇索引和HBase相关的文章,回忆了相关知识,结合项目需求,说说自己的理解和总结. 总体目录如下,上篇介绍了前3小节,分析了索引为 ...

  2. mysql 列换行 表设计 设计_MySql行转列、列转行

    现mysql中有一张表php_user表,表结构为: 表中数据有: 现在想查询出来不同学生的语数外成绩在一行显示,那么需要用到行转列的用法, 一.行转列 1.使用case...when....then ...

  3. mysql数据库实验3查询_mysql数据库(3)-查询

    数据库设计规范 查询 创建数据库.数据表 -- 创建数据库 create database python_test_1 charset=utf8; -- 使用数据库 use python_test_1 ...

  4. mysql子查询教行子查询_MySQL中列子查询与行子查询操作的学习教程

    MysqL 列子查询及 IN.ANY.SOME 和 ALL 操作符的使用MysqL 列子查询 列子查询是指子查询返回的结果集是 N 行一列,该结果通常来自对表的某个字段查询返回. 一个列子查询的例子如 ...

  5. mysql多表成绩查询_MySQL多表查询答案

    一.综合练习 1.1 init.sql文件内容 /* 数据导入: Navicat Premium Data Transfer Source Server : localhost Source Serv ...

  6. mysql离散查询_mySQL数据库数据查询操作详解

    查询数据: 简单查询: 1.查询所有数据: select * from 表名 #select * from info 查询所有列 2.查询指定列: select code,name from info ...

  7. mysql 三个表内连接查询_MySQL多表查询详解

    多表查询 1. 表与表之间的关系 <1> 一对一 用户表和身份信息表,用户表是主表 男人表.女人表 create table man( mid int primary key auto_i ...

  8. mysql 列换行 表设计 设计_mysql 列转行的技巧(分享)

    前言: 由于很多业务表因为历史原因或者性能原因,都使用了违反第一范式的设计模式.即同一个列中存储了多个属性值(具体结构见下表). 这种模式下,应用常常需要将这个列依据分隔符进行分割,并得到列转行的结果 ...

  9. mysql 同表子查询_MySQL 表子查询

    MySQL 表子查询 表子查询是指子查询返回的结果集是 N 行 N 列的一个表数据. MySQL 表子查询实例 下面是用于例子的两张原始数据表: article 表: aidtitlecontentu ...

最新文章

  1. 现代确认以约10亿美元收购波士顿动力 | AI日报
  2. Ubuntu Server 16升級到Ubuntu Server 18操作步驟
  3. Spring注解大全(示例详解)
  4. java中sc的快捷键,Windows下的SC命令参考
  5. 谈谈自己对于Auth2.0的见解
  6. labview随机数序列_labview产生随机数
  7. 关闭MySQL日志,删除mysql-bin.0000*日志文件
  8. Python 集体智慧编程PDF
  9. 为啥点击种子迅雷显示forum.php,迅雷无法解析种子怎么回事_迅雷种子无法解析解决教程...
  10. 有哪些适合女生练字的字帖?
  11. Python反序列化免杀上线CS:两次编码绕过
  12. BZOJ1864: [Zjoi2006]三色二叉树
  13. 杭电计网实验15 ACL网络访问控制 (球球、球球,可以点个赞吗)
  14. Raft 共识算法1-Raft基础
  15. ubuntu16.04编译ORBSLAM2问题解决
  16. vue.js的项目实战 1
  17. CSS - 类型、类和ID选择器 - 个人笔记
  18. Thinking in Java读书笔记-第二章
  19. vue-cli3.0 + echarts展示中国地图
  20. FinTech创业的两大势力,以及他们各有千秋的数据应用模式 | TCFA纽约年会直击

热门文章

  1. android studio 创建 jniLibs文件夹用于放置jar包和os文件
  2. win10 查看蓝牙无线收发器状态 未修复
  3. 杂项-公司:高通百科
  4. 关于Echarts词云图自定义形状如何实现
  5. fsn 回想_对世界的注意:不要以为“回想此消息”会起作用。 永远不会。
  6. MySQL数据库连接查询(外连接)
  7. 保姆级教程 | 表格自动行合并实现
  8. Zabbix监控端口,异常发送邮件
  9. [转载+电子书下载]《程序员修炼之道》 笔记与感想
  10. 已解决RuntimeError: Distributed package doesn‘t have NCCL built in