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。

相关推荐
为什么不问问神奇的海螺呢丶1 分钟前
oracle 数据库巡检 sql
数据库·sql·oracle
麦麦鸡腿堡1 分钟前
MySQL数据库操作指令
数据库·mysql
未来之窗软件服务3 小时前
一体化系统(九)智慧社区综合报表——东方仙盟练气期
大数据·前端·仙盟创梦ide·东方仙盟·东方仙盟一体化
陈天伟教授6 小时前
人工智能训练师认证教程(2)Python os入门教程
前端·数据库·python
火星资讯7 小时前
Zenlayer AI Gateway 登陆 Dify 市场,轻装上阵搭建 AI Agent
大数据·人工智能
星海拾遗7 小时前
git rebase记录
大数据·git·elasticsearch
Elastic 中国社区官方博客7 小时前
Elasticsearch:在分析过程中对数字进行标准化
大数据·数据库·elasticsearch·搜索引擎·全文检索
聪明努力的积极向上7 小时前
【MYSQL】字符串拼接和参数化sql语句区别
数据库·sql·mysql
代码or搬砖7 小时前
RBAC(权限认证)小例子
java·数据库·spring boot
神仙别闹7 小时前
基于QT(C++)实现学本科教务系统(URP系统)
数据库·c++·qt