赞
踩
学习使用了达梦数据库8(DM8),本文总结对于达梦数据库模式对象管理的相关内容及操作方法。
外键约束因何需要?:首先可以通过外键约束字段建立多表关系。但是它最重要的意义实际上是保证数据的完整性。被外键依赖的行(记录)不能先删除,被外键依赖的表也不能被先删除。
注意事项:
注1:下列方括号“[”,“]”及方括号内的字段为实际执行时需要替换的内容,并非SQL语句本身。
注2:所有命令均可在达梦管理工具的查询中进行编辑提交,也可以在达梦DISQL中进行编辑提交。图形操作均在达梦管理工具的左侧树形结构中进行操作。
打开达梦管理工具的方式:
Shell > cd /[DMPATH]/tool
Shell > ./manager
打开DISQL工具的方式:
Shell > cd /[DMPATH]/tool
Shell > ./disql [userName]/[password]@[ip]:[port]
[DMPATH]:数据库安装路径; [userName]:数据库用户名; [password]:数据库密码; [ip]:数据库IP地址;[port]:数据库端口号。
创建模式:
SQL > create schema [schemaName] authorization [userName];
-- 为[userName]创建模式[schemaName]
当前用户切换模式:
SQL > set schema [schemaName2];
-- 设置为[schemaName2]模式后,可以在SQL语句中不指定模式名的前提下,进行该模式下表的操作
删除模式:
SQL > drop schema [schemaName];
-- 注意:无法删除用户默认模式
创建表:
SQL > create table [tableName]([columnName] [columnType]);
-- 创建一张表[tableName],包含[columnName]字段,字段类型为[columnType]
添加字段:
SQL > alter table [tableName] add [columnName] [columnType];
-- 为[tableName]表添加[columnName]字段,字段类型为[columnType]
修改字段:
SQL > alter table [tableName] modify [columnName] [columnType];
-- 为[tableName]表修改[columnName]字段,修改字段类型为[columnType]
删除字段:
SQL > alter table [tableName] drop column [columnName];
-- 删除[tableName]表中的[columnName]字段
添加注释:
SQL > comment on table [tableName] is '[tableInfo]';
-- 为[tableName]表添加[tableInfo]的注释
SQL > comment on column [tableName].[columnName] is '[columnInfo]';
-- 为[tableName]表的[columnName]字段添加[columnInfo]的注释
SQL文件导入:
SQL > start /[path]/[fileName].sql;
-- 导入[path]路径下名称为[fileName]的SQL文件
增加约束:
SQL > alter table [tableName] add constraint [constraintName] unique([columnName]); -- 为[tableName]中的[columnName]增加唯一约束,约束名称为[constraintName] SQL > alter table [tableName] add constraint [constraintName] primary key([columnName]); -- 为[tableName]中的[columnName]增加主键约束,约束名称为[constraintName] SQL > alter table [tableName] add constraint [constraintName] check(instr([columnName],'@dameng.com')>1); -- 为[tableName]中的[columnName]增加必须包含'@dameng.com'的约束,约束名称为[constraintName] SQL > alter table [tableName] add column [columnName] [columnType]; -- 首先在本表[tableName] 中添加一个类型为[columnType]的[columnName]字段 SQL > alter table [tableName] add constraint [constraintName] foreign key([columnName]) references [tableName2]([columnName2]); -- 本表[tableName]中的[columnName]字段外键约束到[tableName2]表的[columnName2]字段
建表时直接添加约束示例:
SQL > create table test_table (
id int constraint pk_test_id primary key,
name varchar(100) not null, phone varchar(20) unique,
age int constraint ck_test_age check (age>6),
pid int foreign key references test_table2(id)
);
-- 增加了testtable表id主键约束、name非空约束、phone唯一约束、age大于6约束、pid外键约束到test_table2的id字段
禁用/启用约束:
SQL > alter table [tableName] disable constraint [constraintName] cascade;
-- 禁用名称为[constraintName]的约束。
SQL > alter table [tableName] enable constraint [constraintName] cascade;
-- 启用名称为[constraintName]的约束。
--注:cascade为级联删除
删除约束:
SQL > alter table [tableName] drop constraint [constraintName] cascade;
-- 删除名称为[constraintName]的约束。
--注:cascade为级联删除
创建索引:
SQL > create index [indexName] on [tableName]([columnName]);
-- 将表[tableName]中的[columnName]字段设置为索引,索引名称为[indexName]
删除索引:
SQL > drop index [indexName];
-- 删除名为[indexName]的索引
创建视图:
SQL > create view [viewName] as [select sql];
-- 以[select sql]创建名为[viewName]的视图
创建视图示例:
SQL > create view emp_salary as
select d.dept_name, e.dept_id, avg(e.salary) avg_salary
from t_emp e, t_dept d
where e.dept_id = d.dept_id
group by e.dept_id, d.dept_name
having avg(e.salary) > 8000;
-- 统计dept平均salary大于8000的dept_name,dept_id及平均salary
模式和用户的关系:一个模式仅归属于一个用户,而一个用户可以拥有多个模式。 模式下可以拥有表、索引、存储过程等对象。
DM 表包含:索引组织表(DM 默认索引组织表)、堆表(ORACLE 默认是堆表)、外部表、 分区表。
索引组织表:默认表会有一个聚簇键(聚簇索引),表按照聚簇键排序,如果创建表时没有 指定聚簇键,默认使用逻辑 ROWID
为聚簇索引键。索引组织表是有序的。ROWID 是逻辑rowid,占用存储空间。
堆表:堆表的存储时无序的,插入相对比所以组织表快。堆表的ROWID是物理id,不占用存储空间。
外键约束必须引用的是另一张表的主键,否则报错。
DM每张表默认有一个聚簇索引、创建主键、唯一键约束会默认创建 索引、创建外键时也可以指定是否创建索引。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。