SQL多表查询
时间:2019-06-11
本文章向大家介绍SQL多表查询,主要包括SQL多表查询使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
SQL 提供了JOIN
关键字来连接多张表的查询(即连接的是SELECT
结果集)基本分为以下几种:
- 内连接:JOIN / INNER JOIN,是最为常用的一种连接,其效果是只返回条件匹配的那条数据
- 等值连接:ON 子句中使用了运算符“=”,且连接的两个字段最好是主键
例如select student.name, avg(score.score) as avg_score from student join score on student.id = sc.id group by name;
name avg_score 赵雷 89.66667 钱电 70.00000 孙风 80.00000 李云 33.33333 - 不等连接:ON 子句中使用了不等于运算符,例如"<>" "<=>"等(可以搜下 SQL 比较运算符)
- 自连接:一张表连接自身。例如
select * from student a, student b where a.sex = b.sex and a.sex = '男';
相当于做了次笛卡尔积运算,就不全部展示了
id name sex id name sex 1 赵雷 男 1 赵雷 男 2 钱电 男 1 赵雷 男 3 孙风 男 1 赵雷 男 4 李云 男 1 赵雷 男 - 等值连接:ON 子句中使用了运算符“=”,且连接的两个字段最好是主键
- 外连接:除了返回条件匹配的数据,那些不满足的数据也会返回。根据连接表的顺序可分为:
- 左(外)连接:LEFT JOIN / LEFT OUTER JOIN
以左表为基表连接右表,在右表中若没有匹配到基表中的数据则返回 null
例如select stu.Sname, avg(sc.score) as avg_score from student stu left join sc on sc.SId = stu.SId group by stu.Sname;
name avg_score 赵雷 89.66667 钱电 70.00000 孙风 80.00000 李云 33.33333 张三 null 李四 null - 右(外)连接:RIGHT JOIN / RIGHT OUTER JOIN
以右表为基表连接左表,在左表中若没有右匹配到基表中的数据则返回 null
- 左(外)连接:LEFT JOIN / LEFT OUTER JOIN
- 全(外)连接:FULL JOIN / FULL OUTER JOIN
- 等同于 LEFT JOIN 结果集 UNION RIGHT JOIN 结果集
- 交叉连接:CROSS JOIN (可用","代替)
- 等同于笛卡尔积 (所以不常用)
select * from table1 CROS JOIN table2;
<=>select * from table1, table2;
原文地址:https://www.cnblogs.com/eahau/p/10982358.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Java自动化测试(数据库断言 18)
- Java自动化测试(参数化 19)
- Python 基础(一):入门必备知识
- Mac安装软件提示 已损坏【已解决】
- 机器学习之sklearn基础教程!
- 2020最新版 maven for MAC 安装及配置
- jemter安装(win/mac)并快捷启动的方法
- nmap 详解版-指令使用方法大全【含安装】
- 常见6种WAF绕过和防护原理
- 2020-mac 安装jdk1.8
- AWVS acunetix_WVS13的基础使用
- 为啥PHP in_array(0,['a', 'b', 'c']) 返回为true?
- docker安装伏羲扫描器fuxi-scanner
- 基于深度学习的文本分类应用!
- 表驱动法