8.7 表记录的更新操作
数据库表记录的更新操作包括添加记录、修改记录和删除记录,它们分别对应insert、update和delete等SQL语句。
8.7.1 表记录的添加
在MySQL中,使用insert语句将一行新的记录追加到一个已经存在的数据库表中。
insert语句的语法格式:
insert into table_name [(字段列表)] values (值列表);
说明:值列表应与字段列表个数与顺序对应,值列表的数据类型必须与表字段的数据类型保持一致。
下面的两条insert语句向classes表中添加两条记录。
insert into classes(class_id,class_no,class_name) values (NULL,'10chinese','10中文');
insert into classes(class_id,class_no,class_name) values (NULL,'10english','10英语');
使用“select * from classes;”语句可以查询classes表中的所有记录,如图8-26所示。(注意:class_id的值自动生成且递增。)
当向表中的所有列添加数据时,insert语句中的字段列表可以省略,例如下面的insert语句。
insert into classes values (NULL,'10maths','10数学');
使用insert语句添加记录需要注意以下几点。
(1)在使用insert语句添加记录或使用select语句查询记录前,需要先设置MySQL结果集的字符集为gbk,否则将出现乱码,如图8-27所示。
(2)使用insert语句向course表、student表、score表以及teacher表中添加记录时,需要注意表之间的外键约束关系,这种关系决定了表记录添加的顺序。例如下面的SQL语句可以执行成功。
insert into student values (NULL,'2010010101','张三',1);
这是由于前面已经向classes表中添加了一条class_id等于1(班级名为10中文)的记录。而下面的SQL语句则会执行失败,如图8-28所示。
insert into student values (NULL,'2010010102','李四',5);
这是由于classes表中还不存在class_id等于5的班级记录,而student表中字段class_id的值需来自于classes表中字段class_id的值。
虽然SQL语句“insert into student values (NULL,'2010010102','李四',5);”以执行失败告终,但这条SQL语句会使student表中student_id字段的值自动增加1,因此添加下一条记录时,student_id将从3开始。
8.7.2 表记录的修改
在MySQL中,使用update语句修改满足一定条件的记录。
update语句的语法格式:
update table_name
set column_name = new_value [, next_column = new_value2…]
[where 条件表达式]
说明如下。
(1)where 子句指定被修改记录的条件,只有满足条件表达式的记录才被修改。如果省略where子句,则表中所有记录相应的字段值都会被修改。
(2)修改记录时,同样需要注意表之间的外键约束关系。
例如将student_id等于1的学生姓名改成“张三丰”,所用的SQL语句如下。
update student set student_name='张三丰' where student_id=1;
例如将所有的学生成绩减去5分,对应的SQL语句如下。
update score set grade=grade-5;
例如将student_id等于1且course_id等于2的学生成绩加10分,所用的SQL语句如下。
update score set grade=grade+10 where student_id=1 and course_id=2;
8.7.3 表记录的删除
在MySQL中,使用delete语句删除满足一定条件的记录。
delete语句的语法格式:
delete from table_name
[where 条件表达式];
说明如下。
(1)如果省略where子句,table_name表中的所有记录被删除,但表结构仍然存在。
(2)有自动编号字段的记录被删除后,字段编号不会重新排列,被删除的自动编号不能被新添加的记录使用。
(3)删除记录时,同样需要注意表之间的外键约束关系。
例如,将student_id等于2且course_id等于1的学生成绩删除,所用的SQL语句如下。
delete from score where student_id=1 and course_id=2;
共有条评论 网友评论