Oracle之限定查询

锦通  论坛元老 | 2024-12-23 07:32:12 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1021|帖子 1021|积分 3063


  • SELECT子句来控制可以表现的列信息。但是在许多的情况下大概并不必要查询出全部的数据,必要对要利用的数据行进行筛选,此时就可以采用限定查询,也就是说限定查询主要是控制行的。
  • 限定查询的语法如下:
  1. ③SELECT [DISTINCT] * | 列名称 [别名] , 列名称 [别名] ,... | 数据计算
  2. ①FROM 数据表 [别名]
  3. ②[WHERE 限定条件(s)];
复制代码


  • 在进行限定查询的时间起首照旧必要根据FROM.确定要利用的数据来源,而后利用一些条件(关系运算),从全部的数据行里面筛选出从而实现终极的数据行的筛查,如果要是有多个条件进行判定也可以利用逻辑运算(与操纵、或操纵、非操纵)进行整合:
  • 在WHERE子句里面常用的几种判定符:关系运算(>、<、>=、<=、=、<>、!=)BETWEEN…AND、IN、LIKE、IS NULL
1. 查询出工资大于1000的全部雇员信息.



  • 现在必要设置的是一个条件,也就是说这个之后只有满意此条件之后才可以表现对应的数据行信息:
  1. select *
  2. from emp
  3. where sal>1000;
复制代码

2. 查询出姓名是Smith的雇员信息



  • 在Oracle中数据内容是区分大小写的
  • ename字段表现的是员工姓名,那么在ename设置对应的条件:
  1. select *
  2. from emp
  3. where ename='SMITH';
复制代码



  • 如果小写就查询不出:

3. 查询出工资在1000~1500之间的全部非销售职员的编号、姓名、职位、工资



  • 现在很明显一共有三个条件:

  • 工资大于便是1000: sal>=1000;
  • 工资小于便是1500: sal<=1500;
  • 职位是非销售:job!='SALESMAN';


  • 现在为止只有三个条件同时满意了才可以表现出对应的信息内容,所以利用AND进行操纵毗连
  1. select empno,ename,job,sal
  2. from emp
  3. where sal>=1000 and sal<=1500 and job!='SALESMAN' ;
复制代码

4. 查询出全部不是服务员(CLERK)的员工信息

  1. select *
  2. from emp
  3. where job<>'CLERK'
复制代码



  • 也可以如许写
  1. select *
  2. from emp
  3. where job!='CLERK';
复制代码

4. 查询全部是服务员的员工信息



  • job!='CLERK'表现不是服务员,加上 not 取反就是服务员了
  1. select *
  2. from emp
  3. where not job!='CLERK';
复制代码


  • 建议如许写
  1. select *
  2. from emp
  3. where job='CLERK';
复制代码



  • 固然两个查询结果是相同的,但是第一个查询的时间复杂度会高,因为做了关系运算和逻辑运算,而第二个查询只做了一个关系运算
5. 查询出职位是服务员(CLERK)或销售职员(SALESMAN)的信息



  • 这个时间依然要采用两个判定条件: job='CLERK'、job='SALESMAN',这两个条件有一个满意就可以,所以利用 or
  1. select *
  2. from emp
  3. where job='CLERK' or job='SALESMAN';
复制代码



  • 那么除了以上的这些基础的运算符之外,在进行限定查询的时间还可以利用以下的几种运算符:

  • 范围查询:BETWEEN 最小值... AND 最大值;

    • 是带有边界值的范围;
    • 可以利用在各种数据范例上;

6. 查询出工资在1000~1500(包罗有 1000 和 1500)的全部雇员信息

  1. select *
  2. from emp
  3. where sal>=1000 and sal<=1500;
复制代码
  1. select *
  2. from emp
  3. where sal between 1000 and 1500;
复制代码



  • 如果这个时间采用的是两个关系运算进行处置惩罚,那么要进行两次的筛选运算,
  • 而如果利用了BETWEEN…AND则利用一次运算,所以性能会更好。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

锦通

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表