zoukankan      html  css  js  c++  java
  • Oracle数据库之单表查询

      接着上一篇的分享,今天主要给大家分享的是关于数据中的单表查询,单表查询很基础,也很重要,但是任何一个初学者必须要掌握的姿势,单表查询就是对单个表进行操作,查询我们想要的数据。单表查询里面的内容也是比较多的,比如单表查询结合比较运算符、逻辑运算符、以及in not in 、between...and、模糊查找、排序查找、去重查找、空值的处理、any以及all的使用。接下来就看一下关于单表查询的使用吧!

    我们这里使用oracle自带的一个用户scrott用户,这个用户在数据库处于锁定状态,我们需要把它给解锁。解锁的sql语句是:

    alter user scott account unlock identified by test1;
    --scott 被锁住 解锁并为scott用户设置登录密码 test1 密码可以随意设置

    解锁以后,就可以使用scott下面的表了。我们看一下scott用户下面有哪些表?

    我们先使用sql语句查询一下这个emp张表。

    select * from emp;

     查询结果如下:

    1.结合比较运算符使用

       敲笔记: >  大于    < 小于   >= 大于等于   <= 小于等于   != 不等于   <>不等于 

    --查询工资超过3000的员工
    select * from emp where sal>3000;
    --查询工资大于3000且职位是clark的员工
    select * from emp where sal>1500 or job='ClERK';
    --查询工资大于1500 或者工资不等于7566的员工
    select * from emp where sal>1500 or sal != 7566;
    --查询工资小于1600的员工
    select * from emp where sal<=1600;

    例子:查询工资小于等于1600的员工

    select * from emp where sal<=1600;

    查询结果:

    2.结合逻辑运算符使用 and or 

    敲笔记了:and 优先级大于or and(链接的两个条件都要满足) or(链接的两个条件有一个满足)

    先看下使用or进行查询sql

    select * from emp;
    --查询emp表工资大于3000或者编号大于6000的员工
    select * from emp  where sal>2000 or  empno>2000 and empno<6000;

    查询结果:

    在看使用and查询sql

    --查询emp表工资大于3000并且编号大于6000的员工
    select * from emp  where sal>3000 and empno>6000;  

    查询结果如下:

     

    3.结合in  not in使用

    in  在什么什么里面  not in 不在什么什么里面

    --查询工资属于1500 3000  1400 员工信息
    select * from emp where sal in (1500,3000,1400);

    查询结果:

    not  in 的实例:

    --查询工资不属于3000 5000 800 的员工信息
    select * from emp where sal not in (300,5000,800);

    查询结果:

    4.结合between...and...使用

    between ... and 在什么什么之间

    --查询工资在1500-3000的员工信息
    select * from emp where sal between 1500 and 3000;

    查询结果:

    在来一个例子:

    --查询工资在1500-3000的员工信息且职位是SALESAMAN的员工
    select * from emp where sal between 1500 and 3000 and job='SALESMAN';

    查询结果:

    5.模糊查找

    %代表通配符。就是可以和任意字符匹配的意思,_ 表示的是匹配一个字符

    --查询emp表中的名字包含A的员工信息
    select * from emp where ename like '%A%';

    查询结果:

    继续来一个例子:

    --查询mgr编号中中以7开头以8结尾的字符的员工信息
    select * from emp where mgr like '7__8';

    查询结果:

    6.排序查找

    order by 是通过什么来排序, 默认是升序排列,也可以使用asc  降序是desc 。

    --通过sal排序 默认升序
    select * from emp order by sal;

    查看结果:

    通过sal排序,默认升序

    --通过sal排序 降序排序
    select * from emp order by sal desc;

    查看结果:

    7.去重查找

    使用distinct  去除重复值

    --将job中的salesman进行除去重复
    select distinct job from emp;

    查看结果:

    把salesman重复的去掉,只保留一个。在按照ename进行去除重复值:

    --将ename去除重复值
    select distinct ename from emp;

    查看结果:

    去除重复ename值成功,去除就是不显示重复的名字的意思。别把去重理解的太高大上哦~

    在演示一个去重失败的例子:

    --将job和ename去重,失败,只能去除一个列名
    select distinct job,ename from emp;

    查看结果:

    8.空值处理

    is null  空值      

    --查询mgr的值为null的员工信息
    select * from emp where mgr is null;

    查询结果:

     is not null不是空值

    --查询sal不是null的员工信息
    select * from emp where sal is not null;

    查看结果:

    注意:查询空值是is null  而不是 = null

    9.结合any和all的使用

    --all 表示所有条件都要满足     套路:大于最大值,就满足所有

    --all  表示所有条件都要满足 
    --any  表示满足任意一个
    select * from emp where sal>=all(1500,3000,1000); --大于最大值就满足所有值
    select * from emp where sal>=3000;  --等于于>=all(1500,3000,1000)

    查询结果:

     --any 表示满足任意一个   套路:大于最小值,就满足所有

    select * from emp where sal>=any(1500,3000,1000); --大于最小值,就满足所有

    等价于:

    select * from emp where sal>=any(1500,3000,1000); --大于最小值,就满足所有
    select * from emp where sal>=1000;  --等价于 >=1000

    查询结果:

    关于单表查询,到这里我们就说完了,下一篇给大家分享 关于日期的操作;

  • 相关阅读:
    20145324 20145325《信息安全系统设计基础》实验一 开发环境的熟悉
    20145325张梓靖 《信息安全系统设计基础》期中总结
    20145325张梓靖 《信息安全系统设计基础》第7周学习总结
    《信息安全系统设计基础》家庭作业
    20145325张梓靖 《信息安全系统设计基础》第6周学习总结
    20145325张梓靖 《信息安全系统设计基础》第5周学习总结
    openssl知识点总结
    20145307《信息安全系统设计基础》第12周学习总结
    20145315&20145307《信息安全系统设计基础》实验五
    20145307《信息安全系统设计基础》第十一周学习总结
  • 原文地址:https://www.cnblogs.com/fighter007/p/8290307.html
Copyright © 2011-2022 走看看