Oracle教程之查询语句

发布时间:2019-10-29编辑:脚本学堂
本文介绍下,oracle基础教程的第二部分,学习下oracle中的常用查询语句,有需要的朋友参考学习下。

本节的主要内容是oracle中的常用查询语句。

三, SQL语言
1, SQL标准
    ① SQL1992
    ② SQL1999
2, 第四代语言
    面向"问题"的语言,
    只需要告诉计算机做什么,而不需要管如何去做。
3, sql语句分类
(1) 查询语句
C:WindowsSystem32>sqlplus scott/tiger

复制代码 代码示例:
desc
   SQL> desc emp
   SQL> desc dept
   SQL> desc salgrade

   说明:
        A. 描述的内容: 名称 是否为空? 类型
        B. varchar2, variable char 2, varchar2 支持国际化,而varchar不支持
② *
  

复制代码 代码示例:
  SQL> select * from salgrade;
    SQL> select * from dept;
 

③ dual
 

复制代码 代码示例:
  A. 表dual, 字段 dummy(假的, 虚设的)
        SQL> desc dual;
        名称    类型
        -------------------
        DUMMY   VARCHAR2(1)
   B. 计算算术表达式
        SQL> select 2*3 from dual;
               2*3
        ----------
                 6   
   C. 当前系统日期
        SQL> select sysdate from dual;
        SYSDATE
        --------------
        10-8月 -13  
 

④ 别名
   

复制代码 代码示例:
SQL> select ename, sal*12 annual_sal from emp;
    ENAME                ANNUAL_SAL
    -------------------- ----------
    WARD                      15000
    JONES                     35700
    MARTIN                    15000  

    注: 当别名里有 空格 汉字 或其他特殊字符时, 需要用双引号
        同时双引号能保持 原本的格式, 比如 小写不会自动变为大写.

        当别名用单引号括起来时, ORA-00923: 未找到要求的 FROM 关键字

        annual, 每年的; sal, salary.
⑤ NULL值 
   

复制代码 代码示例:
SQL> select ename, sal*12 from emp;
    SQL> select ename, comm from emp;
    SQL> select ename, sal*12+comm from emp;
 

    注: 表达式中只要有NULL值, 则整个表达式为NULL
⑥ 字符串连接符 ||
 

复制代码 代码示例:

1) 连接列名
    SQL> select ename || sal from emp;
    ENAME||SAL
    ----------------------------------
    WARD1250
    JONES2975
    MARTIN1250     
  2) 连接字符串

    SQL> select ename || '123456' from emp;
    SQL> select ename || '123''A''456' from emp;
 

    注: 使用双引号界定字符是错误的
        单引号里面有单引号, 使用两个单引号表示一个单引号
⑦ distinct, 去除重复行
   

复制代码 代码示例:
SQL> select distinct deptno from emp;   -- deptno相同的为重复行
    SQL> select distinct job from emp;
    SQL> select distinct deptno, job from emp; -- 去重复的组合

⑧ where
   

复制代码 代码示例:

1) 等于, =
        SQL> select * from emp
          2  where deptno = 10;   
        SQL> select * from emp where job = 'CLERK';
    2) 大于小于, > <
        SQL> select ename, sal from emp where sal > 1500;
        SQL> select ename, sal from emp where ename > 'CBA';
    3) 不等于, <>
        SQL> select deptno, dname from dept where deptno <> 10;
    4) between low_num and high_num
        SQL> select ename, sal from emp where sal between 950 and 1500;
        SQL> select ename, sal from emp where sal >= 950 and sal <= 1500;
    5) IS [NOT] NULL
        SQL> select ename, sal, comm from emp where comm is null;
        SQL> select ename, sal, comm from emp where comm is not null;

        注意: 如果 not in (value1, ...) 中 有 NULL值, 则返回false

    6) column [not] in (value1, value2, ...)

        SQL> select ename, sal from emp where sal in (950, 1250, 1500);
        SQL> select ename, sal from emp where sal not in (950, 1250, 1500);
        SQL> select ename, sal from emp where ename in ('SCOTT', 'KING');
    7) 日期

        SQL> select ename, hiredate from emp where hiredate > '10-5月-81';
        注: 当没用使用日期函数处理日期时, 可使用字符串来比较日期.
    8) 模糊查询, like

        通配符:
            %, 0个或多个
            _, 单个字符

        转义字符:
            使用 escape 指定
            SQL> select ename from emp where ename like '123$%' escape '$';
 

⑨ order by
  

复制代码 代码示例:

  1) 升序 asc (默认)

        SQL> select * from dept order by deptno;
        SQL> select * from dept order by deptno asc;
    2) 降序 desc
        SQL> select * from dept order by deptno desc;
    3) 多列的情况
        SQL> select ename, empno, deptno from emp
          2  order by deptno asc, deptno desc;       
 

⑩ 综合
 

复制代码 代码示例:
    SQL> select ename, sal*12 annual_sal from emp
      2  where ename not like '_A%' and sal > 800
      3  order by sal desc;   
 

(2) DML语句
(3) DDL语句
(4) 事务控制语句