Mysql学习
mysql学习
码儿快跑~
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
mysql的进阶学习--应用篇--锁
概述全局锁介绍全局锁就是对整个数据库实例加锁, 加锁之后的整个实例就处于只读状态, 后续的DML的写语句, DDL语句, 已经更新操作的事务提交语句都将被阻塞.其典型的使用场景就是做全局的逻辑备份, 对所有的表进行锁定, 从而获取一致性视图, 保证数据的完整性.说白了就是, 备份的数据有了订单信息, 有了订单日志,却没有减少相应的库存.https://www.daquan.cc/play/?170298-0-0.html 四海通过全局锁, 进行数据的备份表级锁行级锁...原创 2022-02-16 21:56:37 · 284 阅读 · 0 评论 -
mysql的进阶学习--应用篇--视图, 存储过程, 触发器
这三个我们称之为MSQL当中的存储对象, 还有一个叫做存储函数视图视图是一种虚拟存在的表, 视图当中的数据并不是在数据库中实际存在, 而是在实际的表中, 视图只是说, 我们查询到的一个数据的表现形式. 是动态生成的.简而言之, 视图不保存数据, 而是保存了查询的SQL的逻辑, 数据的来源是基本表, 叫基表, 所以我们在创建视图的时候, 的主要的工作就是创建这条查询的SQL语句上.创建create [or replace] view 视图名称[(列名列表)] as select语句 [with [c原创 2022-02-16 13:14:38 · 401 阅读 · 0 评论 -
mysql的进阶学习--应用篇--其他SQL语句的优化
插入数据时的优化批量插入一次性插入的500到1000条是比较合适的, 不建议一次性插入超过一千条.如果要插入几万条呢?可以将其, 分割为多条SQL语句:建议手动提交事务多条插入语句时, 建议先开启事务, 将多条插入语句作为一个事务提交.建议主键顺序插入比起主键乱序, 性能要好的多.大批量插入数据例如说, 有一个业务要插入上百万, 上千万的数据记录.此时使用insert的性能就太低了, 此时可以使用MySQL数据库提供的load指令进行插入, 操作如下:左侧就是原始的磁盘文件结构,原创 2022-02-16 11:56:32 · 650 阅读 · 0 评论 -
mysql的进阶学习--应用篇--索引
安装Linux版本的mysql系统: centOS7msyql: 8.0.26索引概述索引是一种有序的数据结构可以帮助MySQL高效的获取数据.那也就是说: 在数据库表结构之中, 除了要保存数据之外, 数据库还要去维护索引这种数据结构, 利用这些结构指向保存的数据. 这样就可以在这些数据结构中通过高级的查找算法, 快速定位到原始数据.索引结构MySQL的索引是在存储引擎层中实现的, 不同的存储引擎有不同的结构, 主要包含以下几种:二叉树索引结构改良:B-tree索引结构以原创 2022-02-14 17:45:28 · 535 阅读 · 0 评论 -
mysql的进阶学习--应用篇--存储引擎
mysql的体系结构各层负责的工作连接层主要完成一些类似于连接处理,授权认证, 及相关的安全方案, 服务器也会为安全接入的每一个用户端验证他具有的操作权限.服务层第二层主要完成一些核心服务, 并完成缓存的查询, SQL的分析和优化, 部分内置函数的执行, 所有跨存储引擎的功能也在这一层实现. 如过程, 函数等.引擎层存储引擎真正的负责了MySQL中数据的存储和读取, 服务器通过API和存储引擎进行通信, 不同的存储引擎具有不同的功能, 这样我们根据自己的需要, 来选取合适的存储引擎.存储层原创 2022-02-14 10:20:35 · 390 阅读 · 0 评论 -
mysql的进阶学习--应用篇--引言
这个篇章要学习的内容存储引擎索引SQL优化视图、存储过程、触发器锁InnoDB引擎MySQL管理原创 2022-02-14 08:36:33 · 130 阅读 · 0 评论 -
mysql的进阶学习--基础篇--事务的隔离级别
隔离级别有四种Read uncommit:Read commit:repeatable read(默认):serializable:查看事务隔离级别select @@ transaction isolation;设置事务隔离级别set [session|global] transaction isolation level {上述四种};原创 2022-02-13 21:37:26 · 99 阅读 · 0 评论 -
mysql的进阶学习--基础篇--事务的并发问题
事务在并发的时候将会出现什么问题:脏读一个事务读到另外一个事务还没有提交的数据说明什么?说明两个事务都没提交, 读到的数据必然是不准确的, 非持久化的数据.不可重复读一个事务之中, 先后读取同一条记录, 但是两次读取的数据却是不一样的. 称之为不可重复读.说明什么?说明事务并发时, 事务都没提交, 但是有一个事务先提交了, 并修改了数据, 而另一个事务还没提交, 此时必然会出现两次读到的数据不一致.解决办法:可以让事务并发但是其中慢了一点的事务读取数据前, 必须要保证另外的并发的事务提原创 2022-02-13 00:22:08 · 283 阅读 · 0 评论 -
mysql的进阶学习--基础篇--事务的四大特性
什么是事务的ACID原子性A事务是不可分割的最小单元一致性C事务完成时, 必须使得所有数据都保持一致隔离性I数据库系统的隔离机制, 保证了事务在不受外部并发操作的影响下独立的运行.持久性D事务一旦回滚或者提交, 他对数据库中的数据的改变就是永久的....原创 2022-02-13 00:21:42 · 238 阅读 · 0 评论 -
mysql的进阶学习--基础篇--事务的基本操作
查看事务提交方式select @@autocommit ;1: 就是自动提交0: 就是手动提交设置事务的提交方式为手动提交select @@autocommit = 0;提交事务commit ;回滚事务rollback;如果不是手工提交怎么开启事务start transacttion或者begin此时, 如果没有commit一样不会生效....原创 2022-02-13 00:21:28 · 187 阅读 · 0 评论 -
mysql的进阶学习--基础篇--事务
事务的简介事务是一组操作的集合, 他是一个不可分割的工作单位, 事务会把所有的操作作为一个整体, 一起向系统提交或者撤销操作请求, 也就是说, 这些操作要么同时成功, 要么同时失败.事务的操作事务的四大特性并发事务问题事务的隔离级别...原创 2022-02-13 00:21:12 · 298 阅读 · 0 评论 -
mysql的进阶学习--基础篇--多表查询--子查询
概念SQL语句中嵌套select语句子查询的外部语句可以是insert/update/delete/select的任何一个.也即是说, DML和DQL都可以子查询根据子查询的结果不同, 分为标量子查询常用的操作符是: > < >= <= <>结果为单个值例如:查询销售部的所有员工的信息select * from emp where dept_id =(select id from dept where name = '销售部'); 这就是标量子查原创 2022-02-13 00:20:35 · 234 阅读 · 0 评论 -
mysql的进阶学习--基础篇--多表查询--联合查询
联合查询这个很简单select 字段列表 from 表A …union [all]select 字段列表 from 表B …说白了, 就是将多次查询的结果给合并起来, 形成一个新的结果集.联合查询的注意点对于联合查询来说, 多张表的列数必须保持一致, 字段的类型也要一致.union all 会将全部的数据直接联合, 而union会对合并之后的数据做去重(表A和表B是同一张表, 条件不同, 和or就是一样的了)...原创 2022-02-12 19:22:50 · 178 阅读 · 0 评论 -
mysql的进阶学习--基础篇--多表查询--自连接
语法:自连接可以是内连接也可以是外连接例如查询员工, 及其所属领导的名字select a.name , b.name from emp a , emp b where a.managerid = b.id;也就是说, 如果一个员工并没有所属领导, 这个员工就不会被查出来, 也不就是内连接吗再例如查询所有员工, 及其所属的领导, 如果员工没有领导, 也要查出来select a.name , b.name from emp a left outer join emp b on a.manager原创 2022-02-12 17:57:48 · 440 阅读 · 0 评论 -
mysql的进阶学习--基础篇--多表查询--外连接
语法左select 字段列表 from 表1 left outer join 表2 on 条件;右select 字段列表 from 表1 right outer join 表2 on 条件;原创 2022-02-12 17:42:30 · 106 阅读 · 0 评论 -
mysql的进阶学习--基础篇--多表查询--内连接
语法隐式内连接select 字段列表 from 表1, 表2 where 连接条件;显示内连接select 字段列表 from 表1 inner join 表2 on 连接条件;原创 2022-02-12 17:39:03 · 233 阅读 · 0 评论 -
mysql的进阶学习--基础篇--多表查询--概述
笛卡尔积例如直接这样查询select * from emp, dept;也即是, 查询员工表和部门表结果就是一个笛卡尔积什么是笛卡尔积:在数学中, 两个集合, 集合A和集合B的所有组合情况在多表查询时, 需要消除无效的笛卡尔积.消除笛卡尔积示例以上的语句可以改写为select * from emp, dept where emp.dept_id = dept.id;多表查询的分类连接查询内连接:也即是查询表A和表B交集部分的数据外连接:左外连接:查询左表的所有数据, 以原创 2022-02-12 16:58:06 · 176 阅读 · 0 评论 -
mysql的进阶学习--基础篇--多表查询--引入
多表关系项目开发中在进行数据库结构设计时, 会根据业务需求及业务模块之间的关系, 分析并设计表结构, 由于业务之间相互关联, 所以各个表结构之间也存在着各种联系, 基本上分为三种.一对一一对多多对多那么, 在数据库层面我们应该怎么来体现这些关系呢?一对多例如一个部门对应多个员工, 一个员工只对应一个部门实现: 在多的一方建立外键, 指向一的一方的主键.多对多例如一个学生可以选择多门课程, 一门课程中也将有多个学生实现: 建立第三张中间表, 中间表至少包含两个外键, 分别关联两方主键原创 2022-02-12 16:39:24 · 113 阅读 · 0 评论 -
mysql的进阶学习--基础篇--约束
概述约束: 是作用在表的字段上的规则, 用于限制存储在表的数据用的.目的: 保证数据库中的数据是正确的, 合理的, (有效性和合理性)例如:一个人的年龄不能是1000岁吧一个人的性别不能无吧等等约束分类约束描述关键字非空约束该字段的数据不能为nullnot null唯一约束保证该字段的值是这个表中唯一的, 不重复的unique主键约束这个约束等于非空+唯一, 主键是一个元组的唯一标识primary key默认约束保存数据时, 如果没有指定原创 2022-02-12 14:50:03 · 221 阅读 · 0 评论 -
mysql的进阶学习--基础篇--函数的流程函数
流程函数的作用可以在SQL语句中实现条件筛选, 提高语句的效率.if(value , t, f)如果value为true, 返回t, 否则返回f4原创 2022-02-12 12:36:10 · 272 阅读 · 0 评论 -
mysql的进阶学习--基础篇--函数的日期函数
curdate()返回当前的日期curtime()返回当前的时间now()返回当前的日期和时间year(date)获取指定date的年份month(date)获取date的月份day(date)获取指定date的日期date_add(date, interval expr type)返回一个日期/时间值加上一个时间间隔expr后的时间值interval是固定的写法type是单位datediff(date1, date2)返回起始时间date1, 和结束时间date2之间的天原创 2022-02-12 11:34:24 · 197 阅读 · 0 评论 -
mysql的进阶学习--基础篇--函数的数值函数
常见的数值函数介绍这么5个:ceil(X)向上取整floor(X)向下取整mod(x, y)返回x/y的模rand()返回0~1内的随机数round(x, y)求参数x的四舍五入的值, 保留y位小数例子生成一个六位数的随机验证码lpad( floor(rand()*1000000), 6, '0' )...原创 2022-02-12 11:13:58 · 236 阅读 · 0 评论 -
mysql的进阶学习--基础篇--函数的字符串函数
mysql内置的字符串函数有很多:这里拿出几个常用的讲解concat(s1,s2,…,sn)这个函数的功能是字符串拼接, 将s1,s2,…,sn拼接成一个字符串lower(str)将字符串str全部转为小写upper(str)将字符串全部转为大写lpad(str, n, pad)左填充rpad(str, n, pad)右填充trim(str)去掉字符串头部和尾部的空格substring(str,start,len)返回从str的start位置起的len个长度的字符串...原创 2022-02-11 23:28:15 · 149 阅读 · 0 评论 -
mysql的进阶学习--基础篇--函数
之前我们学习过SQL中的聚合函数, 这只是函数的一种. 接下来要继续学习什么是函数, 函数的应用场景, 以及mysql当中常见的函数有哪些.什么是函数函数: 是指一段可以直接被另一段程序调用的程序或者代码.事实上, mysql内部设置了好多函数, 我们所要做的就是调用或者说是使用这些函数来完成我们的业务需求.什么样的场景下, 我需要用到函数具体举例子:比如说: 数据库表中存放的是入职日期, 如果快速的计算出入职天数?比如说: 数据库表中存放的是学生的分数值, 如何快速的判定分数的等级?大概分原创 2022-02-11 23:07:51 · 148 阅读 · 0 评论 -
mysql的进阶学习--基础篇--SQL的DCL
DCL介绍DCL是SQL数据控制的部分, 用途是管理数据库用户, 控制数据库访问权限.也就是说, 不同的用户能否登录数据库, 有的用户只能在本地登录, 有的不仅可以在本地登录, 也可以在网络中的任意一个ip地址中登录. 不同的用户登录数据库以后, 可以操作的数据库是不一样的, 就算能操作, 能操作的范围也是有限的.这就是DCL的作用.管理用户查询用户use mysql;select * from user;创建用户create user '用户名'@'主机名' identified by原创 2022-02-11 22:26:29 · 353 阅读 · 0 评论 -
mysql的进阶学习--基础篇--SQL的DQL
事实上查询的频次要远远高于增删改的频次.语法基础DQL语法select 字段列表 from 表名列表where 条件列表group by 分组字段列表having 分组后条件列表order by 排序字段列表limit 分页参数条件查询聚合函数查询分组查询排序查询分页查询执行顺序...原创 2022-02-10 17:17:05 · 319 阅读 · 0 评论 -
mysql的进阶学习--基础篇--SQL的DDL和DML
什么是关系型数据库概念: 建立在关系模型基础之上, 由多张相互连接的二维表组成的数据库.特点:使用表存储数据, 格式统一, 便于维护.使用sql语言操作, 使用方便, 标准统一.数据模型:用户 --> 登陆 --> 数据库管理系统 --> 使用sql语言 --> 操作该管理系统中的数据库.SQL的通用语法SQL语句可以单行或者多行书写, 以分号结尾;SQL语句可以使用空格/缩进来增强语句的可读性;Mysql的Sql语句不区分大小写, 关键字建议使用大写;注原创 2022-02-10 12:00:42 · 368 阅读 · 0 评论 -
mysql的进阶学习--在学习之前
大概学习了数据库是个什么东西之后,大概初步掌握一种数据库,例如mysql并学习了基本的sql语法之后就可以进入数据库的进阶学习这个阶段要学习事务,存储引擎,索引,sql优化,锁最后,在实际工作当中,数据库为了存储更多的数据,以及追求更高的效率,往往是以集群的形式存在。所以我们还要掌握数据库运维的知识例如:日志管理,主从复制,读写分离,分库分表等,至此才能说自己是一名真正的数据库高手。...原创 2022-02-07 13:55:27 · 704 阅读 · 0 评论 -
MySQL学习-多表联合查询的sql语法
总结:内连接就是两个表的交集 ,左外连接就是左边表加两表交集 ,右外连接就是右边表加两表交集1.内连接查询join 或 inner join分为两类:隐式内连接select * from A,B where 条件 隐式连接使用别名:select * from A 别名1,B 别名2 where 别名1.xx=别名2.xx;显示内连接select * from A inner join B on 条件 (inne原创 2022-01-11 10:25:55 · 1770 阅读 · 0 评论 -
猪言猪语_数据库的基本知识
数据库基本知识一.数据库基本概念数据库:用于存储和管理数据的仓库.那么和存储到文件有什么不一样呢数据库的特点: 持久化存储数据,其实数据库就是一个***文件系统***. 方便存储和管理数据 使用了统一的方式操作数据库–sql二.数据库产品MySQL安装 我们安装的到底是什么呢? 其实是没有图形界面的一种服务器软件 然后会在windows 的服务列表里面注册一个MySQL的服务(没有图像界面的应用程序) 我在配置的是时候把服务的名称改成了LinMySQL原创 2021-04-29 10:27:05 · 280 阅读 · 1 评论
分享