在达梦数据库 (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博客搜索:标题关键字。以获取全部资料 ❤
第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取全部资料 ❤