1、插入数据
语法:
INSERT INTO 表名 (列名1, 列名2, …)
VALUES (值1, 值2, …);
注意:
⑴ 字符型或日期型的数据,要用单引号,数值型不用引号
⑵ 插入值时,列数和值的个数必须一致,否则会报错:
错误代码: 1136
Column count doesn’t match value count at row ?
注意:当值和列的数据类型不一致时,值仍然可以添加到数据表中。但是会有警告(warning)
⑶
① 可以为空值的列,可以把列名加上,值用NULL;也可以列名和值都不写
② 不能为空值的列,必须把列名和值都写上
⑷ 插入字符型数据时,字符的长度不能超过字段的指定长度
⑸ 列名可以省略,默认为所有的列
⑹ 在设计表时,如果某列设计成了自增长【AUTO_INCREMENT】,则在插入数据时:①可以把列名写上,值用NULL;②或者列和值都不写
Tips:
⑴ 可以一次插入多条不同的记录,语法:
INSERT INTO 表名 (列名1, 列名2, …)
SELECT 值1, 值2, … UNION
SELECT 值3, 值4, … UNION
SELECT 值5, 值6, … UNION
SELECT 值7, 值8, … ;
⑵ 可以一次插入多条相同的记录,语法:
INSERT INTO 表名 (列名1, 列名2, …)
SELECT 值1, 值2, … UNION ALL
SELECT 值1, 值2, … UNION ALL
SELECT 值1, 值2, … UNION ALL
SELECT 值1, 值2, … ;
⑴ 示例:【插入一条记录last_name, age, gender到person表中】
INSERT INTO person(last_name, age, gender)
VALUES(‘john’, 14, ‘男’);
⑵ 示例:【插入一条记录到person表(字段有:first_name,last_name,age,gender)中】
INSERT INTO person
VALUES(‘lily’, ‘Steven’, 12, ‘女’);
⑶ 示例:【一次插入多条不同记录last_name, age, gender到person表中】
INSERT INTO person(last_name, age, gender)
SELECT ‘Austin’, 21, ‘女’ UNION
SELECT ‘Urman’, 17, ‘男’ UNION
SELECT ‘Baida’, 19, ‘男’ UNION
SELECT ‘Hall’, 16, ‘女’;
⑷ 示例:【一次插入多条相同记录到person表(字段有:first_name,last_name,age,gender)中】
INSERT INTO person
SELECT ‘Russell’, ‘Allan’, 14, ‘男’ UNION ALL
SELECT ‘Russell’, ‘Allan’, 14, ‘男’ UNION ALL
SELECT ‘Russell’, ‘Allan’, 14, ‘男’ UNION ALL
SELECT ‘Russell’, ‘Allan’, 14, ‘男’;
2、修改数据
语法:
UPDATE 表名
SET 列名1 = 新值, 列名2 = 新值
[WHERE 条件]
注意:如果不加WHERE条件,则会把数据表中所有的记录都修改掉
⑴ 示例:【修改user表中:所有的用户的信息:salary为5000】
UPDATE user
SET salary = 5000;
⑵ 示例:【修改user表中:id为5的用户的信息:salary为10000,last_name为’john’】
UPDATE user
SET last_name = ‘john’, salary = 10000
WHERE id = 5;
3、删除数据
DELETE
语法:
DELETE FROM 表名
[WHERE 条件]
注意:如果不加WHERE条件,则会把数据表中所有的记录都删除掉
TRUNCATE
语法:
TRUNCATE TABLE 表名
清空表
⑴ 示例:【删除user表中:id为8的用户信息】
DELETE FROM user
WHERE id = 8;
⑵ 示例:【清空user】
方式①
DELETE FROM user;
方式②
TRUNCATE TABLE user;
对比
⑴ DELETE后面可以加WHERE条件,而TRUNCATE后面不能加WHERE条件
⑵ 从删除表中所有数据来说,TRUNCATE的速度比DELETE的速度快
⑶ TRUNCATE清空表后,再次插入数据时,设置了自增长列的编号重新从头开始
⑷ TRUNCATE没有返回值(不管删除多少:0 rows affected),而DELETE有返回值(会根据删除的行提示 ? rows affected)
⑸ TRUNCATE删除数据后不能回滚,而DELETE删除数据后可以回滚