当前位置: 首页 > news >正文

【SQL刷题】DAY17----SQL表与索引操作专项练习

博主昵称:跳楼梯企鹅
博主主页面链接:主页传送门
博主专栏页面连接:网络安全专栏传送么门
创作初心:本博客的初心为与技术朋友们相互交流,每个人的技术都存在短板,博主也是一样,虚心求教,希望各位技术友给予指导。
博主座右铭:发现光,追随光,成为光,散发光;
博主研究方向:渗透测试、机器学习 ;
博主寄语:感谢各位技术友的支持,您的支持就是我前进的动力 ;

牛客刷题:网站传送门


目录

 一、SQL表与索引

二、刷题

1.题目一

(1)题目

(2)题目难度

(3)示例

(4)代码

(5)运行截图

2.题目二

(1)题目

(2)题目难度

(3)示例

(4)代码

(5)运行截图

3.题目三

(1)题目

(2)题目难度

(3)示例

(4)代码

(5)运行截图

4.题目四

(1)题目

(2)题目难度

(3)示例

(4)代码

(5)运行截图

5.题目五

(1)题目

(2)题目难度

(3)示例

(4)代码

(5)运行截图

 三、小结



 一、SQL表与索引

SQL 索引(Index)用于提高数据表的查询速度。一个表可以创建多个索引,一个索引可以包含一个或者多个字段。

语法:

CREATE INDEX index_name
ON table_name ( column1, column2.....);

二、刷题

1.题目一

(1)题目

题目:创建一张新表
描述:现有一张用户信息表,其中包含多年来在平台注册过的用户信息,随着牛客平台的不断壮大,用户量飞速增长,为了高效地为高活跃用户提供服务,现需要将部分用户拆分出一张新表。

(2)题目难度

本题难易程度:中等

(3)示例

输入:

drop table if EXISTS user_info_vip;

输出:

id|int|None|NO|PRI|None|auto_increment|select,insert,update,references|自增ID
uid|int|None|NO|UNI|None||select,insert,update,references|用户ID
nick_name|varchar(64)|utf8_general_ci|YES||None||select,insert,update,references|昵称
achievement|int|None|YES||0||select,insert,update,references|成就值
level|int|None|YES||None||select,insert,update,references|用户等级
job|varchar(32)|utf8_general_ci|YES||None||select,insert,update,references|职业方向
register_time|datetime|None|YES||CURRENT_TIMESTAMP|DEFAULT_GENERATED|select,insert,update,references|注册时间

(4)代码

CREATE TABLE user_info_vip(
    id int(11) primary key auto_increment comment "自增ID",
    uid int(11) unique not null comment "用户ID",
    nick_name varchar(64) comment "昵称",
    achievement int(11) default 0 comment "成就值",
    level int(11) comment "用户等级",
    job varchar(32) comment "职业方向",
    register_time datetime default current_timestamp comment "注册时间"
)DEFAULT CHARSET=UTF8;

(5)运行截图

2.题目二

(1)题目

题目:修改表

描述:现有一张用户信息表user_info,其中包含多年来在平台注册过的用户信息。

(2)题目难度

本题难易程度:中等

(3)示例

输入:

drop table if exists user_info;
CREATE TABLE IF NOT EXISTS user_info (
id int PRIMARY KEY AUTO_INCREMENT COMMENT '自增ID',
uid int UNIQUE NOT NULL COMMENT '用户ID',
`nick_name` varchar(64) COMMENT '昵称',
achievement int COMMENT '成就值',
level int COMMENT '用户等级',
job varchar(10) COMMENT '职业方向',
register_time datetime DEFAULT CURRENT_TIMESTAMP COMMENT '注册时间'
)CHARACTER SET utf8 COLLATE utf8_general_ci;

输出:

id|int|None|NO|PRI|None|auto_increment|select,insert,update,references|自增ID
uid|int|None|NO|UNI|None||select,insert,update,references|用户ID
nick_name|varchar(64)|utf8_general_ci|YES||None||select,insert,update,references|昵称
achievement|int|None|YES||0||select,insert,update,references|
level|int|None|YES||None||select,insert,update,references|用户等级
school|varchar(15)|utf8_general_ci|YES||None||select,insert,update,references|
profession|varchar(10)|utf8_general_ci|YES||None||select,insert,update,references|
register_time|datetime|None|YES||CURRENT_TIMESTAMP|DEFAULT_GENERATED|select,insert,update,references|注册时间

(4)代码

ALTER TABLE user_info add school VARCHAR(15) after level;
ALTER TABLE user_info CHANGE job profession varchar(10);
ALTER TABLE user_info MODIFY achievement int(11) DEFAULT 0;

(5)运行截图

3.题目三

(1)题目

题目:删除表

描述:现有一张试卷作答记录表exam_record,其中包含多年来的用户作答试卷记录。一般每年都会为exam_record表建立一张备份表exam_record_{YEAR},{YEAR}为对应年份。

现在随着数据越来越多,存储告急,请你把很久前的(2011到2014年)备份表都删掉(如果存在的话)。

备注:后台会通过SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_NAME LIKE \'exam\_record\_201_\'  来对比输出结果。

(2)题目难度

本题难易程度:简单

(3)示例

输入:

drop table if EXISTS exam_record;
CREATE TABLE IF NOT EXISTS exam_record (
id int PRIMARY KEY AUTO_INCREMENT COMMENT '自增ID',
uid int NOT NULL COMMENT '用户ID',
exam_id int NOT NULL COMMENT '试卷ID',
start_time datetime NOT NULL COMMENT '开始时间',
submit_time datetime COMMENT '提交时间',
score tinyint COMMENT '得分'
)CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE TABLE IF NOT EXISTS exam_record_2010 (LIKE exam_record); 
CREATE TABLE IF NOT EXISTS exam_record_2012 (LIKE exam_record); 
CREATE TABLE IF NOT EXISTS exam_record_2013 (LIKE exam_record); 
CREATE TABLE IF NOT EXISTS exam_record_2014 (LIKE exam_record); 
CREATE TABLE IF NOT EXISTS exam_record_2015 (LIKE exam_record); 

输出:

exam_record_2010
exam_record_2015

(4)代码

drop table if exists exam_record_2011;
drop table if exists exam_record_2012;
drop table if exists exam_record_2013;
drop table if exists exam_record_2014;

(5)运行截图

4.题目四

(1)题目

题目:创建索引

描述:现有一张试卷信息表examination_info,其中包含各种类型试卷的信息。为了对表更方便快捷地查询,需要在examination_info表创建以下索引,规则如下:

在duration列创建普通索引idx_duration、在exam_id列创建唯一性索引uniq_idx_exam_id、在tag列创建全文索引full_idx_tag。

(2)题目难度

本题难易程度:中等

(3)示例

输入:

drop table if exists examination_info;
CREATE TABLE IF NOT EXISTS examination_info (
id int PRIMARY KEY AUTO_INCREMENT COMMENT '自增ID',
exam_id int UNIQUE NOT NULL COMMENT '试卷ID',
tag varchar(32) COMMENT '类别标签',
difficulty varchar(8) COMMENT '难度',
duration int NOT NULL COMMENT '时长',
release_time datetime COMMENT '发布时间'
)CHARACTER SET utf8 COLLATE utf8_bin;

输出:

examination_info|0|PRIMARY|1|id|A|0|None|None||BTREE|||YES|None
examination_info|0|exam_id|1|exam_id|A|0|None|None||BTREE|||YES|None
examination_info|0|uniq_idx_exam_id|1|exam_id|A|0|None|None||BTREE|||YES|None
examination_info|1|idx_duration|1|duration|A|0|None|None||BTREE|||YES|None
examination_info|1|full_idx_tag|1|tag|None|0|None|None|YES|FULLTEXT|||YES|None

(4)代码

create index idx_duration on examination_info(duration);
create unique index uniq_idx_exam_id on examination_info(exam_id);
create fulltext index full_idx_tag on examination_info(tag);

(5)运行截图

5.题目五

(1)题目

题目:删除索引

描述:请删除examination_info表上的唯一索引uniq_idx_exam_id和全文索引full_idx_tag。

后台会通过 SHOW INDEX FROM examination_info 来对比输出结果。

(2)题目难度

本题难易程度:简单

(3)示例

输入:

drop table if exists examination_info;
CREATE TABLE IF NOT EXISTS examination_info (
id int PRIMARY KEY AUTO_INCREMENT COMMENT '自增ID',
exam_id int COMMENT '试卷ID',
tag varchar(32) COMMENT '类别标签',
difficulty varchar(8) COMMENT '难度',
duration int NOT NULL COMMENT '时长(分钟数)',
release_time datetime COMMENT '发布时间'
)CHARACTER SET utf8 COLLATE utf8_bin;
CREATE INDEX idx_duration ON examination_info(duration);
CREATE UNIQUE INDEX uniq_idx_exam_id ON examination_info(exam_id);
ALTER TABLE examination_info ADD FULLTEXT full_idx_tag(tag);

输出:

examination_info|0|PRIMARY|1|id|A|0|None|None||BTREE|||YES|None
examination_info|1|idx_duration|1|duration|A|0|None|None||BTREE|||YES|None

(4)代码

drop index uniq_idx_exam_id on examination_info;
drop index full_idx_tag on examination_info;

(5)运行截图

 

 三、小结

本篇文章为SQL刷题第17天

欢迎大家一起和博主来刷题SQL刷题点击开始学习

相关文章:

  • 天龙八部刷马贼和反贼所有坐标
  • 【Django】开发日报_3_Day:员工管理系统
  • 《Go Web 编程》之第5章 内容展示
  • linux环境搭建nacos集群详解
  • 【Linux】进程概念(下篇) —— 程序地址空间详解
  • Windows上部署Discuz论坛
  • 猿创征文|我的C/C++技术成长之路
  • 微信小程序在线考试项目开发-用户信息注册登录功能
  • 微服务项目:尚融宝(36)(核心业务流程:用户绑定(1))
  • 2023秋招的第一个意向书
  • 正点原子Linux MINI板系统固化(烧录uboot、linux kernel、.dtb(设备树)和 rootfs)
  • 核酸检测小程序实战教程
  • MATLAB | 绘制博士学位的图解指南
  • 单词相似性查询易语言代码
  • 【Vue】Vue项目需求--实现搜索框输入防抖处理
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • Docker 笔记(2):Dockerfile
  • git 常用命令
  • Java读取Properties文件的六种方法
  • JDK9: 集成 Jshell 和 Maven 项目.
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • 编写符合Python风格的对象
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 测试开发系类之接口自动化测试
  • 动态规划入门(以爬楼梯为例)
  • 分享几个不错的工具
  • 机器学习学习笔记一
  • 小程序01:wepy框架整合iview webapp UI
  • 要让cordova项目适配iphoneX + ios11.4,总共要几步?三步
  • 用Visual Studio开发以太坊智能合约
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • ​io --- 处理流的核心工具​
  • ​虚拟化系列介绍(十)
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (ZT)一个美国文科博士的YardLife
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (一) springboot详细介绍
  • (一)UDP基本编程步骤
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .net FrameWork简介,数组,枚举
  • .net 怎么循环得到数组里的值_关于js数组
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • .NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?
  • .net安装_还在用第三方安装.NET?Win10自带.NET3.5安装
  • .NET学习教程二——.net基础定义+VS常用设置
  • /3GB和/USERVA开关
  • @JsonSerialize注解的使用
  • [ C++ ] template 模板进阶 (特化,分离编译)
  • [@Controller]4 详解@ModelAttribute
  • [AIGC] Spring Interceptor 拦截器详解
  • [Android Studio 权威教程]断点调试和高级调试
  • [ArcPy百科]第三节: Geometry信息中的空间参考解析