IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 关于SQL的学习记录(七、高级条件查询) -> 正文阅读

[大数据]关于SQL的学习记录(七、高级条件查询)

高级条件查询

组合WHERE子句:
AND运算符
AND运算符只有当两边操作数均为True时,最后结果才为True。人们使用AND描述“与”(而且)的关系,即当满足第一个条件而且还要满足第二个条件时才会通过审核。
语法格式:

SELECT [DISTINCT|ALL] 字段名1[,字段名...]
FROM 表名
WHERE 条件表达式 AND 条件表达式 AND ...
ORDER BY 某一字段名 [ASC|DESC];

OR运算符
OR运算符只有当两边操作数均为False时,最后结果才为False,只要一边是True则最后结果为True。根据OR的这种运算规则,人们使用OR描述“或”(或者)的关系,即当满足任何一个条件就可以通过审核。
语法格式:

SELECT [DISTINCT|ALL] 字段名1[,字段名...]
FROM 表名
WHERE 条件表达式 OR 条件表达式 OR ...
ORDER BY 某一字段名 [ASC|DESC];
#如果以上几个条件表达式筛选的是同一字段中的内容,可以用IN替换。
#例:name='ZHANG' OR name='ZHONG' 等价于 name IN (ZHANG,ZHONG)

ANDOR的优先顺序问题
WHERE子句中可以包含任意数量的ANDOR运算符,并且允许两者结合使用。

在表达式中,如果同时出现了ANDOR两种运算符,并非从左到右按顺序运算,而是优先执行AND,然后执行OR运算符。即优先级AND>OR

IN运算符
IN运算符的运算规则是:当x在集合{Value1,Value2…ValueN}中时,表达式 IN (Value1, Value2,… ValueN)为True,而x不在集合{Value1, value2…ValueN}中时,上面的表达式为False。例:
8 IN (2,5,8,13)因为8在集合{2,5,8,13}中,所以表达式的值为True
7 IN (2,5,8,13)因为7不在集合{2,5,8,13}中,所以表达式的值为False
语法格式:

SELECT [DISTINCT|ALL] 字段名1[,字段名...]
FROM 表名
WHERE 字段名 IN 集合
ORDER BY 某一字段名 [ASC|DESC];
#在IN运算符表达式中,集合必须用圆括号括住,并且各元素之间用逗号(,)分隔。

使用IN运算符的优点:
IN运算符有如下优点:
?当条件很多时,使用IN运算符会使语句更加简洁、清楚。
?IN运算符的执行速度要比OR运算符的更快。
?IN运算符最大优点是:其后条件列表集合中,可以放置其它SELECT语句,即子查询。

NOT运算符
NOT运算符的作用是对其后的表达式求反。
语法格式:

SELECT [DISTINCT|ALL] 字段名1[,字段名...]
FROM 表名
WHERE  NOT 条件表达式
ORDER BY 某一字段名 [ASC|DESC];

NOT运算符不仅可以对表达式求反,还可以和一些特殊运算符结合使用,例如IS NOT NULLNOT BETWEENNOT IN等就是结合使用的例子。

实现模糊查询:
结合使用LIKE运算符和通配符可以对表进行模糊查询,即仅仅使用查询内容的一部分查询数据库中存储的数据。
LIKE运算符
LIKE运算符也可以单独使用,单独使用时,其功能与等于运算符(=)相同。不过,需要注意的是LIKE运算符只支持字符型数据。
语法格式:

SELECT [DISTINCT|ALL] 字段名1[,字段名...]
FROM 表名
WHERE  字段名 LIKE 字段内容
ORDER BY 某一字段名 [ASC|DESC];

%通配符
在SQL语言中,使用百分号(%)通配符代表0个或多个字符。

百分号(%)通配符举例说明
a%代表开头字母为a的字符串
%a代表以字母a结尾的字符串
%a%代表含有字母a的字符串
a%b代表以字母a开头,字母b结尾的字符串
%1998%代表含有1998的字符串或者日期时间型数据

注意:在MySQL中,“%1998%”不可以写为“%1998”可写为“1998%”。但在SQL Server和Oracle中,“%1998%”既不可写“%1998”,也不可写为“1998%”
使用“%”通配符查询日期值中的某部分时,DBMS是将日期值转换为字符串进行匹配的。在不同DBMS及不同时区中,日期的表示有所不同

_通配符
一个_代表一个字符。例:张_ 、 __辉 、 ___

④正则表达式
WHERE子句的条件中,还可以使用正则表达式,不同数据库环境中使用正则表达式的方式不同:
?在SQL Server中,可以直接用中括号“[]”括起来放在LIKE后面的条件表达式中即可
?MySQL则需要使用关键字REGEXP
语法格式:

SELECT [DISTINCT|ALL] 字段名1[,字段名...]
FROM 表名
WHERE 字段名 REGEXP 正则表达式
ORDER BY 某一字段名 [ASC|DESC];

?Oracle则需要使用REGEXP_LIKE正则表达式函数实现

举例说明
[NR]%代表以“N"或”R“字母开头的字符串
[a-d]%ing代表以”a“或”b“或”c”或“d”字母开头,且以“ing”结尾的字符串
[c-emn]%代表以“c”或“d“或”e“或”m“或”n“字母开头的字符串
N[^B]%代表以字母”N“开头,并且第二个字母不是”B“的字符串
%1975[5-9]%代表数字1975或1976或1977或1978或1979
[1][012]%代表数字10或11或13

⑤定义转义字符
在不同的环境下,定义转义字符的方法也不同。
?SQL Server
如果运行环境为SQL Server,则使用ESCAPE关键字定义转义字符。
例如,要查询最后两个字符为百分之五(5%)的所有字符串,其LIKE语句为:LIKE '%5#%' ESCAPE '#'
其中,ESCAPE '#' 定义了转义字符“#”,它表示紧跟着“#”的“%”为普通字符,而并非是通配符。
注意:只有紧跟在转义字符后面的通配符才被看作转义字符,例如,上面的LIKE语句中,第一个“%”仍当做通配符来使用,只有紧跟着“#”的“%”(第二个)才被当作普通字符。
?MysQL、Oracle
如果运行环境为MySQL或Oracle时,则使用反斜杠()作为转义字符。
查询最后两个字符为百分之五(5%)的所有字符串,在Oracle中,编写其LIKE语句为:LIKE '%5\%'
此时,需要注意,反斜杠作为转义字符时应当先将其激活。激活的方法为在SQL Plus中使用如下命令。set escape \;
定义了转义字符后,在使用有转义字符的LIKE语句查询。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-09-05 11:05:11  更:2021-09-05 11:06:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 16:33:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码