• 技术文章 >数据库 >mysql教程

    MySQL数据库基础知识点储备(整理总结)

    长期闲置长期闲置2022-03-02 17:44:37转载496
    本篇文章给大家带来了关于mysql数据库的相关知识,主要整理了数据库基础的一下知识点,包括索引、语法顺序、执行顺序、存储过程等等相关问题,希望对大家有帮助。

    推荐学习:mysql教程

    一、数据库

    1.1 事务

    1.1.1 事务四个特性(ACID)

    SQL标准定义了四种隔离性:(下面隔离性是由低到高,并发性由高到低)

    总结:四个级别逐渐增强,每个级别解决问题,事务级别越高,性能越差。

    隔离级别            脏读  不可重复读  幻读
    未提交读(read uncommitted) 可能  可能     可能
    已提交读(read committed) 不可能  可能     可能
    可重复读(repeatable read) 不可能  不可能     可能
    可串行化(serializable)   不可能  不可能    不可能

    总结:未提交读会造成脏读—>已提交读解决脏读,但会造成不可重复读—>可重复读解决读取结果前后不一致的情况,但是造成幻读(以前没有,现在有)—>可串行化解决了幻读,但是增加很多范围锁,可能会造成锁超时;

    1.1.2 脏读、不可重复读和幻读

    二、索引

    2.1 索引特点

    1. 可以加快数据库检索速度;
    2. 只能创建在表上,不能创建到视图上;
    3. 既可以直接创建又可以间接创建;
    4. 可以在优化隐藏中使用索引;
    5. 使用查询处理器执行sql语句,在一个表上,一次只能使用一个索引。

    2.1.1 索引优点

    1. 创建唯一性索引,保证数据库表中每一行数据的唯一性;
    2. 大大加快数据检索速度,这是创建索引的最主要原因;
    3. 加速数据库表之间的链接,特别是在实现数据库参考完整性方面特别有意义;
    4. 在使用分组和排序子句进行检索时,同样可以显著减少查询中分组和排序的时间;
    5. 通过使用索引,可以在查询中使用优化隐藏器,提高系统性能;

    2.1.2 索引缺点

    1. 创建和维护索引耗费时间,这种时间随着数量的增加而增加;
    2. 索引需要占用物理空间,除了数据表占用数据空间之外,每一个索引还要占用一定的物理空间,如果建立聚集索引,那么需要的空间就会更大;
    3. 当对表中的数据进行增加、删除和修改的时候,索引也需要维护,降低数据维护速度;

    2.2 索引分类

    (1)普通索引(它没有任何限制。)
    (2)唯一性索引(索引列的值必须唯一,但允许有空值。)
    (3)主键索引(一种特殊的唯一索引,不允许有空值。一般是在建表的时候同时创建主键索引。)
    (4)组合索引
    (5)聚集索引 按照每张表的主键构造一颗B+树,并且叶节点中存放着整张表的行记录数据,因此也让聚集索引的叶节点成为数据页。
    (6)非聚集索引(辅助索引)(页节点不存放一整行记录)。

    2.3 索引失效

    (1)如果条件中有or,即使其中有条件带索引,也不会使用(尽量少用or);
    (2)Like查询是以%开头,例如SELECT * FROM mytable WHEREt Name like’%admin’;
    (3)如果列类型是字符串,那一定要在条件中使用引号引起来,否则不会使用索引;

    2.4 各引擎支持索引

    MyISAMInnoDB,Memonry三个常用MySQL引擎类型比较:
    索引   MyISAM索引   InnoDB索引   Memonry索引
    B-tree索引  支持      支持      支持
    Hash索引   不支持     不支持     支持
    R-Tree索引  支持     不支持     不支持
    Full-text索引 不支持    暂不支持     不支持

    2.5 数据库中的索引结构

    因为在使用二叉树的时候,由于二叉树的深度过大而造成I/O读写过于频繁,进而导致查询效率低下。因此采用多路树结构,B树的各种操作能使B树保持较低的高度。

    B树又叫平衡多路查找树,一棵m阶的B树特性如下:

    三、Mysql语法顺序

    即当sql中存在下面的关键字时,它们要保持这样的顺序:

    select[distinct]、from、join(如left join)、on、where、group
    by、having、union、order by、limit;

    四、Mysql执行顺序

    即在执行时sql按照下面的顺序进行执行:

    from、on、join、where、group by、having、select、distinct、union、order by
     group by要和聚合函数一起使用,

    例如:

    select a.Customer,sum(a.OrderPrice) from orders a where a.Customer=’Bush’ or a.Customer = ‘Adams’ group by a.Customer;

    实现多表查询(内连接)

    select u.uname,a.addr from lm_user u inner join lm_addr a on u.uid = a.uid;

    使用select from where同样可以实现

    select u.uname,a.addr from lm_user u, lm_addr a where u.uid = a.uid;

    五、存储过程

    delimiter $$
    create procedure procedure_bill()
    comment '查询所有销售情况'
    begin
    select billid, tx_time, amt from lm_bill;
    end $$
    delimiter ;

    调用存储过程

    call procedure_bill();

    查看存储过程

    show procedure status like 'procedure_bill';

    六、建立多对多数据表关系

    在数据库中,如果两个表的之间的关系为多对多的关系,如:“学生表和课程表”,一个学生可以选多门课,一门课也可以被多个学生选;根据数据库的设计原则,应当形成第三张关联表。
    步骤1:创建三张数据表Student ,Course,Stu_Cour

    /**学生表*/
    CREATE TABLE Student (
    stu_id INT AUTO_INCREMENT,
    NAME VARCHAR(30),
    age INT ,
    class VARCHAR(50),
    address VARCHAR(100),
    PRIMARY KEY(stu_id)
    )
    /*学生课程表*/
    CREATE TABLE Course(
    cour_id INT AUTO_INCREMENT,
    NAME VARCHAR(50),
    CODE VARCHAR(30),
    PRIMARY KEY(cour_id)
    )
    /**学生课程关联表*/
    CREATE TABLE Stu_Cour(
    sc_id INT AUTO_INCREMENT,
    stu_id INT ,
    cour_id INT,
    PRIMARY KEY(sc_id)
    )

    第二步:为Stu_Cour关联表添加外键

    /*添加外键约束*/
    ALTER TABLE Stu_Cour ADD CONSTRAINT stu_FK1 FOREIGN KEY(stu_id) REFERENCES Student(stu_id);
    ALTER TABLE Stu_Cour ADD CONSTRAINT cour_FK2 FOREIGN KEY(cour_id) REFERENCES Course(cour_id);

    完成创建!

    例: alter table tb_active add constraint FK_ID foreign key(user_id) REFERENCES tb_user(id);

    七、数据库引擎(存储引擎)

    当你访问数据库时,不管是手工访问,还是程序访问,都不是直接读写数据库文件,而是通过数据库引擎去访问数据库文件。

    以关系型数据库为例,发SQL语句给数据库引擎,数据库引擎解释SQL语句,提取出你需要的数据返回给你。因此,对访问者来说,数据库引擎就是SQL语句的解释器。

    7.1 MYISAM和InnoDB引擎的区别

    主要区别:

    应用场景:

    八、数据库范式

    目前关系数据库有6种范式:第一范式{1NF},第二范式{2NF},第三范式{3NF},巴斯—科德范式{BCNF},第四范式{4NF},第五范式{5NF,又称完美范式}。满足最低要求的范式是第一范式。在第一范式的基础上进一步满足更多规范要求的称为第二范式{2NF},其余范式依次类推,一般来说,数据库只需满足第三范式(3NF)就OK了。
    范式:

    推荐学习:mysql视频教程

    以上就是MySQL数据库基础知识点储备(整理总结)的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:CSDN,如有侵犯,请联系admin@php.cn删除
    专题推荐:MySQL
    上一篇:mysql视图有索引吗 下一篇:MySQL你必须要了解存储引擎
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【腾讯云】年中优惠,「专享618元」优惠券!• mysql index关键字的用法是什么• mysql中5.6和5.5有什么区别• mysql count()函数的用法是什么• mysql中union的用法是什么• mysql与db2的区别是什么
    1/1

    PHP中文网