/*
数据库的基本业务认知
数据库软件的认知和客户端工具认知
数据库系统的认知
数据库软件安装和环境搭建
数据库常用的命令
数据库用户和权限
编码管理
数据库管理
表(权限,创建 字段名 类型 约束 表的修改 删除)
DML语句【最核心 最重要】--- 操控数据
insert update delete
select【难点重点】
投影查询
选择查询
连表查询
子查询
视图
MySQL数据库的应用技术---视图
什么是视图?
英文: view ---看见得东西
为什么需要视图?
存在问题:
复杂得查询语句:每一次使用都需要编写,执行,能不能只写一次,后面可以重复调用--需要共享
希望表中的一些字段分享的时候不被其他用户看见,只让其他用户获取我想让他看见的数据
可不可将查询语句进行封装,简化子查询操作
最终的目的就是希望保存sql语句,简化调用执行过程,掩藏数据
解决问题:
需要一个技术来实现功能,需要=一个有名字的空间存储想要做的事情
需要的时候调用
MySQL中提供了视图
视图的概述:
视图是一个存储数据库中虚表,视图表中没有数据,只有映射关系,真正的数据在视图关联的实际的表中
视图创建方法
create view 视图 as 查询语句
使用视图 和使用表是一样的
查看视图
desc 视图名字
select * from information_schema.VIEWS;
show create view 视图名字
删除视图
drop view 视图名
注意事项:
因为视图存在数据中的映射关系,也是占用存储空间,不能随意创建视图
视图关联的表可能被删除,出现视图还在,表不在
创建视图考虑复用性和使用性
主要的应用场景---【保护数据,选择性分享数据】
有一个小问题的出现:
原本:
数据库只负责数据存储 修改 获取 删除,数据的处理都交给了业务代码。
后来:
后来随着我们的业务越来越大,越来越复杂数据也越来越大
数据库获取数据传输到代码中处理,输出传速度以及代码业务处理压力
但数据库很闲--- 将业务处理转换一部分到数据
加入需求 转账 A-B 500
常规处理
一次select
俩车update
为了解决问题,要求数据库中可以编写业务---开发了一门语言--plsql(依赖数据库环境的语言)
plsql:
一门类似c的语法的完整地数据库端地编程语言【完整度--数据库大小】
探索---完整地plsql【Oracle 数据】
MySQL中plsql支持地比较晚,支持语法有所欠缺
MySQL中支持俩种方式编写业务脚本
存储过程
自定义函数
MySQL中不能做的
离开这俩个载体自由编写业务代码块
*/
/*
MySQL中的存储过程
解释:
存储类似函数的一种定义规范,或者封装代码规范
创建语法
create procedure 【if not exists】 存储名(【[in/out/inout] 参数名 参数类型...】)
定义信息
begin
存储过程需要业务内容
end
备注:
存储过程名:标识符的定语语法规范 要求--以pro_开头
参数:可以有0个或多个参数,是我们在调用存储过程的时候需要传入的数据,
参数前面可以加in/out/inout等标识,标识参数类型,
in---调用者传入的信息
out--用户存储过程执行过程需要返回给调用者的数据,存储
定义信息:编写注释信息
定义变量: 用户定义变量存储信息
存储过程业务:编写业务
*/
/*
创建一个简单的存储过程---获取员工和供应商信息
存储过程业务内容以begin 开头 以end结束
数据库中 每一句语句都以;结束
遇到;就以为结束
为了解决分号的问题--提供方式就是临时将结束符号改成其他符号
语法: delimiter 临时结束符号-- //或者$$
调用存储过程:
call 存储过程名字(实参列表);
删除存储过程
drop procedure【if exists】 存储过程名
*/
-- 修改结束符号
DELIMITER //
-- 创建
CREATE PROCEDURE pro_empandsup()
COMMENT '这是一个用户显示员工所有信息和供应商所有的信息的存储过程'
BEGIN
-- 查询所有的员工
SELECT * FROM _employeelist;
-- 查看所有的供应商
SELECT * FROM _vendors;
-- 当前用户
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.流程控制语句
条件判断:
if elsif else end if
语法
if 条件表达式 then
执行语句
else
执行语句
endif
if 条件表达式 then
执行语句
endif
if 条件表达式1:then
执行语句
elsif 条件表达式2 then
执行语句
else
执行语句
endif
选择
case when else end case
语法:
case【条件值】
when 条件then
执行语句
when 条件 then
else
执行语句
end case
循环语句
1.while
while 条件表达式 do
执行语句
end while;
2.loop
语法:
名字:loop
执行语句
leave ---结束loop
end loop;
3.repeat
语法:
repeat
执行语句
until 结束条件 end repeat
7.数组--游标
8.函数的存储过程
参数的传递
*/