第一章:理解mysql

  1. 三层架构:

    1. 表现层(UI),直接和用户交互的界面
    2. 业务逻辑层(BLL),对业务逻辑的处理,处理用户的请求
    3. 数据访问层(DAL),操作数据库,增删改查等
  2. SQL(结构化查询语言)是声明性语言,只告诉数据库要查询什么,并不告诉数据库如何去查询,数据库所要做的事基于算法和统计信息计算出最佳的访问路径,这个是由优化器(optimizer)来完成。

  3. mysql权限:

    1. 赋予查询,插入,修改,删除权限 grant select,insert,update,delete on db_name.* to user_name@ '10.%' identified by 'pwd'
    2. 删除权限:revoke select,insert,update,delete on db_name.* from user_name@ '10.%'
  4. 数据库引擎:ARCHIVE存储引擎是被设计用来存储企业中的大量流水数据的存储引擎。使用zlib无损数据压缩,让数据都保存在压缩的存档表中。当数据被插入时,它们被压缩。只支持insertselect,支持自增键及其上的索引,不支持其他索引。适合做日志分析,用户行为分析,不需要u、d和索引的数据。

  5. MySQL是指MYSQL服务器,mysql指客户端
  6. 清楚输入字符:可以用'\c 如果前面语句为单引号则用单引,如果为双引则用双。
  7. MySQL主要参数设置
    1. innodb_buffer_pool_size为了提升写性能,不清楚环境的数据和访问模式,应该设置为机器物理内存的70%-80%
    2. innodb_log_file_size日志组里每个文件的大小,建议设置256mb或者更大
    3. innodb_flush_log_at_trx_commit建议设置为2,默认为1,设置为2时,你爹事务提交时,日志缓冲被写到文件中,但不对日志文件到磁盘的操作
    4. sync_binlog建议设置为0,不与磁盘同步。如果是autocommit模式,那么每执行一个语句就会像二进制日志写入一次,否则每个事务写入一次。

第三章:

  1. 开发基础:

    1. 数据模型:是数据的定义和格式,即数据是如何组成的。关系数据库模型是以二维表的结构来标识实体与实体直接的关系,每个二维表又可称为关系。
    2. DLL=》数据定义语言(Data Definition language)是负责数据结构定义与数据库对象定义的语言,通常有用在创建数据库、创建表(create、alter、drop);
    3. DML=》数据操作语言(Data Manipulation Language)是用来查询和修改数据的语句,包括(select、insert、update、delete)四种语句,就是所说的CRUD(create、read、upadte、delete)
    4. XML(eXtensible Markup Language)是可扩展标记语言,最开始设计xml的目的是为了在Internet上交换数据。
    5. xml被设计为传输和存储数据,其标签描述的是数据的内容,HTML被设计用来显示数据,其标签是用来格式化数据的。
  2. 数据类型:以下数据均为有符号(signed)

    1. tinyint 占1字节 最小值 -128~~127
    2. smallint 2字节 -32768 ~~ 32767
    3. mediumint 3字节 -8388608~~8388607
    4. int 4字节 -2147483648~~2147483647
    5. bigint 8字节 -9223372036954775808~~9223372036954775807
    6. float 值会四舍五入
    7. 日期和时间:
      1. 没有使用NO_ZERO_DATESSQL模式,默认情况MySQL只允许在datedatetime列保存月和日是零的日期
      2. 70~99表示:1970-1999
      3. 00~69表示:2000-2069
      4. 同时包含日期和时间信息:用datetime 8个字节
      5. 只需要日期:用date 占3个字节
      6. timestamp的值是以utc格式进行保存,存储时会对当前的时区进行转换,检索时在换回当前的时区。当前时区默认是time_zone系统变量,四个字节;
      7. time类型,三个字节;
      8. year类型,只显示年的时候用,1个字节。
  1. 索引介绍:

  2. 种类分为以下几种:

    1. B树索引(B-tree)、散列索引(hash)、空间索引(R-tree)、全文索引(full-text
    2. 从逻辑上分:单列索引、复合索引(多列索引)、唯一索引(Unique)、非唯一(Non Unique)索引
  3. 簇索引:如果索引键值的逻辑顺序与索引所服务的表中相应行的屋里数序相同,那么就是簇索引,也称为聚集索引、聚簇索引。就是说数据和索引(B+tree)在一起,记录被真实地保存在索引的叶子中,簇索引也被称为索引组织表,反之为非聚集索引。InnoDB是聚集索引

  4. 索引查询:

    1. 按最左前缀的原则进行筛选
  5. MySQL优化器:

    1. explain输出信息extra中表示的意义:
      1. select tables optimized away 意思是查询所包含的MIN、MAX操作可以直接利用索引信息来解决,不用去检索物理记录。
      2. Using index= 》表示覆盖索引(是指所有的数据都可以从索引中得到,不用去读取物理记录)