02-Oracle学习_查询语句

三, SQL语言

1, SQL标准

    ① SQL1992
    ② SQL1999

2, 第四代语言

    面向"问题"的语言,
    只需要告诉计算机做什么,而不需要管怎么做.

3, SQL语句分类

(1) 查询语句

C:\Windows\System32>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) 事务控制语句

你可能感兴趣的:(查询语句,oracle学习)