数据库词典(1-1)---服务器、数据库、模式、表和列

发布:2024-10-14 22:50 阅读:35 点赞:0

介绍:

在本文中,我们将讨论数据库模式的基本元素:服务器、数据库、模式、表和列。我们将讨论如何从 SQL Server 中检索这些信息。

  • A - 简介
  • B——数据源
  • C - 在 SQL Server 中通过 SQL 检索架构信息
    • 通过 SQL 获取服务器(包括链接服务器和远程服务器)
    • 通过 SQL 获取数据库
    • 通过 SQL 获取 Schemata
    • 通过 SQL 获取表
    • 通过 SQL 获取列

 B——数据源

系统数据库中存储的数据库数据:

Resource 数据库是一个只读数据库,其中包含 SQL Server 附带的所有系统对象。SQL Server 系统对象(例如 sys.objects)在物理上持久保存在 Resource 数据库中,但它们在逻辑上出现在每个数据库的 sys 架构中。Resource 数据库不包含用户数据或用户元数据。

Resource 数据库使升级到新版本的 SQL Server 变得更加简单和快捷。在早期版本的 SQL Server 中,升级需要删除和创建系统对象。由于 Resource 数据库文件包含所有系统对象,因此现在只需将单个 Resource 数据库文件复制到本地服务器即可完成升级。

资源数据库位置:

资源版本:

资源最后更新日期时间:

 C - 在 SQL Server 中通过 SQL 检索架构信息

从 SQL 服务器检索以下信息:

  • 服务器
  • 数据库
  • 架构
  • 桌子
  • 柱子

通过 SQL 获取服务器(包括链接服务器和远程服务器)

SELECT * FROM sys.servers

SELECT * FROM sysservers

SELECT * FROM sys.sysservers

每个已注册的链接或远程服务器包含一行,并且包含server_id = 0的本地服务器的一行。  例如

通过 SQL 获取数据库

SELECT * FROM sys.databases

SELECT * FROM sys.sysdatabases

SQL Server 实例中每个数据库包含一行。

笔记

除了获取数据库服务器和数据库之外,所有其他 sys.command 都在数据库中运行:

通过 SQL 获取 Schemata

SELECT * FROM sys.schemas

SELECT COUNT(*) FROM sys.schemas

SELECT * FROM INFORMATION_SCHEMA.SCHEMATA

SELECT COUNT(*) FROM INFORMATION_SCHEMA.SCHEMATA

SELECT *
FROM INFORMATION_SCHEMA.SCHEMATA
WHERE SCHEMA_NAME IN (
						SELECT DISTINCT TABLE_SCHEMA
						FROM INFORMATION_SCHEMA.TABLES
					)

SELECT * FROM sys.schemas
WHERE name IN (
				SELECT TABLE_SCHEMA
				FROM INFORMATION_SCHEMA.TABLES
			   )

例如

通过 SQL 获取表

SELECT table_name
FROM INFORMATION_SCHEMA.TABLES

SELECT name
FROM sys.tables

SELECT name
FROM sysobjects
WHERE xtype = 'U'

SELECT name
FROM sys.objects
WHERE type_desc = 'USER_TABLE'

例如

通过 SQL 获取列

SELECT * FROM sys.columns

SELECT * FROM sys.all_columns

SELECT * FROM INFORMATION_SCHEMA.COLUMNS
 

例如