达梦数据库sql中with语句的使用

一、with 的用法

With alias_name as (select1)[,alias_namen as (select n) ]--中括号可以省略

Select ….

举例,如下两表:

A B

ID NAME ID NAME

1 LI 1 LI

2 QIN 3 SUN

语句如下:

例1

with test_with as(select * from A) select * from B where B.id in(select id from test_with)

例2

with test_with1 as(select * from A),test_with2 as(select * from B)

select * from B where B.id in(select id from test_with1)

union all

select * from test_with2

[@more@]

二、with的相关总结

1.使用with子句可以让子查询重用相同的with查询块,通过select调用(with子句只能被select查询块引用),一般在with查询用到多次情况下。在引用的select语句之前定义,同级只能定义with关键字只能使用一次,多个用逗号分割。

2.with子句的返回结果存到用户的临时表空间中,只做一次查询,反复

### 如何在达梦数据库中查看建表语句达梦数据库中,可以利用系统视图 `USER_TAB_COLUMNS` 和 `ALL_TAB_COMMENTS` 来获取有关表结构的信息。然而,要直接查看完整的建表语句(即 `CREATE TABLE` 的具体定义),通常需要借助以下方法之一: #### 方法一:使用 DM_SYS_SQL 工具 DM 提供了一个内置工具 `DM_SYS_SQL`,该工具能够帮助用户导出对象的 DDL 定义。以下是具体的实现方式: ```sql SELECT DBMS_METADATA.GET_DDL('TABLE', 'YOUR_TABLE_NAME') FROM DUAL; ``` 上述 SQL 查询会返回指定表名 (`YOUR_TABLE_NAME`) 对应的完整建表语句[^1]。 #### 方法二:查询数据字典视图 如果无法使用 `DBMS_METADATA` 或者希望手动拼接建表语句,可以通过查询数据字典中的相关视图来重构建表语句。主要涉及以下几个视图: - **USER_TAB_COLUMNS**: 获取列的相关信息,例如名称、数据类型、长度等。 - **USER_CONSTRAINTS**: 获取表上的约束条件,如主键、外键、唯一性约束等。 - **USER_COL_COMMENTS**: 如果存在字段注释,则可以从这里提取出来。 下面是一个简单的例子用于展示如何组合这些元数据以重建部分建表逻辑: ```sql SELECT COLUMN_NAME, DATA_TYPE, DATA_LENGTH, NULLABLE FROM USER_TAB_COLUMNS WHERE TABLE_NAME='YOUR_TABLE_NAME'; ``` 对于更复杂的场景,比如复制带有特定约束的新表时,可设置参数 `CTAB_SEL_WITH_CONS`=1 以便自动继承原表的部分特性[^2]。 注意,在实际应用过程中可能还需要考虑索引、触发器等因素的影响。 ### 注意事项 当尝试恢复或迁移现有模式下的某个实体关系模型至另一环境前,请务必确认源端与目标端版本兼容情况;另外某些高级功能(如同步机制)也许不会被简单地通过DDL脚本携带过去。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DN金猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值