四、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
);
相关推荐
码luffyliu3 分钟前
踩坑记:Go + MySQL 时区处理导致时间显示差 8 小时
mysql·go
拾贰_C6 分钟前
【CentOS | MySQL | uninstall】关于安装的MySQL与系统版本不匹配问题,MySQL卸载与重装
mysql·adb·centos
高铭杰9 分钟前
Postgresql源码(157)Redo系列MultiXact Redo (RM_MULTIXACT_ID = 6)
数据库·postgresql
05大叔16 分钟前
mysql 触发器,锁
数据库·mysql·oracle
大鹏说大话17 分钟前
拒绝“慢查询”:SQL性能优化实战与索引的双刃剑效应
数据库·oracle
小狼只想在飞船上收庄稼20 分钟前
Linux 信号机制--续1
数据库
MoSTChillax21 分钟前
新手 3 个文件跑通前端 + Flask + MySQL(最小可行 CRUD)
数据库·python·mysql·flask
梦想的旅途221 分钟前
企微客户自动触达 API:实现全生命周期的自动化消息路由
数据库·自动化·企业微信
shyの同学23 分钟前
SQL 谓词下推带来的潜在问题
数据库·sql·mysql
x_lrong26 分钟前
LangChain&Redis记忆
数据库·redis·langchain·向量数据库