数据库知识归纳(索引)

基本概念

在数据库中,索引的含义与日常意义上的“索引”一词并无多大区别(想想小时候查字典),它是用于提高数据库表数据访问速度的数据库对象。

  • 索引可以避免全表扫描。多数查询可以仅扫描少量索引页及数据页,而不是遍历所有数据页。
  • 对于非聚集索引,有些查询甚至可以不访问数据页。
  • 聚集索引可以避免数据插入操作集中于表的最后一个数据页。
  • 一些情况下,索引还可用于避免排序操作。

索引的存储

一条索引记录中包含的基本信息包括:键值(即你定义索引时指定的所有字段的值) 逻辑指针(指向数据页或者另一索引页)。

索引的分类

聚集索引 

表数据按照索引的顺序来存储的。对于聚集索引,叶子结点即存储了真实的数据行,不再有另外单独的数据页。在聚集索引中,叶结点也即数据结点,所有数据行的存储顺序与索引的存储顺序一致。

在一张表上只能创建一个聚集索引,因为真实数据的物理顺序只可能是一种。如果一张表没有聚集索引,那么它被称为“堆集”(Heap)。这样的表中的数据行没有特定的顺序,所有的新行将被添加的表的末尾位置。

非聚集索引

表数据存储顺序与索引顺序无关。对于非聚集索引,叶结点包含索引字段值及指向数据页数据行的逻辑指针,该层紧邻数据页,其行数量与数据表行数据量一致。

 

语句:

权限分配

grant select,insert on userdb.userinfo to'zhangsan'@'localhost'

模糊查询

%:表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。

select * from test where text like '%1%';

_ : 表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句。

--倒数第三个字符为 1 ,且最小长度为 5
select * from test where text like '__%1__';

内连接,也叫等值连接,inner join产生同时符合A和B的一组数据。

mysql> select * from A inner join B on A.name = B.name;

Left Join

mysql> select * from A left join B on A.name = B.name;
mysql> select * from A left join B on A.name=B.name where A.id is null or B.id is null;
 
posted on 2020-09-22 09:16  nidegui  阅读(241)  评论(0编辑  收藏  举报