SELECT DISTINCT sysobjects.name, syscolumns.colid,syscolumns.name, systypes.name, syscolumns.prec, syscolumns.scale
FROM syscolumns, sysobjects, systypes
WHERE sysobjects.id = syscolumns.id AND systypes.type = syscolumns.type AND ((sysobjects.type='u'))
在应用SQL Server的基于客户机/服务器体系结构的信息系统开发中,
有时需 要将后台SQL Server上的某一数据库的表结构都打印出来,
以便于开发人员查阅及最终文档的形成。SQL Server本身提供了一个系统存储过程 (SP_COLUMNS),
可以完成对单个表结构的查询,只要在SQL Server的ISQL-W工具中键入SP_COLUMNS “表名”,
并执行即 可得到结果集。但该方法有许多不足之处,其主要缺点是:
1) 只能对单表进行操作,当需要查询一个数据库中所有的表时,需要多次执行SP_COLUMNS ,因此显得非常繁琐。
2) 查询结果集中包含了许多不必要的信息。
下面我们创建一个存储过程来完成对某一个数据库中所有表结构的查询。
在创建一个数据库的同时,系统会自动建立一些系统表,限于篇幅的缘故我们在这里只介绍与应用实例有关的三个系统表(SYSOBJECTS,SYSCOLUMNS,SYSTYPES)及其相关的字段。
表SYSOBJECTS为数据库内创建的每个对象(约束,规则,表,视图,触发器等)创建一条记录。
该表相关字段的含义如下:
SYSOBJECTS.name 对象名,如:表名,视图名。
SYSOBJECTS.id 对象id。
SYSOBJECTS.type 对象类型(p存储过程,v视图,s系统表,u用户表)。
表SYSCOLUMNS 为每个表、视图中的每个列和每个存储过程的每个参数创建一条记录。
该表相关字段的含义如下:(此处的列系指数据库中每个表、视图中的列)
SYSCOLUMNS. id 该列所属的表的id,可与SYSOBJECTS.id相关联
SYSCOLUMNS.colid 列id,表示该列是表或视图的第几列。
SYSCOLUMNS.type 物理存储类型,可与SYSTYPES.type相关联。
SYSCOLUMNS.length 数据的物理长度。
SYSCOLUMNS.name 列名字,即字段名。
SYSCOLUMNS .Pre 列的精度级。
SYSCOLUMNS .Scale 列的标度级。
表SYSTYPES 为每个系统和每个用户提供的数据类型创建一条记录,如果它们存在,给定域和默认值,描述系统提供的数据类型的行不可更改。
该表相关字段的含义如下:
SYSTYPES.name 数据类型的名字。
SYSTYPES.type 物理存储数据类型。
在SQL SERVER的企业管理器(SQL ENTERPRISE MANAGER)中,选定某一数据库,创建存储过程print_dbstructure。
源代码如下:
if exists (select * from sysobjects where id = object_id('dbo. print_dbstructure
') and sysstat & 0xf = 4) 存储过程
drop procedure dbo. print_dbstructure
GO
CREATE PROCEDURE print_dbstructure
AS
SELECT DISTINCT sysobjects.name, syscolumns.colid,
syscolumns.name, systypes.name, syscolumns.prec, syscolumns.scale
FROM syscolumns, sysobjects, systypes
WHERE sysobjects.id = syscolumns.id AND systypes.type = syscolumns.type AND ((sysobjects.type='u'))
GO
首先判断是否存在一个名为print_dbstructure的存储过程,如果存在,就摘除它,否则,定义SQL语句建立新的存储过程。从三个系统表中选出满足条件的记录(即该数据库中保存在系统表中的用户表信息)。
执行时,在ISQL_W工具中,选定print_dbstructure所在的数据库,执行该存储过程,即可得到结果集(即该数据库中用户表的结构信息)。
SQL Server系统表的推广应用
以上所介绍存储过程的主要缺陷在于只能对服务器上某一特定的数据库(print_dbstructure所在的数据库)进行查询操作,
我们可以通过在SQL Server系统数据库MASTER中建立带有数据库名参数的系统存储过程来解决这一问题
分享到:
相关推荐
本教程将详细解释如何在SQL Server中设置和管理自动增长字段。 首先,我们需要理解自动增长字段的基本概念。在SQL Server中,每个表都可以有一个或多个自动增长字段,它们的值会随着新记录的插入而自动递增。这个...
在SQL Server中,有时我们需要找出特定值存在于哪个表的哪个字段中。这通常发生在数据维护、数据分析或数据迁移等场景中,特别是当数据库中有大量表时,手动检查变得非常困难且耗时。本文将详细介绍如何使用SQL ...
在SQL Server中,日期型字段设默认值是一个重要的功能,它允许数据库管理员或开发者为特定的日期字段设定一个默认的时间点,通常是当前时间或者基于当前时间的某个偏移量。这在创建新记录时非常有用,可以自动填充...
3. **注释迁移**:在SQL Server中的表注释和字段注释,通常存储在系统视图中。C#代码需要查询这些视图获取注释信息,并在Oracle中使用`COMMENT ON TABLE`和`COMMENT ON COLUMN`语句添加注释。 4. **界面操作**:...
Sql Server 删除所有表数据语句 ...使用 Sql Server 删除所有表数据语句可以快速地删除当前数据库中的所有表数据,而保持表结构不变。同时,我们也可以使用排序规则来确定数据如何排序、比较和存储。
在使用SQL Server数据库时,获取数据库中表的数量和字段的数量是基本的管理和监控任务。本文将详细介绍如何通过SQL脚本来统计SQL Server数据库中表的总数和每个表的字段数。 首先,我们需要了解在SQL Server中用于...
### SQL Server中实现字段值自动增长且连续的关键知识点 #### 引言 在数据库管理中,确保特定字段的值能够自动增长且保持连续性对于数据的有序性和完整性至关重要。SQL Server提供了多种方法来实现这一需求,包括...
本操作文档将详细介绍如何使用Navicat客户端工具将SQL Server的表结构转换到MySQL数据库中。Navicat是一款强大的数据库管理工具,支持多种数据库系统,包括SQL Server和MySQL,使得数据迁移变得简单而高效。 首先,...
除了以上步骤,了解SQL Server数据库的设计原则和最佳实践也很重要,比如字段的数据类型选择、索引策略、约束定义等。同时,考虑到数据库的可扩展性和维护性,应谨慎处理动态增加字段的操作,避免频繁修改数据库结构...
它提供了一种直观的用户界面,使得数据库的管理和操作变得简单易行,不仅限于查看表,还包括了创建新的字段等功能。以下是对这款工具及其相关知识点的详细说明: 1. SQL基础:SQL(Structured Query Language)是...
下面将详细介绍一些重要的SQL Server系统表及其关键字段。 1. **sys.objects**:此表列出了数据库中的所有对象,包括表、视图、存储过程、函数等。关键字段有`object_id`(对象的唯一标识符)、`name`(对象名)、`...
在SQL Server中,管理和操作数据库对象是数据库管理员和开发人员日常工作中不可或缺的一部分。有时,我们需要判断特定的表名或字段名是否存在于数据库中,以便进行相应的操作,例如创建、修改或删除。SQL Server提供...
压缩包中的"SQL Server 2000系统表地图.chm"很可能是一个帮助文件,它详细地解释了每个系统表的字段含义和用途。通常,这种文档会包含如何查询这些表以获取特定信息的例子,以及如何使用这些信息来解决实际问题。...
在SQL Server中,表结构的定义包括列、约束、存储过程等元素。通过一键生成工具,这些信息可以被整合到一个统一的文档中,方便团队成员理解和维护数据库结构。 MySQL则是一款开源、免费的数据库系统,被广泛应用在...
本文将通过一个SQL查询语句来详细解析如何导出SQL Server 2005中表的字段信息。 #### SQL 查询语句分析 以下为SQL查询语句的核心部分: ```sql SELECT (CASE WHEN a.colorder = 1 THEN d.name ELSE '' END), a....
在SQL Server中,读取XML文件并对其进行处理是数据库管理员和开发者经常遇到的任务。XML作为一种通用的数据交换格式,被广泛用于存储和传输结构化数据。然而,在SQL Server 2000中,处理XML文件并不像导出数据那样...
本篇文章将深入探讨“SQL Server数据库表生成实体类生成工具”,以及与之相关的C#编程、SQLServer和实体类等主题。 首先,SQL Server是Microsoft推出的一种关系型数据库管理系统,广泛应用于企业级数据存储和处理。...
支持所有SQLServer数据类型,一键导出。 由于时间有限,现只能实现字段和主键的导出, 外键及其他约束不能导出,需另行处理,请知悉。 导出效果: USE [MyTest] GO CREATE TABLE [dbo].[tbl_Vendor] ( [VendorID] ...
同时,前缀命名规则的使用可以帮助区分不同表中相同功能的字段,比如在多个表中使用"Cus"作为客户信息字段的前缀,既统一了命名规则,也增强了字段的可读性。 合理使用额外字段,如“最近更新日期/时间”字段,可以...
在SQL Server中,字段类型(或数据类型)是定义数据库中每列数据特性的关键元素。这些类型决定了数据可以存储的格式、范围以及占用的空间。以下是SQL Server支持的主要字段类型,以及它们各自的描述: 1. **bit**: ...