mysql 存储引擎,字段类型,索引介绍与创建

一:常用的存储引擎:
1,myisam:  
  我建立了一个MyISAM引擎的tb_Demo表,那么就会生成以下三个文件:
     1>tb_demo.frm,存储表定义;
     2>tb_demo.MYD,存储数据;
     3>tb_demo.MYI, 存储索引。
   特点: 查询快,写入慢,支持表锁,支持符合全文索引
    适合管理邮件,web服务器的日志数据,选择密集结构表的时候用,插入密集结构
   表的时候用
2,innodb
     1》更新密集的表。InnoDB存储引擎特别适合处理多重并发的更新请求。
     2》事务。InnoDB存储引擎是支持事务的标准MySQL存储引擎。
     3》自动灾难恢复。与其它存储引擎不同,InnoDB表能够自动从灾难中恢复。
     4》外键约束。MySQL支持外键的存储引擎只有InnoDB。
     5》支持自动增加列AUTO_INCREMENT属性。
  一般来说,如果需要事务支持,并且有较高的并发读取频率,InnoDB是不错的选择。
   特点:写入快,查询慢,自动灾难恢复,安全性高,合适大数据量,并发高,支持外键,行锁,
   支付复合索引,更新密集表,支持自动增加

二:表必须的四个字段字段:
    id   insert_time   update_time  status
三,5大索引
    1》索引:就像书的目录一样
    2》什么时候用:
    3》原理:索引会存上相应的指针,当查询某个数据的时候,他就会同过指针跳转到某个数据模块
    4》好处:提高了查询速度
    5》缺点:
      1--占用硬盘,会存上指针指向对应的内容
      2--对数据增删改受影响

   6》五大索引:
      1>主键 primary  自带索引
      2>唯一 unique 手机号,用户昵称,
      3>普通  用户昵称
      4>复合(innodb支持) 靠左原则,多字段  例如:name(姓名),age(年龄) ,address(地址) select * from table       where  
      ALTER TABLE mytable ADD INDEX name_age_address (name(10),age,,address);
      相当于建立了(name,age,address;name,address;name)三种查询类型
      SELECT * FROM mytable WHREE name="admin" AND  age='18' and  address="郑州"
      SELECT * FROM mytable WHREE name="admin" AND address="郑州"
      SELECT * FROM mytable WHREE name="admin"
    5,全文(myisam支持,innodb 5.6以后支持)文章
四,表的字段类型
  //整形
   1,tinyint     1字节  有子符127  ,无字符255
   2,smallint          2字节  有子符32767  无字符65535
   3,mediumint    3字节  有子符8388607          无字符16777215
   4,int        4字节   (11位数,十亿级别,如果有符号,最大存2190000000,没符号4200000000)
   5,bigint       8字节  (19位数,亿亿级别)       
   8,float                 4字节
   9,double              8字节
  //字符串
   10,char    1字节   固定长度个字符
   11,varchar        2字节  默认255,最大65535个字符
   12,tinytext          可变长度  最大255个字符
   13,text        可变长度,最大65535个字符
   14,mediumtext    可变长度,最大2的24次-1个字符
   15,longtext          可变长度,最多2的32次方-1个字符
 //时间格式
   data         3个字节  日期,格式:2014-09-18
   time                      3个字节  时间  格式:08:48:15
   datetime    8个字节  日期时间 格式 2014-09-18 08:48:15
   timestamp             4个字节  自动存储记录修改的时间
   year        1个字节   年份
五,一些常用字段用到什么数据类型
    1>user_name    varchar        
    2>tel         bigint        //占8个字节
    3>sex        char(1)/tinyint/enum    //占1个字节
    4>card        varchar(16)    //占32个字节
    5>status    tinyint        //占1个字节
    6>age        tinyint        //占1个字节
    7>is_hot    tinyint        //占1个字节
    8>时间戳    int        //占4个字节
    9>时间格式            datetime        //占8个字节
六:几个常用存储引擎的特点

    下面我们重点介绍几种常用的存储引擎并对比各个存储引擎之间的区别和推荐使用方式。

    特点    Myisam   BDB    Memory    InnoDB  Archive
    存储限制  没有    没有    有      64TB   没有
    事务安全        支持             支持   
    锁机制  表锁   页锁       表锁      行锁    行锁
    B树索引    支持   支持     支持    支持   
    哈希索引             支持    支持   
    全文索引   支持            
    集群索引                     支持   
    数据缓存             支持     支持   
    索引缓存   支持                支持         支持   
    数据可压缩  支持                                支持
    空间使用     低    低     N/A       高       非常低
   内存使用    低    低     中等       高        低
   批量插入的速度  高   高    高       低      非常高
   支持外键                  支持  
七:创建索引
  1>查看所有的索引    show index from user;
  2>删除索引    drop index 字段  on table
  3>创建索引两种方式:
      一命令操作:
           1》create 索引类型  index 字段 on 表名(字段(20));
           2》alter table  表名 add 索引类型  字段 (`字段`);
      二可视化工具:navicat操作
  4>普通索引:
      1》alter table user  add index u_name ( u_name(20) );
      2》create index u_name on user(u_name);
  5>符合索引
        alter table user add index name_age_addr (name(10),u_age,u_addr);
        select * from user where name='刘瑞' and age='19' and u_addr='河北省衡水市';
        drop index  name_age_addr  on user;
  6>唯一索引
       create unique index tel on ce1(tel(10));
       alter table user add unique u_time(u_time)
  7>查看select 语句有多少索引
     explain select * from ce1 where user='王浩' and age='18';

八:表建成之后要用三范式来检查

   1TB = 1024GB
  1GB = 1024MB
  1MB = 1024KB
  1KB = 1024Byte(字节)
  1汉字 = 2字节

原文地址:https://www.cnblogs.com/taikongliu/p/6710325.html