本篇文章继续给大家带来MySQL的知识点梳理
目录
内连接
概念:利用where子句对两种表形成的笛卡儿积进行筛选
基本语法:select 字段 from 表1 inner join 表2 on 连接条件 and 其他条件;
举例
解释:从表EMP和DEPT查询员工姓名和部门名称,条件是要求EMP表中的部门号和DEPT表中的部门号要相同,并且员工姓名必须是SMITH
外连接
外连接分为左外连接和右外连接
左外连接
前提:联合查询
概念:左侧的表完全显示我们就说是左外连接。
基本语法:select 字段名 from 表名1 left join 表名2 on 连接条件;
右外连接
前提:联合查询
概念:左侧的表完全显示我们就说是左外连接。
基本语法:select 字段 from 表名1 right join 表名2 on 连接条件;
索引
作用:提高查询速度
索引的种类:主键索引、普通索引、唯一索引、全文索引
创建索引的三种方式
第一种:
第二种:
第三种:
由于第一种对于我们而言比较熟悉,因此直接总结第二和第三种
总结:create table 表名(字段 属性,字段 属性)键名(字段名);
alter table 表名 修改的操作(如删除 drop,添加 add)键名 (字段名);
主键索引的特点
1.一个表中,最多有一个主键索引,当然可以使符合主键
2.主键索引的效率高(主键不可重复)
3.创建主键索引的列,它的值不能为null,且不能重复
4.主键索引的列基本上是int
唯一索引的特点
1.一个表中,可以有多个唯一索引
2.查询效率高
3.如果在某一列建立唯一索引,必须保证这列不能有重复数据
4.如果一个唯一索引上指定not null,等价于主键索引
普通索引的特点
1.一个表中可以有多个普通索引,普通索引在实际开发中用的比较多
2.如果某列需要创建索引,但是该列有重复的值,那么我们就应该使用普通索引
查询索引的三种方式
第一种:show keys from 表名;
第二种:show index from 表名;
第三种:desc 表名;
删除索引的三种方式
第一种: alter table 表名 drop primary key;//删除主键索引
第二种:alter table 表名 drop index 索引名;
第三种:drop index 索引名 on 表名;
索引的创建原则
1.比较频繁作为查询条件的字段应该创建索引
2.唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件
3.更新非常频繁的字段不适合作创建索引
4.不会出现在where子句中的字段不该创建索引
总结:
1.频繁作为查询条件的字段(唯一性太差除外)------------可以创建为索引
2.更新频繁的字段、不出现在where子句中的字段----------不能创建索引
MyISAM vs InnoDB
MyISAM: 索引Page和数据Page分离,也就是叶子节点没有数据,只有对应数据 的地址。
InnoDB: 将索引和数据放在一起的。
聚簇索引和非聚簇索引
非聚簇索引:用户数据与索引数据分离的方案
聚簇索引:用户数据与索引数据在一起索引方案
本篇文章的内容就先到这,下期文章再见。