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表的内容会发现,刚才只是删除了视图中可见的数据,而并没有删除在视图中看不到的记录。
通过本例可以知道,使用视图删除数据和直接删除表中数据的方法是相同的,只是将表名改为视图名即可。通过视图删除数据和通过视图更新数据一样,只能删除所能看到的记录数据,而不能删除无法看到的数据。