Oracle笔记之数据的基本查询(一)

上周在面试的时候 考到SQL语句的查询时有点懵,回来后就开始复习oracle的相关知识。本来在笔记本上记笔记,可奈何字写得不是很好看,考虑到以后方便查阅的问题,就来了博客,一起复习复习。虽然在SQL语言的规范中关键字都是大写,但是为了方便书写和查阅,这里全用小写。

一、简单查询

1.  select 语句

根据select的语法,必须的字句为 select 字句和from字句,其他的字句都是可选的。from、where、group by、having子句被称为表表达式。当处理select语句时,select语句这一部分总是首先被评估。表达式中的每个子句按照语法中列出的次序被依次评估。评估结果是一个虚拟表,它将用于以后得评估。也就是说,前一个子句的评估结果将用于下一个子句,知道表表达式中的每个子句都被评估完为止。

最基本的select语句的用法如下:

select EMPNO,ENAME,JOB, MGR HIREDATE,SAL,COMM ,DEPTNO from EMP;

 运行结果如下:

  EMPNO ENAME      JOB         HIREDATE        SAL       COMM     DEPTNO
---------- ---------- --------- ---------- ---------- ---------- ----------
      7369 SMITH      CLERK           7902        800                    20 
      7499 ALLEN      SALESMAN        7698       1600        300         30 
      7521 WARD       SALESMAN        7698       1250        500         30 
      7566 JONES      MANAGER         7839       2975                    20 
      7654 MARTIN     SALESMAN        7698       1250       1400         30 
      7698 BLAKE      MANAGER         7839       2850                    30 
      7782 CLARK      MANAGER         7839       2450                    10 
      7788 SCOTT      ANALYST         7566       3000                    20 
      7839 KING       PRESIDENT                  5000                    10 
      7844 TURNER     SALESMAN        7698       1500          0         30 
      7876 ADAMS      CLERK           7788       1100                    20 
      7900 JAMES      CLERK           7698        950                    30 
      7902 FORD       ANALYST         7566       3000                    20 
      7934 MILLER     CLERK           7782       1300                    10 

 选定了 14 行 

2.where 子句

where 子句获取 from子句返回值(在虚拟表中),并且应用where 子句中定义的搜索条件。where子句相当于 from子句返回结果 的筛选器,每一行都要根据搜索条件进行评估,评估为true 的那些行为作为查询结果的一部分返回,那些评估未知或者为false的行为将不包括子啊结果中。

例如:找出 emp表中 job为 clerk的人

select EMPNO,ENAME,JOB, MGR HIREDATE,SAL,COMM ,DEPTNO from EMP where JOB='CLERK';

结果为:

     EMPNO ENAME      JOB         HIREDATE        SAL       COMM     DEPTNO
---------- ---------- --------- ---------- ---------- ---------- ----------
      7369 SMITH      CLERK           7902        800                    20 
      7876 ADAMS      CLERK           7788       1100                    20 
      7900 JAMES      CLERK           7698        950                    30 
      7934 MILLER     CLERK           7782       1300                    10 

注意:where 后面的比较语句,若clerk加单引号,则为比较 字符串;若不加单引号,则认为clerk为一个变量。

3.关键字的使用

select 子句包括可选关键字 distinct 和 all 。在需要删除查询结果中相同的行时使用关键字 distinct ;在需要返回查询结果中的所有行时 使用关键字 all 。

例如:(1)使用distinct 关键字

select distinct JOB from EMP;

结果为:

JOB     
---------
CLERK     
SALESMAN  
PRESIDENT 
MANAGER   
ANALYST   

(2)使用all关键字(若没有指定任何关键字,默认为all)

select all JOB from EMP;

结果为:

JOB     
---------
CLERK     
SALESMAN  
SALESMAN  
MANAGER   
SALESMAN  
MANAGER   
MANAGER   
ANALYST   
PRESIDENT 
SALESMAN  
CLERK     
CLERK     
ANALYST   
CLERK     

 选定了 14 行 

4. 使用 值表达式

在select语句的搜索条件中可以使用值表达式,它由一个或者多个谓语组成,这些 谓语用于测试from 子句返回的内容

如:(1)

select  EMPNO,ENAME,JOB,MGR HIREDATE,SAL,COMM,DEPTNO from EMP where SAL>1300 AND SAL<2000 ;

结果为:

     EMPNO ENAME      JOB         HIREDATE        SAL       COMM     DEPTNO
---------- ---------- --------- ---------- ---------- ---------- ----------
      7499 ALLEN      SALESMAN        7698       1600        300         30 
      7844 TURNER     SALESMAN        7698       1500          0         30 

(2)

select  EMPNO,ENAME,JOB,MGR HIREDATE,SAL,COMM,DEPTNO from EMP where SAL>1000 AND SAL<2000 AND (DEPTNO =10 OR DEPTNO=20);

结果为

     EMPNO ENAME      JOB         HIREDATE        SAL       COMM     DEPTNO
---------- ---------- --------- ---------- ---------- ---------- ----------
      7876 ADAMS      CLERK           7788       1100                    20 
      7934 MILLER     CLERK           7782       1300                    10 

5. 排序查询结果

order by 子句接受select 子句的输出,并且按照order by 子句中的规范排列查询结果的次序。这个子句不对行进行归纳,也不像where那样进行筛选。但是,可以使用order by 子句来指定按照升序(使用关键字ASC)还是降序(使用关键字DESC)对其进行组织。

例如:(1)

select  EMPNO,ENAME,JOB,MGR HIREDATE,SAL,COMM,DEPTNO from EMP where SAL>1000 AND SAL<2000 order by SAL DESC;

结果:


     EMPNO ENAME      JOB         HIREDATE        SAL       COMM     DEPTNO
---------- ---------- --------- ---------- ---------- ---------- ----------
      7499 ALLEN      SALESMAN        7698       1600        300         30 
      7844 TURNER     SALESMAN        7698       1500          0         30 
      7934 MILLER     CLERK           7782       1300                    10 
      7521 WARD       SALESMAN        7698       1250        500         30 
      7654 MARTIN     SALESMAN        7698       1250       1400         30 
      7876 ADAMS      CLERK           7788       1100                    20 

 选定了 6 行 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值