修改(更新)数据
语法
UPDATE 表名 SET列名 =更新值 [WHERE 更新条件]
[]表示在某些情况下可以省略
要求:知道要修改哪张表,哪个列,更新什么值,在条件下更新
USE E_Market select *from CommodityInfo --[1]不带where条件则更新表中全部数据 UPDATE UserInfo SET GENDER=1 --[2]用where条件更新一个或某几个值 UPDATE UserInfo SET Gender=0 WHERE UserId='yoyo' --[3]一次性更新多个值,中间使用英文的逗号分隔 UPDATE UserInfo SET UserPwd='feiyang',Phone='022-222222' WHERE UserId='feiyang' --[4]修改的条件为多个,使用关系运算符连接(AND,OR,NOT) UPDATE CommodityInfo set Amount=10 WHERE SortId=1 AND CommodityId=8 --[5]要修改的数据不存在,0行受影响 UPDATE CommodityInfo SET InPrice=900 where CommodityId=4--表里没有CommodityId=4的数据删除数据
方法一:使用delete删除
语法
DELETE [FROM] 表名 [WHERE 删除条件]
--[]中可以省略
--如果删除的表中存在被外键引用的情况,则应先删除子表中的数据,在删除主表的数据
代码:
USE E_Market
--此处表OrderInfo为子表,UserInfo为主表
GO
SELECT *FROM OrderInfo--子表原来有3条数据,没有被外键引用
--[1]省略where,将删除表中所有的数据
DELETE FROM OrderInfo --执行后,3条受影响,表中三条数据都被删除
--[2]带条件的删除,where
--举例:主表UserInfo中的UserId列被子表OrderInfo中引用
DELETE UserInfo WHERE UserId='yoyo'--尝试直接删除主表UserInfo失败,提示存在外键
--先删除子表的数据,再删除主表,成功
DELETE OrderInfo WHERE UserId='yoyo'
DELETE UserInfo WHERE UserId='yoyo'
GO
语法:
TRUNCATE TABLE 表名
--使用TRUNCATE TABLE删除数据
--类似于没有where条件的DELETE删除,清除表中所有数据,但存在外键约束的表无法删除
TRUNCATE TABLE OrderInfo --没有外键约束的表,删除成功 TRUNCATE TABLE UserInfo --有外键约束的表UserInfo,删除失败 GO两种方法的区别:
1.当删除的表是主表,表中有外键约束时
1)如果子表中没有引用主表中数据,就直接可以执行删除
例如: TABLE zhubiao中含有列 ID, NAME ;TABLE zibiao中含有列 id, year ,id设置为zhubiao中的ID的外键
zhubiao 中的数据 1 'zhangsan'
情况一:zibiao 中没有数据
则DELETE FROM zhubiao ,可以删除zhubiao所有数据
情况二: zibiao存在数据 1 32year--引用了zhubiao中 ID=1
则要删除子表中的数据DELETE FROM zibiao WHERE id=1
才可以删除zhubiao DELETE FROM zhubiao
2)TRUNCATE 只要是存在外键约束的表,都无法删除,无论子表是否引用了主表中的数据
2.当表中存在标志列(标志种子为1,增长为1)
若用DELETE删除时(标识列为3),删除后重新插入时标识列为4,即从删除时的状态继续增长
若用TRUNCATE删除时(标识列为3),删除后重新插入时标识列恢复为 1,即从标志种子重新增长。