-- =======root=======
-- 创建用户
CREATE USER xxx@'%' IDENTIFIED BY'1234';
-- 赋予权限
GRANT ALL ON warehouse.* TO xxx@'%';
-- =======xxx=======
USE warehouse
/*
数据库的基本业务知识
数据库软件的认识和客户端工具认识
数据库系统的认识
数据库软件安装和环境搭建
数据库常用命令
数据库用户和权限
编码的管理
数据库的管理
表(权限,创建,字段名,类型,约束,修改,删除)
DML语句:(最核心的东西)---操控数据【增删改查】
insert update delete ---增删改
select
投影(所有数据)
选择(有筛选)
联表(多个表查询)
子查询(联表解决不了的问题)
视图(简化代码)
数据库一开始只负责数据存储,修改,获取,删除,把数据的处理都交给了业务代码
后来业务越来越大,越来越复杂,数据量越来越大,数据库获取数据然后传输的过程中比较耗资源,输出的速度以及代码业务处理压力
所以数据库将一部分业务转化到数据----plsql(依赖数据库环境的语言)
plsql:一门类似c的语法的完整的数据库端的编程语言【完整度取决于数据库的大小】
完整的plsql:oracle数据库
MySQL中plsql:因为mysql支持的晚,支持语法有所欠缺
MySQL中支持两种方式编写业务:存储过程,自定义函数
MySQL中不能做的事:离开载体,自由编写业务代码块
*/
/*
mysql中的存储过程
解释:
存储类似函数的一种定义规范,或者封装代码规范
语法:
create procdfure【if not exists】 存储名([in/out/inout]参数名 参数类型,……)
定义信息
begin
定义变量
存储过程需要业务内容
end
备注: 存储过程名:按照标识符的语法规范去定义,要求以pro_开头
参数:可以有零个或多个参数,参数是调用存储过程时需要传入的数据
参数前面加in;out;inout等,表示参数类型
in--调用者传入的数据
out--用于存储过程执行过程需要返回给调用者的数据,存储
定义信息:编写注释信息
定义变量:用于定义变量存储信息
存储过程业务:编写业务
*/
/*
创建一个简单的存储过程---获取员工和供应商信息
数据库中,每一个语句后加分号
为了解决分号的问题,数据库提供了一种方式就是临时将结束符号改成其他符号
语法:
delimiter 临时结束符号:-- // 或者$$ 避免遇到;结束执行语句
调用存储过程
call 存储过程名(实参列表)
删除
*/
DELIMITER //
CREATE PROCEDURE pro_empandsup()
COMMENT '这是一个存储过程'
BEGIN
-- 查询所有员工
SELECT * FROM w_people;
SELECT * FROM w_supplier;
SELECT USER();
END//
-- 结束符修改
DELIMITER ;
-- 调用
CALL pro_empandsup()
-- 删除
DROP PROCEDURE pro_empandsup()
/*
1:关键字
系统提供的特殊含义的单词或者字母,例如:int varchar
2:标识符
3:注释
-- 单行注释
/ *
多行注释
* /
4:存储过程的变量定义
分类:MySQL用户变量(全局变量)
set @变量 = 初始值
使用 sql语句直接调用
局部变量
是定义在存储过程和函数里面的变量,只有在begin和end之间有效
定义语法:
declare 变量名 变量类型(长度)【default 默认值】
解释:
变量名:标识符定义,为了区分,一般会以var_开头
变量类型:按照数据库的字段类型定义
默认值:就是变量初始化信息
赋值以及运算
变量名 = / := +表达式
变量类型:
按照数据库中字段类型
5:运算符
数据库运算符
变量的运算:
set 变量名= 表达式;
6:流程控制语句
1)条件判断:if else and if
语法:
if 条件表达式 then
执行语句
else
执行语句
endif
if 条件表达式 then
执行语句
endif
if 条件表达式1 then
执行语句
elseif 条件表达式2 then
执行语句
else
执行语句
endif;
2)选择:
case when else end case
语法:
case 【条件值】
when 条件 then
执行语句
when 条件 then
执行语句
else
执行语句
end
3)循环语句
while
while 条件表达式 do
执行语句
end while;
loop
名字:loop
执行语句
leave 名字 -- 结束loop
end loop;
repead
repeat
执行语句
until 结束条件
end repeat;
7:数组--游标
8:函数和存储过程
参数的传递
*/
-- 用户变量
SET @mysql=123;
-- 查询
SELECT @mysql
-- 数据库中的数据赋值
SELECT p_wages INTO@mysql FROM w_people WHERE p_id='E1'
-- 定义局部变量
DELIMITER //
CREATE PROCEDURE pro_vardata()
COMMENT '这是一个定义局部变量的存储过程'
BEGIN
-- 定义变量
DECLARE var_num INT DEFAULT 1;
-- 显示
SELECT var_num;
-- 计算数据库的运算
SET var_num=var_num+1;
-- 输出
SELECT var_num;
-- 计算
SET var_num:=var_num*10;
-- 获取
SELECT var_num;
END//
DELIMITER ;
-- 调用
CALL pro_vardata();
-- 删除
DROP PROCEDURE pro_vardata
-- if条件运算存储过程
DELIMITER //
CREATE PROCEDURE pro_ifdemo()
COMMENT 'if条件语句'
BEGIN
-- 定义变量
DECLARE var_num_1 INT DEFAULT 0;
-- 计算
SET var_num_1 = 2;
-- 判断
IF var_num_1<2 THEN
-- shuchu
SELECT var_num_1 * 10;
ELSEIF var_num_1=2 THEN
-- 输出
SELECT var_num_1 * 100;
ELSE
-- 输出
SELECT var_num_1 * 1000;
END IF;
END ;
DELIMITER;
-- 调用
CALL pro_ifdemo();
-- 删除
DROP PROCEDURE pro_ifdemo;
-- 选择语句 case
DELIMITER //
CREATE PROCEDURE pro_casedemo()
COMMENT '选择语句处理'
BEGIN
-- 定义变量
DECLARE var_num INT DEFAULT 5;
-- 选择
CASE var_num
WHEN 2 THEN
SELECT var_num*10;
WHEN 5 THEN
SELECT var_num*100;
ELSE
SELECT var_num*1000;
END CASE;
END//
DELIMITER ;
-- 调用
CALL pro_casedemo();
-- 删除
DROP PROCEDURE pro_casedemo;
-- 显示计算1-100的和
-- 循环条件- while
DELIMITER //
CREATE PROCEDURE pro_whiledemo()
COMMENT '这是while'
BEGIN
-- 定义变量
DECLARE var_num INT DEFAULT 1;
DECLARE var_sum INT DEFAULT 0;
-- 循环计算
WHILE var_num<=100 DO
-- 计算
SET var_sum = var_sum + var_num;
-- 计数器变化
SET var_num = var_num + 1;
END WHILE;
-- 显示
SELECT var_sum;
END//
DELIMITER ;
-- 调用
CALL pro_whiledemo();
-- 删除
DROP PROCEDURE pro_whiledemo;
-- loop循环处理
DELIMITER //
CREATE PROCEDURE pro_loopdemo()
COMMENT'loop循环'
BEGIN
DECLARE var_num INT DEFAULT 1;
DECLARE var_sum INT DEFAULT 0;
-- loop循环
mloop:LOOP
-- 累加
SET var_sum = var_num + var_sum;
-- 判断计数器
IF var_num = 100 THEN
-- 离开loop
LEAVE mloop;
END IF;
-- 自增
SET var_num=var_num + 1;
END LOOP;
-- 输出
SELECT var_sum;
END //
DELIMITER ;
-- 调用
CALL pro_loopdemo();
-- 删除
DROP PROCEDURE pro_loopdemo;
-- repeat循环
DELIMITER //
CREATE PROCEDURE pro_repeat()
COMMENT 'repeat 操作'
BEGIN
-- 定义变量
DECLARE var_num INT DEFAULT 1;
DECLARE var_sum INT DEFAULT 0;
-- 循环
REPEAT
-- 累加
SET var_sum = var_sum + var_num;
-- 计数器变化
SET var_num=var_num+1;
-- 结束循环
UNTIL var_num >100 END REPEAT;
-- 输出
SELECT var_sum;
END//
DELIMITER ;
-- 调用
CALL pro_repeat;