简单查询
1、控制列
简单查询要使用DML中的查询部分支持,对于简单查询的通俗理解就是就是将表中的全部记录都查询出来,但是可以通过语法控制列的显示。
简单查询SQL语法结构:
【②SELECT字句控制所要查询的数据列】SELECT [DISTINCT] * | 列 [别名], 列 [别名],…
【①FROM 控制字句的数据来源】FROM 表名称 [别名];
除了进行基本的查询列之外,简单查询也支持四则运算,可以直接使用列的内容进行四则运算。(定义别名时不建议使用中文)
在进行简单查询的过程之中,还支持数据的连接操作,使用“||”,对于数据的连接操作,考虑两种类型的数据:
-
普通数字:直接编写(SELECT ename||1 from emp;)
-
字符串: 单引号声明 (SELECT empno||‘hello’ from emp;)
简单查询中的关键字DISTINCT关键字,主要目的是消除重复内容,重复内容指的是查询出来所有列的内容都重复。
2、限定查询(控制行)
如果想要对所选择的数据列进行控制,利用where字句完成,此时SQL语法结构
【③选出所需要的数据列】SELECT [DISTINCT] * | 列 [别名],列 [别名],列 [别名]…
【①确定数据来源】FROM 表名称 [别名]
【②筛选数据行】WHERE 限定条件(s);
SELECT 子句是整个语法最后执行的,但是如果要进行数据筛选,必须要使用若干个条件运算符:
-
关系运算符:>、<、=、>=、<=、!=(<>);
-
范围运算:BETWEEN…AND…;
-
空判断:IS NULL、IS NOT NULL;
-
IN 判断:IN 、NOT IN、exit()(复杂查询);
-
模糊查询:LIKE、NOT LIKE。
以上限定符都只能判断一次,如果现在有若干个限定符,那么就需要进行若干个限定符的连接,可以使用逻辑运算符:AND(与)、OR(或)、NOT(非);
-
与操作表示所有的判断条件都满足时返回真(true)
-
或操作表示若干个判断条件只要有一个满足就返回真(true)
以上所给出的判断符号是SQL中的标准支持。
-
3、关系运算符
范例:查询薪资小于3000的雇员
4、逻辑运算符
范例:查询不是办事员,但是工资小于3000 的雇员
范例:查询出职位是办事员,或者工资大于3000的雇员
除了AND和OR之外,还可以使用NOT进行求反,即:true变为false,false变为true
范例:查询工资小于等于2000的员工
5、范围运算
BETWEEN…AND的主要功能是进行范围的查询
语法: WHERE 字段| 数值 BETWEEN 最小值 AND 最大值。(包含边界值)
范例:查询出工资在1500到3000的雇员
效率问题:使用between…and 是一个运算符,而使用关系与逻辑的组合是两个运算符,所以使用between…and 效率更高。
在Oracle中的所有运算符都不受数据类型的控制,除了数字,也可以使用字符串或者日期进行判断。
日期判断
范例:查询所有在1981年雇佣的雇员信息
-
范围:1981-01-01到 1981-12-31 按照已有的数据结构通过字符串来描述日期
6、空判断
null从数据库定义上来讲属于一个未知的数据,任何情况下如果任何一个数字与null进行计算,那么结果恒为null。
null、空、0的区别:
null:表示不知道(例如:电话号码填null 表示有电话号码,但是暂时不知道)
空:表示没有(没有电话号码)
0:表示数字0
在某些数据列上是允许存在有null值的,但是null不能使用关系运算判断,关系运算符判断的是数据,null不是空字符串,也不是数字0.所以在SQL之中只能通过IS NULL来判断为空、IS NOT NULL(NOT 列 IS NULL) 来判断不为空。
范例:查出所有领取佣金的雇员
7、IN操作符(谓词IN)
IN指的是根据一个指定的范围进行数据查询。
范例:查询出雇员编号是7369、7366、7388、9999的雇员信息
①利用关系运算符查找
②利用IN操作符
在比较①和②时,发现②不仅短而且性能好。
在使用IN的同时,其实还可以使用NOT IN,但是在使用NOT IN时,如果查询的数据范围之中有null值,则不会有任何结果返回,IN操作无此限制。
8、模糊查询:LIKE
LIKE可以实现数据的模糊查询操作,如果要想使用LIKE则必须使用如下两个匹配符号:
- “_”: 匹配任意的以为符号
- “%”: 匹配任意的符号 (包含匹配 0位、1位、多位) 。
范例:查询所有雇员中以字母A开头的雇员信息
范例:查询所有雇员中第二个字母是M的所有雇员
范例:查询雇员姓名中任意位置上存在有字母A的信息
关于LIKE的两点说明:
-
如果在使用LIKE进行限定查询的时候,没有设置任何的关键字,那么表示查询全部;
-
LIKE 可以在任意数据类型上使用
虽然所有的数据类型都支持LIKE,但是往往会在字符串上使用,大部分的系统搜索(不包含搜索引擎)功能也都是通过此语句实现的。
9、查询排序
在默认情况下进行数据查询的时候,都会按照自然顺序进行数据排列。用户想要自己来进行排序操作,可以使用ORDER BY子句。
SQL 语法结构:
【③选出所需要的数据列】SELECT [DISTINCT] * | 列 [别名],列 [别名],列 [别名]…
【①确定数据来源】FROM 表名称 [别名]
【②筛选数据行】WHERE 限定条件(s);
【④数据排序】ORDER BY 排序字段[ASC | DESC] ,排序字段 [ASC | DESC] …;
ORDER BY 是在SELECT 子句之后执行,所以ORDER BY 可以使用SELECT 子句定义的别名,而WHERE 子句不可以。
字段排序两种形式(排序可以在任意数据类型上进行,包括字符串、日期):
- 升序:ASC, 默认不写排序也是升序。
- 降序: DESC 由高到低进行排序。
范例: 按照工资由高到低进行排序
除了可以进行单一字段的排序,也可以进行字段的混合排序操作,指的是可以进行若干个字段的排序。
范例:按照工资由高到低排序,如果工资相同,则按照雇佣日期由早到晚排序
范例:查询出所有办事员的编号、职位、年薪,按照年薪由高到低排序。