• oracle实验9-11:使用where和order by子句


    where和order by子句

    语法

    SELECT *|{[DISTINCT] 列名|表达式[别名][,...]}
    FROM表名
    [WHERE 条件];

    where一定要放在from子句的后面
    符合条件的行会被筛选出来
    order by放在最后,用来排序显示结果

    比较运算符

    • =>
    • >=
    • <
    • <=
    • <>
    • between...and...
    • in(列表)
    • like
    • is null

    逻辑运算符

    • and
    • or
    • not


    实验9:显示表的部分行和部分列,使用where子句过滤出想要的行

    SQL> select deptno,ename from emp where deptno=10;

        DEPTNO ENAME                                                               
    ---------- ----------                                                          
            10 CLARK                                                               
            10 KING                                                                
            10 MILLER                                                              

    SQL> select * from emp where ename='KING';  --字符串要单引,字符串大小写敏感,日期格式敏感

         EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO
    ---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
          7839 KING       PRESIDENT            17-11月-81           5000                    10
                                                                        

     between...and... 确定范围,在两个值之间(包含上下界)

    SQL> select ename,sal from emp where sal between 1000 and 3000; 

    ENAME             SAL
    ---------- ----------
    ALLEN            1601
    WARD             1250
    JONES            2975
    MARTIN           1250
    BLAKE            2850
    CLARK            2450
    TURNER           1501
    MILLER           1300

    已选择8行。         


    in操作,确定集合,穷举。

    SQL> select deptno,ename,sal from emp where deptno in(10,20);

        DEPTNO ENAME             SAL
    ---------- ---------- ----------
            20 SMITH             801
            20 JONES            2975
            10 CLARK            2450
            10 KING             5000
            20 FORD             3002
            10 MILLER           1300

    已选择6行。

    实验10:使用like查询近似的值

    like

    • _通配一个字符
    • %通配任意长度字符(包括没有字符)

    SQL> select ename,deptno from emp where ename like 'J%';

    ENAME          DEPTNO                                                          
    ---------- ----------                                                          
    JONES              20                                                          
    JAMES              30  

    首字母为J员工,J后有没有字符,有多少字符都可以。

    SQL> select ename,deptno from emp where ename like '_A%';

    ENAME          DEPTNO                                                          
    ---------- ----------                                                          
    WARD               30                                                          
    MARTIN             30                                                          
    JAMES              30              

    第二个字母为A的员工,第一个字母必须有,是什么无所谓。

    escape   想查询_,%特殊字符时,用escape。
    一般使用/来转义,这里的_不是通配符,而是实际意义的_。

    SQL> select ename from emp where ename like '%/_%' escape '/';

    ENAME                                                                          
    ----------                                                                     
    FORD_A                                                                         

    查询null值

    SQL> select ename,comm from emp where comm=null;

    未选定行

    null不等于null

    SQL> select ename,comm from emp where comm is null;

    ENAME            COMM    
    ---------- ----------               
    SMITH     
    JONES         
    BLAKE
    CLARK                                                                          
    KING          
    JAMES     
    FORD   
    MILLER        

    已选择8行。

    and运算 两个条件的交集,必须同时满足。

    SQL> select ename,deptno,sal from emp where deptno=30 and sal>1200;

    ENAME          DEPTNO        SAL                                               
    ---------- ---------- ----------                                               
    ALLEN              30       1601                                               
    WARD               30       1250                                               
    MARTIN             30       1250                                               
    BLAKE              30       2850                                               
    TURNER             30       1501                                               

    or运算 两个条件的并集,满足一个即可。

    SQL> select ename,deptno,sal from emp where deptno=30 or sal>1200

    ENAME          DEPTNO        SAL     
    ---------- ---------- ----------      
    ALLEN               30       1601           
    WARD               30       1250          
    JONES               20       2975                                               
    MARTIN             30       1250  
    BLAKE              30       2850        
    CLARK              10       2450    
    KING                10       5000        
    TURNER            30       1501    
    JAMES              30        950       
    FORD               20       3002
    MILLER             10       1300   

    已选择11行。

    not运算 补集。

    SQL> select ename,deptno,sal from emp where ename not like 'T%

    ENAME          DEPTNO        SAL                                               
    ---------- ---------- ----------                                               
    SMITH              20        801                                               
    ALLEN              30       1601                                               
    WARD               30       1250                                               
    JONES              20       2975                                               
    MARTIN             30       1250                                               
    BLAKE              30       2850                                               
    CLARK              10       2450                                               
    KING               10       5000                                               
    JAMES              30        950                                               
    FORD               20       3002 
    MILLER             10       1300                                               

    已选择11行。

    查询不是T开头的员工。

    优先级

    ()强制优先级
    1.算数运算
    2.连接运算
    3.关系运算
    4.is[not] null ,like, [not] in
    5.between
    6.not
    7.and
    8.or


    order by子句

    • 不指明都是二进制排序
    • 默认是升序asc
    • 降序要制定desc

    实验11:使用order子句来进行排序操作

    不说明默认升序排列

    SQL> select ename,deptno,sal from emp order by sal;

    ENAME          DEPTNO        SAL    
    ---------- ---------- ----------  
    SMITH               20         801                                               
    JAMES               30         950           
    WARD               30       1250    
    MARTIN             30       1250     
    MILLER              10       1300         
    TURNER             30       1501  
    ALLEN               30       1601    
    CLARK              10       2450       
    BLAKE              30       2850    
    JONES              20       2975        
    FORD               20       3002    
    KING                10        5000                                               

    已选择12行。

    降序排列

    SQL> select ename,deptno,sal from emp order by sal desc

    ENAME          DEPTNO        SAL                                               
    ---------- ---------- ----------                                               
    KING               10       5000                                               
    FORD               20       3002                                               
    JONES              20       2975                                               
    BLAKE              30       2850                                               
    CLARK              10       2450                                               
    ALLEN              30       1601                                               
    TURNER             30       1501                                               
    MILLER             10       1300                                               
    MARTIN             30       1250                                               
    WARD               30       1250                                               
    JAMES              30        950      
    SMITH              20        801                                               

    已选择12行。

    隐式排序

    SQL> select ename from emp order by sal;

    ENAME                                                                          
    ----------                                                                     
    SMITH                                                                          
    JAMES                                                                          
    WARD                                                                           
    MARTIN                                                                         
    MILLER                                                                         
    TURNER                                                                         
    ALLEN                                                                          
    CLARK                                                                          
    BLAKE                                                                          
    JONES           
    FORD        
    KING         

    已选择12行。

    别名排序

    SQL> select sal*12 salary from emp order by salary;

        SALARY                                                                     
    ----------                                                                     
          9612                             
         11400                                                                     
         15000        
         15000                                                                     
         15600         
         18012   
         19212 
         29400            
         34200               
         35700    
         36024      
         60000           

    已选择12行。

    表达式排序

    SQL> select sal*12 salary from emp order by sal*12;

        SALARY                                                                     
    ----------           
          9612                                                                     
         11400            
         15000           
         15000     
         15600          
         18012                       
         19212              
         29400                                                                     
         34200                   
         35700 
         36024          
         60000  

    已选择12行。

    位置排序,对集合操作是比较方便

    SQL> select ename,sal from emp order by 2;

    ENAME             SAL                                                          
    ---------- ----------                                                          
    SMITH             801                                                          
    JAMES             950                                                          
    WARD             1250                                                          
    MARTIN           1250                                                          
    MILLER           1300                                                          
    TURNER           1501                                                          
    ALLEN            1601                                                          
    CLARK            2450                                                          
    BLAKE            2850                                                          
    JONES            2975            
    FORD             3002                                                
    KING             5000        

    已选择12行。

    多列排序

    SQL> select deptno,job,ename,sal from emp order by deptno,job;

        DEPTNO JOB       ENAME             SAL                                     
    ---------- --------- ---------- ----------                                     
            10 CLERK     MILLER           1300                                     
            10 MANAGER   CLARK            2450                                     
            10 PRESIDENT KING             5000                                     
            20 ANALYST   FORD             3002                                     
            20 CLERK     SMITH             801                                     
            20 MANAGER   JONES            2975                                     
            30 CLERK     JAMES             950                                     
            30 MANAGER   BLAKE            2850        
            30 SALESMAN  TURNER           1501   
            30 SALESMAN  WARD             1250   
            30 SALESMAN  ALLEN            1601               
            30 SALESMAN  MARTIN           1250    

    已选择12行。

    先按照部门排序,部门相同的再按照工作排序。

     

    返回目录  http://www.cnblogs.com/downpour/p/3155689.html

  • 相关阅读:
    .Net Core调用NodeJs
    ASP.NET Core中间件中渲染Razor视图
    ASP.NET Core自定义View查找路径,实现主题切换
    Core路由2-Endpoint终结点路由
    Core路由1
    .NET Core的本地化机制(多语言)【转】
    实现ASP.NET Core MVC的插件式开发(ApplicationPart)
    Gitflow工作流程
    Git-开发中遇到紧急任务如何处理
    多线程笔记-CancellationToken(取消令牌)
  • 原文地址:https://www.cnblogs.com/downpour/p/3149154.html
Copyright © 2020-2023  润新知