所有数据库学习总结文章均是根据B站尚硅谷视频总结而来,视频链接如下: [https://www.bilibili.com/video/BV12b411K7Zu]
本文内容均需要在命令行执行
一、存储过程
案例1:创建存储过程实现传入用户名和密码,插入到admin表中。
DELIMITER $
CREATE PROCEDURE
t_pro(IN userna VARCHAR(20),IN passwo VARCHAR(20))
BEGIN
INSERT INTO
admin(username,PASSWORD) VALUES(userna,passwo);
END$
CALL t_pro('xixi','01010')$
SELECT * FROM admin;
案例2:创建存储过程或函数实现传入女神编号,返回女神名称和女神电话。
CREATE PROCEDURE b_id(IN bId INT,OUT bName VARCHAR(20),OUT bPhone VARCHAR(20))
BEGIN
SELECT NAME,phone INTO bName,bPhone
FROM beauty
WHERE id = bId;
END $
CALL b_id(3,@bna,@bpho)$
SELECT @bna,@bpho$
案例3:创建存储存储过程或函数实现传人两个女神生日,返回大小
CREATE PROCEDURE b_test(IN born1 DATETIME,IN born2 DATETIME,OUT result INT)
BEGIN
SELECT DATEDIFF(born1,born2) INTO result;
END $
案例4:创建存储过程或函数实现传入一个日期,格式化为XX年XX月XX日并返回。
CREATE PROCEDURE t_form(IN da DATETIME,OUT strDate VARCHAR(50))
BEGIN
SELECT DATE_FORMAT(da,'%y年%m月%d日') INTO strDate;
END $
CALL t_form(NOW(),@str)$
SELECT @str 日期;
案例5:创建存储过程或函数实现传入女生名称,返回 女生AND男生 格式的字符串。例如:传入: 小昭,返回:小昭 and 张无忌。
DROP PROCEDURE t_boy$
CREATE PROCEDURE t_boy(IN beName VARCHAR(20),OUT str VARCHAR(50))
BEGIN
SELECT CONCAT(beName,'and',IFNULL(boyName,'单身')) INTO str
FROM boys bo
RIGHT JOIN beauty b
ON b.boyfriend_id=bo.id
WHERE b.name = beName;
END $
CALL t_boy('柳岩',@str)$
SELECT @str 信息显示$
案例6:创建存储过程或函数,根据传入的条目数或起始索引,查询beauty表的记录。
DROP PROCEDURE t_beauty$
CREATE PROCEDURE t_beauty(IN startindex INT,IN sizenum INT)
BEGIN
SELECT * FROM beauty LIMIT startindex,sizenum;
END $
CALL t_beauty(3,5)$
二、流程控制
案例: 已知表stringcontent其中字段: id 自增长,content varchar (20),向该表插入指定个数的,随机的字符串 。
DROP TABLE IF EXISTS stringcontent;
CREATE TABLE stringcontent(
id INT PRIMARY KEY AUTO_INCREMENT,
content VARCHAR (20)
);
DELIMITER $
CREATE PROCEDURE str(IN insertcount INT)
BEGIN
DECLARE i INT DEFAULT 1;
DECLARE st VARCHAR(26) DEFAULT 'abcdefghigklmnopqrstuvwxyz';
DECLARE stindex INT DEFAULT 1;
DECLARE len INT DEFAULT 1;
WHILE i <= insertcount DO
SET len = FLOOR(RAND()*(26-stindex+1)+1) ;
SET stindex = FLOOR(RAND()*26+1);
INSERT INTO stringcontent(content) VALUES (SUBSTR(st,stindex,len));
SET i=i+1;
END WHILE;
END$
CALL str(10)$
SELECT * FROM stringcontent$
|