DB2基础sql学习.doc
文本预览下载声明
DB2数据库语法知识1. 创建表,但不创建表的日志 1
2. 复制表结构 2
3. 怎样向表中插入数据? 2
4. 如何修改表中的数据? 2
5. CASE WHEN 和DECODE的用法 3
6.union 和union all的用法 4
7.join、full join、left join、right join的用法 5
8.exists、not exists 和not in的用法 6
9.Delete、alter、drop的区别和用法 7
10.查询一个表中重复的记录 8
11.删除一个表中重复的记录并保留一条相同的记录(即相同的记录只保留一条) 9
12.merge into的用法 9
13.递归查询 10
14.索引 12
15.函数 13
1》聚集函数 13
2》标量函数 15
3》日期函数 17
16.Db2 sql 优化 21
SQL分类DDL-数据定义语言(CREATE,ALTER,DROP,DECLARE)
DML-数据操纵语言(SELECT,DELETE,UPDATE,INSERT)
DCL-数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)
创建表,但不创建表的日志
创建表的日志需要耗费空间,不创建日志可以节约很多空间。
CREATE TABLE sky
(
x_name VARCHAR (20),
x_number INT
)
NOT LOGGED INITIALLY --不在表上创建日志的关键字alter table table_name add column 字段名 类型名;
怎样修改数据类型:
alter table table_name alter column 名 set data type 要修改的类型名;
复制表结构
通过复制表结构,我们可以建一张和父表字段、字段类型都一样的表,复制表结构的关键字为 DEFINITION ONLY。
例:创建一张和SKY表结构一样的表
CREATE TABLE xxxx
AS(
SELECT *
FROM sky
)
DEFINITION ONLY
NOT LOGGED INITIALLY
同时也有另外一种方法:
举例如下:create table xxxx like skyCREATE TABLE xwq
AS(
SELECT id,name FROM tests
)
DEFINITION ONLY
怎样向表中插入数据?
使用INSERT关键字向表中插入数据
举例:向xxxx表中插入一条数据。
INSERT INTO XXXX
VALUES (许文强, 001)
如何修改表中的数据?
举例:将xxxx表中id为5的x_name修改为‘test’,x_number修改为‘10’。UPDATE XXXX
SET (X_NAME, X_NUMBER) = (test, 10)
WHERE ID = 5;
举例:将xxxx表中id为5的x_name,x_number修改为ss表中id为5的x_name,x_number。
UPDATE XXXX
SET (X_NAME, X_NUMBER) =
(SELECT X_NAME, X_NUMBER
FROM SS
WHERE ID = 5)
WHERE ID = 5;
CASE WHEN 和DECODE的用法
举例:查询,在查询结果中将学生名字为‘许文强’的,显示为‘ss’。
方法一使用case when:
SELECT CASE WHEN x_name = 许文强 THEN ss
END x_name FROM XXXX
方法二使用decode:
SELECT decode (x_name, --decode里面可以嵌套函数
许文强,
ss,
x_name) x_name
FROM XXXX
举例:查询,在查询结果中将学生名字为‘许文强’的,显示为‘ss’,将学生名字为‘许文’的,显示为‘KK’
SELECT CASE WHEN x_name = 许文强 THEN ss
WHEN x_name = 许文 THEN KK
ELSE xu
END x_name FROM XXXX
SELECT decode (x_name, --decode里面可以嵌套函数
许文强,
ss,
许文,
显示全部