
MySQL
临渊行
不必仰望别人,自己亦是风景
展开
-
MYSQL实战四十五讲总结笔记_08、事务到底是隔离的还是不隔离的
前言:整理归纳,仅供个人温习之用,请支持正版极客时间 问题引入:如果是可重复读隔离级别,事务 T 启动的时候会创建一个视图 read-view,之后事务 T 执行期间,即使有其他事务修改了数据,事务 T 看到的仍然跟在启动时看到的一样。一个事务要更新一行,如果刚好有另外一个事务拥有这一行的行锁,它又不能这么超然了,会被锁住,进入等待状态。问题是,既然进入了等待状态,那么等到这个事务自己获取到行锁要更新数据的时候,它读到的值又是什么呢?(理解不易,建议看正版,评论区很多大佬)1、例子:...原创 2020-07-11 16:34:45 · 305 阅读 · 0 评论 -
MYSQL实战四十五讲总结笔记_07、行锁
前言:整理归纳,仅供个人温习之用,请支持正版极客时间1、行锁概念*MySQL 的行锁是在引擎层由各个引擎自己实现的,并不是所有的引擎都支持行锁(比如 MyISAM 引擎)。不支持行锁意味着并发控制只能使用表锁,对于这种引擎的表,同一张表上任何时刻只能有一个更新在执行,这就会影响到业务并发度。*行锁就是针对数据表中行记录的锁。比如事务 A 更新了一行,而这时候事务 B 也要更新同一行,则必须等事务 A 的操作完成后才能进行更新。2、两阶段锁*两阶段锁协议:在 InnoDB 事务..原创 2020-07-07 11:08:04 · 275 阅读 · 0 评论 -
MYSQL实战四十五讲总结笔记_06、全局锁和表锁
前言:整理归纳,仅供个人温习之用,请支持正版极客时间 根据加锁的范围,MySQL 里面的锁大致可以分成全局锁、表级锁和行锁三类 1、全局锁(对整个数据库实例加锁)*MySQL 提供了一个加全局读锁的方法,命令是 Flush tables with read lock (FTWRL)。当你需要让整个库处于只读状态的时候,可以使用这个命令,之后其他线程的以下语句会被阻塞:数据更新语句(数据的增删改)、数据定义语句(包括建表、修改表结构等)和更新类事务的提交语句。*使用场景:全库逻...原创 2020-07-06 21:50:13 · 277 阅读 · 0 评论 -
MYSQL实战四十五讲总结笔记_05、索引_下
前言:整理归纳,个人温习之用,请支持正版极客时间1、问题引入在下面这个表 T 中,如果我执行 select * from T where k between 3 and 5,需要执行几次树的搜索操作,会扫描多少行?mysql> create table T (ID int primary key,k int NOT NULL DEFAULT 0,s varchar(16) NOT NULL DEFAULT '',index k(k))engine=InnoDB;inse原创 2020-07-04 22:09:12 · 316 阅读 · 0 评论 -
MYSQL实战四十五讲总结笔记_04、索引_上
前言:整理归纳,个人温习之用,请支持正版极客时间1、索引的常见模型*概念:索引的出现其实就是为了提高数据查询的效率,就像书的目录一样,常见的索引模型有哈希表、有序数组和搜索树*哈希表是一种以键 - 值(key-value)存储数据的结构,我们只要输入待查找的键即 key,就可以找到其对应的值即 Value。哈希的思路很简单,把值放在数组里,用一个哈希函数把 key 换算成一个确定的位置,然后把 value 放在数组的这个位置。冲突:多个 key 值经过哈希函数的换算,会出现同一个值的情.原创 2020-07-04 10:34:13 · 299 阅读 · 0 评论 -
MYSQL实战四十五讲总结笔记_03、事务隔离
前言:整理归纳,个人温习之用,请支持正版极客时间1、何谓事务?*事务就是要保证一组数据库操作,要么全部成功,要么全部失败。在 MySQL 中,事务支持是在引擎层实现的。MySQL 是一个支持多引擎的系统,但并不是所有的引擎都支持事务。比如 MySQL 原生的 MyISAM 引擎就不支持事务,这也是 MyISAM 被 InnoDB 取代的重要原因之一*ACID(Atomicity、Consistency、Isolation、Durability,即原子性、一致性、隔离性、持久性)原子性(.原创 2020-07-01 10:21:01 · 265 阅读 · 0 评论 -
MYSQL实战四十五讲总结笔记_02、SQL更新语句如何执行
前言:整理归纳,个人温习之用,请支持正版极客时间问题引入:怎样让数据库恢复到半个月内任意一秒的状态?1、更新语句流程*创建一个表,将 ID=2 这一行的值加 1,SQL 语句如下mysql> create table T(ID int primary key, c int);mysql> update T set c=c+1 where ID=2;首先执行语句前要先连接数据库;其次在一个表上有更新的时候,跟这个表有关的查询缓存会失效,所以这条语句就会把表 T 上.原创 2020-06-30 09:42:00 · 396 阅读 · 0 评论 -
MYSQL实战四十五讲总结笔记_01、SQL查询语句如何执行
前言:整理归纳,个人温习之用,请支持正版极客时间1、MYSQL的基本架构如上图所示,MYSQL可以分为Server层和存储引擎层。不同的存储引擎共用一个Server层。Server层:连接器、查询缓存、分析器、优化器、执行器、执行器,包含MYSQL的大多数核心服务功能和所有内置函数(日期、时间、数学、加密函数),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。存储引擎层:负责数据的存储和提取。插件式架构模式,支持InnoDB(MYSQL5.5.5开始成为默认存储引擎原创 2020-06-29 14:40:09 · 245 阅读 · 0 评论 -
MYSQL执行sql语句报错——ERROR 1064 (42000)
错误信息:错误语句:create database 'mmall' default character set utf8 collate utf8_general_ci;ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server...原创 2019-12-01 22:34:50 · 2815 阅读 · 0 评论 -
MYSQL5.5增加新用户报错
错误:在cmd命令行中进入MYSQL,用insert插入新用户出错,插入语句:insert into mysql.user(host,user,password) values("localhost","cpx",password("cpx"));ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value原...原创 2019-12-01 22:28:59 · 536 阅读 · 0 评论 -
MySQL学习笔记_12_数据库的备份和还原(系列笔记来自黑马视频+细微改动整理)
1. 命令行: * 语法: * 备份: mysqldump -u用户名 -p密码 数据库名称 > 保存的路径 * 还原: 1. 登录数据库 2. 创建数据库 3. 使用数据库 4. 执行文件。sourc...原创 2019-02-01 14:31:05 · 190 阅读 · 0 评论 -
MySQL学习笔记_11_DCL:管理用户,授权
1. 管理用户 1. 添加用户: * 语法:CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码'; 2. 删除用户: * 语法:DROP USER '用户名'@'主机名'; 3. 修改用户密码: ...原创 2019-02-01 14:30:57 · 118 阅读 · 0 评论 -
MySQL学习笔记_01_入门
一、数据库的基本概念1. 数据库的英文单词: DataBase 简称 : DB2. 什么数据库? * 用于存储和管理数据的仓库。3. 数据库的特点: 1. 持久化存储数据的。其实数据库就是一个文件系统 2. 方便存储和管理数据 3. 使用了统一的方式操作数据库 -- SQL4、配置 * MySQL服务启动 1. ...原创 2019-01-31 16:12:15 · 163 阅读 · 0 评论 -
MySQL学习笔记_02_DDL:操作数据库、表
1. 操作数据库:CRUD 1. C(Create):创建 * 创建数据库: * create database 数据库名称; * 创建数据库,判断不存在,再创建: * create database if not exists 数据库名称; *...原创 2019-01-31 16:18:38 · 128 阅读 · 0 评论 -
MySQL学习笔记_03_DML:增删改表中数据
1. 添加数据: * 语法: * insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n); * 注意: 1. 列名和值要一一对应。 2. 如果表名后,不定义列名,则默认给所有列添加值——insert into 表名 values(值1,值2,......原创 2019-01-31 16:22:50 · 177 阅读 · 0 评论 -
MySQL学习笔记_04_DQL01:查询表中的记录
1. 语法: select 字段列表 from 表名列表 where 条件列表 group by 分组字段 having 分组之后的条件 order by 排...原创 2019-01-31 16:33:52 · 231 阅读 · 0 评论 -
MySQL学习笔记_05_DQL02:查询语句
1. 排序查询 * 语法:order by 子句 * order by 排序字段1 排序方式1 , 排序字段2 排序方式2... * select * from 表名 order by 排序字段 排序方式; * 排序方式: * ASC:升序,默认的。 * DESC:降...原创 2019-01-31 16:43:15 · 223 阅读 · 0 评论 -
MySQL学习笔记_06_约束
1、* 概念: 对表中的数据进行限定,保证数据的正确性、有效性和完整性。 * 分类: 1. 主键约束:primary key 2. 非空约束:not null 3. 唯一约束:unique 4. 外键约束:foreign key2、 非空约束:not null,值不能为null 1. 创建表时添加...原创 2019-01-31 16:52:29 · 104 阅读 · 0 评论 -
MySQL学习笔记_07_数据库的设计
1. 多表之间的关系 1. 分类: 1. 一对一(了解): * 如:人和身份证 * 分析:一个人只有一个身份证,一个身份证只能对应一个人 2. 一对多(多对一): * 如:部门和员工 * 分析:一个部门有多...原创 2019-01-31 16:55:22 · 141 阅读 · 0 评论 -
MySQL学习笔记_08_多表查询
1、* 查询语法: select 列名列表 from 表名列表 where....2、* 准备sql # 创建部门表 CREATE TABLE dept( id INT PRIMARY KEY AUTO_INCREMENT, ...原创 2019-01-31 17:01:15 · 163 阅读 · 0 评论 -
MySQL学习笔记_10_事务
1. 事务的基本介绍 1. 概念: * 如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败。 2. 操作: 1. 开启事务: start transaction; 2. 回滚:rollback; 3. 提交:c...原创 2019-02-01 14:30:48 · 128 阅读 · 0 评论 -
MySQL学习笔记_09_多表查询练习
-- 部门表CREATE TABLE dept ( id INT PRIMARY KEY PRIMARY KEY, -- 部门id dname VARCHAR(50), -- 部门名称 loc VARCHAR(50) -- 部门所在地);-- 添加4个部门INSERT INTO dept(id,dname,loc) VALUES(10,'教研部','北京'),(20,'学...原创 2019-01-31 14:39:24 · 325 阅读 · 0 评论