四、MySQL之增删改

一、插入数据

1.1、VALUES的方式添加

使用这种语法一次只能向表中插入一条数据。

1.1.1、为表的所有字段按默认顺序插入数据
INSERT INTO 表名
VALUES (value1,value2,....);

// 值列表中需要为表的每一个字段指定值,并且值的顺序必须和数据表中字段定义时的顺序相同。
1.1.2、为表的指定字段插入数据
INSERT INTO 表名(column1 [, column2, ..., columnn])
VALUES (value1 [,value2, ..., valuen]);

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

在 INSERT 子句中随意列出列名,但是一旦列出,VALUES中要插入的value1,....valuen需要与 column1,...columnn列一一对应。如果类型不同,将无法插入,并且MySQL会产生错误。

1.1.3、同时插入多条记录
INSERT INTO table_name
VALUES
(value1 [,value2, ..., valuen]),
(value1 [,value2, ..., valuen]),
......
(value1 [,value2, ..., valuen]);

或者

INSERT INTO table_name(column1 [, column2, ..., columnn])
VALUES
(value1 [,value2, ..., valuen]),
(value1 [,value2, ..., valuen]),
......
(value1 [,value2, ..., valuen]);

小结:

VALUES 也可以写成 VALUE ,但是VALUES是标准写法。

字符和日期型数据应包含在单引号中。

1.2、将查询结果插入到表中

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 子句中的列名对应。

二、更新数据

UPDATE table_name
SET column1=value1, column2=value2, ... , column=valuen
[WHERE condition]
  • 可以一次更新多条数据。
  • 如果需要回滚数据,需要保证在DML前,进行设置:SET AUTOCOMMIT = FALSE;
  • 使用 WHERE 子句指定需要更新的数据。
  • 如果省略 WHERE 子句,则表中的所有数据都将被更新。

三、删除数据

DELETE FROM table_name [WHERE <condition>];

-- table_name指定要执行删除操作的表;"[WHERE ]"为可选参数,指定删除条件,如果没有WHERE子句,
DELETE语句将删除表中的所有记录。

四、MySQL8新特性:计算列

什么叫计算列呢?简单来说就是某一列的值是通过别的列计算得来的。例如,a列值为1、b列值为2,c列不需要手动插入,定义a+b的结果为c的值,那么c就是计算列,是通过别的列计算得来的。

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

CREATE TABLE tb1(
    id INT,
    a INT,
    b INT,
    c INT GENERATED ALWAYS AS (a + b) VIRTUAL
);
相关推荐
运维佬4 分钟前
在 MySQL 8.0 中,SSL 解密失败,在使用 SSL 加密连接时出现了问题
mysql·adb·ssl
Leo.yuan9 分钟前
数据量大Excel卡顿严重?选对报表工具提高10倍效率
数据库·数据分析·数据可视化·powerbi
Runing_WoNiu18 分钟前
MySQL与Oracle对比及区别
数据库·mysql·oracle
天道有情战天下39 分钟前
mysql锁机制详解
数据库·mysql
看山还是山,看水还是。41 分钟前
Redis 配置
运维·数据库·redis·安全·缓存·测试覆盖率
谷新龙00144 分钟前
Redis运行时的10大重要指标
数据库·redis·缓存
CodingBrother1 小时前
MySQL 中单列索引与联合索引分析
数据库·mysql
精进攻城狮@1 小时前
Redis缓存雪崩、缓存击穿、缓存穿透
数据库·redis·缓存
小酋仍在学习1 小时前
光驱验证 MD5 校验和
数据库·postgresql
keep__go1 小时前
Linux 批量配置互信
linux·运维·服务器·数据库·shell