MySQL中的多表查询(超级详细)

MySQL中的多表查询

多表查询的分类

  • 等值连接—— 非等值连接
  • 自连接 —— 非自连接
  • 内连接 —— 外连接
# 等值连接 vs 非等值连接
# 非等值连接的例子
SELECT* FROM job_grades;

SELECT last_name, salary,grade_level
FROM employees e, job_grades j
WHERE e.`salary` BETWEEN j.`lowest_sal` AND j.`highest_sal`

# 自连接 vs 非自连接
 SELECT * FROM employees;
 
 # 自连接
 # 查询员工id,员工姓名及其管理者的id和姓名
 SELECT emp.employee_id, emp.last_name, mgr.employee_id ,mgr.last_name
 FROM employees emp, employees mgr
 WHERE emp.`manager_id` = mgr.`employee_id`
 
 # 内连接 vs 外连接
 # 内连接:合并具有同一列的两个以上的表的行,结果集中不包含一个表与另一个表不匹配的行
 SELECT employee_id, department_name
 FROM employees e, departments d
 WHERE e.`department_id` = d.`department_id`
 
 # 外连接:合并具有同一列的两个以上的表的行,结果集中除了包含一个表与另一个表匹配的行之外
 # 	还查询到了坐标或右表不匹配的行。
 
 # 外连接的分类:左外连接、右外连接、满外连接

 # 左外连接:两个表在连接过程中除了瞒住连接条件的行以外还返回左表中不满足条件的行,这种连接称为左外连接
 
 # 右外连接:两个表在连接过程中除了瞒住连接条件的行以外还返回右表中不满足条件的行,这种连接称为右外连接
 
 # 查询所有员工的last_name,department_name信息
 # SQL92语法实现内连接 
 SELECT employee_id, department_name
 FROM employees e, departments d
 WHERE e.`department_id` = d.`department_id`
 # SQL92语法实现外连接  使用+ ————MySQL中不支持SQL92语法中的外连接的写法
 SELECT employee_id, department_name
 FROM employees e, departments d
 WHERE e.`department_id` = d.`department_id`(+)
 # SQL99语法中使用JOIN...ON的方式实现多表的查询,这种方式也能拿个解决外连接的问题,MySQL是支持此种方式的
 # SQL99语法如何实现多表的查询
 
 # SQL99语法实现内连接
 SELECT last_name,department_name
 FROM employees JOIN departments 
 ON employees.`department_id` = departments.`department_id`
 
 # SQL99语法实现左外连接:
  SELECT last_name,department_name
 FROM employees LEFT JOIN departments 
 ON employees.`department_id` = departments.`department_id`
 
  # SQL99语法实现右外连接:
  SELECT last_name,department_name
  FROM employees RIGHT JOIN departments 
  ON employees.`department_id` = departments.`department_id`
 
 #满外连接:mysql不支持 FULL OUTER JOIN
  SELECT last_name,department_name
  FROM employees FULL OUTER JOIN departments 
  ON employees.`department_id` = departments.`department_id`
 
 # SQL99语法实现满外连接:UNION [ALL] 的使用
 # union:会执行去重的操作
 # union all:不会执行去重的操作


UNION的使用

合并查询结果

利用UNION关键字可以给出多条SELECT语句,并将他们的结果组合成单个结果集。合并时,两个表对应的列数和数据必须相同,并且相互对应。各个SELECT语句之间使用UNION或UNION ALL关键字分隔。

语法格式:
SELECT column,... from table1
UNION [ALL]
SELECT column,... from table2

UNION操作符返回两个查询的结果的并集,取出重复记录

UNION ALL操作符返回两个查询的结果集的并集,对于两个结果集的重复的部分,不去重。

如果明确知道合并后的数据不存在重复的诗句,或者不需要去除重复的数据,则尽量使用UNION ALL语句,以提高数据查询的效率

SQL99语法中的新特性1:自然连接

SQL99在SQL92基础上提供了一些特殊语法,比如NATURAL JOIN用来表示自然连接,我们可以把自然连接理解为SQL92中的等值连接,他会帮你自动查询两张连接表中所有相同的字段,然后进行等值连接

SQL99语法中的新特性2:USING

USING指定了具体的相同的字段名称,你需要在USING的括号()中填入指定的同名字段,使用使用JSON…USING可以简化JOIN ON的等值连接

  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
当然可以!下面是一个超级详细MySQL 安装和配置教程: 步骤1:下载MySQL 首先,你需要下载 MySQL 的安装包。你可以在 MySQL 官方网站上找到最新的稳定版本。选择适合你操作系统的版本,比如 Windows、macOS 或者 Linux。下载完成后,你可以开始安装过程。 步骤2:运行安装程序 运行下载好的安装程序,会弹出一个安装向导。按照安装向导的指示进行操作。 步骤3:选择安装类型 在安装向导的第一个页面上,选择 "Custom"(自定义)安装类型。这样你就可以选择你需要的组件和功能。 步骤4:选择组件 在下一个页面上,你可以选择需要安装的组件。通常情况下,至少需要选择 "MySQL Server"(MySQL 服务器)和 "MySQL Workbench"(MySQL 工作台)。 步骤5:选择安装位置 在下一个页面上,选择 MySQL 的安装位置。你可以保留默认设置,或者选择自定义安装位置。 步骤6:设置 root 密码 在下一个页面上,设置 root 用户的密码。root 用户是 MySQL超级管理员账户,密码应该足够强大以确保安全性。 步骤7:选择服务配置 在下一个页面上,选择 MySQL 服务的配置。你可以选择安装 MySQL 作为 Windows 服务(推荐),或者手动启动和停止 MySQL。 步骤8:安装 点击 "Execute"(执行)按钮,开始安装 MySQL。安装过程可能需要一些时间,取决于你的计算机性能和所选择的组件。 步骤9:完成安装 安装完成后,点击 "Next"(下一步)按钮,然后点击 "Finish"(完成)按钮退出安装向导。 步骤10:配置 MySQL 打开 MySQL 的安装目录,找到 my.ini 文件(Windows)或者 my.cnf 文件(macOS 和 Linux)。用文本编辑器打开该文件。 步骤11:配置端口 在配置文件找到 "port" 配置项,并将其设置为你想要使用的端口号(默认是 3306)。 步骤12:配置字符集 在配置文件找到 "character-set-server" 配置项,并将其设置为你想要使用的字符集(比如 utf8)。 步骤13:保存配置文件 保存配置文件,并退出文本编辑器。 步骤14:启动 MySQL 服务 在 Windows 上,你可以在服务列找到并启动 "MySQL" 服务。在 macOS 和 Linux 上,你可以使用命令行启动 MySQL 服务。 步骤15:测试连接 打开 MySQL Workbench(如果你选择了安装 MySQL Workbench)。在连接管理器创建一个新的连接,并使用 root 用户名和之前设置的密码进行连接。如果一切正常,你应该能够成功连接到 MySQL 服务器。 恭喜!你已经完成了 MySQL 的安装和配置过程。现在你可以开始使用 MySQL 数据库了。希望这个教程对你有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

允谦呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值