数据库学习
文章平均质量分 84
你的酒窝里有酒
加油!!!
展开
-
MySql
MySql关联查询中的on和where要回答这个问题,需要知道SQL语句的执行顺序。SQL并不是按照书写的顺序来依次执行,每一次的执行都会形成一个虚拟的表,但是这个虚拟的表对用户是不可见的。FROM语句,对FROM前后的表做笛卡尔积。形成虚拟表1。ON语句,对虚拟表1 进行筛选,筛选条件用的是join_coddition,然后形成虚拟表2。JOIN语句,如果是外连接如left join和right join 则on 筛选条件对关联表无效,仅会用来过滤被关联表,关联表中的所有数据都会显示,而被关联表原创 2021-11-22 23:07:13 · 751 阅读 · 0 评论 -
Innodb 的buffer pool
Innodb 的buffer pool1、buffer pool的由来在innodb存储引擎中,数据是以页为单位,存储在表空间中的,而表空间只不过是对一个或者几个实际文件的抽象,也就是说数据最终是存储在磁盘上的。而磁盘的访问速度慢,而且innodb存储引擎访问磁盘中的数据时是以页为单位访问的,即使仅仅读取一条数据,也需要将这个数据所在的页全部加载进内存。为了提升性能,innodb引入了类似缓存的一种结构,叫做buffer pool,将热点数据缓存起来,然后按照一定的淘汰策略进行淘汰,这样在读取时如果原创 2021-06-14 20:38:52 · 436 阅读 · 0 评论 -
Mysql MVCC
Mysql MVCCMVCC Multi Version Concurrency Control ,多版本并发控制。主要为了提高数据库的并发性能。在对同一行数据同时进行读写时,一般会采取加锁的方式来保证一致性,但是这样会变为串行,因此MVCC采取更好的方式去处理读–写请求,做到在发生读写冲突的时候不用加锁,提高性能。当前读和快照读当前读:当前即是最新,顾名思义就是读取的最新版本,因为要读去最新版本,所以在读取的时候,其他事务不能修改,所有需要进行加锁。常见的sql如:select … lock i原创 2021-06-12 19:44:41 · 192 阅读 · 0 评论 -
Mysql中的redo log
Mysql中的redo log1、什么是redo logredo log叫做重做日志,目的是为了保证事务持久性的一种机制。保证在mysql服务器意味崩溃或者宕机后,保证对已经提交的事务,可以确定持久化到磁盘中的一种措施。2、为什么需要redo loginnodb是以页为单位来管理存储空间的,任何的增删改差操作最终都会操作完整的一个页,会将整个页加载到buffer pool中,然后对需要修改的记录进行修改,修改完毕不会立即刷新到磁盘,因为此时的刷新是一个随机io,而且仅仅修改了一条记录,刷新一个完整的原创 2021-06-02 22:30:57 · 12493 阅读 · 3 评论 -
索引使用策略
索引使用策略即使数据库表已经建立了索引,但是当不合理的使用,也可能造成索引失效,为了充分的利用索引,避免索引失效,因此也需要一定的策略。1、不在索引列上进行操作当查询时的列不是独立的,则mysql就不会使用到索引。独立的代表索引所在的列不能进行运算,不能作为函数参数。2、尽量全值匹配在使用联合索引的时候,尽量都可以用到,这样可以最大程度的减少扫描的区间,提升查询的效率。3、最左匹配原则当不能全值匹配的时候,需要考虑最左匹配原则,也就是再用到后面的索引的时候,需要先用到前面的索引,否则索引会失效原创 2021-05-23 22:30:40 · 367 阅读 · 0 评论 -
Mysql执行计划
MySql执行计划通过分析sql的执行计划,可以清晰的知道,该sql是如何被mysql解析的。如表的关联顺序,可能会用到的索引,真正用到的索引,索引的长度,扫描的记录行数等等信息。执行计划的语法语法很简单,只要在要分析的sql前面加上explain关键字即可。执行计划分析大概看一下,执行计划都有哪些数据id 每一个查询都对应一个idselectType 查询类型table 表名partitions:匹配的分区信息type : 针对该表的访问方法possible_key :可能用得原创 2021-05-23 21:58:59 · 162 阅读 · 0 评论 -
Mysql索引
MySql索引一、索引定义索引是帮助Mysql高效获取数据的一种数据结构,简而言之,索引就是一种数据结构。一种便于数据库查找数据的数据结构。二、Mysql中的索引在mysql中,我们可以为一张表建立一系列的索引,当查询的时候,首先查找到索引,然后根据索引快速的定位到真正的数据。三、数据结构的选择日常开发中,针对Mysql最主要的是为了查询。1、暴力遍历这个肯定是最直接的办法,将所有数据存储到线性表中,查询的时候依次遍历,这样可以获取到想要的数据,这样的话,存储比较方便,直接存储到线性表的后原创 2021-05-15 17:09:28 · 179 阅读 · 2 评论 -
Mysql的体系结构
Mysql基础一、MySql体系架构Mysql体系架构,主要由以下几部分组成:连接池:用户连接维护及管理,提升访问性能。角色权限认证。管理工具和服务:系统管理和控制工具,例如备份恢复、Mysql 复制、集群 等sql接口:接收用户的sql命令,并且返回sql执行后的结果解析器:对sql进行解析,语法验证优化器:对用户书写的sql进行优化,如索引的选择,表的读取顺序等。缓存:对结果进行缓存,包含表缓存,记录缓存,权限缓存,key缓存等。插件式存储引擎:数据的组织格式文件系统二、M原创 2021-05-09 20:56:12 · 1290 阅读 · 1 评论 -
MySQL学习 ----- 函数
函数数值型函数ABS函数 (计算绝对值)MOD函数(求余)SQRT函数(求平方根函数)时间函数current_date() :当前日期 (年月日)current_time() :当前时间(时分秒)current_timestamp() :当前时间戳(年月日时分秒)now():当前时间(年月日时分秒)month():给定日期所在的月份dayofmonth():当前日期...原创 2019-08-06 18:52:45 · 178 阅读 · 0 评论 -
MySQL事务
数据库 ---- 事务事务的基本介绍概念:如果一个包含多个步骤的业务操作,被事务管理,那么这些擦做要么同时成功,要么同时失败开启事务:start transaction出现异常,回滚事务: rollback没有异常,提交事务:commitMySQL DML语句增删改,事务默认自动提交(不开启事务)查看事务的默认提交方式SELECT @@autocommit;0 代表手动提...原创 2019-07-19 11:05:07 · 209 阅读 · 0 评论 -
JDBC编程学习(二)
JDBC编程学习记录引入工具类每此操纵数据的时候,都需要注册驱动,获取连接对象,书写sql语句,获取sql执行对象,关闭资源,造成大量的代码冗余,因此将这些相同的操作集中到一起,提供一个工具类,简化代码。引入配置文件因为在注册驱动和获取连接对象的时候会因情况而已,因此将这些容易变的东西都放在一个文件中,程序执行的时候再从文件中读取进来,而且方便修改和维护。作为配置文件大多为propert...原创 2019-07-09 18:53:02 · 114 阅读 · 0 评论 -
JDBC编程学习(一)
JDBC编程学习记录JDBC : Java database connectivity通俗而言JDBC就是Java语言操纵数据库,实则是sun公司提供的一套操纵数据库的标准,即提供了了一套接口,仅仅定义了标准,具体实现由数据库厂商而定。各个数据库厂商,实现这套接口,并提供数据库驱动jar包,供开发人员可以直接使用。定义标准的好处世界上有很多很多的数据库产品,如果没有一个统一的标准,程序员就...原创 2019-07-09 18:36:56 · 145 阅读 · 0 评论 -
MySQL学习-----表数据操作
MySQL学习-----表数据操作练习使用SQL语句对数据进行增删改查。向表中所有字段添加数据使用关键字insert向表中插入数据。数据表准备mysql> create table student(id int primary key auto_increment, -> name varchar(20), -> age int not null ...原创 2019-06-10 22:24:52 · 150 阅读 · 0 评论 -
MySQL学习-----表操作
MySql学习-----表操作创建表create table student (id int primary key, -> name varchar(20) not null);create table 表名称 (字段名称 字段类型。。。)查看表结构 desc student;+-------+-------------+------+-----+---------+...原创 2019-06-09 21:09:55 · 257 阅读 · 0 评论 -
MySQL学习------库操作
库操作创建数据库基本语法create database 数据库名称 eg:create database db1;创建指定字符集和校验规则的数据库基本语法create database 数据库名称 charset 字符集名称 collate 校验规则名称eg:create database db2 charset utf-8 collate utf8_bin;查看数据库的...原创 2019-06-09 18:50:52 · 291 阅读 · 0 评论 -
MySQL学习 ----- 表的约束
表的约束约束的作用保证数据库数据的完整性和一致性。通过数据类型在一定程度上可以起到约束作用,但这远远不够,因此引入了其它约束条件。主键约束主键 (primary key) 是一个列或者多个列的组合,其值能唯一的标志表中的一行。主键的关键字primary key。主键的条件每个表只能定义一个主键主键标识表中唯一的一行,该2行的内容不能为NULL。多个列可以组成复合主键,但在复合主键...原创 2019-06-08 13:19:39 · 309 阅读 · 0 评论 -
MySQL学习-----基本查询
MySQL学习-----基本查询练习使用基本的查询语句查询表中的所有内容使用select关键字,* 通配符代表所有。语法格式select * from 表名eg:mysql> select * from exam_result;+----+--------+-------+--------+--------+| id | name | yuwen | shuxue | ...原创 2019-06-12 22:07:28 · 517 阅读 · 0 评论