N天爆肝数据库——MySQL(4)

news2024/10/5 19:20:57

本篇文章,主要对多表查询,事务以及体系结构进行知识总结和学习。

期待和大家一起学习进步。

在这里插入图片描述

标量子查询

 子查询返回的结果是单个值(数字、字符串、日期等),最简单的形式,这种
 	子查询称标量子查询。
 常用的操作符:=、<>、>、>=、<、<=

列子查询

列子查询返回的结果是一列(可以是多行),这种子查询称为列子查询

在这里插入图片描述

常用的操作符:
	IN		在指定的集合范围之内,多选一
	NOT IN	不在指定的集合范围之内
	ANY		子查询返回列表中,有任意一个满足即可
	SOMEANY等同,使用SOME的地方都可以使用ANY
	ALL		子查询返回列表的所有值都必须满足

行子查询

子查询返回的结果是一行(可以是多列),这种子查询称为行子查询。
 常用的操作符:=、<>、IN、NOT、IN

在这里插入图片描述

表子查询

子查询返回的结果是多行多列,这种子查询称为表子查询
常用操作符:IN

多表查询小结

多表关系:

一对一:用于表结构拆分,在其中任何一方设置外键(UNIQUE),关联另一方
	   的主键
多对多:建立中间表,中间表包含两个外键,关联两张表的主键
一对多:在多的一方设置外键,关联一的一方的主键

多表查询:

内连接:

隐式:SELECT 字段列表 FROM 表1,表2 WHERE 条件...;
显示:SELECT 字段列表 FROM 表1[INNER]JOIN表2 ON连接条件...;

在这里插入图片描述

外连接:

左外:SELECT 字段列表 FROM 表1 LEFT [OUTER]JOIN表2 ON条件...;
右外:SELECT 字段列表 FROM 表1 RIGHT [OUTER]JOIN表2 ON条件...;

自连接:

SELECT 字段列表 FROM 表A 别名A JOIN 表A 别名B ON条件...;

子查询:

标量子查询、列子查询、行子查询、表子查询

事务

简介

事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作
为一个整体一起向系统提交或撤销操作请求,即这些操作要么同
时成功,要么同时失败。
默认MySQL的事务是自动提交的,也就是说,当执行一条DML语句,MySQL会立即
隐式的提交事务。

事务操作

查看/设置事务提交方式
SELECT @@autocomment;
SET @@autocomment = 0;

提交事务

 COMMENT;

回滚事务

 ROLLBACK;

开启事务

START TRANSACTION或BEGIN;

事务四大特性(ACID)

原子性:事务是不可分割的最小分割单元,要么全部成功,要么全部失败。
一致性:事务完成时,必须使所有的数据都保持一致状态。
隔离性:数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立
		环境下运行。
持久性:事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。

并发事务问题

脏读 :一个事务读到另外一个事务还没有提交的数据。
不可重复读:一个事务先后读取一条记录,但两次读取的数据不同,称之为不可
		重复读。
幻读:一个事务按照条件查询数据时,没有对应的数据行,但是在插入数据时,
又发现		  这行数据已经存在,好像出现了“幻影”。

在这里插入图片描述

对比

事务隔离级别脏读不可重复读幻读
Read uncommitted 读未提交
Read committed 读已提交×
Repeatable Read(默认) 可重复读××
Serializable 串行化×××

查看事务隔离级别

SELLECT @@TRANSACTION_ISOLATION;

设置事务隔离级别

SET[SESSION|GLOBAL] TRANSACTION ISOLATION LEVEL[READ UNCOMMITTED | READ 	
COMMITTED | REPEATABLE READ | SERIAUZABLE] 

总结

事务简介

事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作
为一个

事务操作

	START TRANSACTION或BEGIN;--开启事务
COMMENT;/ROLLBACK;--提交事务/回滚事务

事务四大特性(ACID)

	原子性、一致性、隔离性、持久性

并发事务问题

脏读、不可重复读、幻读

事务隔离级别

READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ、SERIAUZABLE

MySQL体系结构:连接层,服务层,引擎层,存储层

连接层

最上层是一些客户端和链接服务,主要完成一些类似于连接处理、授权认证、
及相关的安全方案。服务器也会为安全接入的每个客户端验证它所具有的操作
权限。

服务层

第二层架构主要完成大多数的核心服务功能,如SQL接口,并完成缓存的查询,
SQl的分析和优化,部分内置函数的执行。所有跨存储引擎的功能也在这一层
实现,如,过程,函数等。

引擎层
存储引擎真正的负责了MySQL中数据的存储和提取,服务器通过API和存储引擎进行通信。不同的存储引擎具有不同的功能,这样我们可以根据自己的需要,来选取合适的存储引擎。

存储层

主要将数据存储在文件系统之上,并完成与存储引擎的交互。
存储引擎简介
存储引擎就是存储数据、建立所以、更新/查询数据等技术的实现方式。存储引
	擎是基于表的,而不是基于库的,所以存储引擎也可被称为表类型。
在创建表时,指定存储引擎
CREATE TABLE 表名(
字段1 字段1类型[COMMENT 字段1注释],
...
字段n 字段n类型[COMMENT 字段n注释]
)ENGINE=INNODB[COMMENT 表注释];
查看当前数据库支持的存储引擎
SHOW ENGINES;

在这里插入图片描述

存储引擎特点
InnoDB
 介绍
InnoDB是一种兼顾高可靠性的通用存储引擎,在MySQL5.5之后,InnoDB默认的
	MySQL存储引擎。
特点
 	DML操作遵循ACID模型,支持事务;
	行级锁,提高并发访问性能;
	支持外键FOREIGN KEY约束,保证数据的完整性和正确性;
文件
xxx.ibd: xxx代表的是表名,innoDB引擎大每张表都会对应这样一个表空间文
	件,存储该表的表结构(frm、sdi)、数据和索引。
参数:innodb_file_per_table
MyISAM
介绍
	MyISAM是MySQL早期的默认存储引擎。
特点
	不支持事务,不支持外键
	支持表锁,不支持行锁
	访问速度块
文件
xxx.sdi:存储表结构信息
xxx.MYD:存储数据
xxx.MYI:存储索引
Memory
介绍
Memory引擎的表数据是存储在内存中,由于收到硬件问题、或断点问题的影响,
	只能将这些表作为临时表或缓存使用。
特点
	内存存放
	hash索引(默认)
文件
xxx.sdi:存储表结构信息
存储引擎选项
在选项存储引擎时,应该根据应用系统的特点选择合适的存储引擎。对于复杂的
	应用系统,后还可以根据实际情况选择多种存储引擎进行组合。
*InnoDB:是Mysql默认存储引擎,支持事务、外键。如果应用对于事务的完整性
	有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查
	询之外,还包含很多的更新、删除操作,那么InnoDB存储引擎是比较
	合适的选择。
*MyISAM:如果应用是一读操作和插入操作为主,只有很少的更新和删除操作,
 	并且对事务的完整性、并发性要求不是很高,那么选择这个存储引擎是非常
 	合适的。
*MEMORY:将所有数据保存在内存中,访问速度快,通常用于临时表及缓存。
	MEMORY的缺陷是对表的大小有限制,太大的表无法缓存在内存中而且无法
	保障数据的安全性。

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

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

相关文章

面试题更新之-DOCTYPE html相关问题

文章目录 <!DOCTYPE html>是什么&#xff1f;为什么要在html文件开头加上一个<!DOCTYPE html>DOCTYPE的作用&#xff0c;严格与混杂模式的区别&#xff0c;有何意义HTML5为什么只需要写<!DOCTYPE HTML> 是什么&#xff1f; 是HTML文档的文档类型声明&#xf…

SpringSecurity--权限管理架构介绍

目录 介绍 认证 授权 解决⽅案 Shiro 开发者⾃定义 Spring Security 整体架构 认证 AuthenticationManager&#xff08;认证管理器&#xff09; Authentication SecurityContextHolder 授权 AccessDecisionManager AccessDecisionVoter ConfigAttribute 总结 …

Python在安装包时出现ValueError: check_hostname requires server_hostname和Read timed out

一、ValueError: check_hostname requires server_hostname 出现这个问题基本上是因为开了vpn等网络代理软件造成&#xff0c;关掉代理软件即可解决。 二、Read timed out 在安装python包的时候&#xff0c;出现 Read timed out. 尽管添加了镜像源头py.ini&#xff0c;也添加…

游戏程序员的核心竞争力是什么?

看了题主的描述。你的心迷离&#xff0c;仿佛躲避着梦想的曙光&#xff0c;然而在那一片昏暗的迷雾背后&#xff0c;隐藏的不过是懒散的借口。 编程技能 编程语言掌握&#xff1a; C&#xff1a;C是游戏开发中最常用的编程语言之一。了解C的核心语法、面向对象编程和泛型编程…

使用 jmeter 进行审批类接口并发测试

目录 前言&#xff1a; 背景&#xff1a; 难点&#xff1a; 场景 a&#xff1a; 场景 b&#xff1a; 前言&#xff1a; 使用JMeter进行审批类接口的并发测试是一种有效的方法&#xff0c;可以模拟多个用户同时对接口进行审批操作&#xff0c;以评估系统在高负载情况下的性…

APP开发中的数据安全:你需要知道的一切

APP开发中的数据安全&#xff0c;是指 APP开发过程中&#xff0c;所有的数据都会经过严格的安全处理。因为目前 APP开发公司的技术、资质良莠不齐&#xff0c;很多企业在开发过程中不注重对数据安全的保护。 在如今大数据时代&#xff0c; APP开发过程中&#xff0c;会产生大量…

2023-7-14-第十九式中介者模式

&#x1f37f;*★,*:.☆(&#xffe3;▽&#xffe3;)/$:*.★* &#x1f37f; &#x1f4a5;&#x1f4a5;&#x1f4a5;欢迎来到&#x1f91e;汤姆&#x1f91e;的csdn博文&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f49f;&#x1f49f;喜欢的朋友可以关注一下&#xf…

linux history 命令 ssh log

history命令可以查看最近Linux中执行的命令。 一、history常用命令 1 2 3 4 history n# 只显示最近的 n 条历史记录 history -c# 清除缓存区中的历史记录 history -w# 将缓存区的历史记录保存到文件 history -d N# 删除第 N 条历史记录 比如# 查看最近的5条命令 1 2 3 4 5 …

【DC-DC】AP5193 DC-DC宽电压LED降压恒流驱动器 LED电源驱动IC

产品 AP5193是一款PWM工作模式,高效率、外围简单、内置功率MOS管&#xff0c;适用于4.5-100V输入的高精度降压LED恒流驱动芯片。最大电流2.5A。AP5193可实现线性调光和PWM调光&#xff0c;线性调光脚有效电压范围0.55-2.6V.AP5193 工作频率可以通过RT 外部电阻编程来设定&…

定西扶贫惠农推介系统(ssm+jsp+mysql)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的定西扶贫惠农推介系统。技术交流和部署相关看文章末尾&#xff01; 开发环境&#xff1a; 后端&#xff1a; 开发语言&#xff1a;Java …

21.JavaWeb-RBAC访问控制模型

1.RBAC RBAC&#xff08;Role-Based Access Control&#xff09;是一种基于角色的访问控制模型&#xff0c;用于管理系统中的权限控制。它是一种广泛应用的访问控制策略&#xff0c;可以确保用户只能访问其所需的资源&#xff0c;从而保证系统的安全性和完整性。 RBAC核心是将…

连接一个JavaScript文件

● 首先&#xff0c;本章我们会使用一个起始文件&#xff0c;代码如下 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0&qu…

LAXCUS分布式操作系统存在的意义和价值

总有一些新用户不能理解LAXCUS分布式操作系统&#xff0c;以及它存在的意义和价值&#xff0c;我这样说吧。 下图是一个图形桌面&#xff08;LAXCUS的图形桌面&#xff0c;不是Windows、也不是Macintosh&#xff09;&#xff0c;在它后面&#xff0c;连着一个计算机集群&#…

阿里云无影云电脑价格_企业办公型1元_云桌面入口

阿里云无影云电脑配置费用&#xff0c;4核8G企业办公型云电脑可以免费使用3个月&#xff0c;无影云电脑地域不同费用不同&#xff0c;无影云电脑是由云桌面配置、云盘、互联网访问带宽、AD Connector、桌面组共用桌面session等费用组成&#xff0c;阿里云百科分享阿里云无影云电…

列表状态值转换,状态码对应文字处理

项目中经常遇到&#xff0c;在新增及编辑的时候&#xff0c;我们根据下拉框选择状态时候&#xff0c;在列表或者详情&#xff0c;我们得根据状态码/值&#xff0c;显示对应的文字&#xff0c;这时候&#xff0c;我们就需要对值进行格式处理&#xff0c;效果如下&#xff1a; 我…

【Element】el-dialog 内使用 el-image 并添加 preview-src-list 预览,拖拽导致图片预览不完整问题

现象 el-dialog 内使用 el-image 并添加 preview-src-list 预览&#xff0c;拖拽导致图片预览不完整 <el-dialogwidth"500"v-model"visible":title"activeProp?.name"close"handleClose":draggable"true" // 可拖拽al…

归并排序与计数排序

目录 1.什么是归并排序 2.归并排序的实现 3.归并排序的非递归实现 4.计数排序 1.什么是归并排序 归并排序&#xff08;MERGE-SORT&#xff09;是利用归并的思想实现的排序方法&#xff0c;该算法采用经典的 分治&#xff08;divide-and-conquer&#xff09;策略 &…

服务保护 Sentinel

服务保护 Sentinel Sentinel 介绍Sentinel 的下载使用Sentinel 流控规则流控规则介绍流控规则演示 Sentinel 热点规则Sentinel 隔离和熔断降级Feign 整合 Sentinel线程隔离熔断降级 Sentinel 授权规则Sentinel 系统规则Sentinel 自定义异常Sentinel 资源定义url 默认资源抛出异…

Linux常用命令——emacs命令

在线Linux命令查询工具 emacs 功能强大的全屏文本编辑器 补充说明 emacs命令是由GNU组织的创始人Richard Stallman开发的一个功能强大的全屏文本编辑器&#xff0c;它支持多种编程语言&#xff0c;具有很多优良的特性。有众多的系统管理员和软件开发者使用emacs。 语法 e…

线性磁悬浮多输入多输出(MIMO)系统的线性系统控制器设计、实现和分析(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 ​磁悬浮列车作为一种新型地面交通工具,已经在实践中得到了成功的应用。传统的EMS型磁悬浮系统在结构上简单可靠,而且在技术上…