MySQL数据库14——更新和删除数据

SQL里面使用UPDATE更新数据,删除使用DELETE语句。

Mysql要修改一下设置,才能更新:

在左上角菜单栏里面选择偏好栏,取消下面这个红框的勾选


更新单个字段的数据

 如果运行环境为MySQL 则使用以下语句进行备份。

CREATE TABLE student_1 AS
SELECT * FROM student;

例  在student表中,将名叫“张三”的学生的联系方式1更改为“010-81234567”。

UPDATE student_1
SET contact1='010-81234567'
WHERE name='张三';

更新多个字段的数据 

在student表中,将所有计科系学生的所属院系值更改为“计算机系”,联系方式2改为“0471-6123456”。

UPDATE student_1
SET institute='计算机系', contact2='0471-6123456'
WHERE institute='计算机学院';

使用子查询更新数据

在UPDATE语句的WHERE子句中,可以使用子查询选择需要更新的记录。利用其这一特点,UPDATE语句可以基于其它表中的数据进行更新。

例 在score表中,在每个学生“心理学”的考试成绩上都增加2分。

UPDATE score SET result1=result1+2
WHERE c_id=(SELECT ID FROM  course WHERE course='心理学');

使用表连接更新数据

实际上,在UPDATE语句中还可以使用FROM子句。通过FROM子句和WHERE子句配合,可以进行多表连接,就是说在UPDATE语句中可以通过多表连接进行数据更新。下面通过例题说明使用表连接更新数据的方法。

例 在score表中,将每个学生“心理学”的考试成绩减2分,将其还原为更新前的分数。

UPDATE score AS s,course AS c
SET s.result1=s.result1-2
WHERE c.course='心理学' AND s.c_id=c.ID;


使用UPDATE语句删除指定字段的数据 

UPDATE语句除了更新数据以外,还有一个作用,即删除指定字段的数据。其实,所谓的删除,只是使用NULL值替换原有的字段值而已。

注意:用NULL值替换字段值时,首先必须保证该字段可以为空,否则会出现错误。

例  在student表中,将所有外语系学生的联系方式2的值删除。

下面的语句用于删除所有外语系学生的联系方式2。

UPDATE student_1
SET     contact2=NULL
WHERE  institute='外语系';

删除表中的数据

 使用DELETE语句删除指定记录 

首先,必须清楚一点,使用DELETE语句删除的是整行记录,而并非是记录中的某个字段值。下面是DELETE语句的语法格式。

DELETE  FROM 表名

WHERE  条件表达式

其中,DELETE FROM指定要从哪个表删除数据,WHERE用于设置删除记录的条件。即DELETE语句从表中删除那些满足WHERE子句条件的所有记录。当省略WHERE子句时,DELETE语句删除表中的所有记录。

下面通过例题介绍DELETE语句的使用方法。

例 从student_1表,删除名叫“孔乙己”的学生的记录。

DELETE FROM student_1
WHERE  name='孔乙己';

DELETE语句可以删除多条记录,例如下面的例子所示。

例 从student_1表,删除所有所属院系为NULL的记录

DELETE FROM student_1
WHERE institute IS NULL;


通过视图更新表数据

下面使用一个例子介绍通过视图更新数据的方法。

首先创建一个可更新的视图:

CREATE VIEW vw_update AS SELECT *FROM  student
WHERE institute='计算机学院'
WITH CHECK OPTION;

查看:

SELECT * FROM vm_update

例  通过视图vw_update将学生“杨九”的来源地更新为“重庆市”。

UPDATE  vw_update
SET     origin='重庆市'
WHERE   name='杨九';

通过本例可以知道,使用视图更新数据和直接更新表中数据的方法是相同的,只是将表名改为视图名即可。通过视图vw_update更新数据还有个好处,那就是只能更新“计算机学院”的学生信息,而不能更新其它院系的学生信息,这也是使用视图更新数据的目的。


通过视图删除表数据

下面使用一个例题介绍通过视图删除数据的方法。

例 通过视图vw_update,将来源地为NULL的学生删除。

DELETE FROM  vw_update
WHERE  contact1 IS NULL;

查看 

 看student表的内容会发现,刚才只是删除了视图中可见的数据,而并没有删除在视图中看不到的记录。

通过本例可以知道,使用视图删除数据和直接删除表中数据的方法是相同的,只是将表名改为视图名即可。通过视图删除数据和通过视图更新数据一样,只能删除所能看到的记录数据,而不能删除无法看到的数据。

猜你喜欢

转载自blog.csdn.net/weixin_46277779/article/details/129008349