SQL之表的查改(下)

目录

[1. Where](#1. Where)

[1.1 >, >=, <, <=](#1.1 >, >=, <, <=)

[1.2 =](#1.2 =)

[1.3 <=>](#1.3 <=>)

[1.3 !=, <>](#1.3 !=, <>)

[1.5 BETWEEN a0 AND a1](#1.5 BETWEEN a0 AND a1)

[1.6 IN (option, ...)](#1.6 IN (option, ...))

[1.7 IS NULL](#1.7 IS NULL)

[1.8 IS NOT NULL](#1.8 IS NOT NULL)

[1.9 LIKE](#1.9 LIKE)

[1.9.1 %](#1.9.1 %)

[1.9.2 _](#1.9.2 _)

[1.10 AND](#1.10 AND)

[1.11 OR](#1.11 OR)

[1.12 别名不能用在 WHERE 条件中](#1.12 别名不能用在 WHERE 条件中)

[1.13 结果排序](#1.13 结果排序)

[1.13.1 多重排序](#1.13.1 多重排序)

[ORDER BY 子句中可以使用列别名。](#ORDER BY 子句中可以使用列别名。)

[1.14 联合使用](#1.14 联合使用)

[2. Update](#2. Update)


1. Where

语法:

sql 复制代码
​​SELECT 想要查询的列名 FROM 表名 where 条件;
运算符 说明
>, >=, <, <= 大于,大于等于,小于,小于等于
= 等于, NULL 不安全,例如 NULL = NULL 的结果是 NULL
<=> 等于, NULL 安全,例如 NULL <=> NULL 的结果是 TRUE(1)
!=, <> 不等于
BETWEEN a0 AND a1 范围匹配, [a0, a1] ,如果 a0 <= value <= a1 ,返回 TRUE(1)
IN (option, ...) 如果是 option 中的任意一个,返回 TRUE(1)
IS NULL 是 NULL
IS NOT NULL 不是 NULL
LIKE 模糊匹配。 % 表示任意多个(包括 0 个)任意字符; _ 表示任意一个字符
AND 多个条件必须都为 TRUE(1),结果才是TRUE(1)
OR 任意一个条件为 TRUE(1),结果为TRUE(1)
NOT 条件为 TRUE(1),结果为FALSE(0)

1.1 >, >=, <, <=

这个的话也比较简单。就像下面这张图一样使用就好了。

1.2 =

这个的话也比较简单。就像下面这张图一样使用就好了。

这边唯一要注意的就是在遇到下面这张情况,如果我们用的是=的话,那么不可以进行下面这个操作。

1.3 <=>

这个的话也比较简单。就像下面这张图一样使用就好了。

在这边唯一需要注意的就是这个<=>是可以使用null比较的。

1.3 !=, <>

这个的话也比较简单。就像下面这张图一样使用就好了。

1.5 BETWEEN a0 AND a1

这个的话也比较简单。就像下面这张图一样使用就好了。

1.6 IN (option, ...)

这个的话也比较简单。就像下面这张图一样使用就好了。

1.7 IS NULL

这个的话也比较简单。就像下面这张图一样使用就好了。

1.8 IS NOT NULL

这个的话也比较简单。就像下面这张图一样使用就好了。

1.9 LIKE

这个的话稍微需要说一下。

1.9.1 %

% 是用来匹配任意多个(包括 0 个)任意字符。

比如说1%,那么它的额意思就是说包括1在内的所有以1开头的都要被包括在内。

就像下面这张图一样,因为这里t8就一个以1开头的,所以这边就取出来一个。

1.9.2 _

_ 匹配严格的一个任意字符

还是比如说1_,那么就是从10到19内的所有数。我们看下面这张图,这个_是必须要有一个数的,所以上面这个a1=1_的查询条件为空。

但是如果是_1的话,那么就是指11,21,31,41,51,61,71,81,91这些数。

1.10 AND

这个的话也比较简单。就像下面这张图一样使用就好了。

1.11 OR

这个的话也比较简单。就像下面这张图一样使用就好了。

1.12 别名不能用在 WHERE 条件中

SQL 语句的编写顺序和实际执行顺序是不同的。大致执行顺序如下:

  1. 先执行 from子句(确定数据来源表)。

  2. 然后执行 where子句(筛选行)。

  3. 再执行 select子句(选择列,并可能定义别名)。

也就是说,where子句的执行早于 select子句。当 where执行时,select中定义的别名还未被解析(相当于 "还不存在"),因此无法直接使用。

1.13 结果排序

-- ASC 为升序(从小到大)
-- DESC 为降序(从大到小)
-- 默认为 ASC

语法:

sql 复制代码
select 想要查询的列 别名 from 表名 order by 列名 desc或者asc

我们看下面这张图,我们可以发现排序的话是不用加where的。最后在后面加上desc的话就实现了降序排序,也就是从大到小。

PS:null比任何值都要小,所以在降序排序的时候是在最后面的。

1.13.1 多重排序

多重排序是我自己取的名字,就是指那些写了多个排序条件的排序。

我们看下面这张图,我们写了很多条件,那么它是怎么执行的呢?它的执行顺序是什么呢?

很简单,首先它是从左往右执行的(当然这边说的从左往右专指order by后面的那部分代码)。然后是当我们在第一个排序指令遇到相同的值的时候才会去执行其后面这个。

ORDER BY 子句中可以使用列别名。

1.14 联合使用

上面的各种筛选条件是可以在一起使用的。就像下面这张图一样。我们可以先找出两位数并且个位数是0的,然后在找出来的数据里面对其进行排序。

2. Update

接下来我们来聊聊表的更改。

语法:

sql 复制代码
update table_name set 想要更改的列=新值 确定列

这么看好像还有点抽象,给各位举个例子各位就明白了。我们看下面这张图,where a1=1就是为了找到具体要改的是那个数据,这边没有固定的写法,我们只要让计算机知道我们想要让他更改的是那个数据就好。

如果我们不写后面的where a1=1的话,那么默认就是给整张表里面的所有列的a2都改为15。

相关推荐
工具人55558 小时前
adb disable-verity
数据库·数据仓库·adb
白露与泡影9 小时前
Redis:我是如何与客户端进行通信的
数据库·redis·缓存
一只小bit13 小时前
MySQL 索引:从聚簇到普通索引,如何加快查询效率?
数据库·mysql·oracle
猫猫姐姐15 小时前
Flink基于Paimon的实时湖仓解决方案的演进
大数据·flink·湖仓一体
洛克大航海16 小时前
解锁 PySpark SQL 的强大功能:有关 App Store 数据的端到端教程
linux·数据库·sql·pyspark sql
XueminXu17 小时前
ClickHouse数据库的表引擎
数据库·clickhouse·log·表引擎·mergetree·special·integrations
冒泡的肥皂17 小时前
MVCC初学demo(二
数据库·后端·mysql
代码程序猿RIP17 小时前
【Redis 】Redis 详解以及安装教程
数据库·etcd
小生凡一17 小时前
redis 大key、热key优化技巧|空间存储优化|调优技巧(一)
数据库·redis·缓存