• MySQL的基础学习


    1、Mysql主要存储引擎:MyISAM,InnoDB和MEMORY

    (1)MyISAM

    它不支持事务,也不支持外键,尤其是访问速度快,对事务完整性没有要求或者以SELECT、INSERT为主的应用基本都可以使用这个引擎来创建表。

    唯一支持full text search index。

    支持静态(固定长度)表,动态表和压缩表这3种不同的存储格式。

    (2)InnoDB

    InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是对比MyISAM的存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。

    自动增长列:对于InnoDB表,自动增长列必须是索引。如果是组合索引,也必须是组合索引的第一列,但是对于MyISAM表,自动增长列可以是组合索引的其他列,这样插入记录后,自动增长列是按照组合索引到前面几列排序后递增的。

    外键约束: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;打开约束。

    (3)MEMORY

    memory使用存在内存中的内容来创建表。每个MEMORY表实际对应一个磁盘文件,格式是.frm。MEMORY类型的表访问非常快,因为它到数据是放在内存中的,并且默认使用HASH索引,但是一旦服务器关闭,表中的数据就会丢失,但表还会继续存在。

    默认情况下,memory数据表使用散列索引,利用这种索引进行“相等比较”非常快,但是对“范围比较”的速度就慢多了。因此,散列索引值适合使用在"="和"<=>"的操作符中,不适合使用在"<"或">"操作符中,也同样不适合用在order by字句里。如果确实要使用"<"或">"或betwen操作符,可以使用btree索引来加快速度。

    create table tab_memory engine=memory select id,name,age,addr from man order by id;

    create index mem_hash using hash on tab_memory(city_id);

    2、创建在mysql数据库服务器实例上,一个实例上可以创建多个数据库。

    3、 索引缺点:.降低更新表的速度,如对表进行insert、update和delete。

    建立索引会占用磁盘空间的索引文件。

    索引不超过三层,三层就需要四次IO.

    索引是a+b+c,检索bc,跳过方式,依旧可以用到索引。

    全文索引,只支持英文内容。

    4、常用约束

     

    主键约束:唯一,不可为空,一个表只有一个主键。当创建主键的约束时,系统默认会在所在的列和列组合上建立对应的唯一索引。

    unique index 唯一,但是可以为空,一个表可以有多个。

    在建立外键时,会自动建立索引。

    5、存储过程与函数

    存储程序和函数是用CREATE PROCEDURE和CREATE FUNCTION语句创建的子程序。

    存储过程是集中的,无法用存储过程去实现分布式。

    6、触发器

    触发程序是与表有关的命名数据库对象,当表上出现特定事件时,将激活该对象。

    CREATE TRIGGER trigger_name  trigger_time  trigger_event

               ON tbl_name  FOR EACH ROW  trigger_stmt

    // FOR EACH ROW 一条一条的进行trigger_stmt,效率很低。一般不常用触发器。

  • 相关阅读:
    清除浮动的原理剖析
    修正IE6不支持position:fixed的bug(转)
    Callbacks vs Events
    垂直属性
    jQuery的事件模型
    Dean-Edward的事件系统实现
    简单的导航栏实现
    弹窗层效果的实现(非jQuery实现)
    rmdir
    mkdir
  • 原文地址:https://www.cnblogs.com/llphhl/p/9472476.html
Copyright © 2020-2023  润新知