初识Mysql(part13)--我需要知道的7条Mysql语句之更新和删除数据

学习笔记,以代码和例子堆砌而成,方便查阅。
参考书籍:《Mysql必知必会》等
要点:UPDATE关键字、IGNORE关键字、DELETE关键字、TRUNCATE TABLE语句


此Blog里的例子都会用下面的grouping表:

# id, pro_version, price, pro_num
'1', '101', '20', '500'
'2', '101', '2', '1000'
'3', '101', '3', '250'
'4', '101', '10', '300'
'5', '102', '5', '200'
'6', '102', '3', '100'
'7', '103', '100', '30'
'8', '103', '30', '200'
'9', '104', '10', '250'
'10', '105', '500', '10'
'11', '105', '1000', '2'
'12', '105', '800', '3'

更新pro_version=103的数据行中price列的值为150:

UPDATE grouping SET price=150 WHERE pro_version=103;

查看grouping表:

# id, pro_version, price, pro_num
'1', '101', '20', '500'
'2', '101', '2', '1000'
'3', '101', '3', '250'
'4', '101', '10', '300'
'5', '102', '5', '200'
'6', '102', '3', '100'
'7', '103', '150', '30'
'8', '103', '150', '200'
'9', '104', '10', '250'
'10', '105', '500', '10'
'11', '105', '1000', '2'
'12', '105', '800', '3'

在使用UPDATE语句更新多行时,如果出现错误,则整个UPDATE操作会被取消,即错误发生前更新的所有行被恢复到它们原来的值。如果更新发生错误了,但我们想要数据表继续更新,就可以使用IGNORE关键字。比如:

UPDATE IGNORE grouping SET price=150 WHERE pro_version=103;


更新pro_version=105的数据行中price列的值为250,pro_num列的值为50

UPDATE grouping SET price=250,pro_num=50 WHERE pro_version=105;

查看grouping表:

# id, pro_version, price, pro_num
'1', '101', '20', '500'
'2', '101', '2', '1000'
'3', '101', '3', '250'
'4', '101', '10', '300'
'5', '102', '5', '200'
'6', '102', '3', '100'
'7', '103', '150', '30'
'8', '103', '150', '200'
'9', '104', '10', '250'
'10', '105', '250', '50'
'11', '105', '250', '50'
'12', '105', '250', '50'

在更新多个列时,只要使用单个SET命令,每个"列=值"对之间用逗号分隔,即可。



删除pro_version=104的数据行中price列的值,设置其值为NULL

UPDATE grouping SET price=NULL WHERE pro_version=104;

查看grouping表:

# id, pro_version, price, pro_num
'1', '101', '20', '500'
'2', '101', '2', '1000'
'3', '101', '3', '250'
'4', '101', '10', '300'
'5', '102', '5', '200'
'6', '102', '3', '100'
'7', '103', '150', '30'
'8', '103', '150', '200'
'9', '104', NULL, '250'
'10', '105', '250', '50'
'11', '105', '250', '50'
'12', '105', '250', '50'

注意!如果不设置WHERE关键字,则会删除所有行中price列的值。



删除grouping表中pro_version=104的数据行

DELETE FROM grouping WHERE pro_version=104;

查看grouping表:

# id, pro_version, price, pro_num
'1', '101', '20', '500'
'2', '101', '2', '1000'
'3', '101', '3', '250'
'4', '101', '10', '300'
'5', '102', '5', '200'
'6', '102', '3', '100'
'7', '103', '150', '30'
'8', '103', '150', '200'
'10', '105', '250', '50'
'11', '105', '250', '50'
'12', '105', '250', '50'


删除grouping表中所有行

DELETE FROM grouping;

查看grouping表:

# id, pro_version, price, pro_num

注意!我们用DELETE删除所有行,不是删除表本身,表本身依然存在。如果我们想删除所有行,还可以使用TRUNCATE TABLE语句,它会删除原来的表,并重新创建一个新的空表,相比于DELETE一行一行的删除,速度要快许多。举个例子,我们删除一个叫grouping2的数据表中的所有行:

TRUNCATE TABLE grouping2;

查看grouping2表:

# id, new_pro_version, price, pro_num

嗯!表中的数据行已经删除了。

发布了219 篇原创文章 · 获赞 102 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/m0_37422217/article/details/105483364