在达梦数据库 (DM) v8 中,要修改表名、字段名和字段数据类型,可以使用 ALTER TABLE 语句。以下是修改表名、字段名和字段数据类型的DDL语句示例(主要是市面上不可用):

命令行 连接数据库

连接达梦数据库

./disql SYSDBA/SYSDBA@localhost:5237

# 输入完毕,输入账号、密码

退出命令行

dmdsqlexec -f<SQL文件路径>

备份库

dmdump -a -f<备份文件路径>

备份表

dmdump -t<表名称> -f<备份文件路径>

导入SQL脚本

方式一:`/www/a.sql;
方式二:start /www/a.sql;

表DDL 达梦

查看表结构

这命令测试的时候 不是超管账号哦!

SELECT
	DBMS_METADATA.GET_DDL('TABLE',
	'你的表名')
FROM
	DUAL;

查看表结构 二

SELECT
	TABLE_NAME,
	COLUMN_NAME,
	DATA_TYPE,
	DATA_LENGTH,
	DATA_DEFAULT
FROM
	ALL_TAB_COLUMNS
WHERE
	TABLE_NAME = '你的表名'
	AND OWNER LIKE '%EA_%'
LIMIT 256;

查看库的全部表

SELECT
	TABLE_NAME, *
FROM
	ALL_TABLES;

更多详细表信息

修改表名

   ALTER TABLE 旧表名 RENAME TO 新表名;

将上述语句中的 "旧表名" 替换为实际的旧表名,"新表名" 替换为要修改成的新表名。

例如,将表名为 "old_table" 修改为 "new_table",可以执行以下语句:

   ALTER TABLE old_table RENAME TO new_table;

修改字段:为null

   ALTER TABLE 表名 MODIFY 字段名 NULL;

修改字段名

   ALTER TABLE 表名 RENAME COLUMN 旧字段名 TO 新字段名;

将上述语句中的 "表名" 替换为实际的表名,"旧字段名" 替换为要修改的旧字段名,"新字段名" 替换为要修改成的新字段名。

例如,将表名为 "my_table" 中的字段名 "old_column" 修改为 "new_column",可以执行以下语句:

   ALTER TABLE my_table RENAME COLUMN old_column TO new_column;

修改字段数据类型

说明一下,达梦 VARCHAR 不支持转 TEXT,遇到类似情况,建议重新删除字段,重新添加一个!

   ALTER TABLE 表名 MODIFY 字段名 新数据类型;

将上述语句中的 "表名" 替换为实际的表名,"字段名" 替换为要修改的字段名,"新数据类型" 替换为要修改成的新数据类型。

例如,将表名为 "my_table" 中的字段名为 "my_column" 的数据类型从 INT 修改为 VARCHAR(50),可以执行以下语句:

   ALTER TABLE my_table MODIFY my_column VARCHAR(50);

请注意,在执行这些修改DDL语句之前,务必备份数据,并确保没有其他操作正在使用该表,以避免数据丢失或冲突。

给表添加一个字段

📢:我再DBeaver操作DM数据库的时候,alter语句每条可以单独执行,但是多条放在一起就无法执行,IDEA自带的数据库可以执行!

语法

alter table 数据库名.数据表名
    add 字段名称 VARCHAR(500) not null;

-- not null 可以省略
comment on column 数据库名.数据表名.字段名称 is '我是注释';

案例

alter table 数据库名.数据表名
    add EMAIL VARCHAR(500) not null;

comment on column 数据库名.数据表名.EMAIL is '邮箱';

修改字段名称

语法

alter table TABLE rename column A to B;

案例

-- 案例:将BASE_LINE字段名称变更为BASE_LINE_2020
alter table 数据库名.数据表名 rename column BASE_LINE to BASE_LINE_2020;

修改字段注释

语法

comment on column 数据库名.数据表名.字段名 is '新的注释';

案例

comment on column 数据库名.数据表名.EMAIL is '740969606@qq.com';

删除字段

语法

alter table 数据库名.数据表名 drop 字段名;

案例

alter table 数据库名.数据表名 drop EMAIL;

索引

创建索引

CREATE UNIQUE  INDEX "索引名" ON "表名"("字段A" ASC,"字段B" ASC,"字段C" ASC,"字段D" ASC);

查看索引1

SELECT
	i.TABLE_NAME,
	i.OWNER,
	i.INDEX_NAME,
	i.uniqueness,
	LISTAGG(ic.COLUMN_NAME,
	',') WITHIN GROUP (
	ORDER BY ic.COLUMN_POSITION) AS COLUMN_NAMES
FROM
	ALL_INDEXES i
JOIN ALL_IND_COLUMNS ic ON
	i.INDEX_NAME = ic.INDEX_NAME
WHERE
	i.TABLE_NAME LIKE '你的表名'
GROUP BY
	i.TABLE_NAME,
	i.OWNER,
	i.INDEX_NAME,
	i.uniqueness

查看表的索引情况

SELECT
	t.TABLE_NAME AS "索引所在表名",
	c.TABLE_OWNER AS "表归属",
	i.INDEX_NAME AS "索引名称(多个索引名称一样,就是联合索引)",
	c.COLUMN_NAME AS "索引字段",
	i.INDEX_TYPE AS "索引类型",
	i.UNIQUENESS AS "是否唯一"
FROM
		all_indexes i
JOIN all_ind_columns c ON
	i.INDEX_NAME = c.INDEX_NAME
JOIN all_tables t ON
	i.TABLE_NAME = t.TABLE_NAME
WHERE
	t.TABLE_NAME LIKE '%'

创建/修改索引

CREATE OR REPLACE UNIQUE  INDEX "索引名" ON "表名"("字段A" ASC,"字段B" ASC,"字段C" ASC,"字段D" ASC);

删除索引

DROP INDEX 索引名;

索引改名

ALTER INDEX 老索引名称 RENAME TO 新索引名称;

命令行操作

导出dmp表结构

参数参考:https://eco.dameng.com/document/dm/zh-cn/pm/dexp-logical-export.html

dexp """SYSDBA"""/"""******"""@10.88.40.143:5238 DIRECTORY=你的位置 FILE=ddl.dmp SCHEMAS=模式名 TABLESPACE=N DROP=N COL_DEFAULT_SEPARATE=N LOG=ddl.log EXCLUDE=(ROWS,GRANTS) LOG_WRITE=N
特殊说明:
上述文章均是作者实际操作后产出。烦请各位,请勿直接盗用!转载记得标注原文链接:www.zanglikun.com
第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取全部资料 ❤