【 IBM DB2 学习笔记一】
【彭建军】
【 20050425 】
注意:在 IBM DB2 中,与 MS SQL Server 2000 中相同的语法或者概念,这里就不一一列出了。
一、【 DB2 SQL 概述】
1 、 【模式】
1.1 、模式是已命名的对象(如表和视图)的集合。模式提供了数据库中对象的逻辑分类。
1.2 、当在数据库中创建对象的时候,系统就隐性的创建了模式。当然,也可以使用 CREATE SCHEMA 显式的创建模式。
1.3 、当命名对象的时候,需要注意对象的名称有两个部分,即,模式 . 对象名称 , 形如: pjj.TempTable1 。如果不显示指定模式,则系统使用默认模式(默认用户的 ID )。
2 、 【数据类型】
定长字符串 CHAR(x) x 值域( 1 ~ 254 ) 一个字节序列
变长字符串 VARCHAR(X)
LONG VARCHAR(X)
LOB( 大对象 )
定长图形字符串 GRAPHCI(X) x 值域( 1 ~ 127 ) 两个字节序列
变长图形字符串 VARGRAPHCI(X)
LONG GRAPHCI(X)
DBCLOB( 大对象 )
二进制字符串 暂缺 一个字节序列
BLOB( 大对象 )
数字 ( 所有数字都有精度,精度是指除符号位以外的位数或者数字数 )
SMALLINT 精度为 5 2 字节整数
INTEGER 精度为 10 4 字节整数
BIGINT 精度为 19 8 字节整数
REAL 实数的 32 位近似值
DOUBLE 实数的 64 位近似值
DECIMAL(P,S) P, 精度, S, 小数位数,十进制数, P 必须 <= 32 , S 必须 <=P ,缺省 :P=5,S=0
日期时间型 14 位字符串,即非数字类型也非字符串类型
日期 DATE 年月日
时间 TIME 24 小时制,分为 小时分钟秒
时间戳记 TIMESTAMP 1 日期和时间的值,分为 年月日小时分钟秒微秒
空值 不同于任何非空值
3 、 其他
DB2 不区分大小写(单引号或者双引号内的内容除外)
二、【创建表和视图】
1 、【创建表】
CREATE TABLE PERS
(
ID SMALLINT NOT NULL,
NAME VARCHAR(9),
DEPT SMALLINT WITH DEFAULT 10,
JOB CHAR(5),
YEARS SMALLINT,
SALARY DECIMAL(7,2),
COMM DECIMAL(7,2),
BIRTH_DATE DATE
)
2 、【在表中插入值】 ( 三种方式 )
INSERT INTO PERS
VALUES (12,'Harris',20,'Sales',5,18000,1000,' 1950-1-1 ')
INSERT INTO PERS (NAME,JOB,ID)
VALUES ('Swagerman','Pramr',500),
(' Limoges ','Prgmr',510),
('Li','Prgmr',520)
INSERT INTO PERS (ID,NAME,DEPT,JOB,YEARS,SALARY,COMM,BIRTH_DATE)
SELECT ID,NAME,DEPT,JOB,YEARS,SALARY,COMM,BIRTH_DATE
FROM STAFF
WHERE ID = 58
3 、【更新数据】
UPDATE PERS
SET JOB = 'Prgmr',SALARY = SALARY + 300
WHERE ID = 410
UPDATE PERS
SET SALARY = SALARY * 1.15
WHERE JOB = 'Sales'
4 、【删除数据】
DELETE FROM PERS
WHERE ID = 120
5 、【删除表】
DROP TABLE PERS
6 、【创建视图】
( 可以选用 WITH CHECK OPTION 选项,该选项针对 WHERE 的条件进行限定 )
CREATE VIEW STAFF_ONLY
AS SELECT ID,NAME,DEPT,JOB,YEARS
FROM STAFF
WHERE JOB <> 'Mgr' AND DEPT = 20 WITH CHECK OPTION
三、【使用 SQL 语句存取数据】
(? CREATE 显示一般帮助提示信息 )
1 、【连接数据库】
CONNECT TO MYDB2 USER USERID USING PASSWORD
2 、【谓词】
x=y x<>y x
1<y x="">y x>=y x<=y
2
3IS NULL
4
5IS NOT NULL
6
7## 3 、【其他的一些去 SQL SERVER 类似的东西就省略】
8
9## 4 、【运算次序】
10
11FROM
12
13WHERE
14
15GROUP BY
16
17HAVING
18
19SELECT
20
21ORDER BY
22
23## 5 、【函数】
24
25### 5.1 、【列函数】
26
27( 列函数对列中的一组值进行运算以得到单一的结果值! )
28
29AVG
30
31COUNT
32
33MAX
34
35MIN
36
37### 5.2 、【标量函数】
38
39### ( 标量函数对一个单一值进行运算以返回另一个单一的结果值! )
40
41ABS 绝对值
42
43HEX 十六进制
44
45LENGTH 返回字节数(对于图形字符串则返回双字节字符串)
46
47YEAR
48
49### 5.3 、【表函数】
50
51( 表函数仅可用于 FROM 子句,返回表的列! )
52
53# 四、【表达式和子查询】
54
55## 1 、【标量全查询】
56
57## ( 返回一行,该行只包括一个值,用于从数据库中检索值 )
58
59SELECT LASTNAME,FIRSTNAME
60
61FROM EMPLOYEE
62
63WHERE SALARY > (SELECT AVG(SALARY) FROM EMPLOYEE)
64
65SELECT AVG(SALARY) AS "Average_Employee",
66
67(SELECT AVG(SALARY) AS "Average_Staff" FROM STAFF)
68
69FROM EMPLOYEE
70
71注意 :
72
73SQL SERVER 中 , 字符串用单引号 , 而 DB2 中则使用双引号 !
74
75<p class="MsoNormal" style</y>