从七月初就开始计划刷力扣的SQL题,到今天已经一个多月的时间了,终于将SQL的全部231道题目都用MySQL实现了一遍!!!
如果有朋友也想刷力扣的SQL题,有如下几点建议。
存储过程(注:该存储过程会删除当前数据库的全部表,一定谨慎!!!)
create procedure drop_all_table()
begin
# 存储cur游标中的每一个表名
declare cur_name varchar(100) default '';
# 游标 存储当前表的所有表名 union后的''字符是做游标结束符使用的
declare cur cursor for
SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA=(select database())
union
SELECT '';
# 打开游标
open cur;
fetch cur into cur_name;
while cur_name != '' do
# 提前准备好sql语句 表名是不支持?占位符的 所以提前使用concat拼接
SET @Sentence = concat('drop table ', cur_name);
PREPARE prod FROM @Sentence;
EXECUTE prod;
DEALLOCATE PREPARE prod;
fetch cur into cur_name;
end while;
# 关闭游标
close cur;
end;我感觉还挺不错的,虽然不常用到,一来可以涨涨见识,二来也可以知道SQL究竟能干什么。
刷题过程中遇到问题查文档(MySQL的文档不错),一步步了解MySQL才知道MySQL真的很强大!
有很多黑科技,只是大家平时都不用而已。
刷SQL题确实能提升SQL能力,毕竟SQL语句的逻辑与常见的编程语言的编程逻辑完全不同。
至少我现在觉得即使很难的SQL题目也没有什么可怕的,有种翻手为云覆手为雨的感觉(当然是错觉......)。