达梦数据库DMSQL基本操作,模式对象管理:表、视图、索引,DM表空间管理、用户管理、作业管理,DM物理/逻辑备份还原,ODBC配置

目录

DMSQL

简单查询

过滤查询

排序

分组汇总

连接查询

子查询

模式对象管理

视图

索引

表空间管理

用户管理

DM物理备份还原

冷备

热备

还原恢复

DM逻辑备份还原

dexp逻辑导出

dimp逻辑导入

DM作业管理

ODBC配置


DMSQL

DML数据操纵语言,insertupdatedeleteselect

DDL数据定义语言,create tablealter tabledrop table

DCL数据控制语言,grantrevoke和权限相关

TCL事务控制语言,commitrollback

/*先建表,插入数据,数据插入后需commit*/

create table department(d_id int,d_name varchar(20));

create table employee (e_id int,e_name char(10),salary int,d_id int);

insert into department values(101,'测试部'),(102,'研发部'),(103,'技术支持');

insert into employee values(1,'张三',24325,101),(2,'李四',52211,101),(3,'王五',41543,102),(4,'赵六',31516,103);

commit;

简单查询

/*简单查询*/

select * from employee;

/*去重查询*/

select distinct d_id from employee;

/*表达式*/

select e_name,salary,salary+10000 from employee;

/*连接列*/

select e_name || '的工资是:'||salary from employee;

过滤查询

/*查询部门103员工的姓名,工资和部门号*/

select e_name,salary,d_id from employee where d_id=103;

/*查询工资大于30000的员工姓名和工资*/

select e_name,salary,d_id from employee where salary>30000;

/*查询张三的工资,使用连接列*/

select e_name || '的工资是:'||salary from employee where e_name='张三';

/*查询部门号为101或103的员工信息*/

select * from employee where d_id in(101,103);

/*查询工资在25000-60000之间的员工信息,条件等价于salary>=24000 and salary <=60000*/

select * from employee where salary between 24000 and 60000;

/*查询姓王的员工姓名*/

select e_name from employee where e_name like '王%';

/*查询部门号为101且工资大于25000的员工信息*/

select * from employee where d_id=101 and salary > 25000;

/*多表查询:查询员工姓名及所在部门*/

select e_name,d_name from employee,department where employee.d_id=department.d_id;

排序

DM中默认升序,因此asc可省略

/*按工资升序查询员工姓名和工资,order by salary等价于order by 3,即表的第3列*/

select e_name,salary from employee order by salary asc;

select e_name,salary from employee order by 3 asc;

/*按工资降序查询员工信息*/

select * from employee order by salary desc;

select * from employee order by 3 desc;

分组汇总

group by用法

/*查询每个部门的人数*/

select d_id,count(*) from employee group by d_id;

group by + having用法

/*查询部门人数大于1的部门好及人数*/

select d_id,count(*) from employee group by d_id having count(*)>1;

/*多表连接*/

select a.d_id,b.d_name,count(*) from employee a,department b where a.d_id=b.d_id group by a.d_id,b.d_name;

连接查询

内连接

/*自然连接 natural join*/

select e_name,d_name from employee natural join department;

/*交叉连接 迪卡集cross join*/

select count(*) from employee;3

select count(*) from department;4

select count(*) from employee cross join department;12

等价于:select count(*) from employee,department;12

/*using*/

/*当出现多个连接列时,可以去指定一个连接列,连接列不能加前缀或者别名*/

select e_name,d_name from employee join department using (d_id);

/*on*/

select e_name,d_name from employee join department on employee.d_id=department.d_id;

等价于:select e_name,d_name from employee,department where employee.d_id=department.d_id;

外连接

/*左外连接:左边表的记录全部显示,右边表的记录不满足的用null代替*/

select e_name,d_name from employee a left join department b on a.d_id=b.d_id;

/*右外连接:右边表的记录全部显示,左边表的记录不满足的就用null代替*/

select e_name,d_name from employee a right join department b on a.d_id=b.d_id;

/*全外连接=左外连接+右外连接*/

select e_name,d_name from employee a full join department b on a.d_id=b.d_id;

子查询

/*查询和张三同一个部门的员工姓名,使用嵌套查询*/

select e_name from employee where d_id=(select d_id from employee where e_name='张三');

/*查询比102部门每一个员工的工资都多的员工姓名*/

select e_name from employee where salary > all (select salary from employee where d_id=102);

模式对象管理

模式:一组数据库对象的集合

模式对象:表、视图、索引、存储过程、触发器、包、序列、同义词、函数等

模式与用户的关系:一个模式只能属于一个用户,一个用户可以拥有多个模式,创建一个用

户时,会自动创建一个同名的模式

创建表

create table person(id int not null,name varchar(20),primary key(id));

添加表字段

alter table person add column(age int);

插入数据

insert into person values (1,'aa',2);

commit;

查看数据

select * from person;

删除表字段

alter table person drop column (age);

修改表名

alter table person rename to per;

修改字段名

alter table per rename column id to no;

修改字段类型

alter table per modify name varchar2(10);

视图

创建视图

create view v_emp as select e_name,salary,a.d_id,b.d_name from employee a,department where a.d_id=b.d_id and a.d_id=101;

查看视图

select * from v_emp;

索引

创建索引

create index ind_emp on employee(e_name);

重建索引

alter index ind_emp rebuild;

删除索引

drop index ind_emp;

表空间管理

DM管理工具中新建表空间,可添加多个数据文件

用户管理

DM管理工具创建用户,设置默认表空间为TEST

可依次授予用户权限

DM物理备份还原

冷备

关闭数据库服务

dmap服务开启

console DM控制台工具

dmrman工具

[dmdba@localhost ~]$ cd /dm8/bin

[dmdba@localhost bin]$ ./dmrman

dmrman V8

RMAN> backup database '/dm8/data/DAMENG/dm.ini' backupset '/dm8/backup';

热备

开启数据库服务,dmap服务开启

开启归档

DM管理工具打开管理服务器,点击系统管理将服务器转换为配置状态,配置归档,配置完成后将服务器转换为打开状态

可进行库备份、表空间备份和表备份,这里仅进行库备份,其他类似

DM管理工具

manager-左侧栏备份-库备份,右键新建备份

此处报错

重启服务器,或运行checkpoint(100); 可解决

disql

SQL> backup database full backupset '/dm8/bak/full';

也可备份到默认路径:SQL> backup database full;

还原恢复

注意:表空间只能联机备份,脱机还原

console DM控制台工具

指定搜索目录配置备份路径-获取备份,然后依次还原、恢复、更新魔数  

dmrman工具

RMAN> restore database '/dm8/data/DAMENG/dm.ini' from backupset '/dm8/backup';

RMAN> recover database '/dm8/data/DAMENG/dm.ini' from backupset '/dm8/backup';

RMAN> recover database '/dm8/data/DAMENG/dm.ini' update db_magic;

DM逻辑备份还原

四种级别:full库级,owner:用户级shcemas:模式级tables:表

这里仅进行库级导入导出,其他操作类似

dexp逻辑导出

DM管理工具

右键数据库-导出

命令行

[dmdba@localhost ~]$ cd /dm8/bin

[dmdba@localhost bin]$ ./dexp SYSDBA/SYSDBA directory=/dm8/dexp file=full.dmp full=y log=full.log

dimp逻辑导入

DM管理工具

右键数据库-导入,选择前面导出的文件目录

命令行

[dmdba@localhost bin]$ ./dimp SYSDBA/SYSDBA directory=/dm8/dexp file=full.dmp full=y log=full_dimp.log

DM作业管理

DM管理工具左侧栏创建代理环境,右键作业创建作业JOB1,添加作业步骤和作业调度

这里选择的是备份数据库,因此需要添加备份路径

设置作业执行时间及频率

右键JOB1查看作业历史信息,可以看到JOB1已经执行一次

ODBC配置

[root@localhost opt]# tar -xvf unixODBC-2.3.0.tar.gz

[root@localhost unixODBC-2.3.0]# ./configure

[root@localhost unixODBC-2.3.0]# make && make install

编辑文件

[root@localhost unixODBC-2.3.0]# odbcinst -j可查看文件路径

[root@localhost etc]# vi odbc.ini

[dm8]

Description = DM ODBC DSND

Driver = DM8 ODBC DRIVER

SERVER = localhost

UID = SYSDBA

PWD = SYSDBA

TCP_PORT = 5236

[root@localhost etc]# vi odbcinst.ini

[DM8 ODBC DRIVER]

Description=ODBC DRIVER FOR DM8

Driver=/dm8/bin/libdodbc.so

使用dmdba用户进行连接,输入quit退出,使用root会出错

如果使用dmdba也连接失败,可用isql dm8 -v查看原因

如果是libdodbc.so file not found,但bin目录下存在,可尝试以下方法:

[root@localhost ~]# vi .bashrc

export PATH

export DM_HOME=/dm8

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/dm8/bin"

export PATH=$PATH:/$HOME/bin:$/HOME/.local/bin:$DM_HOME/bin

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值