2015.7.31

使用ALTER TABLE 语句修改数据表

alter(改变) table语句可以更改数据表中的列、添加或删除约束,或者启用或禁用触发器,从而修改数据表的结构。

有关alter table语句的语法结构如下:

alter table[database_name.[schema_name.|schema_name.]table_name]
{
    alter column(列) column_name
    {
        [type_schema_name.]type_name
        [null|not null]
        |[add|drop]
    }
    {rowguidcol|persisted}
}

语句中相关的参数含义如下:
database_name:要修改数据表所在数据库的名称
table_name:要司改数据表的名称
column_name:要修改、添加或删除列的名称
type_name:更改数据表结构之后,列的新数据类型或添加列的数据类型
null | not null:表示指定列是否允许为空值。如果列不允许空值,则只有在指定默认值或表为空的情况下,才能用alter table语句添加该列

在现有数据表中添加新的字段

向t_stud数据表中添加一个jtdz字段

alter table t_stud
add jtdz char(50)

删除现有数据表中的字段

删除t_stud数据表中的jtdz字段通过alter table drop column来完成

alter table t_stud
drop(减少) column jtdz

修改字段属性

修改t_stud数据表中jtdz字段的属性通过alter table alter column来完成

alter table t_stud
alter column jtdz varchar(50)//名字之后紧接着的是要修改的属性

设置数据表主键

设置主键用来方便用户对数据表的操作和管理

alter table t_stud with nocheck
add constraint pk_num_id
primary key clustered(id)

执行代码以后,t_stud 数据表中的id字段将被设置为主键

禁用与启用约束

下面是如何实现禁用与启用check约束的相关操作

alter table t_book_sales
--禁用约束
nocheck constraint bz
--插入数据
insert into t_book_sales values(1,'jsp编程',3,30,'缺货')
--启用约束,并且重新插入数据
alter table t_book_sales check constraint bz
insert into t_book_sales values(2,'jsp实例编程',3,36,'缺货')

使用DROP TABLE语句删除数据表

删除数据表是使用drop table语句实现的,下面是结构:

drop table [database_name.[scheam_name].|schema_name.]
table_name [,..n][;]
//其中,database_name表示要删除数据表所在的数据库的名称
//schema_name表示数据表所属构架的名称
//table_name 表示要删除的数据表的名称

在同一个drop table语句中删除引用表以及包含主键的数据表时,需要首先列出引用表,并且在删除数据表时,用户必须具有control权限或者具备db_ddladmin固有数据库角色的成员身份

删除数据表

use db_info go drop table dbo.t_table1 go

其中,use后面的为数据库名称,而drop table 后面为要操作的表的名称

删除临时表

首先在删除临时表之前要进行创建临时表
临时表:临时表是临时存在的数据表,不能永久的存在。临时表与普通表类似,但是临时表具有不适用时会被自动删除的特性

临时表分为本地临时表和全局临时表两种类型

1.本地临时表:以单个符号(#)为前缀,并且仅对当前的用户连接是可见的,当用户从SQL Server实例中断开时将被删除2.全局临时表:以两个符号(##)为前缀,创建后对任何用户都是可见的,当所有引用该临时表的用户从SQL Server实例中断开时将会被删除

创建方法

create table #t_book_sales
(
        id int not null,
        mc char(20),
        xssl int default 0,
        dj float default 0,
        bz varchar(50),
        constraint bz check(bz='有货' or bz='无货'),
)

现在可以开始删除临时表了,在SQL Server 2008中,临时表储存在tempdb数据库中

删除上面创建的#t_book_sales临时表
首先向该临时表中插入数据记录测试该临时表是否存在,然后再使用drop table语句删除该临时表,最后再次通过插入数据记录的方式测试该临时表是否存在

insert into #t_book_sales values(3,'jsp编程',6,30,'有货')
go
select * from #t_book_sales
go
if object_id(n'tempdb..#t_book_sales',n'u') is not null
drop table #t_book_sales
go
select * from #t_book_sales
go