MySQL数据库对视图和存储过程的练习

基于Mysql示例数据库的存储过程练习 基于Mysql示例数据库的存储过程练习 此处是数据库的脚本(见表语句,包括数据),执行方法这里就不介绍了! 一、第一个入门示例,创建存储过程,getAllProducts USE classicmodels;-- 选择数据库 SHOW TABLES; delimiter // CREATE PROCEDURE getAllProducts () BEGIN SELECT * FROM produ... 阅读详情
  • 如何创建视图和存储过程都不再说了,下面直接看看练习。
  • 参考书籍:
    《数据库系统概论》第五版:王珊

先来看下数据库:

在这里插入图片描述

  • 下面是问题:
    在这里插入图片描述

下面是代码:

  • 经过实际的编写正常执行,运行结果和预期一样
-- 后面跟的 select * 查询语句,是为了测试试图的正确性,不用写。 

-- 1. 男雇员 -- 
create view employee_mal
as 
select * from employee 
where sex='男';

select * from employee_mal;

-- 2.创建客户订购产品的 customer_order -- 
create view customer_order
as
select c.companyname, o.* from customer as c, sell_order as o 
where c.customerid = o.customerid;

select * from customer_order;
-- 下面还要查询 某公司对应的订单信息,接着关联查询,题中给的是 通恒机械,公司全称是通恒机械有限公司,我就用了一个模糊查询like -- 、
select * from (select * from customer_order where companyname like '通恒机械%') as c, product as p
where c.productid = p.productid; 

-- 3. 和上面一样-- 
create view em_order 
as
select e.employeename, po.* from employee as e, purchase_order as po
where e.employeeid = po.employeeid; 

select * from em_order;
-- 接着需要使用聚合函数,分组函数 -- 

select employeename, avg(purchaseordernumber) as avg, max(purchaseordernumber) as max, min(purchaseordernumber) as min 
from em_order GROUP BY employeeid;


-- 4. -- 
create view paper_order 
AS
select s.employeeid, p.* from product as p, sell_order as s
WHERE s.productid = p.productid and productname = '打印纸';

select * from paper_order;


-- 5.
CREATE view proc_select 
as 
select * from employee;


select * from proc_select;

--  6.
delimiter $$
CREATE PROCEDURE proc_empolyee_orderb( name char(10))
BEGIN
		declare id  int;
		declare num1  int;
		declare num2  int;
		-- 三表关联性能太差了,分步执行,先求 id
		select employeeid into id from employee where employeename = name;
		select sum(c.sellordernumber*p.price) into num1  from sell_order as c, product  as p
where c.productid = p.productid and employeeid = id;
		-- select salary into num1 from employee where employeename=name;
		set num2 = num1 * 0.05;
		select num2;
end $$
delimiter ;

call proc_empolyee_orderb('蔡慧敏');

# 若报错执行如下语句: 以内数据库的设置不同吧
select version(),
@@sql_mode;SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));


select  *  from purchase_order as c, product  as p
where c.productid = p.productid;


-- 7.
delimiter $$
CREATE PROCEDURE proc_customer_order5( name char(10))
BEGIN
		declare id  int;
		declare error_info  varchar(50);
		select customerid into id from customer where companyname = name;
		-- 判断为Null值,要用 is ,不能使用 = 号!!
		if id is Null then
			set error_info = '该公司没有订购商品信息';
			select error_info;
		else 
			select c.companyname, c.contactname, p.productname, p.price, s.sellordernumber 
			from customer as c, sell_order as s, product as p
			where c.customerid = s.customerid and c.companyname = name and s.productid = p.productid;
		end if;
				
		
end $$
delimiter ;

call proc_customer_order5('通恒机械有限公司');
MySQL创建数据库(CREATE DATABASE语句) 数据库可以看作是一个专门存储数据对象的容器,这里的数据对象包括表、视图、触发器、存储过程等,其中表是最基本的数据对象。在 MySQL 数据库中创建数据对象之前,先要创建好数据库。 在 MySQL 中,可以使用CREATE DATABASE语句创建数据库,语法格式如下: CREATE DATABASE [IF NOT EXISTS] <数据库名> [[DEFAULT] CH... 阅读详情

相关推荐

MyEclipse DB Browser连接MySQL配置

MyEclipse DB Browser连接MySQL配置   1、打开MyEclipse   2、选择菜单:Window/Open Perspective/MyEclipse Database Explorer,点这儿OK,在左边打开DB Brower窗口。   3、在DB Brower窗口内任意空白处击右键,选择New命令,弹出Database Driver窗口   4、本

几鹰 4170

数据库第十次作业——视图

创建视图“view_info”,查询所有员工姓名、员工联系电话、车间地址、车间主任姓名、主任联系方式 查看“view_info”视图字段信息 创建视图“view_ chisel”,查询“Chisel”所在车间的所有员工姓名、员工联系电话、车间地址 查看库中所有表 创建视图“view_ standard”,查询生产出质量达标产品的产品编号、员工姓名、员工联系电话 查看“view_ standard”视图创建语句 创建视图“view_ product”,查询所有产品的产品编号、是否合格、员工号、员工

L143141的博客 872

MYSQL-创建数据库 CREATE DATABASE (十一)

MYSQL创建数据库语法 CREATE DATABASE

口袋里的小龙的专栏 1403

数据库课程设计练习- 视图的使用

数据库资料见下文 视图的特点: 逻辑独立性,有助于简化查询,提高安全性 但是本质上不能加快查询效率,因为对视图的操作,都会转化为对视图的基本表的操作。 # 创建视图 -- create view view_f_em AS -- select * from employee -- where sex = '女'; -- # 查询视图 -- select * from view_f_em; -- Create view v_de_co(departmentname, sum) -- AS --.

pythonstrat的博客 1138

UE5.5 PCGFrameWork程序化内容生成实战指南

本文是UE5.5 PCGFrameWork程序化内容生成的实战指南。详细介绍了从点云采样、DynamicMesh几何生成到子图与蓝图扩展的核心工作流。通过实战案例演示如何利用该框架高效构建丰富的程序化场景,为技术美术、独立开发者及爱好者提供从入门到进阶的系统性指引。

tea88的博客 920

算法面试八股文『 基础知识篇 』

个人整理的算法面试基础知识八股文,内容较详细。

SG_teresa's blog 4336

实验四 数据更新和视图创建

实验四 数据更新和视图创建

一般路过底层打工人的博客 1496

代码审计工具学习之Seay(安装以及初步认识)

目录 1.1名词解释 1.2代码审计的重要性 1.3代码审计的步骤 1.4代码审计的内容 1.5常见的代码审计工具 2 Seay 2.1什么是Seay 2.2Seay的安装过程 3典型漏洞分析 3.1什么是命令注入漏洞 3.2 如何理解命令注入漏洞 3.3 如何防御命令注入漏洞 4 利用工具对命令注入漏洞进行分析 4.1DVWA靶场命令注入漏洞分析 4.2 Pikachu靶场命令注入漏洞分析 1.1名词解释 软件代码审计是对编程项目中源代码的全面...

weixin_52515588的博客 2万+

sql视图习题

根据视图cj_student创建视图cj_tj,包含课程名,不及格人数,不及格人姓名列表(按姓名升序,以 | 分割),按照课程名降序排列。其中客户表cutomer表。已建有视图cj_student,视图中包含所有成绩不及格(含没有成绩)的学生的学号,姓名,课程名,成绩,按成绩降序排序。#建立视图cj_student,视图中包含所有成绩不及格(含没有成绩)的学生的学号,姓名,课程名,成绩,按成绩降序排序。建立视图v_sc,通过视图可以查询计算机系学生的成绩信息,包括学号,姓名、课程号,课程名、成绩。

Enduranc_e的博客 1462

Unity游戏开发客户端面经——数据结构(初级)

Unity游戏开发客户端面经 之 数据结构篇

Sea3752的博客 1万+

CHI里的Error handling机制

本文讲解了CHI里的Error handling机制。

W1Z1Q的专栏 2498

大华的SQL技术文档

。。。

yuanlaishidahuaa的博客 4117

实战指南:UOS专业版命令行高效下载离线安装包及依赖

本文提供了一份UOS专业版离线安装包的实战下载指南。针对无外网环境下的软件部署难题,详细介绍了如何通过命令行精准获取软件包名,并利用`apt download`命令高效下载主程序及其所有依赖。文章重点解析了使用`apt install --dry-run`模拟安装来完整获取依赖包的方法,并给出了离线安装、问题排查及自动化脚本编写等高级技巧,帮助管理员和运维人员实现可靠的批量离线部署。

honey的博客 1108

MYSQL存储过程和存储函数-数据库实验五

1. 掌握通过 SQL 语句 CREATE PROCEDURE 创建存储过程的方法。2. 掌握使用 SQL 语句 CALL 调用存储过程的方法。3. 掌握使用 SQL 语句 ALTER PROCEDURE 修改存储过程的方法。4. 掌握使用 SQL 语句 DROP PROCEDURE 删除存储过程的方法。5. 掌握使用 CREATE FUNCTION 创建存储函数的方法。6. 掌握使用 SQL 语句 ALTER FUNCTION 修改存储函数的方法。7. 掌握使用 SQL 语句 DROP FUNCTION

m0_51657509的博客 8905

详解【计算机类&面试真题】军队文职考试——第7期:C盘格式化需要注意什么?| 两台笔记本连起来后ping不同,可能存在哪些问题?| 模拟信号到数字信号是如何转化的?| 计算机由哪些部件组成?

这是我分享的系列面试知识——军队文职(计算机类)面试真题详解(第7期)。本期分享:两台笔记本连起来后ping不同,你觉得可能存在哪些问题?模拟信号到数字信号是如何转化的?谈一谈计算机由哪些部件组成?如何加强计算机网络安全管理?若通过域名无法访问,而通过IP地址能访问。这是怎么回事?你将如何解决?谈一谈C盘格式化需要注意什么?开放类题目:如果应聘的岗位和你想的差距很远,你怎么办?

追光者♂:记录、分享、总结、提升,现象级专栏《Python从入门到人工智能》作者,无惧黑暗,坚信曙光 1917

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

5、MySQL修改数据库:ALTER DATABASE用法简介

在 MySQL 数据库中只能对数据库使用的字符集和校对规则进行修改,数据库的这些特性都储存在 db.opt 文件中。下面我们来介绍一下修改数据库的基本操作。 在 MySQL 中,可以使用 ALTER DATABASE 来修改已经被创建或者存在的数据库的相关参数。修改数据库的语法格式为: ALTER DATABASE [数据库名] { [ DEFAULT ] CHARACTER SET <字符集名> | [ DEFAULT ] COLLATE <校对规则名>} 语法说明如下: A

you can you up up up的博客 2709

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Mysql数据库:存储过程

本文主要介绍mysql数据库的存储过程,包含了一系列用于执行特定任务的SQL语句集合,可通过调用过程名快速高效的执行一系列复杂的SQL语句,详细阐释如何创建和调用存储过程,希望对你有帮助!

十七拾的博客 4311

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

mysql 新建database_MySQL创建数据库(CREATE DATABASE语句)

在MySQL 中,可以使用CREATE DATABASE 语句创建数据库,语法格式如下:CREATE DATABASE [IF NOT EXISTS] [[DEFAULT] CHARACTER SET ][[DEFAULT] COLLATE ];[ ]中的内容是可选的。语法说明如下::创建数据库的名称。MySQL 的数据存储区将以目录方式表示 MySQL 数据库,因此数据库名称必须符合操作系统的文...

weixin_30441727的博客 7047

mysql alter database_MySQL修改数据库:ALTER DATABASE用法简介

在MySQL数据库中只能对数据库使用的字符集和校对规则进行修改,数据库的这些特性都储存在 db.opt 文件中。下面我们来介绍一下修改数据库的基本操作。在 MySQL 中,可以使用ALTER DATABASE来修改已经被创建或者存在的数据库的相关参数。修改数据库的语法格式为:ALTER DATABASE [数据库名] {[ DEFAULT ] CHARACTER SET |[ DEFAULT ]...

weixin_35084134的博客 2393

MySQL修改数据库:ALTER DATABASE用法简介

数据库创建好后也是可以修改的,下面我们来介绍一下修改数据库的基本操作 基本语法 在 MySQL 中,可以使用 ALTER DATABASE 或 ALTER SCHEMA 语句来修改已经被创建或者存在的数据库的相关参数。修改数据库的语法格式为: ALTER DATABASE [数据库名] { [ DEFAULT ] CHARACTER SET <字符集名> | [ D...

MYSQL安装教程 2077

mysql 对视图的操作_mysql之对视图的操作

1. 为什么要使用视图?为了提高复杂SQL语句的复用性和表操作的安全性,MySQL数据库管理系统提供了视图特性。所谓视图,本质上是一种虚拟表,在物理上是不存在的,其内容与真实的表相似,包含一系列带有名称的列和行数据。但是,视图并不在数据库中以储存的数据值形式存在。行和列数据来自定义视图的查询所引用基本表,并且在具体引用视图时动态生成。视图使开发者只关心感兴趣的某些特定数据和所负责的特定任务,只能看...

weixin_39828960的博客 497

db文件怎么修改_详解MySQL数据库的db.opt文件含义及作用

概述MySQL数据库存放数据目录里的db.opt文件是MySQL建库过程中自动生成的。细心的朋友可能会发现有时候在MySQL数据库的某些库目录下有个db.opt文件,那这个文件是干什么用的呢?如果你用记事本等编辑器打开看的话,内容很简单,是用来记录该库的默认字符集编码和字符集排序规则用的。db.optMySQL的每个数据库目录中有一个文件db.opt,该文件主要 用来存储当前数据库的默认字符集和字...

weixin_39856607的博客 2466

mysql中查看所有存储过程和函数

直接po图和代码 参考网页 #查询数据库中的存储过程 SHOW PROCEDURE STATUS; #查询数据库中的函数 SHOW FUNCTION STATUS; #查看存储过程或函数的创建代码 SHOW CREATE PROCEDURE girls.myP1; show create FUNCTION girls.fun1; #mysql中查看所有存储过程和函数 #查看...

一只苟延残喘的卑微蝼蚁 1万+

MySQL的存储过程总结及练习

1. MySQL的存储过程 1.1 什么是存储过程及作用 1.1.1 什么是存储过程 存储过程是一组为了完成特定功能的 SQL 语句集合。使用存储过程的目的是将常用或复杂的工作预先用 SQL 语句写好并用一个指定名称存储起来,这个过程经编译和优化后存储在数据库服务器中,因此称为存储过程。当以后需要数据库提供与已定义好的存储过程的功能相同的服务时,只需调用“CALL存储过程名字”即可自动完成。 【人话】:把特定功能封装成一个函数,这个函数可以单独直接调用返回结果,也可以传入参数返回相关结果。 使用案列: 为了

A496608119的博客 1556

达梦数据库的Schema和 MySQL 的 Database

总的来说,你可以这样理解:当你想实现"一应用一用户,其数据自成一体"时,达梦的用户及其默认模式与 MySQL 的Database在逻辑上很相似。当你想实现"一个应用下,多个逻辑模块共享一个数据库连接,但又需要数据隔离"时,达梦的单用户多模式特性提供了MySQL的Database所不具备的灵活性。

m0_59021776的博客 1224
上一篇: C语言实现简单 词法分析程序(编译原理)
下一篇: Vscode远程连接服务器,配置nginx
我是py呀
博客等级 码龄8年 205粉丝 130原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值