在平时的面试中,我们经常遇到面试官考我们的SQL功底,当然并不是考我们的基本的增删改查这些简单的SQL,而是那些我们不经常使用的,通常在你原来的公司你不怎么关注但在新公司却常用的语句。这种情况下,如果你回答的好,就等于成功了一半。我有一次就遇到这种面试的题目,让我说出Mysql除了基本的加减乘除平均数这些函数外还有哪些函数,我一听蒙了,本来我们用JPA,原生sql的不是很多的,这就蛋疼了,然后凭借记忆说了几个比如天花板函数ceil,拼接函数concat,以及转大小写的函数upper,lower。但是我看面试官并没有说什么,但我依然对此耿耿于怀,心想一定要好好复习下sql语句这块。本次整理,会涵盖我任为重要的所有的sql语句,如果有不足的地方和需要补充的语句,大家可以在下面留言,我会及时补充上,前人栽树后人乘凉,大家一起来接力吧。
Mysql函数模块
我们拣选几个经典的进行一些练习
SELECT NOW() FROM `test` WHERE id=2 // 取当前日期时间的字符串 举一反三 CURDATE() CURTIME() 就是 当前的日期 和当前的时间
SELECT DATEDIFF(NOW(),"2020-11-01") // 两个日期字符串之间的天数间隔
视图模块
- 创建单表视图
这个没什么好说的 创建后的视图可以像表一样进行查询
- 创建的视图
需要注意的是 这里的查询和更新操作只能是视图中的字段,视图中就是相当于一个表了。可以有id 也可以没有,如上图可知。同样的,创建多表视图就是基于一个多表查询,然后结果当成一个视图。
查看视图信息
另外,下面这两个语句也可以查询视图
desc view_name;
select * from view_name;
drop view view_name; // 删除视图
create or replace view view_name as 查询语句; // 修改视图
- 个人来看,这个视图在实际的应用中应用的不是很广泛,它只不过是查询语句的一个变形,在频繁使用一些固定的查询中可以提高效率。
提醒: 创建视图后如果更改视图中的内容或者表中的内容,视图对应的位置的内容也会更改。因此建议谨慎对待视图的更改。
存储过程
- 定义
存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象
- MYSQL 存储过程关键语法
DELIMITER $$ 或 DELIMITER //声明存储过程
CREATE PROCEDURE test(IN p_in int) //存储过程开始和结束符号:
BEGIN .... END //变量赋值:
SET @p_in=1 //变量定义:
DECLARE l_int int unsigned default 4000000; //创建mysql存储过程、存储函数:
create procedure //存储过程体:
create function //存储函数名(参数)
(未完待续)