SQLserver前五讲课堂笔记

第一讲

基本内容

  1. 为什么要学习数据库系统?
  2. 什么是数据库?
  3. 什么是数据库系统?
  4. 什么是数据库管理系统?
  5. 本课程学什么以及学到什么程度?

重点难点

  • 一组概念的区分:数据库、数据库系统和数据库管理系统
  • 熟悉表 的相关要素及术语
  • 熟悉数据库系统的构成(工作环境)
  • 了解数据库管理系统的功能:从用户角度和从系统角度

为什么要学习数据库系统?

传统社会:业务工作
信息社会:业务工作+计算机

什么是数据库?

数据库是电子化信息的集合。将信息规范化并使之电子化,形成电子信息“库”,以便利用计算机对这些信息进行快速有效的存储、检索、统计与管理

  • 数据库:Database
  • 数据库管理系统:Database Management System
  • 数据库应用:DataBase Application
  • 数据库管理员:DataBase Administrator
  • 计算机基本系统

什么是数据库管理系统

管理数据库的叫做数据库管理系统。数据库管理系统包含的功能有哪些?
从用户来看:

  • 数据库定义:定义数据库中Table的名称,标题(内涵的属性名称及对该属性值的计算)等
  • 数据库操纵:向数据库的Table中增加/删除/更新数据对数据进行查询、检索、统计等
  • 数据库控制:控制数据库中数据的使用—哪些用户可以使用,哪些不可以使用
  • 数据库各种擦组偶的执行

从系统角度来看:

  1. 语言编译器
  2. 查询优化与实现程序
  3. 存储与索引程序
  4. 事务处理程序
  5. 各种控制程序

本课程学什么及学到什么程度

  1. 数据库系统基本概念(2讲4学时):理解后续内容的基础
    ----基本概念、课程内容及作用、数据库管理系统的标准结构、数据库技术的发展史与发展趋势。

  2. 关系模型与关系运算(3讲6学时):理解数据库语言的基础、正确实现数据库操作,尤其是检索操作的基础,抽象能力训练、集合思维与逻辑思维能力训练
    —关系模型、关系运算:关系代数运算、关系元组演算、关系域演算

  3. 交互式SQL语言及其应用(含课堂训练,3讲6学时):标准数据库语言的语法及其交互式应用训练
    —SQL的各种操作语句:重点是SQL的查询与统计语句,(子模式)视图的应用语句

  4. 数据库应用程序开发(2讲4学时):嵌入式数据库语言的应用语法及其应用训练;数据库应用程序开发
    ----嵌入式SQL语句,及其与高级语言语句的结合,变量传递、结果处理、错误陷阱处理等

  5. 数据建模与数据库设计(含课堂训练,3讲6学时):理解如何对应用系统进行需求分析和抽象,设计出正确的数据库模式
    ----数据库设计的基本概念;E-R图/IDEF1X图的基本思想及其设计结果的表达方法;数据库设计训练;数据库设计过程

  6. 数据库设计理论(3讲6学时)::理解数据库设计的基本理论,掌握数据库正确性分析方法
    ------数据库设计理论:数据依赖、关系范式与模式分解.

  7. 数据库存储与索引技术(2讲4学时):掌握DMBS相关的实现技术I–数据库的基本存储与索引技术
    ----磁盘空间的管理与分配,数据组织方法、数据索引方法;

  8. 数据库基本操作的实现算法(2讲4学时):掌握DBMS相关的实现技术II—数据库的基本实现算法
    —数据库基本操作的实现算法,包括多路归并排序算法、并/交/差/积/选择/投影/连接等的实现算法、一趟算法、二趟算法、基于排序的算法、基于散列的算法等

  9. 数据库查询优化与查询实现(1讲2学时):掌握DBMS相关的实现技术III–数据库查询实现与查询优化算法
    —数据库查询语句处理,数据库查询的语法优化,数据库查询的执行优化等

  10. 数据库事务处理(2讲2学时):掌握DBMS相关的实现技术IV–事务与并发控制,故障恢复
    —数据库事务的概念,可串行性,并发控制;数据库备份、运行工日志与故障恢复

  11. 课程总结(1讲2学时)
    —梳理课程的知识脉络,回顾课程中的重点概念和知识.

数据库抽象与演变

基本内容

  1. 数据库系统的标准结构?
  2. 数据模型?
  3. 数据库系统的演变与发展?

重点与难点

  • 一组概念的区分:三级模式两层映像,物理独立性和逻辑独立性
  • 一组概念的区分:数据-》模式-》数据模型
  • 几种数据模型的差异:网状/层次模型–>关系模型–>OO数据模型

DBMS管理数据的三个层次

  1. 局部模式:某一用户能够看到与处理的数据,全局数据中的某一部分
  2. 逻辑概念层次:从全局角度理解/管理的数据含相互关联的数据
  3. 内部层次:存储在介质上的数据,含存储路径、存储方式、索引方式

三级模式

  • 外模式:某一用户能够看到与处理的数据的结构的描述
  • 概念模式:从全局角度理解/管理数据的结构描述,含相应的关联约束
  • 内模式:存储在介质上的数据的结构描述,含存储路径,存储方式,索引方式等

两层映像

  • E-C 外模式映射概念模式,从而支持实现数据概念视图向外部视图的转换,便于用户观察和使用
  • C-I Mapping 将概念映射为内模式,从而支持实现数据概念视图向内部视图的转换,便于计算机进行存储和处理。

两个独立性

  • 逻辑数据独立性:当概念模式变化时,可以不改变外部模式(只需要改变E-C Mapping),从而无需改变应用程序
  • 物理数据独立性:当内部模式变化时,可以不改变概念模式(只需改变C-I Mapping),从而不改变外部模式

什么是数据模型?

数据模型是对模式本身结构的抽象,模式是对数据本身形式的抽象。
比如:
关系模型:所有的模式都可为抽象表(Table)的形式[数据结构],而每一个具体的模式都是拥有不同列名的具体的表。对这种表形式的数据有哪些[操作]和[约束]

三大经典数据模型

  • 关系模型:表
  • 层次模型:树
  • 网状模型:图

简要发展史

  1. 第一个阶段:数据库技术探索阶段(59-67) Database
  2. 第二阶段:数据库技术确立阶段(65-75) 商用网状
  3. 第三阶段:数据库技术成熟阶段(76-80s) 标准化数据库系统结构模型
  4. 第四阶段:数据库技术深化发展阶段(85年以来)

由文件系统到数据库

优点:用户不必考虑文件存储的物理细节,解脱了对物理设备存取复杂性处理的负担
不足:数据与程序紧密结合,数据的组织及语义紧密依赖于处理该文件的应用程序,数据结构发生改变则更正修改应用程序,文件之间无练习,文件的记录之间无联系,共享性差,冗余度大,不一致高。

层次模型数据库、网状模型数据库到关系数据库

层次模型与网状模型数据库:

  • 数据之间的关联关系由复杂的指针系统来维系,结构描述复杂
  • 数据检索操作依赖于由指针系统指示的路径
  • 逐一记录的操作,不能有效支持记录集合的操作。

由关系数据库到对象关系数据库,面向对象数据库

关系数据库:

  • 按行按列形式组织数据:关系的第1范式
  • 数据项的不可再分特性
  • 关系运算:关系代数、元组演算、域演算—》标准SQL
  • 关系数据库设计理论

对象-关系数据库:

  • 可有效支持不满足关系第一范式的数据项
  • 以对象来封装需分解的数据项
  • 行对象与列对象:聚集对象与结构对象

面向对象数据库

  • 面向对象技术(O-O)与集合/聚集操作技术(SQL)的结合
  • 支持复杂的数据类型,数据封装与抽象数据结构
  • 支持面向对象的一些特性:类、继承、封装、多态

XML数据库

  • 是数据库的另一种形式,被称为半结构化数据库
  • 数据与数据的语义 合并在一起进行存储和处理
  • 面向数据交换而提出,在互联网世界得到广泛应用

回顾本讲学习了什么

在这里插入图片描述

第三讲 关系模型之基本概念

基本内容

  1. 关系模型概述?
  2. 什么是关系?
  3. 关系模型中的完整性约束

重点与难点

  • 一组概念的区分:围绕关系的相关概念,如域,笛卡尔积,关系,关系模式,关键字/键/码,外码/外键,主码/主键,主属性/非主属性
  • 三个完整性:实体完整性,参照完整性和用户自定义的完整性

关系模型的三要素

  • 基本结构
  • 基本操作(并、差、广义积、选择、投影、交、连接、除)
  • 完整性约束:实体完整性、参照完整性和用户自定义的完整性

关系模式与关系

  • 同一关系模式下,可有很多的关系
  • 关系模式是关系的结构,关系是关系模式在某一时刻的数据
  • 关系模式是稳定的,而关系是某一时刻的值,是随时间可能变化的

关系的特性

  • 列是同质:即每一列中的分量来自同一域,是同一类型的数据
  • 不同的列可来自同一个域,称其中的每一列为一个属性,不同的属性要给予不同的属性名。

外码

  • 关系R中的一个属性组,它不是R的候选码,但它与另一个关系S的候选码相对应,则称这个属性组为R的外码或外键

参照完整性

如果关系R1的外码Fk与关系R2的主码Pk相对应,则R1中的每一个元组的Fk值或者等于R2中某个元组的Pk值,或者为空值

DBMS对关系完整性的支持

  • 它使用户可以自行定义有关的完整性约束条件
  • 当有更新操作发生时,DBMS将自动按照完整性约束条件检验更新操作的正确性,即是否符合永辉自定义的完整性。

本讲回顾

在这里插入图片描述

第四讲:关系代数

基本内容

  1. 关系代数之基本操作
  2. 关系代数之扩展操作
  3. 关系代数之组合与应用训练
  4. 关系代数之复杂扩展操作(选学)

重点与难点

  • 关系代数基本操作:并、差、积、选择、投影
  • 关系代数扩展操作:交、 θ − \theta- θ连接、自然连接
  • 关系代数复杂扩展操作:除、外连接
  • 书写关系代数的基本思维训练:一个集合,施加
    一个操作得到一个集合,依次施加关系代数操作,进而得到所需结果“以集合为中心”
    .

集合操作

在这里插入图片描述

纯关系操作

在这里插入图片描述

  • 定义:假设关系R和关系S是并相容的,则关系R与关系S的并运算结果是一个关系,记作:R ∪ \cup S,它由或者出现在关系R中,或者出现S中的构成。

在这里插入图片描述

  • 定义:假设关系R和关系S是并相容的,则关系R与关系S的差运算结果也是一个关系,记作:R-S,它由出现在关系R中但不出现在关系S中的元组构成。

在这里插入图片描述

  • 汉语中的“是…但不含…”通常意义是差运算的要求
  • 首先要准确理解汉语的查询要求,然后再找到正确的操作

广义笛卡尔积

  • 关系R(< a 1 , a 2 , . . . . , a n a_1,a_2,....,a_n a1,a2,....,an>)与关系S(< b 1 , b 2 , . . . , b m b_1,b_2,...,b_m b1,b2,...,bm>)的广义笛卡尔积(简称广义积,或积或笛卡尔积运算结果也是一个关系,记作:R × × ×,它由关系R中的元组与关系S的元组进行所有可能的拼接(或串接)构成…

选择

  • 定义:给定一个关系R,同时给定一个选择的条件condition(简记con),选择运算结果也是一个关系,记作 σ c o n ( R ) \sigma_{con}(R) σcon(R),它从关系R中选择出满足给定条件condition的元组构成

投影

  • 定义:给定一个关系R,投影运算结果也是一个关系,记作 Π A R \Pi_{A}R ΠAR,它从关系R中选出属性包含在A中的列构成.
  • 投影操作从给定关系中选出某些列组成新的关系,而选择的操作是从给定关系中选出某些行组成新的关系
    在这里插入图片描述

第五讲–关系代数之扩展操作

  • 假设关系R和关系S是并相容的,则关系R与关系S的交运算结果也是一个关系,记作:R ∩ S \cap{S} S,它由同时出现在关系R和关系S中的元组构成。

θ − 连接 \theta-{连接} θ连接

  • 投影与选择操作只是对单个关系(表)进行操作,而实际应用中往往涉及多个表之间的操作,这既需要 θ − 连接 \theta-{连接} θ连接
  • 定义:给定关系R和关系S,R与S的 θ \theta θ连接运算结果也是一个关系,记作R ⋈ A θ B S \Join_{A\theta{B}}S AθBS,它由关系R和关系S的笛卡尔积中,选取R中属性A与S中属性B之间满足 θ \theta θ条件的元构成。

自然连接

  • 定义:给定关系R和关系S,R与S的自然连接运算结果也是一个关系,记作R ⋈ \Join ,它由关系R和关系S的笛卡尔积中选取相同属性组B上值相等的元组所构成。

小结

在这里插入图片描述

关系代数操作之组合与应用训练

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

例1:查询学习课程号为002的学生学号和成绩

Π S # , S c o r e ( σ C # = " 002 " ( S C ) ) \Pi_{S\#,Score}(\sigma_{C\#="002"(SC)}) ΠS#,Score(σC#="002"(SC))

例2:查询学习课程号为001的学生学号、姓名

Π S # , S n a m e ( σ C # = " 001 " ( S t u d e n t ⋈ S C ) ) \Pi_{S\#,Sname}(\sigma_{C\#="001"(Student\Join{SC})}) ΠS#,Sname(σC#="001"(StudentSC))

例3 查询学习课程名称为数据结构的学生学号、姓名和这门课程的成绩.

Π S # , S n a m e ( σ C n a m e = " 数据结构 " ( S t u d e n t ⋈ S C ⋈ C o u r s e ) ) \Pi_{S\#,Sname}(\sigma_{Cname="数据结构"}(Student\Join{SC}\Join{Course})) ΠS#,Sname(σCname="数据结构"(StudentSCCourse))

外连接

  • 两个关系R与S进行连接时,如果关系R(或S)中的元组在S(或R)中找不到相匹配的元组,则为了避免该元组信息丢失,从而将该元组与S(或R)中假定存在的全为空值的元组形成连接,放置在结果关系中,这种连接称之为外连接.

小结

在这里插入图片描述

  • Select: Π \Pi Π
  • From: σ \sigma σ
  • Where: × \times ×

第五讲–关系模型之关系演算

基本内容

  • 关系演算之关系元组演算
  • 关系演算之关系域演算
  • 关系演算之安全性
  • 关于三种关系运算的一些观点

重点与难点

  • 关系元组演算公式的递归定义;关系域演算公式的递归定义
  • 关系元组演算公式:与 ∧ \land ,或 ∨ \vee , ¬ \neg ¬非,存在量词 ∃ \exists ,全称量词 ∀ \forall
  • 用关系元组演算公式表达查询的思维训练
  • 用QBE语言表达查询的思维训练
  • 关系元组演算、域演算和关系代数在表达查询方面的思维差异

关系演算公式之与、或、非运算符

1.检索出年龄小于20岁并且是男同学的所有学生。

{ t ∣ t ∈ S t u d e n t ∧ t [ S a g e ] < 20 ∧ t [ S e x ] = ′ 男 ′ } \{t|t\in{Student}\land{t[Sage]<20}\land{t[Sex]='男'}\} {ttStudentt[Sage]<20t[Sex]=}

2、检索出年龄小于20岁或者03系的所有男生

{ t ∣ t ∈ S t u d e n t ∧ ( t [ S a g e ] < 20 ∨ t [ D # ] = ′ 0 3 ′ ) ∧ t [ S e x ] = ′ 男 ′ } \{t|t\in{Student}\land({t[Sage]<20}\vee{t[D\#]='03'})\land{t[Sex]='男'}\} {ttStudent(t[Sage]<20t[D#]=03)t[Sex]=}

3、检索出不是03系的所有学生

{ t ∣ t ∈ S t u d e n t ∧ ¬ ( t [ S a g e ] < 20 ∧ t [ S e x ] = ′ 男 ′ ) } \{t|t\in{Student}\land{\neg{(t[Sage]<20\land{t[Sex]='男'})}}\} {ttStudent¬(t[Sage]<20t[Sex]=)}

4.检索计算机系的所有同学

{ t ∣ t ∈ S t u d e n t ∧ ∃ ( u ∈ D e p t ) ( t [ D # ] = u [ D # ] ∧ u [ D n a m e ] = ′ 计算 机 ′ ) } \{t|t\in{Student}\land{\exists(u\in{Dept)(t[D\#]=u[D\#]\land{u[Dname]='计算机'})}}\} {ttStudent(uDept)(t[D#]=u[D#]u[Dname]=计算)}

5. 求没学过李明讲授任一门课程的学生姓名(全没学过)

π S n a m e ( S t u d e n t ) − π S n a m e ( σ T n a m e = ′ 李 明 ′ ( S t u d e n t ⋈ S c ⋈ C o u r s e ) ) \pi_{Sname}(Student)-\pi_{Sname}(\sigma_{Tname='李明'}(Student\Join{Sc}\Join{Course})) πSname(Student)πSname(σTname=(StudentScCourse))

6.求至少学过一门李明老师讲授课程的学生姓名(至少学过一门)

π S n a m e ( σ T n a m e = ′ 李 明 ′ ( S t u d e n t ⋈ S c ⋈ C o u r s e ) ) \pi_{Sname}(\sigma_{Tname='李明'}(Student\Join{Sc}\Join{Course})) πSname(σTname=(StudentScCourse))

关系元组演算之应用训练将关系代数转换为元组演算

关系域演算公式

关系域演算公式的基本形式: { < x 1 , x 2 , . . . . , x n > ∣ P ( x 1 , x 2 , . . . , x n ) } \{<x_1,x_2,....,x_n>|P(x_1,x_2,...,x_n)\} {<x1,x2,....,xn>P(x1,x2,...,xn)}。其中, x i x_i xi代表域变量或常量,P为以 x i x_i xi为变量的公式.公式P可以递归地进行构造:

  • 如果P是公式,那么 ¬ P \neg{P} ¬P也是公式
  • 如果P1,P2是公式,则 P 1 ∧ P 2 , P 1 ∨ P 2 P_1\land{P_2},P_1\vee{P_2} P1P2,P1P2
  • 如果P是公式,x是域变量,则 ∃ ( x ) ( P ( x ) ) \exists{(x)(P(x))} (x)(P(x)) ∀ ( x ) ( P ( x ) ) \forall{(x)(P(x))} (x)(P(x))也是公式.
  • 需要时可加括弧
  • 上述运算符的优先次序自高至低为:

关系域演算与关系元组演算的比较

元组演算的基本形式:{t|P(t)}
域演算的基本形式:{ < x 1 , x 2 , . . . , x n > ∣ P ( x 1 , x 2 , . . . , x n ) <x_1,x_2,...,x_n>|P(x_1,x_2,...,x_n) <x1,x2,...,xn>P(x1,x2,...,xn)}

  • 元组演算是以元组为变量,以元组为基本处理单位,先找到元组,然后找到元组分量,进行谓词判断;域演算是以域变量为基本处理单位,先有域变量,然后再判断由这些域变量组成的元组是否存在或是否满足谓词判断。
  • 公式的运算符( ∧ ( 与 ) 、 ∨ ( 或 ) 、 ¬ ( 非 ) 、 ∃ ( 全称量词 ) 和 ∀ ( 存在量词 ) \land(与)、\vee{(或)}、\neg{(非)}、\exists{(全称量词)}和\forall{(存在量词)} ()()¬()(全称量词)(存在量词))是相同的,只是其中的变量不同
  • 元组演算和域演算可以等价互换。

基于关系域演算的QBE语言

关系域演算语言QBE

域演算语言QBE

  • QBE:Query By Example
  • 1975年由M.M.Zloof提出,1978年在IBM370上实现
  • 特点:操作独特,基于屏幕表格的查询语言,不用书写复杂的公式,只需将条件填在表格中即可。
  • 是一种高度非过程化的查询语言
  • 特别适合终端用户的使用

QBE操作框架由四个部分构成

  • 关系名区:用于书写欲

第n讲

基本内容

  1. SQL语言概述?
  2. SQL语言之DDL-定义数据库
  3. SQL语言之DML-操纵数据库

重点与难点

  1. SQL-DDL的基本语句:CREATE DATABASE,CREATE TABLE
  2. SQL-DML的基本语句:INSERT,DELETE,UPDATE,SELECT
  3. SQL-SELECT语句的训练:正确表达各种查询需求

SQL语言提出和发展

1974年,有Boycel和Chamber提出
1975-1979年,由IBM的San Jose研究室在System R上首次实现,称为Sequel --》SQL
1986年由ANSI/ISO推出SQL标准:SQL-86
1992年ANSI/ISO推出SQL标准:SQL-89
1992年进一步推出了SQL标准:SQL-92,又称为SQL2
     是SQL-89的超集
     增加了新特性,如新数据雷兴国,更丰富数据操作,更强完整性支持等
     原SQL-89被称为entry-SQL,扩展的被称为Intermediate和Full级

理解查询需求

利用SQL语言建立数据库

学生选课数据库SCT
学生表Student

Create Table Student(S# char(8) not null,Sname char(10),Sex char(2),
Sage integer,D# char(2),Sclass char(6));

最近更新

  1. TCP协议是安全的吗?

    2024-06-12 09:20:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-12 09:20:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-12 09:20:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-12 09:20:02       18 阅读

热门阅读

  1. linux查找生产问题常用命令——参数解释

    2024-06-12 09:20:02       7 阅读
  2. 详细说说机器学习在自然语言处理的应用

    2024-06-12 09:20:02       8 阅读
  3. 【HarmonyOS】HUAWEI DevEco Studio 下载地址汇总

    2024-06-12 09:20:02       8 阅读
  4. MAC认证

    MAC认证

    2024-06-12 09:20:02      6 阅读
  5. Python也能在web界面写爬虫了

    2024-06-12 09:20:02       4 阅读
  6. 【PHP小课堂】深入学习PHP中的SESSION(一)

    2024-06-12 09:20:02       8 阅读
  7. PostgreSQL的视图pg_database

    2024-06-12 09:20:02       5 阅读
  8. 前端框架是什么

    2024-06-12 09:20:02       5 阅读
  9. Apache Hadoop的核心组成及其架构

    2024-06-12 09:20:02       7 阅读
  10. AI生成沉浸式3D世界(空间照片/视频)

    2024-06-12 09:20:02       6 阅读