我们使用SQL查询不能只使用很简单、最基础的SELECT语句查询。如果想从多个表查询比较复杂的信息,就会使用高级查询实现。常见的高级查询包括多表连接查询、内连接查询、外连接查询与组合查询等,今天我们先来学习最常用、面试也很容易被问到的连接查询。

我们今天以一个简单的学生信息表(学生ID、学生姓名、学生性别)与一个学生成绩表(学生ID、学生成绩、成绩等级)作演示:

student_info表:

student_score表:

一、内连接(INNER JOIN)

1、等值连接

概述:指使用等号"="比较两个表的连接列的值,相当于两表执行笛卡尔后,取两表连结列值相等的记录。

语法:

SELECT 列

FROM 表1 INNER JOIN 表2

ON 表1.列 = 表2.列

示例:

SELECT A.*, B.*

FROM student_info A inner join student_score B

ON A.student_id = B.student_id

结果:

2、非等值连接

概述:指使用大于号">"或小于号"

语法:

SELECT 列

FROM 表1 INNER JOIN 表2

ON 表1.列 <> 表2.列

示例:

SELECT A.*, B.*

FROM student_info A inner join student_score B

ON A.student_id > B.student_id

结果:

二、外联结

1、左外连接(LEFT OUTER JOIN)

概述:指将左表的所有记录与右表符合条件的记录,返回的结果除内连接的结果,还有左表不符合条件的记录,并在右表相应列中填NULL。

示例:

SELECT A.*, B.*

FROM student_info A left join student_score B

ON A.student_id = B.student_id

结果:

2、右外连接(RIGHT OUTER JOIN)

概述:与左外连接相反,指将右表的所有记录与左表符合条件的记录,返回的结果除内连接的结果,还有右表不符合条件的记录,并在左表相应列中填NULL。

示例:

SELECT A.*, B.*

FROM student_info A right join student_score B

ON A.student_id = B.student_id

结果:

3、全外连接(FULL JOIN)——MySQL不支持

概述:指将左表所有记录与右表所有记录进行连接,返回的结果除内连接的结果,还有左表与右表不符合条件的记录,并在左表与右表相应列中填NULL。

三、自然连接(NATURAL JOIN)

概述:指自动将表中相同名称的列进行记录匹配。

示例:

SELECT A.*, B.*

FROM student_info A natural join student_score B

结果:

四、自连接

概述:指用表的别名实现表自身的连接。

示例:

SELECT B.*

FROM student_score A, student_score B

WHERE A.student_id = B.student_id

AND B.student_score > 80

结果:

mysql 最值复杂查询_MySQL高级查询相关推荐

  1. mysql外键约束分数_MySQL 高级查询

    我们使用SQL查询不能只使用很简单.最基础的SELECT语句查询.如果想从多个表查询比较复杂的信息,就会使用高级查询实现.常见的高级查询包括多表连接查询.内连接查询.外连接查询与组合查询等 以一个简单 ...

  2. mysql lambda查询_MySQL高级查询和编程基础

    学习概述 随着数据库管理信息系统的日益复杂和庞大,软件应用系统对数据库设计.数据存储.数据查询和数据维护等提出了更高的要求.本书主要介绍数据库设计的方法和技术.子查询技术.MySQL编程基础知识和存储 ...

  3. mysql高级查询练习题_MySQL高级查询习题

    MySQL高级查询习题 提示: emp员工表(empno员工号/ename员工姓名/job工作/mgr上级编号/hiredate受雇日期/sal薪金/comm佣金/deptno所属部门编号) dept ...

  4. mysql的高级查询实例_mysql高级查询实例及cmd命令.doc

    mysql高级查询实例及cmd命令.doc 还剩 19页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内容要点: sele ...

  5. mysql多类型查询_MYSQL中的多类型查询及高级查询操作

    离散查询 select * from car where price=30 or price=40 or price=50 or price=60; select * from car where p ...

  6. mysql 高级查询词_Mysql高级查询语句

    Exists子查询 Exists的特点 1.在执行create或drop语句前,可以使用exists语句来判断数据库对象是否存在,返回值是true或false drop table if exists ...

  7. mysql高级查询 二_MySQL高级查询(二)

    EXISTS 和NOT EXISTS子查询 EXISTS子查询 语法: SELECT --- FROM 表名 WHERE EXISTS (子查询); 例: SELECT `studentNo` AS ...

  8. 简单mysql 查询_MySQL简单查询详解

    MySQL的查询操作 单表查询:简单查询 多表查询:连接查询 联合查询 布尔条件表达式操作符= 等值比较 <=>:跟空值比较不会产生额外信息的等值比较 <>:不等值 <: ...

  9. mysql的复杂查询_mysql复杂查询

    所谓复杂查询,指涉及多个表.具有嵌套等复杂结构的查询.这里简要介绍典型的几种复杂查询格式. 一.连接查询 连接是区别关系与非关系系统的最重要的标志.通过连接运算符可以实现多个表查询.连接查询主要包括内 ...

最新文章

  1. Mybatis怎么在mapper中用多个参数
  2. 软件工程--团队作业4
  3. spring程序开发步骤
  4. 异步请求---Get
  5. centos怎么用命令行启动mysql_centos怎么用命令行启动mysql数据库
  6. 使用阿里云邮件推送服务发送验证码
  7. 服务器装系统步骤图解win7,Win7原版系统安装教程(超详细图文版)
  8. 洛谷 P5713 【深基3.例5】洛谷团队系统 C语言
  9. 360的困兽之斗——探讨奇虎Tecent商业模式
  10. PHP程序提示验证码错误的问题(输入了正确的验证码)
  11. 谈谈对Android音视频开发的探究
  12. 108.【RabbitsMQ】
  13. 一个简单的个人视频点播网站制作(一)
  14. F2FS文件系统架构与原理分析(五)——元数据组织及管理
  15. 华为应用内支付验签失败,报错Signature length not correct
  16. [转] 使用memc-nginx和srcache-nginx模块构建高效透明的缓存机制
  17. 苹果CMS全新二开影视源码app源码完整版
  18. ENVI5.3.1,按经纬度裁剪影像
  19. Matlab常用工具箱的调用命令
  20. 4.6. 个人防火墙

热门文章

  1. 「2019纪中集训Day7」解题报告
  2. jeeCMS首页加载流程
  3. Windows下多个JDK版本的切换方法
  4. 【noip模拟赛4】Matrix67的派对 暴力dfs
  5. Machine Learning - Coursera week6 Evaluating a learning algorithm
  6. Powerful Sleep(神奇的睡眠-睡眠生物钟的秘密:如何睡得更少却睡得更好)阅读笔记...
  7. 如何阅读3,500万个博客?
  8. 自断前程,未来80%IT工作将实现自动化
  9. 《结对-贪吃蛇-需求分析》
  10. SQL SERVER2014 安装 Error code 0x858C001B.