达梦数据库的表与其它数据库表的管理方式基本上一致
管理表管理表的准则表是数据库设计过程中的基本构件,基于来自应用开发者的有关应用如何运作和所期望 的数据类型,数据库管理员应与应用开发者一起工作,并认真规划每个表,具体需要做到以 下几点:
- 规范化表,估算并校正表结构,使数据冗余达到最小;
- 为每个列选择合适的数据类型,是否允许为空等,并根据实际情况判断是否需要对 列进行加密或压缩处理;
- 建立合适的完整性约束。
- 建立合适的聚集索引。每个表(列存储表,堆表除外)都含一个聚集索引,默认以 ROWID建立,而建立合适的聚集索引,可以有效加快表的检索效率;
- 根据实际需要,建立合适类型的表。DM支持的表类型包括普通表、临时表、水平分 区表、堆表和列存储表。本章只介绍普通表和临时表,其他类型表将在其他章节中 重点介绍。创建简单表
CREATE TABLE EMPLOYEE (
EMPNO INT PRIMARY KEY,
ENAME VARCHAR(15) NOT NULL,
JOB VARCHAR(10),
MGR INT CONSTRAINT EMP_FKEY REFERENCES EMPLOYEE(EMPNO),
HIREDATE DATE DEFAULT (CURDATE),
SALARY FLOAT,
DEPTNO TINYINT NOT NULL CONSTRAINT DEPT_FKEY REFERENCES DEPT(DEPTNO))
STORAGE (
INITIAL 50,
NEXT 50,
MINEXTENTS 10,
FILLFACTOR 80,
ON USERS);
创建临时表CREATE GLOBAL TEMPORARY TABLE TMP_EMP(
EMPNO INT PRIMARY KEY,
ENAME VARCHAR(15) NOT NULL,
JOB VARCHAR(10))
ON COMMIT DELETE ROWS --事务级临时表ON COMMIT PRESERVE ROWS --会话级临时表
修改表参数alter table tablename MODIFY <列定义>|
ADD [COLUMN] <列定义>|
ADD [COLUMN] (<列定义> {,<列定义>})|
REBUILD COLUMNS|
DROP [COLUMN] <列名> [RESTRICT | CASCADE] |
ADD [CONSTRAINT [<约束名>] ] <表级约束子句> [<CHECK选项>] [<失效生效选项>] |
DROP CONSTRAINT <约束名> [RESTRICT | CASCADE] | ALTER [COLUMN] <列名> SET DEFAULT <列缺省值表达式>|
ALTER [COLUMN] <列名> DROP DEFAULT |
ALTER [COLUMN] <列名> RENAME TO <列名> |
ALTER [COLUMN] <列名> SET <NULL | NOT NULL>|
ALTER [COLUMN] <列名> SET [NOT] VISIBLE|
RENAME TO <表名> |
ENABLE ALL TRIGGERS |
DISABLE ALL TRIGGERS |
MODIFY <空间限制子句>|
MODIFY CONSTRAINT <约束名> TO <表级约束子句> [<CHECK选项>][RESTRICT | CASCADE]| MODIFY CONSTRAINT <约束名> ENABLE [<CHECK选项>]|
MODIFY CONSTRAINT <约束名> DISABLE [RESTRICT | CASCADE] |
WITH COUNTER |
WITHOUT COUNTER |
MODIFY PATH <外部表文件路径> |
DROP IDENTITY|
ADD [COLUMN] <列名>[<IDENTITY子句>]|
ENABLE CONSTRAINT <约束名> [<CHECK选项>]| DISABLE CONSTRAINT <约束名> [RESTRICT | CASCADE] |
DEFAULT DIRECTORY <目录名>|
LOCATION (’<文件名>’)|
ENABLE USING LONG ROW|
ADD LOGIC LOG |
DROP LOGIC LOG查看表结构sp_create_system_packages(1);
call sp_tabledef(‘TEST’,‘EMP’)
ALTER TABLE PRODUCTION.PRODUCT_REVIEW MODIFY NAME VARCHAR(8) DEFAULT '刘青 ' NOT NULL;
修改数据类型
ALTER TABLE RESOURCES.EMPLOYEE_ADDRESS ADD ID INT PRIMARY KEY CHECK (ID <10000);
添加列,同时增加主键,ID<10000
ALTER TABLE PRODUCTION.PRODUCT DROP PRODUCT_SUBCATEGORYID CASCADE;
删除列
ALTER TABLE PRODUCTION.PRODUCT ADD CONSTRAINT CONS_PRODUCTNAME UNIQUE(NAME)
添加唯一约束
alter table 表名 add constraint FK_ID foreign key(你的外键字段名) REFERENCES 外表表名(对应的表的主键字段名);
增加外键管理索引创建索引的准则:1. 如果需要经常地检索大表中的少量的行,就为查询键创建索引; 2. 为了改善多个表的连接的性能,可为连接列创建索引; 3. 主键和唯一键自动具有索引,在外键上很多情况下也创建索引; 4. 小表不需要索引。
选取表中的索引列时可以考虑以下几点: 1. 列中的值相对比较唯一 ; 2. 取值范围大,适合建立索引; 3. CLOB和TEXT只能建立全文索引、BLOB不能建立任何索引
create index index_name on table_name(加索引的列)create unique index 索引名 on 表名(列名)
CREATE INDEX IDX ON EXAMPLE_TAB(COLUMN_A + COLUMN_B);
函数索引CREATE BITMAP INDEX S1 ON PURCHASING.VENDOR (VENDORID);
位图索引
ALTER INDEX PURCHASING.S1 RENAME TO PURCHASING.S2; 修改索引名称