系统变量;
全局变量
会话变量
自定义变量:
用户变量
局部变量
说明:变量由系统提供,不是用户定义,shu’yu服务器层面
使用语法:
1、查看所有的系统变量
show global|[session] variables; #默认为会话变量
2、查看满足条件的部分系统变量
show global|[session] variables like ‘%char%’;
3、查看指定的某个系统变量的值
select @@global.系统变量名;
4、为某个系统变量复制
set global|[session] 系统变量名=值;
set @@global|[session].系统变量名=值;
注意:
如果是全局级别,则需要加global,如果是会话级别,则需要加session,不添加的话默认为session
1、全局变量
作用域:服务器每次启动将为所有的全局变量赋初始值,针对于所有的绘画(连接)有效,但不能跨重启
2、会话变量
作用域:仅仅针对于当前会话(连接)有效
说明:变量是用户自定义的,不是由系统的
使用步骤:
声明
赋值
使用(查看、比较、运算等)
1、用户变量
作用域:针对于当前会话(连接),同于会话变量的作用域
应用在任何地方,也就是begin end里面或者begin end外面
①声明并初始化
SET @用户变量名=值;
SET @用户变量名:=值;
SELECT @用户变量名:=值;
②赋值(更新用户变量的值)
方式一:通过 SET 或者 SELECT
SET @用户变量名=值;
SET @用户变量名:=值;
SELECT @用户变量名:=值;
方式二:通过 SELECT INTO
SELECT 字段 INTO 变量名
FROM 表;
③使用(查看用户变量的值)
SELECT @查看用户变量名
#案例:
#声明初始化
SET @name=‘john’;
SET @name=100;
SET @count=1;
#赋值
SELECT COUNT(*) INTO @count
FROM employes;
#查看
SELECT @count #结果:107
2、局部变量
作用域:仅仅在定义它的begin end 中有效
应用在begin end中的第一句话
①声明
DECLARE 变量名 类型;
DECLARE 变量名 类型 DEFAULT 值;
②赋值
方式一:通过 SET 或者 SELECT
SET 局部变量名=值;
SET 局部变量名:=值;
SELECT @局部变量名:=值;
方式二:通过 SELECT INTO
SELECT 字段 INTO 局部变量名
FROM 表;
③使用
SELECT 局部变量名;
作用域 定义和使用的位置 语法
用户变量 当前会话 会话中的任何地方 必须加@符号,不用限定类型
局部变量 BEGIN end中 只能在 BEGIN END 中,且为第一句话 一般不加@符号,需要限定类型
==========================================================================
存储过程和函数:类似于java的方法
好处:
1、提高代码的重用性
2、简化操作
含义:一组预先编译好的sql语句的集合,理解成批处理语句
好处:
1、提高代码的重用性
2、简化操作
3、减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率
存储过程的语法
1、使用
**CREATE PROCEDURE 存储过程名(参数列表)
BEGIN
存储过程体(一组合法的SQL语句)
END**
注意:
1、参数列表包含三部分
参数模式 参数名 参数类型
IN stuname VARCHAR(20)
参数模式
IN :该参数可以作为输入,也就是改该参数需要调用才可传入值
OUT :该参数可以作为输出,也就是该参数可以作为返回值
INOUT :该参数既可以输入也可以作为输出,既可以传入值,也可以返回值
2、如果存储过程体仅仅只有一句话,BEGIN end可以省略
存储过程体中的每条SQL语句的结尾要求必须加分号,
存储过程的结尾可以使用 DELIMITER 重新设置
DELIMITER 结束标记
例: DELIMITER $
2、调用方法
CALL 存储过程名(实参列表);
①、空参列表
案例:插入到admin表中五条记录
DELIMITER $
CREATE PROCEDURE myp1()
BEGIN
INSERT INTO ADMIN(username,password
)
VALUES(‘john’,‘0000’),(‘tom’,‘0001’),(‘jack’,‘0000’),(‘petter’,‘0000’),(‘denny’,‘0000’);
END $
②、in
案例1:创建存储过程实现,根据女神名,查询对应的男神名
DELIMITER $
CREATE PROCEDURE myp2(IN beautyName VARCHAR(20))
BEGIN
SELECT bo.*
FROM boys bo
RIGHT JOIN beauty b ON bo.id=b.boyfriend_id
WHERE b.name=beautyName;
END $
#调用
CALL myp2(‘王语嫣’)$
案例2:创建存储过程 实现用户是否登录成功
CREATE PROCEDURE myp3(IN username VARCHAR(20),IN password
VARCHAR(20))
BEGIN
DECLARE result INT DEFAULT 0;#初始化变量
SELECT COUNT(*) INTO result #赋值变量
FROM admin
WHERE admin.username=username
AND admin.password=PASSWORD;
SELECT IF(result>0,‘成功’,‘失败’); #使用变量
END $
#调用
CALL myp3(‘张飞’,8888);
③ out
案例1:根据女神名,返回对应的男神名
CREATE PROCEDURE myp4(IN beautyName VARCHAR(20),OUT boyName VARCHAR(20))
BEGIN
SELECT bo.boyName INTO boyName #赋值
FROM boys bo
INNER JOIN beauty b ON bo.id=b.boyfriend_id
WHERE b.name=beautyName;
END $
#调用
SET @bName$ #定义一个全局变量
CALL myp4(‘小昭’,@bName)$
SELECT @bName$
案例2:根据女神名,返回对应的男神名和男神魅力值
CREATE PROCEDURE myp5(IN beautyName VARCHAR(20),OUT boyName VARCHAR(20),OUT userCP INT)
BEGIN
SELECT bo.boyName,bo.userCP INTO boyName,userCP #赋值
FROM boys bo
INNER JOIN beauty b ON bo.id=b.boyfriend_id
WHERE b.name=beautyName;
END $
#调用
CALL myp5(‘小昭’,@bName,@userCP)$
SELECT @bNanme,@userCP$
⑤inout
案例1:传入a和b两个值,最终a和b都翻倍返回
CREATE PROCEDURE myp6(INOUT a INT,intout b INT)
BEGIN
SET a=a*2;
SET b=b*2;
END $
#调用
SET @m=10;
SET @n=8;
CALL mvp6(@m,@n);
SELECT @m,@n;
(二)、删除存储过程
语法:drop procedure 存储过程名
不支持多个删除
(三)、查看存储过程的信息
语法:show create procedure 存储过程名
含义:一组预先编译好的sql语句的集合,理解成批处理语句
**好处:
1、提高代码的重用性
2、简化操作
3、减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率**
与存储过程区别:
存储过程:可以有任何个返回(0-n),适合坐批量插入、批量更新
函数:有且仅有一个返回,适合坐处理数据后返回一个结果
(一)、创建语法
CREATE FUNCTION 函数名(参数列表) RETURNS 返回类型
BEGIN
函数体
END
**注意:
1、参数列表:包含两部分
参数名 参数类型**
**2、函数体:肯定会有return语句,如果没有会报错
如果return语句没有放在函数体的最后也不会报错,但不建议**
return 值;
3、函数体中仅有一句话,则可以省略begin and
4、使用delimiter 语句设置结束标记
(二)、调用语法
SELECT 函数名(参数列表)
案例:根据员工名,返回它的工资
CREATE FUNCTION myf1(empName VARCHAR(20)) RETURNS DOUBLE
BEGIN
SET @sal=0; #定义用户变量
SELECT salary INTO @sal #赋值
FROM employees
WHERE last_name=empName;
RETURN @sal;
END $
SELECT myf1(‘kochhar’)$
(三)、查看函数
SHOW creaete FUNCTION myf1;
(四)、删除函数
DROP FUNCTION myf1
=========================================================================
顺序结构:程序从上往下一次执行
分支结构:程序从两条或多条路径中选择一条去执行
循环结构:程序在满足一定条件的基础上,重复执行一段代码
1、if函数
功能:实现简单的双分支
语法:
if(表达式1,表达式2,表达式3)
执行顺序:
如果表达式1成立 则执行表达式2,否则执行表达式3
应用:任何地方
2、case结构
情况1:类似于java的switch语句,一般用于实现等值判断
语法:
case 变量|表达式|字段
when 要判断的值 then 返回的值1或语句1;
when 要判断的值 then 返回的值2或语句2;
……
else 返回的值n或语句n
end case;
情况2:类似于java的多重if语句,一般用于实现区间判断
语法:
case
when 要判断的条件1 then 返回的值1或语句2;
when 要判断的条件2 then 返回的值2或语句2;
……
else 返回的值n或语句n;
end case;
特点:可以作为表达式,嵌套在其他语句中使用,可以放在任何地方
可以作为独立的语句去使用,只能放在begin end 中
案例:创建存储过程,根据传入的成绩,来显示等级
CREATE PROCEDURE test_case(IN score INT)
BEGIN
CASE
WHEN score>=90 AND score<=100 THEN SELECT ‘A’;
WHEN score>=80 THEN SELECT ‘B’;
WHEN score>=60 THEN SELECT ‘C’;
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
复习的面试资料
这些面试全部出自大厂面试真题和面试合集当中,小编已经为大家整理完毕(PDF版)
- 第一部分:Java基础-中级-高级
- 第二部分:开源框架(SSM:Spring+SpringMVC+MyBatis)
- 第三部分:性能调优(JVM+MySQL+Tomcat)
- 第四部分:分布式(限流:ZK+Nginx;缓存:Redis+MongoDB+Memcached;通讯:MQ+kafka)
- 第五部分:微服务(SpringBoot+SpringCloud+Dubbo)
- 第六部分:其他:并发编程+设计模式+数据结构与算法+网络
进阶学习笔记pdf
- Java架构进阶之架构筑基篇(Java基础+并发编程+JVM+MySQL+Tomcat+网络+数据结构与算法)
- Java架构进阶之开源框架篇(设计模式+Spring+SpringMVC+MyBatis)
- Java架构进阶之分布式架构篇 (限流(ZK/Nginx)+缓存(Redis/MongoDB/Memcached)+通讯(MQ/kafka))
- Java架构进阶之微服务架构篇(RPC+SpringBoot+SpringCloud+Dubbo+K8s)
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门即可获取!
链图片转存中…(img-m48MQGTD-1712048971600)]
进阶学习笔记pdf
- Java架构进阶之架构筑基篇(Java基础+并发编程+JVM+MySQL+Tomcat+网络+数据结构与算法)
[外链图片转存中…(img-1nfTkhIJ-1712048971600)]
- Java架构进阶之开源框架篇(设计模式+Spring+SpringMVC+MyBatis)
[外链图片转存中…(img-vEZMzwQ4-1712048971600)]
[外链图片转存中…(img-Ei2ohhv1-1712048971601)]
[外链图片转存中…(img-G8X01oRV-1712048971601)]
- Java架构进阶之分布式架构篇 (限流(ZK/Nginx)+缓存(Redis/MongoDB/Memcached)+通讯(MQ/kafka))
[外链图片转存中…(img-aY91ha9i-1712048971601)]
[外链图片转存中…(img-KdLdq9z0-1712048971601)]
[外链图片转存中…(img-TvdyyafC-1712048971602)]
- Java架构进阶之微服务架构篇(RPC+SpringBoot+SpringCloud+Dubbo+K8s)
[外链图片转存中…(img-zte2cmBC-1712048971602)]
[外链图片转存中…(img-TI0NAkFn-1712048971602)]
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门即可获取!