SQL Server Alter子句 学习

今儿中途杀入,来学习也好,复习也好,重温SQL  Server当中的Alter字句。

The ALTER TABLE command to change the table's structure and add or remove certain table properties, such as table constraints.

可以用Alter来添加一个column、改变一个column的数据类型、添加一个约束条件;也可以给column改名字,等等。

首先,使用这个语句,create一个table来玩玩儿。

CREATE TABLE Production.CategoriesTest
(
categoryid INT NOT NULL IDENTITY
);

然后,用ALTER语句给这个table添加两列:

ALTER TABLE Production.CategoriesTest ADD categoryname NVARCHAR(15) NOT NULL;
ALTER TABLE Production.categoriestest ADD description NVARCHAR(200) NOT NULL;


在这里,把INSERT与SELECT连起来用,给这个TABLE插入一些数据,这里要注意一下INSERT与SELECT连用的语法。

INSERT Production.CategoriesTest (categoryid, categoryname, description)
SELECT categoryid, categoryname, description
FROM Production.Categories;

当我直接运行上述的SQL语句时回出现错误:“当 IDENTITY_INSERT 设置为 OFF 时,不能向表 'products' 中的标识列插入显式值。”

这里就需要使用这个语句把Production.CategoriesTest 的标识列开启:

SET IDENTITY_INSERT Production.CategoriesTest ON

然后在运行INSERT语句就没有ERROR了。

运行一个查询语句,看看数据已经成功INSERT了。



这里,把这个表给删除,顺便复习一些OBJECT_ID这个东东。

IF OBJECT_ID('Production.CategoriesTest','U') IS NOT NULL
DROP TABLE Production.CategoriesTest;

上面的参数'U'代表user defined table.搜索 SQL SERVER OBJECT_ID可以再微软的MSDN网站上查到详细内容。

http://msdn.microsoft.com/zh-cn/library/ms190324.aspx

ALTER--修改列的定义

在这里我们要把description这一列的字符长途增加到500,并改为允许为空。

ALTER TABLE [Production].[CategoriesTest]
ALTER COLUMN description NVARCHAR(500) NULL;

然后我们再用UPDATE子句把第8条数据的值改为NULL

UPDATE Production.CategoriesTest
SET description=NULL
WHERE categoryid=8;


可以看到,已经把value改为NULL了。

此时我们试图把description的定义改为不允许NULL,这回会成功吗?

ALTER TABLE Production.CategoriesTest
ALTER COLUMN description NVARCHAR(500) NOT NULL ;



可见,其结果失败了。

想一想,里面已经有NULL值了,再改为不允许为空,这样的话,表里面的数据就与表结构的定义不符合。

我们要把第8条数据的NULL值改为不为空的值的,然后才可以把表的定义改回不为空。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值