分页和索引【educoder】+笔记+答案

文章目录

  • 前言
  • 一:MySQL分页查询
  • 二:单列索引
  • 三:组合索引

前言

MySQL 除了对表的简单增删改查操作之外,还有很多高级的使用技巧,例如分页查询,或者索引(单列和组合索引等)有效提升查询效率。

一:MySQL分页查询

分页查询就如我们点击搜索页面的下一页,比如浏览书城,里面数据库存储了大量书籍,一共推送40本我们感兴趣的,我们在浏览界面看完了推送的20本,点击下一页,看剩下20本,这其中就用到了分页查询

limit之后的数字代表偏移量,offset代表返回记录的最大值,可以通俗的理解为,从table中取出第limit+1行到limit+offset+1行数据( MySQL 偏移值从0开始计算)。
编程要求
根据提示,在右侧编辑器补充代码:
按prod_id升序查询表products中第6-10行数据,只要求prod_id字段即可(prod_id从1开始);
利用子查询优化查询出按prod_id升序的第10-15行数据,只要求prod_id字段即可。
数据表结构如下:

分页和索引【educoder】+笔记+答案_第1张图片

USE Products;
#请在此处添加实现代码
########## Begin ##########

#1.分页查询

select prod_id from products limit 5,5;
#2.用子查询优化分页查询语句
select prod_id from products where prod_id>=(select prod_id from products limit 10,1) limit 5;
########## End ##########

二:单列索引

索引是一张特殊的表,该表保存了主键与索引字段,并指向实体表的记录。
1.主键索引
建表时用primary
2.普通索引

create index name_index on `student`(`name`);

` 不是单引号,而是键盘 1 数字左边的符;
3.唯一索引

 create unique index name_index on `student`(`name`);

编程要求
根据提示,在右侧编辑器创建如下student表结构,并创建id为主键索引,name为唯一索引(索引名name_index),score为普通索引(索引名score_index)。
student结构如下:
字段名 类型、属性
id int(11) ,非空,自增长
name varchar(20) , 非空
score int(10)

USE Students;
#请在此处添加实现代码
########## Begin ##########

#1.创建student表结构并且设置id为主键索引
create table student(
    id int(11) not null auto_increment,
    primary key(`id`),
    name varchar(20) not null,
    score int(10)
);

#2.对name建立唯一索引

create unique index name_index on `student`(`name`);
#3.对score建立普通索引
create index score_index on `student`(`score`);
SHOW INDEX FROM student;
########## End ##########

三:组合索引

ALTER TABLE student ADD INDEX name_city_score (name,city,score);  

编程要求
根据提示,在右侧编辑器补充 sql 代码。
有如下表person,在name、age、address上创建组合索引,索引名name_city_score (无需建表,只增加组合索引即可)。
表person结构如下所示:
字段 类型
id int(11)
name varchar(20)
age int
address varchar(30)

USE Person;
#请在此处添加实现代码
########## Begin ##########

#1.增加组合索引
alter table person add index name_city_score(name,age,address);


########## End ##########
SHOW INDEX FROM person;

你可能感兴趣的:(#,数据库,mysql,数据库)