数据库原理与应用【2025-2026-2】

赵春、毛红霞、李驰、刘福刚、曾丽

目录

  • 1 两课设计
    • 1.1 教学大纲
    • 1.2 教案
      • 1.2.1 李驰老师-教案
        • 1.2.1.1 24级数媒4班-教案
      • 1.2.2 毛红霞老师-教案
        • 1.2.2.1 24级数字媒体2班教案
        • 1.2.2.2 24级数字媒体3班教案
    • 1.3 课堂反思
      • 1.3.1 李驰老师-课堂反思
        • 1.3.1.1 24数媒4班
          • 1.3.1.1.1 3月9日(第2周第1次课)
          • 1.3.1.1.2 3月16日(第4周第1次课)
      • 1.3.2 毛红霞老师-课堂反思
        • 1.3.2.1 24级数字媒体2班
          • 1.3.2.1.1 3月12号(第2周第2次课——除运算)
          • 1.3.2.1.2 3月18号(第3周第1次课——关系代数习题课)
        • 1.3.2.2 24级数字媒体3班
          • 1.3.2.2.1 3月12日(第2周第2次课——连接、除)
          • 1.3.2.2.2 3月17日(第3周第1次课——关系代数习题课)
    • 1.4 课程反思
      • 1.4.1 李驰老师-课程反思
      • 1.4.2 毛红霞老师-课程反思
    • 1.5 高阶课堂安排
    • 1.6 教材案例配套数据表
    • 1.7 实验数据库Northwind
    • 1.8 数据库软件安装
  • 2 数据库基本概念
    • 2.1 学习内容及要求
    • 2.2 课堂设计(教案)
    • 2.3 内容要点解析
    • 2.4 电子课件
    • 2.5 参考文献
  • 3 关系数据库
    • 3.1 学习内容及要求
    • 3.2 课堂设计(教案)
    • 3.3 内容要点解析
    • 3.4 电子课件
    • 3.5 参考文献
    • 3.6 微课视频
    • 3.7 翻转教学
      • 3.7.1 学习任务单
  • 4 关系代数
    • 4.1 学习内容及要求
    • 4.2 课堂设计(教案)
    • 4.3 内容要点解析
    • 4.4 电子课件
    • 4.5 参考文献
    • 4.6 微课视频
    • 4.7 翻转教学
      • 4.7.1 学习任务单
  • 5 关系代数(习题课)
    • 5.1 学习内容及要求
    • 5.2 课堂设计(教案)
    • 5.3 内容要点解析
    • 5.4 电子课件
    • 5.5 微课视频
  • 6 SQL数据类型与数据定义语句
    • 6.1 学习内容及要求
    • 6.2 课堂设计(教案)
    • 6.3 内容要点解析
    • 6.4 电子课件
    • 6.5 参考文献
    • 6.6 微课视频
    • 6.7 上机实验
    • 6.8 翻转教学1
      • 6.8.1 学习任务单
      • 6.8.2 翻转课件
      • 6.8.3 翻转视频
      • 6.8.4 讨论问题
    • 6.9 翻转教学2
      • 6.9.1 学习任务单
  • 7 SQL单表基本查询
    • 7.1 学习内容及要求
    • 7.2 课堂设计(教案)
    • 7.3 内容要点解析
    • 7.4 电子课件
    • 7.5 参考文献
    • 7.6 微课视频
      • 7.6.1 单表查询与聚合函数
      • 7.6.2 图形化单表查询
    • 7.7 上机实验
    • 7.8 翻转教学
      • 7.8.1 学习任务单
  • 8 SQL统计查询
    • 8.1 学习内容及要求
    • 8.2 课堂设计(教案)
    • 8.3 内容要点解析
    • 8.4 电子课件
    • 8.5 参考文献
    • 8.6 微课视频
    • 8.7 上机实验
    • 8.8 翻转教学
      • 8.8.1 学习任务单
  • 9 SQL多表查询
    • 9.1 学习内容及要求
    • 9.2 课堂设计(教案)
    • 9.3 内容要点解析
    • 9.4 电子课件
    • 9.5 参考文献
    • 9.6 微课视频
    • 9.7 上机实验
    • 9.8 翻转教学
      • 9.8.1 学习任务单
  • 10 SQL嵌套子查询
    • 10.1 学习内容及要求
    • 10.2 课堂设计(教案)
    • 10.3 内容要点解析
    • 10.4 电子课件
    • 10.5 参考文献
    • 10.6 微课视频
    • 10.7 上机实验
    • 10.8 翻转教学
      • 10.8.1 翻转视频
      • 10.8.2 翻转课任务分配
      • 10.8.3 翻转课流程安排
      • 10.8.4 学习任务单
      • 10.8.5 查询语句编写秘籍
  • 11 SQL数据更新
    • 11.1 学习内容及要求
    • 11.2 课堂设计(教案)
    • 11.3 内容要点解析
    • 11.4 电子课件
    • 11.5 参考文献
    • 11.6 微课视频
    • 11.7 上机实验
    • 11.8 SQL编程综合习题课(高阶翻转)
      • 11.8.1 翻转学习任务单
      • 11.8.2 翻转视频
      • 11.8.3 翻转课件
    • 11.9 备份资料
      • 11.9.1 学习任务单
  • 12 索引和视图
    • 12.1 学习内容及要求
    • 12.2 课堂设计(教案)
    • 12.3 内容要点解析
    • 12.4 电子课件
    • 12.5 参考文献
    • 12.6 微课视频
    • 12.7 上机实验
    • 12.8 翻转教学
      • 12.8.1 学习任务单
      • 12.8.2 翻转课件
  • 13 数据库设计
    • 13.1 学习内容及要求
    • 13.2 课堂设计(教案)
    • 13.3 内容要点解析
    • 13.4 电子课件
    • 13.5 参考文献
    • 13.6 微课视频
    • 13.7 上机实验
    • 13.8 数据库设计-翻转方案I(分班级实施)
      • 13.8.1 学习任务单
      • 13.8.2 翻转视频
      • 13.8.3 翻转课件
      • 13.8.4 课前作业及讨论
    • 13.9 数据库设计-翻转方案II(分班级实施)
      • 13.9.1 学习任务单
      • 13.9.2 翻转视频
      • 13.9.3 翻转课件
      • 13.9.4 问答总结
      • 13.9.5 技巧总结
      • 13.9.6 案例练习
  • 14 规范化理论-1
    • 14.1 学习内容及要求
    • 14.2 课堂设计(教案)
    • 14.3 内容要点解析
    • 14.4 电子课件
    • 14.5 参考文献
    • 14.6 翻转教学
      • 14.6.1 学习任务单
  • 15 规范化理论-2
    • 15.1 学习内容及要求
    • 15.2 课堂设计(教案)
    • 15.3 内容要点解析
    • 15.4 电子课件
    • 15.5 参考文献
    • 15.6 翻转视频
    • 15.7 上机实验
    • 15.8 翻转教学
      • 15.8.1 学习任务单
  • 16 事务、存储过程与触发器
    • 16.1 学习内容及要求
    • 16.2 课堂设计(教案)
    • 16.3 内容要点解析
    • 16.4 电子课件
    • 16.5 参考文献
    • 16.6 微课视频
    • 16.7 翻转教学
      • 16.7.1 学习任务单
  • 17 数据库高阶挑战性项目实践Ⅰ
    • 17.1 学习内容及要求
    • 17.2 实践任务
    • 17.3 课堂设计(教案)
    • 17.4 参考文献
    • 17.5 微课视频
  • 18 数据库高阶挑战性项目实践Ⅱ
    • 18.1 学习内容及要求
    • 18.2 实践任务
    • 18.3 课堂设计(教案)
    • 18.4 电子课件
    • 18.5 参考文献
    • 18.6 微课视频
    • 18.7 数据预处理总结
  • 19 课程扩展-数据备份与导入导出
    • 19.1 微课视频
    • 19.2 参考文献
  • 20 课程设计
    • 20.1 课堂设计(教案)
    • 20.2 课程设计及项目报告模板
内容要点解析
  • 1 视图
  • 2 索引

视图

视图的引入

为什么需要视图呢?让我们来考虑这样两种比较典型的情形:

1、多类用户均可访问的一张表存储了大量数据。每一类用户只对表中的一部分数据感兴趣,或者说只应该看到表中的一部分数据。比如对于学生表Students(id,name,...,dept),我们有这样的想法:各系的用户只能看到自己所在系的数据:

select * from Students where dept='计科系'  //计科系用户可以看到的本系的数据

select * from Students where dept='电子系'  //电子系用户可以看到的本系的数据

........

select * from Students where dept='机械系'   //机械系用户可以看到的本系的数据

但实际的情况是,如果谁都可以直接访问Students这张表的话,那么以上出于安全性的考虑就很难实现。因为只需要修改一下查询条件就可以看到其他系的数据了。在这种情况下,表中所有的数据均暴露给了全部用户,不管这个用户该看到,还是不该看到!

2、用户需要的数据分散在不同的表中,需要通过频繁的多表连接来获取这些数据。对于用户来讲,这是一件很麻烦的事情。这种情况带来的问题就是用户使用数据很不方便。

因此,主要基于以上原因,提出了视图技术。通过视图更加直接地给用户提供他所真正需要的数据,保障数据的安全性和使用的方便性。

什么是视图

这里以第1种情况为例来说明:假设现在计科系的用户希望查询计科系的某些学生信息,那么整个学生表对于该用户而言,存在着不安全和不方便的情况。因为用户可能不该看某些数据,或者根本不想看自己不关心的数据。

如果我们不将整表直接呈现给用户,而是在之前执行一遍下述SQL语句:

select * from Students where dept='计科系' 

将这条语句的执行结果呈现给用户,则数据会变得更加安全,因为我们将计科系以外的数据隐藏了起来;同时数据也变得更加利于使用,因为计科系的数据显然比全部数据要少得多。

所以,数据库将这样的SQL语句存储下来,当用户需要这些数据的时候,便将这条SQL拿出来执行一遍即可,那么这就是视图的由来。说的简单一点,视图就是存储在数据库中的SQL查询语句。

视图的特点

让我们先来理清几个概念:

1、基表(基本表):数据库中实际存在的表。

2、虚表

用户之所以可以看到视图中的数据,是因为我们提前执行了视图定义中的SQL查询语句,所以视图中的数据归根到底是从基表中导出来的部分数据。但是对于用户来说,他可能没有注意到这点,因为他们操作视图和操作基表的体验是一样的,所以对于用户来讲,视图也是表;但我们知道视图并不是真实存在的表,因此视图被称作虚表

对于视图,我们需要理解和掌握以下的要点:

1、视图可以从基表中导出,也可以从其它视图导出;但归根到底,视图不能脱离基表而存在。

2、视图仅仅存储视图定义语句,并不会存储实际数据。因为视图就是从基表中导出的,所以相同的数据在基表中早已存在,没必要重复存储。

3、由于所有对基表的数据更新都限定在一张表中完成 ,因此对视图数据的更新也自然地受到了限制。当我们对视图中的数据进行更新时,必须要保证所更新的列在视图中存在,且均分布在同一张基表中。

SQL创建视图

CREATE VIEW  创建一个虚拟表,该表以另一种方式表示一个或多个表中的数据。

语法:

CREATE VIEW [ < database_name > .] [ < owner > .] 

    view_name [ ( column [ ,...n ] ) ] AS select_statement [ WITH CHECK OPTION ] 

【例1】请创建视图wd_view,其中包括职工姓名、出生日期、参工日期和工作部门。

create view wd_view

as

select w.id  wid,w.name,birthday,joinday,departID did,d.name depart

from workers w,depart d where w.departID=d.id

【例2】请基于视图wd_view创建视图wd_market,其中包括市场部的职工信息。

create view wd_market

as

select * from wd_view 

where depart=‘市场部’ with check option 

提醒:这里这条SQL语句加了选项:with check option,作用是当用户对本视图中的数据进行更新时,都必须强制确保数据满足where后面的条件,即不管是新增、修改数据都必须保证员工所在部门是市场部。

【例3】检索视图wd_view中所有姓孙的职工。

select * from wd_view where name like '孙%'

提醒:使用视图来检索数据,可以像对表一样。

SQL修改视图

语法:

ALTER VIEW [ < database_name > .] [ < owner > .]

  view_name [ ( column [ ,...n ] ) ] AS    select_statement [ WITH CHECK OPTION ] 

修改视图和创建视图比较类似,不再赘述。

SQL删除视图

语法:

DROP VIEW [ < database_name > .] [ < owner > .] view_name 

【例4】使用SQL删除视图wd_view。

use Factory

go

  if exists(select table_name from information_schema.views where table_name='wd_view')

  drop view wd_view

go

说明:

1、use Factory是用于指定目标数据库;

2、select table_name from information_schema.views where table_name='wd_view'是用于查询目标视图是否已经存在;其中information_schema.view是存储视图信息的系统表。