前面的几篇文章说到sql的一些基础概念,以及对象层面和数据层面的增和删,今天说下“改”。
数据库的“改”即修改,我们还是从两个层面来说:

1.对象层面:数据库对象的修改关键字是Alter ,如:
alter table 表名 add 字段名 类型 默认值 —-增加表字段
alter table 表名 alter column 字段名 类型 默认值 —-修改某字段
alter table 表名 drop column 字段名 —-删除某个表字段
alter view 视图名 as …… —-修改视图
alter trigger 触发器名 on 表名 as …… —修改触发器
alter proc 存储过程名 as …… —-修改存储过程
以上就是常用的修改对象的语句,实际上和create用法有些类似,但是alter必须在对象是已经存在的基础上执行的,不然就会报错。

2.数据层面:数据层面的修改,关键字是update,如:
update 表名 set 字段名 =N …… where ……
上面语句中的N可以是常量值,也可以是个其他字段,也可以是个表达式,但是必须和字段名的数据类型是匹配的。
怎么理解呢,比如我们刚刚给表#temp加个字段memo,现在做个测试:
(1)更新memo列的值为123:
UPDATE #temp SET memo =’123′
SELECT * FROM #temp

(2)单独更新第三行的memo为456
UPDATE #temp SET memo =’456′ WHERE xh=3
SELECT * FROM #temp

(3)单独将第三行的memo改为当前的时间
UPDATE #temp SET memo =CONVERT(VARCHAR(20),GETDATE(),120) WHERE xh=3
SELECT * FROM #temp

上面的语句中convert是个格式转换的公式,这个表达式的意思就是获取当前的时间,并转化为varchar(20)的格式。
第(2)、(3)点中都用到了where语句,这一点和delete类似,就是可以与where联用,单独指定更新哪些行。
最后再说一下,update的执行顺序,其实是先执行delete,再执行insert,这两个前面都讲到了具体的机制。由于update是一行一行的执行,因此该操作也是会触发表里的触发器的。
最后,update语句和delete语句一样,执行语句的时候也要注意安全,如果update的时候条件没加好,很容易出错,谨慎操作!
转载请注明:落伍老站长 » MSSQL基本语法增删改查之三:改