MySQL 详细学习教程【万字长文, 建议收藏】

这篇具有很好参考价值的文章主要介绍了MySQL 详细学习教程【万字长文, 建议收藏】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

1. Mysql入门

1.1 Mysql5.7 安装配置

Mysql文档地址👉

  1. 建议在用户变量下配置
    MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
  2. 在mysql-5.7.19-winx64目录下创建my.ini文件
    MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
    MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
    MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

1.2 命令行连接到Mysql

MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

1.3 图形化软件

1.3.1 Navicat

MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

1.3.2 SQLyog

MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
改变字体显示
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

1.4 数据库三层结构

  1. 所有安装Mysql数据库,就是在主机安装一个数据库管理系统(DBMS),这个管理程序可以管理多个数据库。DBMS(database manage system)
  2. 一个数据库中可以创建多个表,以保存数据(信息)。
  3. 数据库管理系统(DBMS)、数据库、表三者之间的关系,如图:
    MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

2. Java操作数据库、表

2.1 创建数据库

  1. CHARACTER SET:指定数据库采用的字符集,如果不指定字符集,默认utf8;
  2. COLLATE:指定数据库字符集的校对规则(常用的 utf8_bin[区分大小写]、utf8_general_ci[不区分大小写],注意默认是 utf_general_ci)

创建zzw_db02数据库,采用utf8_general_ci校验规则
创建zzw_db03数据库,采用utf8_bin校验规则
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

2.2 查询数据库

MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

2.3 备份恢复数据库

  • 备份数据库(注意:在DOS执行)命令行

mysqldump -u 用户名 -p -B 数据库1 数据库2 数据库n > 文件名.sql
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

  • 恢复数据库(注意:进入mysql命令行再执行)
    MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
    MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
  • 备份数据库的表

mysqldump -u 用户名 -p密码 数据库 表1 表2 表n > F:/table.sql

MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

2.4 创建表

MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

2.5 修改表

MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

3 CRUD

3.1 insert插入

MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

3.2 update修改

  • 使用细节
    1. UPDATE语法可以用新值更新原有表中的各列;
    2. SET子句指示要修改哪些列和要给予哪些值;
    3. WHERE子句指定应更新哪些行。如没有WHERE子句,则更新所有行;
    4. 如果需要修改多个字段,可以通过 SET 字段1=值1,字段2=值2…

MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

3.3 delete修改

使用细节
1. 如果不使用where语句,将删除表中所有数据。
2. delete语句不能删除某一列的值(可使用update 设为 null 或者 ’ ’ )
3. 使用delete语句仅删除记录,不删除表本身。如要删除表,使用drop table语句。(即:drop table 表名;)
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

3.4 select查询

MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

  • select语句1
    MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
  • select语句2
    MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
  • select语句3
    MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

3.4.1 模糊查询

MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

  • order by排序
    MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
    – 查询加强
    MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
    MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

3.4.2 分页查询

MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

  • group by, having, order by, limit 前后顺序MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

3.5 mysql多表查询

3.5.1 多表查询

MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

3.5.2 自连接

MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

3.5.3 多行子查询

MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

3.5.4 查询临时表

MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

3.5.5 all any操作符

MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

3.5.6 多列子查询

MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

3.5.7 表复制 && 去重

MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

3.5.8 合并查询

MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

3.6 mysql外连接

左连接右连接区别, 参考
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

3.7 主键

实际开发中,每个表一般都有一个主键
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

3.8 unique

MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

3.9 外键

MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

  1. 外键指向的表的字段必须是主键或者是unique;
  2. 表的类型是innodb,这样的表才支持外键;
  3. 外键字段的类型要和主键类型一致(长度可以不一致);
  4. 外键字段的值必须在主键中出现过,或者为NULL;(前提是外键字段允许为NULL);
  5. 主外键关系一旦形成,数据不能随便删除了;
    MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
    MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

3.91 check

MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

3.92 自增长

MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

  1. 一般来说自增长是和primary key配合使用的;
  2. 自增长也可以单独使用(需要配合一个unique);
  3. 自增长修饰的字段是整数型的(浮点型也可以,但是使用非常非常少);
  4. 自增长默认从1开始,但也可以通过以下命令修改;
    ALTER TABLE t25 AUTO_INCREMENT = 777;
  5. 如果添加数据时指定增长字段的值,则以指定的值为准,同时下次自增长的会从这个值开始;

3.3错题集

MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

3. Mysql常用数据类型

整型数据类型 字节数 有符号 无符号
tinyint 1个字节 -2^7~2^7-1 0~2^8-1
smallint 2个字节 -2^15~2^15-1 0~2^16-1
mediumint 3个字节 -2^23~2^23-1 0~2^24-1
int 4个字节 -2^31~2^31-1 0~2^32-1
bigint 8个字节 -2^63~2^63-1 0~2^64-1
float 单精度,4个字节 -2^31~2^31-1 0~2^32-1
double 双精度,8个字节
decimal[M, D] 双精度,8个字节

3.1 数值型( )的基本使用

使用规范:在能够满足要求的情况下,尽量选择占用空间小的类型
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

3.2 数值型(bit)的基本使用

bit字段显示时,按照位的方式显示;
查询的时候仍然可以使用添加的数值;
如果一个值只有0,1 可以考虑使用bit(1),可以节约空间;
位类型,M指定位数,默认值1,范围1~64;
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

3.3 数值型(小数)的基本使用

  1. FLOAT/DOUBLE [UNSIGNED]
    Float 单精度,Double 双精度
  2. DECIMAL[M,D] [UNSIGNED]
  • 可以支持更加精确的小数位,M是小数位数(精度,小数点前面加小数点后面)的总数,D是小数点(标度)后面的位数;
  • 如果D是0,则值没有小数点(标注:D被省略时,默认是0)。M最大是65,D最大是30.
    建议:如果希望小数的精度高,推荐使用decimal。
    MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
    MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

3.4 字符串的基本使用

CHAR(size):固定长度字符串 最大255字符
VARCHAR(size):0~65535字节 可变长度字符串,最大65532字节,1-3个字节用于记录大小【utf8编码size最大21844字符,gbk编码最大32766字符 】
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

  • 字符串使用细节1
    char(4):这个4表示字符数(最大255),不是字节数,不管中文还是字母都是放4个,按字符计算;
    varchar(4):这个4表示字符数,不管是字母还是中文都以定义好的表的编码来存放数据(gbk、utf8、big5);
  • 字符串使用细节2
    char(4)是定长(固定的大小),就是说,即使你插入’aa’,也会占用分配的4个字符的空间;
    varchar(4)是变长(变化的大小),就是说,如果你插入了’aa’,实际占用空间大小并不是4个字符,而是按照实际占用空间来分配;(varchar本身还需要占用1-3个字节来记录存放的内容长度):L(实际数据大小) + (1-3)字节
  • 细节3
    什么时候使用char,什么时候使用varchar
    如果数据是定长,推荐使用char,比如md5的密码,邮编,手机号,身份证号等;
    如果一个字段的长度不确定,我们使用varchar,比如留言,文章;
    查询速度:char > varchar

3.4.1 文本类型使用细节

存放文本时,也可以使用Text数据类型,可以将TEXT列视为VARCHAR列,注意Text不能有默认值,大小0-2^16字节;
如果希望存放更多字符,可以选择MEDIUMTEXT 0-2^24 或 LONGTEXT 0-2^32
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

3.5 日期类型的基本使用

MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

  • 习题
    MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

4. 函数

4.1 统计函数 count

MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

4.2 合计函数 sum

MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

4.3 合计函数 avg

MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

4.4 合计函数 max/min

max/min函数返回满足where条件的一列的最大/最小值
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

4.5 分组函数 group by

  • 使用group by 子句对列进行分组
  • 使用having 子句对分组后的结果进行过滤
    MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

4.6 字符串相关函数

MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

4.7 数学函数

MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

4.8 日期函数

MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

4.9 加密函数

MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

4.12 流程控制语句

MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

5. 索引

MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

5.1 索引类型

  1. 主键索引:主键自动地为主索引(类型:Primary key);
  2. 唯一索引:(unique)
  3. 普通索引:(index)
  4. 全文索引:(fulltext)[适用于MylSAM]
    一般开发中,不适用mesql自带的全文索引;而是使用:全文搜索Solr和ElasticSearch(ES)

5.2 增删改

MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

  • 哪些列适合使用索引
    1. 较频繁的作为查询条件的字段应该创建索引;
      比如:select * from emp where empno = 1;
    2. 唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件;
      比如:select * from emp where sex = ‘男’;
    3. 更新非常频繁的字段不适合创建索引
      比如:select * from emp where logincount = 1;
    4. 不会出现在WHERE子句中的字段不该创建索引;

6. 事务

dml: 数据库操纵语言(Data Manipulation language), 以insert, update, delete三种指令为核心,

●什么是事务
事务是用于保证数据的一致性, 它由一组相关的dml语句组成, 该组的dml语句要么全部成功, 要么全部失败. 如: 转账就要用事务来处理, 用以保证事务的一致性.
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
●事务和锁
当执行事务操作时(dml语句), mysql会在表上加锁, 防止其它用户修改表的数据

●mysql数据库控制台事务的几个重要操作

  1. start transaction; – 开始一个事务
  2. savepoint 保存点名; – 设置保存点
  3. rollback to 保存点名; – 回退事务
  4. rollback; – 回退全部事务
  5. commit; – 提交事务, 所有的操作生效, 不能回退

MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

  • 如果直接回退到a点,那么中间的保存点都会被删掉,那就不能再回退到b点
    MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
    MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

6.1 注意事项和细节

1.如果不开启事务, 默认情况下, dml操作是自动提交的, 不能回滚.
2.如果开启一个事务, 你没有创建保存点, 你可以执行rollback, 默认就是回退到你事务开始的状态
3.你可以在这个事务还没有提交时, 创建多个保存点, 比如 savepoint aaa;
4.你可以在事务还没有提交前, 选择回退到哪个保存点.
5.mysql的事务机制需要innodb的存储引擎才可以使用, myisam不支持.
6.开始一个事务, start transaction 或者 set autocommit=off 二选一.

6.2 隔离级别

多个连接开启各自事务操作数据库中数据时,数据库系统要负责隔离操作,以保证各个连接在获取数据是的准确性;

脏读(dirty read): 当一个事务读取到另一个事务尚未提交的改变(update、insert、delete)时,产生脏读;
不可重复读(nonrepeata ble read): 同一查询在同一事务中多次进行,由于其它提交事务所做的修改和删除,每次返回不同的结果集,则发生不可重复读;
幻读: 同一查询在同一个事务中多次执行,由于其它提交事务所做的插入操作,每次返回不同的结果集,此时发生幻读;

事务隔离级别定义了事务与事务之间的隔离程度【✔ 可能出现;❌ 不会出现】

Mysql隔离级别 脏读 不可重复读 幻读 加锁读
读未提交(Read uncommitted) 不加锁
读已提交(Read committed) 不加锁
可重复读(Repeatable read) 不加锁
可串行化(Serializable) 加锁

案例: 隔离级别演示

MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器代码

CREATE DATABASE zzw_db02;
USE zzw_db02;

-- 演示mysql的事务隔离级别

-- 1.开启两个mysql控制台

-- 2.查看当前mysql的隔离级别
SELECT @@tx_isolation;

-- mysql> SELECT @@tx_isolation;
-- +-----------------+
-- | @@tx_isolation  |
-- +-----------------+
-- | REPEATABLE-READ |
-- +-----------------+

-- 3.把其中一个控制台的隔离级别设置成 Read uncommitted
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

-- 4.创建表
CREATE TABLE `account` (
	id INT,
	`name` VARCHAR(32),
	money INT);
)

1.控制台登录mysql mysql -u root -pzzw
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

2.查看并设置控制台-隔离级别: 读未提交. 隔离级别是作用于控制台的
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

3.出现脏读
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

4.出现不可重复读和幻读
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

1.设置控制台-隔离级别: 读已提交
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

2.未出现脏读
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

3.出现不可重复读和幻读
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

1.重新打开,控制台2, 登录mysql, 将 控制台-隔离级别 设置为可重复读, 这样设置隔离级别不会出错
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

2.不会出现脏读, 幻读, 不可重复读
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器


1.重新打开 控制台2, 设置控制台-隔离级别:可串行化
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

2.加锁
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

代码

-- 查看当前会话的隔离级别
SELECT @@tx_isolation;
-- 查看系统当前隔离级别
SELECT @@global.tx_isolation;
-- 设置当前会话事务隔离级别
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ
-- 设置系统当前隔离级别
SET GLOBAL TRANSACTION ISOLATION LEVEL REPEATABLE READ
-- mysql默认的隔离级别是可重复读 repeatable read

全局修改mysql事务隔离级别: 修改my.ini配置文件
可选的参数有: read-uncommitted, read-committed, repeatable-read,serializable

[client]
port=3306
default-character-set=utf8
[mysqld]
# 设置为自己MYSQL的安装目录
basedir=D:\zzwmysql\mysql-5.7.19-winx64\
# 设置为MYSQL的数据目录, 这个目录是系统帮我们创建
datadir=D:\zzwmysql\mysql-5.7.19-winx64\data\
port=3306
character_set_server=utf8
#跳过安全检查, 输入错误的用户名和密码也能登陆; 注销后, 需要输入正确的用户名和密码才能登陆
#skip-grant-tables
#设置默认的隔离级别, 如果没有设置隔离级别, 默认repeatable-read
transaction-isolation = read-uncommitted

修改my.ini配置文件后要重启mysql服务才会生效

6.3 事务的acid特性

  1. 原子性(Atomicity)
    原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生;
  2. 一致性(Consisrtency)
    事务必须使数据库从一个一致性状态变换到另一个一致性状态;
  3. 隔离性(Isolation)
    事务的隔离是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其它事务的操作数据所干扰,多个并发事务之间要相互隔离;
  4. 持久性(Durability)
    持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对数据有任何影响;

6.4 课后作业

1.登录MySQL命令行A, 创建表 dog(id, name), 开始一个事务, 添加两条记录;
2.登录MySQL命令行B, 开始一个事务, 设置为读未提交.
3.A客户端修改Dog 一条记录, 不要提交. 看看B客户端是否看到变化, 说明什么问题?
4.登录mysql客户端C, 开始一个事务, 设置为读已提交, 这时A客户端修改一条记录, 不要提交, 看看C客户端是否看到变化, 说明什么问题?

MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

代码

-- 课后作业
USE zzw_db02;

-- 创建Dog表
CREATE TABLE dog (
	id INT,
	`name` VARCHAR(32)
);

7. 存储引擎

  1. MySQL表的类型有存储引擎(Storage Engines)决定,主要包括MylSAM、innoDB、Memory等;
  2. MySQL数据表主要支持六种类型,分别是:CSV、Memory、ARCHIVE、MRG MYISAM、MYISAM、InnoDB;
  3. 这六种又分为两类,一类是“事务安全型(transaction-safe)”,比如InnoDB;其余都属于第二类,称为“非事务安全型(non-transaction-safe)”;
    MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
  4. MylSAM不支持事务、也不支持外键,但其访问速度快,对事务完整性没有要求;
  5. InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是比起MylSAM存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引;
  6. MEMORY存储引擎使用存在内存中的内容来创建表。每个MEMORY表只实际对应一个磁盘文件,MEMORY类型的表访问非常快,因为它的数据是放在内存中的,并且默认使用HASH索引。但是一旦服务关闭,表中的数据就会丢失掉,表的结构还在。
  • 如何选择存储引擎?
  1. 如果你的应用不需要事务,处理的只是基本的增删改查,那么MyISAM是不二选择;
  2. 如果需要支持事务,则选择InnoDB
  3. Memory存储引擎将数据存储在内存中,由于没有磁盘/IO等待,速度极快。但由于内存存储引擎,所做的任何修改在服务器重启后都将消失;
    MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
    MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
    MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

8. 视图

视图是一个虚拟表,其内容由查询定义。同真是的表一样,视图包含列,其数据来自对应的真实表(基表)

MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

  • 视图的基本使用
    MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
  • 视图细节

在这里插入图片描述

安全:有些字段是保密的,不能让用户直接看到;
性能:关系型数据库往往会分表存储,建立视图可以避免使用join连接;
灵活:淘汰旧表;

9. mysql用户

mysql中的用户,都存储在数据库mysql的user表中
SELECT host, user, authentication_string FROM mysql.user;
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
其中user表的重要字段说明:
1. host:允许登陆的“位置”,localhost表示该用户只允许本机登录,也可以指定ip地址,比如:192.168.1.1
2. user:用户名
3. authentication_string:密码,是通过mysql的password()函数加密之后的密码

  • 创建用户
    create user ‘用户名’@‘允许登陆的位置’ identified by ‘密码’
  • 删除用户
    drop user ‘用户名’@‘登陆的位置’
    MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

9.1 Mysql权限管理

MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
用户root
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器
用户zzw
MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器文章来源地址https://www.toymoban.com/news/detail-628952.html

  • 细节
    MySQL 详细学习教程【万字长文, 建议收藏】,javaSE,数据库,mysql,服务器

到了这里,关于MySQL 详细学习教程【万字长文, 建议收藏】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ChatGPT背后的AI背景、技术门道和商业应用(万字长文,建议收藏)

    作者:京东科技 李俊兵 各位看官好,我是球神(江湖代号)。 自去年11月30日ChatGPT问世以来,迅速爆火出圈。 起初我依然以为这是和当年Transformer, Bert一样的“热点”模型,但是当一篇篇文章/报告不断推送到我的眼前,我后知后觉地发现这次真的不一样。 很直接的一点是

    2024年02月02日
    浏览(39)
  • Java所有类汇总(7万字长文详细汇总)

    AboutEvent AboutHandler AbsentInformationException AbstractAction AbstractAnnotationValueVisitor6 AbstractAnnotationValueVisitor7 AbstractAnnotationValueVisitor8 AbstractAnnotationValueVisitor9 AbstractBorder AbstractButton AbstractCellEditor AbstractChronology AbstractCollection AbstractColorChooserPanel AbstractDocument AbstractDocument.AttributeContext Ab

    2024年02月10日
    浏览(28)
  • 30天入门Python(基础篇)——第2天:Python安装(保姆级)与IDE的认识与选择+详细安装教程(万字建议收藏)

    🔥🔥本文已收录于《30天学习Python从入门到精通》 🉑🉑本专栏专门 针对于零基础和需要重新复习巩固的同学 所准备的一套基础班教学, 从0基础到精通Python ,轻松掌握Python,欢迎各位同学订阅,专栏订阅地址:点我直达 🤞🤞此外如果您已工作,如需利用Python解决办公中

    2024年02月07日
    浏览(44)
  • 万字长文:Stable Diffusion 保姆级教程

    2022年绝对是人工智能爆发的元年,前有 stability.ai 开源 Stable Diffusion 模型,后有 Open AI 发布 ChatGPT,二者都是里程碑式的节点事件,其重要性不亚于当年苹果发布iPhone,Google推出Android。它们让AI不再是一个遥不可及的技术名词,而是触手可及、实实在在的智能应用工具。 不同

    2024年02月03日
    浏览(36)
  • Haffman编码实现文本压缩-C语言-万字长文,绝对详细

    目录 前言 一、实验目的 二、实验要求 三、设计思想 1 编码 1.1 生成Haffman编码 (1)统计字符频率 (2)构造Haffman树 1.2 文本编码 2 译码 2.1 读入译码信息 2.2 文本译码 2.3 测试结果 四、源码         这是我在CSDN的第一篇文章,第一次不知道怎么写,所以直接把实验报告搬

    2024年02月12日
    浏览(29)
  • 万字长文浅析配置对MySQL服务器的影响

    有很多的服务器选项会影响这 MySQL 服务器的性能,比如内存中临时表的大小、排序缓冲区等。有些针对特定存储引擎(如 InnoDB )的选项,也会对查询优化很有用。 调整服务器的配置从某种程度来说是一个影响全局的行为,因为每个修改都可能对该服务器上的每个查询造成影

    2024年02月16日
    浏览(27)
  • C#详细学习教程

    每天学习做好笔记,思维导图。不是为了以后更好复习,而是为了能够更好的梳理以及记忆知识点。万丈高楼平地起,要想学习好,必须打好基础,切记心浮气躁 简介 :.Net平台 .Netframework框架提供了运行环境和技术 .net可以干什么? 1.桌面应用程序 winform 2. Internet应用程序

    2024年02月12日
    浏览(29)
  • CSDN独家首发!万字长文,YOLOv5/v7/v8算法模型yaml文件史上最详细解析与教程!小白也能看懂!掌握了这个就掌握了魔改YOLO的核心!

    看完这篇你能学会什么? 掌握根据 yaml 文件画出模型结构图的能力 掌握根据模型结构图写 yaml 文件的能力 掌握添加模块后写配置文件 args 参数的能力 掌握修改模型配置文件的能力 模型 尺寸 (像素) mAP val 50-95 mAP val 50 推理速度 CPU b1 (ms) 推理速度 V100 b1 (ms) 速度 V10

    2024年02月02日
    浏览(39)
  • 【Docker】Docker详细学习教程

    Docker 详细教程 一、Docker简介 1.1 docker是什么 【问题】:问什么会有docker出现 ​ Docker的出现 使得Docker得以打破过去「程序即应用」的观念。透过镜像(images)将作业系统核心除外,运作应用程式所需要的系统环境,由下而上打包,达到应用程式跨平台间的无缝接轨运作。 【d

    2024年02月05日
    浏览(25)
  • MySQL学习教程(超全)

    学习MySQL需要通过阅读文档、观看视频教程、参加在线课程等方式。同时,还需要进行实践操作,如创建数据库、表和数据插入、查询等操作,以加深对MySQL的理解和掌握。在实践中,也可以遇到一些问题,需要通过查询文档和搜索解决方案的方式来解决。 一、学习内容 1.学

    2024年02月14日
    浏览(24)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包