导读:

该文章为视图、存储过程、用户权限练习;

如果有不对的地方欢迎指出与补充;

该基础练习基于MySQL5.0以上;

语句格式:

1. 视图格式:

create view view_name[列名,列名.....] as select 子查询 with check option

其中with check option 作用是:在视图进行update\delete\insert操作时要保证更新、插入、删除的行满足视图定义中的谓词公式(既子查询中的条件表达式);

视图操作如正常表一样可以增删改查。

2.存储过程格式:

create procedure pro_name(in 参数名 类型,out 参数名 类别)

begin

过程体

end

3.用户权限格式:

create user 用户名 indentified by '密码'

--设置权限

grant 权限 on 数据库名.表名 to 用户@登录主机 identified by "用户密码";

视图:

(1)建立视图IS_STUDENT,视图中包含信息系全体学生的基本信息。(要求限制更新)

Create view IS_STUDENT as select * from student

Where sdept=’信息系’ with check option;

(2)建立视图CJ_STUDENT,视图中包含所有成绩不及格的学生的学号,姓名,课程名,成绩。

Create view CJ_STUDENT as select student.sno,sname,cname,grade from student,sc,course

Where student.sno=sc.sno and sc.cno=course.cno and (grade <60 or grade is null);

(3)建立视图AVG_CJ,视图包括学生的学号以及他们的平均成绩,按成绩降序排列。

Create view AVG_CJ as select sno ,avg(grade)

from sc where grade is null group by sno order by avg(grade) desc;

(4)根据视图IS_STUDENT,修改该视图中年龄都增加1。观察基本表Student中相应的哪些数据发生了变化。

Update IS_STUDENT set sage=sage+1;

select * from IS_STUDENT;

(5)在视图IS_STUDENT中插入新的记录,学号为9531103,姓名为张玉,女,21岁,计算机系。(是否能执行?若不行,为什么?)

insert into IS_STUDENT values('9531103','张玉','女',21,'计算机系');

不能执行,因为,违反了视图创建规则,计算机系不满足sdept中的信息系要求;

(6)根据视图CJ_STUDENT创建视图CJ_TJ,包含课程名,不及格人数,不及格人姓名列表,按照不及格人数降序排列。

Create view CJ_TJ as select cname,count(*),GROUP_CONSCAT(sname SEPARATOR ',') from CJ_STUDENT group by cname order by count(*) desc;

存储过程:

(1)建立存储过程course_grade:根据课程名参数,查询该课程的成绩表,包括学号,姓名,成绩,按学号升序排序。

CREATE PROCEDURE course_grade (in course_name varchar(20))

SELECT student.sno,sname,grade from student,sc,course WHERE student.sno=sc.sno and sc.cno =course.cno and cname=course_name ORDER BY sno;

DROP PROCEDURE course_grade;

CALL course_grade("计算机导论");

(2)建立存储过程search_grade:根据姓名和课程名参数,查询该学生相应的课程成绩,若存在成绩,则返回成绩值,否则返回NULL。

create procedure search_grade(in student_name char(10), in course_name varchar(20), out re_grade smallint, out rname char(10))

Begin

If( not exists

(

select * from student, sc, course

where student.sno = sc.sno

and sc.cno = course.cno

and sname = student_name

and cname = course_name) )

then set re_grade = null;

else

select grade into re_grade from student, sc, course

where student.sno = sc.sno

and sc.cno = course.cno

and sname = student_name

and cname = course_name ;

end if;

end ;

#创建成功

-- 执行存储过程

call search_grade('王大力','数据库原理',@grade, @rname);

select @grade, @rname;

call search_grade('王大力','高等数学',@grade, @rname);

select @grade, @rname;

(3)创建存储过程take_course:根据参数学号和课程号,完成选课功能(要求能够根据选课人数加以限制)。

要求:

§ 检查该学生选课门数是否超过3门,若超过,不插入记录;

§ 检查该课程选课人数是否已满(在course表里添加一个属性列,记录课程人数限制);

ü 选课人数已满:不插入记录;

ü 选课人数未满且未插入过:完成数据插入操作;

ü 选课人数未满,已插入过:不插入记录

§ 最后返回执行结果信息,例如:

ü 超过3门,返回-1;

ü 选课人数已满。返回0;

ü 选课人数未满且未插入过:返回1;

ü 选课人数未满已插入过:返回2

create procedure take_course (in student_no char(7), in course_no char(3), out i tinyint )

begin

if(select count(*) from sc where sno= student_no) >= 3

then set i = 1;

else

if(select count(*) from sc where cno = course_no) >= 5

then set i= 0;

else

if exists (select * from sc where sno = student_no and cno = course_no)

then set i = 2;

else

insert into sc(sno, cno) values(student_no, course_no);

set i = 1;

end if ;

end if ;

end if ;

end ;

权限控制:

(1)创建超级用户admin,具有对所有数据库的所有访问权限,仅限本机连接(密码自行设置),并验证用户和权限设置是否正确。

CREATE user admin @localhost

IDENTIFIED by '123';

(2)创建管理员teacher_liu,具有对SC表、IS_STUDENT视图(实验5创建)的增删改查权限,并且具有授权的权限,允许从任意位置连接(密码自行设置),并验证用户和权限设置是否正确。

CREATE USER teacher_liu @'%' IDENTIFIED by '123456';

GRANT SELECT ,INSERT, UPDATE, DELETE on studentTable.sc TO teacher_liu @'%' WITH GRANT OPTION;

以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,官方群点击此处进入。

mysql视图存储_Mysql 视图、存储过程以及权限控制相关推荐

  1. mysql 视图用户_MySQL视图,存储过程,用户管理

    1. 视图 一张虚拟表,就是将一个经常被使用的查询作为一个虚拟表,开发者查询的时候不需要再次书写SQL,而是直接调用对应的视图就可,调用视图以后MySQL会执行这个查询SQL. # 创建视图 crea ...

  2. mysql 视图 教程_MySQL视图简介及基本操作教程

    前言 视图是数据库系统中一种非常有用的数据库对象.MySQL 5.0 之后的版本添加了对视图的支持. 认识视图 视图是一个虚拟表,其内容由查询定义.同真实表一样,视图包含一系列带有名称的列和行数据,但 ...

  3. mysql视图登录_mysql视图

    mysql视图机制 什么是视图 视图是一张虚拟的表,为什么是虚拟呢?因为视图与数据库中存在的表不太一样,前面我们创建的4张表都是包含数据的, 如用户信息,订单信息等,而视图则是不包含数据的,下面通过一 ...

  4. mysql视图应用_MySQL视图的概念与实际应用

    以下的文章主要是对MySQL视图的描述,其中包括MySQ视图L概述,以及创建MySQL视图-create view与修改MySQL视图--alter view等相关内容的具体描述,以下就是文章的具体内 ...

  5. mysql 视图 排序_MySQL 视图

    视图(view): 什么是视图: 视图就是将查询的结果集展示出来,视图就是一张表 为什么需要视图: 首先,视图并不能加快查询速度,因为视图中本身不存储数据 视图仅仅是村粗再数据字典中的一个定义,同时视 ...

  6. mysql视图参数_MySQL视图概述

    1.介绍 在传统关系型数据库里,视图有时也被称作虚表,是基于特定SQL结果集的虚拟数据表.在有些场合会变得很方便,例如:原有系统重构,旧的数据表A和B已经被拆分和合并到数据表C.D.F里面,为了实现平 ...

  7. mysql 视图 中文_Mysql视图-WEB资讯专栏-DMOZ中文网站分类目录-免费收录各类优秀网站的中文网站目录....

    1.初识视图 1.视图的概念和作用 什么是视图:是从一个或多个表中导出来的表,它是一种虚拟存在的表,表的结构和数据都依赖于基本表. 作用: 简化查询语句:简化用户的查询操作,使 1.初识视图 1.视图 ...

  8. mysql 视图优势_MySQL视图简介及优缺点

    在本教程中,您将了解一个叫作数据库视图的新数据库对象. 我们将讨论使用数据库视图的优缺点. 数据库视图是虚拟表或逻辑表,它被定义为具有连接的SQL SELECT查询语句. 因为数据库视图与数据库表类似 ...

  9. mysql 存储过程改用户_Mysql修改存储过程相关权限问题

    在使用mysql数据库经常都会遇到这么一个问题,其它用户定义的存储过程,现在使用另一个用户却无法修改或者删除等:正常情况下存储过程的定义者对它有修改.删除的权限:但是其它的用户就要相于的授权,不然无法 ...

最新文章

  1. Input type=“file“上传文件change事件只触发一次解决方案
  2. 一种通过scout ESI和CNN解码EEG运动想象四分类任务的新方法
  3. mxnet METRIC自定义评估验证函数
  4. 前端每周清单半年盘点之 PWA 篇
  5. android gps定位工具类,工具类之LocationUtils(定位工具类)
  6. 如何加入IETF 如何发表自己的RFC
  7. RHEL修改最大文件打开数,关于epoll socket Too many open files问题的解决
  8. 全新 Win 9 概念 界面漂亮极了
  9. 电子设计大赛作品_第十四届电子设计大赛圆满结束!
  10. Qt 【关于控件样式,鼠标进入、离开、点击】
  11. 经典面试题(7):下面的代码运行结果是什么么?
  12. 乱七八糟的编程技巧(随机数、效率)和网站(http://bytew.net/OIer/)
  13. (33)FPGA分频设计-偶数分频(第7天)
  14. 自动化测试辅助工具——FirePath
  15. html更改提示框内容,JS修改内容提示框字体样式
  16. Linux下MySQL 5.7在线镜像安装
  17. 牛客——The Chivalrous Cow(bfs板题)
  18. ubuntu下安装三维渲染引擎OSG详解
  19. uva10306(dp)
  20. 身份证校验和获取身份证信息的方法

热门文章

  1. 菜鸟教程android布局,Android菜鸟级教程
  2. linux+基因组字符替换,liftover基因组版本直接的coordinate转换
  3. 七度空间338多少钱一包_2020黄果树香烟一包多少钱 黄果树香烟价格表图排行榜...
  4. php mvc教程 文档,PHP培训教程教你快速打造PHP MVC框架[PHP基础教程]
  5. Win10右键没有压缩选项的解决教程
  6. 谷歌浏览器该扩展程序未列在Chrome网上应用店中解决方法
  7. Mybatis源码分析之(四)mapper访问数据库的底层原理(代理方法中具体访问数据库的细节)
  8. 学习Spring Boot:(二十五)使用 Redis 实现数据缓存
  9. 孩子学计算机最佳年龄,孩子学编程最佳年龄是多少
  10. Linux如何清除last信息,linux清除last、lastb和history记录