文章已同步至GitHub开源项目: Java超神之路
查看所有变量SHOW GLOBAL/SESSION VARIVALES
条件查询
SHOW GLOBAL/SESSION LIKE '%char%'
查看某个变量的值
SELECT @@GLOBAL/SESSION.系统变量名
设置值
SET GLOBAL/SESSION.系统变量名 = 值;
- 作用域: 针对于当前会话有效- 使用 ```sql SET @用户变量名=值 #声明赋值1 SELECT 字段 INTO @变量名 #声明赋值2 SELECT @变量名 #查看 ```- 作用域:当前begin / end作用域有效- 使用 ```mysql DECALARE 变量名 类型 ; #声明 SET 变量名=值;#赋值 SELECT 变量名; #查看 ```一组预先编译好的SQL语句集合。
```sqlCREATE PROCEDURE 存储过程名(参数列表)BEGIN SQL语句1; SQL语句2;END```- 参数列表
- 参数模式 IN,OUT,INOUT
- 参数名
- 参数类型```sqlCALL 存储过程名(实参列表);``````sql#定义CREATE PROCEDURE INSERT5()BEGIN INSERT INTO book values (1,'计算机网络',45.9,'罗贯中',NOW()); INSERT INTO book values (2,'计算机网络',45.9,'罗贯中',NOW()); INSERT INTO book values (3,'计算机网络',45.9,'罗贯中',NOW()); INSERT INTO book values (4,'计算机网络',45.9,'罗贯中',NOW()); INSERT INTO book values (5,'计算机网络',45.9,'罗贯中',NOW());END;#调用CALL INSERT5();```#根据工资查询员工
CREATE PROCEDURE getBySalary(IN s double)
BEGIN
SELECT * FROM employees WHERE salary = s;END;
#调用
CALL getBySAlary();
#定义
CREATE PROCEDURE getNameBySalary(IN salary double,OUT name VARCHAR(20))
BEGIN
SELECT last_name INTO name FROM employees WHERE employees.salary = salary;END;
#调用
SET @result;
CALL getNameBySalary(24000,@result);
SELECT @result;
有且仅有一个返回
CREATE FUNCATION 函数名(参数名 参数类型,参数名 参数类型) RETURNS 返回类型
BEGIN
函数体
END
SELECT 函数名(参数列表);
返回公司的员工个数 ```sql #定义 CREATE FUNCTION countEmp() RETURNS INT BEGIN DECLARE result INT; SELECT COUNT(*) INTO result FROM employees; RETURN result; END; #调用 SELECT countEmp(); ```根据员工名返回工资
#定义
CREATE FUNCTION getSalaryByName(name VARCHAR(20)) RETURNS DOUBLE
BEGIN
DECLARE salary DOUBLE; SELECT e.salary INTO salary FROM employees e WHERE e.last_name = name; RETURN salary;END;
#调用
SELECT getSalaryByName('K_ing');
SHOW CREATE FUNCTION 函数名;
如果ELSE省略 当都不匹配时 返回NULL#等值判断
CASE 表达式/值/字段
WHEN 常量1 THEN 语句1;
WHEN 常量2 THEN 语句2;
ELSE 默认语句;
END;
#区间判断
CASE
WHEN 条件 THEN 语句;
WHEN 条件 THEN 语句;
ELSE 默认语句;
END;
案例: 创建函数,根据传入成绩,显示等级
#定义
CREATE FUNCTION wage_scale(score DOUBLE) RETURNS varchar(10)
BEGIN
CASE WHEN score>=90 THEN RETURN '优秀'; WHEN score>=80 THEN RETURN '良好'; WHEN score>=70 THEN RETURN '普通'; WHEN score>=60 THEN RETURN '及格'; ELSE RETURN '不及格'; END CASE;END;
#调用
SELECT wage_scale(90);
标签名WHILE 循环条件 DO
循环体;
END WHILE标签名;
案例:根据次数批量插入admin表数据
#定义存储过程
CREATE PROCEDURE pro_while(IN count INT)
BEGIN
DECLARE i INT DEFAULT 1;
WHILE i <= count
DO INSERT INTO admin (username, password) VALUES (count, count); SET i = i + 1;END WHILE;end;
#调用
CALL pro_while(10);
#结果 admin表中插入10条数据
标签名LOOP
循环体;
END LOOP 标签名
标签名REPEAT
循环体;
UNTIL 结束循环条件
END REPEAT 标签名
已知表content
字段 | 说明 |
|---|---|
id | 自增主键 |
content | 随机字符 |
创建存储过程,插入指定数量的随机字符。
#建表
CREATE TABLE content(
id INT PRIMARY KEY AUTO_INCREMENT,
content VARCHAR(100)
);
#创建存储过程
CREATE PROCEDURE random_content(IN count INT)
BEGIN
#定义变量
DECLARE i INT DEFAULT 1;
WHILE i <= count DO
#循环体
INSERT INTO content VALUES (null,random_bytes(100));
SET i = i+1;
END WHILE;
END;
#d
CALL random_content(100);文章已同步至GitHub开源项目: Java超神之路 更多Java相关知识,欢迎访问!
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。