手记

oracle简单查询之限定查询(控制行)

查询(控制列)
1、简单查询
1.1、语法格式
SELECT [DISTINCT] | 列名 [AS] [别名] ,列名 [AS] [别名] , --2、 控制要显示的数据列
FROM 表名称 [别名] ; --1、 确定查询的数据来源
1.2、参数说明
1、SELECT 关键字 查询数据
2、FROM 关键字 后面跟数据来源
3、 DISTINCT --表示去掉重复行数据 distinct关键字只能跟在select关键字之后
4、
--查询选择所有的列,count(*)意味着计算所有的行,表示通配符时,表示0个或任意多个字符
5、AS --关键字不能用于指定表的别名,可以用来指定列名的别名,指定列的别名的时候可以省略
1.3、示例代码
1.查询每个雇员(emp)的编号(empno)、姓名(ename)、职位(job)、基本工资(sal)

SELECT empno,ename,job,sal FROM emp;

2.使用别名方式查询(开发中禁止使用中文别名)

SELECT empno 编号,ename 姓名,job 职位,sal 薪资 
FROM emp;

2、简单查询(+、-、×、÷)
2.1、说明
1.四则运算可以对数字类型,日期类型,数字类型的字符串进行运算

2.运算符的优先级跟数学的加,减,乘,除一样
2.2 、示例代码
1.查询每个雇员的编号、姓名、职位、年薪,而且每位雇员,每个月有 300 元的饭食补助、180元的交通补助,年底的时候可以领到 14个月的基本工资

SELECT empno 编号,ename 姓名 ,job 职位,(sal*14 + (300+180)*12) 年薪
 FROM emp

三、限定查询(控制行)
3.1、概要
​ 在之前的简单查询中,是将所有的记录进行显示,但是现在可以对显示的记录进行过滤的操作,而这就属于限定查询的工作了,限定查询就是在之前语法的基础上增加了一个WHERE子句,用于指定限定条件

在使用 WHERE 子句操作的时候可以进行条件的判断,而对于条件的判断主要有以下几类操作
1关系运算

、<、>=、<=、<>、!=

2范围判断

BETWEEN AND

3判断是否为空

IS NULL
IS NOT NULL

4指定范围的判断

IN
NOT IN

5模糊查询

LIKE
NOT LIKE
3.2、语法格式

SELECT [DISTINCT] * | 列名 [别名] ,列名 [别名] , --3、 控制要显示的数据列
FROM 表名称 [别名]
--1、 确定数据来源
[WHERE 条件(s)] ;
-- 2、 根据判断条件选择参与的数据行
3.3、限定操作符
3.3.1、关系运算(>、<、>=、<=、<>、!=)
3.3.1.1、等于(=)、不等于(!=或者<>)

查询出所有职位是办事员的雇员信息

1.错误的写法
  SELECT * 
  FROM emp 
  WHERE job='clerk'(所有的数据都是区分大小写的)
2.正确的写法
  SELECT * 
  FROM emp 
  WHERE job='CLERK'

查询所有职位不是销售人员的信息

SELECT * 
FROM emp 
WHERE job<>'SALESMAN' ;

3.3.1.2、小于<、小于等于 <=

查询出基本工资不大于1500

SELECT * 
FROM emp 
WHERE sal <= 1500;

3.3.1.3、大于>、 大于等于>=

找出奖金高于工资的员工

SELECT * 
FROM  empWHERE comm>sal;

找出工资大于或等于3000的员工

SELECT ename ,sal 
FROM emp
WHERE sal>=3000;

3.3.2、逻辑运算(AND OR)

说明

在使用where 语句的时候可能会存在编写多个条件的情况,那这个时候就必须使用逻辑运算符了

语法格式

AND:条件 AND 条件 AND 条件; 所有条件都要同时满足
OR:条件 OR 条件 OR 条件;所有条件只要有一个满足即可

示例代码

1、查询工资在1500~3000之间的全部雇员信息

SELECT * 
FROM emp
WHERE sal
>
=1500 AND sal
<
=3000;

2、查询出职位是办事员(job='CLERK'),或者是销售人员(job='SALESMAN')的全部信息

SELECT * 
FROM emp
WHERE job='CLERK' OR job='SALESMAN';

3.3.3、范围判断(BETWEEN AND)

说明

表示的是一个范围的判断过程

语法格式

BETWEEN 最小值 AND 最大值”,

示例代码

1、查出工资在1000~2000之间的员工

SELECT * 
FROM emp
WHERE sal BETWEEN  1000 AND 2000;

2、查出入职时间在1985年1月20至1987年5月20之间入职的员工

SELECT * 
FROM emp
WHERE hiredate BETWEEN  '20-1月 -85' AND '20-5月 -87';

SELECT *
FROM emp
WHERE hiredate 
BETWEEN date '1985-01-01' 
AND date '1985-05-20';

3.3.4、判断是否为空(IS[NOT]NULL)

查询出所有领取奖金的雇员信息

SELECT * 
FROM emp
WHERE comm IS NOT NULL;

SELECT * 
FROM emp
WHERE NOT comm IS NULL;

查询出所有不领取奖金的雇员

SELECT * 
FROM emp
WHERE comm IS NULL

3.3.5、指定范围的判断([NOT]IN)

说明

IN操作符表示的是指定一个查询的范围

语法格式

字段 IN (数值,数值,…)

示例代码

1、查询出雇员编号是7369、7566、7799的雇员信息

SELECT * 
FROM emp
WHERE empno=7369 OR empno=7566 OR empno=7799

SELECT * 
FROM emp
WHERE empno IN (7369,7566,7799);

2、查询出姓名为 SMITH,ALLEN,KING的雇员信息

SELECT * 
FROM emp 
WHERE ename in ('SMITH','ALLEN', 'KING');

3、查询出雇员编号不是7369、7566、7799的雇员信息

SELECT * 
FROM emp
WHERE not empno IN (7369,7566,7799);

.3.6、模糊查询

说明

LIKE子句的功能是提供了模糊查找的操作,程序里出现的搜索操作,都属于LIKE子句的实现,但是要想使用LIKE子句则必须认识两个匹配符号

匹配单个字符:_ --匹配任意一个字符

匹配任意多个字符:% --匹配 0 个、1 个或多个任意字符

语法

字段 LIKE 关键字

示例代码

1、查询出雇员第二个字母为“L”的雇员信息

select * 
from emp 
WHERE ename like '_L%';

2、查询出雇员姓名以字母“S”开头的雇员信息

SELECT * 
FROM emp 
WHERE ename like 'S%'

3、查询出雇员姓名包含字母“S”的雇员信息

SELECT * 
FROM emp 
WHERE ename like '%S%'

4、查询入职年份为81年的雇员信息

SELECT * 
FROM emp 
WHERE hiredate like '%81'

5、查询工资值中包含数字5的雇员信息

SELECT * 
FROM emp 
WHERE sal like '%5%'

6、查询所有员工中ename 包含S ,或者入职日期中包含数字1或者工资中含有数字5

SELECT * 
FROM emp 
WHERE ename LIKE '%S%' OR hiredate LIKE '%1%' OR sal LIKE '%5%'

​

3.3.7、总结

作用:对SQL语句返回的数据集进行筛选

位置:紧跟在FROM子句后

内容:由一至多个限定条件组成,限定条件由表达式, 比较符, 字面值组成所有字符串和日期要用单引号括起来,数值不需要单引号。

日期在Oracle里有特定的格式,’DD-MM-YY’(具体看日期的显示格式),否则作为一个字符串WHERE后面跟多个条件时尽量将能过滤大部分数据的写在前面(没效果的)
1人推荐
随时随地看视频
慕课网APP