变量由系统提供,不是用户定义,属于服务器层面
SHOW GLOBAL | [SESSION] VARIABLES;
SHOW SESSION VARIABLES;
2. 查看满足部分条件的系统变量
SHOW GLOBAL | [SESSION] VARIABLES LIKE "%char%";
SHOW SESSION VARIABLES LIKE "%commit%";
3. 查看指定的某个系统变量的值
SELECT @@global | [SESSION] .系统变量名;
SELECT @@global.autocommit;
SET GLOBAL | [SESSION] 系统变量名 = 值;
SET @@global | [SESSION] .系统变量名 = 值;
SELECT @@tx_isolation;
SELECT @@session.tx_isolation;
变量是由用户定义的,不是系统的
SET @hello = "world";
SET @hello := 100;
SELECT @hello := 200;
SELECT COUNT(*) INTO @count
FROM employees;
存储过程类似于函数
CREATE PROCEDURE 存储过程名(参数列表)
BEGIN
存储过程体,也就是一组合法的sql语句
END
注意
参数列表包含三部分
IN stuName varchar(20)
DELIMITER
关键字DELIMITER
用于重新设置结束符,使用完之后,我们需要再次指定结束语句为分号DELIMITER $
CREATE PROCEDURE 存储过程名(参数列表)
BEGIN
存储过程体,也就是一组合法的sql语句
END $
CALL 存储过程名(实参列表);
DROP PROCEDURE 存储过程名;
DELIMITER $
CREATE PROCEDURE mypro()
BEGIN
INSERT INTO admin(username,PASSWORD)
VALUES('join1',1111),('join2',2222);
END $
CALL mupro()$
DELIMITER $
CREATE PROCEDURE mypro2(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 mupro("小花")$
DELIMITER $
CREATE PROCEDURE mypro2(IN beautyName VARCHAR(20),OUT boyName VARCHAR(20))
BEGIN
SELECT bo.boyName
FROM boys bo
RIGHT JOIN beauty b ON bo.id = b.boyfriend_id
WHERE b.name = beautyName;
END $
CALL mupro("小花")$
DELIMITER $
CREATE PROCEDURE mypro3(INOUT a INT,INOUT b INT)
BEGIN
SET a = a*2
SET b = b*2
END $
SET @m = 10$
SET @n = 20$
CALL mypro3(@m,@n)$
CREATE FUNCTION 函数名(参数列表) RETURNS 返回类型
BEGIN
函数体
END
begin end
DELIMITER
来重新定义结束标记SELECT 函数名(参数列表);
存储过程
函数
CREATE FUNCTION myfun() RETURNS INT
BEGIN
DECLARE c INT DEFAULT 0 ; # 定义变量并赋值
SELECT COUNT(*) INTO c
FROM studentinfo
RETURN c
END $
CREATE FUNCTION myfun(empName VARCHAR(20)) RETURNS DOUBLE
BEGIN
SET @sal=0; # 定义用户变量
SELECT salary INTO @sal
FROM employee
WHERE last_name = empName;
RETURN @sal;
END $