在SQL中,数据操纵语言(DML)是一类对数据库表中数据进行操作的语句集。DBMS服务器执行DML中的INSERT、UPDATE、DELETE语句实现对数据库表的数据操纵,分别完成数据的插入、更新与删除处理。
数据插入语句是一种将数据插入数据库表中的指令,它对数据库表进行数据记录添加处理。
每执行一个INSERT INTO语句,就会在表中插入一个行数据,其语句基本格式为:
其中,INSERT INTO为插入语句的关键词;<基本表>为被插入数据的数据库表;<列名表>给出在表中插入哪些列。若没有给出列名表,则为数据库表插入所有列;VALUES关键词后括号中给出被插入的各个列值。
【例3-15】 在学生信息表(Student)中,原有数据如图3-10所示。若在此表中插入一个新的学生数据,如2017220101105、柳因、女、1999-04-23、软件工程、liuyin@163.com。其数据插入SQL语句如下:
该语句执行后,学生信息表的数据如图3-12所示。
图3-12 插入新学生后的学生信息表数据
在INSERT INTO数据插入语句中,使用的integer和numeric等类型数值不使用引号标注,但char、varchar、date和datetime等类型必须使用单引号标注。
在数据插入操作中,还可以通过执行一个数据插入SQL语句,在表中插入多行数据。
【例3-16】 在学生信息表(Student)中,一次插入多个学生数据,其数据插入SQL语句如下:
这些语句执行后,学生信息表的数据如图3-13所示。
图3-13 插入多个新学生的学生信息表数据
在INSERT INTO插入数据语句中,若某些列的值不确定,可以在该列位置使用空值(NULL),但主键、非空列不允许使用空值。此外,若表中主键为代理键,它不需要出现,因该值由DBMS自动提供。
数据更新语句是依据给定条件,对数据库表中的指定数据进行更新处理,其语句基本格式为:
其中,UPDATE为数据更新语句的关键词,<表名>为被更新数据的数据库表名称,SET关键词指定对哪些列设定新值,WHERE关键词给出需要满足的条件表达式。
【例3-17】 在学生信息表(Student)中,学生“赵东”的原有Email数据为空,现需要更新为“zhaodong@163.com”。其数据更新SQL语句为:
该语句执行后,学生信息表的数据如图3-14所示。
图3-14 修改后的学生信息表数据
在数据更新语句中,不能忘记WHERE条件,否则该语句将更新表中所有行的该列的值。
UPDATE数据更新语句也可以同时更新表中多个列值。例如,如果需要同时将学生“刘亚”的出生日期和Email分别更新为“1999-11-15”“liuy@163.com”,其数据修改SQL语句如下:
数据删除语句将从指定数据库表中删除满足条件的数据行,其语句基本格式为:
其中,DELETE FROM为数据删除语句的关键词,<表名>为被删除数据的数据库表,WHERE关键词给出需要满足的条件表达式。
【例3-18】 学生信息表(Student)原始数据如图3-14所示。若要删除姓名为“张亮”的学生数据,其数据删除SQL语句如下:
该语句执行后,学生信息表的数据如图3-15所示。
图3-15 删除后的学生信息表数据
在数据删除语句中,不能忘记WHERE条件,否则该语句将删除表中所有行数据。
课堂讨论:本节重点与难点知识问题
1)在数据插入SQL语句中,对于当前值还不确定的列,如何在语句中提供值?
2)在数据插入SQL语句中,如何从其他表获取数据?
3)在数据修改SQL语句中,如何对表中指定行列进行数据修改?
4)在数据修改SQL语句中,如何对表中多行数据进行修改?
5)在数据删除SQL语句中,如何对表中数据进行快速删除?
6)在进行数据库数据删除时,如何同步删除关联表数据?