最近面试中,Java的都会考察数据库,写SQL语句,大多数就问关联查询,索引

看看下面三个关联查询的 SQL 语句有何区别?SELECT * FROM score, student WHERE score.id = student.id ...
SELECT * FROM score JOIN student ON (score.id = student.id) WHERE ...
SELECT * FROM score JOIN student USING (id) WHERE ...

第一种为联合查询或者说并查询,前两种写法,只是写法不同而已,其功能完全相同;

最后一种,会将同名的列,合并起来。
第一种,是传统写法,SQL89标准里,就是这种;后面两种,是在SQL92标准才有的!


mysql> select * from score;
+----+-------+
| id | score |
+----+-------+
|  1 |    60 |
|  2 |    75 |
|  4 |    90 |
+----+-------+
3 rows in set (0.00 sec)mysql> select * from student;
+----+--------+
| id | name   |
+----+--------+
|  1 | 张三   |
|  2 | 李四   |
|  3 | 王五   |
+----+--------+
3 rows in set (0.00 sec)mysql> select * from score, student where score.id=student.id;
+----+-------+----+--------+
| id | score | id | name   |
+----+-------+----+--------+
|  1 |    60 |  1 | 张三   |
|  2 |    75 |  2 | 李四   |
+----+-------+----+--------+
2 rows in set (0.09 sec)mysql> select * from score join student on score.id=student.id;
+----+-------+----+--------+
| id | score | id | name   |
+----+-------+----+--------+
|  1 |    60 |  1 | 张三   |
|  2 |    75 |  2 | 李四   |
+----+-------+----+--------+
2 rows in set (0.00 sec)mysql> select * from score join student using(id);
+----+-------+--------+
| id | score | name   |
+----+-------+--------+
|  1 |    60 | 张三   |
|  2 |    75 | 李四   |
+----+-------+--------+
2 rows in set (0.00 sec)

面试问题:

mysql 查询一个表中没有存在在另一个表的数据,就是A表中有,B表中没有

A表
id content
1 sfsdfsg
2 ddsgffd
3 gfggg
4 dggfhfdB表id content2 ddsgffd
3 gfggg

那么我要查询到A表中 里面在B表中没有的数据(理想结果)就是:

id content
1 sfsdfsg
4 dggfhfd

select * from A where id not in select id from B;
SELECT * FROM A WHERE NOT  EXISTS  ( SELECT 1 FROM B WHERE B.id = A.id );
select * from A left join B on A.id = B.id where B.id is null;

问题2:
一句SQL查出所有课程成绩最高和最低的学生及其分数


SELECT "最高分",student.*
FROM student ,(SELECT MAX(score) AS score,`subject` FROM student GROUP BY `subject`)b
WHERE student.`score` = b.score
AND student.`subject` = b.subject
UNION
SELECT "最低分",student.*
FROM student ,(SELECT MIN(score) AS score,`subject` FROM student GROUP BY `subject`)b
WHERE student.`score` = b.score
AND student.`subject` = b.subject; 

http://blog.csdn.net/qq_29232943/article/details/78450950
http://blog.csdn.net/gaoweizang/article/details/52859449
http://blog.csdn.net/gaoweizang/article/details/52859449

mysql联合查询和关联查询相关推荐

  1. SQL子查询、关联查询

    SQL子查询.关联查询: 注:以上内容仅提供参考和交流,请勿用于商业用途,如有侵权联系本人删除! 持续更新中- 如有对思路不清晰或有更好的解决思路,欢迎与本人交流,QQ群:273557553,个人微信 ...

  2. java jpa自身关联查询_使用JPA进行数据查询和关联查询

    使用JPA进行数据查询和关联查询 在开发中经常会使用mybatis.jpa等框架来解决O/R映射技术实现数据访问.本文主要介绍使用JPA实现数据访问. 通常在关联查询的时候,表与表之前存在的关系有 O ...

  3. mysql DML操作、关联查询、联合查询、聚合函数使用

    目录 DML操作 关联查询.联合查询 按条件查询.聚合函数使用 DML操作 CREATE DATABASE db2USE db2; CREATE TABLE stu(sid INT PRIMARY K ...

  4. MySQL IN、Exist关联查询时,我们为什么建议小表驱动大表?

    有的时候我们在操作数据库时会将两个或多个数据表关联起来通过一些条件筛选数据,在关联表时我们要遵循一些原则,这样会使我们编写的SQL 语句在效率上快很多. 一.优化原则 小表驱动大表,即小的数据集驱动大 ...

  5. mysql join on 索引_连接查询,表关联查询join on,索引,触发器,视图

    一.连接查询 1.统计每一个部门的人数  "部门名,部门的人数" select department,count(eid) from employee group by depar ...

  6. MySQL数据约束和关联查询

    1 默认值deafult:在建表的时候字段后使用 default ,默认值字段允许为null. 2 非空 not null:在建表的时候字段后使用  not null. 非空字段必须赋值,并且不能是n ...

  7. mysql聚合函数查询,子查询,关联查询

    聚合函数 MAX() MIN() COUNT() SUM() AVG() 准备工作 from student.models import * from django.db.models import ...

  8. MySQL的多表关联查询

    一.多表关联查询 多表关联查询是使用一条SQL语句,将关联的多张表的数据查询出来. 1.1 交叉查询 交叉查询就是将多张表的数据没有条件地连接在一起进行展示. 1.1.1 语法 使用交叉查询类别和商品 ...

  9. 『MySQL』行号关联查询

    前言 永远相信美好的事情即将发生 背景 前段时间碰到过这样一个问题,查询出一家店铺在2020年和2019年活动类型为'xxx'的日期,因历史原因,2019年的活动和2020年的活动分别存储在两张表中, ...

最新文章

  1. cudart64_100.dll not found
  2. python读什么英文-Python常用英文单词有哪些?
  3. 全球及中国氮肥产业营销趋势与十四五消费规模研究报告2022版
  4. u盘启动 联想一体机_关于联想扬天B41-30-NTZ(L)使用U盘重装Win10系统的详细步骤
  5. 数据 3 分钟 | Oracle 首度失去榜首位置、PingCAP 发布 TiDB 荣耀体验官活动、华为召开开发者大会 2021
  6. wpf ui框架_.NET跨平台框架Avalonia UI
  7. Netty工作笔记0052---Pipeline组件剖析
  8. mysql 联合索引 range_MySQL 联合索引使用情况
  9. spotlight on mysql--安装以及简介
  10. 【转】Canny 算法
  11. 37.go struct 结构
  12. SpringBoot学习笔记(3)----SpringBoot的profile多环境配置
  13. BZOJ2190 [SDOI2008]仪仗队
  14. netstat 查看网络连接、路由表、接口状态、端口信息
  15. emqx配置ssl/tsl实现双向认证
  16. 敏捷开发“松结对编程”实践之三:共同估算篇(大型研发团队,学习型团队,139团队,师徒制度,敏捷设计,估算扑克,扑克牌估算) .
  17. 分布式--生成数据库全局唯一ID--方法/方案
  18. 【linux】shell编程 脚本语法
  19. Python hasattr()笔记(可执行文件路径获取)
  20. 【控制】自适应控制,模型参考自适应控制,公式推导,有程序有结果图

热门文章

  1. 原生微信小程序购物车
  2. 【IDEA】- IDEA导入 mysql驱动包的时候 编译时可以找到驱动包 , 但是运行时无法找到
  3. ML之FE:金融风控—基于预处理(PSI+标签编码+文本型抽数字+缺失值RF模型拟合填充)+多种筛选指标(PCA/IV值/Gini/熵/丰富度)利用CatBoost实现贷款违约二分类预测案例之详细攻略
  4. R语言 词云图过大不能全部显示怎么办
  5. 麒麟桌面系统桌面环境介绍
  6. python+pyhyper实现识别图片中的车牌号
  7. 移远EC20模块通过物理串口连接PC或者MCU,通过AT命令进行控制
  8. easyswoole默认访问html,easyswoole安装报错 解决办法
  9. 正弦波SFR分辨率测试卡
  10. python的类,实例,以及实例化