数据库学习记录

数据库学习记录

  • 什么是数据库系统的工作环境?
  • 什么是数据库管理系统?
    • 用户角度:
    • 系统角度:
  • 数据库的标准结构?
    • 三级模式
    • 两层映像
    • 两个独立性
  • 数据模型
  • 关系模型
    • 基本结构
      • 候选码/候选键
      • 主码/主键
      • 主属性与非主属性
      • 外码/外键
      • 关系的特性:
    • 基本操作
      • 关系代数
      • 组演算公式
      • 关系域演算
      • 关系运算安全性:
    • 三个完整性:
  • SQL语言
    • 创建数据库
    • 查询数据库
    • 多表联合查询
    • 数据库更新
    • 修正数据库

什么是数据库系统的工作环境?

  1. 数据库DB:DataBase
  2. 数据库管理系统DBMS:DataBase Management System
  3. 数据库应用DBAP:DataBase Application
  4. 数据库管理员DBA:Database Administrator
  5. 计算机基本系统:计算机 网络 输入输出设备
  • 数据库?
    简单来说数据库就是相互之间有关联关系的Table集合
  • 数据库管理系统?
    通俗的讲是一个用来管理数据库的软件
  • 数据库应用程序?
    提供给不同的用户来查询数据库的软件
  • 数据库管理员?
    使用数据库管理系统管理数据库的人员

什么是数据库管理系统?

用户角度:

  • 数据库定义:可以来定义数据库中Table的表名称,表标题。
  • 数据库操作:可以向数据库中的Table增加/删除/更新数据以及对数据查询、检索、统计。
  • 数据库控制:可以控制数据库中的数据使用,哪些用户可以使用哪些,哪些不可以。
  • 数据库维护:可以进行转储/恢复/重组/性能检测/分析… 一般是DBA使用和掌握的

操作数据库的语言

  • 数据定义语言DDL:Data Definition Language
  • 数据操作语言DML:Data Manipulation Language
  • 数据控制语言DCL:Data Control Language

系统角度:

DBMS是一个解析语言并执行的系统
DBMS为完成DB管理,后台执行一系列的程序

  • 语言编译器
  • 查询优化(执行引擎)与查询实现(基本命令的不同执行算法)
  • 数据存取与索引
  • 通信控制
  • 事务管理
  • 故障恢复
  • 安全性控制
  • 完整性控制
  • 数据字典管理
  • 应用程序接口
  • 数据库数据装载、重组等使用程序
  • 数据库性能分析
  • 等等

数据库的标准结构?

通过三级模式和两层映像实现两个独立。

模式:对数据库中数据进行的一种结构性描述
视图/数据:某形式下表现出来的数据库中的数据

三级模式

  • User Level
    外模式:用户可以看到和处理的数据结构描述
  • Logic Level:
    全局模式:从全局角度理解/管理的数据结构描述,包含相应的关联约束
  • Physical Level:
    内部模式:储存在介质上的数据的结构描述,包含存储路径、储存方式、索引等。

两层映像

  • EC Mapping:将外模式映射为概念模式,实现数据概念视图向外部视图的转换–便于用户观察
  • CI Mapping:将概念模式映射为内模式,实现数据概念视图向内部视图的转换–便于计算机储存和处理

两个独立性

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

数据模型

数据模式规定模式统一描述方式的模型。包括 数据结构、操作、约束。

数据模型和模式的区别:

  • 数据模型描述模式的定定义
  • 模式描述对数据库中数据进行的一种结构性描述

三大经典数据模型

  • 关系模型:表的形式组织数据
  • 层次模型:树的形式组织数据
  • 网状模型:图的形式组织数据

关系模型

关系模型三个要素:

  • 基本结构
    描述DB各种数据的基本结构形式
  • 基本操作
    描述Table和Table直接所可能发生的各种操作
  • 完整性约束
    描述这些操作应该遵循的约束条件

基本结构

通俗的讲一个关系就是一个表

候选码/候选键

关系中的一个属性组,其值能唯一标识一个元组,若从该属性组中去掉一个属性,他就不具备这一性质了,他就不具有标记这一个性质,这样的属性组 成为候选码

主码/主键

当有多个候选码时,选择一个作为主码
DBMS以主码为主要线索管理关系中的各个元组。

主属性与非主属性

包含在任何一个候选码中的属性被称为主属性,此外都是非主属性

外码/外键

不是当前关系(Table)的候选码,但是另外一个关系(Table)的候选码。

关系的特性:

  • 列是同质:每一列的分量都来自同一个域不同的属性可能来自同一个域
  • 列位置互换性:区分哪一列是靠列名
  • 行位置互换性:区分哪一行是靠某一或某几列的值
  • 关系的任意两个元组不能完全相同
  • 满足第一范式:属性不可再分特性

基本操作

  1. 关系代数:以集合为对象的操作思维,集合到集合的变换
  2. 元组演算:以元组为对象的操作思维,以循环对每个元组验证
  3. 域演算:以域变量为对象的操作思维,取出每一个域变量验证

关系代数

集合操作:并、差、积、笛卡尔积 R∪S、R∩S、R-S、R×S
纯关系操作:投影、选择、theta-连接、除


  • 将2个关系求并集

  • 将2个关系求交集

  • 获得一个关系,其元组都属于一个关系并且不属于另外一个关系。

  • 获得一个关系,其包含所有 元组一半属于一个关系另一半属于另外一个关系。
  • 选择
    获得一个关系,其元组是所有原关系符合一定条件的元组。
  • 投影
    获得一个关系,其属性是原关系的子集
  • theta-连接
    将2个关系求积,在进行选择操作 获得的关系
  • 自然连接
    将2个关系求积,选择相同列上相同的元组,去掉重复的列后的关系

  • 相当与积的逆运算
  • 外连接,
    将2个关系求积,选择相同列上相同的元组,缺少相同列的元组用空补全,去掉重复的列后的关系
    根据补全部分不同细分为:左外连接、右外连接、全外连接

组演算公式

原子公式:t∈R、S[A]θc、S[A]θu[B]
关系符号: 且 或 非 存在 任意

关系域演算

原子公式:∈R、xθc、xθy
关系符号 : 且 或 非 存在 任意

关系运算安全性:

不产生无限关系和无穷验证的运算被称为安全的,关系代数是一种集合运算,是安全的,关系演算不一定是安全的。
关系演算的约束性
对关系演算施加约束条件,即任何公式都在一个集合范围内操作,而不是无限范围内操作。
安全约束有限集合DOM:DOM是一个有限集,其中每个符号要么是DOM里的某个符号,要么就是DOM元组里面某元组的分量。
DOM主要用于约束一些谓词的计算范围。

三个完整性:

  • 实体完整性:关系的主码中的属性值不能为空
  • 参照完整性:外码可以为空,不为空时一定要取另外一个关系的主码
  • 用户自定义完整性:用户对具体应用环境定于的完整性约束条件

SQL语言

SQL主要以9个单词引导的操作语句构成的
DDL语句引导词 Create(建立) Alter(修改) Drop(撤消)
DML语句引导词 Insert Delete Update Select
DCL 语句引导词 Grant Revoke

创建数据库

创建数据库 Create Database 数据库名;
示例 create database SCT;
创建DB中的Table
Create Table create table 表名(列名 数据类型[Primary Key|Unique][Not null])

  • Primary Key 主键约束,每个表只能有一根主键约束
  • Unique 唯一性约束(集候选键)
  • Not null:非空约束
  • 数据类型:char(n) varchar(n) int numeric(p,q) real/float date time 等

向表中追加元组
insert into 表名 [(列名[]…)] values(值[值]);
如果列名省略,须定义或储存的列名顺序一样。

查询数据库

  • 查询表中所有元组 Select * from 表名;
  • 查询限制表中的元组 Select [列名] from 表名 [whele 限制语句];
  • 限制查询结果不会重复 Select distinct [列名] from 表名 [whele 限制语句];
  • 查询结果排序 Select [distinct] [列名] from 表名 [whele 限制语句] [order by 列名 asc/desc];
    其中 [order by 列名 asc/desc]的列名是需要排序的属性 asc是升序,desc是降序
  • 模糊查询 使用运算符 like。
    Select [列名] from 表名 [whele 列名 [not] like ‘字符串’]
    %匹配零个或者多个字符 ,_匹配单个字符

多表联合查询

  • 实现多表查询:Select [列名] from 表名1,表名2,表名3… [whele 限制语句];
    直接使用相当于对笛卡尔积
  • 使用where对联合表做限制 ,例如θ连接: where[表名1.属性名1=表名2.属性名2]
  • 当表中的属性发生了重名,可以使用别名解决
    Select [列名 as 列别名] From 表名[ as 表别名] [whele 限制语句];

数据库更新

元组新增Insert:新增一个或者一些元组到数据库的Table中
元组更新Update:对某些元组中的某些属性值进行重新设定
元组删除Delete:删除某些元组

  • Insert:插入一个元组 insert into 表名 [(列名[]…)] values(值[值]);

  • Insert:插入一些元组insert into 表名 [(列名[]…)] Select [列名] from[ where ];

  • Delete :删除指定条件元组 Delete from 表名 [where ];

  • Update:某些属性值进行重新设定 Update 表名 Set [列名=表达式|子查询] [where]

修正数据库

主要是修正表的定义
alter table 表名 [add 列名 数据类型] [drop 完整性约束名][modify 列名];

  • 增加属性alter table 表名 [add 列名 数据类型];
  • 修改属性类型alter table 表名 [modify 列名 新数据类型];
  • 删除唯一性约束 alter table 表名 [drop Unique(列名)];
  • 撤销表 drop table 表名;
  • 撤销数据库 drop Database 数据库名;
  • 指定当前数据库:use 数据库名;
  • 关闭当前数据库:close 数据库名;

你可能感兴趣的:(数据库)