sql2008 查看字段 添加字段

来源:互联网 发布:java weka bp神经网络 编辑:程序博客网 时间:2024/05/20 13:10

Sql2008查看字段

1---------------------------------

SELECT COLUMN_NAME,DATA_TYPE FROM INFORMATION_SCHEMA.columns WHERE TABLE_NAME= 'usr'

2---------------------------------

要从系统表中查询了。
select a.name as [column],b.name as type
from syscolumns a,systypes b
where a.id=object_id('表名') and a.xtype=b.xtype
把“表名”替换成你要查看字段类型的表名,比如你要查看sysobjects表的各字段类型那么就是
select a.name as [column],b.name as type
from syscolumns a,systypes b
where a.id=object_id('sysobjects') and a.xtype=b.xtype
另外可以通过存储过程
exec sp_help 表名
来查看表各字段的信息,其中就包括字段类型。

 

3---------------------------------

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 ENTERPRISEMANAGER)中,选定某一数据库,创建存储过程print_dbstructure。
  源代码如下:
  if exists(select * from sysobjects where id = object_id('dbo. print_dbstructure
  ') and sysstat& 0xf = 4) 存储过程
  drop proceduredbo. print_dbstructure
  
  GO
  CREATE PROCEDUREprint_dbstructure
  
  AS
  SELECT DISTINCTsysobjects.name, syscolumns.colid,
  syscolumns.name,systypes.name, syscolumns.prec, syscolumns.scale
  FROM syscolumns,sysobjects, systypes
  WHEREsysobjects.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中建立带有数据库名参数的系统存储过程来解决这一问题

 

4---------------------------------

查看并导出SQLServer2000数据表中字段的注释信息的语法(完整)

2008年03月19日 星期三 上午 10:20

导出某个表注释的语句:(示例的表名为:bbs_bank_log)

SELECT sysobjects.name AS表名, syscolumns.name AS 列名, 
      systypes.name AS 数据类型, syscolumns.length AS 数据长度,CONVERT(char, 
      sysproperties.[value]) AS 注释
FROM sysproperties RIGHT OUTER JOIN
      sysobjects INNER JOIN
      syscolumns ON sysobjects.id = syscolumns.idINNER JOIN
      systypes ON syscolumns.xtype = systypes.xtype ON 
      sysproperties.id = syscolumns.id AND 
      sysproperties.smallid = syscolumns.colid
WHERE (sysobjects.xtype = 'u' OR
       sysobjects.xtype = 'v') AND (systypes.name<> 'sysname')
--    and CONVERT(char,sysproperties.[value]) <> 'null' --导出注释不为'null'的记录
--     AND (sysobjects.name ='bbs_bank_log')     --逐个关联表名,可以用or连接条件
ORDER BY 表名

特别说明:


--以上语句是导出某个表的所有注释,如果要简单的列出表的所有注释,那么语句如下:
SELECT CONVERT(char, [value]) AS Expr1
FROM sysproperties


-- sysobjects为系统对象表,syscolumns为系统字段信息表,systypes为系统类型表
-- 通过字段的ID和sysproperties(系统注释属性表)关联,就可以读出注释信息



添加,刪除字段

如果要在数据表中添加一个字段,应该如何表示呢?下面就为您介绍表添加字段的SQL语句的写法,希望可以让您对SQL语句有更深的认识。

通用式:alter table [表名] add [字段名] 字段属性 default 缺省值 default 是可选参数
增加字段: alter table [表名] add 字段名 smallint default 0 增加数字字段,整型,缺省值为0 
alter table [表名] add 字段名 intdefault 0 增加数字字段,长整型,缺省值为0
alter table [表名] add 字段名 singledefault 0 增加数字字段,单精度型,缺省值为0 
alter table [表名] add 字段名 doubledefault 0 增加数字字段,双精度型,缺省值为0
alter table [表名] add 字段名Tinyint default 0 增加数字字段,字节型,缺省值为0

alter table[表名] add 字段名 text [null] 增加备注型字段,[null]可选参数
alter table [表名] add 字段名 memo[null] 增加备注型字段,[null]可选参数

alter table[表名] add 字段名 varchar(N) [null] 增加变长文本型字段大小 为N(1~255)
alter table [表名] add 字段名 char[null] 增加定长文本型字段 大小固定为255

alter table[表名] add 字段名 Datetime default 函数 增加日期型字段,其中函数 可以是 now(),date()等,表示缺省值
(上面都是最常用的,还有其他的属性,可以参考下面的数据类型描述)

删除字段:alter table [表名] drop 字段名

修改变长文本型字段的大小:alter table [表名] alter 字段名 varchar(N)

删除表:drop table [表名]

创建表:
sql="CREATE TABLE [表名] ([字段1,并设置为主键] int IDENTITY (1, 1) NOT NULLCONSTRAINT PrimaryKey PRIMARY KEY,"&_
"[字段2] varchar(50),"&_
"[字段3] single default 0,"&_
"[字段4] varchar(100) null,"&_
"[字段5] smallint default 0,"&_
"[字段6] int default 0,"&_
"[字段7] date default date(),"&_
"[字段8] int default 1)"
conn.execute sql

有null 的表示字段允许零长