【SQL自学打卡|DAY15】——表与索引操作

前言

❤欢迎大家阅读我的文章呀❤
今天开始的是SQL进阶挑战
希望你们在我的文章当中能有所收获!!!
SLogan:日拱一卒,功不唐捐!

知识点回顾

插入记录的方式汇总:

普通插入(全字段):INSERT INTO table_name VALUES (value1, value2, …)

普通插入(限定字段):INSERT INTO table_name (column1, column2, …) VALUES
(value1, value2, …)

多条一次性插入:INSERT INTO table_name (column1,column2, …) VALUES
(value1_1, value1_2, …), (value2_1, value2_2, …), …

从另一个表导入
INSERT INTO table_name
SELECT * FROM table_name2
[WHERE key=value]
带更新的插入
REPLACE INTO table_name VALUES (value1, value2, …) (注意这种原理是检测到主键或唯一性索引键重复就删除原记录后重新插入)

修改记录的方式汇总:
设置为新值
UPDATE table_name SET column_name=new_value [,column_name2=new_value2]
[WHERE column_name3=value3]
根据已有值替换
UPDATE table_name SET key1=replace(key1, ‘查找内容’, ‘替换成内容’)
[WHERE column_name3=value3]

删除记录的方式汇总:

根据条件删除
DELETE FROM tb_name
[WHERE options] [ [ ORDER BY fields ] LIMIT n ]
全部删除(表清空,包含自增计数器重置)
TRUNCATE tb_name
时间差
TIMESTAMPDIFF(interval, time_start, time_end)可计算time_start-time_end的时间差,单位以指定的interval为准,常用可选:

SECOND 秒
MINUTE 分钟(返回秒数差除以60的整数部分)
HOUR 小时(返回秒数差除以3600的整数部分)
DAY天数(返回秒数差除以3600*24的整数部分)
MONTH 月
YEAR 年

一、表的创建、修改与删除

知识点:

在这里插入图片描述

在这里插入图片描述


【SQL118】创建一张新表
在这里插入图片描述
解题思路:
这道题是创建一张新表,可以参考上面给出的创建表的格式,然后根据格式和题目意思跟着自己敲一遍,提交的过程当中有过几次报错,不过都被解决了。

这道题有几个需要注意的点:
自增ID:AUTO_INCREMENT
主键:PRIMARY KEY
唯一性约束:UNIQUE KEY
非空约束:NOT NULL
设置默认值:DEFAULT 0
当前时间戳:CURRENT_TIMESTAMP
评论/注释:COMMENT
这些细节方面需要注意,这道题慢慢就可以做出来。

代码如下:

CREATE TABLE user_info_vip (
    id	int PRIMARY KEY AUTO_INCREMENT COMMENT '自增ID',
    uid int UNIQUE KEY NOT NULL COMMENT '用户ID',
    nick_name varchar(64) COMMENT '昵称',
    achievement int DEFAULT 0 COMMENT '成就值',
    level int COMMENT '用户等级',
    job varchar(32) COMMENT '职业方向',
    register_time datetime DEFAULT CURRENT_TIMESTAMP COMMENT '注册时间'
) COMMENT '用户信息表'

结果:
在这里插入图片描述

【SQL119】 修改表
在这里插入图片描述
在这里插入图片描述

解题思路:

修改表:

① 增加列在某列之后
alter table 增加的表格 add 增加列的名称 数据类型 位置(after level 在level 之后)

②更换列的名称及数据类型
alter table user_info change 原列名 修改列名 修改数据类型

③ 更改数据类型
alter table 表名 modify 修改列名称 数据类型 默认值等

代码如下:

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;

结果:
在这里插入图片描述

【SQL120】删除表
在这里插入图片描述

解题思路:
删除表:DROP TABLE [IF EXISTS] 表名1 [, 表名2]。
题目当中说到(如果存在的话)都删掉,所以需要写上IF EXISTS
另,删除表的命令为DROP,而不是DELETE!!!
代码如下:

DROP TABLE IF EXISTS exam_record_2011,exam_record_2012,exam_record_2013,exam_record_2014

结果:
在这里插入图片描述

二、索引的创建、删除

在这里插入图片描述

索引创建、删除与使用:

在这里插入图片描述

【SQL121】创建索引
在这里插入图片描述

解题思路:
索引创建规则
1、普通索引:
(1)alter table 表名 add index 索引名称(列名);
(2)create index 索引名称 on 表名(列名);
2、唯一索引:
(1)alter table 表名 add unique index 索引名称(列名);
(2)create unique index 索引名称 on 表名(列名);
3、全文索引:
(1)alter table 表名 add fulltext index 索引名称(列名);
(2)create fulltext index 索引名称 on 表名(列名);

正确代码如下:

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);

结果:
在这里插入图片描述

【SQL122】删除索引
在这里插入图片描述
解题思路:
只要掌握删除索引的语法即可完成本题:

DROP INDEX <索引名> ON <表名>

正确代码如下:

DROP INDEX uniq_idx_exam_id ON examination_info;
DROP INDEX full_idx_tag ON examination_info;

结果:
在这里插入图片描述

总结

  今天是【SQL进阶挑战】有关于表与索引的专项练习和分享!
  有点点小难度哟,希望能够把今天涉及到的知识点记牢!!!
  欢迎一键三连呀,谢谢!!!
  感谢您宝贵的阅读,关注和点赞噢!。午安❤

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 13
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

祖国滴花骨朵儿

感谢之情无以言表,会用行动证明

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

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

打赏作者

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

抵扣说明:

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

余额充值