MYSQL的笔记

一.表的设计:

1.第一范式:要求表中的列不可再分,否则就不是关系型数据库;

2.第二范式:在满足第一范式的基础上,消除部分函数依赖,出现在复合主键(多个候选键内),

如果有一列字段只依赖于一个主键,那么就将其删除,否则会出现数据冗余,更新异常,删除/增加异常;

3第三范式:在满足第二范式的基础上,消除传递依赖(非主键字段不能相互依赖);

关系模型{

一对一;

一对多;

多对多;

}

聚合函数

1,COUNT()

2.SUM();

3,AVG();

4,MIN();

5.MAX();

联合查询(表连接查询)

1.内连接

select * from table1,table2 where table1.xxx = table2.xxx;

select * from table1 join table2 on table1.xxx = table2.xxx;

表连接的执行过程

1,先计算参与表连接的笛卡尔积;

2,再通过筛选条件过滤无效数据;

3.再加入查询语句得到想要的结果行;

4精简列明;

2.外连接(左外和右外)

select * from table1 left join table2 on table1.xxx = table2.xxx;

select * from table1 right join table2 on table1.xxx = table2.xxx;

左右表中没有的用NULL填充;

3.自连接(自己和自己)

select * from table1 t1,table1 t2 where t1.xxx = t2.xxx;

把行转化成列

4.子查询

select * from table1 where id = (select * from table2 where id2 = xxx );

5,合并查询

select * from table1 union select * from table2;自动删除重复

select * from table1 union  all select * from table2;不删除重复

注意:多个查询列表必须匹配,MYSQL不会进行校验.

6.视图

1.语法:create view view_name [(包含的列)] as 表名

2.删除:drop view view_name;

3.优点:  

    1.简单性:将复杂的查询语句封装,用户无需关注底层,只需要使用视图即可;

     2.安全性:将敏感的字段隐藏;

     3.逻辑数据独立性:即使表层结构发生变化,只需修改视图的字段即可

     4.重命名列:用户可以根据自身需求增强视图的可读性;

7.索引:

索引是一种以高效查询为目的的一种数据结构(B+树);

优点:

    1,叶子结点之间有相互连接的引用,在范围查询兄弟节点更方便;

    2,所有的非叶子节点都在叶子节点上;

    3,对于B+树而言,在相同树高的情况下,查询同一元素的复杂度相同,性能均匀;

:页是内存和磁盘最小的交互单元。

       页包含页头文件和页尾文件(其中包含了入上一页和下一页的地址等信息);

       其次就是页主体部分:包含最小行和最大行分别组成单向链表的首位;

       数据会被进行分组,每8条为一组,每一组对应生成一个糟用来存储每一组最后一条数据,以便于对数据进行CRUD;

索引分类

 1,主键索引(依赖primary key的索引)

 2,普通索引 (依赖自定义字段的索引)

 3,唯一索引(依赖unique key的索引)

 4,文本索引

 5,聚集索引(若表中没有primary key那么就以第一个为unique 和 not null的列)

     (非聚集索引):

       回表查询:通过索引查找到索引记录,再返回主键索引树中查找完整记录

       索引覆盖:当一个select语句使用普通索引且查询列表中的列刚好是普通索引的部分或全部

那么此时可以直接返回数据,而不用回表查询。
 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值