首页 > 数据库 >Oracle,PostgreSQL,MySql,SqlServer各数据库查元信息的SQL

Oracle,PostgreSQL,MySql,SqlServer各数据库查元信息的SQL

时间:2024-11-18 15:19:25浏览次数:3  
标签:PostgreSQL NAME -- SqlServer COLUMN pg SQL SELECT name

Oracle

查询表字段信息

SELECT
    a.COLUMN_NAME AS B_NAME,  -- 字段名称
    a.DATA_TYPE,              -- 字段数据类型
    CASE 
        WHEN a.COLUMN_NAME IN (
            SELECT cols.column_name
            FROM all_constraints cons, all_cons_columns cols
            WHERE cons.constraint_type = 'P'  -- 主键约束
              AND cons.constraint_name = cols.constraint_name
              AND cons.owner = cols.owner
              AND cols.COLUMN_NAME = a.COLUMN_NAME
              AND cols.TABLE_NAME = 'TB_CIS_CONSULT_DETAIL'
              AND cons.OWNER = 'GZFY'
        ) THEN 'PRI'           -- 如果字段是主键,则标记为 'PRI'
        ELSE NULL              -- 否则为 NULL
    END COLUMN_KEY,
    b.COMMENTS AS remark       -- 字段备注
FROM all_tab_cols a 
LEFT JOIN all_col_comments b
    ON a.TABLE_NAME = b.TABLE_NAME 
    AND a.COLUMN_NAME = b.COLUMN_NAME 
    AND a.OWNER = b.OWNER
WHERE a.TABLE_NAME = 'TB_CIS_CONSULT_DETAIL'  -- 目标表名称
  AND HIDDEN_COLUMN = 'NO'                    -- 排除隐藏字段
  AND a.OWNER = 'GZFY';                       -- 表的所有者

查询表的键字段信息

SELECT
    column_name -- 键字段的名称
FROM all_ind_columns
WHERE table_owner = 'GZFY'   -- 表的所有者
  AND table_name = 'TB_CIS_CONSULT_DETAIL';  -- 目标表名称

查询表名或视图名

SELECT DISTINCT
    view_name AS table_name  -- 视图名称
FROM all_views
WHERE OWNER = 'GZFY'         -- 所有者
UNION
SELECT DISTINCT
    table_name               -- 表名称
FROM all_tables
WHERE OWNER = 'GZFY';        -- 所有者
ORDER BY table_name;         -- 按名称排序

预览表数据

SELECT 
    "TB_CIS_EMR_FEE"."UPDATE_DATE", 
    "TB_CIS_EMR_FEE"."COMMENTS", 
    "TB_CIS_EMR_FEE"."ID",
    -- 其他字段...
FROM "GZFY"."TB_CIS_EMR_FEE"
WHERE ROWNUM <= 10;          -- 限制返回结果为10行

PostgreSQL

查询表字段信息

SELECT 
    col.COLUMN_NAME,            -- 字段名称
    col.data_type,              -- 数据类型
    CASE 
        WHEN col.COLUMN_NAME IN (
            SELECT conname 
            FROM pg_catalog.pg_constraint
            JOIN pg_catalog.pg_namespace
              ON pg_catalog.pg_constraint.connamespace = pg_catalog.pg_namespace.oid
            JOIN pg_catalog.pg_class
              ON pg_catalog.pg_constraint.conrelid = pg_catalog.pg_class.oid
            WHERE pg_catalog.pg_constraint.contype = 'p' -- 主键约束
              AND pg_catalog.pg_namespace.nspname = 'public'
              AND pg_catalog.pg_class.relname = 'salaries'
        ) THEN 'PRI'
        ELSE NULL
    END PRI,                    -- 标记是否为主键
    (
        SELECT descr.description
        FROM pg_class AS cls
        INNER JOIN pg_attribute AS attr ON cls.oid = attr.attrelid
        LEFT JOIN pg_description AS descr ON (descr.objoid = cls.oid AND descr.objsubid = attr.attnum)
        WHERE cls.relkind IN ('r', 'v') 
          AND cls.relname = 'salaries' 
          AND attr.attname = col.COLUMN_NAME
    ) AS DESCRIPTION             -- 字段描述
FROM information_schema.COLUMNS col
WHERE table_schema = 'public'
  AND table_catalog = 'employees'
  AND table_name = 'salaries';

预览表数据

SELECT 
    "salaries"."emp_no", 
    "salaries"."salary", 
    to_char("salaries"."from_date", 'YYYY-MM-DD HH24:MI:SS'), 
    to_char("salaries"."to_date", 'YYYY-MM-DD HH24:MI:SS')
FROM "employees"."public"."salaries"
LIMIT 10; -- 限制返回10行

查询表名或视图名

SELECT table_name
FROM information_schema.tables
WHERE table_catalog = 'employees'
  AND table_schema = 'public'
  AND table_type NOT IN ('FOREIGN TABLE'); -- 排除外部表

MySQL

查询表名或视图名

SELECT DISTINCT TABLE_NAME, 
       TABLE_TYPE != 'BASE TABLE' AS IS_VIEW -- 判断是否为视图
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = "test"; -- 目标数据库

查询表字段信息

SELECT 
    COLUMN_NAME,          -- 字段名称
    DATA_TYPE,            -- 数据类型
    COLUMN_KEY,           -- 键类型
    COLUMN_COMMENT        -- 字段备注
FROM information_schema.columns
WHERE TABLE_SCHEMA = 'test' 
  AND TABLE_NAME = 'tb_cis_patient_info';

查询表的键字段信息

SELECT DISTINCT 
    column_name -- 键字段的名称
FROM information_schema.STATISTICS
WHERE table_schema = 'test'
  AND table_name = 'tb_cis_patient_info';

预览表数据

SELECT 
    card_number, 
    card_type, 
    medical_institut_code,
    -- 其他字段...
FROM test.tb_cis_patient_info
LIMIT 10; -- 限制返回10行

SQL Server

查询表字段信息

SELECT
    remarks.column_name,      -- 字段名称
    columns.DATA_TYPE,        -- 数据类型
    columns.PRI,              -- 键标记
    remarks.remark            -- 字段备注
FROM (
    SELECT
        sc.name AS column_name,
        sep.value AS remark -- 字段备注
    FROM sys.tables st
    INNER JOIN sys.columns sc ON st.object_id = sc.object_id
    LEFT JOIN sys.extended_properties sep ON st.object_id = sep.major_id
       AND sc.column_id = sep.minor_id
       AND sep.name = 'MS_Description'
    WHERE st.name = 'CB_COST_ITEM' -- 表名称
) remarks
LEFT JOIN (
    SELECT DISTINCT
        T1.COLUMN_NAME,
        T1.DATA_TYPE,
        T2.PRI
    FROM (
        SELECT
            COLUMN_NAME,
            DATA_TYPE
        FROM INFORMATION_SCHEMA.COLUMNS
        WHERE TABLE_NAME = 'CB_COST_ITEM'
    ) T1
    LEFT JOIN (
        SELECT
            COLUMN_NAME,
            'PRI' AS PRI
        FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
        WHERE TABLE_NAME = 'CB_COST_ITEM' AND CONSTRAINT_NAME LIKE 'PK%'
    ) T2 ON T2.COLUMN_NAME = T1.COLUMN_NAME
) columns ON columns.COLUMN_NAME = remarks.column_name;

查询表的键字段信息

SELECT
    col.name AS ColumnName -- 键字段的名称
FROM sys.indexes ind
INNER JOIN sys.index_columns ic ON ind.object_id = ic.object_id AND ind.index_id = ic.index_id
INNER JOIN sys.columns col ON ic.object_id = col.object_id AND ic.column_id = col.column_id
INNER JOIN sys.tables t ON ind.object_id = t.object_id
WHERE ind.is_primary_key = 0
  AND ind.is_unique = 0
  AND ind.is_unique_constraint = 0
  AND t.is_ms_shipped = 0
  AND t.name = 'CB_COST_ITEM'; -- 表名称

查询表名或视图名

SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
ORDER BY TABLE_NAME; -- 按表名排序

预览表数据

SELECT TOP 10 
    [PK_ID], 
    [ITEM_CODE], 
    [ITEM_NAME],
    -- 其他字段...
FROM [medicare_ZhuHaiJinWan].[dbo].[CB_COST_ITEM];

标签:PostgreSQL,NAME,--,SqlServer,COLUMN,pg,SQL,SELECT,name
From: https://blog.csdn.net/WuLex/article/details/122519014

相关文章

  • 详细!基于php+mysql的同城交友圈子,如何保证源码的安全性?
    一、圈子系统架构前端:Uniapp-vue2.0后端:Thinkphp6前后端分离 系统支持:H5+小程序+双端APP(安卓+苹果)二、社区圈子源码安全性如何保证?权限控制:在开发过程中,通过设置严格的权限控制,确保开发人员只能访问与其工作相关的源代码部分,防止敏感信息的泄露。加密源代码:对源代码进......
  • MySQL数据库的几种基本操作语句
    1.创建数据库`createdatabase[ifnotexists]database_name;`2.查看所有数据库`showdatabases;`3.删除数据库`dropdatabase[ifnotexists]database_name;`4.使用数据库`usedatabase_name;`注:对数据库中的表进行操作需要先使用该数据库5.查询当前数据库下的......
  • 【H2O2|全栈】MySQL的云端部署
    目录前言开篇语准备工作MySQL移除为什么需要移除?移除操作Yum仓库yum简介rpm安装yum库安装MySQL安装使用yum安装开机自启动检查运行状态MySQL配置初始密码​编辑登录修改root密码退出MySQL字符集配置结束语前言开篇语本篇属于云端部署系列知识,为了将......
  • MySQL无开通SQL全审计下的故障分析方法
       几年前MySQL数据库出现突然的从库延迟故障和CPU爆高时,如何排查具体原因,可能说已在腾讯云的MySQL库里开启了SQL全审计,记录了全部执行的SQL,再通过下面的方法就可以很容易找到原因:     1,实用QPS和TPS高的高效分析方法   但如果没有开通SQL全审计,如何去找......
  • SqlSugar使用AOP获取sql语句
    publicISqlSugarClientDb{get{//sql执行前//_currentDb.Aop.OnLogExecuting=(sql,pars)=>//{////stringn1=UtilMethods.GetNativeSql(sql,pars);//日志使用......
  • 深入探索MySQL多表查询:连接查询与子查询的艺术
    深入探索MySQL多表查询:连接查询与子查询的艺术在数据库操作中,多表查询是一项常见且重要的任务。无论是为了获取更全面的数据,还是为了实现复杂的业务逻辑,多表查询都是不可或缺的工具。MySQL提供了两种主要的多表查询方式:连接查询和子查询。本文将深入探讨这两种查询方式的规律、优......
  • Windows10安装MySQL8.0.40
    官网地址https://www.mysql.com/环境查看Windows10MySQL8.0.40下载MySQL打开首页-下载-MySQL社区版本下载本次下载Window10的安装版本,其他系统如Linux,Mac可根据需要自行选择需要登录Oracle账号才能下载,如果没有账号则注册一个登录安装双击下载的软件开始......
  • 基于JavaSwing开发问卷调查系统源码(SQLServer数据库) 课程设计 大作业
    ......
  • 28. 使用MySQL之安全管理
    1.访问控制MySQL服务器的安全基础是:用户应该对他们需要的数据具有适当的访问权,既不能多也不能少。换句话说,用户不能对过多的数据具有过多的访问权。考虑以下内容:多数用户只需要对表进行读和写,但少数用户甚至需要能创建和删除表;某些用户需要读表,但可能不需要更新表;你......
  • 【开窗函数】三个SQL题
             本文主要练习一下lag开窗函数的使用!!!一、第一题 建表语句:createtablem1(dtstring,namestring,deptstring,scoreint);insertintom1values('202101','张三','销售',90),('202101','李四......