MySQL数据库管理5

23.事务

1)事务:可以认为是做一件事情 需要多个SQL 要么同时成功 要么同时失败

需求:银行转账update 你的账户 把你的钱减少update 你朋友的账户 把他的钱增多这两个SQL不能只成功一个 要么都成功 要么都失败那么 我们就需要用到事务了 它可以把多个SQL放到一起执行 实现:显式事务 隐式事务区别:边界显式事务:有明显的开始 边界从begin开始 以commit or rollback结束后面再写要重新begin隐式事务:上一个事务的结束 就是上一个事务的开始设置语句后 从你写update insert delete开始就是事务的开始 写commit or rollback结束后面再写insert等SQL命令又是新的事务开始了 显式事务 begin;sql1;sql2;sql3;commit;(成功) or rollback;(恢复到原来的状态)隐式事务(没有明显的写begin)set autocommit=0; 禁止自动提交 需要输入commit完成事务update emp set sal=sal-1000 where empno=1003;update emp set sal=sal+1000 where empno=1006;commit;or rollback;set autocommit=1; 允许自动提交 update emp set sal=sal-1000 where empno=1003;这时自动commit了 rollback不起作用了每条单独的语句都是一个事务

隐式事务 set autocommit=0 禁止自动提交

2)事务的特点:

原子性(automic)SQL命令要么成功都成功 要么都失败

一致性(consistency)事务开始前和结束后是平衡的 一致的

隔离性(isolation)两个事务之间互不干涉 各自做各自的 一个事务不能干涉另一个事务的进行

示例:set autocommit=0;for update 加锁直到commit 或 rollback 以后 解除锁 另一个事务才可以运行成功select * from emp for update;  等待更新 我们再打开一个SQL对emp表作事务操作 发现不能操作update emp set sal=sal+1000 where empno=1006;

持久性(duryblity)commit之后永远不会发生改变了 rollback后也永远不会发生改变了

3)for update 加锁

只有加锁的事务commit 或 rollback以后 释放锁 另一个事务才会执行成功

24.MySQL底层

客户端:SQL命令

线程:处理多任务 处理多个连接客户端的任务

存储引擎:将数据存到表中 如果有索引 将会存到树中

查询缓存:提高查询速度 将之前的查询结果存到SQL中了 

SQL优化:硬件 内存 建立索引(重复少的)三范式建表 

explain:衡量SQL语句的好坏的工具

B树和B+树的区别-CSDN博客

25.存储引擎

1)innodb

MySQL默认的存储引擎 我们以前创建的表都是这种存储引擎

特点:

a.用一个文件存储索引和数据

b.支持事务

c.支持普通索引

d.在默认情况下 不支持全文索引(但做了处理 可以支持全文索引)

2)myisam

特点:

a.用三个文件存储数据 说明增删改速度慢 查询快(限制不严格)

b.不支持事务

c.支持全文索引

d.数据和索引分开存储

3)memory

4)blackhole

查看mysql数据库的存储地方

show variables like '%datadir%';

26.开发当中不想使用root用户(目前为止我们一直在用root用户) 

自己创建用户:

CREATE USER '用户名'@'localhost' IDENTIFIED BY '密码';CREATE USER 'jiehaowen'@'localhost' IDENTIFIED BY '123456';

创建完成后授权:操作MySQL 增删改查.......

grant all privileges 所有权限 on *.* 哪个表哪个库 to '用户名'@'localhost' grant all privileges on *.* to 'jiehaowen'@'localhost';

那么我们怎么使用呢 用管理员身份运行cmd 进入到下面的目录下

cd C:\Program Files\MySQL\MySQL Server 5.7\binmysql -ujiehaowen -p123456

28.一些函数 

1)date_format 把日期转换成符合格式的日期 '%Y-%m-%d %h:%i:%s'

创建log表create table log(log_id bigint primary key,log_dt varchar(90),u_id bigint);插入数据insert into log values(1,'2024-03-04 12:12:12',1);insert into log values(2,'2024-03-04 15:13:12',1);insert into log values(3,'2024-03-05 16:13:12',2);查询2023-03-04的记录 怎么查?1.使用百分号%xxx%2.如果必须用等号 应该怎么办呢 使用相应的函数select * from log where dat_foemat(log_dt,'%Y-%m-%d')='2023-03-04';显示年月日select date_format(log_dt,'%Y-%m-%d') dt,log_id,log_dt,u_id from log where date_format(log_dt,'%Y-%m-%d')='2024-03-04';显示年月select date_format(log_dt,'%Y-%m') dt,log_id,log_dt,u_id from log where date_format(log_dt,'%Y-%m-%d')='2024-03-04';显示年select date_format(log_dt,'%Y') dt,log_id,log_dt,u_id from log where date_format(log_dt,'%Y-%m-%d')='2024-03-04';显示小时select date_format(log_dt,'%Y-%m-%d %h') dt,log_id,log_dt,u_id from log where date_format(log_dt,'%Y-%m-%d')='2024-03-04';

2)date_add()

查询2024-03-05的用户数/2024-03-04的用户数 (环比)select a.user_cnt/b.user_cntfrom4号用户数(select count(distinct(u_id)) user_cn from log where date_format(log_dt,'%Y-%m-%d')=date_add('2024-03-05',interval-1 day);) a,5号用户数(select count(distinct(u_id)) user_cn from log where date_format(log_dt,'%Y-%m-%d')='2024-03-05';) b;笛卡尔积 一般不用 结果都是一条记录时可用

那么我们设置的这个日期是死的 怎么让他变成活得呢 可以将两个日期写成一个 然后使用

date_add('2024-03-05',interval-1 day); (环比)

date_add('2024-03-05',interval-1 month); (同比)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/900377.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

闭包和装饰器

什么是闭包 闭包(Closure)是 Python 中一个非常重要的概念,它是一种特殊的函数对象,通常用于封装和延迟计算某些值。以下是闭包的详细定义和解释: 1.闭包的定义 闭包是指一个函数对象,它不仅包含函数的代…

notepad++8.6.4安装及细节

notepad8.6.4下载安装(附安装包) 一、安装包下载1.1方法一:官网下载(点击跳转)1.2方法二:网盘链接分享8.6.4版本 二、安装过程细节2.1这里的组件建议全部勾选。点击“下一步”。2.2 勾选①:可以…

COZE通关指南:工作流与插件开发

前言 本文隶属于专栏《AI Agent 通关指南》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见《AI Agent 通关指南》 正文 1. 平台基础介绍 🌟 1.1 COZE平台概述 COZE平台(coze.cn)是一个强大的AI应用开发平台…

【Block总结】ENLTransformerBlock,高效非局部变换器块|即插即用

1. 论文信息 标题: Perspective+ Unet: Enhancing Segmentation with Bi-Path Fusion and Efficient Non-Local Attention for Superior Receptive Fields论文地址: arXiv:2406.14052 2. 创新点 双路径编码策略: 在编码器阶段引入双路径策略,结合传统卷积和空洞卷积的结果,平…

【爬虫】网易云音乐评论数据爬取

文章目录 🍖 前言🎶一、抓取要求✨二、代码展示🏀三、运行结果🏆四、知识点提示 🍖 前言 【爬虫】网易云音乐歌词/评论数据爬取 🎶一、抓取要求 描述: 输入歌曲的id,获取对应歌曲的用户评论信…

C++使用Qt Charts创建数据可视化图表

Qt Charts 是一个强大的工具,用于创建直观的数据可视化图表。本文将通过一个具体的示例,展示如何使用 Qt Charts 创建一个包含多条数据序列、自定义坐标轴和随机数据生成的图表。 示例代码解析 以下是一个完整的示例代码,展示如何使用 Qt Ch…

TCP/IP五层协议

目录 1. 五层模型结构 2. 各层核心功能与协议 (1) 应用层(Application Layer) (2) 传输层(Transport Layer) (3) 网络层(Network Layer) (4) 数据链路层(Data Link Layer) (5…

【最新版】金媒婚恋系统v10.5最新稳定开源+原生前端小程序 PC端+安装教程

一.系统简介 1. 红娘服务 红娘服务模块是该系统的一大特色。专业红娘会通过分析用户的个人资料和偏好, 为用户提供精准的配对建议和个性化服务。用户可以预约红娘服务,通过红娘的介入,提升配对成功率。 2. 相亲活动 相亲活动模块用于组织和管…

吴恩达深度学习复盘(5)神经网络的前向传播TesorFlow与NumPy实现比对

数据结构差别 NumPy 和 TensorFlow 在数据表示上的差异展开,结合神经网络实践中的常见问题进行说明。以下是详细解析: 一、简介 数据表示的历史背景 NumPy 是 Python 科学计算的基础库,早期设计为处理多维数组TensorFlow 由 Google Brain 团…

多元高斯分布函数

1、 n n n元向量 假设 n n n元随机变量 X X X X [ X 1 , X 2 , ⋯ , X i , ⋯ , X n ] T μ [ μ 1 , μ 2 , ⋯ , μ i , ⋯ , μ n ] T σ [ σ 1 , σ 2 , ⋯ , σ i , ⋯ , σ n ] T X i ∼ N ( μ i , σ i 2 ) \begin{split} X&[X_1,X_2,\cdots,X_i,\cdots ,X_n…

洞察 Linux 进程管理

一、进程和线程的概念 1.进程 (1)概念 进程是程序在操作系统中的一次执行过程,是系统进行资源分配和调度的基本单位。进程是程序的执行实例,拥有独立的资源(如内存、文件描述符等)。每个进程在创建时会被…

PyTorch 实现图像版多头注意力(Multi-Head Attention)和自注意力(Self-Attention)

本文提供一个适用于图像输入的多头注意力机制(Multi-Head Attention)PyTorch 实现,适用于 ViT、MAE 等视觉 Transformer 中的注意力计算。 模块说明 输入支持图像格式 (B, C, H, W)内部转换为序列 (B, N, C),其中 N H * W多头注…

每日一题(小白)字符串娱乐篇16

分析题意可以了解到本题要求在一串字符串中找到所有组合起来排序递增的字符串。我们可以默认所有字符在字符串中的上升序列是1,从第一个字符开始找,如果后面的字符大于前面的字符就说明这是一个上序列那么后面字符所在的数组加一,如果连接不上…

Ubuntu 22 Linux上部署DeepSeek R1保姆式操作详解(Xinference方式)

一、安装步骤 1.基础环境安装 安装显卡驱动、cuda,根据自己硬件情况查找相应编号,本篇不介绍这部分内容,只给出参考指令,详情请读者自行查阅互联网其它参考资料。 sudo apt install nvidia-utils-565-server sudo apt install…

Immutable.js 完全指南:不可变数据的艺术与实践

引言 在现代前端开发中,状态管理是一个核心挑战。随着应用复杂度增加,如何高效、安全地管理应用状态变得至关重要。Immutable.js 是 Facebook 推出的一个 JavaScript 库,它提供了持久化不可变数据结构,可以帮助开发者更好地管理应…

字符串数据类型的基本运算

任务描述 本关任务:从后台输入任意三个字符串,求最大的字符串。 相关知识 字符串本身是存放在一块连续的内存空间中,并以’\0’作为字符串的结束标记。 字符指针变量本身是一个变量,用于存放字符串的第 1 个字符的地址。 字符数…

Ubuntu 22.04 一键部署openManus

openManus 前言 OpenManus-RL,这是一个专注于基于强化学习(RL,例如 GRPO)的方法来优化大语言模型(LLM)智能体的开源项目,由来自UIUC 和 OpenManus 的研究人员合作开发。 前提要求 安装deepseek docker方式安装 ,windows 方式安装,Linux安装方式

PDF 转图片,一行代码搞定!批量支持已上线!

大家好,我是程序员晚枫。今天我要给大家带来一个超实用的功能——popdf 现在支持 PDF 转图片了,而且还能批量操作!是不是很激动?别急,我来手把手教你玩转这个功能。 1. 一行代码搞定单文件转换 popdf 的核心就是简单暴…

《比特城的机密邮件:加密、签名与防篡改的守护之战》

点击下面图片带您领略全新的嵌入式学习路线 🔥爆款热榜 88万阅读 1.6万收藏 第一章:风暴前的密令 比特城的议会大厅内,首席长老艾德文握着一卷足有半人高的羊皮纸,眉头紧锁。纸上是即将颁布的《新纪元法典》——这份文件不仅内…

8.用户管理专栏主页面开发

用户管理专栏主页面开发 写在前面用户权限控制用户列表接口设计主页面开发前端account/Index.vuelangs/zh.jsstore.js 后端Paginator概述基本用法代码示例属性与方法 urls.pyviews.py 运行效果 总结 欢迎加入Gerapy二次开发教程专栏! 本专栏专为新手开发者精心策划了…