发表于 2016-11-15 07:42:14

DB2 730学习笔记5

  数据操作语言DML
  使用SELECT语句从数据库表检索数据 
  SELECT * FROM staff
  ID     NAME      DEPT   JOB   YEARS  SALARY    COMM    
------ --------- ------ ----- ------ --------- ---------
    10 Sanders       20 Mgr        7  98357.50         -
    20 Pernal        20 Sales      8  78171.25    612.45
    30 Marenghi      38 Mgr        5  77506.75         -
    40 O'Brien       38 Sales      6  78006.00    846.55
    50 Hanes         15 Mgr       10  80659.80         -
    60 Quigley       38 Sales      -  66808.30    650.25
    70 Rothman       15 Sales      7  76502.83   1152.00
    80 James         20 Clerk      -  43504.60    128.20
    90 Koonitz       42 Sales      6  38001.75   1386.70
   100 Plotz         42 Mgr        7  78352.80         -
   110 Ngan          15 Clerk      5  42508.20    206.60
   120 Naughton      38 Clerk      -  42954.75    180.00
   130 Yamaguchi     42 Clerk      6  40505.90     75.60
   140 Fraye         51 Mgr        6  91150.00         -
   150 Williams      51 Sales      6  79456.50    637.65
   160 Molinare      10 Mgr        7  82959.20         -
   170 Kermisch      15 Clerk      4  42258.50    110.10
   180 Abrahams      38 Clerk      3  37009.75    236.50
   190 Sneider       20 Clerk      8  34252.75    126.50
   200 Scoutten      42 Clerk      -  41508.60     84.20
   210 Lu            10 Mgr       10  90010.00         -
   220 Smith         51 Sales      7  87654.50    992.80
   230 Lundquist     51 Clerk      3  83369.80    189.65
   240 Daniels       10 Mgr        5  79260.25         -
   250 Wheeler       51 Clerk      6  74460.00    513.30
   260 Jones         10 Mgr       12  81234.00         -
   270 Lea           66 Mgr        9  88555.50         -
   280 Wilson        66 Sales      9  78674.50    811.50
   290 Quill         84 Mgr       10  89818.00         -
   300 Davis         84 Sales      5  65454.50    806.10
   310 Graham        66 Sales     13  71000.00    200.30
   320 Gonzales      66 Sales      4  76858.20    844.00
   330 Burke         66 Clerk      1  49988.00     55.50
   340 Edwards       84 Sales      7  67844.00   1285.00
   350 Gafney        84 Clerk      5  43030.50    188.00
  35 record(s) selected.
  要限制查询结果集中行的数量,可以使用FETCH FIRST子句
  SELECT * FROM staff FETCH FIRST 10 ROWS ONLY
  ID     NAME      DEPT   JOB   YEARS  SALARY    COMM    
------ --------- ------ ----- ------ --------- ---------
    10 Sanders       20 Mgr        7  98357.50         -
    20 Pernal        20 Sales      8  78171.25    612.45
    30 Marenghi      38 Mgr        5  77506.75         -
    40 O'Brien       38 Sales      6  78006.00    846.55
    50 Hanes         15 Mgr       10  80659.80         -
    60 Quigley       38 Sales      -  66808.30    650.25
    70 Rothman       15 Sales      7  76502.83   1152.00
    80 James         20 Clerk      -  43504.60    128.20
    90 Koonitz       42 Sales      6  38001.75   1386.70
   100 Plotz         42 Mgr        7  78352.80         -
  10 record(s) selected.
  检索指定的列
  SELECT name,salary FROM staff FETCH FIRST 10 ROWS ONLY
  NAME      SALARY  
--------- ---------
Sanders    98357.50
Pernal     78171.25
Marenghi   77506.75
O'Brien    78006.00
Hanes      80659.80
Quigley    66808.30
Rothman    76502.83
James      43504.60
Koonitz    38001.75
Plotz      78352.80
  10 record(s) selected.
  使用DISTINCT子句消除结果集中的重复的行
  SELECT DISTINCT dept,job FROM STAFFDEPT   JOB 
------ -----
    10 Mgr 
    15 Clerk
    15 Mgr 
    15 Sales
    20 Clerk
    20 Mgr 
    20 Sales
    38 Clerk
    38 Mgr 
    38 Sales
    42 Clerk
    42 Mgr 
    42 Sales
    51 Clerk
    51 Mgr 
    51 Sales
    66 Clerk
    66 Mgr 
    66 Sales
    84 Clerk
    84 Mgr 
    84 Sales
  22 record(s) selected.
  使用AS子句给选择列表中的表达式分配一个有意义的名字
  SELECT name,salary+comm AS pay FROM staff
  NAME      PAY      
--------- ----------
Sanders            -
Pernal      78783.70
Marenghi           -
O'Brien     78852.55
Hanes              -
Quigley     67458.55
Rothman     77654.83
James       43632.80
Koonitz     39388.45
Plotz              -
Ngan        42714.80
Naughton    43134.75
Yamaguchi   40581.50
Fraye              -
Williams    80094.15
Molinare           -
Kermisch    42368.60
Abrahams    37246.25
Sneider     34379.25
Scoutten    41592.80
Lu                 -
Smith       88647.30
Lundquist   83559.45
Daniels            -
Wheeler     74973.30
Jones              -
Lea                -
Wilson      79486.00
Quill              -
Davis       66260.60
Graham      71200.30
Gonzales    77702.20
Burke       50043.50
Edwards     69129.00
Gafney      43218.50
  35 record(s) selected.
  使用WHERE子句和谓词限制查询返回的数据量
  寻找工资超过$20000的职员姓名
  SELECT name,salary FROM STAFF WHERE salary > 20000
  NAME      SALARY  
--------- ---------
Sanders    98357.50
Pernal     78171.25
Marenghi   77506.75
O'Brien    78006.00
Hanes      80659.80
Quigley    66808.30
Rothman    76502.83
James      43504.60
Koonitz    38001.75
Plotz      78352.80
Ngan       42508.20
Naughton   42954.75
Yamaguchi  40505.90
Fraye      91150.00
Williams   79456.50
Molinare   82959.20
Kermisch   42258.50
Abrahams   37009.75
Sneider    34252.75
Scoutten   41508.60
Lu         90010.00
Smith      87654.50
Lundquist  83369.80
Daniels    79260.25
Wheeler    74460.00
Jones      81234.00
Lea        88555.50
Wilson     78674.50
Quill      89818.00
Davis      65454.50
Graham     71000.00
Gonzales   76858.20
Burke      49988.00
Edwards    67844.00
Gafney     43030.50
  35 record(s) selected.
  列出工资超过$20000的不是经理的职员姓名、头衔和工资
  SELECT name,job,salary FROM staff WHERE job <> 'Mgr' AND salary > 2000
  NAME      JOB   SALARY  
--------- ----- ---------
Pernal    Sales  78171.25
O'Brien   Sales  78006.00
Quigley   Sales  66808.30
Rothman   Sales  76502.83
James     Clerk  43504.60
Koonitz   Sales  38001.75
Ngan      Clerk  42508.20
Naughton  Clerk  42954.75
Yamaguchi Clerk  40505.90
Williams  Sales  79456.50
Kermisch  Clerk  42258.50
Abrahams  Clerk  37009.75
Sneider   Clerk  34252.75
Scoutten  Clerk  41508.60
Smith     Sales  87654.50
Lundquist Clerk  83369.80
Wheeler   Clerk  74460.00
Wilson    Sales  78674.50
Davis     Sales  65454.50
Graham    Sales  71000.00
Gonzales  Sales  76858.20
Burke     Clerk  49988.00
Edwards   Sales  67844.00
Gafney    Clerk  43030.50
  24 record(s) selected.
  寻找以字母S开头的所有姓名
  SELECT name FROM staff WHERE  name LIKE 'S%'
  NAME    
---------
Sanders 
Sneider 
Scoutten
Smith   
  4 record(s) selected.
  子查询是主查询的WHERE子句中出现的SELECT语句,它将结果集提供给WHERE子句。
  SELECT lastname FROM employee
  WHERE lastname IN
  (SELECT sales_person FROM sales
    WHERE sales_date < '01/01/2005')
  LASTNAME      
---------------
LEE           
  1 record(s) selected.
  相关名称是在查询的FROM子句定义的,可以作为表的简单名称;相关名称还可以消除对来自不同表的相同列名的二义性引用。
  SELECT e.salary FROM employee e
  WHERE e.salary <
  (SELECT AVG(s.salary) FROM staff s)SALARY    
-----------
   66500.00
   49250.00
   55280.00
   62250.00
   44680.00
   51340.00
   50450.00
   57740.00
   49840.00
   42180.00
   48760.00
   49180.00
   47250.00
   37380.00
   36250.00
   35340.00
   37750.00
   35900.00
   39950.00
   45370.00
   43840.00
   46500.00
   39250.00
   64680.00
   37760.00
   46250.00
   35900.00
   35370.00
   31840.00
  29 record(s) selected.
  使用ORDER BY 子句对结果进行排序
  SELECT name, salary FROM staff
  WHERE salary > 80000
  ORDER BY salary
  NAME      SALARY  
--------- ---------
Hanes      80659.80
Jones      81234.00
Molinare   82959.20
Lundquist  83369.80
Smith      87654.50
Lea        88555.50
Quill      89818.00
Lu         90010.00
Fraye      91150.00
Sanders    98357.50
  10 record(s) selected.
  在ORDER BY子句中指定DESC可以对结果集进行降序排序
  SELECT name, salary FROM staff
  WHERE salary > 80000
  ORDER BY salary DESC
  NAME      SALARY  
--------- ---------
Sanders    98357.50
Fraye      91150.00
Lu         90010.00
Quill      89818.00
Lea        88555.50
Smith      87654.50
Lundquist  83369.80
Molinare   82959.20
Jones      81234.00
Hanes      80659.80
  10 record(s) selected.
页: [1]
查看完整版本: DB2 730学习笔记5