欢迎光临
我们一起进阶

python数据库基础-MySQL(四)

扫码或搜索:沉默王二
发送 290992
即可立即永久解锁本站全部文章
多表查询(mysql 连接)

MySQL NULL 值处理

我们已经知道MySQL使用 SQL SELECT 命令及 WHERE 子句来读取数据表中的数据,但是当提供的查询条件字段为 NULL 时,该命令可能就无法正常工作。

为了处理这种情况,MySQL提供了三大运算符:

IS NULL: 当列的值是NULL,此运算符返回true。
IS NOT NULL: 当列的值不为NULL, 运算符返回true。
<=>: 比较操作符(不同于=运算符),当比较的的两个值为NULL时返回true。

关于 NULL 的条件比较运算是比较特殊的。你不能使用 = NULL 或 != NULL 在列中查找 NULL 值。

在MySQL中,NULL值与任何其它值的比较(即使是NULL)永远返回false,即 NULL = NULL 返回false 。

MySQL中处理NULL使用IS NULL和IS NOT NULL运算符。

Mysql 连接(left join, right join, inner join ,full join)

我们已经学会了如果在一张表中读取数据,这是相对简单的,但是在真正的应用中经常需要从多个数据表中读取数据。

本章节我们将向大家介绍如何使用 MySQL 的 JOIN 在两个或多个表中查询数据。

你可以在SELECT, UPDATE 和 DELETE 语句中使用 Mysql 的 JOIN 来联合多表查询。

JOIN 按照功能大致分为如下三类:

INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。

LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。

RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。

Suppose you have two tables, with a single column each, and data as follows:

mysql> create table A(
    -> a int not null );

mysql>
mysql> create table B( b int not null );

#创建一个A、一个B表用于测试查询

查看表结构;且当前表为空。

创建A表的数据

创建B表的数据

当前两个表的数据内容

  • INNER JOIN 内连接
寻找两个表中相同的内容,类似交集

select * from A inner join B on A.a = B.b ;
#A inner B:A内连接B;
#on A.a = B.b:用A表中的a字段来比较B表中的b字段。

取出了两个表中相同的数据

select A.*, B.* from A,B where A.a = B.b;#等同于select * from A inner join B on A.a = B.b ;

  • LEFT JOIN 左连接
    > 寻找两个表的不同,类似差集
    select * from A left join B on A.a = B.b ;#获取左表所有记录,即使右表没有对应匹配的记录

先找两个表相同的,不同的右表则会以NULL显示。

select * from B left join A on A.a = B.b ;#把A和B调换位置

  • RIGHT JOIN 右连接

与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录

select * from A right join B on A.a = B.b ;

  • 并集

select * from A left join B on A.a = B.b UNION select * from A right join B on A.a = B.b;#通过UNION将两个语句联合起来使用

将两个结果合并一起展现出来

赞(0) 打赏
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

小白学堂,学的不止是技术,更是前程

关于我们免责声明

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏