Oracle-DQL 2- 限定和排序
1.where子句
--查询30号部门员工的姓名,职位和工资
SELECT ename,job,sal,deptno FROM emp
WHERE deptno = 30;
--查询职位是manager的员工
SELECT * FROM emp
WHERE job = 'MANAGER';
--手动输入字符串要加单引号,并且区分大小写
-- 比较条件的两边的数据类型必须一致
--查询工资高于2000的员工信息
SELECT * FROM emp
WHERE sal > 2000;
--where字句后面必须是一个完整的逻辑表达式,结果要么为真要么为假
--在数据库中,这样的逻辑表达式通常是比较运算:= > < >= <= <>(!=)
--比较条件可以是某列数据和手动输入的数据比较
--也可以是某两列数据进行比较
SELECT * FROM emp
WHERE comm > sal;
--where中不能出现列的别名
SELECT ename,job,sal,12*sal nianxin FROM emp
WHERE 12*sal < 25000;
--作为条件的列可以不出现在select后面
--为了查询结果的可读性,最好选择作为查询条件的列
SELECT ename,job,deptno FROM emp
WHERE sal < 1500;
2.比较运算符
--in(value1,value2,...valueN) 列表匹配
SELECT * FROM emp
WHERE job IN ('CLERK','PRESIDENT','SALESMAN');
--between 最小值 and 最大值,范围匹配
SELECT * FROM emp
WHERE sal BETWEEN 1500 AND 3000;
--like,模糊匹配
--% 表示任意个任意字符
--_ 表示一个任意字符
SELECT * FROM emp
WHERE ename LIKE 'A%';
SELECT * FROM emp
WHERE ename LIKE '%S';
SELECT * FROM emp
WHERE ename LIKE '%A%';
SELECT * FROM emp
WHERE ename LIKE '_A%';
SELECT * FROM emp
WHERE ename LIKE '____';
--is null,匹配空值(不能写成 = null)
SELECT * FROM emp
WHERE comm IS NULL;
3.逻辑运算符
--and 与运算,多个条件必须同时满足才能返回结果
SELECT * FROM emp
WHERE sal > 1500
AND deptno = 20;
--or 或运算,多个条件只需要满足其中任意一个条件就可以返回结果
SELECT * FROM emp
WHERE sal > 1500
OR deptno = 20;
--not 非运算,返回不满足条件的结果
SELECT * FROM emp
WHERE NOT sal > 1500;
SELECT * FROM emp
WHERE ename NOT LIKE '%A%';
4.运算优先级:数学运算>比较运算>not>and>or
--使用括号来表示或者改变运算优先级
SELECT * FROM emp
WHERE sal > 1500
OR deptno = 20
AND job IN ('CLERK','MANAGER');
SELECT * FROM emp
WHERE (sal > 1500
OR deptno = 20)
AND job IN ('CLERK','MANAGER');
5.order by排序
--order by永远在查询语句的最后
--asc 升序排列,默认可以不写
--desc 降序排列
SELECT * FROM emp
ORDER BY sal;
--字符和日期的数据类型也可以排序
SELECT * FROM emp
WHERE deptno = 20
ORDER BY hiredate DESC;
SELECT * FROM emp
ORDER BY ename ASC;
--order by中可以出现列的别名
SELECT ename,job,sal,12*sal nianxin FROM emp
ORDER BY nianxin DESC;
--order by后面排序的列可以不出现在select
--选择排序的列可以提高查询结果的可读性
SELECT ename FROM emp
ORDER BY hiredate;
--多列排序
SELECT * FROM emp
ORDER BY deptno,sal DESC;
【练习】
1.查询emp表,显示薪水大于2000,且工作类别是MANAGER的雇员信息
SELECT * FROM emp
WHERE sal > 2000
AND job = 'MANAGER';
2.查询emp表,显示年薪大于30000,工作类别不是MANAGER的雇员信息
SELECT ename,job,sal,deptno,12*sal nianxin FROM emp
WHERE 12*sal > 30000
AND job <> 'MANAGER';
3.查询emp表, 显示薪水在1500到3000之间,工作类别以“M”开头的雇员信息
SELECT * FROM emp
WHERE sal BETWEEN 1500 AND 3000
AND job LIKE 'M%';
4.查询emp表,显示佣金为空并且部门号为20或30的雇员信息(佣金=薪水SAL+津贴COMM)
SELECT ename,job,sal,comm,deptno,sal+comm yongjin FROM emp
WHERE sal+comm IS NULL
AND deptno IN (20,30);
5.查询emp表,显示佣金不为空或者部门号为20的雇员信息,
要求按照薪水降序排列 (佣金=薪水+津贴)
SELECT ename,job,sal,deptno,sal+comm yongjin FROM emp
WHERE sal+comm IS NOT NULL
OR deptno = 20
ORDER BY sal DESC;
6.查询emp表,显示年薪大于30000工作类别不是MANAGER,
且部门号不是10或40的雇员信息,要求按照雇员姓名进行排列
SELECT ename,job,sal,deptno,12*sal nianxin FROM emp
WHERE 12*sal > 30000
AND job <> 'MANAGER'
AND deptno NOT IN (10,40)
ORDER BY ename;
Oracle-DQL 2- 限定和排序的更多相关文章
- oracle之数据限定与排序
数据限定与排序 6.1 简单查询语句执行顺序 from, where, group by, having, order by, select where限定from后面的表或视图,限定的选项只能是表的 ...
- Oracle Where查询语句与排序语句
SQL限制和排序数据 1.Oracle的Where条件值,字符串和日期都必须以单引号括起来. 模糊查询: like 'S%' 以S开头的任意字符 like 'S_' 以S开头的任意字符结尾的两个字符 ...
- ORACLE中用rownum分页并排序的SQL语句
ORACLE中用rownum分页并排序的SQL语句 以前分页习惯用这样的SQL语句: select * from (selectt.*,rownum row_num frommytable t ord ...
- Oracle数据库之五 限定查询和排序显示
五.限定查询和排序显示 5.1.限定查询 5.1.1 认识限定查询 例如:如果一张表中有 100w 条数据,一旦执行了 " SELECT * FROM 表 " 语句之后,则将在屏幕 ...
- 关于Oracle数据库中SQL空值排序的问题
在Oracle中进行查询排序时,如果排序字段里面有空值的情况下,排序结果可能会达不到自己想要的结果. 如 select * from tableTest order by VISITS desc ...
- Oracle中针对中文进行排序[Z]
在oracle 9i之前,对中文的排序,是默认按2进制编码来进行排序的. 9i时增加了几种新的选择: 按中文拼音进行排序:SCHINESE_PINYIN_M 按中文部首进行排序:SCHINESE_RA ...
- Oracle 实现 mysql 的 find_in_set 排序!
oracle 实现类似MYSQL的 find_in_set 排序,函数 decode: select * from tb_info_game where gameid in(23,20,19,26,1 ...
- oracle 树形表结构查询 排序
oracle 树形表结构排序 select * from Table start with parentid is null connect by prior id=parentid order SI ...
- oracle 字符串 正则表达式 拆分,排序,合并
需求,表数据如:要求圈中的数据,必须根据线芯有序排列. 思路: 1.首先根据分号分隔元素.oracle 很蛋疼,没有提供字符串分隔函数,网上倒是多觉得有点麻烦,耐着性子继续网上找了下,还真让我找到一篇 ...
- ORACLE中使用row_number over()排序
from:http://blog.csdn.net/iw1210/article/details/11937085 意图:实现select top 1 * from tablename Oracle ...
随机推荐
- shell基础之一
Shell脚本自动化管理系统的必备基础: vim编辑器的熟练使用,SSH终端及“.vimrc”的设置等等需要熟悉. 命令基础:Linux的150个常用命令的熟练使用 Linux的正则表达式以及三剑客( ...
- MIME协议(一) -- RFC822邮件格式
MIME协议(一) -- RFC822邮件格式 . 如同其他各种电子文档一样,电子邮件内容也必须遵循一定的格式要求,各种邮件处理程序才能从中分析和提取出发件人.收件人.主题和附件等信息.邮件内容的 ...
- java8 stream流操作的flatMap(流的扁平化)
https://mp.weixin.qq.com/s/7Fqb6tAucrl8UmyiY78AXg https://blog.csdn.net/Mark_Chao/article/details/80 ...
- Codeforces 1205C Palindromic Paths (交互题、DP)
题目链接 http://codeforces.com/contest/1205/problem/C 题解 菜鸡永远做着变巨的梦 然而依然连div1BC题都不会做 要是那天去打cf怕是又要1题滚粗了.. ...
- JVM模型及内存溢出
一.JVM截图及概念 图1:JVM虚拟机运行时数据区域概念模型 1.程序计数器:内存空间中的一块小区域,作为当前线程所执行的字节码的行号指示器,注:如果是native方法,计数器为空 2.虚拟机栈:线 ...
- spring boot打包以及centos下部署
spring boot打包以及部署 一.打包 springboot的打包方式有很多种.有打成war的,有打成jar的,也有直接提交到github,通过jekins进行打包部署的.这里主要介绍如何打成j ...
- (转载)IOCP 浅析
转自:http://www.ibm.com/developerworks/cn/java/j-lo-iocp/#author 郭 仁祥, 软件工程师, IBM 简介: 传统的 Server/Cli ...
- 性能测试 | Web端性能测试
这篇文章想跟大家分享关于Web性能测试的一些知识点.在分享之前,我想先跟大家分享一组数据,关于为什么要做性能测试?具体如下: 71%用户希望在手机上打开网页能跟电脑一样快: 5秒钟被认为是用户能忍受的 ...
- 发布机制-灰度发布-例子:QZone
ylbtech-发布机制-灰度发布-例子:QZone QZone是另外一个采用灰度发布的例子.大家都知道,QZone在过去的一年中改进是巨大的,从以前慢悠悠的老爷爷变成了一个充满青春活力的小伙子.其中 ...
- 010-数据结构-树形结构-B树[B-树]
一.概述 B 树就是常说的“B 减树(B- 树)”,又名平衡多路(即不止两个子树)查找树. 在计算机科学中,B树(英语:B-tree)是一种自平衡的树,能够保持数据有序.这种数据结构能够让查找数据.顺 ...