敷衍的面试|记录问题仅供参考,不代表最终答案

MySQL的存储过程

1、概念:预先编译好的sql语句集合
2、提高效率:简化代码的重用性,简化操作,减少了编译次数并且减少了和数据库服务器的链接次数。
3、存储过程的参数列表

参数模式  参数名 参数类型
参数模式:in:需要传入方传值
		out:该参数可以作为返回值
		inout:继需要参数值,也有返回值

4、BEGIN…END
(1)每条sql需要分号结尾
(2)存储过程结尾需要DELIMITER(DELIMITER$$)
5、调用
call 存储过程名(实参列表)
6、定义变量
DECLEAR 变量名 变量类型

 1. 声明语句结束符:DELIMITER $$  或  DELIMITERo
 2. 存储过程开始和结束:`BEGIN...END`
 3. 变量赋值:SET  @p_in=1  
 4. 变量定义:DECLARE 1_INT int unsigned default 40000`
 5. 创建存储过程、存储函数:
 6. create procedure 存储过程名(参数)
 		例:
 		create procedure in_param(in p_in int )  #in 表示输入参数  p_in参数名  int 数据类型
 		例2:
 		create procedure out_param(out  p_out   varchar)`
 		
 8. 存储过程体:`create function 存储函数名(参数)`
 9. 过程体格式
 开始于begin结束end
 可以多层嵌套
 BEGIN
 	BEGIN
 		statements
 	END
 END

MySQL调优:索引调优、sql语句调优

1、条件语句调优
(1)where之后的条件,尽量不使用函数
(2)like之后使用最左检索,例:like “ab%” 而非 like “%b%”
2、索引调优
(1)索引的添加要注意,不要添加在常做修改的字段上
(2)多使用符合索引
(3)使用explian先查看索引的type级别,进行级别的升高
3、复杂sql优化
尽量简化成子查询,避免复杂的混合查询

应用程序内存溢出问题解决

栈内存溢出:程序所要求的栈深度过大导致。
堆内存溢出: 分清 内存泄露还是 内存容量不足。泄露则看对象如何被 GC Root 引用。不足则通过 调大 -Xms,-Xmx参数。
持久带内存溢出:Class对象未被释放,Class对象占用信息过多,有过多的Class对象。 通过-XX:PermSeize和-XX:MaxPermSeize限制方法区大小
无法创建本地线程:总容量不变,堆内存,非堆内存设置过大,会导致能给线程的内存不足。
该问题来自该博客

MySQL内置的函数

count()计数
avg()平均数
max()最大
min()最小
sum()求和
单行函数:针对单行数据
length()单行数据长度
concat()拼接字段
reverse()字符串反转
trim()去掉空格
sumstr()截取字符串
strcmp()匹配字符,匹配返回0
now()当前时间
date_format(date,“yy年MM月dd日”) 日期格式转换
datediff() 返回两者的差值
if()判断
ifnull()判断是否为空

数据库排序、分组、分页、链表查询

排序order by
升序ASC
降序DESC
分组group by
链表
内连接:inner join … on
左外:left join …on
右外:right join … on
on 后的条件:不管是否成立都会有返回值
where 后的条件不成立则无返回值

limit 使用
limit 2,3;从2开始,查3条数据

©️2020 CSDN 皮肤主题: 终极编程指南 设计师:CSDN官方博客 返回首页