MySQL
文章平均质量分 56
MySQL
小镇攻城狮
吃饭的家伙要拿稳咯
展开
-
【Homebrew】Homebrew安装数据库相关的软件后关闭服务
的方式来安装软件,则在系统偏好设置中是没有相关的服务的选项的。中装了软件,和本机中的服务冲突了,那么就需要关闭本机上的服务。其中只有第一个是开启服务的状态,其余两个都是关闭的。可以看到我此时已经有了。相关的命令来进行操作。...原创 2022-08-04 10:36:56 · 966 阅读 · 1 评论 -
【Linux】Linux下通过yum安装MySQL,并设置允许远程登录
基本环境阿里云服务器:centos 7.6MySQL 5.71 安装MySQL5.7直接通过yum命令安装是会失败的,因为默认的yum仓库是没有mysql相关的包的。所以需要先将mysql的rpm包下载到本地,再通过yum安装。1.1 下载MySQL5.7的rpm文件# 先安装wget命令yum install wget# 通过wget命令下载MySQL5.7的rpm文件,默认下载在当前的目录下wget https://dev.mysql.com/get/mysql57-commu原创 2021-11-06 15:36:48 · 381 阅读 · 0 评论 -
【MySQL】数据库三大范式
文章目录1 第一范式2 第二范式3参考资料1 第一范式数据库表中的每一列都不可再分,即原子性。原表:按照第一范式拆分后:2 第二范式在满足第一范式的基础上,要求每个字段都和主键完整相关,而不是部分相关,这里主要针对联合主键(一般不使用联合主键)。原表:按照第一和第二范式拆分后:3参考资料【1】尚硅谷尚筹网Java项目实战开发教程(含SSM框架,微服务架构,封捷主讲)...原创 2021-10-29 20:01:53 · 223 阅读 · 0 评论 -
【MySQL基础】流程控制
文章目录1 分类2 分支结构2.1 if函数2.2 case结构2.3 if结构3 循环结构3.1 分类3.2 while3.3 loop3.4 repeat3.5 案例4 综合案例参考资料1 分类流程控制语句一般都与 存储过程或函数 搭配使用顺序结构:程序从上往下依次执行分支结构:程序从两条或多条路径中选择一条去执行循环结构:程序在满足一定条件的基础上,重复执行一段代码2 分支结构2.1 if函数功能:实现简单的双分支语法:if(表达式1,表达式2,表达式3)执行顺序:如原创 2021-10-08 14:21:01 · 193 阅读 · 0 评论 -
【MySQL基础】存储过程(procedure)和函数(function)
文章目录1 概述2 语法3 空参的存储过程4 带in模式的存储过程5 带out模式的存储过程6 带inout模式的存储过程参考资料1 概述含义:一组预先编译好的SQL语句的集合,可以理解成批处理语句1、提高代码的重用性2、简化操作3、减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率2 语法# 1.创建CREATE PROCEDURE 存储过程名(参数列表) BEGIN 存储过程体(一组合法的SOL语句)END注意:1、参数列表包含三部分参数模式 参数名 参数类型原创 2021-10-08 10:16:43 · 1248 阅读 · 0 评论 -
【MySQL基础】变量
文章目录1 分类2 系统变量2.1 全局变量2.2 会话变量3 自定义变量3.1 用户变量3.2 局部变量3.3 对比用户变量和局部变量参考资料1 分类 /* 系统变量: 全局变量 会话变量自定义变量: 用户变量 局部变量*/2 系统变量系统变量由系统提供,不需要用户定义,属于服务端层面使用语法: # 1.查看所有的系统变量 show global variables; show 【session】 variables; # 2.筛选特定的系统变量 show glob原创 2021-10-07 19:30:26 · 84 阅读 · 0 评论 -
【MySQL基础】视图
文章目录1 概述2 创建视图3 修改视图4 删除视图5 查看视图的结构6 视图的更新(更新视图内部的数据)7 视图与表的对比参考资料1 概述/*含义:视图是一种虚拟表,和普通表一样使用。MySQL5.1版本出现的新特性,是通过表动态生成的数据。应用场景:- 多个地方用到相同的查询结果;- 该查询结果使用的sql语句比较复杂。###我的理解###相当于把一个查询的结果,相当于是一个表,给封装起来,方便使用*/#案例:查询姓张的学生名和专业名#####使用视图前#####SEL原创 2021-10-07 18:15:42 · 84 阅读 · 0 评论 -
【DDL】常见约束
文章目录1 分类2 创建表时添加约束2.1 添加列级约束2.2 添加表级约束2.3 总结2.4 主键约束和唯一约束的比较2.5 外键3 修改表时添加约束3.1 案例3.2 总结3.3 修改表时删除约束4 标识列4.1 概述4.2 创建表时设置标识列4.3 修改表时设置标识列4.3 修改表时删除标识列1 分类含义:一种限制,用于限制表中的数据,为了保证表中的数据的准确和可靠性分类:六大约束 NOT NULL: 非空,用于保证该字段的值不能为空。比如姓名、学号等 DEFAULT:默认,用于保证该字段有原创 2021-10-06 20:42:49 · 177 阅读 · 0 评论 -
【DDL】常见数据类型
文章目录1 分类2 数值型2.1 整型2.2 小数3 字符型4 日期型参考资料1 分类数据类型选择的原则:所选择的类型越简单越好,能保存数值的类型越小越好数值型: 整型: 小数: 定点数 浮点数字符型: 较短的文本:char、varchar 较长的文本:text、blob(较长的二进制数据)日期型:2 数值型2.1 整型/*特点:1 如果不设置无符号还是有符号,默认是有符号; 如果要设置无符号,需要添加unsigned关键字。2 如果插入的值超出了整形的范围,原创 2021-10-06 15:15:13 · 351 阅读 · 0 评论 -
【DQL】总结(九):联合查询(union)
文章目录1 概述2 案例3 总结参考资料1 概述/*union 联合 合并:将多条查询语句的结果合并成一个结果语法: 查询语句1 union 查询语句2 union 查询语句3 。。。应用场景: 要查询的结果来自多个表,且多个表没有直接的连接关系,但查询的信息一致时*/2 案例# 案例1:查询部门编号>90或邮箱包含a的员工信息select *from employeeswhere department_id > 90unionselect *from原创 2021-10-05 20:48:38 · 181 阅读 · 0 评论 -
【DQL】总结(八):分页查询
文章目录1 语法2 案例3 总结参考资料1 语法/* select 查询列表 from 表 【 join type join 表2 on 连接条件 where 筛选条件 group by 分组字段 having 分组后的筛选 order by 排序的字段 】 limit 【offset,】 sizeoffset表示要显示条目的起始索引,从0开始。注意在分组函数中的区别size表示要显示的条目个数*/2 案例# 案例1:查询前5条员工信息select *from e原创 2021-10-05 20:15:33 · 86 阅读 · 0 评论 -
【DQL】总结(七):子查询
文章目录1 概述2 分类3 案例3.1 where或having后面3.1.1 where或having后面的标量子查询3.1.2 where或having后面的列子查询3.1.3 where或having后面的行子查询3.2 select后面3.3 from后面3.4 exists后面(相关子查询)4 其它案例参考资料1 概述出现在其它语句中的select语句,称为子查询或内查询。外部的查询语句,称为主查询或外查询2 分类按子查询出现的位置分类: select后面 仅仅支持标量子查询原创 2021-10-05 19:43:47 · 90 阅读 · 0 评论 -
【DQL】总结(六):连接查询
文章目录1 概述2 连接查询的分类2.1 内连接2.1.1 等值连接2.1.2 非等值连接2.1.3 自连接2.2 外连接2.2.1 左外连接2.2.2 右外连接2.2.3 全外连接2.3 交叉连接3参考资料1 概述连接查询又称为多表查询,当查询的字段来自多个表时,就会用到连接查询。笛卡尔乘积现象:表1有m行,表2有n行,结果为m*n行2 连接查询的分类2.1 内连接2.1.1 等值连接#########sql92标准############## 案例1:查询女神名和对应的男神名se原创 2021-10-05 11:33:05 · 134 阅读 · 0 评论 -
【DQL】总结(五):分组查询
文章目录1 语法2 案例2.1 简单分组2.2 分组前筛选2.3 分组后筛选2.4 小总结3 其它案例3.1 按表达式或函数分组3.2 按多个字段分组3.3 添加排序操作3.4 小总结参考资料1 语法可以使用group by 子句将表中的数据分成若干组select 字段名[要求出现在group by后], 分组函数(字段名)from 表名[where 子句][group by 字段名/函数表达式/别名][having 子句][order by 字段名];where一定要放在from原创 2021-10-04 15:50:22 · 145 阅读 · 0 评论 -
【DQL】总结(四):常见函数
文章目录1 常见函数1.1 概念:1.2 好处:1.3 语法1.4 分类:1.4.1 单行函数1.4.2 分组函数2 单行函数2.1 字符函数2.1.1 length2.1.2 concat2.1.3 upper / lower2.1.4 substr / substring3参考资料1 常见函数1.1 概念:类似于java的方法,将一组逻辑语句封装在方法体中,对外暴露方法名1.2 好处:1、隐藏了实现细节2、提高代码的重用性1.3 语法select 函数名(实参列表)【from 表】;原创 2021-10-03 15:00:07 · 183 阅读 · 0 评论 -
【DQL】总结(三):排序查询
1 语法select 查询列表from 表【where 筛选条件】order by 排序列表 【asc|desc】# asc表示升序,desc表示降序,默认是升序特点:1、asc代表的是升序,desc代表的是降序如果不写,默认是升序2、order by子句中可以支持单个字段、多个字段、表达式、函数、别名3、orderby子句一般是放在查询语句的最后面,limit子句除外。2 案例2.1 普通排序# 案例 1SELECT * from employees ORDER BY hi原创 2021-09-30 11:01:17 · 99 阅读 · 0 评论 -
【DQL】总结(二):条件查询和模糊查询
文章目录1 条件查询1.1 语法1.2 分类1.3 按条件表达式筛选1.4 按逻辑表达式筛选1.5 模糊查询21 条件查询1.1 语法select 查询列表 from 表名 where 筛选条件;1.2 分类/*一、按条件表达式筛选条件运算符:> < = != <> >= <=二、按逻辑表达式筛选逻辑运算符: && || ! and or not用来连接条件表达式三、模糊查询 like between and in原创 2021-09-30 09:29:44 · 304 阅读 · 0 评论 -
【DQL】总结(一):基础查询
文章目录1 语法2 查询表中的字段3 查询常量值4 查询表达式5 查询函数6 起别名7 去重8 +号的作用9 显示表结构10 ifnull函数参考资料1 语法语法:select 查询列表 from 表名;类似于:system.out.println(打印东西);特点:1、查询列表可以是:表中的字段、常量值、表达式、函数2、查询的结果是一个虚拟的表格2 查询表中的字段# 查询单个字段SELECT last_name FROM employees;# 查询多个字段SELECT l原创 2021-09-29 20:00:20 · 109 阅读 · 0 评论 -
【MySQL】数据库连接池
常见的池化技术:线程池、JDBC连接池、http连接池、redis连接池等数据库连接本质是一个socket连接。数据库连接池可以看做是维护数据库连接的缓存,因为数据库连接的创建和关闭都非常消耗资源,所以连接创建好后,就将它放在池中,并再次使用它。数据库连接池减少了建立数据库连接的时间。参考资料JavaGuide公众号文章...原创 2021-05-19 16:34:11 · 140 阅读 · 0 评论 -
【MySQL】经典面试题:一条SQL语句执行得很慢的原因有哪些
文章目录1 偶尔很慢1.1 数据库在刷新脏页1.2 执行的时候遇到锁2 一直很慢2.1 没有使用到索引2.1.1 `字段`没有索引2.1.2 字段有索引,但是`sql语句`没有使用2.1.3 `函数操作`导致没有用上索引2.2 数据库选错了索引面试的时候就是抻,说得越详细越好。所以得分类讨论。1 偶尔很慢1.1 数据库在刷新脏页往数据库更新数据(增、删、改)的时候,数据库会在内存中把对应的记录更新,但是更新之后,并不会马上同步持久化到磁盘中去,而是把这些更新的记录写入到redo log日记中去,原创 2021-05-19 15:58:53 · 228 阅读 · 0 评论 -
【MySQL】大表优化
MySQL中,单表记录数过大时,CRUD会出现明显的下降。常见优化措施如下:限定数据的范围。禁止运行不带数据范围条件的查询语句。比如可以查询某一个时间段内的记录。读写分离。主库负责写,从库负责读。垂直分区。根据列的相关性,把一张列比较多的表,拆分为多张表。优点:减少查询时读取的block(块)数,减少I/O次数。缺点:主键冗余,事务变复杂。水平分区。保持表结构不变,通过某种策略存储数据分片。每一片数据分散到不同的表或者库中,达到分布式的目的,可以支撑很大的数据量。数据库分片方案:客户原创 2021-05-19 15:13:59 · 131 阅读 · 0 评论 -
【TCL】事务
文章目录1 概念2 事务的四大特性3 并发事务带来的问题不可重复读与幻读的区别:4 事务隔离级别补充1 概念事务是逻辑上的一组操作,要么都执行,要么都不执行。例子:转账。A向B转账1000,涉及两个操作,A的余额减少1000,B的余额增加1000。如果途中系统崩溃,导致A的操作成功,B的操作失败或者A的操作失败,B的操作成功。这样是不允许的,要么都成功,要么都失败。2 事务的四大特性原子性:事务是最小的执行单位,不能分割。一致性:执行事务前后,数据保持一致,如多个事务对同一个数据的读取结果是原创 2021-05-19 11:22:03 · 202 阅读 · 0 评论 -
【MySQL】索引
1 数据结构哈希索引:底层结构是哈希表,适用于单条记录查询BTree索引:底层结构是B+Tree。对于两种存储引擎,实现方式不一样。2 为什么要使用索引?加快数据检索速度避免排序和临时表将随机IO变为顺序IO3...原创 2021-05-19 09:45:54 · 64 阅读 · 1 评论 -
【MySQL】InnoDB和MyISAM的区别
查看存储引擎的相关命令查看所有可用引擎:show engines;查看当前默认引擎:show variables like '%storage_engine%';查看表的存储引擎:show table status like "table_name";这里没有设置表的存储引擎,所以显示为空。MySQL5.5版本后默认的存储引擎为InnoDB。InnoDB和MyISAM的区别count运算:InnoDB不保存表的具体行数,查找表的行数时,需要全表扫描。MyISAM用一原创 2021-05-18 11:21:33 · 9201 阅读 · 0 评论 -
mysql常用语句九:DQL中的查询操作
1 子查询表结构如下需求查询用户分数大于其所在工作(job)分数的平均分的所有grade的属性,并且以id的升序排序SQL语句select t1.* from grade t1where score>(select avg(score) from grade t2where t1.job = t2.jobgroup by job)order by t1.id;注意的是where子句一定要放在group by子句前面。运行结果2 子查询表结构如下需求查询在2025-原创 2021-03-18 16:24:36 · 1016 阅读 · 2 评论 -
mysql报错In aggregated query without GROUP BY
执行语句:select de.dept_no, count(s.salary) from salaries s left join dept_emp de on s.emp_no = de.emp_no;完整报错信息:In aggregated query without GROUP BY, expression #1 of SELECT list contains nonaggregated column 'demos.de.dept_no'; this is incompatible with s原创 2021-03-18 09:45:47 · 1957 阅读 · 1 评论 -
mysql常用语句八:DQL中的查询操作
1 强制索引表结构如下需求针对salaries表emp_no字段创建索引idx_emp_no,查询emp_no为10005, 使用强制索引。SQL语句select * from salaries force index(idx_emp_no) where emp_no = 10005;运行截图2 构造触发器表结构如下需求构造一个触发器audit_log,在向employees_test表中插入一条数据的时候,触发插入相关的数据到audit中。SQL语句create trig原创 2021-03-17 21:41:48 · 920 阅读 · 0 评论 -
mysql常用语句七:DQL中的查询操作
1 累加操作表结构如下需求已知成绩,求最差的排名。结果按照grade升序排序。SQL语句:select grade, sum(number) over(order by grade) as t_rankfrom class_gradeorder by grade;有的mysql版本可能不支持over()函数,8.0以上才支持。2 创建视图表结构如下需求创建视图actor_name_view,只包含first_name以及last_name两列,并对这两列重新命名,first_n原创 2021-03-11 21:42:20 · 926 阅读 · 0 评论 -
mysql常用语句六:DQL中的查询操作
1 创建唯一索引和普通索引表结构如下:需求对first_name创建唯一索引uniq_idx_firstname,对last_name创建普通索引idx_lastname。SQL语句create unique index uniq_idx_firstname on actor(first_name);create index idx_lastname on actor(last_name);2 转义符的使用表结构如下需求将所有员工的last_name和first_name通过'(单原创 2021-03-10 10:29:51 · 2863 阅读 · 0 评论 -
mysql常用语句五:DQL中的查询操作
1 查询时间间隔段内的记录表结构如下查询在2025年内投递简历的岗位和数量,并且按数量降序排序。select job, sum(num) as cnt from resume_info where date between "2025-01-01" and "2025-12-31"group by joborder by cnt desc;注意的是要使用sum函数,而不是count函数。date那一行还可以写作where date like "2025%"。2 多个条件中使用in关键原创 2021-03-09 22:03:48 · 3318 阅读 · 1 评论 -
mysql常用语句四:DQL中的查询操作
1 平均数和保留小数位表结构如下查询各个岗位分数的平均数,并且按照分数降序排序,结果保留小数点后面3位(3位之后四舍五入)select job, round(avg(score), 3) from gradegroup by joborder by avg(score) desc;要注意round和avg函数的使用。2 查找A表中没有B表的选项表结构如下查找所有非部门领导的员工emp_no。select emp_no from employeeswhere emp_no no原创 2021-03-08 11:10:59 · 712 阅读 · 2 评论 -
mysql常用语句三:DQL中的查询操作
1 排序操作表结构如下查找所有dept_no,并排序select dept_no from dept_emporder by dept_no;逆序排序select dept_no from dept_emporder by dept_no desc;2 去重操作表结构同上查找所有dept_no,排序并去重select distinct dept_no from dept_emporder by dept_no desc;要注意的是distinct必须放在前面3 查询原创 2021-03-07 19:42:33 · 697 阅读 · 1 评论 -
【DML】mysql常用语句二:数据操纵语言DML
数据操纵语言DML是对数据库中表的操作,分别是插入数据,删除数据,修改数据。这篇博文以mysql为例,记录下常用的DML语句。1 插入数据# 创建表CREATE TABLE tb_courses(course_id INT NOT NULL AUTO_INCREMENT,course_name CHAR(40) NOT NULL,course_grade FLOAT NOT NULL,course_info CHAR(100) NULL,PRIMARY KEY(course_id));原创 2020-07-28 19:53:08 · 258 阅读 · 0 评论 -
【DDL】mysql常用语句一: 数据定义语言DDL
SQL语言中常用的语句可以分为四类:数据定义语言DDL;数据操纵语言DML;数据查询语言DQL;数据控制语言DCL。这篇博文以mysql为例,记录下常用的DDL语句。DDL用来创建数据库、表、视图等。1 数据库的操作1.1 创建数据库CREATE DATABASE IF NOT EXISTS 数据库名 DEFAULT CHARACTER SET utf8;需要说明的是:if not exists是为了避免有已经存在的数据库而报错;utf8是数据库编码,中间没有杠。1.2 删除数原创 2020-07-28 17:34:16 · 434 阅读 · 0 评论 -
Navicat显示中文乱码的解决方案
Navicat是mysql比较知名的客户端了,我们在使用的过程中有时候会出现显示中文乱码的问题,如下入所示。解决方案就是,将数据库的编码设置为自动。具体操作如下:1 在连接上右键,选择连接属性。2 将编码设置为自动,不同版本的navicat,编码设置的位置可能不同。然后就可以看到中文能够正常显示了。...原创 2020-07-28 15:52:55 · 8167 阅读 · 0 评论 -
mac下mysql的安装和卸载,以及修改端口
在Mac环境下安装了mysql,发现不同的版本有一些不同的问题,总结一下。我一共试了三个版本的mysql,5.7.11的版本改端口号有问题,8.0.20的版本改root密码有问题,最后发现5.7.30的版本是没有上述问题的。一、 安装安装部分,一路下一步就行,它会弹出初始密码,可以直接复制,点快了的话,可以在通知里查看。然后系统偏好设置启动服务。最后在命令行启动即可。mysql -uroot -p输入上图的初始密码,然后再修改密码即可。set password for root@lo原创 2020-06-15 20:33:46 · 550 阅读 · 0 评论