数据库这科的核心是对数据的检索
一、绪论
- 数据库原理基础篇视频
-
数据定义语言(DDL) 和数据操纵语言(DML),数据控制语言(DCL)
找一本书->数据库系统概论(第五版) 习题解析与实验指导
上机软件-> 金仓数据库 KingBase ES
参考书-> an introduction to Database System/a first course in database systems/database system concepts -
数据库:是长期存储在计算机内、有组织的、可共享的大量数据的集合。
为什么要建立数据库:收集并抽取出一个应用所需要的大量数据,将其保存,以供进一步加工处理,抽取有用信息,转换为有价值的知识。
数据库的基本特征:①数据按一定的数据模型 组织、描述、存储。
②可为各种用户共享、冗余度较小、易扩展
③ 数据独立性较高 -
数据库管理系统(DBMS):是介于 操作系统 与 应用用户管理 之间的,是处于 基础软件平台 这个位置。
-
数据库系统(DBS):是指在计算机系统中引入数据库后的系统构成,在不引起混淆的情况下常常把DBS简称为数据库
数据库系统的构成:①DB ②DBMS(及其应用开发工具)③ 应用程序 ④ 数据库管理员(DBA)
1.2 数据模型
-
数据模型:是对现实世界数据特征的抽象。是DBS的核心与基础。
现实世界---->概念模型:DB设计人员完成
概念模型----->逻辑模型:DB设计人员完成, 以及DB设计工具协助完成。
逻辑模型----->物理模型:由DBMS完成。 - 概念模型的一种表示方法:E-R 方法:一对一、一对多
- 数据模型是严格定义的一组概念的集合:精确第描述了系统的静态特性、动态特性、完整性约束条件
数据模型由三部分组成:① 数据结构----描述系统的静态特性;② 数据操作----描述系统的动态特性;③ 完整性约束。
1.2.1 层次模型
-
层次模型用树形结构来表示各类实体以及实体间的联系
表示方法:
实体型:用记录类型描述,每个结点表示一个记录类型(实体)
属性:用字段描述,每个记录类型可包含若干个字段
联系:用结点之间的连线表示记录类型(实体)之间的一对多的父子联系
关键字:唯一标识实体的属性集称为码(eg:学号、身份证号)
满足下面俩个条件的基本层次联系的集合为层次模型:① 有且只有一个结点没有双亲结点,这个结点称为根节点;② 根以外的其他结点有且只有一个双亲结点。
-
层次模型的完整性约束条件:
① 无相应的双亲结点值就不能插入子女结点值;
② 如果删除双亲结点值,则相应的子女结点值也被同时删除;
③ 更新操作时,应更新所有相应记录,以保证数据的一致性。
1.2.2 网状模型
- 网状数据库系统采用网状结构来表示各类实体以及实体间的联系
表示方法:(与层次数据结构模型相同)
满足下面两个条件的基本层次联系的集合:
① 允许一个以上的结点无双亲;
② 一个结点可以有多个双亲。
网状模型间接表示多对多联系(方法:将多对多联系分解成一对多联系。) -
网状模型的完整性约束条件:
导航式的查询语言 和 增删改操作语言
1>. 完整性约束条件不严格:
① 允许插入尚未确定双亲结点值的子女结点值
② 允许只删除双亲结点值
2>. 实际的网状数据结构系统提供了一定的完整性约束:
① 支持码的概念:唯一标识记录的数据项的集合,取唯一的值;
② 保证一个联系中双亲记录与子女记录之间是一对多联系;
③ 可以定义双亲记录和子女记录之间的某些约束条件。
1.2.3 关系模型
- 在用户观点下,关系模型中数据的逻辑结构是一张二维表。R(U,D,DOM,F)p177
① 关系(Relation):一个关系对应通常说的一张表;
② 元组(Tuple):表中的一行是一个元组;
③ 属性(Attribute):表中的一列即为一个属性,给每一个属性起一个名称即是属性名;
④ 主码(Key):也称码键。表中的某个属性组,它可以唯一确定一个元组;(区分每一个元组:eg:学号)
⑤ 域(Domain):是一组具有相同数据类型的值的集合;属性的取值范围来自某个域;
⑥ 分量:元组中的一个属性值;
⑦ 关系模型(式):对关系的描述。
-
关系必须是规范化的,满足一定的规范条件。
最基本的规范条件:关系的每一个分量必须是一个不可分的数据项,不允许表中还有表。
数据及数据间联系都用二维表示,有的DBMS把表以文件形式存储,
关系的完整性约束条件:
① 实体完整性
② 参照完整性
③ 用户定义的完整性
1.3 DBS的结构
-
1>.:从数据库应用开发人员角度看:数据库系统采用三级模式结构,是数据库系统内部的系统结构。
2>.:从数据库最终用户角度看:
数据库系统的结构有:
① :单用户结构
②: 主从式结构
③: 分布式结构
④: 客户--服务器(局域网)
⑤: 浏览器--应用服务器/数据库服务器 -
DBS的三级模式结构:外模式,模式,内模式
2.1>. 模式:(也称逻辑模式):数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图;一般,某个应用的数据库有一个模式;模式是数据库系统模式结构的中心,与数据的物理存储细节和硬件环境无关,与具体的应用程序、开发工具及高级程序设计语言无关。
2>. 定义模式:
① DDL定义数据的逻辑结构,以某种数据模型为基础;数据记录由哪些数据项构成,数据项的名字、类型、取值范围等。
② 定义数据间的联系
③ 定义与数据有关的安全性、完善性要求
2.2>. 外模式:(子模式或用户模式):数据库用户使用的局部的逻辑结构和特征的描述;是数据库用户的数据视图,是某一应用有关的数据的逻辑表示。
外模式与模式的关系:外模式通常是模式的子集,一个模式可以有多个外模式;反应了不同的用户的应用需求、看待数据的方式、对数据保密的要求;对模式的某一数据,在不同的外模式中结构、类型、长度、保密级别等都可以不同。
外模式与应用的关系:一个外模式可以为多个应用系统所使用,一个应用程序只能使用一个外模式。
外模式的用途:每个用户只能看见和访问所对应的外模式中的数据,简化用户视图;保证数据库安全性的一个有力措施。
2.3>. 内模式:(也称存储模式):是数据物理结构和存储方式的描述;是数据在数据库内部的表示方式::
① 记录的存储方式(eg:顺序存储、堆存储、hash存储等)
② 索引的组织方式(B+树,Bitmap,Hash)
③ 数据是否压缩存储
④ 数据是否加密
⑤ 数据存储记录结构的规定——如定长/变长,记录是否可以跨页存放等
数据库只有一个内模式 -
数据库的二级映像(mapping)功能与数据独立性:
三级模式是对数据的三个抽象级别;数据库管理系统内部提供二级映像:① 外模式与模式映像 ② 模式与内模式映像--->(二级映像是三级模式中的关系)
三个抽象层次的联系和转换:
① 外模式/模式映像:一、对每一个外模式,有一个外模式/模式映像,是定义外模式与模式之间的对应关系的,映像定义通常包含在各外模式的描述中;二、保证数据的逻辑独立性:当模式改时,DBA对外模式/模式映像相应改变,使外模式保持不变;应用程序是依据数据的外模式编写的,应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。(数据与程序是相互独立的)
②模式/内模式映像:定义了数据逻辑结构与存储结构之间的对应关系(eg:说明某个逻辑记录对应何种存储结构);数据库中的模式/内模式映像是惟一的,该映像定义通常包含在模式描述中; 保证数据的物理独立性。
二、关系数据库
2.1 关系模型(关系数据结构)
关系模型组成三要素:关系数据结构、关系操作集合、关系完整性约束。
笛卡尔积可以看作是关系的域。
D1,D2,...,Dn的笛卡尔积的某个子集才有实际含义。
2.2 关系模式
2.2.1>. 关系模式是型,关系是值,关系模型是对关系的描述。
关系模式可以形象地表示为:R(U,D,DOM,F):
R: 关系名
U:组成该关系的属性名集合
D: U中属性所来自的域
DOM: 属性向域的映像集合
F:属性间数据的依赖关系的集合
关系模式通常可以简记为R(U)或R(A1,A2,...An):A1,A2,...An是属性名。。。注:域名及属性向域的映像常常直接说明为属性的类型、长度。
2.2.2>. 关系模式与关系的“关系”:① 关系模式是对关系的描述,是静态的、稳定的 ② 关系是关系模式在某一时刻的状态或内容,是动态的、随时间不断变化的 ③ 关系模式和关系往往笼称为关系,是通过上下文加以区别。
2.2.3>. 关系数据库: 在一个给定的应用领域中,所有关系的集合构成一个关系数据库。
2.2.4>. 关系完整性约束
关系的约束条件实际上是现实世间的要求。(教材P45)
实体完整性和参照完整性:关系的两个不变性,由关系系统自动支持。
用户定义的完整性:应用领域需要遵循的约束条件,体现了具体领域的语义约束。
① 实体完整性:1. 关系的主属性不能取空值,空值就是“不知道”或“不存在”或“无意义”的值。(否则不能区分俩个不同的实体)
不仅俩个或俩个以上的关系间可以存在引用关系,同一关系内部属性也可能存在引用关系。(教材46)
参照完整性规则就是定义 外码 与 主码 之间的 引用规则。(外码只能取 空值 或 被参照关系中已经存在的主码值)
2.3 关系操作(教材 P 43)
若一个关系有多个候选码,则选定其中一个为主码,候选码的诸属性称为主属性,不包含在任何候选码的属性称为非主属性或非码属性(P40教材),主码唯一标识一个元组。
关系模式与关系的联系:关系是元组的集合,因此关系模式必须指出这个元组集合的结构,即它由那些属性构成,这些属性来自哪些域,以及属性与域之间的影像关系;关系的描述称为关系模式R(U,D,DOM、F),关系是关系模式在某一时刻的状态或内容,关系模式是静态的、稳定的,而关系是动态的、随时间不断变化的,因为关系操作在不断地更新着数据库的数据。所有关系的集合构成一个关系数据库。(P43教材)-----------表是关系数据的逻辑模式,在关系数据库的物理组织中,有的关系DMS中的一个表对应一个操作系统文件,将物理数据组织交给操作系统完成;有的关系DMS从OS那里申请若干个大的文件,自己划分文件空间,组织表、索引等存储结构,并进行存储管理。
关系操作的特点的 操作的对象与结果都是集合。(这种操作方式称为 一次一集合 。)
2.4 关系代数(教材 P49)
关系代数是一种抽象的查询语言,它用 对关系的运算 来表达查询;
集合运算(是二目运算):交、并、差、笛卡尔积。
关系运算:选择(限制)、投影、连接、除运算。
象集(P 51)
1. 选择运算:实际上是从关系R中选取使逻辑表达式F为真的元组,这是从行的角度进行的运算。
2. 投影运算(π):是从列的角度进行的运算。投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(因为取消了某些属性列后,就可能出现重复行,应取消这些完全相同的行。)(P53)
3. 连接运算:连接也称为塞塔连接,它是从俩个关系的笛卡尔积中选取属性间满足一定条件的元组。
① 等值连接:塞塔为“=”的连接运算,它是从关系R与S的广义笛卡尔积中选取A、B属性值相等的那些元组。从行的角度运算。
② 自然连接:是一种特殊的等值连接, 它要求两个关系中进行比较的分量必须是同名的属性组,并且在结果中把重复的属性列去掉。从行和列进行的运算。被舍弃的元组称为悬浮元组。
如果把悬浮元组也保存在结果关系中,而在其他属性上填空值(NULL),那么这种连接叫做外连接;如果只保留左边关系R的悬浮元组就叫做左外连接,对应的有右外连接。(P 55)
4. 除运算:是同时从行和列的角度进行运算;用象集求解。(元组在X上的分量值x的象集Yx包含S在Y上投影的集合。(P 56))
2.5 关系演算(教程 P57)
关系演算是以数理逻辑中的谓词演算为基础的,按谓词変元的不同,关系演算可分为元组关系演算和域关系演算。
2.5.1>.元组关系演算语言 ALPHA
****(操作条件中使用量词时必须用元组变量。)
ALPHA语言:GET , PUT , HOLD , UPDATE , DELETE , DROP 的 6 条语句,语句的基本格式是: 操作语句 工作空间名(表达式):操作条件。
1. 检索操作: 用GET 语句实现。
① 简单检索:(即不带条件的检索)。
② 限定的检索:(即带条件的检索)。
③ 带排序的查询。
④ 指定返回元组的条数的检索。
⑤ 用元组变量的检索。P(58)
⑥ 用存在量词的检索。
⑦ 带有多个关系的表达式的检索。
⑧ 用全称量词的检索。
⑨ 用两种量词的检索。
⑩ 用蕴涵的检索。
11 聚集函数。
2.5.2>.域关系演算语言 QBE
1. 检索操作:操作符是 P.
① 简单查询。 ② 条件查询。 ③ 聚集函数。 ④ 对查询结果排序。
2. 更新操作:操作符是 U.
① 修改操作。 ② 插入操作。
3. 插入操作:操作符是 I.
4. 删除操作:操作符是D.
三、SQL
郝斌SQLserver2005
SQL Server 2014 入门基础视频
[sql server 增删改查](https://blog.csdn.net/tswc_byy/article/details/81708728)
SQL server 使用教程
SQL Server 2019 下载安装教程
SQL Server 2019 使用教程500页
3.1
① master 数据库:是SQL server 中最重要的数据库,记录其实例的所有系统级信息,包括实例范围的元数据。
② tempdb 数据库:用于保存临时对象或中间结果集。
③ model 数据库:用于其实例上创建的所有数据库的模板。
④ msdb 数据库:用于其代理计划警报和作业。
1.> [ UNSIGNED ] SMALLINT
SMALLINT 数据类型是一种精确数值数据类型,其精度在算术运算后不变。它需要 2 个字节存储。
有符号的 SMALLINT 值的范围是 –215(215表示2的15次幂) 到2^15 – 1,即 –32768 到 32767。
无符号的 SMALLINT 值范围是 0 到 2^16 – 1,即 0 到 65535。 INT 是4字节数据,取值范围 -2^31 - 2^31,所以在考虑最大数据范围的前提下,优先使用smallint类型。
2.> :为防止程序不能多次运行,并且多次提醒该关系或该表已建立。应该在程序前写上:
DROP database IF EXISTS s_t; /*首先执行一次同名关系删除操作*/
DROP table IF EXISTS student; /*首先执行一次同名表删除操作*/
在创建数据库前应该确定主文件(申明)例如:
create database textdb01
on primary /*固定用法*/
(name='textdb01', /*主文件名称*/
filename='E:\SQLcode\textdb\textdb01.ndf', /*主文件存储的路径*/
size=10MB, /*主文件初始值的大小*/
maxsize=100MB, /*主文件最大值(数据库最大占用空间的大小)*/
filegrowth=5MB /*随着数据库的使用,数据库的大小每次增长的量,最大增至maxsize*/
)
log on
(name='textdb01_log', /*日志名称*/
filename='E:\SQLcode\textdb\textdb01_log.ldf',
size=10MB,
maxsize=100MB,
filegrowth=5MB
)
对数据库 名称 的修改:
alter database textdb01
modify name=textdb02;
对数据库 文件属性 的修改:
alter database textdb
modify file
(name=textdt,
size=20MB,
maxsize=80MB,
filegrowth=10MB
);
数据库自带的帮助:查看(查看是否修改成功)
exec sp_helpdb textdb;
删除 数据库
drop database textdb;
界面 删除 数据库:
选中数据库-->右键删除即可 (若无法删除):
选中数据库-->右键任务-->分离-->勾选删除
数据库 备份与还原:
备份:右键数据库--->任务--->备份--->出现备份数据库框--->选择完整备份。(备份文件的后缀是 .bak)
还原:右键数据库--->任务--->还原--->数据库--->在‘常规’页上,使用‘源’部分指定要还原的备份集的源与位置(一般选 设备 上还原)。
数据库的分离在不在软件上,但存在在磁盘上,通过附加可恢复到软件上。
数据类型:
数字类型(精确数字、近似数字)、日期时间、字符串、Unicode字符串、二进制字符串、其他数据类型。
①、数字类型
bigint:范围:(-2)63~~263-1; 存储:8 字节
int:范围:(-2)31~~231-1; 存储:4字节
smallint:范围:(-2)15~~215-1(32767); 存储:2 字节
tinyint:范围:0~~255; 存储:1 字节
float:存储:取决于n的值。
②、时间类型
③、字符串类型:主要用 varchar
创建表:指出每个列中是否允许空值,是一种好习惯。
表中的任何主键值倒也不能重复。
create table useinfo2
(id int primary key not null,
name varchar(10) not null,
age int null
);
修改表结构:
alter table useinfo /*增加 主键*/
add constraint KID primary key(ID);
添加字段:
alter table useinfo
add grade varchar(10) not null;
constraint表示约束,有三个常见的约束
1、primary key(主键约束)。
2、Unique(唯一性约束)。
3、foreign key(外键约束)。
primary key和Unique key的区别是primary key不能为NULL且需唯一,Unique key可以为NULL但必须唯一,
column表示“列”也就是常说的 字段。
主键外键定义名称。
设置外键:
选中表--->设计-->选中列--->关系--->添加
查询表中内容:
select * from [dbo].[userinfo]; /*userinfo是表名*/
/* *代表所有的意思 */
select id1,id2,id3 from [dbo].[userinfo]; /*查询特定几栏的内容*/
插入单行数据:
insert into "表格名"(“栏位1”,“栏位2”...)
values(“值1”,“值”...);
插入多行数据:
insert into “表格名”(“栏位1”,“栏位2”,...)
value(“值1”,“值”...),(“值1”,“值”...)(“值1”,“值”...);
从其他表copy数据:
insert into “表格1”(“栏位1”,“栏位2”,...)
select “栏位3”,“栏位4”,...
from “表格2”;
修改表记录:
update [dbo].[userinfo]
set email = 'zhang@'
where email='5555';
删除表记录:from 可以省略
对于删除关联表信息,先删除含有外键的关联表,再删除单一表,
而插入关联信息时,先插入单一表信息,再插入含有外键的关联表。
delete from [dbo].[userinfo]
where userid = '张阿';
on update cascade 和on delete cascade 作用:
这是数据库外键定义的一个可选项,用来设置当主键表中的被参考列的数据发生变化时,外键表中响应字段的变换规则的。update 则是主键表中被参考字段的值更新,delete是指在主键表中删除一条记录:
on update 和 on delete 后面可以跟的词语有四个
no action , set null , set default ,cascade
no action 表示 不做任何操作,
set null 表示在外键表中将相应字段设置为null
set default 表示设置为默认值
cascade 表示级联操作,就是说,如果主键表中被参考字段更新,外键表中也更新,主键表中的记录被删除,外键表中改行也相应删除 。