当前位置: 首页 > news >正文

MySQL(11):数据处理之增删改

插入数据

方式1: 一条一条的添加数据

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

INSERT INTO 表名
VALUES (value1,value2,....);
# 没有指明添加的字段
INSERT INTO emp1
VALUES (1,'TOM','2023-11-06',3400);

在这里插入图片描述
没有指明添加的字段,要按照声明顺序,进行字段添加。

为表的所有字段按指明顺序插入数据
INSERT语句中只向部分字段中插入值,而其他字段的值为表定义时的默认值。
INSERT 子句中随意列出列名,但是一旦列出,VALUES中要插入的value1,....valuen需要与column1,...columnn列一一对应。

INSERT INTO 表名(column1 [, column2,, columnn])
VALUES (value1 [,value2,, valuen]);
# 指明要添加的字段
INSERT INTO emp1(id,hire_date,salary,`name`)
VALUES(2,'1999-09-09',4000,'Jerry');

在这里插入图片描述

# 说明:没有进行赋值的hire_date 的值为 null
INSERT INTO emp1(id,salary,`name`)
VALUES(3,4500,'shk');

在这里插入图片描述
可以同时插入多条记录

INSERT INTO table_name
VALUES
(value1 [,value2,, valuen]),
(value1 [,value2,, valuen]),
……
(value1 [,value2,, valuen]);
INSERT INTO emp1(id,NAME,salary)
VALUES
(4,'Jim',5000),
(5,'张俊杰',5500);

在这里插入图片描述

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

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

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

INSERT INTO emp1(id,NAME,salary,hire_date)
#查询语句
SELECT employee_id,last_name,salary,hire_date  # 查询的字段一定要与添加到的表的字段一一对应
FROM employees
WHERE department_id IN (70,60);

在这里插入图片描述
说明:emp1表中要添加数据的字段的长度不能低于employees表中查询的字段的长度。
如果emp1表中要添加数据的字段的长度低于employees表中查询的字段的长度的话,就有添加不成功的风险。

更新数据

UPDATE table_name
SET column1=value1, column2=value2,..., columnn=valuen
[WHERE condition]

可以一次更新多条数据。
如果需要回滚数据,需要保证在DML前,进行设置:SET AUTOCOMMIT = FALSE;

#同时修改一条数据的多个字段
UPDATE emp1
SET hire_date = CURDATE(),salary = 6000
WHERE id = 4;

使用 WHERE 子句指定需要更新的数据。

在这里插入图片描述
修改数据时,是可能存在不成功的情况的。(可能是由于约束的影响造成的)

删除数据

DELETE FROM table_name
[WHERE condition];

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

DELETE FROM emp1
WHERE id = 1;#在删除数据时,也有可能因为约束的影响,导致删除失败
DELETE FROM departments
WHERE department_id = 50;

在这里插入图片描述

小结:DML操作默认情况下,执行完以后都会自动提交数据。
如果希望执行完以后不自动提交数据,则需要使用 SET autocommit = FALSE.

计算列

计算列:简单来说就是某一列的值是通过别的列计算得来的。
在MySQL 8.0中,CREATE TABLEALTER TABLE 中都支持增加计算列。

CREATE TABLE test1(
a INT,
b INT,
c INT GENERATED ALWAYS AS (a + b) VIRTUAL  #字段c即为计算列
);
INSERT INTO test1(a,b)
VALUES(10,20);
SELECT * FROM test1;

在这里插入图片描述

UPDATE test1
SET a = 100;

在这里插入图片描述

数据库学习视频:
【MySQL数据库入门到大牛,mysql安装到优化,百科全书级,全网天花板】

http://www.lryc.cn/news/225125.html

相关文章:

  • QT QDockWidget
  • Android 12.0 开启蓝牙状态栏即显示蓝牙图标
  • skynet学习笔记02— skynet介绍、skynet基础API与环境变量
  • Android---App 崩溃
  • DocTemplateTool - 可根据模板生成word或pdf文件的工具
  • Python+reuqests自动化接口测试
  • 【Java 进阶篇】保护你的应用:Java 过滤器实现敏感词汇过滤
  • 目标检测网络系列——YOLO V4
  • 如何在Linux上部署1Panel运维管理面板并远程访问内网进行操作
  • CentOS系统安装vsftpd
  • 手握“发展密钥”,TCL科技或迎价值重估?
  • A star算法
  • node插件MongoDB(四)—— 库mongoose 操作文档使用(新增、删除、更新、查看文档)(二)
  • JavaFX入门和网格布局面板的使用,Dao层交互,舞台与场景切换以及其他控件的使用
  • 数据中台之数据分析
  • 龙芯loongarch64服务器编译安装scipy
  • ubuntu(18.04)中安装open babel docker镜像并在php项目中调用容器中的obabel命令解析结果使用
  • 02-PostgreSQL的基本使用
  • uniapp 实现路线规划
  • C语言C位出道心法(五):内存管理
  • Flink之SQL客户端与DDL操作
  • 记录第一次银行测试岗面试【总结几点面试不要犯得错误】
  • 一篇带你精通php
  • Go 语言函数
  • 前端小技巧: 拍平数组的6种常见方法
  • c++day6
  • LeetCode(1)合并两个有序数组【数组/字符串】【简单】
  • 剪贴板管理软件 Paste Wizard mac中文版功能特色
  • 【数据结构】树的基本性质(计算树的总结点数与叶结点数)
  • android手机平板拓展电脑屏幕