KDB对象
2018-12-07 09:49:33 0 举报
AI智能生成
Inspur K-DB数据库对象
作者其他创作
大纲/内容
视图(View)
序列(Sequence)
表(Table)
普通表/堆表、
分区表/外部表/临时表
普通表/堆表、
分区表/外部表/临时表
表构成
行(Row)
存储其他类型的数据
存储其他类型的数据
列(Column)
定义数据的特征
定义数据的特征
列类型
字符型
CHAR (n)
固定长度字符数据
最大可定义2000byte
固定长度字符数据
最大可定义2000byte
VARCHAR(n)
可变长度字符数据
最长可声明 65532byte
可变长度字符数据
最长可声明 65532byte
NCHAR (n)
UNICODE 字符串
固定字符数据
最大可定义 2000byte
UNICODE 字符串
固定字符数据
最大可定义 2000byte
NVARCHAR (n)
UNICODE 字符串
可变长度字符数据
最长可声明 65532byte
UNICODE 字符串
可变长度字符数据
最长可声明 65532byte
RAW
保存任意二进制数据的类型
最大可定义2000byte
保存任意二进制数据的类型
最大可定义2000byte
LONG
存储普通字符串
同一表内只可存在一列该类型数据
将VARCHAR类型最大长度增加至2G
存储普通字符串
同一表内只可存在一列该类型数据
将VARCHAR类型最大长度增加至2G
LONG RAW
存储二进制数据
不可建立索引
同一表内只可存在一列该类型数据
将RAW类型最大长度增加至2G
存储二进制数据
不可建立索引
同一表内只可存在一列该类型数据
将RAW类型最大长度增加至2G
数值型
NUMBER (p,s)
可变长度数字数据
P 定义精度
s 定义小数位数
可变长度数字数据
P 定义精度
s 定义小数位数
日期型
DATE
定义日期和时间
定义日期和时间
TIME
定义时间(时分秒)
小数点后面最长至9位
定义时间(时分秒)
小数点后面最长至9位
TIMESTAMP
定义日期和时间(时分秒)
小数点后面最长至9位
定义日期和时间(时分秒)
小数点后面最长至9位
大对象
CLOB
普通字符串
最大 4G
普通字符串
最大 4G
BLOB
二进制保存
最大 4G
LONG/LONG RAW的扩展数据类型
二进制保存
最大 4G
LONG/LONG RAW的扩展数据类型
XMLTYPE
W3C国际标准格式
保存 XML 数据
内部保存为 CLOB 格式
W3C国际标准格式
保存 XML 数据
内部保存为 CLOB 格式
ANYDATA
BFILE
只读的
二进制文件
不参与事务/不支持RollBack/Commit
存储在数据库外的操作系统文件
只读的
二进制文件
不参与事务/不支持RollBack/Commit
存储在数据库外的操作系统文件
表管理
DBA_TABLES UPDB 内所有表的信息
USER_TABLES 当前用户下的表的信息
ALL_TABLES 用户可访问的表的信息
DBA_TBL_COLUMNS DB 内所有表、视图中的字段信息
USER_TBL_COLUMNS 当前用户下表、视图的字段信息
ALL_TBL_COLUMNS 用户可访问的表、视图中的字段信息
DBA_TABLES UPDB 内所有表的信息
USER_TABLES 当前用户下的表的信息
ALL_TABLES 用户可访问的表的信息
DBA_TBL_COLUMNS DB 内所有表、视图中的字段信息
USER_TBL_COLUMNS 当前用户下表、视图的字段信息
ALL_TBL_COLUMNS 用户可访问的表、视图中的字段信息
基本表
创建(Create)
CREATE TABLE PRODUCT (
PROD_ID NUMBER(6),
PROD_NAME VARCHAR2(50),
PROD_COST VARCHAR2(30),
PROD_PID NUMBER(6),
PROD_DATE DATE
)
TABLESPACE MY_SPACE
PCTFREE 5
INITRANS 3;
- TABLESPACE : 创建表时,指定表数据保存的地方
- PCTFREE : 每个数据块中的空间比重。为了更新行而预约的空间比重 (%)
- INITRANS :可以并发访问数据块的事务初始值
PROD_ID NUMBER(6),
PROD_NAME VARCHAR2(50),
PROD_COST VARCHAR2(30),
PROD_PID NUMBER(6),
PROD_DATE DATE
)
TABLESPACE MY_SPACE
PCTFREE 5
INITRANS 3;
- TABLESPACE : 创建表时,指定表数据保存的地方
- PCTFREE : 每个数据块中的空间比重。为了更新行而预约的空间比重 (%)
- INITRANS :可以并发访问数据块的事务初始值
修改(Update)
修改定义
ALTER TABLE PRODUCT MODIFY (ord_amount default 1 not null);
ALTER TABLE PRODUCT MODIFY (ord_amount default 1 not null);
修改列名
ALTER TABLE PRODUCT RENAME COLUMN ord_amount TO order_amt;
ALTER TABLE PRODUCT RENAME COLUMN ord_amount TO order_amt;
修改数据块参数
ALTER TABLE PRODUCT PCTFREE 10;
ALTER TABLE PRODUCT PCTFREE 10;
删除(Delete)
删除表数据
DROP TABLE PRODUCT;
DROP TABLE PRODUCT;
删除表数据及相关约束
DROP TABLE PRODUCT CASCADE CONSTRATIONS;
DROP TABLE PRODUCT CASCADE CONSTRATIONS;
临时表
(Temporary Tables)
存储于临时表空间
只在 Transaction or Session 期间维护数据;
Data 只在 Session 上显示;
执行 DML 时,不生成 Redo;
执行 DML 时,不生成 ROLLBACK;
dba_tables.(table_name, temporary, duration)
(Temporary Tables)
存储于临时表空间
只在 Transaction or Session 期间维护数据;
Data 只在 Session 上显示;
执行 DML 时,不生成 Redo;
执行 DML 时,不生成 ROLLBACK;
dba_tables.(table_name, temporary, duration)
CREATE GLOBAL TEMPORARY TABLE emp_temp
(
eno NUMBER,
ename VARCHAR2(20),
sal NUMBER)
ON COMMIT DELETE ROWS;
事物提交(COMMIT)后,临时表的暂时段将被自动截断(TRUNCATE)
临时表的表结构和元数据需手动删除
(
eno NUMBER,
ename VARCHAR2(20),
sal NUMBER)
ON COMMIT DELETE ROWS;
事物提交(COMMIT)后,临时表的暂时段将被自动截断(TRUNCATE)
临时表的表结构和元数据需手动删除
CREATE GLOBAL TEMPORARY TABLE emp_temp
(
eno NUMBER,
ename VARCHAR2(20),
sal NUMBER)
ON COMMIT RESERVE ROWS;
会话结束(Session Close)后,临时表的数据将被丢弃(TRUNCATE+DROP)
临时表的表结构和元数据需手动删除
(
eno NUMBER,
ename VARCHAR2(20),
sal NUMBER)
ON COMMIT RESERVE ROWS;
会话结束(Session Close)后,临时表的数据将被丢弃(TRUNCATE+DROP)
临时表的表结构和元数据需手动删除
索引组织表
(Index-Organized Tables IOT)
(Index-Organized Tables IOT)
分区表
(Partition Table)
各分区表储存在不同的段中,可以分别管理
Backup and Restore 可依照分区执行
缩小数据的访问范围,提高性能
通过分割物理存储来管理,降低数据破坏可能性
通过独立管理各个物理区域,方便对于大容量数据的管理
(Partition Table)
各分区表储存在不同的段中,可以分别管理
Backup and Restore 可依照分区执行
缩小数据的访问范围,提高性能
通过分割物理存储来管理,降低数据破坏可能性
通过独立管理各个物理区域,方便对于大容量数据的管理
HASH分区
CREATE TABLE P_LINEITEM_HASH
(
L_ORDERKEY INTEGER NOT NULL,
L_PARTKEY INTEGER NOT NULL,
L_SUPPKEY INTEGER NOT NULL,
L_SHIPMODE CHAR(10) NOT NULL,
L_COMMENT VARCHAR(44) NOT NULL
)NOLOGGING
PARTITION BY HASH(L_ORDERKEY)
(
PARTITION L_ORDERKEY_1,
PARTITION L_ORDERKEY_2,
PARTITION L_ORDERKEY_3
);
CREATE TABLE P_LINEITEM_HASH
(
L_ORDERKEY INTEGER NOT NULL,
L_PARTKEY INTEGER NOT NULL,
L_SUPPKEY INTEGER NOT NULL,
L_SHIPMODE CHAR(10) NOT NULL,
L_COMMENT VARCHAR(44) NOT NULL
)NOLOGGING
PARTITION BY HASH(L_ORDERKEY)
(
PARTITION L_ORDERKEY_1,
PARTITION L_ORDERKEY_2,
PARTITION L_ORDERKEY_3
);
LIST分区
CREATE TABLE P_LINEITEM_HASH
(
L_ORDERKEY INTEGER NOT NULL,
L_PARTKEY INTEGER NOT NULL,
L_SUPPKEY INTEGER NOT NULL,
L_SHIPMODE CHAR(10) NOT NULL,
L_COMMENT VARCHAR(44) NOT NULL
)NOLOGGING
PARTITION BY LIST(L_SHIPMODE)
(
PARTITION L_SHIPMODE_AIR VALUES('AIR') ,
PARTITION L_SHIPMODE_FOB VALUES('FOB') ,
PARTITION L_SHIPMODE_MAIL VALUES('MAIL')
);
CREATE TABLE P_LINEITEM_HASH
(
L_ORDERKEY INTEGER NOT NULL,
L_PARTKEY INTEGER NOT NULL,
L_SUPPKEY INTEGER NOT NULL,
L_SHIPMODE CHAR(10) NOT NULL,
L_COMMENT VARCHAR(44) NOT NULL
)NOLOGGING
PARTITION BY LIST(L_SHIPMODE)
(
PARTITION L_SHIPMODE_AIR VALUES('AIR') ,
PARTITION L_SHIPMODE_FOB VALUES('FOB') ,
PARTITION L_SHIPMODE_MAIL VALUES('MAIL')
);
RANG分区
CREATE TABLE ORDERED
(
ORD_DATE VARCHAR(8),
ORD_ID CHAR(4),
PROD_ID NUMBER(6),
CUST_ID CHAR(5),
EMP_ID CHAR(4),
ORD_AMOUNT NUMBER(4)
)
PARTITION BY RANGE (ORD_DATE)
(
PARTITION PART1 VALUES LESS THAN ('20090501') TABLESPACE MY_SPACE1,
PARTITION PART2 VALUES LESS THAN ('20090701') TABLESPACE MY_SPACE2,
PARTITION PART3 VALUES LESS THAN ('20091001') TABLESPACE MY_SPACE3
);
CREATE TABLE ORDERED
(
ORD_DATE VARCHAR(8),
ORD_ID CHAR(4),
PROD_ID NUMBER(6),
CUST_ID CHAR(5),
EMP_ID CHAR(4),
ORD_AMOUNT NUMBER(4)
)
PARTITION BY RANGE (ORD_DATE)
(
PARTITION PART1 VALUES LESS THAN ('20090501') TABLESPACE MY_SPACE1,
PARTITION PART2 VALUES LESS THAN ('20090701') TABLESPACE MY_SPACE2,
PARTITION PART3 VALUES LESS THAN ('20091001') TABLESPACE MY_SPACE3
);
追加分区
ALTER TABLE ORDERED
ADD PARTITION PART5 VALUES LESS THAN ('20100401');
ALTER TABLE ORDERED
ADD PARTITION PART5 VALUES LESS THAN ('20100401');
删除分区
ALTER TABLE ORDERED
DROP PARTITION PART1;
ALTER TABLE ORDERED
DROP PARTITION PART1;
间隔分区(RANG分区自动化)
create table t1
(
a number,
b varchar2(10)
)
partition by range (a)
interval(1)
(partition p1 values less than(1) ) ;
create table t1
(
a number,
b varchar2(10)
)
partition by range (a)
interval(1)
(partition p1 values less than(1) ) ;
复合分区(数据量10G以上)
CREATE TABLE P_LINEITEM_COMPOSITE_RNG_HASH (
L_ORDERKEY INTEGER NOT NULL,
L_RETURNFLAG CHAR(1) NOT NULL,
L_LINESTATUS CHAR(1) NOT NULL,
L_SHIPDATE DATE NOT NULL,
L_COMMITDATE DATE NOT NULL,
L_RECEIPTDATE DATE NOT NULL,
L_SHIPINSTRUCT CHAR(25) NOT NULL,
L_SHIPMODE CHAR(10) NOT NULL,
L_COMMENT VARCHAR(44) NOT NULL
)
PARTITION BY RANGE(L_SHIPDATE)
SUBPARTITION BY HASH(L_ORDERKEY)
SUBPARTITION TEMPLATE
(
SUBPARTITION SUB_RH_1,
SUBPARTITION SUB_RH_2,
SUBPARTITION SUB_RH_3
)
(
PARTITION RH_YEAR_1992 VALUES LESS THAN(TO_DATE('1993-01-01', 'YYYY-MM-DD')),
PARTITION RH_YEAR_1993 VALUES LESS THAN(TO_DATE('1994-01-01', 'YYYY-MM-DD')),
PARTITION RH_YEAR_1994 VALUES LESS THAN(TO_DATE('1995-01-01', 'YYYY-MM-DD')),
PARTITION RH_YEAR_1995 VALUES LESS THAN(TO_DATE('1996-01-01', 'YYYY-MM-DD')),
PARTITION RH_YEAR_1996 VALUES LESS THAN(TO_DATE('1997-01-01', 'YYYY-MM-DD'))
);
CREATE TABLE P_LINEITEM_COMPOSITE_RNG_HASH (
L_ORDERKEY INTEGER NOT NULL,
L_RETURNFLAG CHAR(1) NOT NULL,
L_LINESTATUS CHAR(1) NOT NULL,
L_SHIPDATE DATE NOT NULL,
L_COMMITDATE DATE NOT NULL,
L_RECEIPTDATE DATE NOT NULL,
L_SHIPINSTRUCT CHAR(25) NOT NULL,
L_SHIPMODE CHAR(10) NOT NULL,
L_COMMENT VARCHAR(44) NOT NULL
)
PARTITION BY RANGE(L_SHIPDATE)
SUBPARTITION BY HASH(L_ORDERKEY)
SUBPARTITION TEMPLATE
(
SUBPARTITION SUB_RH_1,
SUBPARTITION SUB_RH_2,
SUBPARTITION SUB_RH_3
)
(
PARTITION RH_YEAR_1992 VALUES LESS THAN(TO_DATE('1993-01-01', 'YYYY-MM-DD')),
PARTITION RH_YEAR_1993 VALUES LESS THAN(TO_DATE('1994-01-01', 'YYYY-MM-DD')),
PARTITION RH_YEAR_1994 VALUES LESS THAN(TO_DATE('1995-01-01', 'YYYY-MM-DD')),
PARTITION RH_YEAR_1995 VALUES LESS THAN(TO_DATE('1996-01-01', 'YYYY-MM-DD')),
PARTITION RH_YEAR_1996 VALUES LESS THAN(TO_DATE('1997-01-01', 'YYYY-MM-DD'))
);
外部表
表数据是在系统文件里,只能读不能改
是对现有的SQL*Loader功能的补充
访问外部源中的数据
导入导出不支持加密列
不能描述存储在数据库中的任何数据
不能将数据加载到long列中
列不能指定为not null
不能执行DML操作
不能创建索引
表数据是在系统文件里,只能读不能改
是对现有的SQL*Loader功能的补充
访问外部源中的数据
导入导出不支持加密列
不能描述存储在数据库中的任何数据
不能将数据加载到long列中
列不能指定为not null
不能执行DML操作
不能创建索引
CREATE DIRECTORY ext_tab_dir AS '/home/kdb/kddata';
CREATE TABLE external_tab
(
id varchar2(4 char),
name varchar2(12 char),
birthday VARCHAR(20)
)
ORGANIZATION EXTERNAL
(
DEFAULT DIRECTORY ext_dat_dir
ACCESS PARAMETERS
(
LOAD DATA INTO TABLE EXTERNAL_TAB
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(id,name, birthday)
)
LOCATION('1.dat')
);
$ more 1.dat
1,wqq,622
2,wy,119
select * from external_tab;
ID NAME BIRTHDAY
-------- ------------------------ --------------------
1 wqq 622
2 wy 119
CREATE TABLE external_tab
(
id varchar2(4 char),
name varchar2(12 char),
birthday VARCHAR(20)
)
ORGANIZATION EXTERNAL
(
DEFAULT DIRECTORY ext_dat_dir
ACCESS PARAMETERS
(
LOAD DATA INTO TABLE EXTERNAL_TAB
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(id,name, birthday)
)
LOCATION('1.dat')
);
$ more 1.dat
1,wqq,622
2,wy,119
select * from external_tab;
ID NAME BIRTHDAY
-------- ------------------------ --------------------
1 wqq 622
2 wy 119
索引(Index)
同义词(Synonym)
0 条评论
下一页