SQL学习笔记——表结构的修改

修改表结构可以使用“ALTER TABLE”语句

语法格式:

ALTER TABLE [ database_name . [ schema_name ] . | schema_name . ] table_name 
  {  
	[ ALTER COLUMN  column_name     /*修改已有列的属性*/  
	 	{ new_data_type [ ( precision [ , scale ] ) ]    
		 [ NULL | NOT NULL ]   
		 }
	]   
	| [ WITH { CHECK | NOCHECK } ] ADD    /*添加列*/  
	  {   <column_definition>   | column_name AS computed_column_expression 			
	  [PERSISTED [NOT NULL]]    | <table_constraint>   
	  } [ ,...n ]  
	| DROP           /*删除列、约束等*/  
	  { [ CONSTRAINT ] constraint_name     | COLUMN column_name   
  	  } [ ,...n ]   
        | [ WITH { CHECK | NOCHECK } ] { CHECK | NOCHECK } CONSTRAINT
	  { ALL | constraint_name [ ,...n ] }  
        | { ENABLE |DISABLE } TRIGGER     
	  { ALL | trigger_name [ ,...n ] } 
  } 
  [; ]

参数说明

ALTER COLUMN:指定要更改命名列。
column_name:要更改、添加或删除的列的名称。

new_data_type:新的数据类型。

NULL | NOT NULL:指定列是否可接受空值。

WITH CHECK | WITH NOCHECK:指定表中的数据是否用新添加的或重新启用的 FOREIGN KEY 或 CHECK约束进行验证。如果未指定,对于新约束,假定为 WITH CHECK,对于重新启用的约束,假定为 WITH NOCHECK。

ADD:指定添加一个或多个列定义、计算列定义或者表约束。

DROP { [ CONSTRAINT ] constraint_name | COLUMN column_name }:指定从表中删 除 constraint_name 或 column_name。可以列出多个列或约束。

{ CHECK | NOCHECK} CONSTRAINT:指定启用或禁用 constraint_name。此选项只 能与 FOREIGN KEY 和 CHECK 约束一起使用。如果指定了 NOCHECK,则将禁用约束,从而在将来插入或更新列时,不根据约束条件进行验证。无法禁用DEFAULT、 PRIMARY KEY 和 UNIQUE 约束。

ALL:指定使用 NOCHECK 选项禁用所有约束,或者使用 CHECK 选项启用所有约束。
{ENABLE | DISABLE}TRIGGER:指定启用或禁用 trigger_name。禁用触发器时, 仍会为表定义该触发器;但是,当对表执行 INSERT、UPDATE或 DELETE 语句时, 除非重新启用触发器,否则不会执行触发器中的操作。
ALL:指定启用或禁用表中的所有触发器。 —

trigger_name:指定要启用或禁用的触发器的名称。

表结构修改语句

----在创建的数据库DB001中,创建另一张学习信息表StuInfo
use DB001
go
create table StuInfo
(
 SID  char(10) not null primary key,
 Sname char(8) not null,
 Sage int not null,
 sex char(2) check(sex='男' or sex='女') default '男',
 remark varchar(50) null
)
go

--在StuInfo表中添加一列学生的兴趣字段,然后再删除该字段
alter table StuInfo 
 add hobby varchar(20) not null
go

--将姓名长度由8改到10
alter table StuInfo
  alter column Sname char(10)
go

--删除StuInfo表
drop table StuInfo

心得:在表的结构修改过程中,使用的的较多的是表字段的修改和添加,以及表的删除。但修改表的过程中需要注意以下几点:
1、表中尚未有记录时,可以修改表的结构,如更改列名、列的数据类型、长度和是否允许为空值等属性。
2、如果表中有了记录,不能随意更改表的结构,尤其数据类型,以免出错。
3、主表的主键和附表的外键是具有同样的字段和属性值得,所有改的时候一定要注意。
4、具有以下特性的列不能被修改:

	a.具有text、ntext、image 或 timestamp 数据类型的列
	b.计算列
	c.全局标识符列
	d.复制列
	f.用于索引的列(但若用于索引的列为 varchar、nvarchar 或 varbinary 数据类型时,可 以增加列的长度)
	g.用于由“CREATE STATISTICS”生成统计的列。若需修改这样的列,必须先用“DROP STATISTICS”;语句删除统计
	h.用于主键或外键约束的列
	i.用于 CHECK 或 UNIQUE 约束的列
	j.关联有默认值的列

5、 当改变列的数据类型时,要求满足下列条件:

	原数据类型必须能够转换为新数据类型。
 	新类型不能为timestamp 类型。
	如果被修改列属性中有“标识规范”,则新数据类型必须是有效的“标识规范”数据类型。
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

闲小憨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值