mySQL(四)
操作表中数据
使用INSERT语句添加数据
数据库与表创建成功以后,需要使用USE语句指定要操作的数据库作为当前数据库,然后向当前数据库的表中插入数据。在MySQL中可以使用INSERT或REPLACE语句向数据库已有的表中插入一行或者多行元组数据。
基本语法
INSERT语句有两种语法形式,分别是INSERT…VALUES语句和INSERT…SET语句。
(1)INSERT…VALUES语句
INSERT VALUES的语法格式为:
1 | INSET INTO <表名> [ <列名1> [ ,... <列名n>]] |
语法说明如下。
● <表名>:指定被操作的表名。
● <列名>:指定需要插入数据的列名。若向表中的所有列插入数据,则全部的列名均可以省略,直接采用INSERT <表名> VALUES (…) 即可。
● VALUES或VALUE子句:该子句包含要插入的数据清单。数据清单中数据的顺序要和列的顺序相对应。
(2)INSERT…SET语句
语法格式为:
1 | INSERT INTO <表名> |
此语句用于直接给表中的某些列指定对应的列值,即要插入的数据的列名在SET子句中指定,col_name为指定的列名,等号后面为指定的数据,而对于未指定的列,列值会指定为该列的默认值。
由INSERT语句的两种形式可以看出,使用INSERT…VALUES语句可以向表中插入一行数据,也可以插入多行数据;使用INSERT…SET语句可以指定插入行中每列的值,也可以指定部分列的值;INSERT…SELECT语句向表中插入其他表的数据。
采用INSERT…SET语句可以向表中插入部分列的值,这种方式更为灵活;INSERT…VALUES语句可以一次插入多条数据。
在MySQL中,用单条INSERT语句处理多个插入要比使用多条INSERT语句更快。当使用单条INSERT语句插入多行数据的时候,只需要将每行数据用圆括号括起来即可。
● SELECT语句用于从一个表中检索出要插入的值,而非列出这些值。SELECT语句中列出的每一列对应于待插入表的每一列。若SELECT语句检索出的数据行数为0,则表示没有行会被插入待插入表中,此时操作合法,不会产生错误。
● INSERT语句与SELECT语句中可使用相同的列名,也可以使用不同的列名,即不要求列名完全匹配。MySQL不关心SELECT语句返回的列名,它使用的是列的位置,SELECT语句中的第一列用来填充待插入表列中指定的第一列,第二列将用来填充待插入表列中的第二列,以此顺序依次填充。
● INSERT…SELECT语句中的SELECT子句可以包含WHERE等从句来过滤待插入的数据。
● 对于student_id这类主键,当出现主键值重复时,后续的INSERT操作会出错。此时可以在INSERT…SELECT语句中省略这个列,让该列的值在MySQL导入数据的过程中自动产生新值,本例采用了这种省略主键的方式。
使用INSERT INTO … FROM语句复制表数据
INSERT INTO…SELECT…FROM语句用于快速地从一个或多个表中取出数据,并将这些数据作为行数据插入另一个表中。SELECT子句返回的是一个查询到的结果集,INSERT语句将这个结果集插入指定表中,结果集中的每行数据的字段数、字段的数据类型都必须与被操作的表完全一致。
使用UPDATE语句修改数据
在MySQL中,可以使用UPDATE语句来修改、更新一个或多个表的数据。
UPDATE语句的基本语法
使用UPDATE语句修改单个表,语法格式为:
1 | UPDATE <表名> SET 字段1=值1 [,字段2=值2...] [WHERE子句] [ORDER BY子句] [LIMIT子句] |
语法说明如下。
● <表名>:用于指定要更新的表名称。
● SET子句:用于指定表中要修改的列名及其列值。其中,每个指定的列值可以是表达式,也可以是该列对应的默认值。如果指定的是默认值,可用关键字DEFAULT表示列值。
● WHERE子句:可选项。用于限定表中要修改的行。若不指定,则修改表中所有的行。
● ORDER BY子句:可选项。用于限定表中的行被修改的次序。
● LIMIT子句:可选项。用于限定被修改的行数。
使用DELETE语句删除数据
在MySQL中,可以使用DELETE语句或TRUNCATE TABLE语句来删除表的一行或者多行数据。
删除单个表中的数据
使用DELETE语句从单个表中删除数据,语法格式为:
1 | DELETE FROM <表名> [WHERE子句] [ORDER BY子句] [LIMIT子句] |
语法说明如下。
● <表名>:指定要删除数据的表名。
● ORDER BY子句:可选项。表示删除时,表中各行将按照子句中指定的顺序进行删除。
● WHERE子句:可选项。表示为删除操作限定删除条件,若省略该子句,则代表删除该表中的所有行。
● LIMIT子句:可选项。用于告知服务器在控制命令被返回到客户端前被删除行的最大值。