MySQL进阶查询(二)

一、逻辑运算符

定义:逻辑运算符又被称为布尔运算符,通常用来判断表达式的真假,如果为真返回 1,否则返回 0,

真和假也可以用 TRUE 和 FALSE 表示。

1.1 MySQL 中支持使用的逻辑运算符有四种

  • NOT 或 !   逻辑非
  • AND 或 &&  逻辑与
  • OR              逻辑或
  • XOR            逻辑异或

1.1.1 逻辑非

  • 逻辑非将跟在它后面的逻辑测试取反
  •  NOT 后面的操作数为 0 时,所得值为 1
  • 操作数为非 0 时,所得值为 0
  • 操作数为 NULL 时,所得值为 NULL

1.1.2 逻辑与

  • 判断两个值或多个值的有效性
  • 如果所有值都是真返回 1,否则返回 0

1.1.3逻辑或

  • 任意一个为非零值并且不是 NULL 值时,返回 1,否则返回0

1.1.4 逻辑异或

  • 两个非 NULL 值的操作数,如果两者都是 0 或者都是非 0,则返回 0
  • 如果一个为 0, 另一个为非 0,则返回结果为 1
  • 当任意一个值为 NULL 时,返回值为 NULL

二、位运算符

& 按位与
| 按位或
~ 按位取反
^ 按位异或
<< 按位左移
>> 按位右移
举例
mysql> SELECT 10 & 15, 10 | 15, 10 ^ 15, 5 &~1;
+---------+---------+---------+-------+
| 10 & 15 | 10 | 15 | 10 ^ 15 | 5 &~1 |
+---------+---------+---------+-------+
|      10 |      15 |       5 |     4 |
+---------+---------+---------+-------+
1 row in set (0.00 sec)
  • 10 转换为二进制数是 1010, 15 转换为二进制数是 1111。

  • 按位与运算(&),是对应的二进制位都是 1 的,它们的运算结果为 1,否则为 0,所以 10 & 15 的结果为 10
  • 按位或运算(|),是对应的二进制位有一个或两个为 1 的,运算结果为 1,否则为 0, 所以 10 | 15 的结果为 15
  • 按位异或运算(^),是对应的二进制位不相同时,运算结果 1,否则为 0,所以 10 ^ 15的结果为 5。
  • 按位取反(~),是对应的二进制数逐位反转,即 1 取反后变为 0, 0 取反后变为 1。数字 1 的二进制是 0001,取反后变为 1110, 数字 5 的二进制是 0101,将 1110 和 0101
例如,对数字进行左移或右移的运算:
mysql> SELECT 1<<2, 2<<2,10>>2,15>>2;
+------+------+-------+-------+
| 1<<2 | 2<<2 | 10>>2 | 15>>2 |
+------+------+-------+-------+
|    4 |    8 |     2 |     3 |
+------+------+-------+-------+
1 row in set (0.00 sec)
  • 2<<2”将数字 2 的二进制数 0010, 向左移动两位后变成 10,右侧用 00 补齐,最终变为二进制的 1000,转换为十进制是 8
  • 15>>2”将数字 15 转换为二进制是 1111,向右移动两位,右侧的两位 11 被丢弃,变为 11, 左侧用 00 补齐,最终变为二进制的 0011,转换为十进制就是 3

三、连接查询

通常都是将来自两个或多个表的行结合起来,基于这些表之间的共同字段,进行数据的拼接

3.1 常用连接查询

  • 内连接
  • 左连接
  • 右连接

3.1.1 内连接 inner join

关键字:inner  join   on

语句:select * from a_table a inner join b_table b on a.a_id = b.b_id;

说明:组合两个表中的记录,返回关联字段相符的记录,也就是返回两个表的交集(阴影)部分

3.1.2 左连接查询 left join

关键字:left join on / left outer join on

语句:SELECT  * FROM a_table a left join b_table b ON a.a_id = b.b_id;

说明: 左(外)连接,左表(a_table)的记录将会全部表示出来,而右表(b_table)只会显示符合搜索条件的记录。右表记录不足的地方均为NULL。

3.1.3 右连接 right join

关键字:right join on / right outer join on

语句:SELECT  * FROM a_table a right outer join b_table b on a.a_id = b.b_id;

说明:全称是右外连接,是外连接中的一种。与左(外)连接相反,右(外)连接,左表(a_table)只会显示符合搜索条件的记录,而右表(b_table)的记录将会全部表示出来。左表记录不足的地方均为NULL。

道阻且长,行则将至!加油! --不是冷漠
原文地址:https://www.cnblogs.com/bushilengmo/p/13820309.html