Oracle数据库之限定查询和排序显示介绍

五、限定查询和排序显示
5.1、ASP站长网限定查询
5.1.1 认识限定查询
例如:如果一张表中有 100w 条数据,一旦执行了 “ SELECT * FROM 表 ” 语句之后,则将在屏幕上显示表中全部数据行的记录,这样既不方便浏览,也可能造成死机的问题,所以此时就必须对查询的结果进行筛选,只选出对自己有用的数据即可,那么就可以通过 WHERE 指定查询的筛选条件。
这么多条数据一起显示肯定是无法浏览的。另外,如果数据量显示的过多,那么有可能出现死机的问题。所以下面首先来观察数据量大对于查询显示会存在什么问题。
在进行 Oracle 数据库安装的时候已经安装了样本方案数据库,所以现在必须将容器由 CDB 切换到 PDB 之中。
范例:以 nolog 的方式打开 sqlplus (在命令行终端)
 
sqlplus /nolog
范例:使用 sys 管理员登录
 
CONN sys/chagne_on_install AS SYSDBA;
范例:切换到 PDB 之中
 
ALTER SESSION SET CONTAINER=pdbmldn;
范例:打开 PDB
 
ALTER DATABASE pdbmldn OPEN;
范例:查看 sh 用户的数据表内容
 
SELECT COUNT(*) FROM sh.sales;
现在这张表中存在有 9w 多条记录,如果直接发出如下指令:
SELECT * FROM sh.sales;
现在显示结果一直不停变换,无法查看,按 Ctrl+C 停止。所以现在数据量一大,那么是不可能这样直接查看全部数据的,所以全部数据行的显示根本就不可能使用。很多时候往往需要针对所需要的数据进行筛选,而筛选就是限定查询的功能。
现在连接到 c##scott 用户:
conn c##scott/tiger;
5.1.2 限定查询语法:
SELECT [DISTINCT] * | 列名称 [AS] [列别名],列名称 [AS] [列别名],...
FROM 表名称[表别名]
[WHERE 条件( s )];
在这个语法之中,就是比之前的语法多了一个 WHERE 子句,在 WHERE 子句之中可以设置一系列的过滤条件。而这些条件可以设置多个,那么这多个条件之间就可以利用逻辑运算进行连接。
 
逻辑运算符共有以下三种:
 
与(AND):连接多个条件,多个条件同时满足时才返回 TRUE,有一个条件不满足结果就是 FALSE ;
或(OR):连接多个条件,多个条件之中只要有一个返回 TRUE ,结果就是 TRUE ,如果多个条件返回的都是 FALSE ,结果才是 FALSE ;
非(NOT):求反操作,可以将 TRUE 变 FALSE ,FALSE 变 TRUE 。
逻辑真值表:
 
NO. 条件 x 条件 y x AND y x OR y NOT x
1 TRUE TRUE TRUE TRUE FALSE
2 TRUE NULL NULL TRUE FALSE
3 TRUE FALSE FALSE TRUE FALSE
4 NULL TRUE NULL TRUE NULL
5 NULL NULL NULL NULL NULL
6 NULL FALSE FALSE NULL NULL
7 FALSE TRUE FALSE TRUE TRUE
8 FALSE NULL FALSE NULL TRUE
9 FALSE FALSE FALSE TRUE TRUE
范例:统计出基本工资高出 1500 的全部雇员信息
 
现在的查询已经出现了一个条件要求,所以在这种情况下就必须使用 WHERE 子句进行条件的设置。
SELECT * FROM emp WHERE sal>1500;
现在可以发现并不是所有的数据都显示了,只是部分的数据显示,而且这部分都是满足条件的数据。
 
现在对于 SQL 语法而言,就具备了三个子句:
第一步:执行 FROM 子句,来控制数据的来源
第二步:执行 WHERE 子句,使用限定符进行数据行的过滤
第三步:执行 SELECT 子句,确定要显示的数据列

 
5.1.3 对数据进行限定查询
在之前所使用的 “ > ” 是一个关系运算符,在标准 SQL 之中定义了许多的运算符。
常用限定运算符:
NO 运算符 符号 描述
1 关系运算符 >、<、>=、<=、=、!=、<> 进行大小或相等的比较,其中不等于有两种:!= 和 <>
2 判断 null IS NULL 、IS NOT NULL 判断某一列的内容是否是 null
3 逻辑运算符 AND 、OR、NOT AND 表示多个条件必须同时满足,OR 表示只需要有一个条件满足即可,NOT 表示条件取反,即:真变假,假变真
4 范围查询 BETWEEN 最小值 AND 最大值 在一个指定范围中进行查找,查找结果为:“ 最小值 <= 内容 <= 最大值 ”
5 范围查询 IN 通过 IN 可以指定一个查询的范围
6 模糊查询 LIKE 可以对指定的字段进行模糊查询
5.1.3.1 关系运算符
关系运算就是确定大小、相等关系的比较。
范例:要求查询出所有基本工资小于等于2000的全部雇员信息
 
SELECT *
FORM emp
WHERE sal<=2000;
范例:根据之前的查询结果发现 SMITH 的工资最低,现在希望可以取得 SMITH 的详细资料。
 
SELECT *
FORM emp
WHERE ename='SMITH';
范例:查询出所有办事员(CLERK)的雇员信息
 
SELECT *
FORM emp
WHERE job='CLERK';
但是在使用关系运算符判断字符数据的时候请一定要主要大小写的编写问题。因为 Oracle 是区分大小写的。
范例:错误的代码
 
SELECT *
FORM emp
WHERE job='clerk';  // 不会有结果返回
范例:取得了所有办事员的资料之后,为了和其他职位的雇员对比,现在决定再查询出所有不是办事员的雇员信息。
 
既然现在职位不是办事员,那么肯定使用不等于符号(<>, !=)
 
实现一:
SELECT *
FORM emp
WHERE job<>'CLERK';   
实现二:
SELECT *
FORM emp
WHERE job!='CLERK';
范例:查询出工资范围在 1500 ~ 3000 (都包含)的全部雇员信息
 
现在这个判断是两个条件,而且这两个条件肯定需要同时满足,那么就使用 AND 进行条件的连接
SELECT *
FORM emp
WHERE sal>=1500 AND sal<=3000;
范例:查询职位是销售,并且基本工资高于 1200 的所有雇员信息
 
SELECT *
FORM emp
WHERE job='SALESMAN' AND sal>1200;

dawei

【声明】:九江站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。