DM数据库-DISQL使用基础

一、DISQL基础

1.DISQL的定义

DIsql 是 DM 数据库的一个命令行客户端工具,识别用户的输入,将用户输入的 SQL 语句打包发送给 DM 数据库服务器执行。

2.SQL 语句和 DISQL命令的区别
SQLDISQL
ANSI 标准DM 内部标准
语言命令
关健字不可缩写关健字可缩写
部分语句以分号结束,部分语句以/结束分号可有可无,/完全用不到
可以更新表中的数据不能更新表中的数据
3.启动DISQL
3.1 windows中程序菜单启动

在 WINDOWS 环境中安装 DM 数据库产品,那么可以在应用菜单中找到SQL交互式查询工具,双击即可启动。使用 LOGIN 或 CONN 命令登录到指定数据库
在这里插入图片描述

3.2 自带DIsql工具启动

DIsql 位于 F:\dmdbms\bin\DIsql.exe。双击启动
在这里插入图片描述

3.3 命令行启动

(1)例如:

./disql SYSDBA/SYSDBA@192.168.1.64:5236#"{mpp_type=local,inet_type=tcp}"

(2)<运行脚本>:`符号运行 sql 脚本文件运行脚本:建议使用绝对路径。例如:e:\a.sql 为包含了一条 select * from dual;语句的脚本文件。

disql SYSDBA/SYSDBA@192.168.1.64:5236 `e:\a.sql

SQL> `e:\a.sql

(3)<start 运行脚本>:使用 START 命令运行 sql 脚本文件。例如:

SQL> start e:\a.sql

(4)直接执行语句:使用-E 参数,将在运行 DIsql 时直接执行后续的一条或多条 SQL语句,例如:

DIsql SYSDBA/SYSDBA -E "SELECT TOP 1 * FROM SYSOBJECTS; SELECT TOP 1 * FROM V$CMD_HISTORY"
3.4 password中特殊字符的书写规范
3.4.1 windows系统

假如用户名为 user01

特殊字符书写规范连接串写成
DISQL关键字符DIsql 要求对特殊字符要用, 系统要求加双引号和转义;密码为 aaaa/aaaaDIsql user01/”””aaaa/aaaa”””
空格要用双引号括起来作为一个整体;密码为 aaaa aaaaDIsql user01/”aaaa aaaa”
双引号DIsql 要求对双引要用双引,且要转义,系统要求对双引号转义和最外层加双引号”””aaaa””””aaaa”””;密码为 aaaa”aaaaDIsql user01/”””aaaa””””aaaa”””。
3.4.2 Linux系统

(1)操作系统的要求:

  • 单引号中,所有的特殊字符都失去其特殊含义:‘aaaa\aaaa’ 传给 disql 为 aaaa\aaaa
  • 如果密码只有单引号,那么可以将单引号用双引号括起来:“aaaa’aaaa” 传给 disql 为 aaaa’aaaa
  • 如果既有单引号又有$、`、\、!四个特殊字符,那么在其之前加\转义:“aaa’\$aaaa” 传给 disql 为 aaa’$aaaa

(2)DISQL的要求:假如用户名为 user01

特殊字符书写规范连接串要写成
DIsql 关键字符要使用双引号括起来;密码aaaa/aaaa./DIsql user01/’”aaaa/aaaa”’
双引号要用双引号括起来,也需要转义;密码aaa”\aaaa./DIsql user01/’”aaa””\aaaa”’
单引号只能将单引号放入双引号中;密码aaaa’aaaa./DIsql user01/”aaaa’aaaa”
单引号+特殊字符单引只能放在双引内,双引中特殊字符需加反斜杠转义;密码aaa’$aaaa./DIsql user01/”aaa’$aaaa”
单引号+双引号单引放在双引中,在双引中表示双引用反斜杠转义;密码aaa”'aaaa./DIsql user01/”\”aaa\”\”'aaaa\””

(3)转义双引号

  • DISQL要求用双引号进行转义
  • Windows命令行,用双引号或反斜杠进行转义
  • Linux命令行使用反斜杠进行转义
4.使用DISQL登录/退出数据库
4.1 LOGIN登录

在 DIsql 界面中,直接输入 LOGIN 命令后,屏幕会提示输入登录信息

在这里插入图片描述

服务名:默认为 LOCALHOST(本地服务器)。

用户名和密码:默认均为 SYSDBA,密码不回显。

端口号:默认为 5236。

SSL 路径和 SSL 密码:服务器通信加密,缺省为不设置。

UKEY 名称和 UKEY PIN 码:供使用 UKEY 的用户使用,普通用户不用设置,缺省为不使用。

MPP 类型:有效值为 GLOBAL 和 LOCAL,默认为 GLOBAL。

是否读写分离(y/n):默认 n。

协议类型:默认 TCP,可选 TCP|UDP|IPC(共享内存)|RDMA(远程直接内存访问)|UNIXSOCKET。

4.2 LOGOUT注销
SQL>LOGOUT

断开连接而不退出 DISQL

4.3 CONN[ECT]连接

例如:连接一个IP地址为192.168.1.150的数据库

SQL>CONN SYSDBA/SYSDBA@192.168.1.150
4.4DISCONN[ECT]断开连接
SQL>DISCONN

断开连接而不退出 DISQL

5.使用DISQL和退出
5.1使用DISQL

连接好数据库之后,输入SQL语句就ok了,DIsql 将 SQL 语句发送给 DM 数据库服务器并显示服务器返回的结果

在这里插入图片描述

5.2退出DISQL
SQL>EXIT
6. SET命令设置环境变量
语句意义
SET AUTO[COMMIT] <ON|OFF>设置自动提交
SET DEFINE<c(默认的前缀是&)|ON(默认)|OFF>c:打开 DEFINE 功能,c 前缀符号;ON:默认前缀符号&
SET ECHO <ON(默认值)|OFF>START 命令执行一个 SQL 脚本时,是否显示脚本中正在执行的 SQL 语句
SET FEED[BACK] <6(默认值)|n|ON|OFF>是否显示当前 SQL 语句查询或修改的总行数(n:表示结果大于 n 行时,才显示结果的总行数)
SET HEA[DING] <ON(默认值)|OFF>是否显示列标题
SET LINESHOW<ON(默认值)|OFF >是否显示行号
SET PAGES[IZE] <14(默认值)|n>设置一页有多少行数
SET TIMING<ON(默认值)|OFF>显示每个 SQL 语句花费的执行时间
SET LINESIZE <screen_length(默认值,屏幕宽度)|n>设置屏幕上一行显示宽度
6.1SHOW命令查看环境变量

例如:查看 HEADING 和 TIMING 两个变量:

SQL> SHOW HEADING TIMING

HEADING ON.
TIMING ON
6.2配置文件设置环境变量

两个配置文件 glogin.sql 和 login.sql(需自行创建)

文件存放路径
glogin.sql存放在$DM_HOME/bin/disql_conf 路径下(disql_conf自行创建)
login.sql存放路径不做限制

执行顺序: glogin.sql——>login.sql

二、DISQL常用命令

1.帮助HELP

#查询该命令的帮助信息

HELP 命令名

在这里插入图片描述
2.输出文件SPOOL

#将查询结果输出到指定文件

在这里插入图片描述
执行上述语句,控制台打印查询结果,并将查询结果输出到指定文件 d:\b.sql 中
在这里插入图片描述
执行上述语句,控制台不打印查询结果,只将查询结果输出到指定文件 d:\b.sql 中

3.切换到操作系统命令HOST

使用 HOST 命令可以不用退出 DIsql 就能执行操作系统命令

SQL>HOST 操作系统命令

4.获取对象结构信息DESCRIBE

例如: 获取表 sysgrants 的结构描述
在这里插入图片描述
5.定义本地变量

(1)DEFINE

DEFINE 定义的变量会保存在环境 DIsql 环境中
在这里插入图片描述
关闭变量替换:

SQL>SET DEFINE OFF 

DEFINE 变量定义为整型
在这里插入图片描述
(2)查看执行计划EXPLAIN

SQL>EXPLAIN select count(*) from sysobjects;

在这里插入图片描述
(3)LIST显示SQL语句或块信息

LIST n|m|*|LAST;
  • n ,m :数值 SQL 行号。
  • *: 当前行号。
  • LAST: 最后一行。

在这里插入图片描述

(4)插入大对象数据

大数据的插入值格式为:@‘path’

例如,在 test 表中插入大对象 e:\DSC_1663.jpg。

create table test(a int,b image);
@insert into test values(1,@'e:\DSC_1663.jpg');

(5)CLEAR清理缓存

语法格式:CL[EAR] <option>

<option>包括

  • COL[UMNS]:清理所有的 COLUMN 变量信息。
  • SQL:清理本地 SQL 缓存信息。
  • SCR[EEN]:清理 DIsql 终端屏幕信息。
  • BUFF[ER]:同 SQL 功能一样,清理本地 SQL 缓存信息。

在这里插入图片描述

三、DISQL中使用脚本

1.用START命令运行脚本

用<`运行脚本>或者<start 运行脚本>

1.1启动DISQL时,运行脚本(D:\test.sql)
DIsql SYSDBA/SYSDBA `D:\test.sql
1.2进入DIsql之后,运行脚本
SQL>start D:\test.sql 或 
SQL>`D:\test.sql
2.用EDIT编辑脚本

格式:ED[IT][<file_name>],如果指定文件不存在,则创建该文件

例如:

SQL>EDIT D:\test.sql 或
SQL>edit  #如果省略文件,只会修改缓冲区的最后一条 SQL 语句
3.在脚本中使用变量

替换变量前带有一个前缀标志符(默认是&),来源于脚本参数带入、脚本中直接定义、用户动态输入

3.1脚本带参

脚本带参,参数名只能是数字,且通过&n 来引用参数,n 为 1 表示为第一个参数,例如:

(1)建表

create table test(id int); 
insert into test values(11); 
insert into test values(12); 
insert into test values(15);

在这里插入图片描述

(2)脚本 D:\test.sql 如下:

select * from test where id = &1;
select * from test where id = &2;
select * from test where id = &3;

(3)运行脚本:

`D:\test.sql 11 12 13  
#参数值个数要与脚本中的变量个数一一对应

在这里插入图片描述
(4)参数要求

  • 如参数值是数字,写法没有特殊要求。
  • 如参数值是字符串,用单引号扩起,如字符串有空格,应该在单引号外面,再加上双引号扩起。

脚本 D:\test1.sql:

create table test1(a varchar);
insert into test1 values('hello');
insert into test1 values('hello world');
select * from test1 where a = &1;
select * from test1 where a = &2;

执行脚本:

SQL>`D:\test1.sql 'hello' "'hello world'"

在这里插入图片描述

(5)脚本中定义参数值

  • 使用 DEFINE 命令定义变量值,格式:DEFINE 标识符 = 值。
  • 运行脚本时不带参数,脚本中也不定义参数时,会让用户输入参数,从而实现用户交互输入参数值。
4.PROMPT命令传递信息

格式:

PROMPT <输出内容>

会直接打印出相关信息。

达梦在线服务平台:https://eco.dameng.com/

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值