数据库原理-SQL Server版(期末复习)

数据库的基本概念

1.数据(Data)
数据是用来记录信息的可识别的符号,是信息的具体表现形式。

2.数据库(DataBase,DB)
长期存储在计算机内,有组织的可共享具有逻辑关系确定意义的数据的集合。

数据库基本特征:1.永久存储 2.有组织 3.可共享 4.冗余度小 5.易扩展

3.数据库管理系统(DataBase Management System,DBMS)
一种重要的程序设计系统,它由一个相互关联的数据集合和一组访问这些数据的程序组成。

主要功能:提供数据定义语言(DDL)、数据操纵语言(DML)等

4.数据库系统(DataBase System,DBS)
一个计算机应用系统,它是把计算机硬件、软件以及数据和相关人员组合起来为用户提供信息服务的系统。由数据库(DB),数据库管理系统(DBMS),应用程序和数据库管理员(DBA)组成的存储、管理、处理和维护数据的系统。

特点:
(1)数据结构化(内部有结构,只适合于特定应用)
(2)数据共享性高、冗余度低且易扩充(可以保证多个应用程序同时访问、操作)
(3)具有较高的数据独立性(数据库的三级模式结构保证数据独立性)
(4)有统一的数据控制功能(DBMS统一控制和管理)

数据模型(Data Model)

一、含义
数据模型是数据库中数据的存储方式,是数据库系统的基础。

二、分类
1.概念模型

按用户的观点来对数据和信息建模,主要用于数据库设计

概念模型的表示方法很多,最常用的为实体-联系方法(Entity-Relationship approach),该方法用E-R图来描述概念模型。E-R方法也成为E-R模型。

2.逻辑模型和物理模型
物理结构即数据的存储结构,是数据元素在计算机存储器中的表示及其配置。
逻辑结构则是数据元素之间的逻辑关系。
在这里插入图片描述
三、数据模型的三要素
(1)数据结构
用于描述系统的静态特征,包括数据的类型、内容、性质及数据之间的联系等。是数据模型的基础,也是刻画一个数据模型性质最重要的方面。通常按其数据结构的类型来命名数据模型,例如层次结构、网状结构和关系结构的数据模型分别命名为层次模型、网状模型、关系模型。
(2)数据操作
指对数据库中各种对象的实例允许执行的操作的集合,包括操作及其有关的规则,主要分为查询和更新(插入、删除、修改)两大类操作。
(3)数据约束
完整性约束条件是给定的数据模型中数据及其联系所具有的制约和依存规则,在关系模型中体现为实体完整性和参照完整性。例如,性别只能为“男”、“女”。

逻辑模型的分类(非关系模型与关系模型)

一、关系模型(Relational Model)
(1)结构:
二维表结构来表示实体与实体之间的联系,每个二维表又可称为关系,在关系模型中,操作的对象和结果都是二维表。每一行在关系中称为元组,每一列在关系中称为属性。
(2)联系:
一对一、一对多、多对多

二、非关系模型:

网状模型,满足下面两个条件的基本层次联系的集合(一对多关系,结构上像有向图):
①允许一个以上的节点无双亲;
②一个节点可以有多于一个的双亲。
在这里插入图片描述

层次模型,满足下面两个条件的基本层次联系的集合为层次模型(就是树结构):
①有且只有一个节点没有双亲节点,这个结点称为根节点
②根以外的其它节点有且只有一个双亲节点
在这里插入图片描述

数据库体系结构

数据库系统的三级模式结构:模式(Schema)、外模式(External Schema)、内模式(Internal Schema)
在这里插入图片描述
在这里插入图片描述
(1)概念模式(逻辑模式,或简称模式)只有1个。是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
(2)外模式(子模式,或用户模式)有多个。它是数据库用户能够看见的逻辑结构和特征,是数据库用户的数据视图。
(3)内模式(存储模式)只有1个。是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。

二级映射与数据独立性

DBMS在三级模式之间提供了二级映射,通过二级映射保证数据库中的数据具有较高的物理独立性和逻辑独立性。
(1)概念模式/内模式的映射。概念模式和内模式都只有一个。所以概念模式/内模式映射是唯一的。它确定了数据的全局逻辑结构和存储结构之间的对应关系。当存储结构变化时,概念模式/内模式的映射也应有相应的变化。确保了数据的物理独立性。
(2)外模式/概念模式的映射。用于定义该外模式和概念模式之间的对应关系。确保了数据的逻辑独立性。

ER图

ER图详细描述可以点这里看。
在这里插入图片描述

关系模型

名称 说明
关系 一个关系对应通常说的一张表
属性 表中的一列即为一个属性
属性的取值范围
元组 表中的一行即为一个元组
也称码键。表中的某个属性组,它可以唯一确定一个元组
分量 元组中的一个属性值
关系模式 对关系的描述,一般表示为 关系名(属性1,属性2,…,属性n)

1.笛卡尔积(Cartesian Product):笛卡尔积是上面的一种集合运算

给定一组域D1,D2,…,Dn,允许其中某些域是相同的。 D1,D2,…,Dn的笛卡尔积为:
笛卡尔积中每个元素(d1,d2,…dn)称为一个n元组或简称元组
笛卡尔积可表示为一个二维表,表中每行对应一个元组,表中每一列的值来自一个域。

例如,给出3个域:
D1=奥特曼集合SUPERVISOR={泰罗,雷欧}
D2=星云集合SPECIALITY={M78,狮子座}
D3=父亲集合POSTGRADUATE={奥特之父,狮心王}
D1,D2,D3的笛卡尔积为

SUPERVISOR SPECIALITY POSTGRADUATE
泰罗 M78 奥特之父
雷欧 狮子座 狮心王

关系(Relation)

D1×D2×…×Dn的子集叫作在域D1,D2,…,Dn上的关系,表示为R(D1,D2,…,Dn)
R:关系名
n:关系的目或度(Degree)

关系也是一个二维表,每行对应一个元组,每列对应一个域,每列称为属性
若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码。若一个关系有多个候选码,则选定其中一个或多个为主码

候选码的多个属性称为主属性,不包含在任何候选码中的属性称为非主属性;最简单的情况下,候选码只包含一个属性,如果关系模式的所有属性都是这个关系的候选码,则称为全码

关系的完整性

关系模型的完整性规则是对关系的某种约束条件,关系模型中有三类完整性约束:

域完整性:域完整性是针对某一具体关系数据库的约束条件,指列的值域的完整性,既限制了某些属性中出现的值,又把属性限制在一个有限的集合里。

实体完整性:关系模型以主码作为唯一性标识,主码中的属性即主属性不能取空值,也不能存在两个相同的属性,也称为行完整性。

参照完整性:外码

关系代数

并、差、投影、笛卡尔积、选择为五个基本操作,交、连接、除等为附加操作,附加操作可以用五个基本操作表示。

关系操作

关系模型中常用的关系操作包括查询操作和插入、删除、修改操作这两大部分。

查询操作又分为:
传统的关系运算:除、并、差、交、笛卡尔积等;专门的关系运算:选择(取行)、投影(取列)、连接
其中:选择、投影、并、差、笛卡尔积是5种基本操作,其他操作是可以用基本操作来定义和导出的。
在这里插入图片描述

在这里插入图片描述
选择
选择运算是从关系R中选取使逻辑表达式F为真的元组,是从行的角度进行的运算
在这里插入图片描述
如查询信息系(IS系)全体学生
在这里插入图片描述
投影
投影操作主要是从列的角度进行运算,但投影成功之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行)
在这里插入图片描述
如查询学生的姓名和所在系
在这里插入图片描述
连接
从两个关系的笛卡尔积中选出属性符合一定条件的元组。
在这里插入图片描述
(1)等值连接:θ为’=’的连接运算,即选取属性相同的元组。
在这里插入图片描述
(2)自然连接:特殊的等值连接,还要将属性相同的列去除
在这里插入图片描述
(3)外连接
悬浮元组:两个关系R和S在做自然连接时,有一些元组并没有与S属性相同。造成了这些元组的丢弃,这些元组被称为悬浮元组。

在自然连接基础上。
外连接:把悬浮元组保留,其他属性填空值(Null)
左外连接:只保留左边的悬浮元组
右外连接:只保留右边的悬浮元组
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

SQL

基本概念

索引:可以加快查询速度,可以在基础表中建立一个或多个索引,提供多种存取方式作为存取路径进行选择。
唯一索引:使用unique关键字,每个索引值对应一条数据记录
非唯一索引:不使用unique关键字。
聚簇索引:索引项与数据记录的顺序一致,所以一个表只能包含一个聚集索引。
非聚簇索引:可以有多个。
.视图:视图是从一个或几个基本表(或视图)导出的表,数据库只存放视图的定义而不存放视图对应的数据,这些数据仍存放在原来的基本表中。所以基本表中数据发生变化,从视图查询出的数据也会随之改变。

视图的作用:
用户所做的只是对一个虚表的简单查询,而这个虚表现实中并不存在。利用视图来表达查询语句

示例数据库

在这里插入图片描述

源码

创建数据库,主数据文件初始大小5MB,最大为1GB,增长率10%

CREATE DATABASE mystest
ON
PRIMARY
(	
	NAME=mystest,
	FILENAME='D:\MyDataBase\mytest.mdf',
	size=5MB,
	MAXSIZE=1GB,
	FILEGROWTH=10%
)

--创建一张history_student表(结构同student),将学生表中数据全部插入到history_student表中。
```cpp
 select* into history_student
 from student 

--新插入一门课程,并默认所有学生都选修该门课程插入到成绩表中(成绩为NULL)
insert into course(cno,cname)
values('96060','软件测试设计')
insert into score

select sno,'96060',NULL
from student

更改

--添加新文件
alter database mystest
ADD FILE
{
   
   
	NAME=Exeldat1,
	FILENAME='f:\mydb\Exel_dat1.NDF'
	size=5MB,
	MAXSIZE=1GB,
	FILEGROWTH=2MB
}

--添加新文件至文件组
alter database mystest
ADD FILE
{
   
   
	NAME=Exeldat1,
	FILENAME='f:\mydb\Exel_dat1.NDF'
	size=5MB,
	MAXSIZE=1GB,
	FILEGROWTH=2MB
}
TO FILEGROUP ExelFG1

--删除数据库
DROP DATABASE mystest

--将所有平均成绩低于60分的学生成绩记录删除。
DELETE from score
where sno in(
	select sno 
	from score y
	where y.sno=sno
	group by sno
	having avg(grade)<60
)

用create table 新建5个表:student,teacher,course, score, department(不添加主外键约束,但需要添加主键的属性先添加NOT NULL约束)

create table student
(
	sno char(12)NOT NULL,--主键的属性添加NOT NULL约束
	sanme 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值