读SQL学习指南(第3版)笔记05_过滤
2023-08-25 07:32:13 来源:博客园
(相关资料图)
1.不需要考虑排除任何列
1.1.清除数据表中所有的内容
1.2.暂存新数据仓库的数据
1.3.向数据表中新添一列后
1.4.修改数据表中的所有行
1.5.检索消息队列表中的所有行
2.where子句
2.1.可以在其中指定一个或多个过滤条件,用于限制SQL语句处理的行数
2.2.使用括号
2.2.1.同时使用运算符and和or的3个或以上条件,应该使用括号向数据库服务器和其他阅读代码的人表明意图
2.3.使用not运算符
3.构建条件
3.1.条件由一个或多个表达式并通过一个或多个运算符组合而成
3.2.表达式
3.2.1.数字
3.2.2.数据表或视图中的列
3.2.3.字符串字面量
3.2.4.内建函数
3.2.4.1.concat("Learning", " ", "SQL")
3.2.5.子查询
3.2.6.表达式列表
3.2.6.1.("Boston", "New York", "Chicago")
3.3.运算符
3.3.1.比较运算符
3.3.1.1.=、!=、<、>、<>、like、in和between
3.3.2.算术运算符
3.3.2.1.+、−、*和/
4.条件类型
4.1.相等条件
4.1.1.一个表达式与另一个表达式之间的相等关系
4.2.不等条件
4.2.1.用于断言两个表达式之间的不等关系
4.3.范围条件
4.3.1.检查表达式的值是否处于某个范围
4.3.2.通常用于数值型或时间型数据
4.3.3.between运算符
4.3.3.1.当需要同时限制范围的上限和下限时,可以选择使用between运算符构建单个查询条件,而不用两个单独的条件
4.3.3.2.首先必须指定范围的下限(在between之后),然后指定范围的上限(在and之后)
4.3.4.字符串范围
4.3.5.成员条件
4.4.匹配条件
4.4.1.使用通配符
4.4.1.1.以某个字符开始(或结束)的字符串
4.4.1.2.以某个子串开始(或结束)的字符串
4.4.1.3.在字符串中的任意位置包含某个字符的字符串
4.4.1.4.在字符串中的任意位置包含某个子串的字符串
4.4.1.5.具备特定格式(无关单个字符)的字符串
4.4.1.6.mysql
-> SELECT last_name, first_name -> FROM customer -> WHERE last_name LIKE "Q%" OR last_name LIKE "Y%";4.4.2.使用正则表达式
4.4.2.1.regexp运算符接受一个正则表达式
4.4.2.1.1.mysql
-> SELECT last_name, first_name -> FROM customer -> WHERE last_name REGEXP "^[QY]";4.4.2.1.2.该查询现在只包含了使用正则表达式的一个条件,不再是使用通配符的两个条件
4.4.2.2.在Oracle Database中,使用regexp_like函数代替regexp运算符
4.4.2.3.SQL Server允许正则表达式与like运算符配合使用
5.null
5.1.没有合适的值
5.1.1.ATM机上的自助交易并不需要employee ID列
5.2.值未确定
5.2.1.在创建客户所在行时不知道其ID
5.3.值未定义
5.3.1.为某个尚未添加到数据库的产品创建账户
5.4.表达式可以为null,但不能等于(never equal)null
5.5.两个null值不相等
5.5.1.为了测试表达式是否为null,需要使用is null运算符
5.6.如果要查看某列是否已经被赋值,可以使用is not null运算符
5.7.使用一个不熟悉的数据库时,最好是找出数据表中哪些列允许出现null,这样就可以在过滤条件中采取适当的措施,以防止遗漏数据
标签: