mysql4

1事务

2索引

3备份

4homework

2常用时间处理函数

date_add(now(),INTERVAL -1 MINUTE)

date_sub()

date_format(时期,'%y-%m')

now()/current...

 

 

 

left join  

right join

 

事务


需要知道

1事务的概念

2ACID

原子性,一致性,隔离性 (隔离级别) 持久性

 

3不同隔离级别对应的数据问题

读未提交--》脏读

读已提交--》不可重复读  数据内容的改变  update

可重复读--》  mysql默认 幻读(记录条数的改变,insert,delete)

串行话--》可以解决上述问题

 

4基本使用步骤

(1)取消事务自动提交,mysql --自动提交   oracle--》  默认不是自动提交的

(2)开启事务:start transaction ,   conn.setAutoCommit(false)

(3)执行 语句

(4)commit  (try块中)  /rollback  catch块中

 

两大引擎 MyISAM  InnoDB

是什么

 

就是一件事情, 这件事情可能涉及多个sql语句,这多个语句应该是一个整体

 

特性ACID

A  automic 原子性,事务是一个整体,不可分割,要么成功 要么失败

C consistency 一致性,状态要么是成功前,要么是执行成功之后的

I Isolation   隔离性  多个事务之间相互隔离, 张三给李四转钱,李四给张三转,两个独立的事务互不影响

D durability 持久性,数据都要持久化到DB中

 

事务怎么玩

注意 使用事务时应先关闭自动提交  即手动提交事务!!!

 

 

回滚点

 

期望回滚到某个状态,而不是最开始的那个状态, 此时,可以通过设置回滚点,直接回滚到这个回滚点即可

 

在某些成功操作后,后续操作有可能有失败的,但不管成功还是失败,前面操作都已经成功,可以再当前成功的位置设置一个回滚点, 可以供后续失败操作返回该位置,而不是返回所有操作,这个点称之为回滚点

 

savepoint 是在数据库事务处理中实现“子事务”,subtransaction,也称为嵌套事务的方法,事务可以回滚到savepoint,而不影响savepoint创建前的变化,不需要放弃这个事务

 

设置回滚点 savepoint名字

回到回滚点 rollback to 名字

 

隔离级别

脏读   一个事物读取到了另一个事务中尚未提交的数据

不可重复读   一个事物中两次读取的数据内容不一致,要求的是一个事务中多次读取时数据是一致的,这是事务update时引发的问题

 

幻读   一个事务,中两次读取的数据的数量不一致,要求在一个事务多次读取的数据的数量是一致的,这是insert或delete时引发的问题。

 

上面的级别最低,下面的级别最高,“是”表示会出现这种问题,“否”表示不会出现这种问题。

级别     名字     隔离级别               脏读      不可重复读       幻读                数据库默认隔离级别

1      读未提交    readuncommitted  是              是                是

2    读已提交   read committed       否              是                   是          oracle 和sql server

3     可重复读 repeatable read          否          否                    是          mysql

4串行化              serializable              否           否                    否

 

隔离级别越高    性能越差    安全性越高

 

注意:设置事务隔离级别 ,需要退出mysql  再重新登陆 才能看到 隔离级别的变化 

 

DCL:  (Data  Control  Language)

在后面的学习中 可能会用到远程连接的授权

 

公司中    机会概率也小    中大厂

 

备份

小概率会操作到!

关系型:业务库,订单,加购,库存,订单明细,  java开发

关系型数据库的数据,-》 大数据的数仓中--》你关心的是数据的导入,数据的建模和分析--》

大数据里面的备份方式(这才是要关心的)

 

可视化工具备份,命令备份

数据库备份必要性

 

  • 保证重要数据不丢失
  • 数据转移

mysql数据库备份方法

  • mysqldump 备份工具
  • 数据库管理工具,如sqlyog
  • 直接拷贝 数据库文件和相关配置文件

索引

java初级必问

需要知道:

1作用

2分类

3适合的场景

 

类似字典目录页 提高检索速度

提高查询速度

确保数据的唯一性,主键

可以加速表和表之间的连接,实现表与表之间的参照完整性

使用分组和排序子句进行数据检索时,可以显著减少分组和排序的时间

全文检索字段进行搜索优化

 

缺点

占有一定的磁盘空间

对于DML操作,可能需要更新索引。

 

分类:

主键索引  PRIMARY KEY

唯一索引  UNIQUE

其实我们建表的时候,为列加上唯一约束,他就会添加一个唯一索引

 

常规索引  INDEX

一般我们建立 组合索引 在多个字段上添加索引  对经常 查询的字段  可以使用 组合索引

作用:快速定位特定数据

注意

index和key关键字都可设置常规索引

应加在查找条件的字段

不宜添加太多常规索引,影响数据的插入,删除和修改

 

全文索引FULLTEXT

作用  快速定位特定数据

注意

   只能适用于MyISAM类型的数据表,

只能适用于CHAR,VARCHAR,TEXT数据列类型

适合大型数据集

 

语法:

创建索引:

这是最基本的索引,他没有任何限制,他有以下几种创建方式,

create index indexname on table_name(colomun_name)

如果是char  varchar类型,length可以小于字段实际长度,如果BLOB和TEXT类型,必须指定length

 

 

修改表结构(添加索引)

alter table tablename add index indexname(colomnname)

 

创建索引 

创建表时添加

建表后追加

ALTER  TABLE 表名   ADD 索引类型(数据列名)

删除索引

DROP INDEX 索引名 ON 表名

ALTER TABLE  表名 DROP INDEX 索引名

ALTER TABLE 表名 DROP PRIMARY KEY

 

查看索引

show index(或keys)from 表名;

索引准则

索引不是越多越好

不要对经常变动的数据加索引

小数据量的表建议不要加索引

索引一般应加在查找条件的字段

 

 

如何体现索引有效

explain

https://blog.csdn.net/why15732625998/article/details/80388236

mysql高级  explain用法和结果分析

 

explain简介

使用EXPLAIN关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的。分析你的查询语句或是表结构的性能瓶颈

 

➤ 通过EXPLAIN,我们可以分析出以下结果:

  • 表的读取顺序
  • 数据读取操作的操作类型
  • 哪些索引可以使用
  • 哪些索引被实际使用
  • 表之间的引用
  • 每张表有多少行被优化器查询

➤ 使用方式如下:

EXPLAIN +SQL语句

 

EXPLAIN SELECT * FROM t1

执行计划包含的信息

2. 执行计划各字段含义

2.1 id

select查询的序列号,包含一组数字,表示查询中执行select子句或操作表的顺序

id的结果共有3中情况

id相同,执行顺序由上至下

id相同 执行顺序由上至下

[总结] 加载表的顺序如上图table列所示:t1 t3 t2

id不同,如果是子查询,id的序号会递增,id值越大优先级越高,越先被执行

 

id相同不同,同时存在

如上图所示,在id为1时,table显示的是 <derived2> ,这里指的是指向id为2的表,即t3表的衍生表。

2.2 select_type

常见和常用的值有如下几种:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值