达梦数据库学习-模式对象管理

学习使用了达梦数据库8(DM8),本文总结对于达梦数据库模式对象管理的相关内容及操作方法。

相关概念

  • 【模式】:是所有对象的集合,包括了表、约束、索引、视图等。在达梦数据库中,一个模式仅属于一个用户(当用户创建时,达梦数据库会自动创建一个与用户同名的模式),而一个用户可以拥有和创建多个模式,可以理解为模式是用户数据资产的一个子集。
  • 【表】:是人为地总结出来的、用以描述一类事物的一组描述信息。由行(记录)和列(字段)构成,行中的记录就是数据,列中对应字段,可以理解为表是行和列的集合。
  • 【约束】:是给表的列(字段)添加的限制条件,使得不符合要求的数据不能被添加、修改或删除。可以包含主键约束(唯一且非空)、非空约束、唯一约束、外键约束
  • 【索引】:是数据库中提高查询效率的技术,类似于字典的目录。使用索引后,磁盘块会以树桩结构保存,查询数据时能够大大降低磁盘块的访问量从而提高查询效率。
  • 【视图】:可以理解成是一张虚拟的表,视图本质就是取代了一段SQL查询语句。使用视图后,一方面复杂的查询语句得以保存,另一方面可以对低权限用户仅开放视图,在视图中进一步作查询结果的限制(例如仅想让用户A查询到表T中的a、b字段,但是不让A查询到表T中的c字段)。

外键约束因何需要?:首先可以通过外键约束字段建立多表关系。但是它最重要的意义实际上是保证数据的完整性。被外键依赖的行(记录)不能先删除,被外键依赖的表也不能被先删除。


注意事项:

注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每张表默认有一个聚簇索引、创建主键、唯一键约束会默认创建 索引、创建外键时也可以指定是否创建索引。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值