1、快速复制达梦表结构及数据
方法1:使用 CREATE TABLE … AS SELECT(CTAS)语句(推荐)
-- 复制表结构+数据
CREATE TABLE new_table AS SELECT * FROM original_table;
-- 仅复制表结构(不带数据)
CREATE TABLE new_table AS SELECT * FROM original_table WHERE 1=2;
方法2:使用 CREATE TABLE … LIKE + INSERT SELECT
-- 复制表结构(包含约束但不含索引)
CREATE TABLE new_table LIKE original_table;
-- 复制数据
INSERT INTO new_table SELECT * FROM original_table;
2、清空某一张表
TRUNCATE TABLE employees; -- 清空 employees 表
3、达梦数据将时间格式2024/03/20中的/换成-
3.1. 若字段为字符串类型(如 VARCHAR)
UPDATE 表名
SET 时间字段名 = REPLACE(时间字段名, '/', '-');
3.2、若字段为日期类型(如 DATE)
UPDATE 表名
SET 时间字段名 = TO_DATE(REPLACE(TO_CHAR(时间字段名, 'yyyy/mm/dd'), '/', '-'), 'yyyy-mm-dd');
4、现在有一个水果表,达梦按照月份和类型统计每个月销售总数
SELECT
TO_CHAR(sale_date, 'YYYY-MM') AS month, -- 提取年月并格式化为YYYY-MM
fruit_type, -- 水果类型
SUM(quantity) AS total_quantity -- 计算销售总数
FROM fruit_sales -- 水果销售表
GROUP BY
TO_CHAR(sale_date, 'YYYY-MM'), -- 按年月分组
fruit_type -- 按水果类型分组
ORDER BY
month, -- 按月份排序
fruit_type; -- 按水果类型排序
5、达梦查询时间介于2025-01-01到2025-06-30之间的数据
SELECT *
FROM 表名
WHERE 日期字段 >= TO_DATE('2025-01-01', 'YYYY-MM-DD')
AND 日期字段 < TO_DATE('2025-07-01', 'YYYY-MM-DD');
6、将字符串02或06,使用达梦去除0
6.1. 使用LTRIM函数
SELECT LTRIM('02', '0') FROM DUAL; -- 结果: '2'
SELECT LTRIM('06', '0') FROM DUAL; -- 结果: '6'
6.2. 使用REGEXP_REPLACE函数
SELECT REGEXP_REPLACE('02', '^0+', '') FROM DUAL; -- 结果: '2'
SELECT REGEXP_REPLACE('06', '^0+', '') FROM DUAL; -- 结果: '6'
6.3. 使用CASE WHEN判断
SELECT
CASE
WHEN LEFT('02', 1) = '0' THEN SUBSTRING('02', 2)
ELSE '02'
END
FROM DUAL; -- 结果: '2'
6.4. 使用CAST函数(如果字符串是数字)
SELECT CAST('02' AS INTEGER) FROM DUAL; -- 结果: 2
SELECT CAST('06' AS INTEGER) FROM DUAL; -- 结果: 6
7、MERGE INTO语法快速处理对应数据
<update id="batchMergeWithCondition" parameterType="java.util.List">
<foreach collection="list" item="item" index="index" separator=";">
MERGE INTO target_table t
USING (SELECT
#{item.id} AS id,
#{item.name} AS name,
#{item.value} AS value,
#{item.status} AS status
FROM dual) s
ON (t.id = s.id)
WHEN MATCHED AND s.status = 1 THEN
UPDATE SET
t.name = s.name,
t.value = s.value
WHEN NOT MATCHED AND s.status = 1 THEN
INSERT (id, name, value)
VALUES (s.id, s.name, s.value)
</foreach>
</update>
8、达梦添加常用数据索引的几种方式
// 普通
8.1、CREATE INDEX index_name ON table_name(column_name);
// 唯一
8.2、CREATE UNIQUE INDEX index_name ON table_name(column_name);
// 复合
8.3、CREATE INDEX index_name ON table_name(column1, column2, ...);