达梦数据库常用对象与基础操作

📅 2026/8/27 9:24:15
达梦数据库常用对象与基础操作
目录一、CASE_SENSITIVE1、大小写敏感介绍2、大小写敏感实例3、创建大小写不敏感实例4、总结二、CHARSET1、CHARSET0GB18030字符集2、CHARSET1UTF-8字符集三、disql工具使用1、disql连接数据库2、执行SQL3、执行SQL脚本四、模式1、模式的概念2、创建用户3、在USER_A模式下操作4、在USER_A1模式下操作5、验证6、总结五、数据类型1、数值类型2、字符类型3、日期时间类型4、多媒体类型5、总结六、表类型1、普通表2、堆表3、列存储表4、分区表5、临时表6、外部表七、索引2、唯一索引3、联合索引4、函数索引5、位图索引6、聚簇索引7、总结八、总结一、CASE_SENSITIVE1、大小写敏感介绍CASE_SENSITIVE是达梦数据库初始化时的核心参数之一用于控制标识符如表名、列名等数据库对象名称的大小写是否敏感。通过【./dminit help 】命令可查看初始化参数列表其中CASE_SENSITIVE的默认值为 Y即大小写敏感。该参数在数据库创建后无法修改因此需根据实际业务慎重决定。2、大小写敏感实例① 初始化大小写敏感实例② 创建测试表标识符转换规则不带双引号的标识符被自动转为大写带双引号的标识符保持原样标识符是否带引号实际存储结果table_user不带TABLE_USERid不带IDName不带NAME“Age”带双引号Age③ 基于表名查询不带双引号自动转为大写即查询成功带双引号保持原样需精确匹配若不是TABLE_USER即查询失败④ 基于字段查询不带双引号自动转为大写即查询成功带双引号保持原样需精确匹配若不是“Age”即查询失败3、创建大小写不敏感实例① 创建实例② 建表与插入数据建表与敏感库相同插入同名不同大小写的字段。③ 基于表名查询以下四种写法均能成功访问同一张表。④ 基于字段查询同名即可查询相应字段值。4、总结CASE_SENSITIVE1CASE_SENSITIVE0不带引号标识符自动转大写保持原样带双引号标识符保持原样保持原样标识符比较方式区分大小写不区分大小写同名不同大小写的对象允许存在用引号区分不允许存在视为相同数据值比较区分大小写不区分大小写二、CHARSETCHARSET是达梦数据库的初始化参数用于指定数据库的字符集编码初始化后不可修改该参数默认值为0GB18030。CHARSET值字符集英文字符中文字符0GB180301字节2字节1UTF-81字节3字节2EUC-KR1字节韩文字符2 字节CHARSET与LENGTH_IN_CHAR高度关联共同决定VARCHAR字段的存储长度但由于LENGTH_IN_CHAR在当前版本已废弃默认0/N即以字节为单位因此实际测试只考虑不同字符集下的差异以GB18030和UTF-8字符集为例。1、CHARSET0GB18030字符集初始化实例。创建测试表两个字段均为VARCHAR(6)即限制6个字节。中文占2字节英文占1字节因此凡是超过6字节的INSERT语句均执行失败。查看字段的字符数与字节数符合GB18030字符集最多存储3个中文或6个英文字符或混合总字节不超过6字节。2、CHARSET1UTF-8字符集初始化实例。创建测试表两个字段均为VARCHAR(6)即限制6个字节。中文占3字节英文占1字节因此凡是超过6字节的INSERT语句均执行失败。查看字段的字符数与字节数符合UTF-8字符集最多存储2个中文或6个英文字符或混合总字节不超过6字节。三、disql工具使用disql是达梦数据库自带的命令行交互式客户端工具存放在数据库安装目录的bin目录下用于与DM数据库服务器进行交互接收用户输入的SQL语句并返回执行结果。1、disql连接数据库① 命令行登录最常用的数据库连接方式基本语法格式为【./disql 用户名/密码IP地址:端口号】。② 操作系统身份验证登录采用操作系统管理员账号登录默认连接本机5236端口。③ 先启动disql再连接无登录启动disql进入交互界面再执行连接。④ 使用服务名连接服务名需要在【/etc/dm_svc.conf】文件中配置然后通过服务名登录。2、执行SQL① 进入disql后执行SQL敲一行SQL命令执行一行。② 在命令行直接执行SQL使用-E参数在登录命令后直接执行SQL语句。3、执行SQL脚本① 编写脚本文件使用文本编辑器vi编写SQL脚本并保存为.sql文件② 启动disql时执行sql脚本使用如下方式或进入disql交互界面使用start命令执行脚本。四、模式1、模式的概念模式是数据库对象的集合可以理解为存放表、视图、索引、存储过程等对象的逻辑容器。在达梦数据库中用户的模式指该用户拥有的对象集。用户与模式是一对多的关系一个用户可以有一个或多个模式一个模式只能属于一个用户创建用户时系统会自动生成同名模式作为默认模式2、创建用户执行以下命令创建两个测试用户USER_A和USER_B系统会自动为每个用户生成同名模式。为USER_A用户创建额外的模式USER_A1。3、在USER_A模式下操作切换到USER_A模式创建测试表并插入数据。4、在USER_A1模式下操作切换到额外的模式USER_A1创建同名表table_city与USER_A模式下的table_city同名但互不冲突。5、验证查询table_city会自动检索当前模式下的表若需访问不同模式下的同名表则必须添加模式名前缀进行指定。6、总结数据存储在表中表属于某个模式模式归属于某个用户用户绑定表空间若不指定则默认绑定MAIN表空间表空间对应物理数据文件.dbf。整个逻辑链路为数据→表→模式→用户→表空间→数据文件。说明与用户关系一对多一个用户可拥有多个模式一个模式只属于一个用户默认模式创建用户时自动生成同名模式核心作用逻辑隔离、避免命名冲突、权限管理创建模式CREATE SCHEMA 模式名 AUTHORIZATION 用户名;切换模式SET SCHEMA 模式名;删除模式DROP SCHEMA 模式名 CASCADE;五、数据类型1、数值类型数值类型用于存储各类数字主要分为精确数值和近似数值。其中最常用的整数类型为INT定点数p指定几位数s指定几位小数浮点数则用于存储近似值精度不高。分类类型说明整数类型TINYINT1字节SMALLINT2字节INT4字节BIGINT8字节定点数NUMERIC(p,s)精确小数可指定精度浮点数FLOAT单精度4字节DOUBLE双精度8字节2、字符类型字符类型用于存储文本数据分为定长和变长两类。其中最常用的为VARCHAR(n)变长字符串。类型说明CHAR(n)定长字符串固定占n个字节VARCHAR(n)变长字符串按实际内容存储VARCHAR2(n)Oracle兼容类型同VARCHARTEXT长文本最大支持2GB​3、日期时间类型类型说明格式DATE日期YYYY-MM-DDTIME时间HH:MI:SSTIMESTAMP日期时间YYYY-MM-DD HH:MI:SSDATETIME日期时间YYYY-MM-DD HH:MI:SS4、多媒体类型多媒体类型用于存储非结构化的大数据对象如图片、音视频、文本文档等。主要提供了三种大字段类型类型说明BLOB二进制大对象CLOB字符大对象BFILE外部文件指针将本地的一张png图片和一个txt文本文件上传至服务器/home/dmdba。创建包含大字段的测试表并将png与txt存入表中查询并验证文件大小。5、总结创建一张包含所有常用数据类型的综合测试表并执行插入与查询操作。六、表类型1、普通表达梦默认创建的表类型数据按聚簇索引键排序存储。2、堆表数据无序存放即采用扁平B树结构提升插入性能。3、列存储表数据按列存储其数据压缩比高节省存储空间。4、分区表将大表数据按规则拆分成多个物理分区。5、临时表用于存储会话或事务期间的临时数据数据不会持久化。6、外部表数据库中的一张表但数据存储在数据库外部的操作系统文件中。只读不支持 DML 操作可像普通表一样查询不占用数据库存储空间。七、索引索引是达梦数据库中高效获取数据的数据结构其核心作用是提升SQL语句的查询速度是数据库性能优化最常用的手段。下面创建员工信息表并插入50万条数据用于索引测试。1、普通索引最基本的索引类型用于加速单列查询。适用高频出现在WHERE条件后的字段如下图所示将员工姓名作为索引字段创建普通索引。2、唯一索引在普通索引基础上增加了唯一性约束即只能用于唯一字段的索引。适用如下图所示的身份证号还有手机号、邮箱等字段。3、联合索引基于多个字段创建的索引用于加速多条件组合查询。是日常开发中最常用的索引类型。但需遵循最左前缀法则。① 查询基于薪资与部门联合字段的数据创建联合索引前。SELECT * FROM table_employees WHERE department 技术部 AND salary 20000;② 创建联合字段索引。③ 查询基于薪资与部门联合字段的数据创建联合索引后。SELECT * FROM table_employees WHERE department 技术部 AND salary 20000;4、函数索引基于列的函数或表达式计算结果创建索引用于加速带函数运算的查询。5、位图索引为取值种类很少的字段创建的索引如性别男/女、状态active/inactive/suspended等。① 查询状态字段的数据创建位图索引前SELECT * FROM table_employees WHERE status active;② 创建基于状态的位图索引③ 查询状态字段的数据创建位图索引后SELECT * FROM table_employees WHERE status active;6、聚簇索引每个普通表有且只有一个决定了数据的物理存储顺序。主键默认就是聚簇索引。7、总结创建索引后各类型查询性能均显著提升。具体实验数据如下实验索引类型查询条件建索引前耗时建索引后耗时1普通索引emp_name员工_25000033.86ms5.08ms2唯一索引id_card...22.77ms3.04ms3联合索引department技术部 AND salary200005.03ms3.51ms4函数索引UPPER(emp_name)员工_30000084.25ms5.67ms5位图索引statusactive4.02ms3.72ms6聚簇索引id25000015.35ms2.63ms八、总结1、文章总结了达梦数据库常用对象与基础操作2、更多细节及高级配置请参阅达梦官方文档https://eco.dameng.com