当前位置: 首页 > news >正文

达梦数据库的常用操作

达梦数据库的常用操作

达梦数据库(DM)作为国产关系型数据库的代表,其日常操作围绕表、字段、索引等基础对象展开,同时结合表空间管理、数据库状态查询、权限管理等核心运维能力,形成完整的操作体系。本文在原有基础操作的基础上,补充操作说明、扩展用法、运维查询、表空间管理等内容,让操作更具实用性和完整性。

一、检查数据库表是否存在

基础语句

select*fromall_Objectswhereowner='TEST'andobject_type='TABLE'andObject_namelike'%HC%';

补充说明

  1. owner:表的所属用户,需大写(达梦默认对象名大小写敏感,若创建时加双引号则按原大小写匹配);
  2. object_type:除TABLE外,还可查询VIEW(视图)、INDEX(索引)、PROCEDURE(存储过程)等对象;
  3. 精准查询:取消模糊查询可直接匹配表名,语句:
select*fromall_Objectswhereowner='TEST'andobject_type='TABLE'andObject_name='HC_TABLE';
  1. 当前用户表查询:若查询登录用户下的表,可简化为select * from user_tables where table_name like '%HC%';,无需指定owner

二、查看建表语句

基础语句

selectDBMS_METADATA.GET_DDL('TABLE','数据库表')fromdual;

补充扩展

  1. 指定所属用户:查询其他用户的表建表语句,需在表名后拼接用户,语句:
selectDBMS_METADATA.GET_DDL('TABLE','USER','TEST')fromdual;
  1. 格式化输出:默认输出可能存在换行混乱,可通过设置参数格式化,语句:
SETLINESIZE200;-- 设置行宽SETPAGESIZE0;-- 取消分页selectDBMS_METADATA.GET_DDL('TABLE','USER','TEST')fromdual;
  1. 查看视图/索引建语句:替换TABLEVIEW/INDEX即可,例如查看视图建语句:
selectDBMS_METADATA.GET_DDL('VIEW','V_USER_INFO','TEST')fromdual;

三、新增字段

基础语句

altertable"user"addcolumn("is_del"CHAR(1));commentoncolumn"user"."is_del"is'删除标志,1是0否';

补充说明

  1. 批量新增字段:无需多次执行alter table,可一次性新增多个字段,语句:
altertable"user"add("is_del"CHAR(1)comment'删除标志,1是0否',"create_time"DATETIMEcomment'创建时间',"update_time"DATETIMEcomment'更新时间');
  1. 设置字段默认值:新增字段时可直接指定默认值,避免后续更新,语句:
altertable"user"addcolumn("is_del"CHAR(1)default'0');commentoncolumn"user"."is_del"is'删除标志,1是0否,默认0未删除';
  1. 非空约束:新增必填字段时添加not null约束,语句:
altertable"user"addcolumn("user_code"VARCHAR(50)notnull);commentoncolumn"user"."user_code"is'用户编码,非空唯一';

四、重命名字段名称

基础语句

altertable"user"renamecolumn"name"to"user_name";

注意事项

  1. 重命名前需确认无业务程序正在使用该字段,避免程序报错;
  2. 若字段存在索引、触发器、存储过程依赖,重命名后需同步修改依赖对象;
  3. 达梦数据库中,若表名/字段名未加双引号,默认大写,重命名时需保持一致,例如:
-- 无引号创建的表,重命名语句altertableUSERrenamecolumnNAMEtoUSER_NAME;

五、修改字段

基础语句

-- 设置字段可为空ALTERTABLE"USER"MODIFY"CREATER_ID"NULL;-- 修改字段长度ALTERTABLE"USER"MODIFYUSER_NAMEVARCHAR(150);-- 修改字段类型(慎用)altertable"USER"modifyDFQZint;

补充扩展

1. 核心修改操作
-- 设置字段非空(需确保字段无NULL值,否则执行失败)ALTERTABLE"USER"MODIFY"CREATER_ID"NOTNULL;-- 设置字段默认值ALTERTABLE"USER"MODIFY"is_del"CHAR(1)default'0';-- 同时修改字段长度+默认值+注释(注释需单独执行)ALTERTABLE"USER"MODIFY"user_name"VARCHAR(200)default'未知';commentoncolumn"USER"."user_name"is'用户姓名,长度200,默认未知';
2. 慎用说明
  • 修改字段类型时,若字段已有数据,可能导致数据丢失或转换失败(如字符串转数字),建议先备份数据再操作;
  • 缩短字段长度时,需确保现有数据长度均小于新长度,否则执行失败。

六、索引

基础语句

-- 创建普通索引CREATEINDEXidx_user_nameONemployee(USER_NAME);-- 查看索引SELECTtable_name,index_name,index_typefromuser_indexesWHEREindex_name='idx_user_name';-- 删除索引DROPINDEXidx_user_name;

补充扩展

1. 常用索引类型创建
-- 联合索引(多字段组合,适合联合查询)CREATEINDEXidx_user_code_nameON"user"("user_code","user_name");-- 唯一索引(字段值唯一,避免重复,比普通索引查询更快)CREATEUNIQUEINDEXidx_unique_user_codeON"user"("user_code");-- 主键索引(主键默认自动创建,手动指定主键时显式创建)ALTERTABLE"user"ADDPRIMARYKEY("id");
2. 索引高级查询
-- 查看指定表的所有索引及字段SELECTt.table_name,t.index_name,t.index_type,c.column_nameFROMuser_indexes tJOINuser_ind_columns cONt.index_name=c.index_nameWHEREt.table_name='USER';-- 查看无效索引(需重建,提升查询效率)SELECTindex_name,table_nameFROMuser_indexesWHEREstatus='INVALID';
3. 索引操作注意事项
  • 索引提升查询速度,但会降低插入/更新/删除速度,避免对频繁更新的字段建索引;
  • 单表索引数量不宜过多(建议不超过10个),避免增加数据库维护成本;
  • 删除索引时,需确认无查询语句依赖该索引。

七、表字段查看

基础语句

-- 查看字段基本信息(类型、长度、是否为空等)select*fromall_tab_columnswhereowner='TEST'andTable_Name='USER';-- 查看字段注释select*fromdba_col_commentswhereowner='TEST'andTable_Name='USER';

补充扩展

1. 简化查询(当前用户)
-- 查看当前用户表字段信息select*fromuser_tab_columnswhereTable_Name='USER';-- 查看当前用户表字段注释select*fromuser_col_commentswhereTable_Name='USER';
2. 联合查询(字段信息+注释)

一次性查看字段的类型、长度、非空约束、注释,无需分开查询,语句:

selectc.column_name 字段名,c.data_type 字段类型,c.data_length 长度,casewhenc.nullable='Y'then'是'else'否'end可为空,nvl(cc.comments,'无')字段注释fromall_tab_columns cleftjoindba_col_comments cconc.owner=cc.ownerandc.table_name=cc.table_nameandc.column_name=cc.column_namewherec.owner='TEST'andc.table_name='USER'orderbyc.column_id;-- 按字段创建顺序排序

八、新增核心日常运维操作

8.1 数据库实例/授权信息查询

用于确认数据库版本、授权有效期、字符集等基础信息,是运维的基础操作。

-- 1. 查询数据库授权信息(有效期、CPU授权、用户数等)SELECTLIC_VERSIONAS"许可证版本",SERIES_NOAS"序列号",TO_CHAR(EXPIRED_DATE)AS"授权有效日期",PRODUCT_TYPEAS"产品名称",MAX_CPU_NUMAS"授权CPU个数"FROMV$LICENSE;-- 2. 查询数据库实例核心参数SELECT'数据库版本'AS"参数名",(SELECTid_codeFROMv$instance)AS"参数值"UNIONALL'数据库名'AS"参数名",nameFROMv$databaseUNIONALL'是否启用归档'AS"参数名",casearch_modewhen'Y'then'是'when'N'then'否'endFROMv$databaseUNIONALL'字符集'AS"参数名",CASESF_GET_UNICODE_FLAG()WHEN'0'THEN'GBK18030'WHEN'1'then'UTF-8'endFROMdualUNIONALL'启动时间'AS"参数名",to_char(last_startup_time)FROMv$database;

8.2 表空间管理

表空间是达梦数据库的核心逻辑存储单元,日常需监控其使用情况,避免空间不足。

-- 1. 查看所有表空间状态(联机/脱机、总大小)SELECTNAMEAS"表空间名",CASETYPE$WHEN'1'THEN'业务表空间'WHEN'2'THEN'临时表空间'ENDAS"类型",CASESTATUS$WHEN'0'THEN'联机'WHEN'1'THEN'脱机'ENDAS"状态",TOTAL_SIZE*PAGE/1024/1024AS"总大小(MB)"FROMV$TABLESPACE;-- 2. 查看表空间使用情况(已用/剩余/使用率)SELECTF.TABLESPACE_NAMEAS"表空间名",ROUND((T.TOTAL_SPACE-F.FREE_SPACE)/1024,2)AS"已用(MB)",ROUND(F.FREE_SPACE/1024,2)AS"剩余(MB)",ROUND((T.TOTAL_SPACE-F.FREE_SPACE)/T.TOTAL_SPACE*100,2)AS"使用率(%)"FROMDBA_TABLESPACE_USAGE FJOIN(SELECTTABLESPACE_NAME,SUM(TOTAL_SPACE)ASTOTAL_SPACEFROMDBA_TABLESPACE_USAGEGROUPBYTABLESPACE_NAME)TONF.TABLESPACE_NAME=T.TABLESPACE_NAME;-- 3. 创建表空间CREATETABLESPACEMY_TBS DATAFILE'/dm8/data/DAMENG/MY_TBS.DBF'SIZE10240MB;-- 初始大小10G-- 4. 表空间扩容(添加新数据文件)ALTERTABLESPACEMY_TBSADDDATAFILE'/dm8/data/DAMENG/MY_TBS_02.DBF'SIZE5120MB;-- 新增5G数据文件

8.3 数据库表数据操作

补充日常高频的增、删、改、查基础语句,适配业务操作需求。

-- 1. 插入数据(单条/批量)INSERTINTO"user"("id","user_code","user_name","is_del")VALUES(1,'U001','张三','0');INSERTINTO"user"("id","user_code","user_name","is_del")VALUES(2,'U002','李四','0'),(3,'U003','王五','0');-- 2. 更新数据(带条件,避免全表更新)UPDATE"user"SET"user_name"='张三丰',"update_time"=SYSDATEWHERE"id"=1;-- 3. 删除数据(逻辑删除优先,避免物理删除)-- 物理删除(慎用,数据不可恢复)DELETEFROM"user"WHERE"id"=3;-- 逻辑删除(推荐,通过删除标志标记)UPDATE"user"SET"is_del"='1'WHERE"id"=3;-- 4. 分页查询(达梦专用LIMIT,兼容MySQL)SELECT*FROM"user"WHERE"is_del"='0'ORDERBY"create_time"DESCLIMIT10OFFSET0;-- 第一页,10条/页

8.4 权限基础操作

达梦数据库采用三权分立架构(SYSDBA/SYSSSO/SYSAUDITOR),日常需为普通用户分配基础权限。

-- 1. 创建普通用户CREATEUSERTEST_USER IDENTIFIEDBY"Test@123456";-- 密码需符合复杂度要求-- 2. 授予用户表操作权限(查询/插入/更新/删除)GRANTSELECT,INSERT,UPDATE,DELETEONTEST."user"TOTEST_USER;-- 3. 授予用户创建表/视图权限GRANTCREATETABLE,CREATEVIEWTOTEST_USER;-- 4. 回收权限REVOKEDELETEONTEST."user"FROMTEST_USER;

九、通用操作注意事项

  1. 大小写敏感:达梦数据库默认开启大小写敏感,创建对象时若加双引号,则按原大小写匹配,否则默认大写;
  2. 事务控制:执行alter tabledrop indexdelete等操作时,建议开启事务,执行失败可回滚,语句:
BEGIN;-- 开启事务ALTERTABLE"user"ADDcolumn("phone"VARCHAR(20));COMMIT;-- 提交事务-- ROLLBACK; -- 执行失败则回滚
  1. 操作前备份:对核心表执行结构修改(如修改字段类型、删除字段)、数据删除前,需先备份表数据,避免数据丢失;
  2. 生产环境规范:生产环境禁止直接执行droptruncate等高危语句,建议通过只读账号查询,运维账号执行修改操作,并做好操作记录。
http://www.jsqmd.com/news/446632/

相关文章:

  • 双驱价值重构法:破解商务衬衫效率痛点的独家解决方案 - 速递信息
  • 欧拉ie大纲
  • selenium运用(窗口)
  • Codex 输出乱码 - Higurashi
  • 简单理解:STM32CubeMX NVIC 配置界面
  • 工程建筑行业如何通过Vue3集成WebUploader实现CAD文件夹的断点续传?
  • 2025-2026年度3000-5000元价位段智能马桶综合实力权威TOP榜 - charlieruizvin
  • 2月精选!手拉式气动葫芦厂家推荐与产品特色,12吨气动葫芦/大吨位气动葫芦/小车式气动葫芦,手拉式气动葫芦供应商如何选 - 品牌推荐师
  • 2026新疆旅拍推荐排行榜:权威解析与优质机构推荐 (1) - charlieruizvin
  • 2026智能马桶分级权威推荐:以国家背书定品质 希箭双款领跑轻/全智能赛道 - charlieruizvin
  • 2026最新丽江旅拍口碑机构TOP10,丽江旅拍排名攻略 - charlieruizvin
  • 零拷贝 IPC:用内存映射档案打造 .NET 高性能进程间通信队列
  • 网页版CKEditor如何处理Word图文混排内容的粘贴上传?
  • 信创环境下CKEditor如何实现图片粘贴上传与Word导入?
  • day01markdown语法
  • 天津婚纱摄影推荐:三川影像全维度测评:婚纱界的“胖东来”,平价高品质的幸福之选 - charlieruizvin
  • 脑子不想摸鱼,手却已经摸上了……
  • 西安婚纱照品牌排名推荐|这篇告诉你西安婚纱摄影选哪家 - charlieruizvin
  • 义乌婚纱摄影/婚纱照/婚纱摄影工作室推荐:义乌罗亚摄影深度测评:浙中婚拍标杆,全维度实力铸就口碑 - charlieruizvin
  • 多任务与元学习:让具身智能体成为快速适应新任务的“多面手” - 实践
  • iscsi详解
  • 1_2026巴厘岛旅拍婚纱照推荐:权威排名+全维度测评(1) - charlieruizvin
  • 2026大理旅拍行业官方认证榜(风花雪月品质梯度指南) - charlieruizvin
  • 2026上海宠物口腔溃疡诊疗:这些医生经验丰富值得选,宠物牙科/狗狗牙结石/狗狗洗牙,宠物口腔溃疡诊疗医生排名前十 - 品牌推荐师
  • 基于PSO粒子群优化的PV光伏发电系统simulink建模与仿真
  • 2026年上海宠物口腔溃疡诊疗,医生选择要点,猫咪口腔/猫咪洗牙/猫咪牙科/宠物口腔,宠物口腔溃疡诊疗医生排名前十 - 品牌推荐师
  • SQLite3 - foreign key
  • 转码
  • openclaw实际使用记录;音频模型中流式模型与非流式模型的区别;
  • 基于模糊控制的AMT自动变速汽车换档智能控制系统simulink建模与仿真