对SQL表构造的查询[MSSQL防范]
本文“对SQL表构造的查询[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
假如需求对SQL表构造举行查询,利用存储历程便可以实现,下面就会对该办法举行具体的阐明,但愿对您学习SQL表构造方面有所启迪.
在利用SQL Server的基于客户机/服务器体系构造的信息系统开辟中,有时需求将后台SQL Server上的某一数据库的表构造都打印出来,以便于开辟人员查阅及终究文档的形成.SQL Server本身供应了一个系统存储历程 (SP_COLUMNS),可以完成对单个SQL表构造的查询,只要在SQL Server的ISQL-W工具中键入SP_COLUMNS “表名”,并履行即 可得到后果集.
但该办法有很多不足之处,其主要缺陷是:
1) 只能对单表举行操作,当需求查询一个数据库中全部的表时,需求多次履行SP_COLUMNS ,因此显得非常烦琐.
2) 查询后果集合包含了很多不必要的信息.
下面我们成立一个存储历程来完成对某一个数据库中全部SQL表构造的查询.
在成立一个数据库的同时,系统会自动成立一些系统表,限于篇幅的来由我们在这里只介绍与利用实例有关的三个系统表(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_dbstructureGO
- CREATE PROCEDURE print_dbstructureAS
- 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表构造的查询[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
- ·上一篇文章:SQL删除反复记录的四种方法
- ·下一篇文章:增添带默许值字段的sql语句写法介绍
- ·中查找“对SQL表构造的查询”更多相关内容
- ·中查找“对SQL表构造的查询”更多相关内容