oracle查询表注释,各列名,列注释,列字段类型,长度,经度

本文介绍了一种使用SQL查询Oracle数据库中指定表的所有字段信息的方法,包括字段名称、数据类型、长度、精度、是否允许为空及注释描述。通过联接多个元数据视图,可以获取详细的表结构信息。
SELECT h1.comments       tabdesc,
       h2.column_name    columnname,
       h2.data_type      type,
       h2.comments       desci,
       h2.data_length    lenth,
       h2.DATA_PRECISION PRECISION,
       h2.Data_scale     scale,
       h2.NULLABLE       isCannull
  FROM (SELECT t1.table_name, t3.comments
          FROM user_tables t1, user_tab_comments t3
         WHERE t1.table_name = t3.table_name) h1,
       (SELECT t2.table_name,
               t2.column_name,
               t2.data_type,
               t2.Data_scale,
               t2.DATA_PRECISION,
               t2.data_length,
               t2.NULLABLE,
               t4.comments
          FROM user_tab_columns t2, user_col_comments t4
         WHERE t2.table_name = t4.table_name
           AND t2.column_name = t4.column_name) h2
 WHERE h1.table_name = h2.table_name
   and h2.table_name = '表名'

根据表名查询表字段信息,字段为number类型,长度和精度由PRECISION和scale确定。

CREATE TABLE ipark_platform_video_device_info( id NUMBER(20) NOT NULL COMMENT '主键', company_code VARCHAR2(32) COMMENT '企业编码', park_code VARCHAR2(32) COMMENT '园区编码', create_by VARCHAR2(32) COMMENT '创建人', create_time DATE COMMENT '创建时间', update_by VARCHAR2(32) COMMENT '更新人', update_time DATE COMMENT '更新时间', deleted VARCHAR2(1) COMMENT '是否删除', delete_time DATE COMMENT '删除时间', group_id NUMBER(20) COMMENT '视频通道树id', channel VARCHAR2(100) COMMENT '通道id', channel_name VARCHAR2(100) COMMENT '通道称', rtsp_address VARCHAR2(100) COMMENT 'rtsp地址(设备id)', device_state INTEGER COMMENT '设备状态;0:离线 1:在线', channel_identify_code VARCHAR2(100) COMMENT '通道识别码', camera_brand VARCHAR2(100) COMMENT '通道型号', device_id VARCHAR2(100) COMMENT '设备id', device_name VARCHAR2(100) COMMENT '设备称', model VARCHAR2(100) COMMENT '设备型号', device_manufacturer CLOB COMMENT '设备厂家', firmware VARCHAR2(100) COMMENT '设备固件', transport_protocol VARCHAR2(32) COMMENT '传输协议', stream_type VARCHAR2(32) COMMENT '设备视频流类型', port VARCHAR2(32) COMMENT '设备端口', protocol VARCHAR2(32) COMMENT '协议类型', manufacturer CLOB COMMENT '厂商', address CLOB COMMENT '地址', provider VARCHAR2(32) COMMENT '接入方式', latitude_longitude CLOB COMMENT '经纬度', longitude DECIMAL(24,6) COMMENT '经度', latitude DECIMAL(24,6) COMMENT '维度', video_type VARCHAR2(32) COMMENT '视频分类', video_org_type VARCHAR2(32) COMMENT '视频所属组织类型', custom_group_id NUMBER(20) COMMENT '自定义分组节点id', grouped VARCHAR2(32) COMMENT '是否自定义分组', code VARCHAR2(100) COMMENT '视频设备编码;唯一业务主键(设备id_通道id)', service_id VARCHAR2(100) COMMENT '服务id', ptz VARCHAR2(1) COMMENT '是否支持云台控制', PRIMARY KEY (id) )这个sql在达蒙数据库执行报错
最新发布
08-26
### 如何在 SQL 查询中使用注释替代列名Oracle 和 MySQL 数据库中,可以通过查询元数据获取字段注释信息,并将其用于替换原始列名。以下是具体方法: #### 对于 Oracle 数据库 Oracle 提供了 `USER_COL_COMMENTS` 视图来存储每张中的及其对应的注释信息。可以利用此视图动态生成带有注释作为列名的查询语句。 ```sql SELECT cols.COLUMN_NAME, coms.COMMENTS AS COLUMN_COMMENT FROM USER_TAB_COLUMNS cols LEFT JOIN USER_COL_COMMENTS coms ON cols.TABLE_NAME = coms.TABLE_NAME AND cols.COLUMN_NAME = coms.COLUMN_NAME WHERE cols.TABLE_NAME = 'YOUR_TABLE_NAME'; ``` 上述查询会返回指定的所有以及它们的注释[^1]。为了进一步实现用注释放置原列名的效果,可编写 PL/SQL 脚本来拼接最终的 SELECT 语句。 #### 对于 MySQL 数据库 MySQL 中同样存在类似的机制,通过访问 `INFORMATION_SCHEMA.COLUMNS` 可以获得字段的相关信息(包括注释)。以下是一个示例查询: ```sql SELECT COLUMN_NAME, COLUMN_COMMENT FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'your_database_name' AND TABLE_NAME = 'your_table_name'; ``` 该查询提取目标中各字段字与其对应注释[^3]。接着可以根据这些信息构建新的查询字符串,在实际应用时将注释放入别位置。 例如: ```sql SET @tsql = ''; SELECT GROUP_CONCAT(CONCAT(COLUMN_NAME,' "',COLUMN_COMMENT,'"')) INTO @tsql FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='your_db' AND TABLE_NAME='your_tb'; PREPARE stmt FROM CONCAT('SELECT ',@tsql,' FROM your_tb'); EXECUTE stmt; DEALLOCATE PREPARE stmt; ``` 这段脚本首先收集所有带注释形式化的字段达式并组合成完整的 SQL 文字串[@tsql],之后准备执行这个定制化后的查询命令[^2]。 #### Pandas 结合 Python 动态处理方式 除了纯 SQL 解决方案外,还可以借助编程语言如 Python 来完成更灵活的操作。比如采用 pandas 库读取数据库内容的同时调整 DataFrame 的 columns 属性值为相应的注释文字。 ```python import pymysql import pandas as pd # 连接到 MySQL 数据库 connection = pymysql.connect(host="localhost", user="root", password="password", database="test") try: with connection.cursor() as cursor: # 获取结构及注释 sql_columns = """ SELECT COLUMN_NAME, COLUMN_COMMENT FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA=%s AND TABLE_NAME=%s """ cursor.execute(sql_columns, ("order", "t_order")) col_mapping = {row['COLUMN_NAME']: row['COLUMN_COMMENT'] for row in cursor.fetchall()} # 加载格数据 df_data = pd.read_sql("SELECT * FROM t_order", con=connection) finally: connection.close() # 更新 dataframe 列名注释 df_renamed = df_data.rename(columns=col_mapping) print(df_renamed.head()) ``` 上面的例子展示了如何从 MySQL 抽取出字段映射关系并通过 pandas 更改默认显示称。 --- ### 总结 无论是直接操作 SQL 或者配合高级分析工具,都可以有效地达成以注释放置传统物理标识的目的。这不仅有助于提高报清晰度也便于后期维护管理。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值