mysql 浅谈

来源:互联网 发布:hash 源码 编辑:程序博客网 时间:2024/06/17 01:34

1. 主键

    主键不能重复,是唯一索引的一种,且必须定义为"PRIMARY KEY",一个表中只能有一个主键

    示例:建表时------   PRIMARY KEY (`id`)

                更新主键------ ALTER table "表名" ADD  PRIMARY KEY('....')


2.  外键

     定义:如果一个实体的某个字段指向另一个实体的主键,就称为外键。被指向的实体,称之为主实体(主表),也叫做父实体(父表)。

                 负责指向的实体,称之为实体(从表),也叫做子实体(子表)

                 

     作用:用于约束处于关系内的实体,增加子表记录时,是否有与之对应的父表记录,如果主表没有相关的记录,从表不能记录。只有先插入主表记录才能插入从表记录。

   

3. mysql 连接(left join,right join, inner join, full join)

     A   |   B                 

      -        -

      1      3

      2      4

      3      5

      4      6


     Inner join

         select * from a INNER JOIN b on a.a = b.b;

         select a.*,b.* from a,b where a.a = b.b;

         a  |   b

         -- +  --

         3  |   3

         4  |   4

         其实就是显示两个表的交集


    Left join

        select * from a LEFT JOIN b on a.a = b.b;

        a   |   b

        --  +  --

        1   |   null

        2   |   null

        3   |   3

        4   |   4


    Right join

        select * from a RIGHT JOIN b on a.a = b.b

        a    |   b

        --   +  --

       3    |    3

       4    |    4

    null  |    5

    null  |    6 


    Full join

         select * from a FULL JOIN b on a.a = b.b;

         a  |   b

        --- + ---

        1   |  null

        2   |  null

        3   |  3

        4   |  4

    null  |   5

    null  |   6

         mysql 并不直接支持full join,但是可以用以下方式实现:

            select * from a left join b on a.a = b.b UNION select * from a right join b on a.a = b.b;

            a   |    b

           --   +   --

           3    |    3

           4    |    4

           1    |    null

           2    |    null

        null   |    5

        null   |    6


4. 事务

    **  在mysql 中只用使用了Innodb 数据库引擎的数据库或表才支持事务;

    **  事务处理可以用来维护数据库的完整性,保证成批的SQL语句要么全部执行,要么全部不执行

    一般来说,事务必须满足4个条件(ACID) : Atomicity(原子性),Consistency(稳定性),Isolation(隔离性),Durability(可靠性)

             1. 事务的原子性: 一组事务,要么成功,要么失败,回滚。

             2. 稳定性:有非法数据(外键约束之类),事务撤回;

             3. 隔离性:事务的独立运行,一个事务处理后的结果,影响的其他事务,那么其他事务会撤回。事务的%100隔离,需要牺牲速度;

             4. 可靠性:软硬件崩溃后,InnoDB数据表驱动会利用日志文件重构修改,可靠性和高速度不可兼得。


5. 索引

    mysql 索引的建立对于mysql的高效运行很重要的,索引可以大大提高mysql的检索速度。

   

原创粉丝点击