??mysql5.5之前默认存储引擎是MyISAM,5.5之后改为InnoDB。若要修改默认引擎,可以修改配置文件中的default-storage-engine
。可以通过show engines
来查看当前数据库支持的引擎。使用select engine from information_schema.engines where transactions = ‘yes‘;
来查看哪些引擎支持事务。在创建表到时候通过engine=...或type=...
来指定所要使用到引擎。
每个MyISAM在磁盘上都有3个文件,其文件名都与表名相同,但扩展名是:
MyISAM支持3种不同的存储格式:
??在静态表中,如果需要保存的内容后面本来就带有空格,那么在返回结果的时候会去掉公共的。
??在动态表中,记录不固定,优点是占用空间相对比较少,缺点是频繁的更新和删除记录会产生碎片,需要定期执行optimize table 来改善性能。
??在压缩表中,由myisampack工具创建,占据非常小的磁盘空间。因为每个记录都被单独压缩的。
last_insert_id()
查询当前线程最后插入记录使用的值。可以通过alert table *** auto_increment=n;
语句强制设置自动增长值。支持外键
的存储引擎只有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;
打开约束。InnoDB存储表和索引有如下两种方式:
仍一张表作为总结:
原文地址:http://blog.csdn.net/pursuing0my0dream/article/details/44905973