设为首页 收藏本站
查看: 752|回复: 0

[经验分享] Oracle培训(二十七)——Oracle 11g 第二章知识点总结——过滤 排序

[复制链接]

尚未签到

发表于 2016-8-6 09:04:21 | 显示全部楼层 |阅读模式
Oracle培训(二十七)——Oracle 11g 第二章知识点总结——过滤 排序


  知识点预览
  

  创建表
  插入数据
  过滤
  排序
  
  创建表
  
  1. 创建表
  

create table emp(
empnonumber(4) not null,
enamevarchar2(10),
jobvarchar2(9),
mgr number(4),
hiredate date,
sal number(7,2),
comm  number(7,2),
deptno number(4)
);


  
  

Create table dept(
Deptnonumber(4),
Dnamevarchar2(20),
Locvarchar2(13)
);

  
  

  插入数据
  

  1. 插入数据
  a) 插入全字段
  

  

insert into dept values(10,’Accounting’,’NewYork’);


  
  

  b)插入某个字段(非全字段插入)
  

  

insert into dept(deptno) values(40);


  
  过滤
  
  
  1.使用WHERE 子句,将不满足条件的行过滤掉。
  SELECT *|{[DISTINCT] column|expression [alias],...}
  FROM table
  [WHERE condition(s)];
  

  2. WHERE 子句紧随 FROM 子句。
  

  3. 字符和日期
  a) 字符和日期要包含在单引号中。
  b)字符大小写敏感,日期格式敏感。
  c) 默认的日期格式是 DD-MON-RR。
  

  4. 比较运算
  

   DSC0000.jpg
  

  5. 其他比较运算
  

   DSC0001.jpg
  

  6. Between
  
  使用 BETWEEN 运算来显示在一个区间内的值。
  

SELECTlast_name, salary
FROM   employees
WHERE  salary BETWEEN 2500 AND 3500;


  
  7. IN
  使用 IN运算显示列表中的值。
  

SELECT employee_id, last_name,salary, manager_id
FROM   employees
WHERE  manager_id IN (100, 101, 201);


  
  8.LIKE
  a)使用 LIKE 运算选择类似的值
  b)选择条件可以包含字符或数字:
  % 代表一个或多个字符。
  _ 代表一个字符。
  

  

SELECT first_name
FROM    employees
WHERE  first_nameLIKE 'S%';


  
  c)‘%’和‘-’可以同时使用。
  

SELECT last_name
FROM   employees
WHERE  last_name LIKE '_o%';


  
  d)可以使用 ESCAPE 标识符 选择‘%’和‘_’符号。
  

  9. NULL
  使用 NULL 判断空值。
  

SELECTlast_name, manager_id
FROM   employees
WHERE  manager_id IS NULL;


  
  10. 逻辑运算
  

  

DSC0002.jpg
  

  11.AND
  
  

SELECTemployee_id, last_name, job_id, salary
FROM   employees
WHERE  salary >=10000
AND    job_id LIKE '%MAN%';


  
  12.OR
  
  OR 要求或关系为真。
  

SELECTemployee_id, last_name, job_id, salary
FROM   employees
WHERE  salary >= 10000
OR     job_id LIKE '%MAN%';


  
  13.NOT
  
  

SELECTlast_name, job_id
FROM   employees
WHERE  job_id
NOT IN ('IT_PROG', 'ST_CLERK','SA_REP');


  
  14.优先级
  

  
DSC0003.jpg
  

  
  可以使用括号改变优先级顺序
  
  

SELECT last_name, job_id, salary
FROM   employees
WHERE  job_id = 'SA_REP'
OR     job_id = 'AD_PRES'
AND    salary > 15000;


  
  
  使用括号控制执行顺序。
  
  

SELECT last_name, job_id, salary
FROM   employees
WHERE  (job_id = 'SA_REP'
OR     job_id = 'AD_PRES')
AND    salary > 15000;


  
  
  15.示例
  a) where子句
  select * from tabname
  where
  b)查询sal大于等于1000的所有员工
  

  

select * from emp
where sal>=1000;

  
  c)查询sal大于等于1000的所有job是salesman的员工信息。
  

  

select * from emp
where sal>=1000 and job=’salesman’;


  
  d)查询sal大于等于1000的并且小于等于2000的员工信息。
  

select * from emp
where sal>=1000 and sal<=2000;


  
  
  等效于
  

  

select * from emp
where sal between 1000 and 2000;



  
  
  e)查询部门编号是10和20的所有员工
  

  

select * from emp
where deptno not in (10,20);


  
  

select * from emp
where deptno=10 or deptno=20 and sal between 1000 and 2000;

  
  

  --顺序问题:先查deptno=10且工资在1000到200之间的,然后再查deptno=20且工资在1000到200之间的。
  

  

select * from emp
where (deptno=10 or deptno=20) and sal between 1000 and 2000;



  
  
  优先级问题——括号解决
  
  f)查询名字里包含S的所有员工
  %:匹配任意字符
  

  

select  * from emp
where ename like ‘%S%’;


  
  g)查询名字里第二个字母是A的所有员工
  

  

select * from emp
where ename like ‘_A%’;


  
  
  h)查询名字里第一个字母是S的所有员工
  
  

select * from emp where ename like 'S%';


  
  
  i)查询名字里第二个字母是S的所有员工
  
  

select * fromemp where ename like '_S%';


  
  g)查询comm不为空的所有员工信息
  

  

select * from emp
where comm is not null;



  
  --为空
  

select * from emp
where comm is null;


  
  
  排序
  
  1. ORDER BY子句
  
  SELECT *|{[DISTINCT] column|expression [alias],...}
  FROM table
  [WHERE condition(s)]
  [ORDERBY {column, expr, alias}[ASC|DESC]];
  
  2.使用 ORDER BY 子句排序
  a)ASC: 升序
  b)DESC: 降序
  

  3.ORDER BY 子句在SELECT语句的结尾。
  
  

SELECT  last_name, job_id, department_id, hire_date
FROM    employees
ORDER BY hire_date ;


  
  
  4.降序排序
  
  

SELECT   last_name, job_id, department_id, hire_date
FROM     employees
ORDER BYhire_date DESC ;


  
  5.按别名排序
  
  

SELECTemployee_id, last_name, salary*12 annsal
FROM   employees
ORDER BY annsal;


  
  6. 多个列排序
  a)按照ORDER BY 列表的顺序排序。
  
  

SELECTlast_name, department_id, salary
FROM   employees
ORDER BYdepartment_id, salary DESC;


  
  b) 可以使用不在SELECT 列表中的列排序。
  

  7.示例
  a)按照雇员薪资高低排序
  

select * from emp
order by sal DESC;


  
  ASC 升序(默认)
  
  b)按照雇员薪资高低和按字母顺序对名字排序
  
  

select * from emp
order by sal desc,name asc;


  
  --工资相同,才会按照名字排序
  c)也可以按照列名进行排序
  

  

select ename,sal+comm as s from emp
order by s ;


  
  d)值:区分大小写
  e) != 等效于<> :不等于
  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-253577-1-1.html 上篇帖子: [oracle]为什么Oracle的伪列rownum不支持>,>=,=,between...and,而都用<比较 下篇帖子: Oracle整理之oracle数--start with connect by prior的用法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表