SQL 更新和删除数据

修改(更新)数据

语法

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 删除

语法:

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,即从标志种子重新增长。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值