视图+存储过程+函数的一些小案例
CREATE TABLE admin(
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(20),
PASSWORD VARCHAR(20)
)
CREATE VIEW vi1
AS
SELECT * FROM admin
SELECT * FROM vi1;
DESC vi1;
SHOW CREATE VIEW vi1
SHOW VARIABLES LIKE 'autocommit';
SET autocommit=0
DELETE FROM admin WHERE admin.`id`=1
ROLLBACK;
SET autocommit =0;
START TRANSACTION;
DELETE FROM admin WHERE admin.`id`=4;
SAVEPOINT a;
DELETE FROM admin WHERE admin.`id`=5;
ROLLBACK TO a;
SELECT * FROM admin;
DELIMITER $$;
CREATE PROCEDURE mypro_10()
BEGIN
SELECT * FROM admin;
END $$;
DROP PROCEDURE IF EXISTS `mypro_12`
DROP PROCEDURE IF EXISTS `mypro_10`
DELIMITER $$;
CREATE PROCEDURE mypro_7()
BEGIN
SELECT * FROM admin;
END $$;
CALL mypro_7();
DELIMITER $$;
CREATE PROCEDURE mypro_11(IN num INT)
BEGIN
SELECT * FROM admin WHERE admin.`id`=num;
END $$;
SET @num=0;
CALL mypro_11(5);
DELIMITER $$;
CREATE PROCEDURE mypro_13(OUT num1 INT)
BEGIN
SELECT COUNT(1) INTO num1 FROM admin;
END $$;
SET @num1=0;
CALL mypro_13(@num1);
SELECT @num1;
INSERT INTO admin (username,PASSWORD) VALUES("1111","1111");
INSERT INTO admin (username,PASSWORD) VALUES("1111","1111");
INSERT INTO admin (username,PASSWORD) VALUES("1111","1111");
DELIMITER $$;
CREATE PROCEDURE mypro_12(IN num VARCHAR(20) ,OUT num1 INT)
BEGIN
SELECT COUNT(1) INTO num1 FROM admin WHERE admin.username=num;
END $$;
SET @num='';
SET @num1=0;
CALL mypro_12('1111',@num1);
SELECT @num1;
DELIMITER $$;
CREATE PROCEDURE mypro_14(INOUT num INT)
BEGIN
SELECT COUNT(1) INTO num FROM admin WHERE admin.`id`>num;
END $$;
SET @num=10;
CALL mypro_14(@num);
SELECT @num;
DELIMITER $$;
CREATE FUNCTION myfun_1()
RETURNS INT
BEGIN
DECLARE c INT DEFAULT 0;
SELECT COUNT(1) INTO c FROM admin WHERE admin.`id`;
RETURN c;
END $$;
SELECT myfun_1();
DELIMITER $$;
CREATE FUNCTION myfun_3(username1 VARCHAR(20))
RETURNS VARCHAR(20)
BEGIN
SET @sal='';
SELECT admin.`id` INTO @sal FROM admin
WHERE `username`=username1 LIMIT 1;
RETURN @sal;
END $$;
SELECT myfun_2('dd');
SHOW CREATE FUNCTION myfun_2
DROP FUNCTION myfun_2
DELIMITER $$;
CREATE FUNCTION myfun_add(a FLOAT,b FLOAT)
RETURNS FLOAT
BEGIN
DECLARE sum_1 FLOAT;
SET sum_1=a+b;
RETURN sum_1;
END $$;
SELECT myfun_add(1,2)
DROP FUNCTION IF EXISTS fun_my5;
DELIMITER $$;
CREATE FUNCTION myfun_4(num FLOAT)
RETURNS VARCHAR(20)
BEGIN
DECLARE degree VARCHAR(20) DEFAULT 'D';
IF num>=8 THEN SET degree='A';
ELSEIF num>13 THEN SET degree='B';
ELSEIF num>16 THEN SET degree='C';
ELSE SET degree='D';
END IF;
RETURN degree;
END $$;
SELECT myfun_4(15);
DROP FUNCTION IF EXISTS fun_myf5;
DELIMITER $$;
CREATE FUNCTION fun_myf5(score FLOAT) RETURNS VARCHAR(10)
BEGIN
DECLARE degree VARCHAR(20) DEFAULT 'D';
IF score>=90 THEN SET degree='A';
ELSEIF score >80 THEN SET degree='B';
ELSEIF score >60 THEN SET degree='C';
ELSE SET degree='D';
END IF;
RETURN degree;
END $$;
SELECT fun_myf5(90);
DROP FUNCTION IF EXISTS fun_myf5;
DELIMITER $
CREATE FUNCTION fun_myf5(score FLOAT) RETURNS VARCHAR(10)
BEGIN
DECLARE degree VARCHAR(20) DEFAULT 'D';
IF score>=90 THEN SET degree='A';
ELSEIF score>80 THEN SET degree='B';
ELSEIF score>60 THEN SET degree='C';
ELSE SET degree='D';
END IF;
RETURN degree;
END $
DELIMITER ;
SELECT fun_myf5(87);
SELECT fun_myf5(57);
SELECT
CASE
WHEN Salary>20000 THEN '高薪'
WHEN Salary>10000 THEN '低能'
ELSE '戴哥说:低能太多你们公司要完蛋了'
END
FROM employees
DELIMITER $$;
CREATE PROCEDURE mypro_15()
BEGIN
DECLARE i INT DEFAULT 0;
WHILE i<5 DO
INSERT INTO admin (username,PASSWORD) VALUES(CONCAT('1234',i),CONCAT('1111',i));
SET i = i+1;
END WHILE;
END $$;
CALL mypro_15();
转载请注明原文地址:https://ipadbbs.8miu.com/read-5262.html