前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据库系统概念

数据库系统概念

原创
作者头像
Yiwenwu
修改2024-04-29 17:24:02
1940
修改2024-04-29 17:24:02
举报
文章被收录于专栏:技术学习笔记技术学习笔记

背景介绍

数据库是一个持久数据的集合,是长期储存在计算机内的、有组织的、可共享的、可互相关联查询数据的集合。

一般的,数据库管理系统(DBMS)有通用的架构模型,可分为如下四个模块

  • 传输模块:负责与客户端通信,接收查询请求并转换为内部格式,返回结果给客户端。需保证数据安全、稳定、高效传输
  • 查询处理器:解析用户查询,转换为可执行的内部操作,优化查询计划。主要包括查询解析器和查询优化器
  • 执行引擎:基于优化后的查询计划,从存储引擎获取数据执行计算操作并返回结果
  • 存储引擎:提供数据结构组织和存储方式,保证数据可靠、安全、高效的读取
整体架构
整体架构

数据抽象

数据模型

数据模型是一种抽象方法,对现实数据特性的抽象,可用来描述数据的一组概念和定义,表示数据处理方式。数据模型可以分为以下几种类型:

  1. 概念数据模型:简称概念模型,这是最高层次的数据模型,通常用于描述整个系统中的数据以及数据之间的关系。它通常与具体的技术实现细节无关,更多地关注于数据组织的业务规则。常见的概念模型是实体-关系模型(ER模型)
  2. 逻辑数据模型:在概念模型之上,描述数据元素、数据项之间的关系、数据属性及完整性约束。常见逻辑数据模型包括:关系模型、星型模型、雪花模型等。 逻辑数据模型包括:层次、网状、关系、面向对象、对象关系等
  3. 物理数据模型:描述数据实际存储方式,包括物理存储硬件、数据组织分布、访问路径等

关系模型

其中,逻辑数据模型的分类概述如下:

  1. 层次模型:只有一个根结点(没有父节点),若干个子节点,子节点有且只有一个父节点
  2. 网状模型:可以多个根节点,子节点可以有多个父节点
  3. 关系模型:扁平的二维表,由行/列组成,主要概念包括:
    1. 表(关系,relation):对应实体集合
    2. 行(元组,tuple):具体的实体
    3. 列(属性,attribute):表字段信息

关系模型的三要素

  1. 关系运算集合:即关系代数,描述关系操作的集合,这些操作应用于关系(表),其运算对象和结果均为关系(表)
  2. 关系数据结构:即表结构(数据库模型,database schema),是结构化的关系定义,常见schema结构有:
    1. 三层结构:Catalog、Database、Table/View
    2. 两层结构:Database、Table/View
  3. 关系完整性约束:描述表之间的约束关系,如唯一键、外键等

关系代数

关系代数是一种抽象语言,通过对关系的运算来表达查询操作。其中运算的对象和结果均为关系,运算类型包括:

  1. 关系运算:可分为两类
    1. 一元运算:选择σ、投影π、赋值 ←、重命名 ρ
    2. 二元运算:并∪、差 -、交∩、笛卡尔积 X、条件连接θ、自然连接⋈、除÷
  2. 比较运算:大于 >、大于等于 ≥、小于 <、小于等于≤、等于=、不等于 ≠
  3. 逻辑运算:或 OR、与 AND、非

关系运算

  • 选择σ:过滤操作,WHERE条件,行运算,从关系R中选择符合条件的元组构成新的关系
  • 投影π:选择操作,SELECT指定列(属性),列运算,从关系R中选择若干属性组成新的关系
  • 并∪:R∪S,在关系R或关系S或两者中的元素的集合,一个元素在并集中只出现一次,R和S是同类型的,对应的属性集(字段列表)相同、属性次序相同、属性名可不同
  • 交∩:R∩S,在R和S中都存在的元素的集合,一个元素在交集中只出现一次,R和S是同类型的
  • 差-:R-S,在R中而不在S中的元素的集合,R∩S=R-(R-S),R和S是同类型的
  • 笛卡尔积X:RXS,是R与S的无条件连接,使任意两个关系的信息能组合在一起
  • 条件连接θ:从R×S的结果集中,选取在指定的属性集上满足θ条件的元组,组成新的关系,其中θ 是一个关于属性集的逻辑表达式
  • 自然连接⋈:从R×S的结果集中,选取在某些公共属性上具有相同值的元组,组成新的关系

SQL语言

SQL(Structured Query Language)是一种用于管理和操作关系数据库的标准编程语言,SQL发展:

  • 1974年,由Boyce和Chamberlin提出
  • 1975~1979,IBM San Jose Research Lab的关系数据库管理系统原型System R实施了这种语言
  • SQL-86是第一个SQL标准,后续标准:SQL-89、SQL-92(SQL2)、SQL-99(SQL3)、SQL2003, SQL2008, SQL2011, SQL2016

其中,SQL2003特点

  • 支持新的数据类型和相应的操作,例如: MULTISET
  • 支持数据仓库操作,例如MERGE , MERGE = UPDATE + INSERT
  • 支持 XML

SQL2016特点:

  • 行模式识别:分析时间序列数据,例如股票行情等
  • 支持JSON对象
  • 多态表函数:用动态SQL创建强大复杂的自定义函数
  • 额外的分析功能:增加三角函数,为多维数组提供支持

SQL语言类型按照使用可以分为以下:

  1. DQL(数据查询语言):查询数据操作,如 SELECT、WITH等语句
  2. DDL(数据定义语言):关系(表)定义管理操作,如 CREATE、ALTER、DROP、TRUNCATE、RENAME等语句
  3. DML(数据操作语言):数据处理操作,如 INSERT、UPDATE、DELETE、MERGE INTO等语句
  4. DCL(数据控制语言):数据权限管理,如 GRANT(授权)、REVOKE(撤权)等语句
  5. TCL(事务控制语言):数据库执行事务管理操作,如COMMIT(提交)、ROLLBACK(回退)等语句

其中最常用的SQL类型是:DQL、DDL、DML类型

数据查询

数据查询是数据库的核心操作,基本结构为:SELECT(投影) ... FROM(关系) ... WHERE(选择)...

单表查询

仅涉及一个表的简单查询,从一个基本表中产生所需要的结果集,From子句中仅有一个表名

  1. 选择若干列:Select <目标列表达式>
    1. 查询指定列:指定字段
    2. 查询全部列:*
    3. 查询计算列/函数使用:含有计算表达式,如substring 列
    4. 改变结果集的列名:基于别名 as 使用
  2. 选择若干元组:Select <目标列表达式> From 表名 Where 条件表达式,包括:
    1. 比较:比较运算符,>、 ≥、 <、≤、=、≠ 等
    2. 确定范围:BETWEEN AND、NOT BETWEEN AND
    3. 确定集合:IN、NOT IN
    4. 字符匹配:LIKE、NOT LIKE
    5. 空值:IS NULL、IS NOT NULL
    6. 多重条件:逻辑运算符,AND、OR
  3. 结果排序:ORDER BY子句,ASC(正序)、DESC(倒序),较耗时,需要临时表空间支持
  4. 聚合计算:基于聚合函数完成数据统计计算,常用聚合函数:COUNT、SUM、AVG、MAX、MIN
  5. 结果分组:GROUP BY子句,将结果表按一列或者多列值进行分组,值相等的为一组。一般的,Group By中的项,必须出现在Select子句中
  6. 分组筛选:HAVING子句,对分组后的结果表,按各组的统计值进行筛选,返回符合条件的元组

多表查询

查询数据来自多表,查询涉及两个或以上的表,必须将多个表进行连接

  1. 笛卡尔积X:广义连接,所有行进行组合,字段拼接,行交叉组合,一般没有使用意义
  2. 条件连接θ:在广义连接的结果中,施加条件,加以选择,留下符合要求的元组
  3. 自然连接⋈:参与连接的表,必须具有相同的属性列,在某些公共属性上具有相同值的元组
  4. 外连接:主要用于主表-从表之间信息短缺的处理,左外连接 左表为主表;右外连接 右表为主表
  5. 嵌套查询:SubQuery子查询:在查询块的Where或Having中含有另一个查询块
    1. IN子查询
    2. 比较的子查询:单值:>、<、=、>=、<=、!=等;多值:ANY/SOME/ALL的子查询
    3. Exists的子查询

集合查询

对多个查询的结果集实施集合操作,属性必须相容,其中,ORDER BY只能施加在整个结果集中。

总结

本文针对数据库系统的基本概念进行依次说明。首先,介绍数据库系统介绍,针对数据抽象操作;其次,介绍数据模型、关系模型、关系代数和关系运算等概念;次之,介绍SQL语言的标准和类型;最后,基于最核心的数据查询操作进行详述。

我正在参与2024腾讯技术创作特训营最新征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景介绍
  • 数据抽象
    • 数据模型
      • 关系模型
        • 关系代数
          • 关系运算
          • SQL语言
          • 数据查询
            • 单表查询
              • 多表查询
                • 集合查询
                • 总结
                相关产品与服务
                数据库智能管家 DBbrain
                数据库智能管家(TencentDB for DBbrain,DBbrain)是腾讯云推出的一款为用户提供数据库性能、安全、管理等功能的数据库自治云服务。DBbrain 利用机器学习、大数据手段、专家经验引擎快速复制资深数据库管理员的成熟经验,将大量传统人工的数据库运维工作智能化,服务于云上和云下企业,有效保障数据库服务的安全、稳定及高效运行。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档