SQL(⼗五)更新和删除数据(updata语句,delete语句)
⽂章⽬录
update语句
⼀定要⽤where⼦句过滤出你想更新的⾏,千万不要更新所有⾏,就这点容易出错,所以使⽤updata语句的权限要求更⾼。毕竟90%的⼈⽤数据库只能查,根本不能添删改。
⽽update语句本⾝是特别简单的,所以难点就是过滤出想更新的⾏。
⽰例1:更新⼀列
UPDATE Customers
set cust_email ='kim@thetoystore'
where cust_id ='1000000005';
⽤select语句查⼀下修改后的结果
select cust_id, cust_name, cust_email
from Customers
where cust_id ='1000000005';
⽰例2:更新多列
update Customers
SET cust_contact ='Sam Robert',
cust_email ='sam@toyland'
where cust_id ='1000000006';
更新后查询:
select cust_id, cust_name, cust_contact, cust_email
from Customers
where cust_id ='1000000006';
⽰例3:通过设置某个值为null,以删除它
update Customers
set cust_email = null
where cust_id ='1000000005';
查询
select cust_id, cust_name, cust_contact, cust_email
from Customers
where cust_id ='1000000005';
⼩结
更新⼀列或者多列都只需要⼀个set命令
在updata语句中可以⽤⼦查询,以⽤查询出的数据更新,⽽不必⾃⼰输⼊。
我想⾃⼰试试怎么写的,然后写了下⾯的代码,虽然执⾏正确没报错,但是并没有真的改成功。
update Customers
set cust_email =(select cust_email where cust_id ='1000000001')
where cust_id ='1000000005';
注意上⾯的括号中不可以写from Customers,不然报错。
select cust_email from Customers where cust_id ='1000000001'
所以我还是不知道怎么在update中⽤⼦查询。。。⼀个失败的尝试
在update中使⽤from⼦句
这个尝试也失败了
CREATE table CustCopy as
select* from Customers;
update CustCopy
set CustCopy.cust_email ='lalala@huhuhu'
where CustCopy.cust_id ='1000000004';
update customers from CustCopy
where Customers.cust_id ='1000000004';
本意是:创建⼀个新表CustCopy,它和customers表⼀样,然后先修改⼀下custcopy表的⼀个email地址,然后再⽤custcopy去更新customers表。
看来是因为mysql语法的问题,暂时不想深究了
delete语句
和update的注意点⼀样
sql中update什么意思⽰例1
delete from Customers
where cust_id ='1000000006';
⼩结
⼀定要定义外键:以防⽌删除某个关系要⽤到的⾏
delete删除的是⼀整⾏。所以如果你想删除某⼀列,就要⽤update语句,搭配null。
delete语句删除的是表的⾏,不会删掉表本⾝。
删除表的所有⾏,⼜不⽤delete了,不是做不到,⽽是速度不够快。应该⽤truncate table语句,(之前⽤过create table语句创建表)速度更快。
每个表都必须有主键
⼀定⼀定要⽤where⼦句,并且还必须先⽤select测试⼀下where⼦句的过滤条件的正确性,然后再去更新或者删除,不然没有撤销后悔药,会完犊⼦的。
总之就是⼩⼼⼩⼼再⼩⼼,从删库到跑路,很危险的
总结
where⼦句对update和delete语句是⾮常⾮常⾮常重要的。
关键字
update
set
delete
truncate table

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。