更新和删除数据
更新表中的数据:
可以使用UPDATE
语句更新表中的数据。
-
更新单个字段的数据
- 语法格式:
UPDATE 表名 SET 字段名=更新值 WHERE 条件表达式 #UPDATE子句指定要更改哪个表中的数据 #SET子句指定将哪个字段的数据用什么值替换 #WHERE子句设置要更新的记录的条件
- 以上三个子句的执行顺序和工作原理是:
1.UPDATE子句。告诉DBMS要使用哪个表,并打开该表
2.WHERE子句。将表中满足条件的记录放入结果集
3.SET子句。更新结果集中所有记录的特定字段的数据
注意:
UPDATE
语句中的WHERE
子句可以被省略,但是这么做的后果是,更新在所有记录上进行。因此,在省略WHERE
子句前应当考虑清楚,是否真的要更新所有记录的数据。 -
更新多个字段的数据
- 语法格式:
UPDATE 表名 SET 字段名1=更新值1, 字段名2=更新值2, ...... 字段名n=更新值n WHERE 条件表达式 #SET子句中的表达式之间用逗号(,)隔开
-
使用子查询更新数据
在UPDATE
语句的WHERE
子句中,可以使用子查询选择需要更新的记录。利用其这一特点,UPDATE
语句可以基于其它表中的数据进行更新。 -
使用表连接更新数据
在UPDATE
语句中还可以使用FROM
子句。通过FROM
子句和WHERE
子句配合,可以进行多表连接,就是说在UPDATE
语句中可以通过多表连接进行数据更新。(UPDATE
代替FROM
) -
使用
UPDATE
语句删除指定字段的数据
UPDATE
语句除了更新数据以外,还有一个作用,即删除指定字段的数据。
其实,所谓的删除,只是使用NULL值替换原有的字段值而已。
注意:用NULL值替换字段值时,首先必须保证该字段可以为空,否则会出现错误。
删除表中的数据:
- 使用
DELETE
语句删除表中的数据- 使用DELETE语句删除的是整行记录,而并非是记录中的某个字段值。
- 语法格式:
DELETE FROM 表名 WHERE 条件表达式 #DELETE FROM指定要从哪个表删除数据 #WHERE用于设置删除记录的条件 #即DELETE语句从表中删除那些满足WHERE子句条件的所有记录 #当省略WHERE子句时,DELETE语句删除表中的所有记录(不删除表) #要删除表用语句:DROP TABLE 表名
- 在
DELETE
语句中使用多表连接- 在
DELETE
语句中也可以使用多表连接,就是说可以根据其它表的数据删除本表记录 - 语法格式:
DELETE 需要删除数据的表名 FROM 连接的表名以及连接的方式 WHERE 条件表达式
- 在
- 使用
TRUNCATE
语句删除所有记录TRUNCATE
是删除表中所有记录的另一种语句,将其与DELETE语句相比
,其运行效率非常的高- 因为使用
TRUNCATE
语句时,DBMS不会写入任何内容,换个角度说,就是TRUNCATE
语句所做的修改是不能回滚的 TRUNCATE
语句只是删除了表中的所有数据,而并没有删除表本身- 语法格式
TRUNCATE TABLE 表名
通过视图更新表:
- 不能用于更新的视图
- 并不是所有视图,都能用于更新数据
- 不能用于更新数据的视图:
❀SELECT
子句的字段列表中包含了聚合函数的视图不能用于更新数据
❀SELECT
语句中包括GROUP BY
子句的视图不能用于更新数据
❀SELECT
子句中包含了DISTINCT
关键字的视图不能用于更新数据
❀SELECT
语句中包含了计算字段的视图不能用于更新数据
❀基于多表连接的视图不能用于更新数据
❀如果视图不包含具有非空约束而且没有默认值的字段,则该视图不能用于更新数据
❀视图中的数据要改为不属于该视图的权限范围时,不能更新数据
通过视图删除表数据:
- 语法格式:
DELETE FROM 视图名 WHERE 条件表达式
可以知道,使用视图删除数据和直接删除表中数据的方法是相同的,只是将表名改为视图名即可。
通过视图删除数据和通过视图更新数据一样,只能删除所能看到的记录数据,而不能删除无法看到的数据。