学习内容关键字:
DM数据类型,DM_SQL,DDL,DML,非模式对象
1.DM_SQL数据类型
概述:DM_SQL支持的数据类型包括常规数据类型、位串数据类型、日期时间数据类型、多媒体数据类型,支持的表达式包括数值表达式、字符串表达式、时间值表达式、时间间隔值表达式、运算符的优先级等,同时DM数据库支持关系数据库的三级模式包括储存文件内模式、基表模式、视图外模式。
支持的数据类型
字符数据类型
CHAR/CHARACTER/VARCHAR/VARCHAR2
数值数据类型
NUMRIC/DECIMAL/DEC/NUMBER/INTERGER/INT/BIGINT/TINYINT/BYTE/SMALLINT/BINARY/VARBINARY/FLOAT/DOUBLE/REAL/DOUBLE PRECISION
位串数据类型
BIT
日期时间数据类型
DATE/TIME/TIMESTAMP/INTERVAL YEAR(MONTH DAY)...
多媒体数据类型
TEXT/LONG/LONGVARCHAR/CLOB/IMAGE/BLOB/CLOB/BFILE
设计一个表包含所有支持的数据类型并插入一条数据:
常规字符数据类型
CREATE TABLE TYPE.CHARTYPE(
CHAR1 CHAR(60) PRIMARY KEY,
CHARACTER1 CHARACTER(60) NOT NULL,
VARCHAR1 VARCHAR(60),
VARCHAR2 VARCHAR(60)
)
INSERT INTO TYPE.CHARTYPE(CHAR1,CHARACTER1,VARCHAR1,VARCHAR2)
VALUES(‘123’,’1234’,’12345’,’12’)
常规数值类型数据
CREATE TABLE TYPE.INTTYPE(
NUMERIC1 NUMERIC(5,4) PRIMARY KEY,
DECIMAL1 DECIMAL(5,4) NOT NULL,
DEC1 DEC(5,4),
NUMBER1 NUMBER(5,4),
INTERGER1 INTERGER,
INT1 INT,
BIGINT1 BIGINT,
TINYINT1 TINYINT,
BYTE1 BYTE,
SMALLINT1 SMALLINT,
BINARY1 BINARY(32767),
FLOAT1 FLOAT(60),
DOUBLE1 DOUBLE(60),
REAL1 REAL,
DOUBLEPRECISION1 DOUBLE PRECISION(60)
)
INSERT INTO
TYPE.INTTYPE(NUMBER1,DECIMAL1,DEC1,NUMBER1,INTERGER1,INT1,BIGINT1,TINYINT1,BYTE1,SMALLINT1,BINARY1,FLOAT1,DOUBLE1,REAL1,DOUBLEPRECISION1) VALUES();
位串数据类型
CREATE TABLE TYPE.BITTYPE(
BIT1 BIT
)INSERT INTO TYPE.BIT(BIT) VALUES (‘NULL’);
日期时间数据类型
CREATE TABLE TYPE.DATE(
DATE1 DATE PRIMARY KEY,
TIME1 TIME(0),
TIMESTAMP1 AS DATETIME1 TIMESTAMP(6),
YTM INTERVAL YEAR(4) TO MONTH,
Y INTERVAL YEAR(4),
M INTERVAL MONTH(4),
D INTERVAL DAY(2),
DTH INTERVAL DAY(2) TO HOUR,
DTM INTERVAL DAY(2) TO MINUTE,
DTS INTERVAL DAY(2) TO SECOND(2),
H INTERVAL HOUR(3),
HTM INTERVAL HOUR(3) TO MINUTE,
HTS INTERVAL HOUR(3) TO SECOND(2),
M INTERVAL MINUTE(3),
MTS INTERVAL MINUTE(3) TO SECOND(2),
S INTERVAL SECOND(2,2)
TWITHZ TIME(2) WITH TIME ZONE,
TSWITHTZ TIMESTAMP(2) WITH TIME ZONE,
TSWITHLTZ TIMESTAMP(3) WITH LOCAL TIME ZONE
) INSERT INTO VALUES();
多媒体数据类型
CREATE TABLE TYPE.MEDIA(
TEXT1 TEXT PRIMARY KEY,
LONG1 LONG NOT NULL,
LONGVARCHAR1 LONGVARCHAR,
IMAGE1 IMAGE,
LONGVARBAINARY1 LONGVARBAINARY,
BLOB1 BLOB,
CLOB1 CLOB,
BFILE1 BFILE
) INSERT INTO TYPE.MEDIA VALUES();
支持的表达式
2.DM_SQL中DDL及DML操作
DDL数据定义语句大致包含定义CREATE、修改ALTER、删除DROP三类操作,管理对象通常有数据库修改语句、用户管理语句、模式管理语句、表空间管理语句、表管理语句、索引管理语句等
DML数据操作语言主要有添加、更新、删除、查询数据库记录,常用的有INSERT、UPDATE、DELETE、SELECT、TURNDATE等
DM查询语句包含有
单表查询(简单查询、条件查询、集函数、分析函数、情况表达式)
连接查询(交叉查询、自然连接、内连接、外连接)
子查询、WITH查询、全文检索、并行查询等
数据的插入、更新、删除的语句,包含MERGE INTO、伪列ROWID、DM自增列
3.DM_SQL中非模式对象
概述:DM_SQL中非模式对象管理包括表空间管理、用户管理、数据库和角色权限管理、角色管理,均可归总为安全管理。实际上达梦的安全功能众多,包括用户标识与鉴别、自主访问控制、强制访问控制、审计、通信存储加密、加密引擎、资源限制、客体重用。
用户标识与鉴别:可以通过登录账户区别各用户,并通过口令方式防止用户被冒充
自主访问控制:通过权限管理,使用户只能访问自己权限内的数据对象
强制访问控制:通过安全标记,使用户只能访问自己安全级别相符的数据对象
审计:审计人员可以查看所有用户的操作记录,为明确事故责任提供证据支持
通信存储加密:用户可以自主的将数据以密文的形式存储在数据库中,也可以对在网络上传输的数据进行加密
加密引擎:用户可以用自定义的加密算法来加密自己的核心数据
资源限制:可以对网络资源和磁盘资源进行配额设置,防止信息数据的泄露
客体重用:实现内存与磁盘空间的释放清理,防止信息数据的泄露
4.本周遇到的问题及解决方式
- INSERT常规数据类型数据执行时失败,提示字符串截断;
——检查为当把数据类型number的数字强制转换成小于自身长度的字符串类型时会报错,例如number类型cast成长度更短的varchar2,延伸可为ini类型cast成更短的varchar2等
- CREATE成多媒体数据类型时设置主键,提示TEXT不可比;
——文本不能用作UNION、INTERSECT或EXCEPT运算符的操作数,它不具有可比性,不能设置为PRIMARY KEY
- 查询提示dual表或视图不存在
——dual伪表在SYSDBA模式下,非SYSDBA用户访问需要带上库名和模式名,直接访问可以用SYSDBA创建PUBLIC同义词:CREATE PUBLIC SYNONYM dual for SYSTEM.SYSDBA.SYSDUAL
5.本周随记
定义CHAR类型的列,最大存储长度由数据库页面大小决定(4K 1900,8K 3900,16K 8000,32K 8188)
DDL语句指定路径时,无论绝对还是相对路径,DM最终会统一处理为绝对路径,路径长度不能超过256字节
TIME WITH TIME ZONE 类型实质上是TIME类型加上时区类型(INTERVAL HOUR TO MINUTE)且支持SQL92标准或SQL SERVER ‘09:10:21 +8:00’, ‘09:10:21+8:00’, ‘9:10:21+8:00’均可用且等价
水平分区表(查询),将表和索引分割成小单位分别存放在单独的段中,从对表的访问转化为对较小段的访问,提高大数据量读写操作和查询的效率。
T1 JOIN T2 ON T1.() = T2.() 不允许出现ROWNUM,具体连接方式由数据库内部分析确定。
一个SELECT-FROM-WHERE为一个查询块,在一个查询块中嵌套查询块称为子查询,其中:不能有ORDER BY字句、允许TEXT和CHAR类型比较、不能包含在集函数中、允许子查询嵌套子查询
一般情况下在插入或装载数据后,为表创建索引会更有效率,CREATE INDEX语句中列的排序会影响查询的性能,把最常用的列放在最前面
登录密码特殊字符串需要转义,例如:
DIRECTORY=E:\Program Files\dmdbms\data\TEST\bak FULLY=y
→ DIRECTORY=””E:\Program” Files\dmdbms\data\TEST\bak” FULL=y
又例如:
tab1” (dexp要求)→”tab1””” (操作系统要求)→”\”tab1\”\”\””
达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台
版权归原作者 墨林津枫 所有, 如有侵权,请联系我们删除。