达梦SQL语法(一)-数据定义语句


前言

DM SQL语言符合结构化查询语言SQL标准,是标准SQL的扩充。它集数据定义、数据查询、数据操纵和数据控制于–体,是一种统一-的、综合的关系数据库语言。它功能强大,.
使用简单方便、容易为用户掌握。


数据定义语句

数据库修改语句
例1 给数据库增加一个日志文件C:\DMDBMS\data\dmlog_0.log,其大小为200M。
ALTER DATABASE ADD LOGFILE ‘C:\DMDBMS\data\dmlog_0.log’ SIZE 200;
例2 扩展数据库中的日志文件C:\DMDBMS\data\dmlog_0.log,使其大小增大为300M。
ALTER DATABASE RESIZE LOGFILE ‘C:\DMDBMS\data\dmlog_0.log’ TO 300;
例3 设置数据库状态为MOUNT。
ALTER DATABASE MOUNT;
例4 设置数据库状态为OPEN。
ALTER DATABASE OPEN;
例5 设置数据库状态为SUSPEND。
ALTER DATABASE SUSPEND;
例6重命名日志文件C:\DMDBMS\data\dmlog_0.log为d:\dmlog_1.log。
ALTER DATABASE MOUNT;
ALTER DATABASE RENAME LOGFILE ‘C:\DMDBMS\data\dmlog_0.log’ TO ‘d:\dmlog_1.log’;
ALTER DATABASE OPEN;
例7设置数据库模式为PRIMARY。
ALTER DATABASE MOUNT;
ALTER DATABASE PRIMARY;
ALTER DATABASE OPEN FORCE;
例8设置数据库模式为STANDBY。
ALTER DATABASE MOUNT;
ALTER DATABASE STANDBY;
ALTER DATABASE OPEN FORCE;
例9设置数据库模式为NORMAL。
ALTER DATABASE MOUNT;
ALTER DATABASE NORMAL;
ALTER DATABASE OPEN;
例 10设置数据归档模式为非归档。
ALTER DATABASE MOUNT;
ALTER DATABASE NOARCHIVELOG;
例 11设置数据库归档模式为归档。
ALTER DATABASE MOUNT;
ALTER DATABASE ARCHIVELOG;
例 12增加本地归档配置,归档目录为c:\arch_local,文件大小为128MB,空间限制为1024MB。
ALTER DATABASE MOUNT;
ALTER DATABASE ADD ARCHIVELOG ‘DEST = c:\arch_local, TYPE = local, FILE_SIZE = 128, SPACE_LIMIT = 1024’;
例 13增加一个实时归档配置,远程服务实例名为realtime,需事先配置mail。
ALTER DATABASE MOUNT;
ALTER DATABASE ADD ARCHIVELOG ‘DEST = realtime, TYPE = REALTIME’;
例 14增加一个异步归档配置,远程服务实例名为 asyn1,定时器名为 timer1,需事先配置好mail和timer。
ALTER DATABASE MOUNT;
ALTERDATABASEADDARCHIVELOG’DEST=asyn1,TYPE=ASYNC,TIMER_NAME=timer1’;
例 15增加一个异步归档配置,远程服务实例名为 asyn2,定时器名为 timer2,源
库到异步备库的归档延时发送时间为10分钟,需事先配置好mail和timer。
ALTER DATABASE MOUNT;
ALTER DATABASE ADD ARCHIVELOG ‘DEST=asyn2, TYPE=ASYNC, TIMER_NAME=timer2,
ARCH_SEND_DELAY=10’;

管理用户

1、用户定义语句

例1创建用户名为BOOKSHOP_USER、口令为BOOKSHOP_PASSWORD、会话超时为
30分钟的用户。
CREATEUSERBOOKSHOP_USERIDENTIFIEDBYBOOKSHOP_PASSWORDLIMITCONNECT_TIME
30;
例2创建用户名为BOOKSHOP_OS_USER、基于操作系统身份验证的用户。
CREATE USER BOOKSHOP_OS_USER IDENTIFIED EXTERNALLY;

2、修改用户语句

例1修改用户BOOKSHOP_USER,会话空闲期为无限制,最大连接数为10。
ALTER
USER BOOKSHOP_USER
LIMIT SESSION_PER_USER 10, CONNECT_IDLE_TIME
UNLIMITED;
例2赋予用户USER2代理权限,使用户USER2可以认证登录用户USER1。
ALTER USER USER1 GRANT CONNECT THROUGH USER2;

3、删除用户语句

例1删除用户BOOKSHOP_USER。
DROP USER BOOKSHOP_USER;
例2删除用户BOOKSHOP_OS_USER。
DROP USER BOOKSHOP_OS_USER CASCADE;

管理模式

模式定义语句
例用户SYSDBA创建模式SCHEMA1,建立的模式属于SYSDBA。
CREATE SCHEMA SCHEMA1 AUTHORIZATION SYSDBA;

设置当前模式语句
例SYSDBA用户将当前的模式从SYSDBA换到SALES模式。
SET SCHEMA SALES;

模式删除语句
例以SYSDBA身份登录数据库后,删除BOOKSHOP库中模式SCHEMA1。
DROP SCHEMA SCHEMA1 CASCADE;

管理表空间

表空间定义语句
例以SYSDBA身份登录数据库后,创建表空间TS1,指定数据文件TS1.dbf,大小128M。
CREATE TABLESPACE TS1 DATAFILE ‘d:\TS1.dbf’ SIZE 128;

修改表空间语句
例1将表空间TS1名字修改为TS2。
ALTER TABLESPACE TS1 RENAME TO TS2;
例2增加一个路径为d:\TS1_1.dbf,大小为128M的数据文件到表空间TS1。
ALTER TABLESPACE TS1 ADD DATAFILE ‘d:\TS1_1.dbf’ SIZE 128;
例3修改表空间TS1中数据文件d:\TS1.dbf的大小为200M。
ALTER TABLESPACE TS1 RESIZE DATAFILE ‘d:\TS1.dbf’ TO 200;
例4重命名表空间TS1的数据文件d:\TS1.dbf为e:\TS1_0.dbf。
ALTER TABLESPACE TS1 OFFLINE;
ALTER TABLESPACE TS1 RENAME DATAFILE ‘d:\TS1.dbf’ TO ‘e:\TS1_0.dbf’;
ALTER TABLESPACE TS1 ONLINE;
例5修改表空间TS1的数据文件d:\TS1.dbf自动扩展属性为每次扩展10M,最大文件大小为1G。
ALTER TABLESPACE TS1 DATAFILE ‘d:\TS1.dbf’ AUTOEXTEND ON NEXT 10 MAXSIZE
1000;
例6修改表空间TS1缓冲池名字为KEEP。
ALTER TABLESPACE TS1 CACHE=“KEEP”;
例7修改表空间为CORRUPT状态,注意只有在表空间处于OFFLINE状态或表空间损
坏的情况下才允许使用。
ALTER TABLESPACE TS1 CORRUPT;

表空间删除语句
例以SYSDBA身份登录数据库后,删除表空间TS1。
DROP TABLESPACE TS1;

表空间失效文件检查
该过程只在LINUX下有效。
举例说明
SP_FILE_SYS_CHECK ();

表空间失效文件恢复准备
该过程只在LINUX下有效。
举例说明
SP_TABLESPACE_PREPARE_RECOVER(‘MAIN’);

表空间失效文件恢复
1.该过程只在LINUX下有效;
2.在SP_TABLESPACE_PREPARE_RECOVER及在OS系统内完成了数据文件的复制后调用。
举例说明
SP_TABLESPACE_RECOVER(‘MAIN’);

管理表

定义数据库基表

例 用列级完整性约束定义的格式写出,也可以将唯一性约束、引用约束和检查约束以表级完整性约束定义的格式写出的。假定用户为SYSDBA,下面以产品的评论表为例进行说明。
CREATE TABLE PRODUCTION.PRODUCT_REVIEW
(
PRODUCT_REVIEWID INT IDENTITY(1,1),
PRODUCTID INT NOT NULL,
NAME VARCHAR(50) NOT NULL,
REVIEWDATE DATE NOT NULL,
EMAIL VARCHAR(50) NOT NULL,
RATING INT NOT NULL,
COMMENTS TEXT,
PRIMARY KEY(PRODUCT_REVIEWID),);

定义水平分区表
例1创建一个范围分区表callinfo,用来记录用户2018年的电话通讯信息,包括
主叫号码、被叫号码、通话时间和时长,并且根据季度进行分区。
CREATE TABLE callinfo(
caller CHAR(15),
callee CHAR(15),
time DATETIME,
duration INT
)
PARTITION BY RANGE(time)(
PARTITION p1 VALUES LESS THAN (‘2018-04-01’),
PARTITION p2 VALUES LESS THAN (‘2018-07-01’),
PARTITION p3 VALUES LESS THAN (‘2018-10-01’),
PARTITION p4 VALUES EQU OR LESS THAN (‘2018-12-31’));
–'2018-12-31’也可替换为MAXVALUE

表修改语句

修改数据库表
如将评论人姓名的数据类型改为VARCHAR(8),并指定该列为NOT NULL,且缺省值为’刘青’。
ALTER TABLE PRODUCTION.PRODUCT_REVIEW MODIFY NAME VARCHAR(8) DEFAULT '刘青 ’ NOT NULL;

修改水平分区表
例1合并分区表,修改分区表。
ALTER TABLE PRODUCTION.PRODUCT_INVENTORY MERGE PARTITIONS P1,P2 INTO PARTITION P5;

基表删除语句

例1用户SYSDBA删除PERSON表。
DROP TABLE PERSON.PERSON CASCADE;

基表数据删除语句

例假定删除模式PRODUCTION中的PRODUCT_REVIEW表中所有的记录。
TRUNCATE TABLE PRODUCTION.PRODUCT_REVIEW;

管理索引

索引定义语句
例1假设具有DBA权限的用户在VENDOR表中,以VENDORID为索引列建立索引S1,
以ACCOUNTNO,NAME为索引列建立唯一索引S2。
CREATE INDEX S1 ON PURCHASING.VENDOR (VENDORID);
CREATE UNIQUE INDEX S2 ON PURCHASING.VENDOR (ACCOUNTNO, NAME);

索引修改语句
例1具有DBA权限的用户需要重命名S1索引可用以下语句实现。
ALTER INDEX PURCHASING.S1 RENAME TO PURCHASING.S2;

索引删除语句
例具有DBA权限的用户需要删除S2索引可用以下语句实现。
DROP INDEX PURCHASING.S2;

管理位图连接索引

位图连接索引定义语句
创建位图连接索引:
create bitmap index index1
on SALES.T1(SALES.T2.NID)
from SALES.T2, SALES.T1
where SALES.T2.RID = SALES.T1.CUSTOMERID;

位图连接索引删除语句
DROP INDEX sales.index1;

管理全文索引

全文索引定义语句
例用户SYSDBA需要在PERSON模式下的ADDRESS表的ADDRES1列上创建全文索引,可以用下面的语句:
CREATE CONTEXT INDEX INDEX0001 ON PERSON.ADDRESS(ADDRESS1) LEXER
CHINESE_LEXER;

全文索引修改语句
例用户SYSDBA需要在PERSON模式下的ADDRESS表的ADDRES1列上完全填充全
文索引,可以用下面的语句:
ALTER CONTEXT INDEX INDEX0001 ON PERSON.ADDRESS REBUILD;

全文索引删除语句
例用户SYSDBA需要删除在PERSON模式下ADDRESS表的全文索引,可以用下面的语句:
DROP CONTEXT INDEX INDEX0001 ON PERSON.ADDRESS;

管理序列

序列定义语句
例 创建序列 SEQ_QUANTITY,将序列的前两个值插入表PRODUCTION.T2中。
(1)创建序列SEQ_QUANTITY
CREATE SEQUENCE SEQ_QUANTITY INCREMENT BY 10;
(2)将序列的第一个值插入表T2中
INSERT INTO PRODUCTION.PRODUCT_INVENTORY
VALUES(1,1,SEQ_QUANTITY.NEXTVAL);
SELECT * FROM PRODUCTION.T2;
查询结果为:表PRODUCT_INVENTORY增加一行,列QUANTITY的值为1
(3)将序列的第二个值插入表T2中
INSERT INTO PRODUCTION.T2 VALUES(1,1,SEQ_QUANTITY.NEXTVAL);
SELECT * FROM PRODUCTION.T2;
查询结果为:表PRODUCT_INVENTORY增加两行,列QUANTITY的值分别为1,11

序列修改语句
例1创建完序列后直接修改序列的步长。
CREATE SEQUENCE SEQ1 INCREMENT BY 1000 START WITH 5 NOMAXVALUE NOMINVALUE CACHE 10;
ALTER SEQUENCE SEQ1 INCREMENT BY 1 ;
SELECT SEQ1.NEXTVAL FROM DUAL;

序列删除语句
例1 创建完序列后直接修改序列的步长。
CREATE SEQUENCE SEQ1 INCREMENT BY 1000 START WITH 5 NOMAXVALUE NOMINVALUE CACHE 10;
ALTER SEQUENCE SEQ1 INCREMENT BY 1 ;
SELECT SEQ1.NEXTVAL FROM DUAL

设置INI参数

设置参数值
例设置当前系统动态、会话级参数SORT_BUF_SIZE参数值为200,要求延迟生效,对当前的session不生效,对后面创建的会话才生效。并且只修改内存。
ALTER SYSTEM SET ‘SORT_BUF_SIZE’ =200 DEFERRED MEMORY;
例设置静态参数MTAB_MEM_SIZE参数值为1200。
ALTER SYSTEM SET ‘MTAB_MEM_SIZE’ =1200 spfile;

设置仅对当前会话起作用
例设置当前会话的HAGR_HASH_SIZE参数值为2000000。
ALTER SESSION SET ‘HAGR_HASH_SIZE’ =2000000;

修改系统语句

ALTER SYSTEM SWITCH LOGFILE;
ALTER SYSTEM ARCHIVE LOG CURRENT;
ARCHIVE LOG CURRENT和SWITCH LOGFILE功能一样,都是把新生成的,还未归
档的联机日志进行归档。

设置列、索引生成统计信息

例1对SYSOBJECTS表上ID列生成统计信息,采样率的百分比为30%。
STAT 30 ON SYS.SYSOBJECTS (ID);
例2对PURCHASING模式下的索引S1生成统计信息,采样率为50%。
STAT 50 ON INDEX PURCHASING.S1;
例3对SYSOBJECTS表上PID,NAME列生成统计信息,采样率的百分比为30%。
STAT 30 ON SYS.SYSOBJECTS (PID,NAME);

设置表生成统计信息

语法格式
STAT ON [<模式名>.]<表名> [GLOBAL];
参数

  1. <模式名>指定生成统计信息的表的模式。缺省为当前会话的模式名;
  2. <表名>指定生成统计信息的表;
  3. GLOBAL用于MPP环境下各节点数据收集后统一生成统计信息。
    例1为SYSOBJECTS表生成统计信息。
    STAT ON SYS.SYSOBJECTS;

总结

更多信息可前往达梦官网社区
https://eco.dameng.com/docs/zh-cn/ops/standard-dsc-cluster.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值