hincky的主页 hincky的主页
  • 2023

    • nginx
    • prometheus
    • 小工具
    • 部署
  • 数据库

    • MySQL是怎么使用/运行的
    • Redis核心技术与实战
  • 极客时间

    • Web协议详解与抓包实战
    • SQL必知必会
    • MySQL45讲
个人日常
  • 分类
  • 标签
  • 归档
  • 随笔
GitHub (opens new window)

Hincky

当有趣的人,做想做的事
  • 2023

    • nginx
    • prometheus
    • 小工具
    • 部署
  • 数据库

    • MySQL是怎么使用/运行的
    • Redis核心技术与实战
  • 极客时间

    • Web协议详解与抓包实战
    • SQL必知必会
    • MySQL45讲
个人日常
  • 分类
  • 标签
  • 归档
  • 随笔
GitHub (opens new window)
  • 编程语言

  • 数据库

  • 极客时间

    • Web协议详解与抓包实战

    • GO语言第一课

    • MySQL45

    • SQL必知必会

      • SQL快查
        • 语句顺序
        • 执行顺序
        • like用法
        • 最值
        • 特殊
        • 子查询
        • 关键字
      • 数据语言
        • DDL 数据定义语言
          • 对库定义
          • 对表定义
        • DML
        • DCL
        • DQL
      • select查询
        • select语句sql关键字顺序
        • sql语句实际执行顺序
        • 提升查询效率的方法
      • where条件查询
        • 比较运算符
        • 逻辑运算符
        • like + 通配符 (小心索引失效)
        • 分组
      • 函数
        • 聚合函数
        • 算术函数
        • 字符串函数
        • 日期函数
        • 转换函数
      • 分组查询
      • 子查询
        • 关联子查询
        • 非关联子查询
        • 集合比较子查询
          • IN 和 EXISTS 如何选择
          • NOT IN 和 NOT EXISTS 如何选择
        • 子查询作为计算字段
      • 多表查询
        • 交叉连接
        • 等值与自然连接
        • 非等值连接
        • 左连接
        • 右连接
        • 自连接
      • 牛客网题目整合
      • SQL简介
        • 创建DBMS
          • SQL大小写
          • DBMS种类
        • MySQL开发规范
      • SQL如何执行
        • Oracle中如何执行
        • MySQL中如何执行
          • mysql如何对sql执行时间进行分析
          • 查看mysql的执行计划
    • Linux性能优化实战

  • 读书笔记
  • 极客时间
  • SQL必知必会
hincky
2022-10-29
目录

多表查询

# 多表查询

# 交叉连接

SELECT * FROM player CROSS JOIN team

SELECT * FROM t1 CROSS JOIN t2 CROSS JOIN t3
1
2
3

# 等值与自然连接

SELECT player_id, player.team_id, player_name, height, team_name FROM player, team WHERE player.team_id = team.team_id
1

使用别名

SELECT player_id, a.team_id, player_name, height, team_name FROM player AS a, team AS b WHERE a.team_id = b.team_id
1

下面多加一个ON连接,作用和自然连接一样,理解更直观

SELECT player_id, team_id, player_name, height, team_name FROM player NATURAL JOIN team

SELECT player_id, player.team_id, player_name, height, team_name FROM player JOIN team ON player.team_id = team.team_id
1
2
3

连接条件是ON player.team_id = team.team_id,相当于是用 ON 进行了 team_id 字段的等值连接。

需要连接的表会采用 JOIN 进行连接,ON 指定了连接条件,后面可以是等值连接,也可以采用非等值连接。

# 非等值连接

想要知道每个球员的身高的级别

SELECT p.player_name, p.height, h.height_level
FROM player AS p, height_grades AS h
WHERE p.height BETWEEN h.height_lowest AND h.height_highest
1
2
3

# 左连接

主表在左边,从表在右边

SELECT * FROM player, team where player.team_id = team.team_id(+)

SELECT * FROM player LEFT JOIN team on player.team_id = team.team_id
1
2
3

表格中一共有 3 支球队,现在这 3 支球队需要进行比赛,请用一条 SQL 语句显示出所有可能的比赛组合。

分主客队

SELECT CONCAT(kedui.team_name, ' VS ', zhudui.team_name) as '客队 VS 主队' FROM team as zhudui LEFT JOIN team as kedui on zhudui.team_id<>kedui.team_id;
1

不分主客队

SELECT a.team_name as '队伍1' ,'VS' , b.team_name as '队伍2' FROM team as a ,team as b where a.team_id<b.team_id;
1

# 右连接

主表在右边,从表在左边

SELECT * FROM player, team where player.team_id(+) = team.team_id

SELECT * FROM player RIGHT JOIN team on player.team_id = team.team_id
1
2
3

# 自连接

查看比布雷克·格里芬高的球员都有谁,以及他们的对应身高

SELECT b.player_name, b.height FROM player as a , player as b WHERE a.player_name = '布雷克-格里芬' and a.height < b.height
1

如果不用自连接就要分为两次sql查询

  1. 查询布雷克·格里芬的身高
  2. 比 2.08 高的球员都有谁,以及他们的对应身高:
SELECT height FROM player WHERE player_name = '布雷克-格里芬'

SELECT player_name, height FROM player WHERE height > 2.08
1
2
3
编辑 (opens new window)
#SQL
子查询
牛客网题目整合

← 子查询 牛客网题目整合→

最近更新
01
集成chatgpt的工具
05-24
02
修改服务器ssh默认连接端口
05-22
03
阿里云免费证书
05-15
更多文章>
Theme by Vdoing | Copyright © 2022-2023 Hincky | MIT License | 粤ICP备2022120427号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式