画布 1
Mysql
  MySQL 数据库引擎
  什么是事务，四大特性？
  事务并发问题
  事务的 隔离级别？
  SQL 的连接查询
  SQL 语句 的优化
  MySQL 如何实现主从复制？
  MySQL 数据库中有哪些索引？
  什么情况下索引会失效
  MySQL 的常用函数
1、MyISAM
特点：快速读取操作、不支持事务、使用表锁、5.5之前默认
2、InnoDB
特点：支持事务、使用行锁、支持外键约束、5.5之后默认
总结：
同一个数据库可以使用多种存储引擎的表。
如果一个表要求比较高的事务处理，可以选择 B InnoDB 存储引；
如果一个表要求查询比较高，可以选择 M MyISAM 存储引；
ACID
1、原子性
2、一致性
3、隔离性
4、持久性
如果不考虑事务的隔离性，会出现以下问题：
脏读：指一个线程中的事务读取到了另外一个线程中未提交的数据。
不可重复读（虚读）：指一个线程中的事务读取到了另外一个线程中提交的 update 的数据。
幻读：指一个线程中的事务读取到了另外一个线程中提交的 insert 的数据。
1、读未提及
2、读已提交
3、可重复读
4、串行化
1、内连接（inner join）
2、外连接（left join/right join）
3、联合查询（union）
4、全连接（full）
5、交叉连接（cross join）
所谓的 SQL 优化，其实就是从查询效率和消耗资源入手，核心原理就一个，别让索引失效，避免全表扫描
全值匹配我最爱，最左前缀要遵守；
带头大哥不能死，中间兄弟不能断；
索引列上少计算，范围之后全失效；
Like百分写最右，覆盖索引不写星*；
不等空值还有or，索引失效要少用；
VAR引号不可丢，SQL优化有诀窍！
1. 主：binlog 线程——记录下所有改变了数据库数据的语句，放进 master 上的 binlog 中；
2. 从：io 线程——在使用 start slave 之后，负责从 master 上拉取 binlog 内容，放进 自己的 relay log 中；
3. 从：sql 执行线程——执行 relay log 中的语句；
主从复制的注意事项：
1、主 DB server 和从 DB server 数据库的版本一致
2、主 DB server 和从 DB server 数据库数据名称一致
3、主 DB server 开启二进制日志,主 DB server 和从 DB server 的 server_id 都必须唯一
详细步骤：
1、设置 mysql 的 my.cnf
sql-bin.000003',master_log_pos=107
7、启动从服务器复制功能 start slave
8、检查从服务器复制功能状态：
mysql> show slave status
……………………(省略部分)
Slave_IO_Running: Yes //此状态必须 YES
Slave_SQL_Running: Yes //此状态必须 YES
……………………(省略部分)
9、master 节点增删改数据，会自动同步到从节点。
binlog-do-db=db1
binlog-ignore-db=mysql
#启用二进制日志
log-bin=mysql-bin
#服务器唯一 ID，一般取 IP 最后一段
server-id=134
2、重启 mysql 服务
3、建立帐户并授权 slave ，执行 master start
4、查询 master 的状态，能够看到 bin-log 的 file 文件名称和 position
5、设置从机的 my.cnf
6、为从机设置主机 change master to change master to
master_host='192.168.17.118',master_port=3306,master_user='backup',master_password='123456',master_log_file='my
索引是一种特殊的文件(InnoDB 数据表上的索引是表空间的一个组成部分)，它们包含着对数据表里所有记录的引
用指针。
普通索引(由关键字 KEY 或 INDEX 定义的索引)的唯一任务是加快对数据的访问速度。
普通索引允许被索引的数据列包含重复的值。如果能确定某个数据列将只包含彼此各不相同的值，在为这个数据列
创建索引的时候就应该用关键字 UNIQUE 把它定义为一个唯一索引。也就是说，唯一索引可以保证数据记录的唯一性。
主键，是一种特殊的唯一索引，在一张表中只能定义一个主键索引，主键用于唯一标识一条记录，使用关键字PRIMARYKEY 来创建。
索引可以覆盖多个数据列，如像 INDEX(columnA, columnB)索引，这就是联合索引。
索引可以极大的提高数据的查询速度，但是会降低插入、删除、更新表的速度，因为在执行这些写操作时，还要操
作索引文件。
1、以“%”开头的 LIKE 语句，模糊匹配
2、OR 语句前后没有同时使用索引
4、数据类型出现隐式转化（如 varchar 不加单引号的话可能会自动转换为 int 型）
CONTACT(s1,s2,…) ：将字符串 s1,s2 等多个字符串合并为一个字符串
CONTACT_WS(x,s1,s2,..) ：同 CONTAC(S1,S2,…)函数，但是每个字符串要直接加上 x
CURDATE(),CURRENT_DATE() ：返回当前日期，如 2016-07-30
CURTIME(),CURRENT_TIME() ：返回当前时间，如 22:13:41
NULLIF(null,’替代值’) ：如果查询字段为 null 则用什么值代替