[MySQL]数据的增加(插入)、修改、删除与计算列

这篇具有很好参考价值的文章主要介绍了[MySQL]数据的增加(插入)、修改、删除与计算列。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


1. 插入数据

插入数据,即向已有的表中增加一条记录。

[MySQL]数据的增加(插入)、修改、删除与计算列

1.1 表的准备

# 使用 atguigudb
USE atguigudb;

# 新建表格
CREATE TABLE IF NOT EXISTS emp1 (
    id INT,
    `name` VARCHAR(15),
    hire_data DATE,
    salary DOUBLE(10, 2)
);

# 查看表的结构
DESC emp1;

[MySQL]数据的增加(插入)、修改、删除与计算列

1.2 一次添加一条记录

1.2.1 为表的所有字段按默认顺序插入数据

语法:

INSERT INTO 表名
VALUES (value1, value2, ...);

注意:值列表中需要为表的每一个字段指定值,并且值的顺序必须和数据表中字段定义时的顺序相同

# 向表 emp1 中插入一条记录
INSERT INTO emp1
VALUES (1, 'ZS', '2000-11-11', 3333);

SELECT * FROM emp1;

[MySQL]数据的增加(插入)、修改、删除与计算列

1.2.2 为表的指定字段插入数据

为表的指定字段插入数据,就是在INSERT语句中只向部分字段中插入值,而其他字段的值为表定义时的默认值

语法:

INSERT INTO 表名(column1 [column2, column3, ...])
VALUES (value1, [value2, value3, ...]);

注意:在 INSERT 子句中列出的列名顺序以及个数可以与定义表格时的顺序和个数不同,但是一旦列出,VALUES中要插入的value值需要与column列一一对应。如果不对应,将无法插入,并且MySQL会产生错误。

INSERT INTO emp1(id, hire_data, `name`, salary)
VALUES (2, '2001-12-12', 'LS', 4444);

SELECT * FROM emp1;

[MySQL]数据的增加(插入)、修改、删除与计算列

INSERT INTO emp1(id, `name`, salary)
VALUES (3, 'WW', 5555);

SELECT * FROM emp1;

[MySQL]数据的增加(插入)、修改、删除与计算列

1.3 一次添加多条记录

INSERT语句可以同时向数据表中插入多条记录,插入时指定多个值列表,每个值列表之间用逗号分隔开,基本语法格式如下:

INSERT INTO 表名
VALUES
(value1 [,value2, ..., valuen]),
(value1 [,value2, ..., valuen]),
......
(value1 [,value2, ..., valuen]);

或者

INSERT INTO 表名(column1 [, column2,, columnn])
VALUES
(value1 [,value2, ..., valuen]),
(value1 [,value2, ..., valuen]),
......
(value1 [,value2, ..., valuen]);
INSERT INTO emp1(id, `name`, salary)
VALUES (4, 'ZL', 6555),
       (5, 'LL', 6767);

SELECT * FROM emp1;

[MySQL]数据的增加(插入)、修改、删除与计算列

一个同时插入多行记录的INSERT语句等同于多个单行插入的INSERT语句,但是多行的INSERT语句在处理过程中 效率更高 。因为MySQL执行单条INSERT语句插入多行数据比使用多条INSERT语句快,所以在插入多条记录时最好选择使用单条INSERT语句的方式插入。

1.4 将查询结果插入到表中

INSERT还可以将SELECT语句查询的结果插入到表中,此时不需要把每一条记录的值一个一个输入,只需要使用一条INSERT语句和一条SELECT语句组成的组合语句即可快速地从一个或多个表中向一个表中插入多行。

语法:

INSERT INTO 目标表名
(tar_column1 [, tar_column2,, tar_columnn])
SELECT
(src_column1 [, src_column2,, src_columnn])
FROM 源表名
[WHERE condition]

将查询结果插入到表中,即在 INSERT 语句中加入子查询,不必书写 VALUES 子句,子查询中的字段应与 INSERT 子句中的字段对应

INSERT INTO emp1(id, `name`, salary, hire_data)
SELECT employee_id, last_name, salary, hire_date
FROM employees
WHERE department_id IN (70, 60);

SELECT * FROM emp1;

[MySQL]数据的增加(插入)、修改、删除与计算列

注意:被插入数据的表中要添加数据的字段的长度不能低于查询表中查询的字段的长度。如果被插入数据的表中要添加数据的字段的长度低于查询表中查询的字段的长度的话,就有添加不成功的风险。

2. 更新(修改)数据

更新(修改)数据,对表中已有的记录进行修改。

[MySQL]数据的增加(插入)、修改、删除与计算列

2.1 语法

UPDATE 表名
SET 字段名 =, [字段名 =, ...]
[WHERE 条件];

使用 WHERE 子句指定需要更新指定数据的记录;如果省略 WHERE 子句,则表中的所有记录的指定数据都将被更新。

2.2 修改指定记录的指定数据

UPDATE emp1
SET hire_data = '2020-12-11'
WHERE id = 5;

SELECT * FROM emp1;

[MySQL]数据的增加(插入)、修改、删除与计算列

2.3 修改所有记录的指定数据

UPDATE emp1
SET hire_data = '2021-11-11';
# WHERE id = 5;

SELECT * FROM emp1;

[MySQL]数据的增加(插入)、修改、删除与计算列

2.4 修改一条记录的多个字段

UPDATE emp1
SET hire_data = '2000-01-01', salary = 9999
WHERE id = 1;

SELECT * FROM emp1;

[MySQL]数据的增加(插入)、修改、删除与计算列

3. 删除数据

[MySQL]数据的增加(插入)、修改、删除与计算列

3.1 语法

DELETE FROM 表名
[WHERE 条件];

使用 WHERE 子句删除指定的记录;如果没有WHERE子句,DELETE语句将删除表中的所有记录。

3.2 删除指定记录

DELETE FROM emp1
WHERE id > 2;

SELECT * FROM emp1;

[MySQL]数据的增加(插入)、修改、删除与计算列

3.3 删除所有数据

DELETE FROM emp1;
# WHERE id > 2;

SELECT * FROM emp1;

[MySQL]数据的增加(插入)、修改、删除与计算列

4. 注意点

  • 在插入、删除、修改数据时,有可能因为约束的影响,导致插入、删除、修改数据失败。
  • DML操作默认情况下,执行完以后都会自动提交数据。如果希望执行完以后不自动提交数据,则需要使用 SET autocommit = FALSE

5. MySQL8新特性:计算列

计算列:简单来说就是某一列的值是通过别的列计算得来的

例如,a列值为1、b列值为2,c列不需要手动插入,定义a+b的结果为c的值,那么c就是计算列,是通过别的列计算得来的。当a或b列的值发生修改,c列的值也会对应修改。

在MySQL 8.0中,CREATE TABLE 和 ALTER TABLE 中都支持增加计算列。

计算可以提升查询数据时,需要查询出记录的某些列数据的计算结果的效率。使用计算列,不用在每次查询时每条记录都进行一次运算。

定义数据表tb1,然后定义字段id、字段a、字段b和字段c,其中字段c为计算列,用于计算a+b的值。

CREATE TABLE tb1
(
    id INT,
    a  INT,
    b  INT,
    # 计算列
    c  INT GENERATED ALWAYS AS (a + b) VIRTUAL
);

插入数据

INSERT INTO tb1(a,b) VALUES (100,200);

SELECT * FROM tb1;

[MySQL]数据的增加(插入)、修改、删除与计算列

更新数据

UPDATE tb1
SET a = 200
WHERE id IS NULL ;

SELECT * FROM tb1;

[MySQL]数据的增加(插入)、修改、删除与计算列文章来源地址https://www.toymoban.com/news/detail-405711.html

到了这里,关于[MySQL]数据的增加(插入)、修改、删除与计算列的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【头歌educoder数据表中数据的插入、修改和删除】

    1、本关任务:在library数据库的reader数据表中插入一条数据 姓名xm为林团团,电话号码dhhm为13507311234,其余字段取默认值 显示数据表的所有数据 2、本关任务: 在reader数据表中插入一位读者 读者证号是2,姓名是陈洁,性别是女,身份是教研人员,电话号码是13319551234 提示:

    2024年02月04日
    浏览(147)
  • C++中SQLite数据库操作实例:查询、增加、修改、删除一网打尽

      在C++中使用SQLite数据库需要使用SQLite的C/C++接口。以下是一个简单的示例,演示如何在C++中使用SQLite,并提供了常见的查询、增加、修改和删除功能。为了使用SQLite,你需要下载SQLite的C/C++接口,并链接到你的项目中。 首先,确保你已经下载了SQLite的C/C++接口,然后将头文件

    2024年02月04日
    浏览(50)
  • Iceberg从入门到精通系列之三:创建Iceberg表、修改表结构、插入数据、删除表

    Hive语法创建分区表,不会在元数据创建分区,而是将分区数据转换为Iceberg标识分区。 这种情况下不能使用Iceberg的分区转换,例如:days(timestamp),如果想要使用Iceberg格式表的分区转换标识分区,需要使用Spark或者Flink引擎创建表。 只支持HiveCatalog表修改表属性,Iceberg表属性和

    2024年02月11日
    浏览(89)
  • 数据结构课程设计题目——链表综合算法设计、带头双向循环链表、插入、显示、删除、修改、排序

      课程设计题目1–链表综合算法设计   一、设计内容   已知简单的人事信息系统中职工记录包含职工编号(no)、职工姓名(name)、部门名称(depname)、职称(title)和工资数(salary)等信息(可以增加其他信息),设计并完成一个简单的人事信息管理系统,要求完成但不

    2024年02月08日
    浏览(64)
  • 【数据结构】线性表(一)线性表的定义及其基本操作(顺序表插入、删除、查找、修改)

    目录 一、线性表 1. 线性表的定义 2. 线性表的要素 二、线性表的基本操作 三、线性表的顺序存储结构 1. 定义 2. 顺序表的操作       a. 插入操作 b. 删除操作 c. 查找操作 d. 修改操作 e. 代码实例          一个线性表是由零个或多个 具有相同类型的结点 组成的有序集合。

    2024年02月03日
    浏览(70)
  • 数据结构_链表_双向循环链表的初始化、插入、删除、修改、查询打印(基于C语言实现)

    版本: 2024年4月26日 V1.0 发布于博客园 目录 目录 双向循环链表公式 初始化双向循环链表 构建双向循环链表结点 创建一个空链表(仅头结点) 创建一个新结点 插入数据 头插 中插 尾插 删除数据 头删 中删 尾删 查询打印数据 遍历打印 测试 测试结果: 完整代码 DoubleCirLList.h

    2024年04月27日
    浏览(55)
  • 数据结构_链表_单向循环链表的初始化、插入、删除、修改、查询打印(基于C语言实现)

    版本: 2024年4月25日 V1.0 发布于博客园 目录 目录 单向循环链表公式 初始化单向循环链表 构建单向循环链表结点 创建一个空链表(仅头结点) 创建一个新结点 插入数据 头插 中插 尾插 删除数据 头删 中删 尾删 查询打印数据 遍历打印 测试 测试结果: 完整代码 CircularLinkedLis

    2024年04月25日
    浏览(51)
  • Elasticsearch 常用的增加、删除、修改、查询语句

    新增 删除 修改 批量增删改 查询 查询指定索引下全部数据 查询指定索引下指定id的数据 查询指定索引下全部数据 查询指定值(match) 在多个字段中查询指定值(multi_match) match、multi_match是模糊匹配,匹配时会对所查找的进行分词,然后按分词匹配查找。 term 查询

    2024年02月03日
    浏览(42)
  • Mybatis 插入、修改、删除

    前面几篇我们介绍了使用Mybatis查询数据,并且也了解了如何在Mybatis中使用JDK的日志系统打印日志;本篇我们继续介绍如何使用Mybatis完成数据的插入、修改和删除。 如果您对查询数据和Mybatis集成JDK日志系统不太了解,建议您先进行了解后再阅读本篇,可以参考: Mybatis查询数

    2024年02月10日
    浏览(39)
  • {MySQL} 数据库约束& 表的关系& 新增&&删除& 修改& 查询

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 提示:这里可以添加本文要记录的大概内容: 承接上文,继续讲一下MySQL 提示:以下是本篇文章正文内容,下面案例可供参考 NOT NULL - 指示某列不能存储 NULL 值。 UNIQUE - 保证某列的每行必须有唯一的值

    2024年02月03日
    浏览(65)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包