调整SQLServer2000运行中数据库结构

开发过程中的数据库结构结构,不可避免的会需要反复的修改。最麻烦的情况莫过于开发者数据库结构已经修改,而实际应用中数据库又有大量数据,如何在不影响 数据库中数据情况下,更新数据结构呢?当然,我们可以手工对应用数据库表结构各个添加、更正、删除的字段一一调整,这对一两个字段来说,是比较简单的,如 果改动比较大的时候,这个过程将是非常繁琐的。本文意在介绍使用SQLServer2000 T-SQL语句进行数据库结构调整,希望能够给各位带来些方便。下面以现有数据库表HR_User为例,讲解如何进行这类操作。

HR_User现有结构:

[UserId] [int] NOT NULL ,用户Id,主键
[UserName] [varchar] (50) NOT NULL ,用户姓名

一、数据库添加新字段

现在,需要在HR_User中添加字段用户昵称[NickName] [varchar] (50) 不为空,出生日期[Birthday] [datetime] 不为空。
在开发数据库中我们已经添加了这两个字段,在查询分析器或者企业管理器中生成新表的构造语句如下:

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[HR_User]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[HR_User]
GO
CREATE TABLE [dbo].[HR_User] (
[UserId] [int] NOT NULL ,
[UserName] [varchar] (50) COLLATE Chinese_PRC_CS_AS NOT NULL ,
[NickName] [varchar] (50) COLLATE Chinese_PRC_CS_AS NOT NULL ,
[Birthday] [datetime] NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[HR_User] ADD
CONSTRAINT [DF_HR_User_UserId] DEFAULT (0) FOR [UserId],
CONSTRAINT [DF_HR_User_UserName] DEFAULT ('') FOR [UserName],
CONSTRAINT [DF_HR_User_NickName] DEFAULT ('') FOR [NickName],
CONSTRAINT [DF_HR_User_Birthday] DEFAULT (getdate()) FOR [Birthday],
CONSTRAINT [PK_HR_User] PRIMARY KEY CLUSTERED
(
[UserId]
) ON [PRIMARY]
GO
exec sp_addextendedproperty N'MS_Description', N'出生日期', N'user', N'dbo', N'table', N'HR_User', N'column', N'Birthday'
GO
exec sp_addextendedproperty N'MS_Description', N'用户昵称', N'user', N'dbo', N'table', N'HR_User', N'column', N'NickName'
GO
exec sp_addextendedproperty N'MS_Description', N'用户Id', N'user', N'dbo', N'table', N'HR_User', N'column', N'UserId'

这时候,我们来构建应用数据库的修改语句,T-SQL修改表结构添加新字段语法为Alter TABLE TableName Add,这样我们要添加两个字段就应该这样写:

Alter TABLE [dbo].[HR_User] Add
 [NickName] [varchar] (50) COLLATE Chinese_PRC_CS_AS NOT NULL DEFAULT(''),
 [Birthday] [datetime] NOT NULL DEFAULT(getdate())
GO

其实中间的语句只是简单的拷贝创建语句中对应两个字段的两句。再加上两句添加描述的语句,就大功告成。

exec sp_addextendedproperty N'MS_Description', N'出生日期', N'user', N'dbo', N'table', N'HR_User', N'column', N'Birthday'
GO
exec sp_addextendedproperty N'MS_Description', N'用户昵称', N'user', N'dbo', N'table', N'HR_User', N'column', N'NickName'
GO

二、数据库修改字段
 现在我们发现UserName、NickName字段长度不够,需要修改为100

Alter Table [HR_User] Alter
 Column [UserName] [varchar] (100) COLLATE Chinese_PRC_CS_AS NOT NULL
GO

Alter Table [HR_User] Alter
 Column [NickName] [varchar] (100) COLLATE Chinese_PRC_CS_AS NOT NULL
GO
(0)

相关推荐

  • SQLSERVER的非聚集索引结构深度理解

    我们知道SQLSERVER的数据行的存储有两种数据结构:A: 堆   B :B树(binary 二叉树) 数据按照这种两种的其中一种来排序和存储,学过数据结构的朋友应该知道二叉树,为什麽用二叉树,因为方便用二分查找法来快速 找到数据.如果是堆,那么数据是不按照任何顺序排序的,也没有任何结构,数据页面也不是首尾相连的,不像B树,数据页面 使用双向链表首尾相连.堆表只依靠表里的IAM页(索引分配映射页)将堆的页面联系在一起,IAM里记录了页面编号,页面位置 除非表里有聚集索引,如果没有的话那么表里的

  • 如何获取SqlServer2005表结构(字段,主键,外键,递增,描述)

    1.获取表的基本字段属性 复制代码 代码如下: --获取SqlServer中表结构 SELECT syscolumns.name,systypes.name,syscolumns.isnullable,syscolumns.length FROM syscolumns, systypes WHERE syscolumns.xusertype = systypes.xusertype AND syscolumns.id = object_id('你的表名') 运行效果 2.如果还想要获取字段的描述

  • 使用SQLSERVER 2005/2008 递归CTE查询树型结构的方法

    下面是一个简单的Family Tree 示例: 复制代码 代码如下: DECLARE @TT TABLE (ID int,Relation varchar(25),Name varchar(25),ParentID int) INSERT @TT SELECT 1,' Great GrandFather' , 'Thomas Bishop', null UNION ALL SELECT 2,'Grand Mom', 'Elian Thomas Wilson' , 1 UNION ALL SELE

  • 还原sqlserver2008 媒体的簇的结构不正确的解决方法

    今天在本地数据库上还原一个数据库(WINDOWS方式进入,当时不知道关闭了SQLSERVER身份验证),无论怎么还原,都会出现错误:媒体的簇的结构不正确 方法,在百度上搜索不到解决方法. 最后我启用了windows和server综合验证,并且启用了SA,重新启动SQLSERVER2008,用SQLSERVER身份验证登录,然后还原数据库,结果是成功还原.

  • sqlserver 2008手工修改表结构,表不能保存的问题与解决方法

    如果点击"保存文本文件"将会弹出保存文本文件的对话框口, 保存的文本文件中的内容是如下: /*    2010年4月5日0:34:53    用户:    服务器: LONGGEL    数据库: longgel    应用程序: */ ChildCaiClass 保存的对于我来说简直是没用的信息,只是记录了事务的发生时间和一些相关信息,结果这样操作了数据库的结构还是没能修改并保存,而是继续弹出上面的那个窗口,这下我就郁闷了. 点击"取消"却弹出 同样也是没有完成表

  • 调整SQLServer2000运行中数据库结构

    开发过程中的数据库结构结构,不可避免的会需要反复的修改.最麻烦的情况莫过于开发者数据库结构已经修改,而实际应用中数据库又有大量数据,如何在不影响 数据库中数据情况下,更新数据结构呢?当然,我们可以手工对应用数据库表结构各个添加.更正.删除的字段一一调整,这对一两个字段来说,是比较简单的,如 果改动比较大的时候,这个过程将是非常繁琐的.本文意在介绍使用SQLServer2000 T-SQL语句进行数据库结构调整,希望能够给各位带来些方便.下面以现有数据库表HR_User为例,讲解如何进行这类操作.

  • Ruby on Rails中MVC结构的数据传递解析

    如果读者已经开发过基于 Rails 的应用,但对其 MVC 间的数据传递还有诸多困惑,那么恭喜您,本文正是要总结梳理 Rails 数据传递的方法和技巧.Ruby on Rails 3(以下统称为 Rails 3)是当前的主要发布版本,本文所述及的内容和代码都基于此版本. Rails 3 简介 Ruby on Rails 是一个 Ruby 实现.采用 MVC 模式的开源 Web 应用开发框架,能够提供 Web 应用的全套解决方案.它的"习惯约定优于配置"的设计哲理,使得 Web 开发人员

  • MySQL数据库结构和数据的导出和导入

    正在看的db2教程是:MySQL数据库结构和数据的导出和导入. 导出要用到MySQL的mysqldump工具,基本用法是: shell> mysqldump [OPTIONS] database [tables] 如果你不给定任何表,整个数据库将被导出. 通过执行mysqldump --help,你能得到你mysqldump的版本支持的选项表. 注意,如果你运行mysqldump没有--quick或--opt选项,mysqldump将在导出结果前装载整个结果集到内存中,如果你正在导出一个大的数据

  • 浅谈Go语言中的结构体struct & 接口Interface & 反射

    结构体struct struct 用来自定义复杂数据结构,可以包含多个字段(属性),可以嵌套: go中的struct类型理解为类,可以定义方法,和函数定义有些许区别: struct类型是值类型. struct定义 type User struct { Name string Age int32 mess string } var user User var user1 *User = &User{} var user2 *User = new(User) struct使用 下面示例中user1和

  • Sql Server 和 Access 操作数据库结构Sql语句小结

    下面是Sql Server 和 Access 操作数据库结构的常用Sql,希望对你有所帮助.内容由海娃整理,不正确与不完整之处还请提出,谢谢. 新建表:create table [表名]([自动编号字段] int IDENTITY (1,1) PRIMARY KEY ,[字段1] nVarChar(50) default '默认值' null ,[字段2] ntext null ,[字段3] datetime,[字段4] money null ,[字段5] int default 0,[字段6]

  • ASP网站中数据库被挂木马的解决方案

    本文我们详细介绍了ASP数据库被挂木马的详细解决方案之编程处理的方法,解决方案分为以下三步: 第一步: 为现有数据库做好备份. 第二步: 执行如下ASP文件,这样就可以去掉数据库当中的JS木马: 注:conn.asp自己去写了. '这里放入JS木马内容:请记得改为自己数据库中的JS木马内容. <!--#include file="conn.asp"--> <% Server.ScriptTimeOut=180 Set rstSchema = conn.OpenSche

  • ASP开发中数据库文件调用的捷径

    引言  本文针对ASP程序设计中最基础.也是最关键的部分"数据库文件的调用"进行说明,同时谈谈ASP程序设计中数据库文件调用的一些技巧. ASP简介 ASP(Active Server Pages)是微软于1996年推出的Web应用程序开发技术,它是一种脚本语言.ActiveX组件及HTML语言等的综合,微软把它描述为"一个服务器的脚本环境,在这里可以生成和运行动态的.交互的.高性能的Web服务器应用程序".其主要功能是为生成动态的.交互式的Web服务器应用程序提供

  • C语言中的结构体的入门学习教程

    C语言中数组允许定义类型的变量,可容纳相同类型的多个数据项,但结构体在C语言编程中,它允许定义不同种类的数据项可供其他用户定义的数据类型. 结构是用来代表一个记录,假设要跟踪图书馆的书籍.可能要跟踪有关每本书以下属性: Title - 标题 Author - 作者 Subject - 科目 Book ID - 编号 定义结构体 定义一个结构体,必须使用结构体的struct语句.该struct语句定义了一个新的数据类型,程序不止一个成员.struct语句的格式是这样的: struct [struc

  • Django更新models数据库结构步骤

    有时候在我们使用Django设计了models中的数据库结构,并且已经同步了数据库之后,我们突然想在数据表中更新或者增加新的字段,也就是需要修改数据库的结构,会出现以下的问题: C:\Users\Administrator\Desktop\Web开发\Django_Demo\jkxy>python manage.py makemigrations You are trying to add a non-nullable field 'grade' to student without a def

  • 易语言中数据库“更新索引”命令详解

    通过完全重建来更新当前数据库的当前索引. 成功返回真,失败返回假. 语法: 逻辑型 更新索引 () 例程: 说明: 打开数据库的同时,打开2个索引文件."更新索引"按钮被单击后,运行"更新索引()"命令,成功更新索引后,将当前打开的索引显示在列表框中. 以上就是易语言中数据库"更新索引"命令详解的详细内容,更多关于易语言更新索引命令的资料请关注我们其它相关文章!

随机推荐