数据库修改数据
1.插入数据
isnert的命令形式:
insert/values,insert/select,insert/exec,insert/defalut,select/into.
insert/select:
eg:
insert into table_name(First,Second)
select id,pwd from table_name1
使用该格式,主要的是要选择正确的数据集,一般在使用select时先测试数据集的结果
insert/exec插入存储过程返回的数据,并将其插入到表中。插入列的顺序必须与存储过程结果集的列顺序相同,以下是基本语法:
insert into owner.table[columns]
exec storedprocedure parameters
注意存储过程可能返回多个结果集,在这种情况下,insert命令试图插入每个结果集中的数据,因此必须保证每个结果集的列顺序与插入列的书序一致。
eg:
create procedure pro_test
as
select * from dt_1 where id<3
select 8 from dt_2 where id>7
//接下来使用存储过程
insert into dt_1[columns]
exec pro_test
创建由默认值组成的行:
eg:
insert into dt_name default values
插入数据时创建表:
select命令的一种变体。
在select语句中使用into选项将创建一个新表包含select结果集
eg:
select colomns
into NewTable
from DataSource
where[condition]
例子:
select *
into dt_new
from dt_old[order by ... asc,desc]
更新数据:
update每次能够更新多行,但是每次只能更新一个表。set关键字用于修改表中任何列的值,新值可以使硬编码的字符串面量、变量、表达式,还可以使sql update语句中from子句引用的数据源的列。
进行全程搜索和替换:
update dt_1
set id=replace(id,'23','22222')
即可将id位123456更新为122222456
更新数据表时引用多个表:
sql update:可以使用表达式给列赋值。该表达式可以引用同一列、其他列甚至其他表
这个过程比较复杂一点:
1.检查可用的数据2.测试公式3.执行更新
删除数据:
delete from dt_name
where ...
注意:级联删除
delete from dt_name
...
on delete cascade
返回修改后的数据:
sql server2005能够以数据集的方式返回修改后的数据,并供以后使用。使用output子句可以访问插入和删除的虚拟表
对数据修改的潜在限制:
主键限制:如果一个表中有主键 并且主键有限制的话,可以使用一下语句来破除这种限制。
set identity_insert table_name on
//
insert into table_name(id,pwd)//注意这里的列名一定要加上
value(1,2)
如果想恢复限制,可以set identity_insert table_name off
并且值得注意的是:我们在一个数据库中同一时刻只能有一个表可以将它设置为on。
@@identity可以返回插入行的标志值,scope_identity()功能同上,ident_current(table)
外键限制:
首先说说什么是外键:
成绩表中的学号不是成绩表的主键,但它和学生表中的学号相对应,并且学生表中的学号是学生表的主键,则称成绩表中的学号是学生表的外键
例如:
如果dt_test1(id,name) dt_test2(UserName,pwd)这两个表中的主键分别是id和UserName,dt_test1中的name是dt_test2的外键的话,那么插入dt_test1中的name的值就会有所限制,插入的值必须在dt_test2中出现过才行。
外键限制是一种很普遍的现象,比如:
insert into dt_test1 values(..),在dt_test2中如果没有相应的值会出现错误,如果在删除dt_test2中的某行时,检测到在dt_test1中有用到相应的值,那么也会发生错误。
唯一索引限制:
空值和默认值限制:
check约束限制:
首先为表dt_test1添加一个check约束
alter table dt_test1
add constraint test_ct
check(id>1000)
此时,如果再向其中添加id<1000的数据行则会发生错误。
instead of 触发器限制: