1、简介:在简单查询的基础上,可控制结果中只保留需要的数据行。
2、基本语法:SELECT [DISTINCT] * | 列名称 [别名], 列名称 [别名], ... FROM 表名[别名] [WHERE 过滤条件(s)];
2.1 以上结构中,首先执行FROM子句,确定数据来源;然后使用WHERE找到显示满足条件的数据行;最后执行SELECT子句控制要显示的数据列。
行数据的过滤,采用的是条件的形式。
WHERE一般写在FROM之后,但它紧接着FROM执行;SELECT写在最前,但由于它在WHERE之后执行,所以SELECT中定义的别名WHERE子句中无法使用。
WHERE控制显示数据行,WHERE控制显示数据列。
2.2 以上结构中,需用到限定查询符:
2.2.1 关系运算符:>, <, >=, <=, !=(<>), =
- 作用:比大小, boolean
- 查询table表中col2大于A的col1列信息
SELECT col1 FROM table WHERE col2 > A;
- 查询table中col列大于A的全部信息
SELECT * FROM table WHERE col > A;
- 查询table中,col是B的信息
SELECT * FROM table WHERE col = B;
Oracle中,字符串字母区分大小写
Oracle中,不需要针对不同数据类型使用相对应的运算符。运算符适配全部数据类型
2.2.2 逻辑运算符:AND, OR, NOT
- 作用:连接多个条件
- AND:所有参与连接的条件,都要满足
- OR:所有参与连接的条件里,有一个满足即可
- NOT:对条件结果取反
- 查询table中同时满足条件A和B的信息
SELECT * FROM table WHERE A AND B;
2.2.3 范围运算符:BETWEEN...AND
- 作用:对数据进行范围判断
- 查询table中,col在A和B之间的信息
SELECT * FROM table WHERE col BETWEEN A AND B;
2.2.4 谓词范围:IN, NOT IN
- 作用:判断数据是否在给定的范围内,与BETWEER...AND的区别在于IN的范围更具体,不连续
- 查询table中,col为A、B、C的信息
SELECT * FROM table WHERE col IN (A, B, C);
SELECT * FROM table WHERE col IS A OR col IS B OR col IS C;
- NOT IN操作中如果掺杂了NULL,不会有任何返回结果。因为有些数据永远不可能为空,所以NOT IN NULL就等于针对全部数据进行操作,数据库对此进行了限制,不会返回结果。
- IN操作中使用NULL,不会对结果有任何影响。
2.2.5 空判断:IS NULL, IS NOT NULL
- “空”:不确定的内容。数值类型中的“NULL”不是0。针对“空”的判断不能用关系运算符,只能用空判断符。
- 作用:判断某数据是否不为空。
- 查询table中,所有有col的信息。
SELECT * FROM table WHERE col IS NOT NULL;
SELECT * FROM table WHERE NOT col IS NULL;
2.2.6 模糊查询:LIKE
- 作用:在数据库中实现模糊查询
- 可使用两个通配符:
- "_":匹配任意一位字符
- "%":匹配任意零位、一位、多位字符
- 查询table中,col的第二位是A的全部信息
SELECT * FROM table WHERE col LIKE '_A%';
- LIKE可用在全部数据类型上
- 使用LIKE时,不指定关键字,则查询全部数据。