❤欢迎大家阅读我的文章呀❤
今天开始的是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 '用户信息表'
解题思路:
① 增加列在某列之后
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;
解题思路:
删除表: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
解题思路:
索引创建规则
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进阶挑战】有关于表与索引的专项练习和分享!
有点点小难度哟,希望能够把今天涉及到的知识点记牢!!!
欢迎一键三连呀,谢谢!!!
感谢您宝贵的阅读,关注和点赞噢!。午安❤