首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

DB2 730学习札记5

2012-09-02 
DB2 730学习笔记5数据操作语言DML?使用SELECT语句从数据库表检索数据?SELECT * FROM staff?ID???? NAME???

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.

?

?

?

?

?

?

?

?

?

?

?

热点排行