日度归档:2019年10月24日

mssql sqlserver 系统视图syscolumns简介说明


摘要:
下文讲述系统视图syscolumns简介说明,如下所示:
实验环境:sql server 2008 R2


syscolumns系统表功能简介

syscolumns用于存储数据库中 数据表和视图中的列信息,每列占用一行信息,
主要存储 列的内部编号、id、类型、长度、精度等等信息


syscolumns系统表返回列说明

 select * from syscolumns;
  查询以上脚本,将输入一个数据表的结果集,列名功能如下所示:
 
列名

列类型

备注说明
name

sysname

列名或视图列名称
id

int

所属对象Id(如:表ID 视图Id )
xtype

tinyint

与systypes 中的类型关联可得到列的数据类型
typestat

tinyint

内部使用
xusertype

smallint

用户定义数据类型 ID
length

smallint

systypes 中的最大物理存储长度
xprec

tinyint

内部使用
xscale

tinyint

内部使用
colid

smallint

列id
xoffset

smallint

内部使用
bitpos

tinyint

内部使用
reserved

tinyint

内部使用
colstat

smallint

内部使用
cdefault

int

列的默认值 ID
domain

int

列的规则或 CHECK 约束 ID
number

smallint

colorder

smallint

内部使用
autoval

varbinary(255)

内部使用
offset

smallint

列所在行的偏移量;如果为负,表示可变长度行
status

tinyint

用于描述列或参数属性的位图:
0x08 = 列允许空值。
0x10 = 当添加 varchar 或 varbinary列时,ANSI 填充生效。保留 varchar 列的尾随空格,保留 varbinary 列的尾随零。
0x40 = 参数为 OUTPUT 参数。
0x80 = 列为标识列
type

tinyint

systypes 中的物理存储类型
usertype

smallint

systypes 中的用户定义数据类型 ID
printfmt

varchar(255)

内部使用
prec

smallint

列的精度级别,如:(decimal(18,3) 此处值为18)
scale

int

该列的小数位数,如:(decimal(18,3) 此处值为3)
iscomputed

int

如果为1代表此列是计算列 为0代表非计算列
isoutparam

int

表示该过程参数是否是输出参数:
1 = 真
0 = 假
isnullable

int

表示该列是否允许空值:
1 = 真
0 = 假

mssql sqlserver 使用sql脚本删除数据库中“所有数据表”的方法分享


摘要:
下文讲述sqlserver中生成删除“所有数据表”的脚本的方法分享,如下所示:
实验环境:sql server 2008 R2


实现思路:
1.查阅sysobjects系统表,然后拼接出删除数据表的脚本;
2.动态运行拼接后的sql脚本。
注意事项:
请谨慎运行此脚本,运行此脚本前,请备份数据库。

例:

 
  declare @sql varchar(max)
set @sql =''

SELECT @sql=@sql  +'  drop table ' + [name]
FROM sysobjects
WHERE (type = 'U')
ORDER BY   [name]  asc 
    print (@sql)
	---exec(@sql) ---请谨慎运行此脚本 
  

相关阅读:
mssql sqlserver读取指定数据库下所有表名的两种方法分享

mssql sqlserver 使用sql查询”数据表中的字段“是否允许为空的方法分享


摘要:
下文讲述sqlserver中查询数据表中的字段为空(null)的方法分享,如下所示:
实验环境:sql server 2008 R2


实现思路:
通过查询syscolumns中的表属性isnullable

例:

  ---1.查询指定数据表中列是否为空
     select  case  isnullable when 0 then 'not null'
	            when 1 then  'null'
				 else ''
				end  as [是否为空]
			  ,*  from  syscolumns  where  id=object_id('数据表名称')

  ---2.查询指定列是否为空
     select  case  isnullable when 0 then 'not null'
	            when 1 then  'null'
				 else ''
				end  as [是否为空]
				,*  from  syscolumns  where  id=object_id('数据表名称')  and  name='数据列名称'
 

mssql_sqlserver_字段是否为空的查询

mssql_sqlserver_字段是否为空的查询


MSSQL server 如何查询一个表所有的列
mssql sqlserver 系统视图syscolumns简介说明