什么是SQL Server数据字典?
目录
什么是数据字典?
SQL Server如何使用数据字典
数据字典的其他用途
INFORMATION_SCHEMA视图
使用INFORMATION_SCHEMA视图的示例
列出包含指定列的所有表
列出数据库中的所有表
列出每个模式中的表数
SQL Server目录(Catalog)视图
使用目录(Catalog)视图的示例
列出数据库中的所有表
列出每个模式中的表数
什么是数据字典?
在SQL Server中,数据字典是一组数据库表,用于存储有关数据库定义的信息。该字典包含有关数据库对象的信息,例如表,索引,列,数据类型和视图。
SQL Server使用数据字典来执行查询,并在数据库中添加,删除或更改对象时自动更新。
本文的所有示例都基于Microsoft SQL Server Management Studio和AdventureWorks2012数据库。
SQL Server如何使用数据字典
SQL Server使用数据库字典来验证SQL语句。执行SQL语句时,DBMS(数据库管理系统)会解析该语句,然后确定您引用的表和字段是否有效。要快速执行此操作,它将引用数据字典。
除了测试语句的有效性之外,SQL Server还使用数据字典来协助生成查询计划,并引用定义数据库结构的信息。
数据字典本身就成为SQL Server用于访问数据的指南。简单地说,没有数据字典,虽然SQL Server会知道并理解SQL语言,但它不会知道您的数据库表和列;因此,它无法查询它们。
数据字典的其他用途
由于数据字典包含数据库的定义,因此您可以使用它来获取有关数据库的信息。真正酷的是数据字典由SQL表和视图组成。这意味着,您可以通过查询获取有关数据库的信息!
设计人员和开发人员使用数据字典来理解数据库的结构。您可以将字典视为最新的参考文档。
SQL Server Management Studio等设计工具使用数据字典通过对象资源管理器显示有关数据库的信息。
SQL Server Management Studio对象资源管理器
上面列出的表格并不神奇,而是对象资源管理器向数据字典发出查询以检索所有用户表。
数据字典存储在一系列系统表中。虽然您可以直接查询这些表,但Microsoft保留修改组成数据字典的系统表的权利。因此,他们建议您查询INFORMATION_SCHEMA视图而不是直接访问表。
由于您可以自己查询数据字典,因此您可以回答一些问题,否则这些问题需要通过对象资源管理器进行大量搜索和确定。例如,如何使用BusinessEntityID列轻松找到所有表和视图?如果没有数据字典,您将不得不使用对象资源管理器并打开每个表和视图,并查看列的定义。但是,使用数据字典可以使用简单查询来完成。
INFORMATION_SCHEMA视图
SQL Server中包含的INFORMATION_SCHEMA视图符合SQL-92 ISO标准。这意味着符合ISO标准的其他数据库供应商将提供相同的视图集。
以下是一些更常用的视图及其描述:
- COLUMNS——为当前用户有权在当前数据库中使用的每列返回一行。此视图可用于确定列定义使用的数据类型和表。
- TABLES——为用户有权在当前数据库中使用的每个表返回一行。注意,使用TABLES视图返回表和视图。
- VIEW_TABLE_USAGE——为当前数据库中的视图中使用的每个表返回一行。
- VIEWS——为可以使用当前数据库中当前用户的权限访问的视图返回一行。
使用INFORMATION_SCHEMA视图的示例
列出包含指定列的所有表
您可以使用INFORMATION_SCHEMA.COLUMNS视图执行此操作。例如,以下列出了所有包含列BusinessEntityID的表和视图
SELECT TABLE_NAME
FROM AdventureWorks2012_Data.INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME = 'BusinessEntityID'
你可以想象数据字典可以派上用场!你能想象必须手工搜索每个定义才能找到数据库中某个字段的所有匹配项吗?
列出数据库中的所有表
使用INFORMATION_SCHEMA.TABLES视图执行此操作。
SELECT TABLE_NAME, TABLE_TYPE
FROM AdventureWorks2012_Data.INFORMATION_SCHEMA.TABLES
ORDER BY TABLE_NAME
此查询返回基表和视图。
列出每个模式中的表数
在此示例中,列出了每个模式以及在其中定义的表和视图的数量:
SELECT TABLE_SCHEMA, Count(TABLE_SCHEMA)
FROM AdventureWorks2012_Data.INFORMATION_SCHEMA.TABLES
GROUP BY TABLE_SCHEMA
SQL Server目录(Catalog)视图
目录视图是另一种方式,以查看数据字典。如果觉得对象目录视图提供了更多信息,我倾向于在视图上使用INFORMATION_SCHEMA视图。
我发现最有用的一些视图包括:
- objects——包含每个对象的行,例如数据库中定义的FOREIGN KEY或PRIMARY KEY约束。
- columns——包含对象(如视图或表)的每列的行。
- tables——为每个表对象返回一行
使用目录(Catalog)视图的示例
以下示例使用Microsoft SQL Server目录视图来获取上面使用INFORMATION_SCHEMA的相同信息。
列出包含指定列的所有表
为了使用特定列获取表的名称,必须同时使用sys.tables和sys.columns视图。它们通过object_id连接,用于标识公共数据库对象,例如表和视图。
SELECT t.name,t.type_desc
FROM AdventureWorks2012_Data.sys.columns AS c
INNER JOIN sys.tables AS tON c.object_id = t.object_id
WHERE c.name = 'BusinessEntityID'
列出数据库中的所有表
sys.tables视图可用于获取数据库中定义的所有表的名称。此视图返回基表和视图。
SELECT name,type_desc
FROM AdventureWorks2012_Data.sys.tables
ORDER BY Name
列出每个模式中的表数
sys.tables视图不包含模式名称,因此使用内置函数SCHEMA_NAME来获取它。
SELECT SCHEMA_NAME(schema_id),count(name)
FROM AdventureWorks2012_Data.sys.tables
GROUP BY SCHEMA_NAME(schema_id)
正如你可以看到的那样,它比使用INFORMATION_SCHEMA更具技术性。但是,我从经验中说,目录视图中包含更多信息。如果您对数据库的结构有特定问题,那么这些是要触及的表。
什么是SQL Server数据字典?相关推荐
- 什么是SQL Server数据字典?为什么要创建一个?
数据库 (A database) A SQL Server database can be thought of, in and of itself, as a data dictionary. It ...
- db2 删除存储过程_数据库教程-SQL Server存储过程使用及异常处理
SQL Server存储过程 存储过程(Procedure)是数据库重要对象之一,也是数据库学习的重点之一.本文,我们以SQL Server为例对存储过程的概念.定义.调用.删除及存储过程调用异常等通 ...
- SQL基础操作_3_数据字典(涵盖SQL Server、Oracle、Mysql常见系统数据字典)
目录 数据库元数据查询 7.5.1 列出模式中所有的表 7.5.2 列出所有的数据库 7.5.3 列出给定表的基本信息 7.5.4 列出给定表的索引信息 7.5.5 列出给定表的主键.外键约束 7.5 ...
- SQL Server中的数据字典
数据字典是记录了数据库的系统描述信息的表和视图的集合,分为两类 系统自带:DBMS自带的,用于统计数据库中的相应信息.在SQL Server 数据库中的sys*表,里面记录着系统字段的定义.索引.完整 ...
- html 自动生产,【SQL】用Sql Server自动生产html格式的数据字典
本文软件环境:Sql Server 2008. 1.打开sql server管理器,给选定的表添加描述信息,给指定的字段添加描述信息. 直接在表上或者字段上右键属性-扩展属性,添加一个key-valu ...
- SQL Server中常用的SQL语句
1.概述 2.查询概述 3.单表查询 4.连接查询 5.带有exists的相关子查询 6.SQL的集合操作 7.插入操作 8.删除操作 9.修改操作 10.数据定义 11.视图 1.概述 名词 笛卡尔 ...
- SQL SERVER 自带系统存储过程分类
目录存储过程 用于实现 ODBC 数据字典功能,并隔离 ODBC 应用程序以使其不受基础系统表更改的影响. 变更数据捕获存储过程 用于启用.禁用.或报告变更数据捕获对象. 游标存储过程 用于实现游标变 ...
- Oracle临时表和SQL Server临时表的不同点对比
文章来源:http://www.codesky.net/article/201109/141401.html 1.简介 Oracle数据库除了可以保存永久表外,还可以建立临时表temporary ta ...
- SQL Server 2008 复习(一)
导入 有关数据库系统的基本概念 1.信息与数据: 数据(Data)是描述事物的符号记录,数据的表现形式,可以是文本.图表.图形.图像.声音.语言.视频等. 信息(Information)是具有特定意义 ...
- SQL SERVER学习笔记(二)数据库管理
第二部分:数据库管理 单词记忆:transact:处理 create:创建 execute:执行.完成 一. SQL Server的特性 1. 安装简便:为了便于安装.使用和管理,SQL Se ...
最新文章
- 【c语言】符号常量的使用
- 【Java】 5.6 类的继承
- 详解 Linux环境中DHCP分配IP地址(实验详解)
- SVC调参总结+调参实例
- mysql端口被占用_MySQL重启端口被占用处理
- linux那些事之page fault(AMD64架构)(user space)(2)
- 甲骨文就 Java 安全问题与 FTC 达成和解
- 字典的增删改查 daty 5
- Flex控制对主机网页中脚本的访问
- asp.net web开发步骤_如何在Windows上做Python开发?微软出了官方教程
- 单机手机消消乐php游戏源码,JS叠房子消消乐小游戏代码
- python 分词器使用
- CDR插件开发之Addon插件006 - 初体验:通过C#代码用外挂方式操作CDR中的对象
- pragma HLS interface 端口综合
- Net分布式系统之五:C#使用Redis集群缓存
- 规则引擎Drools示例:个人所得税计算器、信用卡申请、保险产品准入规则
- 第五章:数学运算-fractions:有理数-创建Fraction实例
- 让树莓派开机发送自己的ip到邮箱
- Ryu 安装过程中的问题
- Excel 2013 VlookUp函数使用
热门文章
- 国际标准书号 ISBN API 数据接口
- arcgis语言如何中文改英文_ArcGIS的概述及中英文切换——附GIS名词解释大全(一)...
- python 复选框_每日一练:Python复选框的运用
- 大数据的核心价值是什么?
- win10计算机更新后网络卡,win10更新后很卡怎么办
- 游戏开发一般使用什么语言编写
- [含lw+源码等]微信小程序在线考试管理系统+后台管理系统[包运行成功]
- PS新手,常用的几种技巧干货,值得收藏!
- 使用Fiddler修改百度的Logo
- LaTeX之非英语字母输入