MySQL(2/3)

news2024/9/22 19:34:06

select和别名的使用

主要是用以查询数据

语法:select 字段 from 库名

-- *代表全部字段
select * from `student`;
-- 可以查询多个字段,并使用as起别名,as可以省略
select `id` as bbb ,`name` as hhh from `student`;
-- 可以使用函数concat(a,b)
-- 列名为as后的新名字,若没有起别名就是concat(a,b)的形式,concat连接显示ab
select concat('姓名:',name) as 新名字 from `student`;

除此之外还有以下功能

select version();  -- 查询版本  对应函数
select 100-1 as result;  -- 查询计算结果  对应表达式
select @@auto_increment_increment;  --查询自增步长  对应变量

去重及据库的表达式

作用:去除select结果中重复的数据,重复数据只显示一条

语法:select distinct 字段 from 库名


where子句之逻辑运算符

其中还有between....and...区间查询

where子句可以跟随在select等语句之后作为约束条件


联表查询join..on

引出三种联表方法(理论上有七种)

语法:select 

1.leftJoin

左表有的必须呈现,左表没有的不呈现

2.innerjoin

二者都有的才呈现

3.rightjoin

右表有的必须呈现,右表没有的不呈现

select s.id,name,class,stugrade
from student as s
inner join result as r
on s.id=r.id

select s.id,name,class,stugrade
from student as s
left join result as r
on s.id=r.id

select s.id,name,class,stugrade
from student as s
right join result as r
on s.id=r.id

两个表有相同字段要区别名来标注使用谁的字段

join...on...            on后面是限制条件与where相似


分页和排序

分页limit

排序order by

语法

升序asc

降序desc

排序

在查询记录中进行排序

语法:order by 表名 asc/desc

分页

在查询记录中进行分页

语法:limit  起始值,页面大小

第n页:limit   (n-1)*pageSize,pagesize

子查询和嵌套查询

子查询指在一个查询语句中嵌套一个查询语句,可以多层嵌套

一般是在where后进行

以下是inner join与子查询处理方法对比

-- 连表查询 高等数学分数大于80的学生
select s.id,`name`,class from student s
inner join result res
on s.id = res.id
inner join object obj
on res.objectNo = obj.objectNo
where objectName = '高等数学'
order by stugrade desc

-- 子查询 高等数学分数大于80的学生
select id,`name`,class from student where id in(
	select id from result where stugrade>80 and objectNo = (
		select objectNo from object where objectName = '高等数学'
	)
)

MySQL常用函数

-- ====== 常用函数 ======
-- 数学运算
select ABS(-8)  -- 取绝对值
select CEILING(9.4)  -- 向上取整
select FLOOR(9.4)  -- 向下取整
select RAND()  -- 返回一个0-1之间的随机数
select SIGN(10)  -- 返回一个数字判断数字符号  -1为负数,1为正数,0为0

-- 字符串函数
select CHAR_LENGTH('欲买桂花同载酒')  -- 返回字符串长度
select CONCAT('终不','似','少年游')  -- 连接字符串
select INSERT('我爱编程helloworld',1,2,'超级热爱')  -- 从1到2替换成语句2
select LOWER('WuYu')  -- 转换小写
select UPPER('WuYu')  -- 转换大写
select INSTR('wuyu','y')  -- 返回第一次出现字符的索引
select REPLACE('狂神说坚持就能成功','坚持','努力')  -- 替换指定的字符串
select SUBSTR('狂神说坚持就能成功',4,6)  -- 返回指定的字符串(原字符串,截取位置,截取长度)
select REVERSE('上马')  -- 反转字符串

-- 查询姓 周的学生 将周替换成州
select REPLACE(`name`,'周','州') from student
where `name` like '周%'

-- 时间和日期函数
select current_date()  -- 获取当前日期
select curdate()  -- 获取当前日期
select now()  -- 获取当前时间
select localtime  -- 获取本地时间
select sysdate()  -- 系统时间

select year(now())
select month(now())
select day(now())
select hour(now())
select minute(now())
select second(now())

-- 获取使用系统使用者
select system_user()
select user()
-- 获取版本
select version()

聚合函数及分组(group by)过滤(having)

分组:

语法:group by 列名     通过某列进行分组展示

如果有group by 就

过滤:

语法:having 过滤条件

having   -- 过滤分组的记录必须满足的次要条件

必须在group by 后方

where必须在group by前方

注意:where后面语句不能使用聚合函数,而having可以


拓展之数据库级别的MD5加密

函数:MD5(加密内容)

语句:update into 表名 set 列名=MD5('列名') -- 加密所有密码

可以在插入信息的时候加密保证信息的安全

如何校验?

        --  比对加密后的值是否相同


事务ACID原则、脏读、不可重复读、幻读

两个相关的SQL语句如果一个执行失败,那么会导致数据错误‘

事务原则:ACID原则  原子性、一致性、隔离性、持久性

1.原子性(Atomicity)

要么都成功,要么都失败

2.一致性(Consistency)

事务前后的数据完整性要保证一直

3.持久性(Durability)

事务一旦提交就不可逆,被持久化到数据库中,未被提交数据不会变化

4.隔离性(lsolation)

事务的隔离性是多个用户同时访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,事务之间要相互隔离。

-----  隔离所导致的一些问题

1.脏读

指一个事务读取了另外一个事务未提交的数据

2.不可重复读

在一个事务内读取表中的某一行数据,多次读取结果不同。(不一定是错误的,只是某些场合不对)

3.虚读(幻读)

指在一个事务内读取到了别的事务插入的数据,导致前后读取不一致


测试事务实现转账

---  mysql是默认开启事务自动提交的

set autocommit = 0     ----        关闭

set autocommit = 1     ----        开启(默认)

-- 模拟银行转账
create database bank character set utf8 collate utf8_general_ci

create table `account`(
	`id` int(3) not null auto_increment,
	`name` varchar(20) not null,
	`money` decimal(9,2) not null,
	primary key(`id`)
)engine=innodb default charset=utf8   -- 创建表

insert into account(`name`,`money`) values ('A',1000.00),('B',500.00)

set autocommit = 0  -- 关闭mysql事务自动提交
start transaction -- 开启一个事务(一组事务)
update account set money=money-500 where `name` = 'B'  -- B减500
update account set money=money+500 where `name` = 'A'  -- A加500

commit;   -- 提交事务,被持久化
rollback;  -- 回滚

set autocommit = 1;  -- 恢复默认提交

回滚

        -- 当一组事务有一个执行失败时进行回滚,将数据保持原样

执行成功则提交

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

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

相关文章

Matlab|【免费】基于合作博弈的综合能源系统利益分配优化调度

目录 主要内容 部分代码 结果一览 下载链接 主要内容 该程序实现的模型为综合能源系统利益分配优化调度,采用合作博弈方法,模型针对IES系统的P2G、电解槽、甲烷反应器、储氢罐、CHP和燃气锅炉等设备进行建模,实现基于合作博弈的…

Stable Cascade-ComfyUI中文生图、图生图、多图融合基础工作流分享

最近 ComfyUI对于Stable Cascade的支持越来越好了一些,官方也放出来一些工作流供参考。 这里简单分享几个比较常用的基础工作流。 (如果还没有下载模型,可以先阅读上一篇Stable Cascade升级,现在只需要两个模型) &a…

把Anaconda添加进环境变量的方法(解决pip识别不到环境的问题)

找到你的Anaconda的安装根目录 比如我的是在:C:\ProgramData\Anaconda3 那么只需要将以下目录添加进环境变量即可: C:\ProgramData\Anaconda3C:\ProgramData\Anaconda3\ScriptsC:\ProgramData\Anaconda3\Library\binC:\ProgramData\Anaconda3\condabin…

volatile 关键字 (一)

volatile 关键字 (一) 文章目录 volatile 关键字 (一)如何保证变量的可见性?如何禁止指令重排序? 文章来自Java Guide 用于学习如有侵权,立即删除 如何保证变量的可见性? 在 Java 中…

云时代【7】—— 存储卷

云时代【7】—— 存储卷 四、Docker(四)存储卷1. 存储卷(1)定义(2)分类 2. 相关指令(1)管理卷 VolumeA. 创建方式方式一:docker volume方式二:docker run -v …

NFT Insider #121:苏富比去年 NFT 和数字艺术品销售额超过 3000 万美元,较 2022 年增长 50%

引言:NFT Insider由NFT收藏组织WHALE Members (https://twitter.com/WHALEMembers)、BeepCrypto (https://twitter.com/beep_crypto)联合出品,浓缩每周NFT新闻,为大家带来关于NFT最全面、最新鲜…

【CSS】CSS简介,CSS基础选择器详解

目录 css简介 css语法规范 css代码风格: css选择器的作用 css基础选择器 标签选择器 类选择器 类选择器---多类名 id选择器 id选择器和类选择器的区别: 通配符选择器 总结 ⭐css简介 CSS 是层叠样式表 ( Cascading Style Sheets ) 的简称,也…

机器学习-4

文章目录 前言数组创建切片索引索引遍历切片编程练习 总结 前言 本篇将介绍数据处理 Numpy 库的一些基本使用技巧,主要内容包括 Numpy 数组的创建、切片与索引、基本运算、堆叠等等。 数组创建 在 Python 中创建数组有许多的方法,这里我们使用 Numpy 中…

使用 Docker 部署 Answer 问答平台

1)介绍 GitHub:https://github.com/apache/incubator-answer Answer 问答社区是在线平台,让用户提出问题并获得回答。用户可以发布问题并得到其他用户的详细答案、建议或信息。回答可以投票或评分,有助于确定有用的内容。标签和分…

Redis 群集部署

1.关系型数据库 关系型数据库是一个结构化的数据库,创建在关系模型基础上,-般面向记录。它借助于集合代数等数学概念和方法来处理数据库中的数据。关系模型指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。现实世界中…

软件分层(数据结构/软件逻辑上分层+举例),相连节点的概念+如何相连,为什么是层状结构(软件分层,网络协议分层+梳理协议顺序),协议分层(打电话例子)

目录 软件分层 介绍 举例 类的继承 虚拟文件系统 线程接口封装 虚拟地址空间 总结 为什么是层状的 软件分层 网络协议 原因 梳理协议顺序 相连节点 协议分层 引入 示例 实际上 逻辑上 制定出协议 软件分层 介绍 通过将软件系统划分为不同的层次,每一层都有…

OpenHarmony、HarmonyOS打开编辑 PDF 等操作的三方组件使用教程

项目场景: 随着数字化时代的发展,PDF 文档成为广泛应用于各行业的重要文件格式。为了提高OpenHarmony/HarmonyOS生态系统的功能性和用户体验,我们需要一款支持打开、编辑PDF文件的应用程序。 使用户能够轻松打开、浏览和编辑PDF文件。该应用将充分利用OpenHarmony/HarmonyO…

Day20-磁盘管理

Day20-磁盘管理 1. cut 切:2. 磁盘历史和内外部物理结构介绍2.1 磁盘发展趋势和实现措施2.2 磁盘知识的体系结构2.3 机械磁盘的外部结构2.4 SSD固态硬盘的外部结构2.5 固态硬盘内部结构2.6 缓存在服务器各硬件上的速度和大小对比另类维度图解,从上到下由高速到低速&…

机器学习:集成学习(Python)

一、Adaboost算法 1.1 Adaboost分类算法 adaboost_discrete_c.py import numpy as np import copy from ch4.decision_tree_C import DecisionTreeClassifierclass AdaBoostClassifier:"""adaboost分类算法:既可以做二分类、也可以做多分类&#…

数字化转型导师坚鹏:BLM证券公司数字化转型战略

BLM证券公司数字化转型战略 ——以BLM模型为核心,实现知行果合一 课程背景: 很多证券公司存在以下问题: 不知道如何系统地制定证券公司数字化转型战略? 不清楚其它证券公司数字化转型战略是如何制定的? 不知道…

Leetcode560. 和为 K 的子数组 -hot100

题目&#xff1a; 代码(首刷看解析 2024年3月2日&#xff09;&#xff1a; class Solution { public:int subarraySum(vector<int>& nums, int k) {// 前缀和 遍历int res 0;unordered_map<int, int> sumPre;int sum 0;// 关键&#xff1a;初始化sumPre[0]…

艺术家林曦:新的一年|开启人生的最佳竞技状态吧!

开年大吉呀&#xff5e;新的一年&#xff0c;你准备好如何启程了吗&#xff1f;    暄桐是一间传统美学教育教室&#xff0c;创办于2011年&#xff0c;艺术家林曦是创办人和授课老师&#xff0c;教授以书法为主的传统文化和技艺&#xff0c;皆在以书法为起点&#xff0c;亲…

element-plus 的el-img组件访问oss图片自动拼接前端地址

这是我的组件代码 <el-image style"width: 100px; height: 100px" :src"scope.row.logo" />访问时候 竟然凭借上了前端的地址端口 原来是我的oss服务是使用了域名做cdn加速的 内容分发网络&#xff08;CDN&#xff09;或者服务器配置&#xff0c;可…

通过修改host文件来访问GitHub

前言&#xff1a; 由于国内环境的原因&#xff0c;导致我们无法流畅的访问GitHub&#xff0c;。 但是我们可以采取修改host文件来实现流畅访问。 缺点&#xff1a;需要不定时的刷新修改。 操作流程 一、查询IP地址 以下地址可以查询ip地址 http://ip.tool.chinaz.com/ htt…

艾尔登法环备份存档方法

1.PC端使用WinR输入%AppData%\EldenRing 2.如图创建文件夹“我这取名叫备份存档”&#xff0c;将其中的三个文件复制到新建的文件夹中 3.理论上只需要备份替换ER0000.sl2文件即可