【SQL实战】演出信息管理

WHERE子句

1、WHERE 子句是在 SELECT ... FROM ... 的基础上使用的,你可以把它视作组成 SELECT 语句的一块“积木”。

2、在 SELECT 语句的 FROM 子句后添加 WHERE 子句,SQL 就会根据 WHERE 子句中的条件筛选数据

SELECT 字段名
FROM 表名
WHERE 筛选条件

常用条件操作符

比较运算

相等:=

不等:!=

​ <>

大于:>

大于等于:>=

小于:<

小于等于:<=

范围筛选

连续数值范围:BETWEEN

离散范围:IN

搜索模式匹配

LIKE

逻辑运算

与运算:AND

或运算:OR

非运算:NOT

BETWEEN操作符

范围筛选要通过 BETWEEN 操作符来完成,单词 between 的意思是“在……之间”,SQL 中我们用它来找到给定最小值、最大值之间的数据。

使用这个操作符时,我们需要在 BETWEEN 后面写好数值范围的最小值和最大值,二者用 AND 连接,格式如下:

TDaOl8.png

上图中的 WHERE 子句,含义是:筛选出 price 列的值大于等于 100,小于等于 200 的行,AND 左右的两个数字构成了一个连续的数值区间,作为查询范围。

注意:一定要让最小值在前,最大值在后,顺序不可以颠倒,否则就查不到结果啦!

我们把 WHERE 子句拼到 SELECT 语句中,完整的查询语句和查询结果如下:

SELECT  *
FROM    events
WHERE   price BETWEEN 100 AND 200;

日期筛选

1、越晚发生的日期,数值越大

2、所以,><= 这些操作符,在日期比较中也是通用的。如果想要筛选出 2021 年 10 月 31 日以前的演出,筛选条件可以写成 WHERE date < '2021-10-31'

SELECT  *
FROM    events
WHERE   event_time < '2021-10-31';

3、现在我们了解了 SQL 中日期值比较大小的规则。如果要筛选某个范围内的日期,同样要请 BETWEEN 关键字出马。

4、前面我们强调过,使用 BETWEEN 关键字做范围筛选时,要将范围的最小值写在 AND 左侧,最大值写在 AND 右侧。日期筛选中也一样,筛选条件的格式为:

SELECT  *
FROM    events
WHERE   event_time BETWEEN '2021-11-01' AND '2021-11-30';

分本筛选

1、查询语句中,筛选条件是 event_name = '蓝莓音乐节',也即 查询列 = TEXT 类型的目标文本,所有文字都要与目标文本一一匹配,这也是文本筛选中最常见的模式:精确搜索。

2、精确搜索能满足大部分文本筛选的需求,不过对于更复杂的查询需求,比如在 events 表中查找所有北京的演出,精确搜索就无能为力了。

3、更灵活的文本筛选,要求 SQL 根据给定的 搜索模式,找到所有具备相同特征的文本。这要借助 通配符 来完成。

4、通配符是一个相当好用的小帮手,它专门用来代替一个或多个字符,熟悉 Excel 的同学可能会对它有所耳闻。

5、SQL 中常用的通配符有两个:百分号 % 用来代替多个字符,下划线 _ 用来代替单个字符。要怎么用呢?我们以 % 为例来体会下。

6、从 events 表中我们可以看到,所有北京的演出,其 site 列的值都是以“北京-”开头、总体长度不确定的文本——提炼一下共同特征,它们都是 TEXT 类型,内容形式为 '北京-任意长度的其他字符'

7、百分号 % 可以代替多个任意字符,我们用它来替换掉短划线 - 之后的内容,就得到了搜索模式:'北京-%'

8、怎样在 WHERE 子句中应用这个搜索模式呢?这里要用到一个新的操作符:LIKELIKE 操作符会告诉 SQL,“搜索模式都给你列在后面啦,请你帮我找到符合这个模式的所有数据!🙇🙇🙇”

TDvsHK.png

SELECT  *
FROM    events
WHERE   site LIKE '北京-%';

高级筛选

1、SQL 支持的逻辑操作符有 ANDORNOT,它们三个代表了我们生活中最常用的三类逻辑运算:与、或、非。

  • AND 操作符:与运算,被连接的条件全部为真,复合条件才为真;

  • OR 操作符:或运算,被连接的条件有一个为真,复合条件即为真;

  • NOT 操作符:非运算,否定其后跟的条件。

2、NOT操作符的优先级高于ORAND`,在与或非三种逻辑运算之间,SQL 会首先执行非运算。

SELECT  *
FROM    events
WHERE   NOT (event_type = '话剧' OR event_type = '舞剧');

IN操作符

IN 操作符会对待查找的值给出一个允许的范围。在筛选时,我们会把这些允许的值用 英文逗号 隔开,然后统一用 英文括号 包裹起来,写成 (值1, 值2, 值3, ...) 的形式

INBETWEEN 的区别在于,BETWEEN 筛选的范围,是一个连续的数值范围,而 IN 筛选的范围则是独立、分散的一组值,比如几段不同的文本、几个不同的数字、几个不同的日期等等。

SELECT  *
FROM    events
WHERE   site IN ('北京-糖果大楼', '上海-人民体育场', '广州-蓓蕾剧院');
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值