插入数据
数据库和表创建成功之后就要向数据库的表插入数据,在MySQL中就是用 INSERT语句插入一行或者多行数据。插入数据有两种方法,INSERT…VALUES 语句和 INSERT…SET 语句。
INSERT…VALUES 语法
INSERT INTO <表名> [ <列名1> ,…, <列名n>] VALUES (值1) ,… , (值n);
- 表名是被操作的表名。
- 列名是指要指定需要插入数据的列名,列名用括号包着,如果要向表中的所有列插入数据,则列名可以省略,只写个表名。
- VALUES 是要插入数据的清单,清单的数据要和列名顺序一样,类型也要一样,也可以插入多行,但要在圆括号之间用逗号隔开。
INSERT…SET语法
INSERT INTO 表名 SET 列名1 = 值1,...,列名n = 值n,
此语句用于向指定的列中插入数据,而未对于指定的列,则会指定的该列的默认值。
INSERT INTO…SELECT… FROM 赋值表数据
INSERT INTO 表名1 SELECT 列名 FROM 表名2
- 表名1是指要插入的表
- 列名是要从被复制的表中提取的列名,如果全部提取则直接用 *。
- FROM 要从另一个表中获取数据的表名。
注意: 在赋值数据到另一个表中,必须两个表中的列要对应,数据类型也要一样。
修改数据
修改数据也称更新数据,可以更新一个或者多个表的数据。
UPDATE 表名 SET 列名 1=值 1,...,列名 n=值n ;
- 表名是要被修改的表。
- 列名是要被修改的列,可以对多个列修改。
注意: 这种修改形式直接将列下面对应的所有数据都修改成一样的。
根据条件修改表中的数据
WHERE 子句用来指定被修改的数据的条件。
UPDATE 表名 SET 列名 1=值 1,...,列名 n=值n WHERE 表达式;
删除数据
DELETE语句可以删除表中的一行或都多行数据。
DELETE FROM 表名 WHERE 表达式
- 表名是要被删除的表
- WHERE语句指定删除数据的条件,如果省略则要删除所有行。
清空表记录
TRUNCATE TABLE 表名
TABLE语句可以省略。
DELETE与TRUNCATE的区别
- DELETE 是逐行一条一条删除记录的;TRUNCATE 则是直接删除原来的表,再重新创建一个一模一样的新表,而不是逐行删除表中的数据,执行数据比 DELETE 快。因此需要删除表中全部的数据行时,尽量使用 TRUNCATE 语句, 可以缩短执行时间。
- DELETE 删除数据后,配合事件回滚可以找回数据;TRUNCATE 不支持事务的回滚,数据删除后无法找回。
- DELETE 删除数据后,系统不会重新设置自增字段的计数器;TRUNCATE 清空表记录后,系统会重新设置自增字段的计数器。
- DELETE 的使用范围更广,因为它可以通过 WHERE 子句指定条件来删除部分数据;而 TRUNCATE 不支持 WHERE 子句,只能删除整体。
- DELETE 会返回删除数据的行数,但是 TRUNCATE 只会返回 0,没有任何意义。