收录于话题

#java#其他#数据库#前端#php

达梦角色说明

角色名称角色简单说明
DBADM 数据库系统中对象与数据操作的最高权限集合,拥有构建数据库的全部特权,只有 DBA 才可以创建数据库结构
RESOURCE可以创建数据库对象,对有权限的数据库对象进行数据操纵,不可以创建数据库结构
PUBLIC不可以创建数据库对象,只能对有权限的数据库对象进行数据操纵
VTI具有系统动态视图的查询权限,VTI 默认授权给 DBA 且可转授
SOI具有系统表的查询权限
SVI具有基础 V 视图的查询权限
DB_AUDIT_ADMIN数据库审计的最高权限集合,可以对数据库进行各种审计操作,并创建新的审计用户
DB_AUDIT_OPER可以对数据库进行各种审计操作,但不能创建新的审计用户
DB_AUDIT_PUBLIC不能进行审计设置,但可以查询审计相关字典
DB_AUDIT_VTI具有系统动态视图的查询权限,DB_AUDIT_VTI 默认授权给DB_AUDIT_ADMIN
DB_AUDIT_SOI具有系统表的查询权限
DB_AUDIT_SVI具有基础 V 视图和审计 V 视图的查询权
DB_POLICY_ADMIN数据库强制访问控制的最高权限集合,可以对数据库进行强制访问控制管理,并创建新的安全管理用户
DB_POLICY_OPER可以对数据库进行强制访问控制管理,但不能创建新的安全管理用户
DB_POLICY_PUBLIC不能进行强制访问控制管理,但可以查询强制访问控制相关字典表
DB_POLICY_VTI具 有 系 统 动 态 视 图 的 查 询 权 限 , DB_POLICY_VTI 默 认 授 权 给DB_POLICY_ADMIN 且可转授
DB_POLICY_SOI具有系统表的查询权限
DB_POLICY_SVI具有基础 V 视图和安全 V 视图的查询权限
DB_OBJECT_ADMIN可以在自己的模式下创建各种数据库对象并进行数据操纵,也可以创建和删除非模式对象
DB_OBJECT_OPER可以在自己的模式下创建数据库对象并进行数据操纵
DB_OBJECT_PUBLIC不可以创建数据库对象,只能对有权限的数据库对象进行数据操纵
DB_OBJECT_VTI具 有 系 统 动 态 视 图 的 查 询 权 限 , DB_OBJECT_VTI 默 认 授 权 给DB_OBJECT_ADMIN 且可转授
DB_OBJECT_SOI具有系统表的查询权限
DB_OBJECT_SVI和 SVI 权限一样

权限说明表

权限说明
ALTER DATABASE修改数据库
RESTORE DATABASE恢复数据库
CREATE USER创建用户
ALTER USER修改用户
DROP USER丢弃用户
CREATE ROLE创建角色
CREATE SCHEMA创建模式
CREATE TABLE创建数据表
CREATE VIEW创建视图
CREATE PROCEDURE创建存储过程
CREATE SEQUENCE创建序列
CREATE TRIGGER创建触发器
CREATE INDEX创建索引
CREATE CONTEXT INDEX创建上下文索引
BACKUP DATABASE备份数据库
CREATE LINK创建链接
CREATE REPLICATE创建副本
CREATE PACKAGE
创建包
CREATE SYNONYM创建同义词
CREATE PUBLIC SYNONYM创建公共同义词
ALTER REPLICATE修改副本
DROP REPLICATE删除副本
DROP ROLE丢弃角色
ADMIN ANY ROLE管理任何角色
ADMIN ANY DATABASE PRIVILEGE管理任何数据库权限
GRANT ANY OBJECT PRIVILEGE授予任何对象特权
CREATE ANY SCHEMA创建任何模式
DROP ANY SCHEMA丢弃任何模式
CREATE ANY TABLE创建任何数据表
ALTER ANY TABLE修改任何数据表
DROP ANY TABLE丢弃任何数据表
INSERT TABLE插入数据表
INSERT ANY TABLE插入任何数据表
UPDATE TABLE更新数据表
UPDATE ANY TABLE更新任何数据表
DELETE TABLE?删除数据表
DELETE ANY TABLE删除任何数据表
SELECT TABLE?查询数据表
SELECT ANY TABLE??查询任何数据表
REFERENCES TABLE引用表
REFERENCES ANY TABLE引用任何表
GRANT TABLE授权数据表
GRANT ANY TABLE授权任何数据表
CREATE ANY VIEW创建任何视图
ALTER ANY VIEW修改任何视图
DROP ANY VIEW丢弃任何视图
INSERT VIEW插入视图
INSERT ANY VIEW插入任何视图
UPDATE VIEW更新视图
UPDATE ANY VIEW更新任何视图
DELETE VIEW删除视图
DELETE ANY VIEW删除任何视图
SELECT VIEW查询视图
SELECT ANY VIEW查询任何视图
GRANT VIEW授权视图
GRANT ANY VIEW授权任何视图
CREATE ANY PROCEDURE创建任何存储过程
DROP ANY PROCEDURE丢弃任何存储过程
EXECUTE PROCEDURE执行存储过程
EXECUTE ANY PROCEDURE执行任何存储过程
GRANT PROCEDURE授权存储过程
GRANT ANY PROCEDURE授权任何存储过程
CREATE ANY SEQUENCE创建任何序列
DROP ANY SEQUENCE丢弃任何序列
SELECT SEQUENCE查询序列
SELECT ANY SEQUENCE查询任何序列
GRANT SEQUENCE授权序列
GRANT ANY SEQUENCE授权任何序列
CREATE ANY TRIGGER创建任何触发器
DROP ANY TRIGGER丢弃任何触发器
CREATE ANY INDEX创建任何索引
ALTER ANY INDEX修改任何索引
DROP ANY INDEX丢弃任何索引
CREATE ANY CONTEXT INDEX创建任何上下文索引
ALTER ANY CONTEXT INDEX修改任何上下文索引
DROP ANY CONTEXT INDEX丢弃任何上下文索引
CREATE ANY PACKAGE创建任何包
DROP ANY PACKAGE丢弃任何包
EXECUTE PACKAGE
执行包
EXECUTE ANY PACKAGE执行任何包
GRANT PACKAGE授权包
GRANT ANY PACKAGE授权任何包
CREATE ANY LINK创建任何链接
DROP ANY LINK丢弃任何链接
CREATE ANY SYNONYM创建任何同义词
DROP ANY SYNONYM丢弃任何同义词
DROP PUBLIC SYNONYM丢弃公共同义词
SELECT ANY DICTIONARY查询任何同义词
ADMIN REPLAY管理重演
ADMIN BUFFER管理缓冲区
CREATE TABLESPACE创建表空间
ALTER TABLESPACE修改表空间
DROP TABLESPACE丢弃表空间
ALTER ANY TRIGGER修改任何触发器
CREATE MATERIALIZED VIEW创建物化视图
CREATE ANY MATERIALIZED VIEW
创建任何物化视图
DROP ANY MATERIALIZED VIEW丢弃任何物化视图
ALTER ANY MATERIALIZED VIEW修改任何物化视图
SELECT MATERIALIZED VIEW查询物化视图
SELECT ANY MATERIALIZED VIEW查询任何物化视图
CREATE ANY DOMAIN创建任何域
DROP ANY DOMAIN丢弃任何域
CREATE DOMAIN
创建域
GRANT ANY DOMAIN
授权任何域
GRANT DOMAIN授权域
USAGE ANY DOMAIN使用任何域
USAGE DOMAIN
使用域
CREATE ANY CONTEXT创建任何上下文
DROP ANY CONTEXT丢弃任何上下文?
GRANT ANY CONTEXT授权任何上下文
COMMENT ANY TABLE注释任何数据表
DUMP ANY TABLE转储任何数据表
DUMP TABLE转储数据表
ADMIN JOB管理任务
CREATE ANY DIRECTORY
创建任何目录
DROP ANY DIRECTORY
丢弃任何目录
ALTER ANY SEQUENCE
修改任何序列
CREATE PROFILE创建资源限制
ALTER PROFILE
修改资源限制
DROP PROFILE丢弃资源限制
CREATE PARTITION GROUP创建分区组
CREATE ANY PARTITION GROUP创建任何分区组
DROP ANY PARTITION GROUP丢弃任何分区组
USAGE PARTITION GROUP使用分区组
USAGE ANY PARTITION GROUP使用任何分区组

创建角色

/*ORDINARY: 自定义的角色名称 */create role ORDINARY;
/*将ORDINARY角色归属于 PUBLIC、RESOURCE、VTI角色下*/grant "PUBLIC","RESOURCE","VTI" to ORDINARY;
/*授予ORDINARY角色权限,详细请查看权限说明表*/grant CREATE SCHEMA,CREATE TABLE,CREATE VIEW,CREATE PROCEDURE,CREATE SEQUENCE,CREATE TRIGGER,CREATE INDEX,CREATE CONTEXT INDEX,BACKUP DATABASE,CREATE LINK,CREATE REPLICATE,CREATE PACKAGE,CREATE SYNONYM,CREATE PUBLIC SYNONYM,ALTER REPLICATE,INSERT TABLE,UPDATE TABLE,DELETE TABLE,SELECT TABLE,GRANT TABLE,INSERT VIEW,UPDATE VIEW,DELETE VIEW,SELECT VIEW,GRANT VIEW,SELECT SEQUENCE,EXECUTE PACKAGE,GRANT PACKAGE,CREATE PROFILE,ALTER PROFILE to ORDINARY;

提示:

安全严格管控的生产系统推荐授予以下角色

"PUBLIC","VTI","SOI"

若需要放开create权限,则推荐授予以下角色

"RESOURCE","PUBLIC","VTI","SOI"


创建用户

/*说明:MY:自定义的用户名123456:密码password_policy 0:密码策略not_allow_ip:不允许访问的ipallow_ip :允许访问的ipallow_datetime :允许访问的时间段default tablespace MYTABLESPACE :默认使用的表空间default index tablespace MYTABLESPACE: 默认使用的索引表空间 */create user MY identified by "123456" password_policy 0-- allow_ip "192.168.0.188"-- allow_datetime "2023-01-05" "16:12:51" to "2023-01-31" "16:12:51"default tablespace MYTABLESPACE default index tablespace MYTABLESPACE ;
/*授予用户角色*/grant "PUBLIC","SOI","ORDINARY","VTI" to MY;
/*授予用户权限,具体权限参考权限说明*/grant UPDATE TABLE,SELECT TABLE,GRANT TABLE to MY;

创建模式

/*说明:MYSCHEMA  :自定义的模式名称MY:模式授权给指定的用户*/CREATE SCHEMA MYSCHEMA  AUTHORIZATION MY;


创建表空间

/*说明:MYTABLESPACE : 自定义的表空间名称'G:\DM8\install_new\data\MYTABLESPACE\test.DBF' :表空间数据文件地址128:数据文件大小autoextend :默认自动扩充67108863 :数据文件扩充上线值NORMAL: 普通缓冲区*/create tablespace MYTABLESPACEdatafile 'G:\DM8\install_new\data\TEST\test.DBF' size 128 autoextend on maxsize 67108863 CACHE = NORMAL;


创建序列

/*说明:MYTABLESPACE.SEQ_MYTABLESPACE: 模式名称.序列名称INCREMENT BY 1 :自增1START WITH 1:从1开始MAXVALUE:最大值MINVALUE:最小值NOCACHE:不缓存NOORDER:非顺序*/CREATE SEQUENCE MYSCHEMA.SEQ_MYTABLESPACEINCREMENT BY 1START WITH 1MAXVALUE 9223372036854775807MINVALUE 1NOCYCLENOCACHENOORDER;

创建表

/*说明:MYSCHEMA.T_USER: 模式名称.表名MYTABLESPACE:表空间名*/-- 若存在相同名称的表则先删除后再创建DROP TABLE IF EXISTS MYSCHEMA.T_USER;CREATE TABLE MYSCHEMA.T_USER(id INTEGER NOT NULL,name VARCHAR2(255),phone VARCHAR2(50),idCard VARCHAR2(50),NOT CLUSTER PRIMARY KEY(id ),UNIQUE(phone),UNIQUE(idCard)) STORAGE(ON MYTABLESPACE, CLUSTERBTR) ;
COMMENT ON TABLE MYSCHEMA.T_USER IS '用户表';COMMENT ON COLUMN MYSCHEMA.T_USER.id IS 'id主键';COMMENT ON COLUMN MYSCHEMA.T_USER.name IS '姓名';COMMENT ON COLUMN MYSCHEMA.T_USER.phone IS '手机号';COMMENT ON COLUMN MYSCHEMA.T_USER.idCard IS '身份证号';


向已有的表添加索引

创建唯一索引

/*  说明:   unique :索引类型  MYSCHEMA.uq_name_phone_idcard:模式名.索引名称  MYSCHEMA.T_USER : 模式名.表名  name,phone,idCard:分别为表中的字段名称  initial 1:初始分配簇大小  next 1:下次分配簇大小  minextents:最小保留簇大小*/create unique  index MYSCHEMA.uq_name_phone_idcard on MYSCHEMA.T_USER(name,phone,idCard) storage(initial 1,next 1,minextents 1);

创建空间索引

/*  说明:  spatial:索引类型  MYSCHEMA.uq_name_phone_idcard:模式名.索引名称  MYSCHEMA.T_USER : 模式名.表名  name,phone,idCard:分别为表中的字段名称  initial 1:初始分配簇大小  next 1:下次分配簇大小  minextents:最小保留簇大小*/create spatial  index MYSCHEMA.uq_name_phone_idcard on MYSCHEMA.T_USER(name,phone,idCard) storage(initial 1,next 1,minextents 1);

创建数组索引

/*  说明:  array:索引类型  MYSCHEMA.uq_name_phone_idcard:模式名.索引名称  MYSCHEMA.T_USER : 模式名.表名  name,phone,idCard:分别为表中的字段名称  initial 1:初始分配簇大小  next 1:下次分配簇大小  minextents:最小保留簇大小*/create array index MYSCHEMA.uq_name_phone_idcard on MYSCHEMA.T_USER(name,phone,idCard) storage(initial 1,next 1,minextents 1);

向已有的表添加新列

/*说明:MYSCHEMA.T_USER : 模式名.表名sex:新的列名*/-- 向 MYSCHEMA.T_USER 表中添加新列sex  alter table MYSCHEMA.T_USER add column(sex number(1) default (1) not null );-- 给新列添加备注comment on column MYSCHEMA.T_USER.sex is '性别 1男 0女';

插入数据到表中

/*说明:MYSCHEMA.T_USER : 模式名.表名MYSCHEMA.SEQ_MYTABLESPACE.NEXTVAL:序列。格式:模式名.序列名.NEXTVAL*/insert into MYSCHEMA.T_USER (id,name,phone,idCard) values(MYSCHEMA.SEQ_MYTABLESPACE.NEXTVAL,'张三','15578711016','4507211196612266390');

查询表数据

/*说明:MYSCHEMA.T_USER:模式名.表名*/select * from MYSCHEMA.T_USER


查询sql执行计划

方式1

以树形的方式展示执行计划

explain select * from MYSCHEMA.T_USER

方式2

以结果集的方式展示执行计划

explain for select * from MYSCHEMA.T_USER

执行计划说明:

CSCN 基础全表扫描,从头到尾,全部扫描
SSCN 二级索引扫描, 从头到尾,全部扫描
SSEK二级索引范围扫描 ,通过键值精准定位到范围或者单值
CSEK 聚簇索引范围扫描 ,通过键值精准定位到范围或者单值
BLKUP 根据二级索引的ROWID 回原表中取出全部数据(b + a)
SSEK2二级索引扫描即先扫描索引,再通过主键、聚集索引、ROWID等信息去扫描表
CSEK2聚集索引扫描只需要扫描索引,不需要扫描表
SSCN索引全扫描,不需要扫描表

案例

案例1

按照以下sql顺序创建相应的内容

  1. 创建角色

  2. 给角色授权

  3. 创建表空间

  4. 创建用户

  5. 给用户分配角色

  6. 创建模式

  7. 创建序列

  8. 创建表

/* 创建 角色 */create role ORDINARY;
/*授予角色指定权限*/grant CREATE TABLE,CREATE VIEW,CREATE PROCEDURE,CREATE SEQUENCE,CREATE TRIGGER,CREATE INDEX,CREATE LINK,BACKUP DATABASE,CREATE CONTEXT INDEX,CREATE PACKAGE,CREATE REPLICATE,CREATE SYNONYM,CREATE PUBLIC SYNONYM,INSERT TABLE,UPDATE TABLE,DELETE TABLE,SELECT TABLE,INSERT VIEW,UPDATE VIEW,DELETE VIEW,SELECT VIEW,EXECUTE PROCEDURE,EXECUTE PACKAGE,SELECT SEQUENCE,CREATE MATERIALIZED VIEW,SELECT MATERIALIZED VIEW,CREATE DOMAIN,USAGE DOMAIN,DUMP TABLE,CREATE PARTITION GROUP,USAGE PARTITION GROUPto ORDINARY;
/*创建表空间*/create tablespace MYTABLESPACEdatafile 'G:\DM8\install_new\data\MYTABLESPACE\MYTABLESPACE.DBF' size 128 autoextend on maxsize 67108863 CACHE = NORMAL;

/*创建用户*/create user MY identified by "123456" password_policy 0default tablespace MYTABLESPACE default index tablespace MYTABLESPACE ;
/*给用户分配角色*/grant "ORDINARY","VTI" to MY;
/*创建模式*/CREATE SCHEMA MYSCHEMA AUTHORIZATION MY;
/*创建序列*/CREATE SEQUENCE MYSCHEMA.SEQ_MYTABLESPACEINCREMENT BY 1START WITH 1MAXVALUE 9223372036854775807MINVALUE 1NOCYCLENOCACHENOORDER;
/*创建表若存在相同名称的表则先删除后创建*/DROP TABLE IF EXISTS MYSCHEMA.T_USER;CREATE TABLE MYSCHEMA.T_USER(id INTEGER NOT NULL,name VARCHAR2(255),phone VARCHAR2(50),idCard VARCHAR2(50),NOT CLUSTER PRIMARY KEY(id ),UNIQUE(phone),UNIQUE(idCard)) STORAGE(ON MYTABLESPACE, CLUSTERBTR) ;
COMMENT ON TABLE MYSCHEMA.T_USER IS '用户表';COMMENT ON COLUMN MYSCHEMA.T_USER.id IS 'id主键';COMMENT ON COLUMN MYSCHEMA.T_USER.name IS '姓名';COMMENT ON COLUMN MYSCHEMA.T_USER.phone IS '手机号';COMMENT ON COLUMN MYSCHEMA.T_USER.idCard IS '身份证号';



达梦DES加密解密

加密

DECLAREBEGIN--加密-- 450111111111016019 明文-- 1122334455667788 密钥keyselect RAWTOHEX(CFALGORITHMSENCRYPT(utl_i18n.string_to_raw('450111111111016019', 'UTF8'),129,utl_i18n.string_to_raw('1122334455667788', 'UTF8')));END;/

解密

DECLAREBEGIN--解密-- 463845343638333934463231433533424434463332373839324645 密文-- 1122334455667788 密钥keyselect UTL_I18N.RAW_TO_CHAR(CFALGORITHMSDECRYPT(utl_i18n.raw_to_char(hextoraw('463845343638333934463231433533424434463332373839324645'),'UTF8'),129,utl_i18n.string_to_raw('1122334455667788', 'UTF8')),'UTF8');END;/

案例

declare  encrypted_string varchar2(100);  key_string varchar2(100);  input_string varchar2(500);  res_string varchar2(100);  encrypted_data varbinary(100);  keys varbinary(100);  input varbinary(100);  res_data varchar2(500);begin  input_string :='450111111111016019';-- 被加密的字符  key_string := '1122334455667788'; -- 加密的key    input_string := hextoraw(rpad(rawtohex(utl_raw.cast_to_raw(input_string)), 160,'F'));  -- input_string := rawtohex(utl_raw.cast_to_raw(input_string));    -- 加密  encrypted_string 明文加密后得到密文  DBMS_OBFUSCATION_TOOLKIT.DES3ENCRYPT(input_string =>input_string,key_string =>key_string,encrypted_string =>encrypted_string);    -- 解密     res_data解密得到的明文  DBMS_OBFUSCATION_TOOLKIT.DES3DECRYPT(encrypted_string,key_string,res_data);    -- 查询出明文和密文  select     lower(rawtohex(encrypted_string)) 密文 ,    utl_raw.CAST_TO_VARCHAR2(hextoraw(trim('F' from hextoraw(res_data))))  as 明文   from dual;   end;

锁超时处理

查询被锁对象、会话信息、数据库对象

select  v_lock.*, -- 锁对象 v_obj.NAME, --  v_session.SESS_ID, -- 会话id v_session.SQL_TEXT, -- sql语句 v_session.STATE, -- 状态 v_session.USER_NAME,--  用户名 v_session.CURR_SCH,  v_session.CLNT_TYPE, -- 连接类型 v_session.CLNT_HOST, -- 客户端名称 v_session.CLNT_IP, -- 客户端ip v_session.OSNAME  -- 操作系统名称from v$lock v_lockleft join sysobjects v_obj on v_obj.ID = v_lock.TABLE_IDleft join v$sessions v_session on v_lock.TRX_ID = v_session.TRX_ID;

查询被锁对象

select * from v$lock;

查询系统对象

select * from sysobjects;

查询所有会话进程信息

select * from v$sessions ;

关闭被锁的进程

-- 140235649561712 为查询所有会话进程信息得到的SESS_ID值sp_close_session('140235649561712');

查询执行时间过长的sql

使用以下sql语句可以查询执行时间过长的记录

select * from V$SYSTEM_LONG_EXEC_SQLS;

或者

select * from V$LONG_EXEC_SQLS;

存储过程

创建存储过程

格式

使用以下格式的来创建存储过程

CREATE OR REPLACE PROCEDURE  模式名称.存储过程名称AUTHID DEFINERis-- 定义变量区域begin  -- 存储过程逻辑体    -- 捕获存储过程逻辑体中出现的异常  exception when others THEN    rollback; --把前面的全部回滚end;

例子

CREATE OR REPLACE PROCEDURE  MYSCHEMA.p_mytestAUTHID DEFINERis-- 定义变量区域begin  -- 存储过程逻辑体    -- 捕获存储过程逻辑体中出现的异常  exception when others THEN    rollback; --把前面的全部回滚end;

记录存储过程异常日志

主要思路是创建一个存放存储过程异常日志的数据表,在存储过程捕获异常体中将异常存储到该表中。

创建存储异常信息的数据表

DROP TABLE IF EXISTS MYSCHEMA.T_PROCEDURE_ERROR_LOG;CREATE TABLE MYSCHEMA.T_PROCEDURE_ERROR_LOG(id INTEGER NOT NULL,name VARCHAR2(255),error_time timestamp,msg VARCHAR2(500),NOT CLUSTER PRIMARY KEY(id ))) STORAGE(ON MYTABLESPACE, CLUSTERBTR) ;
COMMENT ON TABLE MYSCHEMA.T_PROCEDURE_ERROR_LOG IS '存储异常信息记录表';COMMENT ON COLUMN MYSCHEMA.T_USER.id IS 'id主键';COMMENT ON COLUMN MYSCHEMA.T_USER.name IS '存储过程名称';COMMENT ON COLUMN MYSCHEMA.T_USER.error_time IS '出现异常的时间';COMMENT ON COLUMN MYSCHEMA.T_USER.msg IS '异常提示';

格式

CREATE OR REPLACE PROCEDURE  MYSCHEMA.p_mytestAUTHID DEFINERis-- 定义变量区域v_error_message varchar2(4000); -- 声明存放异常消息的变量begin  -- 存储过程逻辑体    -- 捕获存储过程逻辑体中出现的异常  exception when others THEN    rollback; --把前面的全部回滚    -- 将异常数据存入表中    v_errmessage := sqlerrm; -- 获取异常提示消息    insert into 异常日志表 values(id,存储过程名称,sysdate,v_errmessage );    commit;end;


例子

CREATE OR REPLACE PROCEDURE  MYSCHEMA.p_mytestAUTHID DEFINERis-- 定义变量区域v_error_message varchar2(4000); -- 声明存放异常消息的变量begin  -- 存储过程逻辑体    -- 捕获存储过程逻辑体中出现的异常  exception when others THEN    rollback; --把前面的全部回滚    -- 将异常数据存入表中    v_errmessage := sqlerrm; -- 获取异常提示消息    insert into MYSCHEMA.T_PROCEDURE_ERROR_LOG values(1,'MYSCHEMA.p_mytest',sysdate,v_errmessage );    commit;end;

字符处理

分割字符

将字符串按照指定分隔符号分割

语法

-- 格式:--     str:待分割的字符--      reg: 正则表达式。'[^ ]+' : 按空格分隔  ;   '[^,]+' :按逗号分隔  '[^?]+':按问号分隔--     startIndex:开始截取的字符位置,从1开始--    resultIndex:分隔之后取的结果位置,从1开始。(可以理解成java中split分隔后数组的第几个元素,只是位置是从1开始)REGEXP_SUBSTR(str , reg , startIndex, resultIndex)

例子

将时间 2023-06-01 12:55:59 按照空格分隔成两部分,分别为年月日、时分秒

select REGEXP_SUBSTR('2023-06-01 12:55:59' ,'[^ ]+',1,1) ymd, REGEXP_SUBSTR('2023-06-01 12:55:59' ,'[^ ]+',1,2) hms

结果

随机数

生成随机数

语法

 -- 随机生成指定范围的数字。[起始数,终点数] -- fromNumber:起始数 -- toNumber:终点数 round(dbms_random.value(fromNumber,toNumber))

例子

-- 随机生成0-10之间的整数select round(dbms_random.value(0,10))

结果


从查询的结果中随机选取数据

语法

-- tableName: 查询的数据表名-- number: 随机选取的记录条数select * from tableName order by rand() limit number;

例子

-- 从结果中随机选取5条记录select * from t_test order by rand() limit 5;

结果

随机生成指定范围内的时间

语法

-- startNumber: 随机范围起始-- endNumber: 随机范围截止TRUNC(sysdate-round(dbms_random.value(startNumber,endNumber))) + INTERVAL '1' SECOND * ROUND(DBMS_RANDOM.VALUE(0, 86399))

结果


阅读原文

版权声明:本站部分内容由互联网用户自发贡献,文章观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请拨打网站电话或发送邮件至1330763388@qq.com 反馈举报,一经查实,本站将立刻删除。

文章标题:【达梦8】sql语句学习笔记发布于2024-01-16 22:30:06

相关推荐