如果您曾经尝试在大型数据库中定位特定列,那么我相信您会同意这可能是一项艰巨的任务。您可以从information_schema模式中收集有关DB结构的许多信息。它具有所有表和表中所有字段的列表。然后,您可以使用从该表获得的信息来运行查询。涉及的特定表是SCHEMATA、TABLES和COLUMNS。有一些外键,使您可以准确地构建如何在模式中创建表。
但是,执行数据库范围内搜索的更简单方法是使用Navicat Premium。Navicat在Non-Essentials Edition中可用,提供了“在数据库/架构中查找”功能,用于在数据库和/或架构中的表/视图或对象结构中查找数据。在今天的文章中,我们将学习如何使用它。
Navicat Premium是一个数据库开发工具,可让您从单个应用程序同时连接到MySQL,MariaDB,MongoDB,SQL Server,Oracle,PostgreSQL和SQLite数据库。与Amazon RDS,Amazon Aurora,Amazon Redshift,Microsoft Azure,Oracle Cloud,Google Cloud和MongoDB Atlas等云数据库兼容。您可以快速轻松地构建,管理和维护数据库。
定位列
我们首先在数据库中查找一列。我们想在Sakila示例数据库中找到“release_year”列。这是我们的处理方法:
打开在数据库/架构中查找窗口;从菜单栏中选择工具->在数据库/架构中查找。
选择目标连接、数据库或架构。
在“查找内容”文本框中输入搜索字符串。
在“查找范围”下拉列表中选择“结构”项。另一个选择当然是“数据”。
选择“搜索模式”。选项包括包含、全字、前缀或正则表达式。
选中“不区分大小写”框以禁用区分大小写的搜索。
由于我们在“查找范围”下拉列表中选择了“结构”,因此我们现在可以选择搜索不同的对象,包括表、视图、函数、查询或事件。
填写或选中所有字段后,表单应如下所示:
现在,继续并单击“查找”按钮以获取结果。在这种情况下,Navicat将一个表中的“release_year”列匹配:
您可以在“查找结果”列表中双击一个对象以查看记录或结构。它将突出显示:
搜索数据
试图在没有搜索工具的情况下在整个数据库中查找给定值几乎是不值得的。在Navicat中,我们需要做的就是与上述相同的过程,除了现在我们将从“查找”下拉菜单中选择“数据”。
这是从“搜索模式”下拉列表中选择“前缀”的“JOHN”的“查找内容”值的结果:
如您所见,这种更一般的搜索导致更多匹配。
再次双击“查找结果”列表中的对象,将在新选项卡中显示记录:
注意Navicat生成的查询以获取所需结果。
结论
Navicat的“在数据库/架构中查找”工具极大地方便了在整个数据库或架构中查找数据或对象结构。与information_schema模式的替代方案相比,实际上没有竞争。