数据库

Oracle

序列

新建

create sequence '序列名称';
-- 创建序列名称
CREATE SEQUENCE 'sequence_name'
-- 递增`n`的序列(默认:`1`)
-- 如果`n`是正数就递增
-- 如果`n`是负数就递减
[INCREMENT BY 'n']
-- 开始值(递增默认是`minvalue`,递减默认是`maxvalue`)
[START WITH 'n'] 
-- 最大值
[{MAXVALUE 'n' | NOMAXVALUE}]
-- 最小值
[{MINVALUE 'n' | NOMINVALUE}]
-- 循环 | 不循环(默认:`NOCYCLE`)
[{CYCLE | 'NOCYCLE'}] 
-- 分配并存入到内存中(默认:`CACHE`)
[{'CACHE' 'n' | NOCACHE}]; 

查询

NEXTVAL返回序列的下一个值

CURRVAL返回序列的当前值(新建序列,无法提取当前值,只有先提取下一个值后才能再次提取当前值)

-- 提取下一个值
select '序列名称'.nextval from dual;
-- 提取当前值
select '序列名称'.currval from dual;
-- 提取多个序列
SELECT '序列名称'.nextval FROM ( SELECT LEVEL FROM dual CONNECT BY LEVEL <= '数量' );

修改

ALTER SEQUENCE 语句修改序列。不能修改序列的 START WITH 参数。

-- 修改序列最大值为`10000`
ALTER SEQUENCE '序列名称' MAXVALUE 10000 CYCLE;
-- 当前序列基础+10
alter sequence '序列名称' increment by 10;    
-- 当前序列基础-10
alter sequence '序列名称' increment by -10;  

-- 修改序列当前值
SELECT SEQ_NAME.NEXTVAL FROM dual; -- 查询当前值
alter sequence SEQ_NAME increment BY X; -- 修改步长,X为正数负数都可以
SELECT SEQ_NAME.NEXTVAL FROM dual; -- 查询序列下一个值,查看是否修改成功
alter sequence SEQ_NAME increment BY 1; -- 重新将序列的值的增长值设为1

删除

DROP SEQUENCE '序列名称';

常用操作

备份恢复

-- 创建一个备份表并存储原始数据
CREATE TABLE 备份表 as SELECT * FROM 旧表;
-- 恢复原始数据
INSERT INTO 旧表 SELECT * FROM 备份表;

查看执行计划

EXPLAIN PLAN FOR SQL语句;
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);

达梦

-- 达梦blob无法使用to_char()函数问题
-- 字段类型 BLOB / 存储内容 字符串
-- 查询
select to_char(tt) from ttl; -- ORACLE
select utl_raw.cast_to_varchar2(dbms_lob.substr(tt)) from ttl; -- DM
-- 插入
INSERT INTO ttl VALUES (utl_raw.cast_to_raw('blob')); -- DM

-- 达梦set字段''问题
-- 字段类型 VARCHAR2
-- DM
UPDATE ttl SET remark = '' WHERE id = 1; -- remake改为''
UPDATE ttl SET remark = NULL WHERE id = 1; -- remake改为[NULL]
-- ORACLE
UPDATE ttl SET remark = '' WHERE id = 1; -- remake改为[NULL]
UPDATE ttl SET remark = NULL WHERE id = 1; -- remake改为[NULL]
-- 从oracle迁移dm可能会碰到这么一个问题: oracle空串和null是等价的达梦里面默认参数是不等价的,is null 不能把空串查询出来,要实现这一点就需要打开oracle兼容的参数。修改dm.ini 文件 COMPATIBLE MODE = 2,重启服务即可

-- 达梦不兼容DATE_ADD,请使用add_days(‘2020-07-12 12:20:30’,2)函数进行替换

常用操作

查看执行计划

EXPLAIN FOR SQL语句;

MySQL

常用操作

查看执行计划

explain SQL语句;
posted @ 2023-12-20 09:51  Zzzy君不见  阅读(2)  评论(0编辑  收藏  举报