oracle的基本查询

1、清屏操作:

SQL> host cls

2、查看当前用户:

SQL> show user;
USER 为 "SCOTT"        当前用户为Scott

3、当前用户下的表:

SQL> select * from tab;               tab数据字典(管理员提供的表)

TNAME                                                        TABTYPE       CLUSTERID      
------------------------------------------------------------ -----------------------

BONUS                                                        TABLE


DEPT                                                         TABLE


EMP                                                          TABLE



TNAME                                                        TABTYPE         CLUSTERID
------------------------------------------------------------ --------------------------

SALGRADE                                                     TABLE

4、查看表结构:

SQL> desc emp;
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------
 EMPNO                                     NOT NULL NUMBER(4)            员工代号
 ENAME                                              VARCHAR2(10)          员工名字
 JOB                                                VARCHAR2(9)            职位
 MGR                                                NUMBER(4)              上级领导
 HIREDATE                                           DATE                    入职时间
 SAL                                                NUMBER(7,2)             薪资
 COMM                                               NUMBER(7,2)             奖金
 DEPTNO                                             NUMBER(2)               部门代号

5、查询所有员工的所有信息

SQL> select * from emp;

     EMPNO ENAME                JOB                       MGR HIREDATE
---------- -------------------- ------------------ ---------- --------------
       SAL       COMM     DEPTNO
---------- ---------- ----------
      7369 SMITH                CLERK                    7902 17-12月-80
       800                    20

      7499 ALLEN                SALESMAN                 7698 20-2月 -81
      1600        300         30

      7521 WARD                 SALESMAN                 7698 22-2月 -81
      1250        500         30


     EMPNO ENAME                JOB                       MGR HIREDATE
---------- -------------------- ------------------ ---------- --------------
       SAL       COMM     DEPTNO
---------- ---------- ----------
      7566 JONES                MANAGER                  7839 02-4月 -81
      2975                    20

      7654 MARTIN               SALESMAN                 7698 28-9月 -81
      1250       1400         30

      7698 BLAKE                MANAGER                  7839 01-5月 -81
      2850                    30


     EMPNO ENAME                JOB                       MGR HIREDATE
---------- -------------------- ------------------ ---------- --------------
       SAL       COMM     DEPTNO
---------- ---------- ----------
      7782 CLARK                MANAGER                  7839 09-6月 -81
      2450                    10

      7788 SCOTT                ANALYST                  7566 19-4月 -87
      3000                    20

      7839 KING                 PRESIDENT                     17-11月-81
      5000                    10


     EMPNO ENAME                JOB                       MGR HIREDATE
---------- -------------------- ------------------ ---------- --------------
       SAL       COMM     DEPTNO
---------- ---------- ----------
      7844 TURNER               SALESMAN                 7698 08-9月 -81
      1500          0         30

      7876 ADAMS                CLERK                    7788 23-5月 -87
      1100                    20

      7900 JAMES                CLERK                    7698 03-12月-81
       950                    30


     EMPNO ENAME                JOB                       MGR HIREDATE
---------- -------------------- ------------------ ---------- --------------
       SAL       COMM     DEPTNO
---------- ---------- ----------
      7902 FORD                 ANALYST                  7566 03-12月-81
      3000                    20

      7934 MILLER               CLERK                    7782 23-1月 -82
      1300                    10


已选择14行。

6、设置行宽  每一行显示120个字符:

SQL> set linesize 120

7、设置ename列宽  a表示字符串 8表示字符串的宽度是8:

SQL> col ename for a8

8、设置ename列宽   一个9代表一个数字,薪水是四个数字所以是四个9:

SQL> col sal for 9999

9、执行上一条sql语句:

SQL> /

     EMPNO ENAME    JOB                       MGR HIREDATE         SAL       COMM     DEPTNO
---------- -------- ------------------ ---------- -------------- ----- ---------- ----------
      7369 SMITH    CLERK                    7902 17-12月-80       800                    20
      7499 ALLEN    SALESMAN                 7698 20-2月 -81      1600        300         30
      7521 WARD     SALESMAN                 7698 22-2月 -81      1250        500         30
      7566 JONES    MANAGER                  7839 02-4月 -81      2975                    20
      7654 MARTIN   SALESMAN                 7698 28-9月 -81      1250       1400         30
      7698 BLAKE    MANAGER                  7839 01-5月 -81      2850                    30
      7782 CLARK    MANAGER                  7839 09-6月 -81      2450                    10
      7788 SCOTT    ANALYST                  7566 19-4月 -87      3000                    20
      7839 KING     PRESIDENT                     17-11月-81      5000                    10
      7844 TURNER   SALESMAN                 7698 08-9月 -81      1500          0         30
      7876 ADAMS    CLERK                    7788 23-5月 -87      1100                    20

     EMPNO ENAME    JOB                       MGR HIREDATE         SAL       COMM     DEPTNO
---------- -------- ------------------ ---------- -------------- ----- ---------- ----------
      7900 JAMES    CLERK                    7698 03-12月-81       950                    30
      7902 FORD     ANALYST                  7566 03-12月-81      3000                    20
      7934 MILLER   CLERK                    7782 23-1月 -82      1300                    10

已选择14行。

10、通过列名查询:

SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp;

     EMPNO ENAME    JOB                       MGR HIREDATE         SAL       COMM     DEPTNO
---------- -------- ------------------ ---------- -------------- ----- ---------- ----------
      7369 SMITH    CLERK                    7902 17-12月-80       800                    20
      7499 ALLEN    SALESMAN                 7698 20-2月 -81      1600        300         30
      7521 WARD     SALESMAN                 7698 22-2月 -81      1250        500         30
      7566 JONES    MANAGER                  7839 02-4月 -81      2975                    20
      7654 MARTIN   SALESMAN                 7698 28-9月 -81      1250       1400         30
      7698 BLAKE    MANAGER                  7839 01-5月 -81      2850                    30
      7782 CLARK    MANAGER                  7839 09-6月 -81      2450                    10
      7788 SCOTT    ANALYST                  7566 19-4月 -87      3000                    20
      7839 KING     PRESIDENT                     17-11月-81      5000                    10
      7844 TURNER   SALESMAN                 7698 08-9月 -81      1500          0         30
      7876 ADAMS    CLERK                    7788 23-5月 -87      1100                    20

     EMPNO ENAME    JOB                       MGR HIREDATE         SAL       COMM     DEPTNO
---------- -------- ------------------ ---------- -------------- ----- ---------- ----------
      7900 JAMES    CLERK                    7698 03-12月-81       950                    30
      7902 FORD     ANALYST                  7566 03-12月-81      3000                    20
      7934 MILLER   CLERK                    7782 23-1月 -82      1300                    10

已选择14行。

11、SQL优化:尽量使用列名代替* 查询要快

12、注释  ( 单行用 -- 多行用 /* */)

13、查询员工号 姓名 月薪 年薪:

SQL> select empno,ename,sal,sal*12 from emp;

     EMPNO ENAME      SAL     SAL*12
---------- -------- ----- ----------
      7369 SMITH      800       9600
      7499 ALLEN     1600      19200
      7521 WARD      1250      15000
      7566 JONES     2975      35700
      7654 MARTIN    1250      15000
      7698 BLAKE     2850      34200
      7782 CLARK     2450      29400
      7788 SCOTT     3000      36000
      7839 KING      5000      60000
      7844 TURNER    1500      18000
      7876 ADAMS     1100      13200

     EMPNO ENAME      SAL     SAL*12
---------- -------- ----- ----------
      7900 JAMES      950      11400
      7902 FORD      3000      36000
      7934 MILLER    1300      15600

已选择14行。

14、查询员工号 姓名 月薪 年薪 年收入:

SQL> select empno,ename,sal,sal*12 年薪,comm 奖金,sal*12+comm 年收入 from emp;

     EMPNO ENAME      SAL       年薪       奖金     年收入
---------- -------- ----- ---------- ---------- ----------
      7369 SMITH      800       9600
      7499 ALLEN     1600      19200        300      19500
      7521 WARD      1250      15000        500      15500
      7566 JONES     2975      35700
      7654 MARTIN    1250      15000       1400      16400
      7698 BLAKE     2850      34200
      7782 CLARK     2450      29400
      7788 SCOTT     3000      36000
      7839 KING      5000      60000
      7844 TURNER    1500      18000          0      18000
      7876 ADAMS     1100      13200

     EMPNO ENAME      SAL       年薪       奖金     年收入
---------- -------- ----- ---------- ---------- ----------
      7900 JAMES      950      11400
      7902 FORD      3000      36000
      7934 MILLER    1300      15600

已选择14行。

15、SQL中null值:

1. 包含null的表达式都为null

所以进行修改:

SQL> ed
已写入 file afiedt.buf

  1* select empno,ename,sal,sal*12 年薪,comm 奖金,sal*12+nvl(comm,0) 年收入 from emp

SQL> /

EMPNO ENAME SAL 年薪 奖金 年收入
---------- -------------------- ---------- ---------- ---------- ----------
7369 SMITH 800 9600 9600
7499 ALLEN 1600 19200 300 19500
7521 WARD 1250 15000 500 15500
7566 JONES 2975 35700 35700
7654 MARTIN 1250 15000 1400 16400
7698 BLAKE 2850 34200 34200
7782 CLARK 2450 29400 29400
7788 SCOTT 3000 36000 36000
7839 KING 5000 60000 60000
7844 TURNER 1500 18000 0 18000
7876 ADAMS 1100 13200 13200

EMPNO ENAME SAL 年薪 奖金 年收入
---------- -------------------- ---------- ---------- ---------- ----------
7900 JAMES 950 11400 11400
7902 FORD 3000 36000 36000
7934 MILLER 1300 15600 15600

已选择14行。

 2. SQL中,null != null:

SQL> select * from emp where comm=null;

未选定行

此时进行修改 :  要用is 或者用 is not

SQL> ed
已写入 file afiedt.buf

  1* select * from emp where comm is null
SQL> /

     EMPNO ENAME                JOB                       MGR HIREDATE
---------- -------------------- ------------------ ---------- --------------
       SAL       COMM     DEPTNO
---------- ---------- ----------
      7369 SMITH                CLERK                    7902 17-12月-80
       800                    20

      7566 JONES                MANAGER                  7839 02-4月 -81
      2975                    20

      7698 BLAKE                MANAGER                  7839 01-5月 -81
      2850                    30


     EMPNO ENAME                JOB                       MGR HIREDATE
---------- -------------------- ------------------ ---------- --------------
       SAL       COMM     DEPTNO
---------- ---------- ----------
      7782 CLARK                MANAGER                  7839 09-6月 -81
      2450                    10

      7788 SCOTT                ANALYST                  7566 19-4月 -87
      3000                    20

      7839 KING                 PRESIDENT                     17-11月-81
      5000                    10


     EMPNO ENAME                JOB                       MGR HIREDATE
---------- -------------------- ------------------ ---------- --------------
       SAL       COMM     DEPTNO
---------- ---------- ----------
      7876 ADAMS                CLERK                    7788 23-5月 -87
      1100                    20

      7900 JAMES                CLERK                    7698 03-12月-81
       950                    30

      7902 FORD                 ANALYST                  7566 03-12月-81
      3000                    20


     EMPNO ENAME                JOB                       MGR HIREDATE
---------- -------------------- ------------------ ---------- --------------
       SAL       COMM     DEPTNO
---------- ---------- ----------
      7934 MILLER               CLERK                    7782 23-1月 -82
      1300                    10


已选择10行。
SQL> ed
已写入 file afiedt.buf

  1* select * from emp where comm is  not null
SQL>
SQL> /

     EMPNO ENAME                JOB                       MGR HIREDATE
---------- -------------------- ------------------ ---------- --------------
       SAL       COMM     DEPTNO
---------- ---------- ----------
      7499 ALLEN                SALESMAN                 7698 20-2月 -81
      1600        300         30

      7521 WARD                 SALESMAN                 7698 22-2月 -81
      1250        500         30

      7654 MARTIN               SALESMAN                 7698 28-9月 -81
      1250       1400         30


     EMPNO ENAME                JOB                       MGR HIREDATE
---------- -------------------- ------------------ ---------- --------------
       SAL       COMM     DEPTNO
---------- ---------- ----------
      7844 TURNER               SALESMAN                 7698 08-9月 -81
      1500          0         30

16、去掉重复的记录:

SQL> select deptno from emp;

    DEPTNO
----------
        20
        30
        30
        20
        30
        30
        10
        20
        10
        30
        20

    DEPTNO
----------
        30
        20
        10

已选择14行。

SQL> select DISTINCT deptno from emp;

    DEPTNO
----------
        30
        20
        10

注意:

 

SQL> select job from emp;

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

JOB
------------------
CLERK
ANALYST
CLERK

已选择14行。

SQL>  select DISTINCT job from emp;

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

SQL> select DISTINCT deptno,job from emp;            这里显示的是职位和部门代号合起来没有重复的

    DEPTNO JOB
---------- ------------------
        20 CLERK
        30 SALESMAN
        20 MANAGER
        30 CLERK
        10 PRESIDENT
        30 MANAGER
        10 CLERK
        10 MANAGER
        20 ANALYST

已选择9行。

17、连接concat:

SQL> select concat('Hello',' World') from emp;

CONCAT('HELLO','WORLD'
----------------------
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World

CONCAT('HELLO','WORLD'
----------------------
Hello World
Hello World
Hello World

已选择14行。

这里有一个新概念dual 伪表

SQL> select concat('Hello',' World') from dual;

CONCAT('HELLO','WORLD'
----------------------
Hello World

18、运算符“+ - * /” 与数学符号一样进行使用

 例如:

SQL> select  5-2 from dual;

       5-2
----------
         3
SQL> select 7+8 from dual;

       7+8
----------
        15
SQL> select 7*8 from dual;

       7*8
----------
        56
SQL> select 8/2 from dual;

       8/2
----------
         4

19、连接符 || :

SQL>  select 'Hello'||'  World' from dual;

'HELLO'||'WORLD'
------------------------
Hello  World
SQL>  select ename||'的薪水是'||sal  一列(别名)
  2   from emp;

一列
--------------------------------------------------------------------------------
SMITH的薪水是800
ALLEN的薪水是1600
WARD的薪水是1250
JONES的薪水是2975
MARTIN的薪水是1250
BLAKE的薪水是2850
CLARK的薪水是2450
SCOTT的薪水是3000
KING的薪水是5000
TURNER的薪水是1500
ADAMS的薪水是1100

一列
--------------------------------------------------------------------------------
JAMES的薪水是950
FORD的薪水是3000
MILLER的薪水是1300

已选择14行。

20、创建保存文件:

SQL> save c:\a.sql
已创建 file c:\a.sql
SQL> @c:\a.sql

     EMPNO ENAME    JOB              MGR HIREDATE         SAL       COMM     DEPTNO                                     
---------- -------- --------- ---------- -------------- ----- ---------- ----------                                     
      7369 SMITH    CLERK           7902 17-12月-80       800                    20                                     
      7499 ALLEN    SALESMAN        7698 20-2月 -81      1600        300         30                                     
      7521 WARD     SALESMAN        7698 22-2月 -81      1250        500         30                                     
      7566 JONES    MANAGER         7839 02-4月 -81      2975                    20                                     
      7654 MARTIN   SALESMAN        7698 28-9月 -81      1250       1400         30                                     
      7698 BLAKE    MANAGER         7839 01-5月 -81      2850                    30                                     
      7782 CLARK    MANAGER         7839 09-6月 -81      2450                    10                                     
      7788 SCOTT    ANALYST         7566 13-7月 -87      3000                    20                                     
      7839 KING     PRESIDENT            17-11月-81      5000                    10                                     
      7844 TURNER   SALESMAN        7698 08-9月 -81      1500          0         30                                     
      7876 ADAMS    CLERK           7788 13-7月 -87      1100                    20                                     

     EMPNO ENAME    JOB              MGR HIREDATE         SAL       COMM     DEPTNO                                     
---------- -------- --------- ---------- -------------- ----- ---------- ----------                                     
      7900 JAMES    CLERK           7698 03-12月-81       950                    30                                     
      7902 FORD     ANALYST         7566 03-12月-81      3000                    20                                     
      7934 MILLER   CLERK           7782 23-1月 -82      1300                    10                                     

已选择14行。

 

posted on 2018-09-05 13:01  孙崇武  阅读(466)  评论(0编辑  收藏  举报

导航