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

前言

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字段即可。
数据表结构如下:

在这里插入图片描述

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;
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尾迹双冒号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值