分类 | 描述 | 关键字 |
---|---|---|
DML(Data Manipulation Language)数据操作语言 | 用来对数据库中表的数据进行增删改 | insert,delete, update等 |
INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...);
1. 关键字说明
INSERT INTO 表名 //表示往哪张表中添加数据
(字段名1, 字段名2, …) //要给哪些字段设置值
VALUES (值1, 值2, …); //设置具体的值
2. 注意
值与字段个数,顺序,类型都必须对应
值的数据大小必须在字段的长度范围内
除了数值类型外,其它的字段类型的值必须使用引号引起。(建议单引号)
如果要插入空值,可以不写字段,或者插入null
具体操作:
-- 添加一条记录(罗列所有字段方式): id为1,姓名为tom,性别为男,生日为2020-05-20
insert into stu (id,name,sex,birthday) values (1,'tom','男','2020-05-20');
-- 添加一条记录(省去字段名称不写方式): id为2,姓名为汤姆,性别为男,生日为2020-05-21
insert into stu values (2,'汤姆','男','2020-05-21');
-- 添加一条记录:姓名为柳岩,性别为女
insert into stu (name,sex) values('柳岩','女');
示例如下:
-- 查看当前stu表数据
mysql> select * from stu;
Empty set (0.00 sec)
-- 添加一条记录(罗列所有字段方式): id为1,姓名为tom,性别为男,生日为2020-05-20
mysql> insert into stu (id,name,sex,birthday) values (1,'tom','男','2020-05-20');
Query OK, 1 row affected (0.00 sec)
-- 可以查看成功添加数据
mysql> select * from stu;
+------+------+------+------------+
| id | name | sex | birthday |
+------+------+------+------------+
| 1 | tom | 男 | 2020-05-20 |
+------+------+------+------------+
1 row in set (0.00 sec)
-- 添加一条记录(省去字段名称不写方式): id为2,姓名为汤姆,性别为男,生日为2020-05-21
mysql> insert into stu values (2,'汤姆','男','2020-05-21');
Query OK, 1 row affected (0.00 sec)
-- 可以查看成功添加数据
mysql> select * from stu;
+------+--------+------+------------+
| id | name | sex | birthday |
+------+--------+------+------------+
| 1 | tom | 男 | 2020-05-20 |
| 2 | 汤姆 | 男 | 2020-05-21 |
+------+--------+------+------------+
2 rows in set (0.00 sec)
-- 添加一条记录:姓名为柳岩,性别为女
mysql> insert into stu (name,sex) values('柳岩','女');
Query OK, 1 row affected (0.00 sec)
-- 查询stu表数据
mysql> select * from stu;
+------+--------+------+------------+
| id | name | sex | birthday |
+------+--------+------+------------+
| 1 | tom | 男 | 2020-05-20 |
| 2 | 汤姆 | 男 | 2020-05-21 |
| NULL | 柳岩 | 女 | NULL |
+------+--------+------+------------+
3 rows in set (0.00 sec)
mysql>
在已有的数据基础之上,将原来的数据进行复制,插入到对应的表中
INSERT INTO 表名1 SELECT * FROM 表名2;
作用:将表名2 中的数据复制到 表名1 中
具体操作:
-- 1.快速创建一张stu2表,结构与stu一样
create table stu2 like stu;
-- 2.查询stu2表结构和表中的数据
desc stu2;
select * from stu2;
-- 3.蠕虫复制stu表中的数据到stu2表中
insert into stu2 select * from stu;
示例如下:
-- 创建表结构与stu表一致的表stu2
mysql> create table stu2 like stu;
Query OK, 0 rows affected (0.02 sec)
-- 查看创建好的stu2表结构
mysql> desc stu2;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
| sex | varchar(10) | YES | | NULL | |
| birthday | date | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
-- 查看当前stu2的表数据
mysql> select * from stu2;
Empty set (0.00 sec)
-- 蠕虫复制
mysql> insert into stu2 select * from stu;
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0
-- 再次查询stu2的数据
mysql> select * from stu2;
+------+--------+------+------------+
| id | name | sex | birthday |
+------+--------+------+------------+
| 1 | tom | 男 | 2020-05-20 |
| 2 | 汤姆 | 男 | 2020-05-21 |
| NULL | 柳岩 | 女 | NULL |
+------+--------+------+------------+
3 rows in set (0.00 sec)
mysql>
update // 修改数据
set //修改哪些字段
where 条件; //指定条件
具体操作:
-- 需求:修改表中的性别为'女'
update stu set sex='女';
-- 需求:将表中id为1的性别改为男
update stu set sex='男' where id=1;
示例如下:
-- 查看当前表数据
mysql> select * from stu;
+------+--------+------+------------+
| id | name | sex | birthday |
+------+--------+------+------------+
| 1 | tom | 男 | 2020-05-20 |
| 2 | 汤姆 | 男 | 2020-05-21 |
| NULL | 柳岩 | 女 | NULL |
+------+--------+------+------------+
3 rows in set (0.00 sec)
-- 修改所有数据的sex为 女
mysql> update stu set sex='女';
Query OK, 2 rows affected (0.00 sec)
Rows matched: 3 Changed: 2 Warnings: 0
-- 查看确认修改后的表数据
mysql> select * from stu;
+------+--------+------+------------+
| id | name | sex | birthday |
+------+--------+------+------------+
| 1 | tom | 女 | 2020-05-20 |
| 2 | 汤姆 | 女 | 2020-05-21 |
| NULL | 柳岩 | 女 | NULL |
+------+--------+------+------------+
3 rows in set (0.00 sec)
-- 根据条件 id=1 修改数据的 sex 为 男
mysql> update stu set sex='男' where id=1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
-- 查看修改后的数据
mysql> select * from stu;
+------+--------+------+------------+
| id | name | sex | birthday |
+------+--------+------+------------+
| 1 | tom | 男 | 2020-05-20 | -- sex 改为 男
| 2 | 汤姆 | 女 | 2020-05-21 |
| NULL | 柳岩 | 女 | NULL |
+------+--------+------+------------+
3 rows in set (0.00 sec)
mysql>
truncate和delete的区别:
delete是将表中的数据一条一条删除
truncate是将整个表摧毁,重新创建一个新的表,新的表结构和原来表结构一模一样
具体操作:
-- 需求:删除id为2的学生信息
delete from stu where id=2;
-- 需求:删除整张表中的所有数据
delete from stu;
truncate table stu;
示例如下:
-- 查询当前的stu表数据
mysql> select * from stu;
+------+--------+------+------------+
| id | name | sex | birthday |
+------+--------+------+------------+
| 1 | tom | 男 | 2020-05-20 |
| 2 | 汤姆 | 女 | 2020-05-21 |
| NULL | 柳岩 | 女 | NULL |
+------+--------+------+------------+
3 rows in set (0.00 sec)
-- 删除id为2的学生信息
mysql> delete from stu where id=2;
Query OK, 1 row affected (0.00 sec)
-- 查看删除后的表数据
mysql> select * from stu;
+------+--------+------+------------+
| id | name | sex | birthday |
+------+--------+------+------------+
| 1 | tom | 男 | 2020-05-20 |
| NULL | 柳岩 | 女 | NULL |
+------+--------+------+------------+
2 rows in set (0.00 sec)
-- 删除全表的数据
mysql> delete from stu;
Query OK, 2 rows affected (0.00 sec)
mysql> select * from stu;
Empty set (0.00 sec)
-- 蠕虫复制,将数据重新写入 stu
mysql> insert into stu select * from stu2;
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0
-- 查询 stu 表数据
mysql> select * from stu;
+------+--------+------+------------+
| id | name | sex | birthday |
+------+--------+------+------------+
| 1 | tom | 男 | 2020-05-20 |
| 2 | 汤姆 | 男 | 2020-05-21 |
| NULL | 柳岩 | 女 | NULL |
+------+--------+------+------------+
3 rows in set (0.00 sec)
-- 摧毁 stu 表并重新创建 stu 表
mysql> truncate table stu;
Query OK, 0 rows affected (0.01 sec)
-- 查看 stu 表数据
mysql> select * from stu;
Empty set (0.00 sec)
mysql>