暂无 |

5 资料维护与子查询

在使用「INSERT」、「UPDATE」与「DELETE」叙述执行新增、修改与删除资料时,也可以依照需要使用子查询来简化资料维护的叙述。

5.1 新增

一般来说,使用「INSERT」叙述执行新增纪录的工作时,通常是直接指定新增纪录的资料;如果你要新增的资料,可以执行一个查询来取得的话,就可以搭配子查询来简化新增纪录的工作:

mysql_10_snap_33

以下列这个储存国家资料的表格(world.mycountry)来说:

mysql_10_snap_34

如果你想要新增亚洲国家的资料到「mycountry」表格中,你可以使用子查询传回新增纪录需要的资料给「INSERT」叙述使用:

mysql_10_snap_35

使用子查询提供「INSERT」叙述需要的资料,要特别注意子查询回传的栏位资料:

mysql_10_snap_36

注:搭配「ON DUPLICATE KEY UPDATE」的效果在「资料维护、新增、索引值与ON DUPLICATE KEY UPDATE」中讨论。

MySQL另外一种新增纪录的「REPLACE」叙述,也可以使用子查询提供需要的资料:

mysql_10_snap_37

5.2 修改

使用「UPDATE」叙述执行修改资料时,如果没有使用「WHERE」子句指定修改的条件,「UPDATE」叙述会修改表格中所有的纪录;所以执行修改纪录资料的时候,通常会使用「WHERE」子句指定修改的条件。在「UPDATE」叙述的「WHERE」子句中,也可以使用子查询提供判断条件的资料:

mysql_10_snap_38

如果要执行「SALES部门的员工加薪百分之五」,因为你需要先知道「SALES」部门的编号,所以你可以使用子查询传回「SALES」部门的编号,给「UPDATE」叙述中的「WHERE」子句设定部门编号的条件:

mysql_10_snap_39

MySQL在「UPDATE」叙述中的子查询有一个特别的规定:

mysql_10_snap_40

5.3 删除

使用「DELETE」叙述执行删除纪录时,如果没有使用「WHERE」子句指定删除的条件,「DELETE」叙述会删除表格中所有的纪录;所以执行删除纪录的时候,通常会使用「WHERE」子句指定删除的条件。在「DELETE」叙述的「WHERE」子句中,也可以使用子查询提供判断条件的资料:

mysql_10_snap_41

如果要执行「删除SALES部门员工」,因为你需要先知道「SALES」部门的编号,所以你可以使用子查询传回「SALES」部门的编号,给「DELETE」叙述中的「WHERE」子句设定部门编号的条件:

mysql_10_snap_42

MySQL在「DELETE」叙述中出现的子查询有一个特别的规定:

mysql_10_snap_43

0

java教程
php教程
php+mysql教程
ThinkPHP教程
MySQL
C语言
css
javascript
Django教程

发表评论

    评价:
    验证码: 点击我更换图片
    最新评论