第一节:数据类型
可分为数值型(numeric)、字符串型(character string)、图形字符串(graphic string)、二进制字符串型(binary string)或日期时间型 (datetime)。还有一种叫做DATALINK的特殊数据类型。DATALINK值包含了对存储在数据库以外的文件的逻辑引用。
类型 | 名称 | 范围 | 精度 |
数值型 | |||
SMALLINT(small int) | 小整型 | -32,768到32,767 | 5位 |
INTEGER或INT | 大整型 | -2,147,483,648到2,147,483,647 | 10位 |
BIGINT | 巨整型 | -9,223,372,036,854,775,808到9,223,372,036,854,775,807 | 19位 |
DECIMAL(p,s)、DEC(p,s)、NUMBERIC(p,s)或NUM(p,s) | 小数型 | -10**31+1到10^**31-1。 | 31位 |
REAL | 单精度浮点数 | -3.402E+38到-1.175E-37或从1.175E-37到3.402E+38 | 32位近似值 |
DOUBLE或FLOAT | 双精度浮点数 | -1.79769E+308到-2.225E-307或从2.225E-307到1.79769E+308 | 64位近似值 |
字符串 | |||
CHARACTER(n)或CHAR(n) | 定长字符串 | 1到254字节之间 | 默认1个字节 |
VARCHAR(n)、CHARACTER VARYING(n)或CHAR VARYING(n) | 变长字符串 | 最长可达32,672字节,LONG VARCHAR最长可达32,700字节。 | |
CLOB(n) | 字符大对象字符串 | 最长可以达到2,147,483,647字节 | 默认1个字节 |
GRAPHIC(n) | 定长图形字符串 | 长度介于1到127个双字节字符之间 | |
VARGRAPHIC(n)、LONG VARGRAPHIC | 变长图形字符串 | 最大长度可达16,336个双字节字符 | |
DBCLOB(n) | 双字节字符大对象字符串 | 最长可达1,073,741,823个字符,于容纳非传统型的数据,诸如图片、语音或混合媒体等,还可以容纳用户定义的类型及用户定义的函数的结构化数据 | |
BLOB(n) | 二进制大对象 | 二进制大对象是变长字符串,最长可达2,147,483,647字节 | |
时间日期类型 | |||
DATE | 年份部分的范围是从0001到9999。月份部分的范围是从1到12。日部分的范围是从1到n,其中n的值取决于月份。DATE列长10个字节。 | ||
TIME | TIME是一个由三部分组成的值(小时、分钟和秒)。小时部分的范围是从0到24。分钟和秒部分的范围都是从0到59。如果小时为24,分钟和秒的值都是0。TIME列长8个字节。 | ||
TIMESTAMP | 年份部分的范围是从0001到9999。月份部分的范围是从1到12。日部分的范围是从1到n,其中n的值取决于月份。小时部分的范围是从0到24。分钟和秒部分的范围都是从0到59。微秒部分的范围是从000000到999999。如果小时是 24,那么分钟值、秒的值和微秒的值都是0。TIMESTAMP列长26个字节。 |
第二节:表的基本操作
1.创建表
(1).建表时必须明确指明表空间/索引表空间
(2).建表时必须指明分区键partitioning key,注意分区键的选择应当尽量使用值域大、值分布均匀的字段,比如phone_no等
Create table tab_name(
col1 int,
col2 varchar(10)
) partitioning key(col1) in tbs_store index in tbs_idx not logged initially
(3).可使用如下语句察看表数据是否分布均匀:
select
nodenumber(phone_no),
count(*)
from tmp1_vgrp_inet_call
group by nodenumber(phone_no)
2.修改表的操作:
(1) 增加一个列: Alter table tab_new_tmp3 add column phvarchar(11)
注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度,只能增大:
alter table tab_new_tmp3 alter column ph set data type varchar(20)
(2)修改表名
将表a改名为b,Rename a to b 此语句执行成功的前提是b表不存在
(3)创建视图:
create view viewname as select statement
删除视图: drop view viewname
注:视图唯一能修改的是引用类型列,改变列的范围。
其他定义好了都不能修改。当视图基于的基表drop后,视图变为无效。
3.增删改查操作
(1)插入行
INSERT [INTO] {table_name} [(column_list)]
VALUES {DEFAULT | value_list | select_statement}
例如:insert into xxx(id,name) values(1,limingzhong);
(2)更新行
UPDATE table_name
SET column_name = value [, column_name = value]
[FROM table_name]
[WHERE condition]
(3)删除行
DELETE [FROM table(s)] [WHERE condition]
(4)查询
SELECT * FROM table_name WHERE condition(s)
4.union操作
union all 不去掉重复行,union去掉重复行
select id from user
union
select id from sms
关于db2改表名的操作:rename st.tab_temp1 to tab_temp2 (新表名不能加前缀。经查询修改后的表名为:st.tab_temp2)