MySQL学习之DML操作

embedded/2024/12/19 14:38:55/

目录

插入

删除

修改

数据库事务

事务的特征(ACID原则)

原子性

一致性

隔离性

持久性

事务隔离级别

读未提交

读已提交

可重复读

序列化

脏读

虚读

幻读


插入

insert into 表名 values();

要求插入数据的数量,类型要和定义的表结构一致

insert into dept values(50,'BIGDATA','hefei');
insert into dept values(60,'AI','hefei');
insert into dept values(70,'AIGC','beijing');
insert into 表名(列名) values (值...);

要求插入数据的数量顺序和表名后的列要一致

INSERT into emp(empno,ename,deptno) values(6868,'wzq',10);
insert into 表名(列名) select... 

全量导入

create table dp as select * from dept where 1<>1;

这里创建了一个名为 dp 的新表,该表的数据是通过从 dept 表中选择满足 1<>1 条件的记录来获取的。然而,1<>1 这个条件永远为假,所以实际上不会从 dept 表中选择到任何记录,新创建的 dp 表将是一个空表。

create  table dp as select* from dept where 10<>3

在这个语句中,10<>3的条件始终为真,所以它会从dept表中选取所有的记录来创建新表dp

如果不是全局导入,只需要导入第几行到第几行,可以使用limit

在 MySQL 中,LIMIT 子句的正确语法应该是

LIMIT offset, count
-- offset 表示偏移量(起始行数,从 0 开始计数)
-- count 表示要获取的行数。

比如上一步中我只需要导入3-5行的数据,即偏移量为2,行数3

create  table dp as select* from dept where 10<>3 LIMIT 2,3;

增量导入

insert into dept(deptno,dname) select empno ,ename from emp;

删除

delete from 表名;
delete from 表名 where 条件
delete from emp where comm is null;
-- 这属于一种物理删除,删完之后理论上不能再找回,短时间内紧急联系网管
truncate table emp;

TRUNCATE TABLE emp; 是截断表 emp 的操作,会快速删除表中的所有数据,并重置表的相关属性,如自增主键的值等, 但它不会记录删除操作的日志,因此执行速度通常比 DELETE FROM emp; 更快。而 DELETE FROM 操作可以回滚(在支持事务的情况下)

修改

update 表名 set 列名=value,列名=value
update salgrade set losal=888,hisal=999;

这个操作会把losal列的值都改成888,hisal列的值都改成999

update 表名 set 列名=value,列名=value where 条件
update salgrade set losal = 666 ,hisal = 1888 where grade = 3;

数据库事务

数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。

事务指的是数据库一种保护数据的方式。

事务一般由增删改操作自动调用,不同提交的时机也是不同的。mysql数据库默认执行增删改就会提交事务,我们可以设置为手动提交 begin 或者 start transaction;

事务的特征(ACID原则)
原子性

事务是操作数据的最小单元,不可以再分

一致性

事务提交之后,整个数据库所看到数据都是最新的数据,所有人看到的数据都是一致的

隔离性

别人无法访问到我们未提交的数据,而且一旦这个数据被我修改,别人也无法进行操作

持久性

事务一旦被提交,数据库就进入到一个全新的状态,数据再也不能返回到上一个状态

事务如何开启和提交?

事务隔离级别

根据数据库的不同用途,我们可以对数据库的事务进行级别的设置,级别设置的越高,数据越安全,但是效率越低

读未提交

我们可以读取到别人未提交的数据,有可能产生脏读的问题

读已提交

只能读取别人提交后的数据,不能达到可重复读,但是可以避免脏读,有可能产生虚读或者幻读的情况

可重复读

当数据被我查询之后,别人就不能修改这个数据了,说明在我查询的时候已经有事务操作到这些数据,查询都会开启事务,但是不能防止别人查询别的数据。

序列化

当前数据库只能存在一个事务,但我操作数据库的时候,别人是不能访问数据库的,这时对于用户来讲数据相当安全,一般在倒库的时候才会开启这种级别。

脏读

读取别人未提交的数据,这个数据是不安全的。

虚读

第一次读取的数据,第二次在读取的时候有可能被被人修改了。

幻读

第一次读取的数据,第二次多了一条或者少了一条。


http://www.ppmy.cn/embedded/147040.html

相关文章

LeetCode hot100-79

https://leetcode.cn/problems/jump-game-ii/?envTypestudy-plan-v2&envIdtop-100-liked 45. 跳跃游戏 II 已解答 中等 相关标签 相关企业 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说&a…

Maven 中的引用与继承:构建项目的得力助手

《Maven 中的引用与继承&#xff1a;构建项目的得力助手》 在 Maven 的奇妙世界里&#xff0c;引用和继承就像是两位神通广大的魔法师&#xff0c;各自施展着独特的魔法&#xff0c;助力我们构建出强大而有序的项目。今天&#xff0c;就让我们一同深入探究这两位魔法师的奥秘吧…

物理信息神经网络(PINN)八课时教案

物理信息神经网络&#xff08;PINN&#xff09;八课时教案 第一课&#xff1a;物理信息神经网络概述 1.1 PINN的定义与背景 物理信息神经网络&#xff08;Physics-Informed Neural Networks&#xff0c;简称PINN&#xff09;是一种将物理定律融入神经网络训练过程中的先进方…

利用SpringAOP的返回通知处理数据加密返回

项目安全要求把所有返回值做加密处理&#xff0c;利用SpringAOP的返回切面可以简单方便的做到该需求。 Aspect public class ResponseDataEncryptAspect {private ObjectMapper objectMapper;public ResponseDataEncryptAspect () {this.objectMapper new ObjectMapper();// …

UE5安装Fab插件

今天才知道原来Fab也有类似Quixel Bridge的插件&#xff0c;于是立马就安装上了&#xff0c;这里分享一下安装方法 在Epic客户端 - 库 - Fab Library 搜索 Fab 即可安装Fab插件 然后重启引擎&#xff0c;在插件面板勾选即可 然后在窗口这就有了 引擎左下角也会多出一个Fab图标…

Redis List操作

Redis List操作 1、lPush 在名称为key的list左边&#xff08;头&#xff09;添加一个值为value的 元素 $redis->lPush(key, value);2、rPush 在名称为key的list右边&#xff08;尾&#xff09;添加一个值为value的 元素 $redis->rPush(key, value);3、lPushx/rPushx 在名…

bean创建源码

去字节面试&#xff0c;直接让人出门左拐&#xff1a;Bean 生命周期都不知道&#xff01; spring启动创建bean流程 下面就接上了 bean生命周期 doGetBean Object sharedInstance this.getSingleton(beanName); sharedInstance this.getSingleton(beanName, new ObjectF…

从零用java实现 小红书 springboot vue uniapp (5)购物页聊天页

前言 移动端演示 http://8.146.211.120:8081/#/ 前面的文章我们基本完成了个人中心页开发 今天我们具体的去进行实现购物页 聊天页 并且分享我开发时遇到的问题 首先先看效果 商品页 商品数据先用笔记数据 我们对布局整体规划一下 搜索组件 搜索组件是fiexd布局一直在页面…