前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基础SQL-DML语句-对数据库表数据增删改

基础SQL-DML语句-对数据库表数据增删改

作者头像
Devops海洋的渔夫
发布2022-01-17 14:08:54
2600
发布2022-01-17 14:08:54
举报
文章被收录于专栏:Devops专栏

5. 基础SQL-DML语句-对数据库表数据增删改

分类

描述

关键字

DML(Data Manipulation Language)数据操作语言

用来对数据库中表的数据进行增删改

insert,delete, update等

1. 新增记录

1.1 新增全部字段数据

  • 罗列所有的字段 INSERT INTO 表名 (字段名1, 字段名2, 字段名3…) VALUES (值1, 值2, 值3);
  • 不写字段名 INSERT INTO 表名 VALUES (值1, 值2, 值3…); 此时值的个数,顺序,类型要和数据库表字段的个数,顺序,类型保持一致

1.2 新增部分字段数据

INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...);

1.3 关键字说明及注意事项

代码语言:javascript
复制
1. 关键字说明
   INSERT INTO 表名 //表示往哪张表中添加数据
   (字段名1, 字段名2, …)  //要给哪些字段设置值
   VALUES (值1, 值2, …); //设置具体的值
2. 注意
   值与字段个数,顺序,类型都必须对应
   值的数据大小必须在字段的长度范围内
   除了数值类型外,其它的字段类型的值必须使用引号引起。(建议单引号)
   如果要插入空值,可以不写字段,或者插入null

具体操作:

代码语言:javascript
复制
-- 添加一条记录(罗列所有字段方式): 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('柳岩','女');

示例如下:

代码语言:javascript
复制
-- 查看当前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> 

2. 蠕虫复制

什么是蠕虫复制:

在已有的数据基础之上,将原来的数据进行复制,插入到对应的表中

语法格式:

INSERT INTO 表名1 SELECT * FROM 表名2;

作用:将表名2 中的数据复制到 表名1 中

具体操作:

代码语言:javascript
复制
-- 1.快速创建一张stu2表,结构与stu一样
create table stu2 like stu;

-- 2.查询stu2表结构和表中的数据
desc stu2;
select * from stu2;

-- 3.蠕虫复制stu表中的数据到stu2表中
insert into stu2 select * from stu;

示例如下:

代码语言:javascript
复制
-- 创建表结构与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> 

3. 更新表记录

sql格式

  • 不带条件修改数据 UPDATE 表名 SET 字段名=值,字段名=值;
  • 带条件修改数据 UPDATE 表名 SET 字段名=值 WHERE 字段名=值 AND字段名称=值;

关键字说明

代码语言:javascript
复制
update // 修改数据
set //修改哪些字段
where 条件; //指定条件

具体操作:

代码语言:javascript
复制
-- 需求:修改表中的性别为'女'
update stu set sex='女'; 
-- 需求:将表中id为1的性别改为男
update stu set sex='男' where id=1;

示例如下:

代码语言:javascript
复制
-- 查看当前表数据
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> 

4. 删除表记录

  • 不带条件删除数据 DELETE FROM 表名;
  • 根据条件删除数据 DELETE FROM 表名 WHERE 字段名=值;
  • truncate删除表记录 TRUNCATE TABLE 表名;
代码语言:javascript
复制
 truncate和delete的区别:
  delete是将表中的数据一条一条删除
  truncate是将整个表摧毁,重新创建一个新的表,新的表结构和原来表结构一模一样

具体操作:

代码语言:javascript
复制
-- 需求:删除id为2的学生信息
delete from stu where id=2;

-- 需求:删除整张表中的所有数据
delete from stu;
truncate table stu;

示例如下:

代码语言:javascript
复制
-- 查询当前的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> 
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-02-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 海洋的渔夫 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 5. 基础SQL-DML语句-对数据库表数据增删改
    • 1. 新增记录
      • 1.1 新增全部字段数据
      • 1.2 新增部分字段数据
      • 1.3 关键字说明及注意事项
    • 2. 蠕虫复制
      • 什么是蠕虫复制:
      • 语法格式:
    • 3. 更新表记录
      • sql格式
      • 关键字说明
    • 4. 删除表记录
    相关产品与服务
    数据库
    云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档