MySQL 外连接查询

MySQL 中内连接是在交叉连接的结果集上返回满足条件的记录;而外连接先将连接的表分为基表和参考表,再以基表为依据返回满足和不满足条件的记录。

外连接更加注重两张表之间的关系。按照连接表的顺序,可以分为左外连接和右外连接。

左外连接又称为左连接,在 FROM 子句中使用关键字 LEFT OUTER JOIN 或者 LEFT JOIN,用于接收该关键字左表(基表)的所有行,并用这些行与该关键字右表(参考表)中的行进行匹配,即匹配左表中的每一行及右表中符合条件的行。

在左外连接的结果集中,除了匹配的行之外,还包括左表中有但在右表中不匹配的行,对于这样的行,从右表中选择的列的值被设置为 NULL,即左外连接的结果集中的 NULL 值表示右表中没有找到与左表相符的记录。

在 tb_students_info 表和 tb_departments 表中查询所有学生,包括没有学院的学生,输入的 SQL 语句和执行结果如下所示。

mysql> SELECT name,dept_name-> FROM tb_students_info s-> LEFT OUTER JOIN tb_departments d-> ON s.dept_id = d.dept_id;
+--------+-----------+
| name   | dept_name |
+--------+-----------+
| Dany   | Computer  |
| Jane   | Computer  |
| Jim    | Computer  |
| Henry  | Math      |
| John   | Math      |
| Green  | Chinese   |
| Thomas | Chinese   |
| Susan  | Economy   |
| Tom    | Economy   |
| Lily   | NULL      |
+--------+-----------+
10 rows in set (0.03 sec)

结果显示了 10 条记录,name 为 Lily 的学生目前没有学院,因为对应的 tb_departments 表中并没有该学生的学院信息,所以该条记录只取出了 tb_students_info 表中相应的值,而从 tb_departments 表中取出的值为 NULL。

右外连接又称为右连接,在 FROM 子句中使用 RIGHT OUTER JOIN 或者 RIGHT JOIN。与左外连接相反,右外连接以右表为基表,连接方法和左外连接相同。在右外连接的结果集中,除了匹配的行外,还包括右表中有但在左表中不匹配的行,对于这样的行,从左表中选择的值被设置为 NULL。

在 tb_students_info 表和 tb_departments 表中查询所有学院,包括没有学生的学院,输入的 SQL 语句和执行结果如下所示。

mysql> SELECT name,dept_name-> FROM tb_students_info s-> RIGHT OUTER JOIN tb_departments d-> ON s.dept_id = d.dept_id;
+--------+-----------+
| name   | dept_name |
+--------+-----------+
| Dany   | Computer  |
| Green  | Chinese   |
| Henry  | Math      |
| Jane   | Computer  |
| Jim    | Computer  |
| John   | Math      |
| Susan  | Economy   |
| Thomas | Chinese   |
| Tom    | Economy   |
| NULL   | History   |
+--------+-----------+
10 rows in set (0.00 sec)

可以看到,结果只显示了 10 条记录,名称为 History 的学院目前没有学生,对应的 tb_students_info 表中并没有该学院的信息,所以该条记录只取出了 tb_departments 表中相应的值,而从 tb_students_info 表中取出的值为 NULL。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/564299.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mono for android mysql_mono for android 自定义titleBar Actionbar 顶部导航栏 修改 样式 学习...

以前的我是没有做笔记的习惯的,学习了后觉得自己能记住,但是最近发现很多学的东西都忘记了,所有现在一有新的知识,就记下来吧。最近又做一个mono for android 的项目 这次调整比较大,上次做的点餐系统很好用 &#xff…

mysql srid_mysql8 参考手册--索引优化

主键优化表的主键表示您在最重要的查询中使用的一列或一组列。它具有关联的索引,可提高查询性能。查询性能可以从NOT NULL优化中受益,因为它不能包含任何NULL值。使用InnoDB存储引擎,可以对表数据进行物理组织,以根据一个或多个主…

MySQL 分组查询

MySQL SELECT 语句&#xff0c;允许使用 GROUP BY 子句&#xff0c;将结果集中的数据行根据选择列的值进行逻辑分组&#xff0c;以便能汇总表内容的子集&#xff0c;实现对每个组而不是对整个结果集进行整合。 语法格式如下&#xff1a; GROUP BY { <列名> | <表达式…

MySQL 指定过滤条件

MySQL SELECT 语句&#xff0c;除了能使用 GROUP BY 子句分组数据外&#xff0c;还可以使用 HAVING 子句过滤分组&#xff0c;在结果集中规定了包含哪些分组和排除哪些分组。 语法格式如下&#xff1a; HAVING <条件>其中&#xff0c;<条件>指的是指定的过滤条件…

mysql 终端 远程访问,通过终端连接到远程mysql

For a test I set up user mysql user with % access. When I try to connect from a remote machine I get:Enter password:Then immediately get this:ERROR 2003 (HY000): Can’t connect to MySQL server on ‘xxxxxxx’ (1)Any ideas解决方案Try to comment the bind-addr…

MySQL 正则表达式查询

MySQL中正式表达式通常被用来检索或替换符合某个模式的文本内容&#xff0c;根据指定的匹配模式匹配文中符合要求的特殊字符串。 例如&#xff0c;从一个文件中提取电话号码&#xff0c;查找一篇文章中重复的单词或替换用户输入的敏感语汇等&#xff0c;这些地方都可以使用正则…

mysql修改最大文件数_mysql更改最大打開文件數

1. 查看内核限制# ulimit -n655352. 修改 my.cnf 限制# vi /etc/my.cnf[mysqld]open_files_limit 655353. 重启 mysqld# /etc/init.d/mysql restart4. 查看结果mysql>show global variables like %open%;| open_files_limit | 65535 || table_open_cache | 1…

MySQL 插入语句

数据库与表创建成功以后&#xff0c;需要向数据库的表中插入数据。在 MySQL 中可以使用 INSERT 语句向数据库已有的表中插入一行或者多行元组数据。 基本语法 INSERT 语句有两种语法形式&#xff0c;分别是 INSERT…VALUES 语句和 INSERT…SET 语句。 1 INSERT…VALUES语句 …

onmp mysql端口_ONMP 安装教程

之前用过极路由 1s&#xff0c;刷了恩山 H大的固件&#xff0c;发现内置了 web 环境&#xff0c;没想到一个路由器都能跑的动 LNMP。我之前最极限的尝试就是在一个 4刀3年 的 sentris ovz 小鸡上跑过 WordPress &#xff0c;那台小鸡 配置很低&#xff0c;只有 64M 的内存&…

MySQL 修改数据

MySQL 中&#xff0c;可以使用 UPDATE 语句来修改、更新一个或多个表的数据。 UPDATE 语句的基本语法 使用 UPDATE 语句修改单个表&#xff0c;语法格式为&#xff1a; UPDATE <表名> SET 字段 1值 1 [,字段 2值 2… ] [WHERE 子句 ] [ORDER BY 子句] [LIMIT 子句]语法…

mysql添加索引后查询先用索引吗_mysql 添加索引后 在查询的时候是mysql就自动从索引里面查询了。还是查询的时候有单 独的参数查询索引?...

满意答案llt17112014.06.20采纳率&#xff1a;49% 等级&#xff1a;9已帮助&#xff1a;614人MYSQL创建索引对索引使用方式分两种&#xff1a;1 由数据库查询优化器自动判断否使用索引&#xff1b;2 用户写SQL语句时强制使用索引下面两种索引使用方式进行说明第种自动使用索…

MySQL 删除数据

MySQL 中&#xff0c;可以使用 DELETE 语句来删除表的一行或者多行数据。 删除单个表中的数据 使用 DELETE 语句从单个表中删除数据&#xff0c;语法格式为&#xff1a; DELETE FROM <表名> [WHERE 子句] [ORDER BY 子句] [LIMIT 子句]语法说明如下&#xff1a; <表…

MySQL 视图简析

认识视图 视图是一个虚拟表&#xff0c;其内容由查询定义。同真实表一样&#xff0c;视图包含一系列带有名称的列和行数据&#xff0c;但视图并不是数据库真实存储的数据表。 视图是从一个、多个表或者视图中导出的表&#xff0c;包含一系列带有名称的数据列和若干条数据行。…

win7 vs2017 程序报错_windows + VS2017 配置libpytorch

因为项目对实时性的要求&#xff0c;尝试一波c直接调用libpytorch。实现的同时&#xff0c;整理了网上的相关资料&#xff0c;希望对效率追求的同学提供一份帮助。0.下载准备下载安装VS2017 和 cmake &#xff08;3.0版本以上&#xff09;记得把bin目录添加到环境变量path中。这…

jdbc mysql api_JDBC Api详解

一.什么是JDBCJDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API&#xff0c;可以为多种关系数据库提供统一访问&#xff0c;它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准&#xff0c;据此可以构建更高级的工具和接口&#xff0…

MySQL 修改视图

修改视图是指修改 MySQL 数据库中存在的视图&#xff0c;当基本表的某些字段发生变化时&#xff0c;可以通过修改视图来保持与基本表的一致性。 基本语法 可以使用 ALTER VIEW 语句来对已有的视图进行修改。 语法格式如下&#xff1a; ALTER VIEW <视图名> AS <SE…

php mysql 冒号_php – 使用pdo在搜索变量中使用冒号(:)进行查询

我有一个恼人的问题.我正在尝试做一些简单的事情,比如从db获取一个单元格值.这是你可以用db做的最基本的事情…给我一个值,其中有一个具有此值的单元格….问题是搜索查询包含冒号(:).我在一个准备好的语句的类中使用pdo函数,但没有运气.我已经尝试了一切,甚至将查询分开,因此它…

MySQL 删除视图

删除视图是指删除 MySQL 数据库中已存在的视图。删除视图时&#xff0c;只能删除视图的定义&#xff0c;不会删除数据。 基本语法 可以使用 DROP VIEW 语句来删除视图。 语法格式如下&#xff1a; DROP VIEW <视图名1> [ , <视图名2> …]其中&#xff1a;<视…

python计算经纬度之间的距离_python函数——根据经纬度计算距离公式的错误及修正...

函数import mathdef cal_dis(latitude1,longitude1,latitude2,longitude2):latitude1 (Math.PI/180)*latitude1latitude2 (Math.PI/180)*latitude2longitude1 (Math.PI/180)*longitude1longitude2 (Math.PI/180)*longitude2#因此AB两点的球面距离为:{arccos[sinb*sinycosb*c…

MySQL 自定义函数

在使用 MySQL 的过程中&#xff0c;MySQL 自带的函数可能完成不了我们的业务需求&#xff0c;这时候就需要自定义函数。 自定义函数是一种与存储过程十分相似的过程式数据库对象。它与存储过程一样&#xff0c;都是由 SQL 语句和过程式语句组成的代码片段&#xff0c;并且可以…