Mysql基础进阶速成2

news2024/11/19 3:19:30

看着篇文章之前先看我的前一章:MySQL基础进阶速成1

函数:

每个字段使用一个函数:select +函数(字段名)+from +表名

upper:将字符串中的字母大写

lower:将字符串中的字符小写

max:得到最大值

min:得到最小值

count:计数

avg:平均数

length:获取字符串长度

........

select upper(name) from student;
select lower(name) from student;
select min(age) from student;
select max(age) from student;
select count(age) from student;

 条件函数:IF(字段,true返回值,else返回值) select+字段名+逗号隔开+if(字段条件,真返回值,假返回值)+from+表名

                    CASE value WHEN   [value1] THEN result1 [WHEN [value2] THEN result2 ...] [ELSE result] END   如果value等于value1,则返回result1,···,否则返回result

                CASE WHEN [condition1] THEN result1 [WHEN [condition2] THEN   result2 ...] [ELSE result] END       如果条件condition1为真,则返回result1,···,否则返回result

select age,if(age>=18,'成年人','未成年') from student;

select age,name, case name when '张三' then '法外狂徒' 
when '李四' then '受害者' else '旁观者' end '成员';

group by 分组

select +字段名+from+表名+group by +靠那个字段分组的字段名

配合排序order by使用: 

select +字段名+from+表名+group by +靠那个字段分组的字段名+order by+对那个字段排序

// 对年龄分组并排序
select age,name from student group by age orderby age desc;

 分组筛选having:

select +字段名+from+表名+group by +靠那个字段分组的字段名+having +筛选条件

//对年龄分组后筛选出大于18的组
select age from student group by age having age>=18;

多表查询:

对于多张表查询需要这些表之间有外键连接 

或者先将两张表连接起来在查询

交叉连接cross join:有两个表,左表有m条数据记录,x个字段,右表有n条数据记录,y个字段,则执行交叉连接后将返回m*n条数据记录,x+y个字段

select + 字段名+from+表名+cross join +第二张表

自然连接natural join:自动匹配所有相同的字段名,同一个字段名只展现一次

select +字段名+from +表名+natural join +第二张表名

内连接:select+字段名+from+表名+inner join +另外一张表名+on(A表连接字段=B表连接字段)

# 交叉连接
select * from student1 cross join student2;
# 自然连接:
select * from student2 natural join student2;
# 内连接:
select * from student1 inner join student2 on (student1.id=student2.id);

外连接查询:inner join on 于内连接差不多

select * from student1 inner join student2 on student1.id=student2.id

 左连接left outer join和右连接right outer join:这两个连接即使两个表没有相同的字段也可以连接

# 左连接
select * from student1 left outer join student2 on (student1.id=student2.id);
# 右连接
select * from student1 right outer join student2 on (student1.id=student2.id);

 自连接查询:就是自己和自己连接后在查询,将连接的两个表都写成自己就是自连接了

# 左自连接
select * from student1 left outer join student1 on (student1.id=student1.id);
# 右自连接
select * from student1 right outer join student1 on (student1.id=student1.id);

 子查询:也就是一个sql语句里有多个select

select + 字段名字+from+表名+where+条件,

例子的意思:查找年龄大于张三的人员信息

select * from student where age>(select age from student where name='张三');

 数据库对象:

事务:简单来说就是要几个数据库一起操作。举个栗子:你和好友正在斗地主,输家要向赢家发红包,输家的账户余额减少的时候,赢家的账户余额增加

用sql来表示:先创建一个账户表

create table account(
    id int primary key auto increment,
    name varchar(10) not null,
    blance double
);

在表中插入你们的账户数据

insert into account values(null,'张三',200),(null,'李四',300),(null,'王五',400);

 张三地主输了20分别给了李四和王五,那么三个人的账户都得一起变动

# 开启事务:
start transaction;
# 从这里开始数据库开启缓存,缓存下面任务执行后的变化
# 要执行的任务:
updata account set balance=balance-20 where id=1;
updata account set balance=balance+10 where id=2;
updata account set balance=balance+10 where id=3;
# 回滚:从开始到这里执行的任务全部取消,缓存清空
rollback;
# 提交:如果报错那么上边执行的所有任务全部不成功,否则全部成功,缓存清空
commit;

 事务并发问题:

脏读:当一个事务正在访问数据并且对数据进行了修改,而这种修改还没有提交到数据库中,这时另外一个事务也访问了这个数据,然后使用了这个数据。因为这个数据是还没有提交的数据,那么另外一个事务读到的这个数据是“脏数据”,

不可重复读:指在一个事务内多次读同一数据。在这个事务还没有结束时,另一个事务也访问该数据。那么,在第一个事务中的两次读数据之间,由于第二个事务的修改导致第一个事务两次读取的数据可能不太一样。这就发生了在一个事务内两次读到的数据是不一样的情况,因此称为不可重复读。

幻读:幻读与不可重复读类似。它发生在一个事务(T1)读取了几行数据,接着另一个并发事务(T2)插入了一些数据时。在随后的查询中,第一个事务(T1)就会发现多了一些原本不存在的记录,就好像发生了幻觉一样,所以称为幻读

事务隔离:用来解决以上问题:

read uncommitted:解决不了

read committed:解决脏读:

repeatable read:解决脏读和不重复读:

serializable:全部解决

设置当前会话的事务隔离(数据库默认的是repeatable read):

set session transaction isolation level read uncommitted;  
set session transaction isolation level read committed;  
set session transaction isolation level repeatable read;  
set session transaction isolation level serializable;

好了,到这里数据库的使用就基本完成了!!!大家点个赞在走呗!!!

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

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

相关文章

力扣hot100:295. 数据流的中位数(两个优先队列维护中位数)

LeetCode:295. 数据流的中位数 这个题目最快的解法应该是维护中位数,每插入一个数都能快速得到一个中位数。 根据数据范围,我们应当实现一个 O ( n l o g n ) O(nlogn) O(nlogn)的算法。 1、超时—插入排序 使用数组存储,维持数…

pyqt5 tablewidget实现excel拖曳填充

代码主要涉及鼠标事件和绘图,selectionModel,selectedIndexes。 import sys from PyQt5.QtCore import QPoint, Qt, QCoreApplication, pyqtSlot from PyQt5.QtGui import QBrush, QPixmap, QColor, QPainter,QIcon,QPolygon from PyQt5.QtWidgets imp…

GPT-4o:突出优势 和 应用场景

还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas,webgl,ech…

NeMo Guardrails 大模型安全防护:这个框架牛逼,不会像强化学习 指令对齐限制灵活性死板回答,也不会像提示词约束容易被遗忘和清理

NeMo Guardrails 大模型安全防护:这个框架牛逼,不会像强化学习 指令对齐限制灵活性死板回答,也不会像提示词约束容易被遗忘和清理 提出背景对比传统方法结构图底层原理1. 对话管理运行时(DM-like runtime)2. 思维链&am…

大小堆运用巧解数据流的中位数

​​​​​​​​​​ 一、思路 我们将所有数据平分成两份,前面那一部分用小堆来存,后面的部分用大堆来存,这样我们就能立刻拿到中间位置的值。 如果是奇数个数字,那么我们就将把中间值放在前面的大堆里,所以会有两种…

SAP ABAP 创建表结构 SE11

目录 一,创建表 :T-code:SE11 二,编辑内容: 1,内容说明:必填项,属性:锁定不可更改 2,出荷と更新 3,項目 A:表的第一个项目必须是…

Flink中因java的泛型擦除导致的报错及解决

【报错】 Exception in thread "main" org.apache.flink.api.common.functions.InvalidTypesException: The return type of function Custom Source could not be determined automatically, due to type erasure. You can give type information hints by using th…

计算机网络面试基础(一)

文章目录 一、HTTP基本概念1.HTTP是什么?2.HTTP 常见的状态码有哪些?3.http常见字段 二、GET和POST1.get和post有什么区别 三、HTTP缓存技术1.HTTP 缓存有哪些实现方式?2.什么是强制缓存?3.什么是协商缓存?(不太懂) 四…

linux嵌入式设备测试wifi信号强度方法

首先我们要清楚设备具体链接在哪个wifi热点上 执行:nmcli dev wifi list rootubuntu:/home/ubuntu# nmcli dev wifi list IN-USE BSSID SSID MODE CHAN RATE SIGNAL BARS > * 14:EB:08:51:7D:20 wifi22222_5G Infr…

【96】write combine机制介绍

前言 这篇文章主要介绍了write combine的机制 一、write combine的试验 1.系统配置 (1)、CPU:11th Gen Intel(R) Core(TM) i7-11700 2.50GHz (2)、GPU:XX (3)、link status&am…

如何有效提问?

有效提问:正确地向别人提问是一种艺术,可以帮助你获得清晰、有用的答案。 明确表达问题:确保你的问题清晰明了,避免含糊不清或模棱两可的语言。这可以帮助对方更好地理解你的问题,并给出准确的答复。 尊重对方&#x…

[第五空间 2021]WebFTP、[HCTF 2018]Warmup

目录 [第五空间 2021]WebFTP ​[SWPUCTF 2021 新生赛]Do_you_know_http [NCTF 2018]签到题 [HNCTF 2022 Week1]What is Web [HNCTF 2022 Week1]Interesting_http [HCTF 2018]Warmup [第五空间 2021]WebFTP 使用dirsearch扫描,发现有git泄露 使用GitHack克隆目…

HBuilderX编写APP一、获取token

一、新建项目 二、从onenet获取key.js 1、下载之后的压缩包,解压 2、关键就是找到key.js 3、将这个key.js复制到刚才的目录下面去 4、这个key.js文件就是生成token的代码 5、只要调用createCommonToken(params)这个函数,就可以实现生成token了 其中on…

小米开放式耳机怎么样?倍思、西圣、小米开放式耳机测评比较!

作为一名热衷于分享真实体验的博主,我在过去两年开始接触开放式耳机,并因此受到许多朋友的咨询,询问哪款开放式耳机更加出色。为了找出最佳的开放式耳机,我进行了深入的调查和实地测试。我发现高价并不总是代表高质量,…

【全开源】Java共享茶室棋牌室无人系统支持微信小程序+微信公众号

打造智能化休闲新体验 一、引言:智能化休闲时代的来临 随着科技的飞速发展,智能化、无人化服务逐渐渗透到我们生活的各个领域。在休闲娱乐行业,共享茶室棋牌室无人系统源码的出现,不仅革新了传统的休闲方式,更为消费…

嵌入式移植jpeglib--Linux交叉编译ARM平台

一 、交叉编译jpeg库 1.下载源码tar.gz 2. 源码目录下执行 jpeglib配置文件 ./configure CCarm-none-linux-gnueabihf-gcc LDarm-none-linux-gnueabihf-ld --prefix/work/jpeg_arm_lib --exec-prefix/work/jpeg_arm_lib --enable-shared --enable-static --hostarm-none-linu…

高考试卷押运车视频监控解决方案

一、引言 高考作为我国教育领域的重要事件,其公正、公平和安全性一直备受社会关注。试卷押运作为高考的重要环节,其安全性直接关系到高考的顺利进行和考生的切身利益。因此,对高考试卷押运车实施视频监控解决方案,对于确保试卷安…

Asp .Net Core 系列:详解鉴权(身份验证)以及实现 Cookie、JWT、自定义三种鉴权 (含源码解析)

什么是鉴权(身份验证)? https://learn.microsoft.com/zh-cn/aspnet/core/security/authentication/?viewaspnetcore-8.0 定义 鉴权,又称身份验证,是确定用户身份的过程。它验证用户提供的凭据(如用户名和…

短视频直播教学课程小程序的作用是什么

只要短视频/直播做的好,营收通常都不在话下,近些年,线上自媒体行业热度非常高,每条细分赛道都有着博主/账号,其各种优势条件下也吸引着其他普通人冲入。 然无论老玩家还是新玩家,面对平台不断变化的规则和…

【第四节】C/C++数据结构之树与二叉树

目录 一、基本概念与术语 二、树的ADT 三、二叉树的定义和术语 四、平衡二叉树 4.1 解释 4.2 相关经典操作 4.3 代码展示 一、基本概念与术语 树(Tree)是由一个或多个结点组成的有限集合T。其中: 1 有一个特定的结点,称为该树的根(root)结点; 2 …