zoukankan      html  css  js  c++  java
  • 如来神掌第一式第十七招----Mysql 详解

    ###############################################################################
    # Name : Mahavairocana                                                                                                                                           
    # Author : Mahavairocana                                                                                                                                         
    # QQ : 10353512                                                                                                                                                    
    # WeChat : shenlan-qianlan                                                                                                                                      
    # Blog : http://www.cnblogs.com/Mahavairocana/                                                                                                       
    # Description : You are welcome to reprint, or hyperlinks to indicate the                                                                        
    #                    source of the article, as well as author information.                                                                                ###############################################################################

     一、mysql概述

    mysql:属于关系型数据库,特点:将数据保存在不同的表中,再将表存放到数据库中,而不是将所有的数据统一放到一个大仓库里,增加了mysql读取速度;

    mariadb:甲骨文收购mysql后,为了避免甲骨文将mariadb 闭源,社区采用分支的方法来避开风险,mariadb随即诞生;

    数据抽象一般分三层:
    最底层-----物理层physical level (描述数据实际上是怎样存储的);
    中间层-----逻辑层logic level (描述数据库中存储什么数据及这些数据间存在什么关系);
    最顶层-----视图层view level (只描述整个数据库的某个部分).

    客户端程序:
                        mysql: 交互式的CLI工具;
                        mysqldump: 备份工具,基于mysql协议向mysqld发起查询请求,并将查得的所有数据转换成insert等写操作语句保存文本文件中;
                        mysqladmin:基于mysql协议管理mysqld;
                        mysqlimport: 数据导入工具;

    非客户端类的管理工具:
                        myisamchk, myisampack

    二、常用术语

    1、多实例:Mysql 多实例:一台服务器开启多个端口提供服务;

    2、MySQL 数据类型:

    
        字符型:
            CHAR, BINARY:定长数据类型;
            VARCHAR, VARBINARY:变长数据类型;需要结束符;
            TEXT:TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT
            BLOB: TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB
            ENUM, SET
        数值型:
            精确数值型:
                整型:TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT
                十进制型:DECIMAL
            近似数值型
                浮点型:
                    FLOAT
                    DOUBLE
    
                BIT
    
        日期时间型:
            DATE
            TIME
            DATETIME
            TIMESTAMP
            YEAR(2), YEAR(4)
    
        字符类型修饰符:
            NOT NULL: 非空约束;
            NULL:
            DEFAULT 'STRING': 指明默认值;
            CHARACTER SET '':使用的字符集;
            COLLATION:使用的排序规则
    
            mysql> SHOW CHARACTER SET;
            mysql> SHOW COLLATION;
    
        整型数据修饰型:
            NOT NULL
            NULL
            DEFAULT NUMBER
    
            AUTO_INCREMENT:
                UNSIGNED
                PRIMARY KEY|UNIQUE KEY
                NOT NULL
    
                mysql> SELECT LAST_INSERT_ID();
    
        日期时间型修饰符:
            NOT NULL
            NULL
            DEFAULT 
    
        内建类型SET和ENUM的修饰符:
            NOT NULL
            NULL
            DEFAULT

    3、数据定义语言 DDL,DML

        SQL: DDL, DML
            DDL: 数据定义语言;
                CREATE, ALTER, DROP
    
                DB组件:数据库、表、索引、视图、用户、存储过程、存储函数、触发器、事件调度器等
    
                DROP相关的常用命令:
                mysql> HELP DROP;
                Many help items for your request exist.
                To make a more specific request, please type 'help <item>',
                where <item> is one of the following
                topics:
                ALTER TABLE
                ALTER TABLESPACE
                DEALLOCATE PREPARE
                DROP DATABASE
                DROP EVENT
                DROP FUNCTION
                DROP FUNCTION UDF
                DROP INDEX
                DROP LOGFILE GROUP
                DROP PROCEDURE
                DROP SERVER
                DROP TABLE
                DROP TABLESPACE
                DROP TRIGGER
                DROP USER
                DROP VIEW
    
            DML:数据操作语言;
                INSERT, DELETE, UPDATE, SELECT

    4、数据表

    设定表要遵循规范,标准使用大小写,基于ER关系图设置数据表,一般由专业的DBA或者程序员做设计,设定表的好坏决定是否需要随着业务的发展做大的修改;

    5、存储引擎

    (一)MyISAM
      它不支持事务,也不支持外键,尤其是访问速度快,对事务完整性没有要求或者以SELECT、INSERT为主的应用基本都可以使用这个引擎来创建表。
    每个MyISAM在磁盘上存储成3个文件,其中文件名和表名都相同,但是扩展名分别为:
        .frm(存储表定义)
        MYD(MYData,存储数据)
        MYI(MYIndex,存储索引)
    
      数据文件和索引文件可以放置在不同的目录,平均分配IO,获取更快的速度。要指定数据文件和索引文件的路径,需要在创建表的时候通过DATA DIRECTORY和INDEX DIRECTORY语句指定,文件路径需要使用绝对路径。
      每个MyISAM表都有一个标志,服务器或myisamchk程序在检查MyISAM数据表时会对这个标志进行设置。MyISAM表还有一个标志用来表明该数据表在上次使用后是不是被正常的关闭了。如果服务器以为当机或崩溃,这个标志可以用来判断数据表是否需要检查和修复。如果想让这种检查自动进行,可以在启动服务器时使用--myisam-recover现象。这会让服务器在每次打开一个MyISAM数据表是自动检查数据表的标志并进行必要的修复处理。MyISAM类型的表可能会损坏,可以使用CHECK TABLE语句来检查MyISAM表的健康,并用REPAIR TABLE语句修复一个损坏到MyISAM表。
      MyISAM的表还支持3种不同的存储格式:
    
        静态(固定长度)表
        动态表
        压缩表
    
      其中静态表是默认的存储格式。静态表中的字段都是非变长字段,这样每个记录都是固定长度的,这种存储方式的优点是存储非常迅速,容易缓存,出现故障容易恢复;缺点是占用的空间通常比动态表多。静态表在数据存储时会根据列定义的宽度定义补足空格,但是在访问的时候并不会得到这些空格,这些空格在返回给应用之前已经去掉。同时需要注意:在某些情况下可能需要返回字段后的空格,而使用这种格式时后面到空格会被自动处理掉。
      动态表包含变长字段,记录不是固定长度的,这样存储的优点是占用空间较少,但是频繁到更新删除记录会产生碎片,需要定期执行OPTIMIZE TABLE语句或myisamchk -r命令来改善性能,并且出现故障的时候恢复相对比较困难。
      压缩表由myisamchk工具创建,占据非常小的空间,因为每条记录都是被单独压缩的,所以只有非常小的访问开支。
    (二)InnoDB
      InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是对比MyISAM的存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。
    1)自动增长列:
      InnoDB表的自动增长列可以手工插入,但是插入的如果是空或0,则实际插入到则是自动增长后到值。可以通过"ALTER TABLE...AUTO_INCREMENT=n;"语句强制设置自动增长值的起始值,默认为1,但是该强制到默认值是保存在内存中,数据库重启后该值将会丢失。可以使用LAST_INSERT_ID()查询当前线程最后插入记录使用的值。如果一次插入多条记录,那么返回的是第一条记录使用的自动增长值。
    对于InnoDB表,自动增长列必须是索引。如果是组合索引,也必须是组合索引的第一列,但是对于MyISAM表,自动增长列可以是组合索引的其他列,这样插入记录后,自动增长列是按照组合索引到前面几列排序后递增的。
    2)外键约束:
      MySQL支持外键的存储引擎只有InnoDB,在创建外键的时候,父表必须有对应的索引,子表在创建外键的时候也会自动创建对应的索引。
          在创建索引的时候,可以指定在删除、更新父表时,对子表进行的相应操作,包括restrict、cascade、set null和no action。其中restrict和no action相同,是指限制在子表有关联的情况下,父表不能更新;casecade表示父表在更新或删除时,更新或者删除子表对应的记录;set null 则表示父表在更新或者删除的时候,子表对应的字段被set null。
      当某个表被其它表创建了外键参照,那么该表对应的索引或主键被禁止删除。
      可以使用set foreign_key_checks=0;临时关闭外键约束,set foreign_key_checks=1;打开约束。
    (三)MEMORY
      memory使用存在内存中的内容来创建表。每个MEMORY表实际对应一个磁盘文件,格式是.frm。MEMORY类型的表访问非常快,因为它到数据是放在内存中的,并且默认使用HASH索引,但是一旦服务器关闭,表中的数据就会丢失,但表还会继续存在。
          默认情况下,memory数据表使用散列索引,利用这种索引进行“相等比较”非常快,但是对“范围比较”的速度就慢多了。因此,散列索引值适合使用在"=""<=>"的操作符中,不适合使用在"<"">"操作符中,也同样不适合用在order by字句里。如果确实要使用"<"">"或betwen操作符,可以使用btree索引来加快速度。
      存储在MEMORY数据表里的数据行使用的是长度不变的格式,因此加快处理速度,这意味着不能使用BLOB和TEXT这样的长度可变的数据类型。VARCHAR是一种长度可变的类型,但因为它在MySQL内部当作长度固定不变的CHAR类型,所以可以使用。
    create table tab_memory engine=memory select id,name,age,addr from man order by id;
    
      使用USING HASH/BTREE来指定特定到索引。
    create index mem_hash using hash on tab_memory(city_id);
    
      在启动MySQL服务的时候使用--init-file选项,把insert into...select或load data infile 这样的语句放入到这个文件中,就可以在服务启动时从持久稳固的数据源中装载表。
      服务器需要足够的内存来维持所在的在同一时间使用的MEMORY表,当不再使用MEMORY表时,要释放MEMORY表所占用的内存,应该执行DELETE FROM或truncate table或者删除整个表。
      每个MEMORY表中放置到数据量的大小,受到max_heap_table_size系统变量的约束,这个系统变量的初始值是16M,同时在创建MEMORY表时可以使用MAX_ROWS子句来指定表中的最大行数。
    (四)MERGE
      merge存储引擎是一组MyISAM表的组合,这些MyISAM表结构必须完全相同,MERGE表中并没有数据,对MERGE类型的表可以进行查询、更新、删除的操作,这些操作实际上是对内部的MyISAM表进行操作。对于对MERGE表进行的插入操作,是根据INSERT_METHOD子句定义的插入的表,可以有3个不同的值,first和last值使得插入操作被相应的作用在第一个或最后一个表上,不定义这个子句或者为NO,表示不能对这个MERGE表进行插入操作。可以对MERGE表进行drop操作,这个操作只是删除MERGE表的定义,对内部的表没有任何影响。MERGE在磁盘上保留2个以MERGE表名开头文件:.frm文件存储表的定义;.MRG文件包含组合表的信息,包括MERGE表由哪些表组成,插入数据时的依据。可以通过修改.MRG文件来修改MERGE表,但是修改后要通过flush table刷新。
    create table man_all(id int,name varchar(20))engine=merge union=(man1,man2) insert_methos=last;

    6、索引(理解为书本的目录即可)

     7、视图:一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。

    三、常用操作

    1、获取程序默认配置

    mysql --print-defaults
    mysqld --print-defaults

    2、mysql使用模式

    客户端类应用程序的可用选项:
        -u, --user=
        -h, --host=
        -p, --passowrd=
        -P, --port=
        --protocol=
        -S, --socket=
        -D, --database=
        -C, --compress
    
        mysql -e "SQL"
    
    mysql的使用模式:
        交互式模式:
            可运行命令有两类:
                客户端命令:
                    h, help
                服务器端命令:
                    SQL, 需要语句结束符;
        脚本模式:
            # mysql -uUSERNAME -hHOST -pPASSWORD < /path/from/somefile.sql
            mysql> source /path/from/somefile.sql

    3、变量相关

    获取运行中的mysql进程使用各服务器参数及其值:
        mysql> SHOW GLOBAL VARIABLES;
        mysql> SHOW [SESSION] VARIABLES;
    
        注意:其中有些参数支持运行时修改,会立即生效;有些参数不支持,且只能通过修改配置文件,并重启服务器程序生效;
              有些参数作用域是全局的,且不可改变;有些可以为每个用户提供单独的设置;
    
    修改服务器变量的值:
        mysql> help SET
    
        全局:
            mysql> SET GLOBAL system_var_name=value;
            mysql> SET @@global.system_var_name=value;
        会话:
            mysql> SET [SESSION] system_var_name=value;
            mysql> SET @@[session.]system_var_name=value;
    
    状态变量:用于保存mysqld运行中的统计数据的变量;
        mysql> SHOW GLOBAL STATUS;

    4、查看所有字符集以及排序规则;

    mysql> SHOW CHARACTER SET; 
    +----------+-----------------------------+---------------------+--------+
    | Charset  | Description                 | Default collation   | Maxlen |
    +----------+-----------------------------+---------------------+--------+
    | big5     | Big5 Traditional Chinese    | big5_chinese_ci     |      2 |
    | dec8     | DEC West European           | dec8_swedish_ci     |      1 |
    | cp850    | DOS West European           | cp850_general_ci    |      1 |
    | hp8      | HP West European            | hp8_english_ci      |      1 |
    | koi8r    | KOI8-R Relcom Russian       | koi8r_general_ci    |      1 |
    | latin1   | cp1252 West European        | latin1_swedish_ci   |      1 |
    | latin2   | ISO 8859-2 Central European | latin2_general_ci   |      1 |
    | swe7     | 7bit Swedish                | swe7_swedish_ci     |      1 |
    | ascii    | US ASCII                    | ascii_general_ci    |      1 |
    | ujis     | EUC-JP Japanese             | ujis_japanese_ci    |      3 |
    | sjis     | Shift-JIS Japanese          | sjis_japanese_ci    |      2 |
    | hebrew   | ISO 8859-8 Hebrew           | hebrew_general_ci   |      1 |
    | tis620   | TIS620 Thai                 | tis620_thai_ci      |      1 |
    | euckr    | EUC-KR Korean               | euckr_korean_ci     |      2 |
    | koi8u    | KOI8-U Ukrainian            | koi8u_general_ci    |      1 |
    | gb2312   | GB2312 Simplified Chinese   | gb2312_chinese_ci   |      2 |
    | greek    | ISO 8859-7 Greek            | greek_general_ci    |      1 |
    | cp1250   | Windows Central European    | cp1250_general_ci   |      1 |
    | gbk      | GBK Simplified Chinese      | gbk_chinese_ci      |      2 |
    | latin5   | ISO 8859-9 Turkish          | latin5_turkish_ci   |      1 |
    | armscii8 | ARMSCII-8 Armenian          | armscii8_general_ci |      1 |
    | utf8     | UTF-8 Unicode               | utf8_general_ci     |      3 |
    | ucs2     | UCS-2 Unicode               | ucs2_general_ci     |      2 |
    | cp866    | DOS Russian                 | cp866_general_ci    |      1 |
    | keybcs2  | DOS Kamenicky Czech-Slovak  | keybcs2_general_ci  |      1 |
    | macce    | Mac Central European        | macce_general_ci    |      1 |
    | macroman | Mac West European           | macroman_general_ci |      1 |
    | cp852    | DOS Central European        | cp852_general_ci    |      1 |
    | latin7   | ISO 8859-13 Baltic          | latin7_general_ci   |      1 |
    | cp1251   | Windows Cyrillic            | cp1251_general_ci   |      1 |
    | cp1256   | Windows Arabic              | cp1256_general_ci   |      1 |
    | cp1257   | Windows Baltic              | cp1257_general_ci   |      1 |
    | binary   | Binary pseudo charset       | binary              |      1 |
    | geostd8  | GEOSTD8 Georgian            | geostd8_general_ci  |      1 |
    | cp932    | SJIS for Windows Japanese   | cp932_japanese_ci   |      2 |
    | eucjpms  | UJIS for Windows Japanese   | eucjpms_japanese_ci |      3 |
    +----------+-----------------------------+---------------------+--------+
    36 rows in set (0.00 sec)
    
    mysql> SHOW COLLATION; 
    +--------------------------+----------+-----+---------+----------+---------+
    | Collation                | Charset  | Id  | Default | Compiled | Sortlen |
    +--------------------------+----------+-----+---------+----------+---------+
    | big5_chinese_ci          | big5     |   1 | Yes     | Yes      |       1 |
    | big5_bin                 | big5     |  84 |         | Yes      |       1 |
    | dec8_swedish_ci          | dec8     |   3 | Yes     | Yes      |       1 |
    | dec8_bin                 | dec8     |  69 |         | Yes      |       1 |
    | cp850_general_ci         | cp850    |   4 | Yes     | Yes      |       1 |
    | cp850_bin                | cp850    |  80 |         | Yes      |       1 |
    | hp8_english_ci           | hp8      |   6 | Yes     | Yes      |       1 |
    | hp8_bin                  | hp8      |  72 |         | Yes      |       1 |
    | koi8r_general_ci         | koi8r    |   7 | Yes     | Yes      |       1 |
    | koi8r_bin                | koi8r    |  74 |         | Yes      |       1 |
    | latin1_german1_ci        | latin1   |   5 |         | Yes      |       1 |
    | latin1_swedish_ci        | latin1   |   8 | Yes     | Yes      |       1 |
    | latin1_danish_ci         | latin1   |  15 |         | Yes      |       1 |
    | latin1_german2_ci        | latin1   |  31 |         | Yes      |       2 |
    | latin1_bin               | latin1   |  47 |         | Yes      |       1 |
    | latin1_general_ci        | latin1   |  48 |         | Yes      |       1 |
    | latin1_general_cs        | latin1   |  49 |         | Yes      |       1 |
    | latin1_spanish_ci        | latin1   |  94 |         | Yes      |       1 |
    | latin2_czech_cs          | latin2   |   2 |         | Yes      |       4 |
    | latin2_general_ci        | latin2   |   9 | Yes     | Yes      |       1 |
    | latin2_hungarian_ci      | latin2   |  21 |         | Yes      |       1 |
    | latin2_croatian_ci       | latin2   |  27 |         | Yes      |       1 |
    | latin2_bin               | latin2   |  77 |         | Yes      |       1 |
    | swe7_swedish_ci          | swe7     |  10 | Yes     | Yes      |       1 |
    | swe7_bin                 | swe7     |  82 |         | Yes      |       1 |
    | ascii_general_ci         | ascii    |  11 | Yes     | Yes      |       1 |
    | ascii_bin                | ascii    |  65 |         | Yes      |       1 |
    | ujis_japanese_ci         | ujis     |  12 | Yes     | Yes      |       1 |
    | ujis_bin                 | ujis     |  91 |         | Yes      |       1 |
    | sjis_japanese_ci         | sjis     |  13 | Yes     | Yes      |       1 |
    | sjis_bin                 | sjis     |  88 |         | Yes      |       1 |
    | hebrew_general_ci        | hebrew   |  16 | Yes     | Yes      |       1 |
    | hebrew_bin               | hebrew   |  71 |         | Yes      |       1 |
    | tis620_thai_ci           | tis620   |  18 | Yes     | Yes      |       4 |
    | tis620_bin               | tis620   |  89 |         | Yes      |       1 |
    | euckr_korean_ci          | euckr    |  19 | Yes     | Yes      |       1 |
    | euckr_bin                | euckr    |  85 |         | Yes      |       1 |
    | koi8u_general_ci         | koi8u    |  22 | Yes     | Yes      |       1 |
    | koi8u_bin                | koi8u    |  75 |         | Yes      |       1 |
    | gb2312_chinese_ci        | gb2312   |  24 | Yes     | Yes      |       1 |
    | gb2312_bin               | gb2312   |  86 |         | Yes      |       1 |
    | greek_general_ci         | greek    |  25 | Yes     | Yes      |       1 |
    | greek_bin                | greek    |  70 |         | Yes      |       1 |
    | cp1250_general_ci        | cp1250   |  26 | Yes     | Yes      |       1 |
    | cp1250_czech_cs          | cp1250   |  34 |         | Yes      |       2 |
    | cp1250_croatian_ci       | cp1250   |  44 |         | Yes      |       1 |
    | cp1250_bin               | cp1250   |  66 |         | Yes      |       1 |
    | cp1250_polish_ci         | cp1250   |  99 |         | Yes      |       1 |
    | gbk_chinese_ci           | gbk      |  28 | Yes     | Yes      |       1 |
    | gbk_bin                  | gbk      |  87 |         | Yes      |       1 |
    | latin5_turkish_ci        | latin5   |  30 | Yes     | Yes      |       1 |
    | latin5_bin               | latin5   |  78 |         | Yes      |       1 |
    | armscii8_general_ci      | armscii8 |  32 | Yes     | Yes      |       1 |
    | armscii8_bin             | armscii8 |  64 |         | Yes      |       1 |
    | utf8_general_ci          | utf8     |  33 | Yes     | Yes      |       1 |
    | utf8_bin                 | utf8     |  83 |         | Yes      |       1 |
    | utf8_unicode_ci          | utf8     | 192 |         | Yes      |       8 |
    | utf8_icelandic_ci        | utf8     | 193 |         | Yes      |       8 |
    | utf8_latvian_ci          | utf8     | 194 |         | Yes      |       8 |
    | utf8_romanian_ci         | utf8     | 195 |         | Yes      |       8 |
    | utf8_slovenian_ci        | utf8     | 196 |         | Yes      |       8 |
    | utf8_polish_ci           | utf8     | 197 |         | Yes      |       8 |
    | utf8_estonian_ci         | utf8     | 198 |         | Yes      |       8 |
    | utf8_spanish_ci          | utf8     | 199 |         | Yes      |       8 |
    | utf8_swedish_ci          | utf8     | 200 |         | Yes      |       8 |
    | utf8_turkish_ci          | utf8     | 201 |         | Yes      |       8 |
    | utf8_czech_ci            | utf8     | 202 |         | Yes      |       8 |
    | utf8_danish_ci           | utf8     | 203 |         | Yes      |       8 |
    | utf8_lithuanian_ci       | utf8     | 204 |         | Yes      |       8 |
    | utf8_slovak_ci           | utf8     | 205 |         | Yes      |       8 |
    | utf8_spanish2_ci         | utf8     | 206 |         | Yes      |       8 |
    | utf8_roman_ci            | utf8     | 207 |         | Yes      |       8 |
    | utf8_persian_ci          | utf8     | 208 |         | Yes      |       8 |
    | utf8_esperanto_ci        | utf8     | 209 |         | Yes      |       8 |
    | utf8_hungarian_ci        | utf8     | 210 |         | Yes      |       8 |
    | utf8_general_mysql500_ci | utf8     | 223 |         | Yes      |       1 |
    | ucs2_general_ci          | ucs2     |  35 | Yes     | Yes      |       1 |
    | ucs2_bin                 | ucs2     |  90 |         | Yes      |       1 |
    | ucs2_unicode_ci          | ucs2     | 128 |         | Yes      |       8 |
    | ucs2_icelandic_ci        | ucs2     | 129 |         | Yes      |       8 |
    | ucs2_latvian_ci          | ucs2     | 130 |         | Yes      |       8 |
    | ucs2_romanian_ci         | ucs2     | 131 |         | Yes      |       8 |
    | ucs2_slovenian_ci        | ucs2     | 132 |         | Yes      |       8 |
    | ucs2_polish_ci           | ucs2     | 133 |         | Yes      |       8 |
    | ucs2_estonian_ci         | ucs2     | 134 |         | Yes      |       8 |
    | ucs2_spanish_ci          | ucs2     | 135 |         | Yes      |       8 |
    | ucs2_swedish_ci          | ucs2     | 136 |         | Yes      |       8 |
    | ucs2_turkish_ci          | ucs2     | 137 |         | Yes      |       8 |
    | ucs2_czech_ci            | ucs2     | 138 |         | Yes      |       8 |
    | ucs2_danish_ci           | ucs2     | 139 |         | Yes      |       8 |
    | ucs2_lithuanian_ci       | ucs2     | 140 |         | Yes      |       8 |
    | ucs2_slovak_ci           | ucs2     | 141 |         | Yes      |       8 |
    | ucs2_spanish2_ci         | ucs2     | 142 |         | Yes      |       8 |
    | ucs2_roman_ci            | ucs2     | 143 |         | Yes      |       8 |
    | ucs2_persian_ci          | ucs2     | 144 |         | Yes      |       8 |
    | ucs2_esperanto_ci        | ucs2     | 145 |         | Yes      |       8 |
    | ucs2_hungarian_ci        | ucs2     | 146 |         | Yes      |       8 |
    | ucs2_general_mysql500_ci | ucs2     | 159 |         | Yes      |       1 |
    | cp866_general_ci         | cp866    |  36 | Yes     | Yes      |       1 |
    | cp866_bin                | cp866    |  68 |         | Yes      |       1 |
    | keybcs2_general_ci       | keybcs2  |  37 | Yes     | Yes      |       1 |
    | keybcs2_bin              | keybcs2  |  73 |         | Yes      |       1 |
    | macce_general_ci         | macce    |  38 | Yes     | Yes      |       1 |
    | macce_bin                | macce    |  43 |         | Yes      |       1 |
    | macroman_general_ci      | macroman |  39 | Yes     | Yes      |       1 |
    | macroman_bin             | macroman |  53 |         | Yes      |       1 |
    | cp852_general_ci         | cp852    |  40 | Yes     | Yes      |       1 |
    | cp852_bin                | cp852    |  81 |         | Yes      |       1 |
    | latin7_estonian_cs       | latin7   |  20 |         | Yes      |       1 |
    | latin7_general_ci        | latin7   |  41 | Yes     | Yes      |       1 |
    | latin7_general_cs        | latin7   |  42 |         | Yes      |       1 |
    | latin7_bin               | latin7   |  79 |         | Yes      |       1 |
    | cp1251_bulgarian_ci      | cp1251   |  14 |         | Yes      |       1 |
    | cp1251_ukrainian_ci      | cp1251   |  23 |         | Yes      |       1 |
    | cp1251_bin               | cp1251   |  50 |         | Yes      |       1 |
    | cp1251_general_ci        | cp1251   |  51 | Yes     | Yes      |       1 |
    | cp1251_general_cs        | cp1251   |  52 |         | Yes      |       1 |
    | cp1256_general_ci        | cp1256   |  57 | Yes     | Yes      |       1 |
    | cp1256_bin               | cp1256   |  67 |         | Yes      |       1 |
    | cp1257_lithuanian_ci     | cp1257   |  29 |         | Yes      |       1 |
    | cp1257_bin               | cp1257   |  58 |         | Yes      |       1 |
    | cp1257_general_ci        | cp1257   |  59 | Yes     | Yes      |       1 |
    | binary                   | binary   |  63 | Yes     | Yes      |       1 |
    | geostd8_general_ci       | geostd8  |  92 | Yes     | Yes      |       1 |
    | geostd8_bin              | geostd8  |  93 |         | Yes      |       1 |
    | cp932_japanese_ci        | cp932    |  95 | Yes     | Yes      |       1 |
    | cp932_bin                | cp932    |  96 |         | Yes      |       1 |
    | eucjpms_japanese_ci      | eucjpms  |  97 | Yes     | Yes      |       1 |
    | eucjpms_bin              | eucjpms  |  98 |         | Yes      |       1 |
    +--------------------------+----------+-----+---------+----------+---------+

    5、查询当前运行mode

    常用MODE:默认为空,代表mysql内置行为, TRADITIONAL(不允许对非法值插入操作), STRICT_TRANS_TABLES(对所有支持事物类型表做约束), or STRICT_ALL_TABLES(对所有表做约束)

    mysql> SHOW GLOBAL VARIABLES LIKE 'sql_mode';
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | sql_mode      |       |
    +---------------+-------+
    1 row in set (0.00 sec)

      TRADITIONAL:

    mysql> CREATE TABLE t1 (id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL, name CHAR(5) NOT NULL);  创建一个表,并限定字符串长度为5;
    Query OK, 0 rows affected (0.01 sec)
    
    mysql> INSERT INTO t1 (name) VALUES('tom'),('BlackBerry');   插入数据tom,blackberry
    Query OK, 2 rows affected, 1 warning (0.00 sec)
    Records: 2  Duplicates: 0  Warnings: 1    
    
    mysql> SHOW WARNINGS;  查看报错信息;
    +---------+------+-------------------------------------------+
    | Level   | Code | Message                                   |
    +---------+------+-------------------------------------------+
    | Warning | 1265 | Data truncated for column 'name' at row 2 |
    +---------+------+-------------------------------------------+
    1 row in set (0.00 sec)
    
    mysql> SELECT * FROM t1; 查看表内容;
    +----+-------+
    | id | name  |
    +----+-------+
    |  1 | tom   |
    |  2 | Black |
    +----+-------+
    2 rows in set (0.00 sec)
    
    mysql> SET sql_mode='TRADITIONAL';  修改mode模式,不指定默认为修改当前会话的mode,推出重新登陆后,也会失效,永久生效需要在配置文件内配置,或者在启动的时候配置相关参数;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> INSERT INTO t1 (name) VALUES('YellowBerry');       再次插入,在数据不匹配的情况下会报错;
    ERROR 1406 (22001): Data too long for column 'name' at row 1
    
    mysql> SHOW VARIABLES LIKE 'sql_mode';
    +---------------+-------------------------------------------------------------------------------------------------------------------------------+
    | Variable_name | Value                                                                                                                         |
    +---------------+-------------------------------------------------------------------------------------------------------------------------------+
    | sql_mode      | STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER |
    +---------------+-------------------------------------------------------------------------------------------------------------------------------+
    1 row in set (0.00 sec)
    
    mysql> quit;
    Bye
    You have new mail in /var/spool/mail/root
    [root@Mahavairocana_S ~]# mysql
    Welcome to the MySQL monitor.  Commands end with ; or g.
    Your MySQL connection id is 10
    Server version: 5.1.73 Source distribution
    
    Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
    
    mysql> SHOW VARIABLES LIKE 'sql_mode';
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | sql_mode      |       |
    +---------------+-------+
    1 row in set (0.00 sec)

    6、查看表状态;

    mysql> SHOW TABLE STATUS LIKE 't1'G
    *************************** 1. row ***************************
               Name: t1   #表名
             Engine: MyISAM #存储引擎
            Version: 10 
         Row_format: Fixed  #行格式、行类型
               Rows: 2    #已经有的行数
     Avg_row_length: 10    #现有表中,每行包含的字节数
        Data_length: 20    #表中数据的大小
    Max_data_length: 2814749767106559   #表数据的最大容量,该值与存储引擎有关;
       Index_length: 2048   #索引大小,字节为单位;
          Data_free: 0     #已经分配的空间,但是尚未存数据;
     Auto_increment: 3      #下一次自动增长字段数字3;
        Create_time: 2018-01-07 20:11:53  #创建时间
        Update_time: 2018-01-07 20:12:55   #最近一次修改时间
         Check_time: NULL    #最近一次使用cheke table 对标做检查时间;
          Collation: latin1_swedish_ci  #排序规则
           Checksum: NULL    #校验和
     Create_options:       #创建表额外制定的选项;
            Comment:            #注释,包含额外其他信息,
    1 row in set (0.00 sec)

    7、创建表

    创建表:CREATE TABLE
        (1) 直接创建;
        (2) 通过查询现存的表创建;新表会被直接插入查询而来的数据;
            CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
                [(create_definition,...)]
                [table_options]
                [partition_options]
                select_statement                                        
        (3) 通过复制现存的表的表结构创建;不复制数据;
            CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
             { LIKE old_tbl_name | (LIKE old_tbl_name) }
    
    
        注意:Storage Engine是指表类型,也即在表创建时指明其使用的存储引擎;
            同一个库中表要使用同一种存储引擎类型;
    
    查看表结构:
        DESCRIBE tbl_name;
    
    查看表状态信息:
        SHOW [FULL] TABLES [{FROM | IN} db_name] [LIKE 'pattern' | WHERE expr] 
    
    修改表:ALTER TABLE
    删除表:DROP TABLE

    8、索引管理 
    (不要对线上系统随意改变、重建索引,可能导致表瞬间卡死;)

    Name: 'CREATE INDEX'
    Description:
    Syntax:
    CREATE [ONLINE|OFFLINE] [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name
        [index_type]
        ON tbl_name (index_col_name,...)
        [index_option] ...
    
    index_col_name:
        col_name [(length)] [ASC | DESC]
    
    index_type:
        USING {BTREE | HASH}
    
    index_option:
        KEY_BLOCK_SIZE [=] value
      | index_type
      | WITH PARSER parser_name
    
    CREATE INDEX is mapped to an ALTER TABLE statement to create indexes.
    See [HELP ALTER TABLE]. CREATE INDEX cannot be used to create a PRIMARY
    KEY; use ALTER TABLE instead. For more information about indexes, see
    http://dev.mysql.com/doc/refman/5.1/en/mysql-indexes.html.
    
    URL: http://dev.mysql.com/doc/refman/5.1/en/create-index.html

     查询示例

    mysql> SHOW INDEXES FROM students;  ##查询索引
    +----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
    | Table    | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
    +----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
    | students |          0 | PRIMARY  |            1 | StuID       | A         |          25 |     NULL | NULL   |      | BTREE      |         |
    +----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
    1 row in set (0.00 sec)
    
    
    mysql> SELECT * FROM students WHERE StuID=3; #查询ID=3的信息
    +-------+-----------+-----+--------+---------+-----------+
    | StuID | Name      | Age | Gender | ClassID | TeacherID |
    +-------+-----------+-----+--------+---------+-----------+
    |     3 | Xie Yanke |  53 | M      |       2 |        16 |
    +-------+-----------+-----+--------+---------+-----------+
    1 row in set (0.00 sec)
    
    mysql> EXPLAIN SELECT * FROM students WHERE StuID=3G     ##有索引   EXPLAIN 只会分析,不会执行;

    *************************** 1. row *************************** id: 1 select_type: SIMPLE table: students type: const possible_keys: PRIMARY key: PRIMARY key_len: 4 ref: const rows: 1      ##只查了一行 Extra: 1 row in set (0.00 sec) mysql> EXPLAIN SELECT * FROM students WHERE age=53G #无索引 *************************** 1. row *************************** id: 1 select_type: SIMPLE table: students type: ALL possible_keys: NULL key: NULL key_len: NULL ref: NULL rows: 25    ##查询全表,25行。 Extra: Using where 1 row in set (0.00 sec)

    创建示例

    ###查询语句很重要
    mysql> desc students;
    +-----------+---------------------+------+-----+---------+----------------+
    | Field     | Type                | Null | Key | Default | Extra          |
    +-----------+---------------------+------+-----+---------+----------------+
    | StuID     | int(10) unsigned    | NO   | PRI | NULL    | auto_increment |
    | Name      | varchar(50)         | NO   |     | NULL    |                |
    | Age       | tinyint(3) unsigned | NO   |     | NULL    |                |
    | Gender    | enum('F','M')       | NO   |     | NULL    |                |
    | ClassID   | tinyint(3) unsigned | YES  |     | NULL    |                |
    | TeacherID | int(10) unsigned    | YES  |     | NULL    |                |
    +-----------+---------------------+------+-----+---------+----------------+
    6 rows in set (0.00 sec)
    
    mysql> create index name on students (NAME);  # 给name 字段Name 创建索引
    Query OK, 25 rows affected (0.00 sec)
    Records: 25  Duplicates: 0  Warnings: 0
    
    mysql> show index from students;
    +----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
    | Table    | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
    +----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
    | students |          0 | PRIMARY  |            1 | StuID       | A         |          25 |     NULL | NULL   |      | BTREE      |         |
    | students |          1 | name     |            1 | Name        | A         |        NULL |     NULL | NULL   |      | BTREE      |         |
    +----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
    2 rows in set (0.00 sec)
    mysql> EXPLAIN SELECT * FROM students WHERE Name LIKE 'X%'G  #查询以X开头的用户;
    *************************** 1. row ***************************
               id: 1    
      select_type: SIMPLE
            table: students
             type: range
    possible_keys: name
              key: name     #用到name键,是范围查询
          key_len: 152
              ref: NULL
             rows: 6
            Extra: Using where
    1 row in set (0.00 sec)
    
    mysql> EXPLAIN SELECT * FROM students WHERE Name LIKE '%X%'G  #查询所有带X的用户
    *************************** 1. row ***************************
               id: 1
      select_type: SIMPLE
            table: students
             type: ALL
    possible_keys: NULL
              key: NULL   #未用过name键,全表查询。
          key_len: NULL
              ref: NULL
             rows: 25
            Extra: Using where
    1 row in set (0.00 sec)

    9、视图

    mysql> help create view
    Name: 'CREATE VIEW'
    Description:
    Syntax:
    CREATE
        [OR REPLACE]
        [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
        [DEFINER = { user | CURRENT_USER }]
        [SQL SECURITY { DEFINER | INVOKER }]
        VIEW view_name [(column_list)]
        AS select_statement
        [WITH [CASCADED | LOCAL] CHECK OPTION]

    创建视图

    mysql> CREATE VIEW mm AS SELECT StuID,Name,Age FROM students;  
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> SHOW TABLES;
    +-------------------+
    | Tables_in_hellodb |
    +-------------------+
    | classes           |
    | coc               |
    | courses           |
    | mm                |
    | scores            |
    | students          |
    | teachers          |
    | toc               |
    +-------------------+
    8 rows in set (0.00 sec)
    
    
    mysql> SHOW TABLE STATUS LIKE 'mm' G 
    *************************** 1. row ***************************
               Name: mm
             Engine: NULL
            Version: NULL
         Row_format: NULL
               Rows: NULL
     Avg_row_length: NULL
        Data_length: NULL
    Max_data_length: NULL
       Index_length: NULL
          Data_free: NULL
     Auto_increment: NULL
        Create_time: NULL
        Update_time: NULL
         Check_time: NULL
          Collation: NULL
           Checksum: NULL
     Create_options: NULL
            Comment: VIEW   #只能查看到comment是view
    1 row in set (0.00 sec)
    
    mysql> select * from mm;
    +-------+---------------+-----+
    | StuID | Name          | Age |
    +-------+---------------+-----+
    |     1 | Shi Zhongyu   |  22 |
    |     2 | Shi Potian    |  22 |
    |     3 | Xie Yanke     |  53 |
    |     4 | Ding Dian     |  32 |
    |     5 | Yu Yutong     |  26 |
    |     6 | Shi Qing      |  46 |
    |     7 | Xi Ren        |  19 |
    |     8 | Lin Daiyu     |  17 |
    |     9 | Ren Yingying  |  20 |
    |    10 | Yue Lingshan  |  19 |
    |    11 | Yuan Chengzhi |  23 |
    |    12 | Wen Qingqing  |  19 |
    |    13 | Tian Boguang  |  33 |
    |    14 | Lu Wushuang   |  17 |
    |    15 | Duan Yu       |  19 |
    |    16 | Xu Zhu        |  21 |
    |    17 | Lin Chong     |  25 |
    |    18 | Hua Rong      |  23 |
    |    19 | Xue Baochai   |  18 |
    |    20 | Diao Chan     |  19 |
    |    21 | Huang Yueying |  22 |
    |    22 | Xiao Qiao     |  20 |
    |    23 | Ma Chao       |  23 |
    |    24 | Xu Xian       |  27 |
    |    25 | Sun Dasheng   | 100 |
    +-------+---------------+-----+
    25 rows in set (0.00 sec)
    
    mysql> select * from mm where Age=22;  ##视图  3个数据
    +-------+---------------+-----+
    | StuID | Name          | Age |
    +-------+---------------+-----+
    |     1 | Shi Zhongyu   |  22 |
    |     2 | Shi Potian    |  22 |
    |    21 | Huang Yueying |  22 |
    +-------+---------------+-----+
    3 rows in set (0.00 sec)
    
    mysql> SELECT * FROM students WHERE Age=22;  #基表  6个数据
    +-------+---------------+-----+--------+---------+-----------+
    | StuID | Name          | Age | Gender | ClassID | TeacherID |
    +-------+---------------+-----+--------+---------+-----------+
    |     1 | Shi Zhongyu   |  22 | M      |       2 |         3 |
    |     2 | Shi Potian    |  22 | M      |       1 |         7 |
    |    21 | Huang Yueying |  22 | F      |       6 |      NULL |
    +-------+---------------+-----+--------+---------+-----------+
    3 rows in set (0.00 sec)
    
    mysql> EXPLAIN select * from mm where Age=22;   ##可以查看到,其实是查看的student表格;
    +----+-------------+----------+------+---------------+------+---------+------+------+-------------+
    | id | select_type | table    | type | possible_keys | key  | key_len | ref  | rows | Extra       |
    +----+-------------+----------+------+---------------+------+---------+------+------+-------------+
    |  1 | SIMPLE      | students | ALL  | NULL          | NULL | NULL    | NULL |   25 | Using where |
    +----+-------------+----------+------+---------------+------+---------+------+------+-------------+
    1 row in set (0.00 sec)
    
    注:视图中的数据事实上存储于“基表”中,因此,其修改操作也会针对基表实现;其修改操作受基表限制;

     9、DML语言管理;

      INSERT ,DELETE,UPDATE,SELECT

    1、INSERT 用法;

    INSERT:
        一次插入一行或多行数据;
        Syntax:
        INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
            [INTO] tbl_name [(col_name,...)]
            {VALUES | VALUE} ({expr | DEFAULT},...),(...),...
            [ ON DUPLICATE KEY UPDATE
              col_name=expr
                [, col_name=expr] ... ]
    
        INSERT tbl_name [(col1,...)] VALUES (val1,...), (val21,...)
    
        Or:
    
        INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
            [INTO] tbl_name
            SET col_name={expr | DEFAULT}, ...
            [ ON DUPLICATE KEY UPDATE
              col_name=expr
                [, col_name=expr] ... ]
    
        Or:
    
        INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
            [INTO] tbl_name [(col_name,...)]
            SELECT ...
            [ ON DUPLICATE KEY UPDATE
              col_name=expr
                [, col_name=expr] ... ]
    
    mysql> DESC students;
    +-----------+---------------------+------+-----+---------+----------------+
    | Field     | Type                | Null | Key | Default | Extra          |
    +-----------+---------------------+------+-----+---------+----------------+
    | StuID     | int(10) unsigned    | NO   | PRI | NULL    | auto_increment |
    | Name      | varchar(50)         | NO   |     | NULL    |                |
    | Age       | tinyint(3) unsigned | NO   |     | NULL    |                |
    | Gender    | enum('F','M')       | NO   |     | NULL    |                |
    | ClassID   | tinyint(3) unsigned | YES  |     | NULL    |                |
    | TeacherID | int(10) unsigned    | YES  |     | NULL    |                |
    +-----------+---------------------+------+-----+---------+----------------+
    6 rows in set (0.00 sec)
    
    mysql> show table;   
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
    mysql> 
    mysql> 
    mysql> DESC stduents;
    ERROR 1146 (42S02): Table 'hellodb.stduents' doesn't exist
    mysql> DESC students;
    +-----------+---------------------+------+-----+---------+----------------+
    | Field     | Type                | Null | Key | Default | Extra          |
    +-----------+---------------------+------+-----+---------+----------------+
    | StuID     | int(10) unsigned    | NO   | PRI | NULL    | auto_increment |
    | Name      | varchar(50)         | NO   |     | NULL    |                |
    | Age       | tinyint(3) unsigned | NO   |     | NULL    |                |
    | Gender    | enum('F','M')       | NO   |     | NULL    |                |
    | ClassID   | tinyint(3) unsigned | YES  |     | NULL    |                |
    | TeacherID | int(10) unsigned    | YES  |     | NULL    |                |
    +-----------+---------------------+------+-----+---------+----------------+
    6 rows in set (0.00 sec)
    
    mysql> 
    mysql> INSERT INTO students (Name,age,Gender) VALUES ('Mahavairocana',100,'M');
    Query OK, 1 row affected (0.00 sec)
    
    mysql> SELECT * FROM stduents;
    ERROR 1146 (42S02): Table 'hellodb.stduents' doesn't exist
    mysql> SELECT * FROM students;
    +-------+---------------+-----+--------+---------+-----------+
    | StuID | Name          | Age | Gender | ClassID | TeacherID |
    +-------+---------------+-----+--------+---------+-----------+
    |     1 | Shi Zhongyu   |  22 | M      |       2 |         3 |
    |     2 | Shi Potian    |  22 | M      |       1 |         7 |
    |     3 | Xie Yanke     |  53 | M      |       2 |        16 |
    |     4 | Ding Dian     |  32 | M      |       4 |         4 |
    |     5 | Yu Yutong     |  26 | M      |       3 |         1 |
    |     6 | Shi Qing      |  46 | M      |       5 |      NULL |
    |     7 | Xi Ren        |  19 | F      |       3 |      NULL |
    |     8 | Lin Daiyu     |  17 | F      |       7 |      NULL |
    |     9 | Ren Yingying  |  20 | F      |       6 |      NULL |
    |    10 | Yue Lingshan  |  19 | F      |       3 |      NULL |
    |    11 | Yuan Chengzhi |  23 | M      |       6 |      NULL |
    |    12 | Wen Qingqing  |  19 | F      |       1 |      NULL |
    |    13 | Tian Boguang  |  33 | M      |       2 |      NULL |
    |    14 | Lu Wushuang   |  17 | F      |       3 |      NULL |
    |    15 | Duan Yu       |  19 | M      |       4 |      NULL |
    |    16 | Xu Zhu        |  21 | M      |       1 |      NULL |
    |    17 | Lin Chong     |  25 | M      |       4 |      NULL |
    |    18 | Hua Rong      |  23 | M      |       7 |      NULL |
    |    19 | Xue Baochai   |  18 | F      |       6 |      NULL |
    |    20 | Diao Chan     |  19 | F      |       7 |      NULL |
    |    21 | Huang Yueying |  22 | F      |       6 |      NULL |
    |    22 | Xiao Qiao     |  20 | F      |       1 |      NULL |
    |    23 | Ma Chao       |  23 | M      |       4 |      NULL |
    |    24 | Xu Xian       |  27 | M      |    NULL |      NULL |
    |    25 | Sun Dasheng   | 100 | M      |    NULL |      NULL |
    |    26 | Mahavairocana | 100 | M      |    NULL |      NULL |
    +-------+---------------+-----+--------+---------+-----------+
    26 rows in set (0.00 sec)
    
    mysql> INSERT INTO stduents SET Name='Mahavairocanb',Age='1000',Gender='A';
    ERROR 1146 (42S02): Table 'hellodb.stduents' doesn't exist
    mysql> INSERT INTO students SET Name='Mahavairocanb',Age='1000',Gender='A';
    Query OK, 1 row affected, 2 warnings (0.00 sec)
    
    mysql> SELECT * FROM students;
    +-------+---------------+-----+--------+---------+-----------+ | StuID | Name | Age | Gender | ClassID | TeacherID | +-------+---------------+-----+--------+---------+-----------+ | 1 | Shi Zhongyu | 22 | M | 2 | 3 | | 2 | Shi Potian | 22 | M | 1 | 7 | | 3 | Xie Yanke | 53 | M | 2 | 16 | | 4 | Ding Dian | 32 | M | 4 | 4 | | 5 | Yu Yutong | 26 | M | 3 | 1 | | 6 | Shi Qing | 46 | M | 5 | NULL | | 7 | Xi Ren | 19 | F | 3 | NULL | | 8 | Lin Daiyu | 17 | F | 7 | NULL | | 9 | Ren Yingying | 20 | F | 6 | NULL | | 10 | Yue Lingshan | 19 | F | 3 | NULL | | 11 | Yuan Chengzhi | 23 | M | 6 | NULL | | 12 | Wen Qingqing | 19 | F | 1 | NULL | | 13 | Tian Boguang | 33 | M | 2 | NULL | | 14 | Lu Wushuang | 17 | F | 3 | NULL | | 15 | Duan Yu | 19 | M | 4 | NULL | | 16 | Xu Zhu | 21 | M | 1 | NULL | | 17 | Lin Chong | 25 | M | 4 | NULL | | 18 | Hua Rong | 23 | M | 7 | NULL | | 19 | Xue Baochai | 18 | F | 6 | NULL | | 20 | Diao Chan | 19 | F | 7 | NULL | | 21 | Huang Yueying | 22 | F | 6 | NULL | | 22 | Xiao Qiao | 20 | F | 1 | NULL | | 23 | Ma Chao | 23 | M | 4 | NULL | | 24 | Xu Xian | 27 | M | NULL | NULL | | 25 | Sun Dasheng | 100 | M | NULL | NULL | | 26 | Mahavairocana | 100 | M | NULL | NULL | | 27 | Mahavairocanb | 255 | | NULL | NULL | +-------+---------------+-----+--------+---------+-----------+ 27 rows in set (0.00 sec) mysql> INSERT INTO students SET Name='Mahavairocanb',Age='1000',Gender='M'; Query OK, 1 row affected, 1 warning (0.00 sec) mysql> SELECT * FROM students;
    +-------+---------------+-----+--------+---------+-----------+ | StuID | Name | Age | Gender | ClassID | TeacherID | +-------+---------------+-----+--------+---------+-----------+ | 1 | Shi Zhongyu | 22 | M | 2 | 3 | | 2 | Shi Potian | 22 | M | 1 | 7 | | 3 | Xie Yanke | 53 | M | 2 | 16 | | 4 | Ding Dian | 32 | M | 4 | 4 | | 5 | Yu Yutong | 26 | M | 3 | 1 | | 6 | Shi Qing | 46 | M | 5 | NULL | | 7 | Xi Ren | 19 | F | 3 | NULL | | 8 | Lin Daiyu | 17 | F | 7 | NULL | | 9 | Ren Yingying | 20 | F | 6 | NULL | | 10 | Yue Lingshan | 19 | F | 3 | NULL | | 11 | Yuan Chengzhi | 23 | M | 6 | NULL | | 12 | Wen Qingqing | 19 | F | 1 | NULL | | 13 | Tian Boguang | 33 | M | 2 | NULL | | 14 | Lu Wushuang | 17 | F | 3 | NULL | | 15 | Duan Yu | 19 | M | 4 | NULL | | 16 | Xu Zhu | 21 | M | 1 | NULL | | 17 | Lin Chong | 25 | M | 4 | NULL | | 18 | Hua Rong | 23 | M | 7 | NULL | | 19 | Xue Baochai | 18 | F | 6 | NULL | | 20 | Diao Chan | 19 | F | 7 | NULL | | 21 | Huang Yueying | 22 | F | 6 | NULL | | 22 | Xiao Qiao | 20 | F | 1 | NULL | | 23 | Ma Chao | 23 | M | 4 | NULL | | 24 | Xu Xian | 27 | M | NULL | NULL | | 25 | Sun Dasheng | 100 | M | NULL | NULL | | 26 | Mahavairocana | 100 | M | NULL | NULL | | 27 | Mahavairocanb | 255 | | NULL | NULL | | 28 | Mahavairocanb | 255 | M | NULL | NULL | +-------+---------------+-----+--------+---------+-----------+ 28 rows in set (0.00 sec)
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    
    注意:一定要有限制条件,否则将清空表中的所有数据;
        限制条件:
            WHERE
                    LIMIT
    
    UPDATE:
    
        UPDATE [LOW_PRIORITY] [IGNORE] table_reference
            SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
            [WHERE where_condition]
            [ORDER BY ...]
            [LIMIT row_count]
    
        注意:一定要有限制条件,否则将修改所有行的指定字段;
            限制条件:
                WHERE
                LIMIT

    select:用法

    、   查询过程

    1、客户端发起一条Query请求,监听客户端的‘连接管理模块’接收请求
    2、将请求转发到‘连接进/线程模块’
    3、调用‘用户模块’来进行授权检查
    4、通过检查后,‘连接进/线程模块’从‘线程连接池’中取出空闲的被缓存的连接线程和客户端请求对接,如果失败则创建一个新的连接请求
    5、客户端通过mysql协议,连接到mysqlserver 6、mysqlserver再接受到请求后,通过连接线程接受客户端发起的查询语句,
    7、在缓存中中查询是否命中,如果可以命中,则直接返回值;
    8、如果缓存未命中,接着查询语句会通过解析器进行解析,并生成一个解析树,
    9、解析树被预处理器处理,生存可以访问数据执行路径,由优化器评估,由哪一条路径是最优的,并尝试对最优路径进行改写,以加速执行性能;
    10、将优化后的执行请求,提交给查询执行计划,每一个查询计划由查询执行引擎负责执行;
    11、返回给客户端,返回客户端之前,如果查询结果是i确定的,而且符合缓存条件,则保存在缓存中;
    12、Query请求完成后,将结果集返回给‘连接进/线程模块’
    13、返回的也可以是相应的状态标识,如成功或失败等
    14、‘连接进/线程模块’进行后续的清理工作,并继续等待请求或断开与客户端的连接

      SELECT 执行流程

    FROM Clause --> WHERE Clause --> GROUP BY --> HAVING Clause --> ORDER BY --> SELECT --> LIMIT
    select 运行流程
    1、判断from字句,决定从哪张表查询数据;
    2、确定表后,从表上通过where字句指明过滤条件,挑选出获取数据的行
    3、使用group by 字句做分组
    4、分组完成后,做having:对分组的结果指明过滤条件;
    5、进一步进行排序操作,ORDER  BY
    6、挑选出用到的字段,使用LIMIT限制,最终结果需要输入内容;
    用法示例
    1、DISTINCT : 数据去重
    mysql> SELECT  Gender FROM students;       (去重前)  
    +--------+
    | Gender |
    +--------+
    | M      |
    | M      |
    | M      |
    | M      |
    | M      |
    | M      |
    | F      |
    | F      |
    | F      |
    | F      |
    | M      |
    | F      |
    | M      |
    | F      |
    | M      |
    | M      |
    | M      |
    | M      |
    | F      |
    | F      |
    | F      |
    | F      |
    | M      |
    | M      |
    | M      |
    | M      |
    |        |
    | M      |
    | F      |
    +--------+
    29 rows in set (0.00 sec)

    mysql> SELECT DISTINCT Gender FROM students; (去重后) +--------+ | Gender | +--------+ | M | | F | | | +--------+


    SQL_CACHE: 显式指定存储查询结果于缓存之中;
    SQL_NO_CACHE: 显式查询结果不予缓存;

    query_cache_type的值为'ON'时,查询缓存功能打开;
        SELECT的结果符合缓存条件即会缓存,否则,不予缓存;
        显式指定SQL_NO_CACHE,不予缓存;
    query_cache_type的值为'DEMAND'时,查询缓存功能按需进行;
        显式指定SQL_CACHE的SELECT语句才会缓存;其它均不予缓存;

    2、查询缓存是否打开以及缓存命中率
    mysql> SHOW GLOBAL VARIABLES LIKE 'query%';                
    +------------------------------+---------+
    | Variable_name                | Value   |
    +------------------------------+---------+
    | query_alloc_block_size       | 8192    |
    | query_cache_limit            | 1048576 |
    | query_cache_min_res_unit     | 4096    |
    | query_cache_size             | 0       |
    | query_cache_type             | ON      |
    | query_cache_wlock_invalidate | OFF     |
    | query_prealloc_size          | 8192    |
    +------------------------------+---------+
    7 rows in set (0.00 sec)

    mysql> SHOW GLOBAL STATUS LIKE 'Qcache%';
    +-------------------------+-------+
    | Variable_name           | Value |
    +-------------------------+-------+
    | Qcache_free_blocks      | 0     |
    | Qcache_free_memory      | 0     |
    | Qcache_hits             | 0     | 缓存命中次数
    | Qcache_inserts          | 0     |
    | Qcache_lowmem_prunes    | 0     |
    | Qcache_not_cached       | 0     |
    | Qcache_queries_in_cache | 0     |
    | Qcache_total_blocks     | 0     |
    +-------------------------+-------+
    8 rows in set (0.00 sec)

    mysql> SHOW GLOBAL STATUS LIKE 'Com_se%';
    +----------------+-------+
    | Variable_name  | Value |
    +----------------+-------+
    | Com_select     | 13    | 查询次数
    | Com_set_option | 39    |
    +----------------+-------+
    命中次数/查询次数=命中率

    3、AS 别名,只做显示修改;
    mysql> SELECT Name FROM students;     
    +---------------+
    | Name          | ##重点
    +---------------+
    | Shi Zhongyu   |
    | Shi Potian    |
    | Xie Yanke     |
    | Ding Dian     |
    | Yu Yutong     |
    | Shi Qing      |
    | Xi Ren        |
    | Lin Daiyu     |
    | Ren Yingying  |
    | Yue Lingshan  |
    | Yuan Chengzhi |
    | Wen Qingqing  |
    | Tian Boguang  |
    | Lu Wushuang   |
    | Duan Yu       |
    | Xu Zhu        |
    | Lin Chong     |
    | Hua Rong      |
    | Xue Baochai   |
    | Diao Chan     |
    | Huang Yueying |
    | Xiao Qiao     |
    | Ma Chao       |
    | Xu Xian       |
    | Sun Dasheng   |
    | Mahavairocana |
    | Mahavairocanb |
    | Mahavairocanb |
    | Mahavairocanc |
    +---------------+
    29 rows in set (0.01 sec)

    mysql> SELECT Name AS StuName FROM students;  
    +---------------+
    | StuName       | ###重点
    +---------------+
    | Shi Zhongyu   |
    | Shi Potian    |
    | Xie Yanke     |
    | Ding Dian     |
    | Yu Yutong     |
    | Shi Qing      |
    | Xi Ren        |
    | Lin Daiyu     |
    | Ren Yingying  |
    | Yue Lingshan  |
    | Yuan Chengzhi |
    | Wen Qingqing  |
    | Tian Boguang  |
    | Lu Wushuang   |
    | Duan Yu       |
    | Xu Zhu        |
    | Lin Chong     |
    | Hua Rong      |
    | Xue Baochai   |
    | Diao Chan     |
    | Huang Yueying |
    | Xiao Qiao     |
    | Ma Chao       |
    | Xu Xian       |
    | Sun Dasheng   |
    | Mahavairocana |
    | Mahavairocanb |
    | Mahavairocanb |
    | Mahavairocanc |
    +---------------+
    29 rows in set (0.00 sec)


    4、WHERE
    WHERE子句:指明过滤条件以实现“选择”的功能:
                过滤条件:布尔型表达式;
                算术操作符:+, -, *, /, %
                比较操作符:=, !=, <>, <=>, >, >=, <, <=
        BETWEEN min_num AND max_num
        IN (element1, element2, ...)
        IS NULL
        IS NOT NULL
        LIKE:
            %: 任意长度的任意字符;
            _:任意单个字符;
        RLIKE:
        REGEXP:匹配字符串可用正则表达式书写模式;

      逻辑操作符:

        NOT
        AND
        OR
        XOR



    mysql> SELECT Name,Age  FROM students WHERE Age+30 > 69;
    +---------------+-----+
    | Name          | Age |
    +---------------+-----+
    | Xie Yanke     |  53 |
    | Shi Qing      |  46 |
    | Sun Dasheng   | 100 |
    | Mahavairocana | 100 |
    | Mahavairocanb | 255 |
    | Mahavairocanb | 255 |
    +---------------+-----+
    6 rows in set (0.00 sec)

    mysql> SELECT Name,Age  FROM students WHERE Age IN (18,100); 只查询18、100岁的
    +---------------+-----+
    | Name          | Age |
    +---------------+-----+
    | Xue Baochai   |  18 |
    | Sun Dasheng   | 100 |
    | Mahavairocana | 100 |
    +---------------+-----+
    3 rows in set (0.00 sec)

    5、GROUP
    根据指定的条件把查询结果进行“分组”以用于做“聚合”运算:
     avg(统计平均值), max(最大), min(最小), count(求和), sum(计算)


    mysql> SELECT * FROM students GROUP BY Gender;
    +-------+---------------+-----+--------+---------+-----------+
    | StuID | Name          | Age | Gender | ClassID | TeacherID |
    +-------+---------------+-----+--------+---------+-----------+
    |    27 | Mahavairocanb | 255 |        |    NULL |      NULL |
    |     7 | Xi Ren        |  19 | F      |       3 |      NULL |
    |     1 | Shi Zhongyu   |  22 | M      |       2 |         3 |
    +-------+---------------+-----+--------+---------+-----------+
    3 rows in set (0.00 sec)

    mysql> SELECT avg(Age),Gender FROM students GROUP BY Gender;       
    +----------+--------+
    | avg(Age) | Gender |
    +----------+--------+
    | 255.0000 |        |
    |  17.2727 | F      |
    |  50.0000 | M      |
    +----------+--------+
    3 rows in set (0.00 sec)

    6、HAVING: 对分组聚合运算后的结果指定过滤条件;
    mysql> SELECT count(StuID) AS NOS,ClassID FROM students GROUP BY ClassID HAVING NOS>2 ;
    +-----+---------+
    | NOS | ClassID |
    +-----+---------+
    |   6 |    NULL |
    |   4 |       1 |
    |   3 |       2 |
    |   4 |       3 |
    |   4 |       4 |
    |   4 |       6 |
    |   3 |       7 |
    +-----+---------+
    7 rows in set (0.00 sec)


    7、ORDER BY: 根据指定的字段对查询结果进行排序;
                升序:ASC 默认
                降序:DESC


    mysql> SELECT count(StuID) AS NOS,ClassID FROM students GROUP BY ClassID HAVING NOS>2 ORDER BY NOS; # 默认未ASC
    +-----+---------+
    | NOS | ClassID |
    +-----+---------+
    |   3 |       2 |
    |   3 |       7 |
    |   4 |       1 |
    |   4 |       4 |
    |   4 |       3 |
    |   4 |       6 |
    |   6 |    NULL |
    +-----+---------+
    7 rows in set (0.00 sec)

    mysql> SELECT Name,Age FROM students ORDER BY Age DESC;
    +---------------+-----+
    | Name          | Age |
    +---------------+-----+
    | Mahavairocanb | 255 |
    | Mahavairocanb | 255 |
    | Sun Dasheng   | 100 |
    | Mahavairocana | 100 |
    | Xie Yanke     |  53 |
    | Shi Qing      |  46 |
    | Tian Boguang  |  33 |
    | Ding Dian     |  32 |
    | Xu Xian       |  27 |
    | Yu Yutong     |  26 |
    | Lin Chong     |  25 |
    | Ma Chao       |  23 |
    | Hua Rong      |  23 |
    | Yuan Chengzhi |  23 |
    | Shi Zhongyu   |  22 |
    | Shi Potian    |  22 |
    | Huang Yueying |  22 |
    | Xu Zhu        |  21 |
    | Ren Yingying  |  20 |
    | Xiao Qiao     |  20 |
    | Diao Chan     |  19 |
    | Duan Yu       |  19 |
    | Wen Qingqing  |  19 |
    | Yue Lingshan  |  19 |
    | Xi Ren        |  19 |
    | Xue Baochai   |  18 |
    | Lu Wushuang   |  17 |
    | Lin Daiyu     |  17 |
    | Mahavairocanc |   0 |
    +---------------+-----+
    29 rows in set (0.00 sec)

    8、LIMIT [[offset,]row_count]:对查询的结果进行输出行数数量限制;

    对查询结果中的数据请求施加“锁”:
        FOR UPDATE: 写锁,排他锁;
        LOCK IN SHARE MODE: 读锁,共享锁

    9、多表查询:

    笛卡尔乘积,最无效率,交叉连接,两张表相乘显示;
    mysql> SELECT * FROM students;         
    +-------+---------------+-----+--------+---------+-----------+
    | StuID | Name          | Age | Gender | ClassID | TeacherID |
    +-------+---------------+-----+--------+---------+-----------+
    |     1 | Shi Zhongyu   |  22 | M      |       2 |         3 |
    |     2 | Shi Potian    |  22 | M      |       1 |         7 |
    |     3 | Xie Yanke     |  53 | M      |       2 |        16 |
    |     4 | Ding Dian     |  32 | M      |       4 |         4 |
    |     5 | Yu Yutong     |  26 | M      |       3 |         1 |
    |     6 | Shi Qing      |  46 | M      |       5 |      NULL |
    |     7 | Xi Ren        |  19 | F      |       3 |      NULL |
    |     8 | Lin Daiyu     |  17 | F      |       7 |      NULL |
    |     9 | Ren Yingying  |  20 | F      |       6 |      NULL |
    |    10 | Yue Lingshan  |  19 | F      |       3 |      NULL |
    |    11 | Yuan Chengzhi |  23 | M      |       6 |      NULL |
    |    12 | Wen Qingqing  |  19 | F      |       1 |      NULL |
    |    13 | Tian Boguang  |  33 | M      |       2 |      NULL |
    |    14 | Lu Wushuang   |  17 | F      |       3 |      NULL |
    |    15 | Duan Yu       |  19 | M      |       4 |      NULL |
    |    16 | Xu Zhu        |  21 | M      |       1 |      NULL |
    |    17 | Lin Chong     |  25 | M      |       4 |      NULL |
    |    18 | Hua Rong      |  23 | M      |       7 |      NULL |
    |    19 | Xue Baochai   |  18 | F      |       6 |      NULL |
    |    20 | Diao Chan     |  19 | F      |       7 |      NULL |
    |    21 | Huang Yueying |  22 | F      |       6 |      NULL |
    |    22 | Xiao Qiao     |  20 | F      |       1 |      NULL |
    |    23 | Ma Chao       |  23 | M      |       4 |      NULL |
    |    24 | Xu Xian       |  27 | M      |    NULL |      NULL |
    |    25 | Sun Dasheng   | 100 | M      |    NULL |      NULL |
    |    26 | Mahavairocana | 100 | M      |    NULL |      NULL |
    |    27 | Mahavairocanb | 255 |        |    NULL |      NULL |
    |    28 | Mahavairocanb | 255 | M      |    NULL |      NULL |
    |    29 | Mahavairocanc |   0 | F      |    NULL |      NULL |
    +-------+---------------+-----+--------+---------+-----------+
    29 rows in set (0.00 sec)

    mysql> SELECT * FROM teachers;         
    +-----+---------------+-----+--------+
    | TID | Name          | Age | Gender |
    +-----+---------------+-----+--------+
    |   1 | Song Jiang    |  45 | M      |
    |   2 | Zhang Sanfeng |  94 | M      |
    |   3 | Miejue Shitai |  77 | F      |
    |   4 | Lin Chaoying  |  93 | F      |
    +-----+---------------+-----+--------+
    4 rows in set (0.00 sec)

    mysql> SELECT * FROM students,teachers;
    +-------+---------------+-----+--------+---------+-----------+-----+---------------+-----+--------+
    | StuID | Name          | Age | Gender | ClassID | TeacherID | TID | Name          | Age | Gender |
    +-------+---------------+-----+--------+---------+-----------+-----+---------------+-----+--------+
    |     1 | Shi Zhongyu   |  22 | M      |       2 |         3 |   1 | Song Jiang    |  45 | M      |
    |     1 | Shi Zhongyu   |  22 | M      |       2 |         3 |   2 | Zhang Sanfeng |  94 | M      |
    |     1 | Shi Zhongyu   |  22 | M      |       2 |         3 |   3 | Miejue Shitai |  77 | F      |
    |     1 | Shi Zhongyu   |  22 | M      |       2 |         3 |   4 | Lin Chaoying  |  93 | F      |
    |     2 | Shi Potian    |  22 | M      |       1 |         7 |   1 | Song Jiang    |  45 | M      |
    |     2 | Shi Potian    |  22 | M      |       1 |         7 |   2 | Zhang Sanfeng |  94 | M      |
    |     2 | Shi Potian    |  22 | M      |       1 |         7 |   3 | Miejue Shitai |  77 | F      |
    |     2 | Shi Potian    |  22 | M      |       1 |         7 |   4 | Lin Chaoying  |  93 | F      |
    |     3 | Xie Yanke     |  53 | M      |       2 |        16 |   1 | Song Jiang    |  45 | M      |
    |     3 | Xie Yanke     |  53 | M      |       2 |        16 |   2 | Zhang Sanfeng |  94 | M      |
    |     3 | Xie Yanke     |  53 | M      |       2 |        16 |   3 | Miejue Shitai |  77 | F      |
    |     3 | Xie Yanke     |  53 | M      |       2 |        16 |   4 | Lin Chaoying  |  93 | F      |
    |     4 | Ding Dian     |  32 | M      |       4 |         4 |   1 | Song Jiang    |  45 | M      |
    |     4 | Ding Dian     |  32 | M      |       4 |         4 |   2 | Zhang Sanfeng |  94 | M      |
    |     4 | Ding Dian     |  32 | M      |       4 |         4 |   3 | Miejue Shitai |  77 | F      |
    |     4 | Ding Dian     |  32 | M      |       4 |         4 |   4 | Lin Chaoying  |  93 | F      |
    |     5 | Yu Yutong     |  26 | M      |       3 |         1 |   1 | Song Jiang    |  45 | M      |
    |     5 | Yu Yutong     |  26 | M      |       3 |         1 |   2 | Zhang Sanfeng |  94 | M      |
    |     5 | Yu Yutong     |  26 | M      |       3 |         1 |   3 | Miejue Shitai |  77 | F      |
    |     5 | Yu Yutong     |  26 | M      |       3 |         1 |   4 | Lin Chaoying  |  93 | F      |
    |     6 | Shi Qing      |  46 | M      |       5 |      NULL |   1 | Song Jiang    |  45 | M      |
    |     6 | Shi Qing      |  46 | M      |       5 |      NULL |   2 | Zhang Sanfeng |  94 | M      |
    |     6 | Shi Qing      |  46 | M      |       5 |      NULL |   3 | Miejue Shitai |  77 | F      |
    |     6 | Shi Qing      |  46 | M      |       5 |      NULL |   4 | Lin Chaoying  |  93 | F      |
    |     7 | Xi Ren        |  19 | F      |       3 |      NULL |   1 | Song Jiang    |  45 | M      |
    |     7 | Xi Ren        |  19 | F      |       3 |      NULL |   2 | Zhang Sanfeng |  94 | M      |
    |     7 | Xi Ren        |  19 | F      |       3 |      NULL |   3 | Miejue Shitai |  77 | F      |
    |     7 | Xi Ren        |  19 | F      |       3 |      NULL |   4 | Lin Chaoying  |  93 | F      |
    |     8 | Lin Daiyu     |  17 | F      |       7 |      NULL |   1 | Song Jiang    |  45 | M      |
    |     8 | Lin Daiyu     |  17 | F      |       7 |      NULL |   2 | Zhang Sanfeng |  94 | M      |
    |     8 | Lin Daiyu     |  17 | F      |       7 |      NULL |   3 | Miejue Shitai |  77 | F      |
    |     8 | Lin Daiyu     |  17 | F      |       7 |      NULL |   4 | Lin Chaoying  |  93 | F      |
    |     9 | Ren Yingying  |  20 | F      |       6 |      NULL |   1 | Song Jiang    |  45 | M      |
    |     9 | Ren Yingying  |  20 | F      |       6 |      NULL |   2 | Zhang Sanfeng |  94 | M      |
    |     9 | Ren Yingying  |  20 | F      |       6 |      NULL |   3 | Miejue Shitai |  77 | F      |
    |     9 | Ren Yingying  |  20 | F      |       6 |      NULL |   4 | Lin Chaoying  |  93 | F      |
    |    10 | Yue Lingshan  |  19 | F      |       3 |      NULL |   1 | Song Jiang    |  45 | M      |
    |    10 | Yue Lingshan  |  19 | F      |       3 |      NULL |   2 | Zhang Sanfeng |  94 | M      |
    |    10 | Yue Lingshan  |  19 | F      |       3 |      NULL |   3 | Miejue Shitai |  77 | F      |
    |    10 | Yue Lingshan  |  19 | F      |       3 |      NULL |   4 | Lin Chaoying  |  93 | F      |
    |    11 | Yuan Chengzhi |  23 | M      |       6 |      NULL |   1 | Song Jiang    |  45 | M      |
    |    11 | Yuan Chengzhi |  23 | M      |       6 |      NULL |   2 | Zhang Sanfeng |  94 | M      |
    |    11 | Yuan Chengzhi |  23 | M      |       6 |      NULL |   3 | Miejue Shitai |  77 | F      |
    |    11 | Yuan Chengzhi |  23 | M      |       6 |      NULL |   4 | Lin Chaoying  |  93 | F      |
    |    12 | Wen Qingqing  |  19 | F      |       1 |      NULL |   1 | Song Jiang    |  45 | M      |
    |    12 | Wen Qingqing  |  19 | F      |       1 |      NULL |   2 | Zhang Sanfeng |  94 | M      |
    |    12 | Wen Qingqing  |  19 | F      |       1 |      NULL |   3 | Miejue Shitai |  77 | F      |
    |    12 | Wen Qingqing  |  19 | F      |       1 |      NULL |   4 | Lin Chaoying  |  93 | F      |
    |    13 | Tian Boguang  |  33 | M      |       2 |      NULL |   1 | Song Jiang    |  45 | M      |
    |    13 | Tian Boguang  |  33 | M      |       2 |      NULL |   2 | Zhang Sanfeng |  94 | M      |
    |    13 | Tian Boguang  |  33 | M      |       2 |      NULL |   3 | Miejue Shitai |  77 | F      |
    |    13 | Tian Boguang  |  33 | M      |       2 |      NULL |   4 | Lin Chaoying  |  93 | F      |
    |    14 | Lu Wushuang   |  17 | F      |       3 |      NULL |   1 | Song Jiang    |  45 | M      |
    |    14 | Lu Wushuang   |  17 | F      |       3 |      NULL |   2 | Zhang Sanfeng |  94 | M      |
    |    14 | Lu Wushuang   |  17 | F      |       3 |      NULL |   3 | Miejue Shitai |  77 | F      |
    |    14 | Lu Wushuang   |  17 | F      |       3 |      NULL |   4 | Lin Chaoying  |  93 | F      |
    |    15 | Duan Yu       |  19 | M      |       4 |      NULL |   1 | Song Jiang    |  45 | M      |
    |    15 | Duan Yu       |  19 | M      |       4 |      NULL |   2 | Zhang Sanfeng |  94 | M      |
    |    15 | Duan Yu       |  19 | M      |       4 |      NULL |   3 | Miejue Shitai |  77 | F      |
    |    15 | Duan Yu       |  19 | M      |       4 |      NULL |   4 | Lin Chaoying  |  93 | F      |
    |    16 | Xu Zhu        |  21 | M      |       1 |      NULL |   1 | Song Jiang    |  45 | M      |
    |    16 | Xu Zhu        |  21 | M      |       1 |      NULL |   2 | Zhang Sanfeng |  94 | M      |
    |    16 | Xu Zhu        |  21 | M      |       1 |      NULL |   3 | Miejue Shitai |  77 | F      |
    |    16 | Xu Zhu        |  21 | M      |       1 |      NULL |   4 | Lin Chaoying  |  93 | F      |
    |    17 | Lin Chong     |  25 | M      |       4 |      NULL |   1 | Song Jiang    |  45 | M      |
    |    17 | Lin Chong     |  25 | M      |       4 |      NULL |   2 | Zhang Sanfeng |  94 | M      |
    |    17 | Lin Chong     |  25 | M      |       4 |      NULL |   3 | Miejue Shitai |  77 | F      |
    |    17 | Lin Chong     |  25 | M      |       4 |      NULL |   4 | Lin Chaoying  |  93 | F      |
    |    18 | Hua Rong      |  23 | M      |       7 |      NULL |   1 | Song Jiang    |  45 | M      |
    |    18 | Hua Rong      |  23 | M      |       7 |      NULL |   2 | Zhang Sanfeng |  94 | M      |
    |    18 | Hua Rong      |  23 | M      |       7 |      NULL |   3 | Miejue Shitai |  77 | F      |
    |    18 | Hua Rong      |  23 | M      |       7 |      NULL |   4 | Lin Chaoying  |  93 | F      |
    |    19 | Xue Baochai   |  18 | F      |       6 |      NULL |   1 | Song Jiang    |  45 | M      |
    |    19 | Xue Baochai   |  18 | F      |       6 |      NULL |   2 | Zhang Sanfeng |  94 | M      |
    |    19 | Xue Baochai   |  18 | F      |       6 |      NULL |   3 | Miejue Shitai |  77 | F      |
    |    19 | Xue Baochai   |  18 | F      |       6 |      NULL |   4 | Lin Chaoying  |  93 | F      |
    |    20 | Diao Chan     |  19 | F      |       7 |      NULL |   1 | Song Jiang    |  45 | M      |
    |    20 | Diao Chan     |  19 | F      |       7 |      NULL |   2 | Zhang Sanfeng |  94 | M      |
    |    20 | Diao Chan     |  19 | F      |       7 |      NULL |   3 | Miejue Shitai |  77 | F      |
    |    20 | Diao Chan     |  19 | F      |       7 |      NULL |   4 | Lin Chaoying  |  93 | F      |
    |    21 | Huang Yueying |  22 | F      |       6 |      NULL |   1 | Song Jiang    |  45 | M      |
    |    21 | Huang Yueying |  22 | F      |       6 |      NULL |   2 | Zhang Sanfeng |  94 | M      |
    |    21 | Huang Yueying |  22 | F      |       6 |      NULL |   3 | Miejue Shitai |  77 | F      |
    |    21 | Huang Yueying |  22 | F      |       6 |      NULL |   4 | Lin Chaoying  |  93 | F      |
    |    22 | Xiao Qiao     |  20 | F      |       1 |      NULL |   1 | Song Jiang    |  45 | M      |
    |    22 | Xiao Qiao     |  20 | F      |       1 |      NULL |   2 | Zhang Sanfeng |  94 | M      |
    |    22 | Xiao Qiao     |  20 | F      |       1 |      NULL |   3 | Miejue Shitai |  77 | F      |
    |    22 | Xiao Qiao     |  20 | F      |       1 |      NULL |   4 | Lin Chaoying  |  93 | F      |
    |    23 | Ma Chao       |  23 | M      |       4 |      NULL |   1 | Song Jiang    |  45 | M      |
    |    23 | Ma Chao       |  23 | M      |       4 |      NULL |   2 | Zhang Sanfeng |  94 | M      |
    |    23 | Ma Chao       |  23 | M      |       4 |      NULL |   3 | Miejue Shitai |  77 | F      |
    |    23 | Ma Chao       |  23 | M      |       4 |      NULL |   4 | Lin Chaoying  |  93 | F      |
    |    24 | Xu Xian       |  27 | M      |    NULL |      NULL |   1 | Song Jiang    |  45 | M      |
    |    24 | Xu Xian       |  27 | M      |    NULL |      NULL |   2 | Zhang Sanfeng |  94 | M      |
    |    24 | Xu Xian       |  27 | M      |    NULL |      NULL |   3 | Miejue Shitai |  77 | F      |
    |    24 | Xu Xian       |  27 | M      |    NULL |      NULL |   4 | Lin Chaoying  |  93 | F      |
    |    25 | Sun Dasheng   | 100 | M      |    NULL |      NULL |   1 | Song Jiang    |  45 | M      |
    |    25 | Sun Dasheng   | 100 | M      |    NULL |      NULL |   2 | Zhang Sanfeng |  94 | M      |
    |    25 | Sun Dasheng   | 100 | M      |    NULL |      NULL |   3 | Miejue Shitai |  77 | F      |
    |    25 | Sun Dasheng   | 100 | M      |    NULL |      NULL |   4 | Lin Chaoying  |  93 | F      |
    |    26 | Mahavairocana | 100 | M      |    NULL |      NULL |   1 | Song Jiang    |  45 | M      |
    |    26 | Mahavairocana | 100 | M      |    NULL |      NULL |   2 | Zhang Sanfeng |  94 | M      |
    |    26 | Mahavairocana | 100 | M      |    NULL |      NULL |   3 | Miejue Shitai |  77 | F      |
    |    26 | Mahavairocana | 100 | M      |    NULL |      NULL |   4 | Lin Chaoying  |  93 | F      |
    |    27 | Mahavairocanb | 255 |        |    NULL |      NULL |   1 | Song Jiang    |  45 | M      |
    |    27 | Mahavairocanb | 255 |        |    NULL |      NULL |   2 | Zhang Sanfeng |  94 | M      |
    |    27 | Mahavairocanb | 255 |        |    NULL |      NULL |   3 | Miejue Shitai |  77 | F      |
    |    27 | Mahavairocanb | 255 |        |    NULL |      NULL |   4 | Lin Chaoying  |  93 | F      |
    |    28 | Mahavairocanb | 255 | M      |    NULL |      NULL |   1 | Song Jiang    |  45 | M      |
    |    28 | Mahavairocanb | 255 | M      |    NULL |      NULL |   2 | Zhang Sanfeng |  94 | M      |
    |    28 | Mahavairocanb | 255 | M      |    NULL |      NULL |   3 | Miejue Shitai |  77 | F      |
    |    28 | Mahavairocanb | 255 | M      |    NULL |      NULL |   4 | Lin Chaoying  |  93 | F      |
    |    29 | Mahavairocanc |   0 | F      |    NULL |      NULL |   1 | Song Jiang    |  45 | M      |
    |    29 | Mahavairocanc |   0 | F      |    NULL |      NULL |   2 | Zhang Sanfeng |  94 | M      |
    |    29 | Mahavairocanc |   0 | F      |    NULL |      NULL |   3 | Miejue Shitai |  77 | F      |
    |    29 | Mahavairocanc |   0 | F      |    NULL |      NULL |   4 | Lin Chaoying  |  93 | F      |
    +-------+---------------+-----+--------+---------+-----------+-----+---------------+-----+--------+
    116 rows in set (0.00 sec)


    内连接:
        等值连接:让表之间的字段以“等值”建立连接关系;
    mysql> SELECT * FROM students,teachers WHERE students.TeacherID=teachers.TID;
    +-------+-------------+-----+--------+---------+-----------+-----+---------------+-----+--------+
    | StuID | Name        | Age | Gender | ClassID | TeacherID | TID | Name          | Age | Gender |
    +-------+-------------+-----+--------+---------+-----------+-----+---------------+-----+--------+
    |     5 | Yu Yutong   |  26 | M      |       3 |         1 |   1 | Song Jiang    |  45 | M      |
    |     1 | Shi Zhongyu |  22 | M      |       2 |         3 |   3 | Miejue Shitai |  77 | F      |
    |     4 | Ding Dian   |  32 | M      |       4 |         4 |   4 | Lin Chaoying  |  93 | F      |
    +-------+-------------+-----+--------+---------+-----------+-----+---------------+-----+--------+
    3 rows in set (0.00 sec)

    mysql> SELECT * FROM students;         
    +-------+---------------+-----+--------+---------+-----------+
    | StuID | Name          | Age | Gender | ClassID | TeacherID |
    +-------+---------------+-----+--------+---------+-----------+
    |     1 | Shi Zhongyu   |  22 | M      |       2 |         3 |
    |     2 | Shi Potian    |  22 | M      |       1 |         7 |
    |     3 | Xie Yanke     |  53 | M      |       2 |        16 |
    |     4 | Ding Dian     |  32 | M      |       4 |         4 |
    |     5 | Yu Yutong     |  26 | M      |       3 |         1 |
    |     6 | Shi Qing      |  46 | M      |       5 |      NULL |
    |     7 | Xi Ren        |  19 | F      |       3 |      NULL |
    |     8 | Lin Daiyu     |  17 | F      |       7 |      NULL |
    |     9 | Ren Yingying  |  20 | F      |       6 |      NULL |
    |    10 | Yue Lingshan  |  19 | F      |       3 |      NULL |
    |    11 | Yuan Chengzhi |  23 | M      |       6 |      NULL |
    |    12 | Wen Qingqing  |  19 | F      |       1 |      NULL |
    |    13 | Tian Boguang  |  33 | M      |       2 |      NULL |
    |    14 | Lu Wushuang   |  17 | F      |       3 |      NULL |
    |    15 | Duan Yu       |  19 | M      |       4 |      NULL |
    |    16 | Xu Zhu        |  21 | M      |       1 |      NULL |
    |    17 | Lin Chong     |  25 | M      |       4 |      NULL |
    |    18 | Hua Rong      |  23 | M      |       7 |      NULL |
    |    19 | Xue Baochai   |  18 | F      |       6 |      NULL |
    |    20 | Diao Chan     |  19 | F      |       7 |      NULL |
    |    21 | Huang Yueying |  22 | F      |       6 |      NULL |
    |    22 | Xiao Qiao     |  20 | F      |       1 |      NULL |
    |    23 | Ma Chao       |  23 | M      |       4 |      NULL |
    |    24 | Xu Xian       |  27 | M      |    NULL |      NULL |
    |    25 | Sun Dasheng   | 100 | M      |    NULL |      NULL |
    |    26 | Mahavairocana | 100 | M      |    NULL |      NULL |
    |    27 | Mahavairocanb | 255 |        |    NULL |      NULL |
    |    28 | Mahavairocanb | 255 | M      |    NULL |      NULL |
    |    29 | Mahavairocanc |   0 | F      |    NULL |      NULL |
    +-------+---------------+-----+--------+---------+-----------+
    29 rows in set (0.00 sec)

    mysql> SELECT * FROM classes;
    +---------+----------------+----------+
    | ClassID | Class          | NumOfStu |
    +---------+----------------+----------+
    |       1 | Shaolin Pai    |       10 |
    |       2 | Emei Pai       |        7 |
    |       3 | QingCheng Pai  |       11 |
    |       4 | Wudang Pai     |       12 |
    |       5 | Riyue Shenjiao |       31 |
    |       6 | Lianshan Pai   |       27 |
    |       7 | Ming Jiao      |       27 |
    |       8 | Xiaoyao Pai    |       15 |
    +---------+----------------+----------+
    8 rows in set (0.00 sec)
    mysql> SELECT s.Name,c.class FROM students AS s,classes AS c WHERE s.ClassID=c.ClassID;
    +---------------+----------------+
    | Name          | class          |
    +---------------+----------------+
    | Shi Zhongyu   | Emei Pai       |
    | Shi Potian    | Shaolin Pai    |
    | Xie Yanke     | Emei Pai       |
    | Ding Dian     | Wudang Pai     |
    | Yu Yutong     | QingCheng Pai  |
    | Shi Qing      | Riyue Shenjiao |
    | Xi Ren        | QingCheng Pai  |
    | Lin Daiyu     | Ming Jiao      |
    | Ren Yingying  | Lianshan Pai   |
    | Yue Lingshan  | QingCheng Pai  |
    | Yuan Chengzhi | Lianshan Pai   |
    | Wen Qingqing  | Shaolin Pai    |
    | Tian Boguang  | Emei Pai       |
    | Lu Wushuang   | QingCheng Pai  |
    | Duan Yu       | Wudang Pai     |
    | Xu Zhu        | Shaolin Pai    |
    | Lin Chong     | Wudang Pai     |
    | Hua Rong      | Ming Jiao      |
    | Xue Baochai   | Lianshan Pai   |
    | Diao Chan     | Ming Jiao      |
    | Huang Yueying | Lianshan Pai   |
    | Xiao Qiao     | Shaolin Pai    |
    | Ma Chao       | Wudang Pai     |
    +---------------+----------------+
    23 rows in set (0.01 sec)


    不等值连接
    自然连接
    自连接


    外连接:
        左外连接:(以左表为准建立的连接,左表中每一项都要出现,右表中没有的要留空)
            FROM tb1 LEFT JOIN tb2 ON tb1.col=tb2.col
        右外连接
            FROM tb1 RIGHT JOIN tb2 ON tb1.col=tb2.col
    mysql> SELECT s.Name,c.Class FROM students AS s LEFT JOIN classes AS c ON s.ClassID=c.ClassID;
    +---------------+----------------+
    | Name          | Class          |
    +---------------+----------------+
    | Shi Zhongyu   | Emei Pai       |
    | Shi Potian    | Shaolin Pai    |
    | Xie Yanke     | Emei Pai       |
    | Ding Dian     | Wudang Pai     |
    | Yu Yutong     | QingCheng Pai  |
    | Shi Qing      | Riyue Shenjiao |
    | Xi Ren        | QingCheng Pai  |
    | Lin Daiyu     | Ming Jiao      |
    | Ren Yingying  | Lianshan Pai   |
    | Yue Lingshan  | QingCheng Pai  |
    | Yuan Chengzhi | Lianshan Pai   |
    | Wen Qingqing  | Shaolin Pai    |
    | Tian Boguang  | Emei Pai       |
    | Lu Wushuang   | QingCheng Pai  |
    | Duan Yu       | Wudang Pai     |
    | Xu Zhu        | Shaolin Pai    |
    | Lin Chong     | Wudang Pai     |
    | Hua Rong      | Ming Jiao      |
    | Xue Baochai   | Lianshan Pai   |
    | Diao Chan     | Ming Jiao      |
    | Huang Yueying | Lianshan Pai   |
    | Xiao Qiao     | Shaolin Pai    |
    | Ma Chao       | Wudang Pai     |
    | Xu Xian       | NULL           |
    | Sun Dasheng   | NULL           |
    | Mahavairocana | NULL           |
    | Mahavairocanb | NULL           |
    | Mahavairocanb | NULL           |
    | Mahavairocanc | NULL           |
    +---------------+----------------+
    29 rows in set (0.00 sec)

    mysql> SELECT s.Name,c.Class FROM students AS s RIGHT JOIN classes AS c ON s.ClassID=c.ClassID;   
    +---------------+----------------+
    | Name          | Class          |
    +---------------+----------------+
    | Shi Potian    | Shaolin Pai    |
    | Wen Qingqing  | Shaolin Pai    |
    | Xu Zhu        | Shaolin Pai    |
    | Xiao Qiao     | Shaolin Pai    |
    | Shi Zhongyu   | Emei Pai       |
    | Xie Yanke     | Emei Pai       |
    | Tian Boguang  | Emei Pai       |
    | Yu Yutong     | QingCheng Pai  |
    | Xi Ren        | QingCheng Pai  |
    | Yue Lingshan  | QingCheng Pai  |
    | Lu Wushuang   | QingCheng Pai  |
    | Ding Dian     | Wudang Pai     |
    | Duan Yu       | Wudang Pai     |
    | Lin Chong     | Wudang Pai     |
    | Ma Chao       | Wudang Pai     |
    | Shi Qing      | Riyue Shenjiao |
    | Ren Yingying  | Lianshan Pai   |
    | Yuan Chengzhi | Lianshan Pai   |
    | Xue Baochai   | Lianshan Pai   |
    | Huang Yueying | Lianshan Pai   |
    | Lin Daiyu     | Ming Jiao      |
    | Hua Rong      | Ming Jiao      |
    | Diao Chan     | Ming Jiao      |
    | NULL          | Xiaoyao Pai    |
    +---------------+----------------+
    24 rows in set (0.00 sec)

    mysql>

    子查询:在查询语句嵌套着查询语句 不建议使用子查询,
            基于某语句的查询结果再次进行的查询

            用在WHERE子句中的子查询:
                (1) 用于比较表达式中的子查询;子查询仅能返回单个值;
    mysql> SELECT Name,Age FROM students WHERE Age > (SELECT avg(Age) FROM students); #基于where的子查询;
    +---------------+-----+
    | Name          | Age |
    +---------------+-----+
    | Xie Yanke     |  53 |
    | Shi Qing      |  46 |
    | Sun Dasheng   | 100 |
    | Mahavairocana | 100 |
    | Mahavairocanb | 255 |
    | Mahavairocanb | 255 |
    +---------------+-----+
    6 rows in set (0.00 sec)
    mysql> EXPLAIN SELECT Name,Age FROM students WHERE Age > (SELECT avg(Age) FROM students)G
    *************************** 1. row ***************************
               id: 1
      select_type: PRIMARY
            table: students
             type: ALL
    possible_keys: NULL
              key: NULL
          key_len: NULL
              ref: NULL
             rows: 29
            Extra: Using where
    *************************** 2. row ***************************
               id: 2
      select_type: SUBQUERY
            table: students
             type: ALL
    possible_keys: NULL
              key: NULL
          key_len: NULL
              ref: NULL
             rows: 29
            Extra:
    2 rows in set (0.00 sec)
                (2) 用于IN中的子查询:子查询应该单键查询并返回一个或多个值从构成列表;
                    SELECT Name,Age FROM students WHERE Age IN (SELECT Age FROM teachers);
                (3) 用于EXISTS;

            用于FROM子句中的子查询;
                使用格式:SELECT tb_alias.col1,... FROM (SELECT clause) AS tb_alias WHERE Clause;
                示例:
                SELECT s.aage,s.ClassID FROM (SELECT avg(Age) AS aage,ClassID FROM students WHERE ClassID IS NOT NULL GROUP BY ClassID) AS s WHERE s.aage>30;

        联合查询:UNION 两个select 查询结果,合并为1个;
    mysql> SELECT Name,Age FROM students UNION SELECT Name,Age FROM teachers;
    +---------------+-----+
    | Name          | Age |
    +---------------+-----+
    | Shi Zhongyu   |  22 |
    | Shi Potian    |  22 |
    | Xie Yanke     |  53 |
    | Ding Dian     |  32 |
    | Yu Yutong     |  26 |
    | Shi Qing      |  46 |
    | Xi Ren        |  19 |
    | Lin Daiyu     |  17 |
    | Ren Yingying  |  20 |
    | Yue Lingshan  |  19 |
    | Yuan Chengzhi |  23 |
    | Wen Qingqing  |  19 |
    | Tian Boguang  |  33 |
    | Lu Wushuang   |  17 |
    | Duan Yu       |  19 |
    | Xu Zhu        |  21 |
    | Lin Chong     |  25 |
    | Hua Rong      |  23 |
    | Xue Baochai   |  18 |
    | Diao Chan     |  19 |
    | Huang Yueying |  22 |
    | Xiao Qiao     |  20 |
    | Ma Chao       |  23 |
    | Xu Xian       |  27 |
    | Sun Dasheng   | 100 |
    | Mahavairocana | 100 |
    | Mahavairocanb | 255 |
    | Mahavairocanc |   0 |
    | Song Jiang    |  45 |
    | Zhang Sanfeng |  94 |
    | Miejue Shitai |  77 |
    | Lin Chaoying  |  93 |
    +---------------+-----+
    32 rows in set (0.00 sec)


    mysql> EXPLAIN SELECT Name,Age FROM students UNION SELECT Name,Age FROM teachersg
    +----+--------------+------------+------+---------------+------+---------+------+------+-------+
    | id | select_type  | table      | type | possible_keys | key  | key_len | ref  | rows | Extra |
    +----+--------------+------------+------+---------------+------+---------+------+------+-------+
    |  1 | PRIMARY      | students   | ALL  | NULL          | NULL | NULL    | NULL |   29 |       |
    |  2 | UNION        | teachers   | ALL  | NULL          | NULL | NULL    | NULL |    4 |       |
    | NULL | UNION RESULT | <union1,2> | ALL  | NULL          | NULL | NULL    | NULL | NULL |       |
    +----+--------------+------------+------+---------------+------+---------+------+------+-------+
    3 rows in set (0.00 sec)


    MySQL存储引擎:

        表类型:
            CREATE TABLE ... ENGINE=

        InnoDB:
            处理大量的短期事务;
            数据存储于“表空间(table space)”中;
                (1) 所有InnoDB表的数据和索引放置于同一个表空间中;
                    表空间文件:datadir定义的目录下
                        数据文件:ibddata1, ibddata2, ...
                (2) 每个表单独使用一个表空间存储表的数据和索引;
                    innodb_file_per_table=ON

                    数据文件(存储数据和索引):tbl_name.ibd,
                    表格式定义:tbl_name.frm

            基于MVCC来支持高并发,支持所有的四个隔离级别,默认级别为REPEATABLE READ; 间隙锁防止幻读;
            使用聚集索引
            支持“自适应hash索引”
            锁粒度:行级锁

            MariaDB (XtraDB (percona))


            数据存储:表空间
            并发:MVCC, 间隙锁
            索引:聚集索引、辅助索引
            性能:预计操作、自适应hash、插入缓存区
            备份:支持热备(xtrabacup)

        MyISAM:
            支持全文索引(FULLTEXT index)、压缩、空间函数(GIS); 但不支持事务,且为表级锁;
            崩溃后无法安全恢复

            适用场景:只读(或者写较少)、表较小(可以接受长时间进行修复操作)
                Aria:crash-safe

            文件:
                tbl_name.frm: 表格式定义
                tbl_name.MYD: 数据文件
                tbl_name.MYI: 索引文件

            特性:
                加锁和并发:表级锁
                修复:手工或自动修复、但可能丢失数据
                索引:非聚集索引
                延迟更新索引键:
                压缩表

            行格式:dynamic, fixed, compressed, compact, redundent

        其它的存储引擎:
            CSV:将普通的CSV(字段通过逗号分隔)作为MySQL表使用;
            MRG_MYISAM:将多个MyISAM表合并成为一个虚拟表;
            BLACKHOLE:类似于/dev/null,不真正存储任何数据;
            MEMORY:所有数据都保存于内存中,内存表;支持hash索引;表级锁;
                临时表
            PERFORMANCE_SCHEMA:伪存储引擎;
            ARCHIVE:只支持SELECT和INSERT操作;支持行级锁和专用缓存区;
            FEDERATED:用于访问其它远程MySQL服务器一个代理,它通过创建一个到远程MySQL服务器的客户端连接,并将查询传输到远程服务器执行,而后完成数据存取;
                在MariaDB的上实现是FederatedX

            MariaDB支持的其它存储引擎:
                OQGraph
                SphinxSE
                TokuDB
                Cassandra
                CONNECT
                SQUENCE


    资源竞争:(读写锁实现)
        读锁:也称为共享锁,一个线程对资源请求施加读锁以后,其他线程可以继续读锁;
        写锁:独占锁,一个线程对资源请求施加写锁后,其他线程即不能执行读锁,也不能执行写锁;

    锁粒度:分为表级锁、行级锁,不是越精细越好;会导致系统额外消耗;故出现了锁策略,即再锁粒度即数据安全性寻求平衡的极致,没种存储引擎都可以自行实现其锁策略和锁粒度;mysql再服务器上也实现了锁,用户可以请求锁,该锁为表级别锁

    Mysql 事务:
        事务,是一组原子性的查询,或者说是一个独立的工作单元,
        
        ACID 测试:
            A;atomicity 原子性: 整个事务中的所有操作要么全部成功执行,要么全部失败后回滚;
            C:consistency,一致性:数据库总是从一个一致性状态,转到另一个一致性状态;
            I:ISOLATION: 隔离性:一个事务所做出的操作再提交之前,是不能为其他所见:
            D:durability: 持久性;一旦事务提交,其所做的修改会永久保存于数据库中;
            

        事务:
            启动事务:START TRANSACTION
                ...
                ...
            结束事务:
                (1) COMMIT:提交
                (2) ROLLBACK: 回滚


    mysql> show table statusG
    *************************** 1. row ***************************
               Name: classes
             Engine: InnoDB 查看存储引擎类型
            Version: 10
         Row_format: Compact
               Rows: 8
     Avg_row_length: 2048
        Data_length: 16384
    Max_data_length: 0
       Index_length: 0
          Data_free: 4194304
     Auto_increment: 9
        Create_time: 2018-01-03 01:17:44
        Update_time: NULL
         Check_time: NULL
          Collation: utf8_general_ci
           Checksum: NULL
     Create_options:
            Comment:
    *************************** 2. row ***************************
               Name: coc
             Engine: InnoDB
            Version: 10
         Row_format: Compact
               Rows: 14
     Avg_row_length: 1170
        Data_length: 16384
    Max_data_length: 0
       Index_length: 0
          Data_free: 4194304
     Auto_increment: 15
        Create_time: 2018-01-03 01:17:44
        Update_time: NULL
         Check_time: NULL
          Collation: utf8_general_ci
           Checksum: NULL
     Create_options:
            Comment:
    *************************** 3. row ***************************
               Name: courses
             Engine: InnoDB
            Version: 10
         Row_format: Compact
               Rows: 7
     Avg_row_length: 2340
        Data_length: 16384
    Max_data_length: 0
       Index_length: 0
          Data_free: 4194304
     Auto_increment: 8
        Create_time: 2018-01-03 01:17:44
        Update_time: NULL
         Check_time: NULL
          Collation: utf8_general_ci
           Checksum: NULL
     Create_options:
            Comment:
    *************************** 4. row ***************************
               Name: scores
             Engine: InnoDB
            Version: 10
         Row_format: Compact
               Rows: 15
     Avg_row_length: 1092
        Data_length: 16384
    Max_data_length: 0
       Index_length: 0
          Data_free: 4194304
     Auto_increment: 16
        Create_time: 2018-01-03 01:17:44
        Update_time: NULL
         Check_time: NULL
          Collation: utf8_general_ci
           Checksum: NULL
     Create_options:
            Comment:
    *************************** 5. row ***************************
               Name: students
             Engine: InnoDB
            Version: 10
         Row_format: Compact
               Rows: 25
     Avg_row_length: 655
        Data_length: 16384
    Max_data_length: 0
       Index_length: 0
          Data_free: 4194304
     Auto_increment: 26
        Create_time: 2018-01-03 01:17:44
        Update_time: NULL
         Check_time: NULL
          Collation: utf8_general_ci
           Checksum: NULL
     Create_options:
            Comment:
    *************************** 6. row ***************************
               Name: teachers
             Engine: InnoDB
            Version: 10
         Row_format: Compact
               Rows: 4
     Avg_row_length: 4096
        Data_length: 16384
    Max_data_length: 0
       Index_length: 0
          Data_free: 4194304
     Auto_increment: 5
        Create_time: 2018-01-03 01:17:44
        Update_time: NULL
         Check_time: NULL
          Collation: utf8_general_ci
           Checksum: NULL
     Create_options:
            Comment:
    *************************** 7. row ***************************
               Name: toc
             Engine: InnoDB
            Version: 10
         Row_format: Compact
               Rows: 0
     Avg_row_length: 0
        Data_length: 16384
    Max_data_length: 0
       Index_length: 0
          Data_free: 4194304
     Auto_increment: 1
        Create_time: 2018-01-03 01:17:44
        Update_time: NULL
         Check_time: NULL
          Collation: utf8_general_ci
           Checksum: NULL
     Create_options:
            Comment:
    7 rows in set (0.00 sec)

    mysql> start TRANSACTION; 启动事务;
    Query OK, 0 rows affected (0.00 sec)


    mysql> SHOW GLOBAL VARIABLES LIKE '%auto%'
        -> ;
    +-----------------------------+-------+
    | Variable_name               | Value |
    +-----------------------------+-------+
    | auto_increment_increment    | 1     |
    | auto_increment_offset       | 1     |
    | autocommit                  | ON    |
    | automatic_sp_privileges     | ON    |
    | innodb_autoextend_increment | 8     |
    | innodb_autoinc_lock_mode    | 1     |
    | sql_auto_is_null            | ON    |
    +-----------------------------+-------+
    7 rows in set (0.00 sec)

    mysql> start TRANSACTION;
    Query OK, 0 rows affected (0.00 sec)

    mysql>
    mysql> SELECT * FROM students; 查看启动前表信息
    +-------+---------------+-----+--------+---------+-----------+
    | StuID | Name          | Age | Gender | ClassID | TeacherID |
    +-------+---------------+-----+--------+---------+-----------+
    |     1 | Shi Zhongyu   |  22 | M      |       2 |         3 |
    |     2 | Shi Potian    |  22 | M      |       1 |         7 |
    |     3 | Xie Yanke     |  53 | M      |       2 |        16 |
    |     4 | Ding Dian     |  32 | M      |       4 |         4 |
    |     5 | Yu Yutong     |  26 | M      |       3 |         1 |
    |     6 | Shi Qing      |  46 | M      |       5 |      NULL |
    |     7 | Xi Ren        |  19 | F      |       3 |      NULL |
    |     8 | Lin Daiyu     |  17 | F      |       7 |      NULL |
    |     9 | Ren Yingying  |  20 | F      |       6 |      NULL |
    |    10 | Yue Lingshan  |  19 | F      |       3 |      NULL |
    |    11 | Yuan Chengzhi |  23 | M      |       6 |      NULL |
    |    12 | Wen Qingqing  |  19 | F      |       1 |      NULL |
    |    13 | Tian Boguang  |  33 | M      |       2 |      NULL |
    |    14 | Lu Wushuang   |  17 | F      |       3 |      NULL |
    |    15 | Duan Yu       |  19 | M      |       4 |      NULL |
    |    16 | Xu Zhu        |  21 | M      |       1 |      NULL |
    |    17 | Lin Chong     |  25 | M      |       4 |      NULL |
    |    18 | Hua Rong      |  23 | M      |       7 |      NULL |
    |    19 | Xue Baochai   |  18 | F      |       6 |      NULL |
    |    20 | Diao Chan     |  19 | F      |       7 |      NULL |
    |    21 | Huang Yueying |  22 | F      |       6 |      NULL |
    |    22 | Xiao Qiao     |  20 | F      |       1 |      NULL |
    |    23 | Ma Chao       |  23 | M      |       4 |      NULL |
    |    24 | Xu Xian       |  27 | M      |    NULL |      NULL |
    |    25 | Sun Dasheng   | 100 | M      |    NULL |      NULL |
    +-------+---------------+-----+--------+---------+-----------+
    25 rows in set (0.00 sec)

    mysql> DELETE FROM students WHERE StuID in (18,23);   删除18、23行表
    Query OK, 2 rows affected (0.00 sec)

    mysql> SELECT * FROM students;                     
    +-------+---------------+-----+--------+---------+-----------+
    | StuID | Name          | Age | Gender | ClassID | TeacherID |
    +-------+---------------+-----+--------+---------+-----------+
    |     1 | Shi Zhongyu   |  22 | M      |       2 |         3 |
    |     2 | Shi Potian    |  22 | M      |       1 |         7 |
    |     3 | Xie Yanke     |  53 | M      |       2 |        16 |
    |     4 | Ding Dian     |  32 | M      |       4 |         4 |
    |     5 | Yu Yutong     |  26 | M      |       3 |         1 |
    |     6 | Shi Qing      |  46 | M      |       5 |      NULL |
    |     7 | Xi Ren        |  19 | F      |       3 |      NULL |
    |     8 | Lin Daiyu     |  17 | F      |       7 |      NULL |
    |     9 | Ren Yingying  |  20 | F      |       6 |      NULL |
    |    10 | Yue Lingshan  |  19 | F      |       3 |      NULL |
    |    11 | Yuan Chengzhi |  23 | M      |       6 |      NULL |
    |    12 | Wen Qingqing  |  19 | F      |       1 |      NULL |
    |    13 | Tian Boguang  |  33 | M      |       2 |      NULL |
    |    14 | Lu Wushuang   |  17 | F      |       3 |      NULL |
    |    15 | Duan Yu       |  19 | M      |       4 |      NULL |
    |    16 | Xu Zhu        |  21 | M      |       1 |      NULL |
    |    17 | Lin Chong     |  25 | M      |       4 |      NULL |
    |    19 | Xue Baochai   |  18 | F      |       6 |      NULL |
    |    20 | Diao Chan     |  19 | F      |       7 |      NULL |
    |    21 | Huang Yueying |  22 | F      |       6 |      NULL |
    |    22 | Xiao Qiao     |  20 | F      |       1 |      NULL |
    |    24 | Xu Xian       |  27 | M      |    NULL |      NULL |
    |    25 | Sun Dasheng   | 100 | M      |    NULL |      NULL |
    +-------+---------------+-----+--------+---------+-----------+
    23 rows in set (0.00 sec)

    mysql> ROLLBACK; 回滚
    Query OK, 0 rows affected (0.02 sec)

    mysql> SELECT * FROM students; 查看回滚后内容
    +-------+---------------+-----+--------+---------+-----------+
    | StuID | Name          | Age | Gender | ClassID | TeacherID |
    +-------+---------------+-----+--------+---------+-----------+
    |     1 | Shi Zhongyu   |  22 | M      |       2 |         3 |
    |     2 | Shi Potian    |  22 | M      |       1 |         7 |
    |     3 | Xie Yanke     |  53 | M      |       2 |        16 |
    |     4 | Ding Dian     |  32 | M      |       4 |         4 |
    |     5 | Yu Yutong     |  26 | M      |       3 |         1 |
    |     6 | Shi Qing      |  46 | M      |       5 |      NULL |
    |     7 | Xi Ren        |  19 | F      |       3 |      NULL |
    |     8 | Lin Daiyu     |  17 | F      |       7 |      NULL |
    |     9 | Ren Yingying  |  20 | F      |       6 |      NULL |
    |    10 | Yue Lingshan  |  19 | F      |       3 |      NULL |
    |    11 | Yuan Chengzhi |  23 | M      |       6 |      NULL |
    |    12 | Wen Qingqing  |  19 | F      |       1 |      NULL |
    |    13 | Tian Boguang  |  33 | M      |       2 |      NULL |
    |    14 | Lu Wushuang   |  17 | F      |       3 |      NULL |
    |    15 | Duan Yu       |  19 | M      |       4 |      NULL |
    |    16 | Xu Zhu        |  21 | M      |       1 |      NULL |
    |    17 | Lin Chong     |  25 | M      |       4 |      NULL |
    |    18 | Hua Rong      |  23 | M      |       7 |      NULL |
    |    19 | Xue Baochai   |  18 | F      |       6 |      NULL |
    |    20 | Diao Chan     |  19 | F      |       7 |      NULL |
    |    21 | Huang Yueying |  22 | F      |       6 |      NULL |
    |    22 | Xiao Qiao     |  20 | F      |       1 |      NULL |
    |    23 | Ma Chao       |  23 | M      |       4 |      NULL |
    |    24 | Xu Xian       |  27 | M      |    NULL |      NULL |
    |    25 | Sun Dasheng   | 100 | M      |    NULL |      NULL |
    +-------+---------------+-----+--------+---------+-----------+
    25 rows in set (0.00 sec)


            注意:只有事务型存储引擎方能支持此类操作;

            建议:显式请求和提交事务 ,而不要使用“自动提交”功能;
                autocommit={1|0}

            事务支持savepoint  启动一个事务支持很多操作,如一个大事务,由多条语句执行,如果中间由一部操作错,如果没有savepoint,则需要全部回滚到起始处;
                SAVEPOINT identifier
                ROLLBACK [WORK] TO [SAVEPOINT] identifier
                RELEASE SAVEPOINT identifier
    mysql> START TRANSACTION;
    Query OK, 0 rows affected (0.00 sec)

    mysql> SELECT * FROM students;
    +-------+---------------+-----+--------+---------+-----------+
    | StuID | Name          | Age | Gender | ClassID | TeacherID |
    +-------+---------------+-----+--------+---------+-----------+
    |     1 | Shi Zhongyu   |  22 | M      |       2 |         3 |
    |     2 | Shi Potian    |  22 | M      |       1 |         7 |
    |     3 | Xie Yanke     |  53 | M      |       2 |        16 |
    |     4 | Ding Dian     |  32 | M      |       4 |         4 |
    |     5 | Yu Yutong     |  26 | M      |       3 |         1 |
    |     6 | Shi Qing      |  46 | M      |       5 |      NULL |
    |     7 | Xi Ren        |  19 | F      |       3 |      NULL |
    |     8 | Lin Daiyu     |  17 | F      |       7 |      NULL |
    |     9 | Ren Yingying  |  20 | F      |       6 |      NULL |
    |    10 | Yue Lingshan  |  19 | F      |       3 |      NULL |
    |    11 | Yuan Chengzhi |  23 | M      |       6 |      NULL |
    |    12 | Wen Qingqing  |  19 | F      |       1 |      NULL |
    |    13 | Tian Boguang  |  33 | M      |       2 |      NULL |
    |    14 | Lu Wushuang   |  17 | F      |       3 |      NULL |
    |    15 | Duan Yu       |  19 | M      |       4 |      NULL |
    |    16 | Xu Zhu        |  21 | M      |       1 |      NULL |
    |    17 | Lin Chong     |  25 | M      |       4 |      NULL |
    |    18 | Hua Rong      |  23 | M      |       7 |      NULL |
    |    19 | Xue Baochai   |  18 | F      |       6 |      NULL |
    |    20 | Diao Chan     |  19 | F      |       7 |      NULL |
    |    21 | Huang Yueying |  22 | F      |       6 |      NULL |
    |    22 | Xiao Qiao     |  20 | F      |       1 |      NULL |
    |    23 | Ma Chao       |  23 | M      |       4 |      NULL |
    |    24 | Xu Xian       |  27 | M      |    NULL |      NULL |
    |    25 | Sun Dasheng   | 100 | M      |    NULL |      NULL |
    +-------+---------------+-----+--------+---------+-----------+
    25 rows in set (0.00 sec)

    mysql> DELETE FROM students WHERE StuID in (18);   
    Query OK, 1 row affected (0.00 sec)

    mysql> DELETE FROM students WHERE StuID in (23);
    Query OK, 1 row affected (0.00 sec)

    mysql> SAVEPOINT sp1;        
    Query OK, 0 rows affected (0.00 sec)

    mysql> DELETE FROM students WHERE StuID in (25);
    Query OK, 1 row affected (0.00 sec)

    mysql> SAVEPOINT sp2;                           
    Query OK, 0 rows affected (0.00 sec)

    mysql> UPDATE student SET Age=43 WHERE StuID=13;
    ERROR 1146 (42S02): Table 'hellodb.student' doesn't exist
    mysql> UPDATE students SET Age=43 WHERE StuID=13;
    Query OK, 1 row affected (0.00 sec)
    Rows matched: 1  Changed: 1  Warnings: 0

    mysql> SELECT * FROM students;                   
    +-------+---------------+-----+--------+---------+-----------+
    | StuID | Name          | Age | Gender | ClassID | TeacherID |
    +-------+---------------+-----+--------+---------+-----------+
    |     1 | Shi Zhongyu   |  22 | M      |       2 |         3 |
    |     2 | Shi Potian    |  22 | M      |       1 |         7 |
    |     3 | Xie Yanke     |  53 | M      |       2 |        16 |
    |     4 | Ding Dian     |  32 | M      |       4 |         4 |
    |     5 | Yu Yutong     |  26 | M      |       3 |         1 |
    |     6 | Shi Qing      |  46 | M      |       5 |      NULL |
    |     7 | Xi Ren        |  19 | F      |       3 |      NULL |
    |     8 | Lin Daiyu     |  17 | F      |       7 |      NULL |
    |     9 | Ren Yingying  |  20 | F      |       6 |      NULL |
    |    10 | Yue Lingshan  |  19 | F      |       3 |      NULL |
    |    11 | Yuan Chengzhi |  23 | M      |       6 |      NULL |
    |    12 | Wen Qingqing  |  19 | F      |       1 |      NULL |
    |    13 | Tian Boguang  |  43 | M      |       2 |      NULL |
    |    14 | Lu Wushuang   |  17 | F      |       3 |      NULL |
    |    15 | Duan Yu       |  19 | M      |       4 |      NULL |
    |    16 | Xu Zhu        |  21 | M      |       1 |      NULL |
    |    17 | Lin Chong     |  25 | M      |       4 |      NULL |
    |    19 | Xue Baochai   |  18 | F      |       6 |      NULL |
    |    20 | Diao Chan     |  19 | F      |       7 |      NULL |
    |    21 | Huang Yueying |  22 | F      |       6 |      NULL |
    |    22 | Xiao Qiao     |  20 | F      |       1 |      NULL |
    |    24 | Xu Xian       |  27 | M      |    NULL |      NULL |
    +-------+---------------+-----+--------+---------+-----------+
    22 rows in set (0.00 sec)

    mysql> ROLLBACK TO sp2;
    Query OK, 0 rows affected (0.00 sec)

    mysql> SELECT * FROM students;
    +-------+---------------+-----+--------+---------+-----------+
    | StuID | Name          | Age | Gender | ClassID | TeacherID |
    +-------+---------------+-----+--------+---------+-----------+
    |     1 | Shi Zhongyu   |  22 | M      |       2 |         3 |
    |     2 | Shi Potian    |  22 | M      |       1 |         7 |
    |     3 | Xie Yanke     |  53 | M      |       2 |        16 |
    |     4 | Ding Dian     |  32 | M      |       4 |         4 |
    |     5 | Yu Yutong     |  26 | M      |       3 |         1 |
    |     6 | Shi Qing      |  46 | M      |       5 |      NULL |
    |     7 | Xi Ren        |  19 | F      |       3 |      NULL |
    |     8 | Lin Daiyu     |  17 | F      |       7 |      NULL |
    |     9 | Ren Yingying  |  20 | F      |       6 |      NULL |
    |    10 | Yue Lingshan  |  19 | F      |       3 |      NULL |
    |    11 | Yuan Chengzhi |  23 | M      |       6 |      NULL |
    |    12 | Wen Qingqing  |  19 | F      |       1 |      NULL |
    |    13 | Tian Boguang  |  33 | M      |       2 |      NULL |
    |    14 | Lu Wushuang   |  17 | F      |       3 |      NULL |
    |    15 | Duan Yu       |  19 | M      |       4 |      NULL |
    |    16 | Xu Zhu        |  21 | M      |       1 |      NULL |
    |    17 | Lin Chong     |  25 | M      |       4 |      NULL |
    |    19 | Xue Baochai   |  18 | F      |       6 |      NULL |
    |    20 | Diao Chan     |  19 | F      |       7 |      NULL |
    |    21 | Huang Yueying |  22 | F      |       6 |      NULL |
    |    22 | Xiao Qiao     |  20 | F      |       1 |      NULL |
    |    24 | Xu Xian       |  27 | M      |    NULL |      NULL |
    +-------+---------------+-----+--------+---------+-----------+
    22 rows in set (0.00 sec)

    mysql>


            事务隔离级别:
                READ UNCOMMITTED (读未提交) 存在问题 123
                READ COMMITTED (读提交) 存在问题23
                REPEATABLE READ (可重读) 存在问题3
                SERIALIZABILE (可串行化) 存在问题4

                可能存在问题:
                   1 脏读; 首次读取存在,再次读取时候发现数据不在。读别人未提交的数据;
                   2 不可重复读:读取提交前,是一个值,提交后又是一个值,两次读到数据不一致;
                   3 幻读:
                   4 加锁读;

                tx_isolation:服务器变量,默认为REPEATABLE-READ;可在SESSION级进行修改;

                SET tx_isolation=''
                    READ-UNCOMMITTED
                    READ-COMMITTED
                    REPEATABLE-READ
                    SERIALIZABLE

                MVCC: 多版本并发控制


            死锁:
                两个或多个事务在同一资源相互占用,并请求锁定对方占用的资源的状态;

            事务日志:
                事务日志的写入类型为“追加”,因此其操作为“顺序IO”;此日志通常也被称为“预写式日志(write ahead logging)”;

                     innodb_log_file_size
                    innodb_log_files_in_group
                    innodb_log_group_home_dir    
            慢查询:长时间得不到答复;




    四、编译安装

    编译安装MySQL-5.5
    
    cmake的重要特性之一是其独立于源码(out-of-source)的编译功能,即编译工作可以在另一个指定的目录中而非源码目录中进行,这可以保证源码目录不受任何一次编译的影响,因此在同一个源码树上可以进行多次不同的编译,如针对于不同平台编译。
    
    编译安装MySQL-5.5
    
    
    一、安装cmake
    
    跨平台编译器
    
    # tar xf cmake-2.8.8.tar.gz
    # cd cmake-2.8.8
    # ./bootstrap
    # make 
    # make install
    
    
    
    二、编译安装mysql-5.5.33
    
    1、使用cmake编译mysql-5.5
    cmake指定编译选项的方式不同于make,其实现方式对比如下:
    ./configure           cmake .
    ./configure --help    cmake . -LH or ccmake .
    
    
    
    指定安装文件的安装路径时常用的选项:
    -DCMAKE_INSTALL_PREFIX=/usr/local/mysql
    -DMYSQL_DATADIR=/data/mysql
    -DSYSCONFDIR=/etc
    
    
    默认编译的存储引擎包括:csv、myisam、myisammrg和heap。若要安装其它存储引擎,可以使用类似如下编译选项:
    -DWITH_INNOBASE_STORAGE_ENGINE=1
    -DWITH_ARCHIVE_STORAGE_ENGINE=1
    -DWITH_BLACKHOLE_STORAGE_ENGINE=1
    -DWITH_FEDERATED_STORAGE_ENGINE=1
    
    若要明确指定不编译某存储引擎,可以使用类似如下的选项:
    -DWITHOUT_<ENGINE>_STORAGE_ENGINE=1
    比如:
    -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1
    -DWITHOUT_FEDERATED_STORAGE_ENGINE=1
    -DWITHOUT_PARTITION_STORAGE_ENGINE=1
    
    如若要编译进其它功能,如SSL等,则可使用类似如下选项来实现编译时使用某库或不使用某库:
    -DWITH_READLINE=1
    -DWITH_SSL=system
    -DWITH_ZLIB=system
    -DWITH_LIBWRAP=0
    
    其它常用的选项:
    -DMYSQL_TCP_PORT=3306
    -DMYSQL_UNIX_ADDR=/tmp/mysql.sock
    -DENABLED_LOCAL_INFILE=1
    -DEXTRA_CHARSETS=all
    -DDEFAULT_CHARSET=utf8
    -DDEFAULT_COLLATION=utf8_general_ci
    -DWITH_DEBUG=0
    -DENABLE_PROFILING=1
    
    
    
    如果想清理此前的编译所生成的文件,则需要使用如下命令:
    make clean
    rm CMakeCache.txt
    
    
    2、编译安装
    
    # groupadd -r mysql
    # useradd -g mysql -r -d /mydata/data mysql
    # tar xf mysql-5.5.33.tar.gz 
    # cd mysql-5.5.33
    # cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql 
              -DMYSQL_DATADIR=/mydata/data 
              -DSYSCONFDIR=/etc 
              -DWITH_INNOBASE_STORAGE_ENGINE=1 
              -DWITH_ARCHIVE_STORAGE_ENGINE=1 
              -DWITH_BLACKHOLE_STORAGE_ENGINE=1 
              -DWITH_READLINE=1 
              -DWITH_SSL=system 
              -DWITH_ZLIB=system 
              -DWITH_LIBWRAP=0 
              -DMYSQL_UNIX_ADDR=/tmp/mysql.sock 
              -DDEFAULT_CHARSET=utf8 
              -DDEFAULT_COLLATION=utf8_general_ci
    # make 
    # make install
    
    
    # cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/mydata/data -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_ZLIB=system -DWITH_LIBWRAP=0 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci

    五、小技巧

    1、命令自动补全

    vi /etc/my.cnf
    
    [mysql]
    
    #no-auto-rehash
    
    auto-rehash         #添加auto-rehash
    
    即将[mysql]中的no-auto-rehash改为auto-rehash
    
    再次登陆MySQL就可以自动补全了。
    

    待补充

  • 相关阅读:
    1150 Travelling Salesman Problem(25 分)
    poj 2408 Anagram Groups
    guava学习--ratelimiter
    guava学习--Objects
    guava学习--ComparisonChain
    guava学习--Preconditions
    guava学习--Function、Predicate
    guava学习--FutureFallback
    guava学习--FutureCallback
    guava学习--SettableFuture
  • 原文地址:https://www.cnblogs.com/Mahavairocana/p/8166062.html
Copyright © 2011-2022 走看看