突然接触庞大的数据库,在没有数据字典的情况下如何快速找到自己想要的字段?

embedded/2024/10/18 12:24:19/

突然接触庞大的数据库,在没有数据字典的情况下如何快速找到自己想要的字段?

  • 背景
  • 问题描述
    • MySQL解决方法
      • 1. 查询字段是否存在于数据库中的某个表中
        • 查询特定字段是否存在于某个数据库中的任意表:
        • 查询特定字段是否存在于某个特定表中:
      • 2. 查询数据库中是否有备注与字段名字类似
        • 查询备注中包含特定字段名字的列:
      • 3. 综合查询字段存在性及备注
        • 综合查询示例:
      • 示例
    • SQLServer解决方法
      • 1. 查询字段是否存在于数据库中的某个表中
        • 查询特定字段是否存在于某个数据库中的任意表:
        • 查询特定字段是否存在于某个特定表中:
      • 2. 查询数据库中是否有备注与字段名字类似
        • 查询备注中包含特定字段名字的列:
      • 3. 综合查询字段存在性及备注
        • 综合查询示例:
      • 示例
    • Oracle解决方法
      • 1. 查询字段是否存在于数据库中的某个表中
        • 查询特定字段是否存在于某个数据库中的任意表:
        • 查询特定字段是否存在于某个特定表中:
      • 2. 查询数据库中是否有备注与字段名字类似
        • 查询备注中包含特定字段名字的列:
      • 3. 综合查询字段存在性及备注
        • 综合查询示例:
      • 示例

背景

在很多公司,尤其是中小型的公司,他们可能并未维护数据字典,当初次接触这个庞大的数据库时,一定会面临找不到自己想要的字段的情况,为工作带来诸多不便。那么我们如何才能在没有数据字典的情况下,快速找到自己想要的字段呢?

答案就是利用数据库中的统计视图,这一类视图不管是在Oracle、MySQL或者SQLServer中都存在,基本大部分结构化数据库,都有这样的视图,它们记录着数据库的很多基础信息,我们利用这些视图,基本可以快速找到自己想要的字段。

问题描述

  • 我知道某个字段的业务含义或者业务命名或者可能的字段名,我该如何找快速找到数据库中对应的表和字段呢?

MySQL解决方法

在MySQL中,您可以使用以下方法来查询某个字段是否存在于数据库中的某个表中,或者查询数据库中是否有备注(注释)与您要查询的字段名字类似。

1. 查询字段是否存在于数据库中的某个表中

您可以查询information_schema数据库中的COLUMNS表来检查字段是否存在于某个表中。

查询特定字段是否存在于某个数据库中的任意表:
SELECT TABLE_NAME, COLUMN_NAME
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'your_database_name' AND COLUMN_NAME = 'your_column_name';
查询特定字段是否存在于某个特定表中:
SELECT TABLE_NAME, COLUMN_NAME
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'your_database_name' AND TABLE_NAME = 'your_table_name' AND COLUMN_NAME = 'your_column_name';

2. 查询数据库中是否有备注与字段名字类似

您可以查询information_schema数据库中的COLUMNS表,检查备注(注释)中是否包含特定的字段名字。

查询备注中包含特定字段名字的列:
SELECT TABLE_NAME, COLUMN_NAME, COLUMN_COMMENT
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'your_database_name' AND COLUMN_COMMENT LIKE '%your_column_name%';

3. 综合查询字段存在性及备注

您可以结合上述查询,检查字段是否存在以及备注是否包含特定字段名字。

综合查询示例:
SELECT TABLE_NAME, COLUMN_NAME, COLUMN_COMMENT
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'your_database_name' AND (COLUMN_NAME = 'your_column_name' OR COLUMN_COMMENT LIKE '%your_column_name%');

示例

假设您要查询数据库my_database中是否存在字段my_field,或者备注中包含my_field的字段,可以使用以下SQL语句:

SELECT TABLE_NAME, COLUMN_NAME, COLUMN_COMMENT
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'my_database' AND (COLUMN_NAME = 'my_field' OR COLUMN_COMMENT LIKE '%my_field%');

通过这些查询,您可以有效地检查数据库中某个字段是否存在,以及备注中是否包含与字段名字类似的信息。根据实际需求进行调整和优化查询语句。

SQLServer解决方法

在SQL Server中,您可以使用系统视图和元数据表来查询某个字段是否存在于数据库中的某个表中,或者查询数据库中是否有备注(注释)与您要查询的字段名字类似。以下是具体的方法:

1. 查询字段是否存在于数据库中的某个表中

您可以查询INFORMATION_SCHEMA.COLUMNS视图来检查字段是否存在于某个表中。

查询特定字段是否存在于某个数据库中的任意表:
SELECT TABLE_NAME, COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_CATALOG = 'your_database_name' AND COLUMN_NAME = 'your_column_name';
查询特定字段是否存在于某个特定表中:
SELECT TABLE_NAME, COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_CATALOG = 'your_database_name' AND TABLE_NAME = 'your_table_name' AND COLUMN_NAME = 'your_column_name';

2. 查询数据库中是否有备注与字段名字类似

您可以查询sys.columns视图和sys.extended_properties视图,检查备注(注释)中是否包含特定的字段名字。

查询备注中包含特定字段名字的列:
SELECT t.name AS table_name,c.name AS column_name,ep.value AS column_comment
FROM sys.tables AS t
INNER JOIN sys.columns AS c ON t.object_id = c.object_id
LEFT JOIN sys.extended_properties AS ep ON t.object_id = ep.major_id AND c.column_id = ep.minor_id
WHERE ep.name = 'MS_Description' AND ep.value LIKE '%your_column_name%'
ORDER BY t.name, c.name;

3. 综合查询字段存在性及备注

您可以结合上述查询,检查字段是否存在以及备注是否包含特定字段名字。

综合查询示例:
SELECT t.name AS table_name,c.name AS column_name,ep.value AS column_comment
FROM sys.tables AS t
INNER JOIN sys.columns AS c ON t.object_id = c.object_id
LEFT JOIN sys.extended_properties AS ep ON t.object_id = ep.major_id AND c.column_id = ep.minor_id
WHERE (c.name = 'your_column_name' OR (ep.name = 'MS_Description' AND ep.value LIKE '%your_column_name%'))
ORDER BY t.name, c.name;

示例

假设您要查询数据库my_database中是否存在字段my_field,或者备注中包含my_field的字段,可以使用以下SQL语句:

USE my_database;SELECT t.name AS table_name,c.name AS column_name,ep.value AS column_comment
FROM sys.tables AS t
INNER JOIN sys.columns AS c ON t.object_id = c.object_id
LEFT JOIN sys.extended_properties AS ep ON t.object_id = ep.major_id AND c.column_id = ep.minor_id
WHERE (c.name = 'my_field' OR (ep.name = 'MS_Description' AND ep.value LIKE '%my_field%'))
ORDER BY t.name, c.name;

通过这些查询,您可以有效地检查数据库中某个字段是否存在,以及备注中是否包含与字段名字类似的信息。根据实际需求进行调整和优化查询语句。

Oracle解决方法

在Oracle数据库中,您可以使用数据字典视图来查询某个字段是否存在于数据库中的某个表中,或者查询数据库中是否有备注(注释)与您要查询的字段名字类似。以下是具体的方法:

1. 查询字段是否存在于数据库中的某个表中

您可以查询ALL_TAB_COLUMNS视图来检查字段是否存在于某个表中。

查询特定字段是否存在于某个数据库中的任意表:
SELECT TABLE_NAME, COLUMN_NAME
FROM ALL_TAB_COLUMNS
WHERE COLUMN_NAME = 'YOUR_COLUMN_NAME';
查询特定字段是否存在于某个特定表中:
SELECT TABLE_NAME, COLUMN_NAME
FROM ALL_TAB_COLUMNS
WHERE TABLE_NAME = 'YOUR_TABLE_NAME' AND COLUMN_NAME = 'YOUR_COLUMN_NAME';

2. 查询数据库中是否有备注与字段名字类似

您可以查询ALL_COL_COMMENTS视图,检查备注(注释)中是否包含特定的字段名字。

查询备注中包含特定字段名字的列:
SELECT TABLE_NAME, COLUMN_NAME, COMMENTS
FROM ALL_COL_COMMENTS
WHERE COMMENTS LIKE '%YOUR_COLUMN_NAME%';

3. 综合查询字段存在性及备注

您可以结合上述查询,检查字段是否存在以及备注是否包含特定字段名字。

综合查询示例:
SELECT c.TABLE_NAME, c.COLUMN_NAME, com.COMMENTS
FROM ALL_TAB_COLUMNS c
LEFT JOIN ALL_COL_COMMENTS com
ON c.TABLE_NAME = com.TABLE_NAME AND c.COLUMN_NAME = com.COLUMN_NAME
WHERE c.COLUMN_NAME = 'YOUR_COLUMN_NAME' OR com.COMMENTS LIKE '%YOUR_COLUMN_NAME%';

示例

假设您要查询数据库中是否存在字段MY_FIELD,或者备注中包含MY_FIELD的字段,可以使用以下SQL语句:

SELECT c.TABLE_NAME, c.COLUMN_NAME, com.COMMENTS
FROM ALL_TAB_COLUMNS c
LEFT JOIN ALL_COL_COMMENTS com
ON c.TABLE_NAME = com.TABLE_NAME AND c.COLUMN_NAME = com.COLUMN_NAME
WHERE c.COLUMN_NAME = 'MY_FIELD' OR com.COMMENTS LIKE '%MY_FIELD%';

通过这些查询,您可以有效地检查数据库中某个字段是否存在,以及备注中是否包含与字段名字类似的信息。根据实际需求进行调整和优化查询语句。


http://www.ppmy.cn/embedded/52579.html

相关文章

打造智能家居:用ESP32轻松实现无线控制与环境监测

ESP32是一款集成了Wi-Fi和蓝牙功能的微控制器,广泛应用于物联网项目。它由Espressif Systems公司开发,具有强大的处理能力和丰富的外设接口。下面我们将详细介绍ESP32的基础功能和引脚功能,并通过具体的实例项目展示其应用。 主要功能 双核处…

【乐吾乐2D可视化组态编辑器】数据通信

External Player - 哔哩哔哩嵌入式外链播放器 乐吾乐2D可视化组态编辑器地址:https://2d.le5le.com/ Meta2d.js支持 mqtt、websocket 和 http 轮询 3 种方式进行实时数据监听。 如果配置过 mqtt 或 websocket 或 http,下次打开时,会自动…

腾讯云点播ugc upload | lack signature 问题处理

我犯一个很傻的错误 参考腾讯云官方文档:云点播 Web 端上传 SDK-开发指南-文档中心-腾讯云 进行开发,但是却报错了,始终找不到问题,错误提示:ugc upload | lack signature,意思是缺少签名或者签名失败&…

【杂记-浅谈FTP文件传输协议】

FTP文件传输协议 一、FTP协议概述二、FTP的安全隐患三、FTP服务器配置问题四、FTP的安全加固方法 一、FTP协议概述 FTP,File Transfer Protocol,即文件传输协议,是一种用于在网络上进行文件传输的标准协议,它允许用户在客户端和服…

人人讲视频如何下载

一、工具准备 1.VLC media player 2.谷歌浏览器 二、视频下载 1.打开人人讲网页,需要下载的视频 谷歌浏览器打开调试窗口 搜索m3u8链接 拷贝到VLCplayer打开网络串流方式打开测试是否能正常播放 2.下载视频 能正常播放后,切换播放为转换选择mp4格式…

通过自定义注解+AOP的处理方式实现权限控制

通过自定义注解AOP切面的方式,可以实现日志记录、权限控制、性能监控、事务管理、缓存管理、异常处理等功能,以下以权限控制为例,介绍一下自定义注解AOP处理方式的使用。 步骤1:定义注解 用于标记需要权限校验的方法 package com.…

6.20作业

1.已知网址www.hqyj.com截取出网址的每一个部分(要求,该网址不能存入文件中) echo www.hqyj.com | cut -d "." -f "1,2,3" 2.整理思维导图 3.将配置桥接网络的过程整理成文档,发csdn i)保证虚拟机提供了桥接模式 菜单…

【Docker】容器

目录 1. 容器启动 2. 容器启动/重启/停止 3. 进入容器 4. 容器查询 5. docker 镜像的构建 方式一:docker 容器 commit 方式二:Dockerfile 定制镜像 1. 容器启动 docker run –it/-d –p/P –name imageID/name 2. 容器启动/重启/停止 docker sta…