精华内容
下载资源
问答
  • 文章目录0.思维导图1.四大基本概念(1)数据--Data① 数据的定义② 数据的种类③ 数据的特点④ 数据举例(2)数据库...② DBMS的用途③ DBMS的主要功能(4)数据库系统--Database System① 什么是数据库系统(Databa...


    0.思维导图

    在这里插入图片描述

    1.四大基本概念

    (1)数据–Data

    • 数据(Data)是数据库中存储的基本对象

    ① 数据的定义

    描述事物的符号记录

    ② 数据的种类

    文本、图形、图像、音频、视频、学生的档案记录、货物的运输情况等

    ③ 数据的特点

    数据与其语义是不可分的

    ④ 数据举例

    • 数据的含义称为数据的语义,数据与其语义是不可分的。

    例如 93是一个数据
    语义1:学生某门课的成绩
    语义2:某人的体重
    语义3:计算机系2003级学生人数
    语义4:请同学给出。。。

    学生档案中的学生记录
    (李明,男,197205,江苏南京市,计算机系,1990)
    语义:学生姓名、性别、出生年月、籍贯、所在院系、
    入学时间
    解释:李明是个大学生,1972年5月出生,江苏南京市人,1990年考入计算机系

    (2)数据库–Database

    ① 数据库的定义

    数据库(Database,简称DB)是长期储存计算机内有组织可共享的大量数据集合

    ② 数据库的基本特征

    • 数据按一定的数据模型组织、描述和储存
    • 可为各种用户共享
    • 冗余度较小
    • 数据独立性较高
    • 易扩展

    (3)数据库管理系统–DataBase Management System

    ① 什么是DBMS?

    DBMS是位于用户与操作系统之间的一层数据管理软件。是基础软件,是一个大型复杂的软件系统

    ② DBMS的用途

    科学地组织和存储数据、高效地获取和维护数据

    ③ DBMS的主要功能

    • 数据定义功能
      提供数据定义语言(DDL)
      定义数据库中的数据对象

    • 数据组织、存储和管理
      分类组织、存储和管理各种数据
      确定组织数据的文件结构和存取方式
      实现数据之间的联系
      提供多种存取方法提高存取效率

    • 数据操纵功能
      提供数据操纵语言(DML)
      实现对数据库的基本操作 (查询、插入、删除和修改)

    • 数据库的事务管理和运行管理
      数据库在建立、运行和维护时由DBMS统一管理和控制
      保证数据的安全性、完整性、多用户对数据的并发使用
      发生故障后的系统恢复

    • 数据库的建立和维护功能(实用程序)
      数据库初始数据装载转换
      数据库转储
      介质故障恢复
      数据库的重组织
      性能监视分析等

    • 其它功能
      DBMS与网络中其它软件系统的通信
      两个DBMS系统的数据转换
      异构数据库之间的互访和互操作

    (4)数据库系统–Database System

    ① 什么是数据库系统(Database System,简称DBS)

    在计算机系统中引入数据库后的系统构成

    ② 数据库系统的构成

    • 数据库 Database
    • 数据库管理系统(及其开发工具)Database Management System
    • 应用系统
    • 数据库管理员 Database Administrator

    在这里插入图片描述

    ③ 数据库系统的特点

    ❶ 数据结构化
    • 整体数据的结构化是数据库的主要特征之一

    • 整体结构化
      不再仅仅针对某一个应用,而是面向全组织
      不仅数据内部结构化,整体是结构化的,数据之间具有联系

    • 数据库中实现的是数据的真正结构化
      数据的结构用数据模型描述,无需程序定义和解释
      数据可以变长
      数据的最小存取单位是数据项

    ❷ 数据的共享性高,冗余度低,易扩充
    • 数据库系统从整体角度看待和描述数据,数据面向整个系统,可以被多个用户、多个应用共享使用。
    • 数据共享的好处
      减少数据冗余,节约存储空间
      避免数据之间的不相容性与不一致性
      使系统易于扩充
    ❸ 数据独立性高
    • 物理独立性
      指用户的应用程序与存储在磁盘上的数据库中数据是相互独立的。当数据的物理存储改变了,应用程序不用改变。
    • 逻辑独立性
      指用户的应用程序与数据库的逻辑结构是相互独立的。数据的逻辑结构改变了,用户程序也可以不变。
    • 数据独立性是由DBMS的二级映像功能来保证的
    ❹ 数据由DBMS统一管理和控制

    DBMS提供的数据控制功能

    • (1)·数据的安全性(Security)保护·
      保护数据,以防止不合法的使用造成的数据的泄密和破坏。
    • (2)数据的完整性(Integrity)检查
      将数据控制在有效的范围内,或保证数据之间满足一定的关系。
    • (3)并发(Concurrency)控制
      对多用户的并发操作加以控制和协调,防止相互干扰而得到错误的结果。
    • (4)数据库恢复(Recovery)
      将数据库从错误状态恢复到某一已知的正确状态。
    ❺ 应用程序与数据的对应关系(数据库系统)

    在这里插入图片描述

    2.数据管理技术的产生和发展

    (1) 什么是数据管理

    • 对数据进行分类、组织、编码、存储、检索和维护
    • 数据处理的中心问题

    (2) 数据管理技术的发展过程

    • 人工管理阶段(20世纪40年代中–50年代中)
    • 文件系统阶段(20世纪50年代末–60年代中)
    • 数据库系统阶段(20世纪60年代末–现在)

    (3)时期

    • 20世纪60年代末以来

    (4) 产生的背景

    • 应用背景 大规模管理
    • 硬件背景 大容量磁盘、磁盘阵列
    • 软件背景 有数据库管理系统
    • 处理方式 联机实时处理,分布处理,批处理
    展开全文
  • 数据库 - 数据库系统结构

    千次阅读 2015-05-03 12:47:08
    数据库系统结构从数据库管理系统角度看,数据库系统通常采用三级模式结构,是数据库系统内部的系统结构 从数据库最终用户角度看(数据库系统外部的体系结构) ,数据库系统的结构分为: 单用户结构 分布式结构 ...

    数据库系统结构

    从数据库管理系统角度看,数据库系统通常采用三级模式结构,是数据库系统内部的系统结构

    从数据库最终用户角度看(数据库系统外部的体系结构) ,数据库系统的结构分为:
    单用户结构
    分布式结构
    客户/服务器
    浏览器/应用服务器/数据库服务器多层结构等

    数据库系统模式的概念

    “型” 和“值” 的概念
    型(Type)
    对某一类数据的结构和属性的说明
    值(Value)
    是型的一个具体赋值
    例如
    学生记录型:
    (学号,姓名,性别,系别,年龄,籍贯)
    一个记录值:
    (900201,李明,男,计算机,22,江苏)
    模式(Schema)
    数据库逻辑结构和特征的描述
    是型的描述
    反映的是数据的结构及其联系
    模式是相对稳定的
    实例(Instance)
    模式的一个具体值
    反映数据库某一时刻的状态
    同一个模式可以有很多实例
    实例随数据库中的数据的更新而变动

    模式

    模式(也称逻辑模式)
    数据库中全体数据的逻辑结构和特征的描述
    所有用户的公共数据视图,综合了所有用户的需求
    一个数据库只有一个模式
    模式的地位:是数据库系统模式结构的中间层
    与数据的物理存储细节和硬件环境无关
    与具体的应用程序、开发工具及高级程序设计语言无关
    模式的定义
    数据的逻辑结构(数据项的名字、类型、取值范围等)
    数据之间的联系
    数据有关的安全性、完整性要求

    模式实例

    教学数据库模式(前面的第二个实例)
    教师(教师号,姓名,职称)
    主键:教师号
    课程(课程号,课程名称,教师号,教材)
    主键:课程号 外键:教师号
    学生(学号,姓名,性别,教师号)
    主键:学号 外键:教师号
    选课(学号,课程号, 成绩)
    主键:(学号,课程号)
    外键1:学号,外键2:课程号

    [例]  创建学生Student表
    
                  CREATE TABLE Student
                    (Sno  CHAR(9)  PRIMARY KEY,
                     Sname  CHAR(20) NOT NULL,     
                     Ssex  CHAR(2) ,
                     Sage  NUMBER,
                     Sdept  CHAR(20))
                     TABLESPACE USERS;
    
    [例]  创建课程Course表
    
                  CREATE TABLE Course
                    (Cno  CHAR(4)  PRIMARY KEY,
                     Cname  CHAR(40) NOT NULL,     
                     Cpno  CHAR(4) ,
                     Ccredit  NUMBERFOREIGN KEY Cpno REFERENCES Course(              Cno))
                     TABLESPACE USERS;
    
    [例]  创建选修课程SC表
    
                  CREATE TABLE SC
                    (Sno  CHAR(9)  NOT NULL,
                     Cno  CHAR(4) NOT NULL,     
                     Grade Grade,
                     PRIMARY KEY (Sno,Cno),
                     FOREIGN KEY (Sno) REFERENCES Student(Sno),
                     FOREIGN KEY (Cno) REFERENCES Course(Cno))
                     TABLESPACE USERS;
    

    外模式

    外模式(也称子模式或用户模式)
    数据库用户(包括应用程序员和最终用户)使用的局部数据的逻辑结构和特征的描述
    数据库用户的数据视图,是与某一应用有关的数据的逻辑表示
    外模式的地位:介于模式与应用之间
    模式与外模式的关系:一对多
    外模式通常是模式的子集
    一个数据库可以有多个外模式。反映了不同的用户的应用需求、看待数据的方式、对数据保密的要求
    对模式中同一数据,在外模式中的结构、类型、长度、保密级别等都可以不同
    外模式与应用的关系:一对多
    同一外模式也可以为某一用户的多个应用系统所使用
    但一个应用程序只能使用一个外模式
    外模式的用途
    保证数据库安全性的一个有力措施
    每个用户只能看见和访问所对应的外模式中的数据

    建立计算机系学生的视图 CS_Student
                  CREATE VIEW CS_Student
        AS 
        SELECT  *
        FROM   Student
        WHERE  Sdept='CS'

    内模式

    内模式(也称存储模式)
    是数据物理结构和存储方式的描述
    是数据在数据库内部的表示方式
    记录的存储方式(顺序存储,按照B树结构存储,
    按hash方法存储)
    索引的组织方式
    数据是否压缩存储
    数据是否加密
    数据存储记录结构的规定
    一个数据库只有一个内模式

    模式/内模式映象

    模式/内模式映象定义了数据全局逻辑结构与存储结构之间的对应关系。
    数据库中模式/内模式映象是唯一的。
    该映象定义通常包含在模式描述中。
    保证数据的物理独立性
    当数据库的存储结构改变了(例如选用了另一种存储结构),数据库管理员修改模式/内模式映象,使模式保持不变
    应用程序不受影响。保证了数据与程序的物理独立性,简称数据的物理独立性。
    数据库模式
    即全局逻辑结构是数据库的中心与关键
    独立于数据库的其他层次
    设计数据库模式结构时应首先确定数据库的逻辑模式
    数据库的内模式
    依赖于它的全局逻辑结构
    独立于数据库的用户视图,即外模式
    独立于具体的存储设备
    将全局逻辑结构中所定义的数据结构及其联系按照一定的物理存储策略进行组织,以达到较好的时间与空间效率

    数据库的外模式
    面向具体的应用程序
    定义在逻辑模式之上
    独立于存储模式和存储设备
    当应用需求发生较大变化,相应外模式不能满足其视图要求时,该外模式就得做相应改动
    特定的应用程序
    在外模式描述的数据结构上编制的
    依赖于特定的外模式
    与数据库的模式和存储结构独立
    不同的应用程序有时可以共用同一个外模式
    数据库的二级映像
    保证了数据库外模式的稳定性
    从底层保证了应用程序的稳定性,除非应用需求本身发生变化,否则应用程序一般不需要修改

    数据与程序之间的独立性,使得数据的定义和描述可以从应用程序中分离出去

    数据的存取由DBMS管理
    用户不必考虑存取路径等细节
    简化了应用程序的编制
    大大减少了应用程序的维护和修改

    数据库管理员(DBA)

    具体职责:
    1.决定数据库中的信息内容和结构
    2.决定数据库的存储结构和存取策略
    3.定义数据的安全性要求和完整性约束条件
    4.监控数据库的使用和运行
    周期性转储数据库
    数据文件
    日志文件
    系统故障恢复
    介质故障恢复
    监视审计文件
    5. 数据库的改进和重组
    性能监控和调优
    定期对数据库进行重组织,以提高系统的性能
    需求增加和改变时,数据库须需要重构造

    展开全文
  • MySQL 8.0 4 默认的系统数据库

    千次阅读 2020-06-11 22:11:02
    MySQL 8.0 默认安装的 4 个系统数据库:mysql 数据库存储了 MySQL 服务器正常运行所需的各种信息;information_schema 提供了访问数据库元数据的各种视图,包括数据库、表、字段类型以及访问权限等; performance_...

    大家好,我是只谈技术不剪发的 Tony 老师。今天给大家介绍一下 MySQL 8.0 中默认安装的几个系统数据库/模式。

    当我们安装 MySQL 8.0 并初始化数据库之后,默认会创建以下系统数据库:

    • mysql,存储了 MySQL 服务器正常运行所需的各种信息。
    • information_schema,提供了访问数据库元数据的各种视图,包括数据库、表、字段类型以及访问权限等。
    • performance_schema,为 MySQL 服务器的运行时状态提供了一个底层的监控功能。
    • sys,包含了一系列方便 DBA 和开发人员利用 performance_schema 性能数据库进行性能调优和诊断的视图。

    使用SHOW DATABASES或者SHOW SCHEMAS命令查看所有的数据库/模式:

    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | sys                |
    +--------------------+
    4 rows in set (0.00 sec)
    

    mysql 系统数据库

    mysql 数据库存储了 MySQL 服务器正常运行所需的各种系统信息,包含了关于数据库对象元数据(metadata)的数据字典表和系统表。

    从 MySQL 8.0 开始,mysql 系统表和数据字典表使用 InnoDB 存储引擎,存储在 MySQL 数据目录下的 mysql.ibd 表空间文件中。在 MySQL 5.7 之前,这些系统表使用 MyISAM 存储引擎,存储在 mysql 数据库文件目录下各自的表空间文件中。

    为了便于理解和使用,mysql 系统数据库中的表可以分为多种类别,下面我们分别进行介绍。

    数据字典表

    这些表构成了 MySQL 的数据字典,也就是关于数据库对象的元数据。数据字典表对于用户而言是不可见的,不能使用 SELECT 进行查询,也不会出现在 SHOW TABLES 或者 INFORMATION_SCHEMA.TABLES 表中。不过,大多数表可以通过 INFORMATION_SCHEMA 数据库中相应的视图进行查询。

    例如,我们不能直接查询 mysql.tables 表:

    mysql> select * from mysql.tables;
    ERROR 3554 (HY000): Access to data dictionary table 'mysql.tables' is rejected.
    

    不过,可以通过 INFORMATION_SCHEMA.TABLES 查询数据库中的表:

    mysql> select * from information_schema.tables;
    

    具体来说,MySQL 8.0 包括以下数据字典表:

    • catalogs:系统目录(Catalog)信息。
    • character_sets:系统支持的字符集。
    • check_constraints:CHECK 约束信息。
    • collations:字符集支持的排序规则。
    • column_statistics:字段的直方图统计信息。
    • column_type_elements:字段的数据类型信息。
    • columns:表中的字段信息。
    • dd_properties:存储数据字典的属性,例如版本。服务器利用这些信息决定是否需要升级数据字典。
    • events:事件调度器中的事件信息。
    • foreign_keys、foreign_key_column_usage:外键相关的信息。
    • index_column_usage:索引字段信息。
    • index_partitions:索引分区信息。
    • index_stats:ANALYZE TABLE 命令生成的动态索引统计。
    • indexes:表中的索引信息。
    • innodb_ddl_log:支持原子 DDL 操作的日志。
    • parameter_type_elements:存储过程和函数的参数信息,以及存储函数的返回值类型
    • parameters:关于存储过程和函数的信息。
    • resource_groups:关于资源组的信息。
    • routines:关于存储过程和函数的信息。
    • schemata:关于数据库/模式的信息。在 MySQL 中,模式和数据库是相同的概念。
    • st_spatial_reference_systems:可以用于空间数据的空间参照系统。
    • table_partition_values:表分区使用的分区值。
    • table_partitions:表的分区信息。
    • table_stats:ANALYZE TABLE 命令生成的动态表统计。
    • tables:数据库中的表。
    • tablespace_files:表空间使用的文件。
    • tablespaces:活动表空间。
    • triggers:触发器。
    • view_routine_usage:视图和存储函数之间的依赖关系。
    • view_table_usage:视图和基表之间的依赖关系。

    到目前为止,mysql.foreign_keys 和 mysql.foreign_key_column_usage 还没有完全对应的 INFORMATION_SCHEMA 表。按照 SQL 标准,可以使用 INFORMATION_SCHEMA 数据库中的 REFERENTIAL_CONSTRAINTS 和 KEY_COLUMN_USAGE 查询外键相关的信息。

    从 MySQL 8.0 开始,一些 INFORMATION_SCHEMA 数据字典表取代了之前的系统表,这些系统表不再存在于 mysql 系统数据库中:

    • 数据字典表 events 取代了之前的 event 系统表。
    • 数据字典表 parameters 和 routines 共同取代了之前的 proc 系统表。

    权限信息表

    这些系统表存储了用户账户的授权信息以及它们拥有的权限。

    从 MySQL 8.0 开始,这些权限表使用事务型的 InnoDB 存储引擎替代了之前的 MyISAM 存储引擎。存储引擎的改变也带来了账户管理行为的变化。例如之前的 CREATE USER 和 GRANT 语句如果同时操作多个用户,可能导致部分用户操作成功而其他用户操作失败;现在这些操作具有事务性,要么全部用户都操作成功,要么出现错误回滚所有的操作。

    MySQL 8.0 中的权限信息表如下:

    • user:用户账户、全局权限以及其他信息。
    • global_grants:用户的动态全局权限。
    • db:数据库级别的权限。
    • tables_priv:表级别的权限。
    • columns_priv:字段级别的权限。
    • procs_priv:存储过程和函数上的权限。
    • proxies_priv:代理用户权限。
    • default_roles:用户连接并认证后默认激活的角色,或者执行 SET ROLE DEFAULT 命令后设置的角色。
    • role_edges:角色的授予关系。user 表中的一行数据既可能代表一个用户账户,也可能代表一个角色。
    • password_history:密码修改历史。

    对象信息表

    这些系统表包含了关于存储过程、组件、用户定义函数以及服务器端插件的信息:

    • component:服务器组件的注册信息。
    • func:用户定义函数(UDF)信息。
    • plugin:服务器端插件信息。

    查询日志表

    • general_log:通用查询日志表。
    • slow_log:慢查询日志表。

    这些日志表的存储引擎为 CSV。

    服务器端帮助信息表

    这些表中存储了服务器端相关的帮助信息:

    • help_category:帮助信息分类。
    • help_keyword:帮助信息关键字。
    • help_relation:关键字和帮助主题之间的关系。
    • help_topic:帮助主题的具体内容。

    时区信息表

    这些系统表包含了时区相关的信息:

    • time_zone:时区 ID 以及是否包含闰秒。
    • time_zone_leap_second:闰秒发生的情况。
    • time_zone_name:时区 ID 和名称的映射。
    • time_zone_transition、time_zone_transition_type:时区描述。

    复制信息表

    MySQL 服务器使用这些表维护复制功能:

    • gtid_executed:存储 GTID 数据。
    • ndb_binlog_index: NDB 集群复制的二进制日志信息。
    • slave_master_info、slave_relay_log_info、slave_worker_info:在从服务器上存储复制信息。

    优化器系统表

    这些系统表会被优化器使用:

    • innodb_index_stats、innodb_table_stats:InnoDB 优化器持久性统计信息。
    • server_cost、engine_cost:优化器成本模型需要使用这些表中存储的各种操作的评估成本进行优化。server_cost 包含了通用服务器操作的优化器成本估计,engine_cost 包含了特定存储引擎操作的优化器成本估计。

    其他系统表

    • audit_log_filter、audit_log_user:如果安装了 MySQL Enterprise Audit,这些审计日志表中会存储关于审计日志过滤器和审计的用户账户信息。
    • firewall_users、firewall_whitelist:如果安装了 MySQL Enterprise Firewall,这些表中会存储企业防火墙使用的信息。
    • servers:FEDERATED 存储引擎使用的远程服务器连接信息。
    • innodb_dynamic_metadata:InnoDB 存储的快速变化的元数据,例如 auto-increment 计数值和索引损坏标识。该表用于替代 InnoDB 系统表空间中的数据字典缓冲表。

    关于 mysql 系统数据库的更多信息,可以参考官方文档

    information_schema 信息数据库

    INFORMATION_SCHEMA 数据库提供了访问数据库元数据的各种视图,包括数据库、表、字段类型以及访问权限等。这些信息有时候也被称为数据字典(data dictionary )或者系统目录(system catalog),主要来源就是 mysql 系统数据库中的数据字典表。

    INFORMATION_SCHEMA 中的表实际上都是只读的视图,只能执行查询操作,不能执行 DML 语句。通常使用SHOW语句查看的信息都存在对应的数据字典表,例如SHOW DATABASES语句也可以使用以下查询实现:

    mysql> select schema_name
        -> from information_schema.schemata;
    +--------------------+
    | SCHEMA_NAME        |
    +--------------------+
    | mysql              |
    | information_schema |
    | performance_schema |
    | sys                |
    +--------------------+
    4 rows in set (0.01 sec)
    

    information_schema.tables 存储了数据库中的所有表和视图信息,包括它自己的系统视图:

    mysql> select table_name, table_type 
        -> from information_schema.tables
        -> where table_schema = 'information_schema';
    +---------------------------------------+-------------+
    | TABLE_NAME                            | TABLE_TYPE  |
    +---------------------------------------+-------------+
    | ADMINISTRABLE_ROLE_AUTHORIZATIONS     | SYSTEM VIEW |
    | APPLICABLE_ROLES                      | SYSTEM VIEW |
    | CHARACTER_SETS                        | SYSTEM VIEW |
    ...
    | VIEWS                                 | SYSTEM VIEW |
    | VIEW_ROUTINE_USAGE                    | SYSTEM VIEW |
    | VIEW_TABLE_USAGE                      | SYSTEM VIEW |
    +---------------------------------------+-------------+
    73 rows in set (0.01 sec)
    

    利用这些视图,我们可以方便地查看 MySQL 数据库、表结构、约束、索引以及视图、存储过程/函数、触发器、计划任务等信息。

    另外,关于这些 INFORMATION_SCHEMA 表的完整介绍,可以参考官方文档

    performance_schema 性能数据库

    performance_schema 性能数据库为 MySQL 服务器的运行时状态提供了一个底层的监控功能。

    MySQL 默认启动了性能数据库,也可以在启动服务时通过参数 performance_schema 指定是否启用。例如,在配置文件 my.cnf 中进行如下设置:

    [mysqld]
    performance_schema=ON
    

    性能数据库中的表的存储引擎为 PERFORMANCE_SCHEMA,数据存储在内存中:

    mysql> select table_name, table_type, engine
        -> from information_schema.tables
        -> where table_schema = 'performance_schema';
    +------------------------------------------------------+------------+--------------------+
    | TABLE_NAME                                           | TABLE_TYPE | ENGINE             |
    +------------------------------------------------------+------------+--------------------+
    | accounts                                             | BASE TABLE | PERFORMANCE_SCHEMA |
    | binary_log_transaction_compression_stats             | BASE TABLE | PERFORMANCE_SCHEMA |
    | cond_instances                                       | BASE TABLE | PERFORMANCE_SCHEMA |
    ...
    | users                                                | BASE TABLE | PERFORMANCE_SCHEMA |
    | variables_by_thread                                  | BASE TABLE | PERFORMANCE_SCHEMA |
    | variables_info                                       | BASE TABLE | PERFORMANCE_SCHEMA |
    +------------------------------------------------------+------------+--------------------+
    104 rows in set (0.01 sec)
    

    MySQL 服务每次启动时都会重新初始化性能数据库,我们可以使用以下命令查看是否成功初始化:

    mysql> show variables like 'performance_schema';
    +--------------------+-------+
    | Variable_name      | Value |
    +--------------------+-------+
    | performance_schema | ON    |
    +--------------------+-------+
    1 row in set (0.01 sec)
    

    ON 表示成功初始化;OFF 意味着出现了错误,此时需要检查服务器的错误日志进行处理。

    performance_schema 数据库的名称是小写形式,所有的表名也是小写。我们可以使用 SHOW CREATE TABLE 命令查看表的定义,例如:

    mysql> show create table performance_schema.users\G
    *************************** 1. row ***************************
           Table: users
    Create Table: CREATE TABLE `users` (
      `USER` char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,
      `CURRENT_CONNECTIONS` bigint NOT NULL,
      `TOTAL_CONNECTIONS` bigint NOT NULL,
      UNIQUE KEY `USER` (`USER`)
    ) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
    1 row in set (0.00 sec)
    

    performance_schema 数据库中的表可以按照收集信息的类型分成不同的组:

    • 设置表,显示和修改监控配置。这些表的名称都以 setup_ 开始,例如 setup_objects 表存储了需要进行监控的对象。
    • 当前事件表,events_waits_current 表包含了每个线程最新的等待事件。其他类似的表包含了不同级别的等待事件:events_stages_current 代表每个线程当前执行阶段的事件,events_statements_current 代表了当前语句事件,events_transactions_current 代表了当前事务事件。
    • 历史事件表,这些表的结构和当前事件表相同,但是包含了更多的历史数据。例如 events_waits_history 表包含了每个线程最近的 10 个等待事件,events_waits_history_long 表包含了所有线程最近的 10000 个事件。阶段事件、语句事件以及事务事件也存在类似的历史事件表。
    • 事件汇总表,包含了按照不同事件分组汇总的信息,包括已经从历史事件表中移除的事件。例如,events_waits_summary_by_instance 代表了每个监测实例的等待事件汇总。
    • 监测实例表,记录了被检测的对象类型。每个监测对象会产生一个事件,这些表存储了事件名称和解释性说明或者状态信息。例如,file_instances 表存储了 I/O 监测涉及到的文件。
    • 其他表,例如 threads 表包含了每个线程的信息。

    关于 performance_schema 表的分类和详细介绍,可以参考官方文档

    初始情况下,并不是所有的监测项目(等待事件)和消费者(performance_schema 表)都处于启用状态,因此性能数据库不会收集所有事件并更新相应的 performance_schema 表。如果想要启用所有的监测事件和计时功能,可以执行以下两个语句:

    mysql> UPDATE performance_schema.setup_instruments
           SET ENABLED = 'YES', TIMED = 'YES';
    Query OK, 560 rows affected (0.04 sec)
    mysql> UPDATE performance_schema.setup_consumers
           SET ENABLED = 'YES';
    Query OK, 10 rows affected (0.00 sec)
    

    当然,我们也可以根据需要启用或者禁用某个监测事件和 performance_schema 表的统计更新。

    然后就可以通过上面介绍的各种等待事件表查看服务器的运行状态和性能数据。例如,以下查询可以获取占用最多等待时间的等待事件:

    mysql> select event_name, sum_timer_wait
        -> from performance_schema.events_waits_summary_global_by_event_name
        -> order by sum_timer_wait desc limit 10;
    +---------------------------------------+--------------------+
    | event_name                            | sum_timer_wait     |
    +---------------------------------------+--------------------+
    | idle                                  | 709703548630225000 |
    | wait/io/file/innodb/innodb_data_file  |     12991466035548 |
    | wait/io/file/innodb/innodb_dblwr_file |      5866787225266 |
    | wait/io/file/innodb/innodb_log_file   |      4101617858470 |
    | wait/io/table/sql/handler             |      2467223162844 |
    | wait/io/file/innodb/innodb_temp_file  |       518447928064 |
    | wait/io/file/sql/binlog               |       324876178484 |
    | wait/io/file/sql/binlog_index         |        71481172202 |
    | wait/io/file/myisam/kfile             |        47731122384 |
    | wait/io/file/sql/ERRMSG               |        42268213086 |
    +---------------------------------------+--------------------+
    10 rows in set (0.02 sec)
    

    显然,我们的系统大部分时间都处于空闲状态(idle)。

    关于性能数据库的更多信息,可以参考官方文档

    sys 数据库

    MySQL 5.7.7 引入了 sys 数据库,其中包含了一系列的视图,可以方便 DBA 和开发人员解释 performance_schema 性能数据库中收集的数据。sys 数据库中的对象主要用于性能调优和诊断,包括:

    • 视图,将性能数据库中的数据进行汇总,以更加容易理解的形式进行展示。
    • 存储过程,配置性能数据库以及生成诊断报告等操作。
    • 存储函数,用于查询性能数据库的配置和格式化服务。

    对于全新的安装,如果使用 --initialize 或者 --initialize-insecure 选项执行 mysqld 初始化操作,默认会安装 sys 数据库。如果不想要安装 sys 数据库,可以在初始化之后手动删除。

    sys 数据库中提供了一个存储配置选项的 sys_config 表以及该表上的两个触发器 sys_config_insert_set_user 和 sys_config_update_set_user。

    sys 数据库中的视图大部分都是成对出现的,它们的名称相同,其中一个加上了 x$ 前缀。例如,视图 host_summary_by_file_io 汇总了按照主键分组的文件 I/O 并显示了更易阅读的延迟信息(而不是原本以皮秒为单位的延迟):

    mysql> select * from sys.host_summary_by_file_io;
    +------------+------+------------+
    | host       | ios  | io_latency |
    +------------+------+------------+
    | background | 1630 | 4.53 s     |
    | localhost  |    6 | 81.64 ms   |
    +------------+------+------------+
    2 rows in set (0.06 sec)
    

    同时,视图 x$host_summary_by_file_io 汇总了相同的信息,但是延迟以皮秒为单位进行显示:

    mysql> select * from sys.x$host_summary_by_file_io;
    +------------+------+---------------+
    | host       | ios  | io_latency    |
    +------------+------+---------------+
    | background | 1630 | 4528276024976 |
    | localhost  |    6 |   81639950348 |
    +------------+------+---------------+
    2 rows in set (0.00 sec)
    

    没有 x$ 前缀的视图是为了方便用户使用和查看p,包含 x$ 前缀的视图是为了其他工具进一步的处理。

    sys 数据库中的以下视图可以为长时间运行的事务提供进度报告:

    processlist
    session
    x$processlist
    x$session
    

    如果以及启动相应的测试项目和消费者,视图中的 progress 列会显示每个操作阶段(必须支持进度报告)的完成百分比。

    mysqldump 和 mysqlpump 工具默认都不会导出 sys 数据库。如果想要导出该数据库,可以在命令行中明确指定 sys 数据库的名称:

    mysqldump --databases --routines sys > sys_dump.sql
    mysqlpump sys > sys_dump.sql
    

    使用以下命令还原导出的备份文件:

    mysql < sys_dump.sql
    

    总结

    数据字典、系统信息表和性能数据库,对于我们了解 MySQL 数据库的结构、日常维护管理以及性能的诊断和优化都至关重要。因此,无论是 DBA 还是开发人员,都应该熟悉并掌握这些数据库对象的意义和使用场景。我们也会在后续文章中针对每个系统数据库做进一步的详细介绍和演示。

    如果觉得文章对你有用,请不要白嫖!欢迎关注❤️、评论📝、点赞👍!

    展开全文
  • 数据库系统

    千次阅读 2021-02-21 21:13:25
    数据定义语句(Data Definition Language ,DDL)是SQL语言用于创建、修改和删除数据库对象的语句。 • Create database 创建新数据库 • Drop database 删除数据库 • Alter database 修改数据库属性 • Create ...

    一、基础

    1.1 数据库使用的数据模型与数据库系统

    • 层次数据模型:采用“树”结构来组织、存储和管理数据;局限于上下节点的访问。
    • 网状数据模型:采用“网状图”结构组织、存储和管理数据。灵活地表示数据之间地关系;数据查询和修改不方便。
    • 关系数据模型:采用“二维表”结构组织、存储和管理数据,并以关联列实现表之间的联系。表之间通过具有相同属性列进行约束关系。数据结构简单、操作灵活、支持关系与集合运算操作、支持SQL;局限是只用于结构化数据的组织与存储管理,支持的数据类型较为简单,难以支持互联网广泛应用的非结构化数据和复杂数据管理。
    • 其他数据模型

    数据库系统是一类基于数据库进行数据管理与信息服务的软件系统。主要由用户、数据库应用程序、数据库管理系统和数据库四部分组成。

    • 用户:开发人员、使用人员、维护人员等
    • 数据库应用程序:是一种再DBMS支持下对数据库中数据进行访问处理的应用程序。
      主要功能有:通过窗口输入框采集用户输入数据;通过接口连接访问数据库;执行用户数据查询;通过表单列表输出数据。
    • 数据库管理系统:是一种专门用来创建数据库、管理数据库、维护数据库,并提供外部对数据库进行访问的系统软件。
      主要功能:
      • 创建数据库、数据库表以及其他对象;
      • 读写、修改、删除数据库表中的数据;
      • 维护数据库结构;
      • 执行数据访问规则;
      • 提供数据库并发访问控制和安全控制;
      • 执行数据库备份与恢复。
    • 数据库:是一种依照特定数据模型组织、存储和管理数据的文件集合。
    • 关系数据库中数据内容:在关系数据库中,除了存储和管理应用的用户数据(用户表)外,还需要存储与管理数据库本身的元数据、索引数据、运行数据等系统数据(系统表)。
    • 关系数据库的对象组织:在这里插入图片描述

    1.2 发展

    层次数据库–> 网状数据库 --> 关系型数据库 —> 对象-关系数据库 --> 半结构化数据库等

    1.3 数据库应用系统

    数据库应用系统类型

    • 业务处理系统:对机构业务活动(订购、销售、支付、出货)信息处理
    • 管理信息系统:以机构职能管理为主导,信息化管理,如人力资源管理信息系统
    • 决策支持系统:管理科学、运筹学、控制论等基础,为管理者提高辅助决策服务和方案,如证券分析与辅助决策信息系统

    数据库系统应用结构

    • 单机用户结构:整个数据库应用系统都装在一台计算机上,由一个用户进行访问操作,数据不能共享,数据冗余度大。
    • 集中式结构:数据库系统的应用程序、DBMS、数据都部署在同一服务器上运行,多个用户使用自己的计算机终端网络连接服务器,并可实现共享访问数据库。*特点:*结构简单、易于维护、但是当终端用户增加到一定数量后,服务器网络将成为数据存取访问的瓶颈,系统性能大大降低。
    • 客户/服务器结构:数据库应用系统的数据集中在数据库服务器管理、应用分布客户机处理。客户端应用程序通过网络并发访问数据库服务器中的数据库。*特点:*客户机程序与数据库服务器分工进行数据处理,提高了系统的负载分担能力,但会因大量客户端并发访问数据库服务器导致系统性能瓶颈。
    • 分布式结构:分布式结构的数据库系统既实现数据分布,又实现处理分布。分布式数据库系统的各服务器结点数据库在逻辑上是一个整体,但物理分布在计算机网络的不同服务器节点上运行,每个数据库服务器可通过网络既支持多个本地客户机访问,也支持远程客户机访问。网络中的每个数据库服务器都可以独立地存取和处理数据,并执行全局应用。*特点:*适合跨地区和大型机构,处理性能强,但数据库的分布处理和维护成本高,技术难度大。

    数据库应用系统生命周期

    • 需求分析:系统数据需求信息
    • 系统设计:包括系统概念数据模型、系统逻辑数据模型和系统物理数据模型设计。
    • 系统实现:包括DBMS安装部署、数据库创建、数据对象创建等
    • 系统测试:将测试数据上载到数据库中,对数据库对象进行测试操作访问,实现数据库功能和性能测试。
    • 系统运行和维护:监控与优化、扩展与维护

    1.4 数据库管理系统

    按用途分类:

    • 通用DBMS:支持公共领域数据库应用,如SQL Server
    • 专用领域DBMS:支持专用领域数据库应用,如嵌入式领域的SQLite

    按用户数分类:

    • 单用户DBMS:仅支持单用户访问,如miniSQL
    • 多用户DMBS:可支持多用户并行访问,如MySQL

    按系统部署分类:

    • 集中式DBMS:数据库集中部署在单一物理机器中,如Access
    • 分布式DBMS:数据库可分布在不同位置物理机器,如Oracle Database

    按使用场景分类:

    • 桌面级DBMS:适用于微小型的信息服务应用,如Access、SQLite
    • 企业级DBMS:适用于中大型的企业级应用,如DB2,ORACLE Database

    在这里插入图片描述

    二、数据库关系模型

    2.1 关系及其相关概念

    实体:包含有效数据特征的事物对象在概念模型世界的抽象名词。
    关系:在关系模型中,使用“关系”来存储“实体”中的数据。关系是指具有关系特征、用于存放实体数据的二维表,关系也常被称为关系表。
    关系的特征
    * 表中每行存储实体的一个实例数据,行又被称为元组。
    * 表中的每列包含实体的一项属性数据,列又被称为属性。
    * 表中单元格只能存储单个值;
    * 不允许有重复的行。
    * 列的顺序可任意。
    * 行的顺序可任意。

    关系的键定义
    在关系中,可以用来唯一标识元组的属性列,称为键(Key),其他属性列都为非键列。
    复合键(Compound Key):是指关系中用来唯一标识元组的多列作为键。
    候选键(Candidate Key):关系中可能有多个列均适合作为键,将其每个都称为候选键。
    主键(Primary Key):关系表中最有代表性的一个候选键,每个关系表中只能定义一个主键。
    主键的作用
    * 唯一标识关系表的每行(元组);
    * 与关联表的外键建立联系,实现关系表之间连接;
    * 数据库文件使用主键值来组织关系表的数据存储;
    * 数据库使用主键索引快速检索数据。
    代理键:采用DBMS自动生成的数字序列作为关系表的主键。(当复合键过于复杂时)
    代理键的用途
    * 由DBMS自动生成的数字序列作为主键,可替代复合主键,以便获得更高性能的数据访问操作处理。
    外键(Foreign Key):在关联的两个关系中,它们具有一个或多个相同属性,若关联列在第一个关系中作为主键,则在第二个关系中作为外键。

    关系模式语句中主键表示方法:
    关系名(主键属性,属性2,...,属性x)
    relation_name(Colunm01,Colunm02,...,LastColunm)
    relation_name表示关系名称,Colunm01等表示属性名。
    在这里插入图片描述

    2.2 关系模型原理

    关系模型是一种基于二维表结构存储数据实体及实体间联系的数据模型。
    关系模型的组成

    • 1、数据结构
    • 2、数据操作:集合运算操作包括 选择,投影、连接、交、并、差等。专门针对元组的关系操作包括数据行插入、修改、删除等操作。
    • 3、数据关系约束:在关系模型中,数据关系约束是指关系表中实体数据完整性、关联表之间数据一致性等要求,一般由业务需求来确定。在关系模型中,可定义关系表的数据约束如下:
      • 属性列取值范围
      • 属性列取值类型
      • 属性列取值是否唯一
      • 属性列是否允许空值
      • 关联表的参照完整性约束

    关系模型数据操作
    关系模型的数据操作采用基于关系代数的数据操作,包括传统的集合运算操作和专门的关系运算操作。
    并算法、差运算、交运算、笛卡尔积×(若R、S分别为两个关系表,则R×S的结果集为所有属于R的元组与所有属于S的元组进行组合而成R×S={(d1,d2) | d1∈R,d2∈S}
    关系模型完整性
    关系模型完整性是指在关系数据模型中对关系实施的完整性约束。
    完整性约束作用:

    • 消除关系表的元组重复存储
    • 保持关联表的数据一致性
    • 实现业务数据规则

    关系模型完整性约束组成

    • 实体完整性约束
    • 参照完整性约束
    • 用户自定义完整性约束

    实体完整性
    实体完整性是指在关系表中实施的主键取值约束,以保证关系表中的每个元组可以被唯一标识。
    实体完整性约束规则

    • 每个关系表中的主键属性列都不允许为空值,否则就不可能标识实体;
    • 现实世界中的实体是靠主键来标识,主键取值应该唯一,并区分关系表中的每个元组。

    参照完整性
    参照完整性是指关系表之间需要遵守的数据约束,以保证关系之间关联列的数据一致性
    参照完整性约束规则:若关系R中的外键F与关系S中的主键K相关联,则R中外键F 值必须与S中主键K值一致。

    用户自定义完整性
    用户自定义完整性是指用户根据具体业务对数据处理规则要求所定义的数据约束。
    用户可以定义如下类型的完整性约束:

    • 定义列的数据类型与取值范围
    • 定义列的缺省值
    • 定义列是否允许取空值
    • 定义列取值唯一性
    • 定义列之间的数据依赖性

    三、数据库操作SQL语言

    3.1 SQL语言概述

    数据定义语句(Data Definition Language ,DDL)是SQL语言中用于创建、修改和删除数据库对象的语句。
    • Create database 创建新数据库
    • Drop database 删除数据库
    • Alter database 修改数据库属性
    • Create table 创建新表
    • Alter table 修改数据库表结构
    • Drop table 删除表
    • Create index 创建索引
    • Drop index 删除索引

    数据操纵语言(Data Manipulation Language,DML)是SQL语言中用于增添、修改、删除数据的语句。
    • Insert 向数据库表中插入数据
    • Update 更新数据库表中的数据
    • Delete 从数据库表中删除数据

    数据查询语言(Data Query Language,DQL)是SQL语言中用于对数据库进行数据查询的语句。

    数据控制语言(Data Control Language,DCL)是用于对数据库对象访问权进行控制的SQL语句。
    • Grant 授予用户对数据库对象的权限
    • Deny 拒绝授予用户对数据库对象的权限
    • Revoke 撤销用户对数据库对象的权限

    事务处理语言:处理数据库内部事务的语句
    游标控制语句:用于数据库游标操作的语句

    3.2 数据定义SQL语句

    索引:索引是一种按照关系表中指定列的取值顺序组织元组数据存储的数据结构,使用它可以加快表中数据的查询访问。其功能就像是一个目录。
    详见:MySQL的索引及其数据结构
    索引作用及特点:支持对数据表中数据快速查找,其机理类似图像目录可以快速定位章节内容。索引优点为提高数据检索速度,快速连接关联表。索引开销主要是创建和维护都需要较大开销,索引会占用额外存储空间,数据操纵因维护索引带来系统性能开销。
    索引的结构:主要有B+树、B树和哈希表索引
    * B+ 树是一颗多叉树,叶子节点存放的是数据记录,非叶子节点存放的是索引。
    * B树也是一颗多叉树,每个节点存放索引和数据记录;
    * 哈希索引底层使用的是哈希表,将索引作为key,将数据记录作为value。
    索引创建SQL语句
    语句基本格式:create index <索引名> on <表名><(列名)>
    如:在学生信息表Student中,为出生日期Birthday列创建索引,以便支持按出生日期快速查询学生信息。
    create index Birthday_Idx on student (Birthday);

    索引修改SQL语句
    语句基本格式:alter index <索引名> <修改项>;
    如:在学生信息表Student中,将原索引Birthday_Idx更名为Bday_Idx,其索引修改SQL语句如下:alter index Birthday_Idx rename to Bday_Idx;

    索引删除SQL语句
    语句基本格式:drop index <索引名>;
    如:在学生信息表Student中,删除Bday_Idx索引,其索引删除SQL语句如下:drop index Bday_Idx;

    3.3 数据操纵SQL语句

    数据插入SQL语句
    语句基本格式:insert into <表名|视图名>[<列名表>] value (列值表);
    如:在学生信息表Student中,插入一个新的学生数据,如“2017220101105”,“柳因”,“女”,“1999-04-23”,“软件工程”,“liuyin@163.com”,SQL语句如下:insert into Student values('2017220101105', '柳因', '女','1999-04-23', '软件工程', 'liuyin@163.com');

    数据更新SQL语句
    语句基本格式:update <表名 | 视图名> set <列名1> = <表达式> [, <列名2> = <表达式2> …] [where <条件表达式>];
    如:在学生信息表Student中,学生“赵东”的原有Email数据为空,现需要修改为“zhaodong@163.com”,SQL语句如下:update Student set Email='zhaodong@163.com'where StudentName='赵东';

    数据删除SQL语句
    语句基本格式:delete from <表名 | 视图名> [where <条件表达式>];
    如:在学生信息表Student中,删除姓名为“张亮”的学生数据,其数据删除的SQL语句如下:delete from Student where StudentName='张亮';

    3.4 数据查询SQL语句

    3.4.1 单表数据查询

    数据查询SQL语句
    语句基本格式:select [all | distinct] <目标列>[, <目标列> …] [into <新表>] from <表名 | 视图名> [, < 表名 | 视图名> … ] [where <条件表达式>] [group by <列名> [having <条件表达式>]] [order by <列名> [asc | desc]];

    从单个表读取指定列
    在关系数据库中,最简单的数据查询操作就是从单个关系表中读取指定列的数据,即关系的投影操作。
    语句基本格式:select <目标列>[, <目标列> … ] from <关系表>;
    如:从Student 表中查询学生学号studentId、学生名字studentName的SQL语句如下:select studentId,studentName from Student;
    若希望从Student表中查询所有列数据,其查询SQL语句如下:select * from Student;
    若希望在结果集中过滤重复数据,可以在查询语句的输出列前加入Distinct 关键字,如下select distinct major from Student;

    从单个表读取指定行
    SQL查询语句也可以从一个关系表中读取满足条件的指定行数据,即完成关系数据的元组选择操作。
    语句基本格式:select * from <关系表> where <条件表达式>;
    如,在学生信息表Student中查询男生数据,语句如下:select * from Student where studentGender='男';

    从单个表读取指定行和列
    从一个关系表中读取指定行与指定列范围内的数据,既完成关系的行选择,又完成关系的列投影操作。
    语句基本格式:select <目标列>[, <目标列> … ] from <关系表> where <条件表达式>;
    如:从Student表中查询男生的姓名:select StudentName from Student where studentGender='男';

    Where条件子句
    where子句中可以使用如下方式指定范围数据。
    • 使用between … and关键词来限定列值范围,还可以使用关键词like与通配符来限定查询条件;
    • 使用通配符来限定字符串数据范围。下划线_通配符用于代表一个未指定的字符,百分号%通配符用于代表一个或多个未指定的字符。
    • 还可以使用多个条件表达式,并通过逻辑运算符(and、or、not)连接操作,以及使用in、not in关键词,进一步限定结果集的数据范围。
    如,从Student表中查询出生日期在 2000-01-01到2000-12-30的学生数据,其SQL语句如下:select * from Student where BirthDay between '2000-01-01' and '2000-12-30';
    如,查询Student表中邮箱域名为"@163.com"的学生数据,其数据查询SQL语句如下,select * from Student where Email like '%@163.com';

    对结果集进行排序
    在默认情况下,SQL查询的结果集是按指定列值的升序排列,可以使用关键字ASCDESC选定排序是升序或降序。
    如,从Student表中按学生出生日期降序输出学生数据,其数据查询SQL语句如下:select * from Student order by Birthday DESC;

    如果结果集需要按多个列排序,可以分别加入关键字ASCDESC改变。
    如,在Student表查询数据,首先按出生日期降序排列,然后按姓名升序排列,其SQL语句如下:select * from Student order by Birthday DESC,StudentName ASC;

    3.4.2 内置函数与分组统计

    SQL内置函数类型
    • 聚合函数
    • 算术函数
    • 字符串函数
    • 日期时间函数
    • 数据类型转换函数

    SQL聚合函数
    聚合函数是一些对关系表中数值属性列进行计算并返回一个结果数值的函数。
    • Avg() – 计算结果集指定列数据的平均值
    • Count() – 计算结果集行数
    • Min() – 找出结果集指定列数据的最小值
    • Max() – 找出结果集指定列数据的最大值
    • Sum() – 计算结果集指定列数据的总和
    如查询学生人数:select COUNT(*) as 学生人数 from Student;
    如查询年龄最大和年龄最小的学生出生日期:select Min(Birthday) as 最大年龄,Max(Birthday) as 最小年龄 from Student;

    分组统计
    语句基本格式:select 统计函数(目标列) from <表名> [where 条件] group by <目标列> [Having 条件];
    如:分专业统计学生人数:select Major as 专业,count(StudentId) as 学生人数 from Student group by Major;
    如:分专业统计男生人数,限定只显示人数大于2的人数:select Major as 专业,count(StudentId) as 学生人数 from Student where StudentGender = '男' group by Major having count(*) > 2

    3.4.3 多表关联查询

    子查询
    子查询只有在结果数据均来自一个表的情况下才有用。
    语句基本格式:select <目标列>[, <目标列> … ] from <表名> where <条件中嵌套另一关系表的select查询结果集>;
    如:在选课管理系统数据库中,希望检索出“计算机学院”的教师名单。该操作需要关联教师信息表Teacher和学院信息表College,才能获得这些数据,采用子查询方法实现两个表关联查询,SQL语句如下:select TeacherId, TeacherName,TeacherTitle from Teacher where CollegeId in (select CollegeId from College where CollegeName="计算机学院");

    使用连接关联多表查询
    需要从两个或多个表中获取结果数据时,使用连接关联多表查询,通过主键与外键的关联进行连接。
    语句基本格式:select <目标列> [, <目标列> … ] from <表名1>, <表名2>, … , <表名n>, where <关系表之间的连接关联条件>;
    如,在选课管理系统数据库中,希望获得各个学院的教师信息列表,包括学院名称、教师编号、教师姓名、教师性别、职称等信息,要求按学院名称、教师编号分别排序输出,其查询SQL语句如下:select B.CollegeName as 学院名称,A.TeacherId as 编号,A.TeacherName as 姓名,A.TeacherGender as 性别,A.TeacherTitle as 职称 from Teacher as A, College as B where A.CollegeId = B.CollegeId order by B.CollegeName,A.TeacherId;

    Join … on 连接查询语句
    实现多表连接关联查询还可以使用Join … on关键词的语句格式,其中两表连接关联查询的Join … on 语句格式如下:select <目标列> [,<目标列> …] from <表名1> Join <表名2> on <连接条件>;
    如,在选课管理系统数据库中,希望获得各个学院的教师信息列表,包括学院名称、教师编号、教师姓名、教师性别、职称等信息,要求按学院名称、教师编号分别排序输出,其查询SQL语句如下:select B.CollegeName as 学院名称,A.TeacherId as 编号,A.TeacherName as 姓名,A.TeacherGender As 性别,A.TeacherTitle as 职称 from Teacher as A Join College as B on A.CollegeId=B.CollegeId order by B.CollegeName, A.TeacherId;

    外部连接
    前面介绍的多表连接方式在select查询语句称为内部连接,在一些特殊情况下,如关联表中一些行的主键与外键不匹配,查询结果集就会丢失部分数据。
    如:在选课管理数据库中,希望查询所有开设课程的学生选课情况,包括课程名称、任课教师、选课学生人数。这需要关联课程信息表Course、教师信息表Teacher、开课计划表Plan、选课注册信息表Register,其连接查询的SQL语句如下:select C.CourseName as 课程名称,T.TeacherName as 教师,Count(R.CoursePlaneId)as 选课人数 from Course as C Join Plan as P on C.CourseId = P.CourseId Join Teacher as T on P.TeacherId=T.TeacherId Join Register as R on P.CoursePlanId = R.CoursePlanId Group by C.CourseName, T.TeacherName;
    在这里插入图片描述
    在这里插入图片描述

    3.5 数据控制SQL语句

    在SQL语言中,数据控制SQL语句是一种可对用户数据访问权进行控制的操作语句,它可以控制特定用户或角色对数据表、视图、存储过程、触发器等数据库对象的访问权限。主要有以下语句:
    • Grant授权语句
    • Revoke收权语句
    • Deny拒绝权限语句
    Grant权限授予语句
    Grant语句是一种由数据库对象创建者或管理员执行的权限授予语句,它可以把访问数据库对象权限授予给其他用户或角色。
    语句基本格式为:Grant <权限列表> on <数据库对象> to <用户或角色> [with grant option];
    如:在选课管理系统数据库中,将课程注册表Register的数据插入、数据修改、数据删除、数据查询访问权限赋予学生角色RoleS。SQL语句如下:Grant select, insert, update, delete on Register to RoleS;

    Revoke权限收回语句
    Revoke语句是一种由数据库对象创建者或管理员将赋予其他用户或角色的权限进行收回语句,它可以收回原授予给其他用户或角色的权限。
    语句基本格式为:Revoke <权限列表> on <数据库对象> from <用户或角色>;
    如:在选课管理系统数据库中,收回学生角色RoleS在课程注册表Register的数据删除访问权限。SQL语句如下:Revoke delete on Register from RoleS;

    Deny权限拒绝语句
    Deny语句用于拒绝给当前数据库内的用户或者角色授予权限,并防止用户或角色通过其组或角色成员继承权限。
    语句基本格式为:Deny <权限列表> on <数据库对象> to <用户或角色>;
    如:在选课管理系统数据库中,若拒绝教师角色Role T对教师表Teacher的数据删除访问权限,SQL语句如下:Deny delete on Teacher to RoleT;

    3.6 视图SQL语句

    视图是一种通过基础表或其他视图构建的虚拟表,它本身没有自己的数据,而是使用了存储在基础表中的数据。
    视图创建SQL语句
    语句基本格式:Create view <视图名> [(列名1),(列名2),…] as <select查询>;
    如:在选课管理系统数据库中,若需要建立一个查看基础课数据的视图BasicCourseView,其创建SQL语句如下:Create view BasicCourseView as select CourseName, CourseCredit, CoursePeriod, TestMethod from Course where CourseType = '基础课';
    当视图在数据库中创建之后,用户可以像访问关系表一样去操作访问视图。
    如:使用Select语句查询该视图数据,并按课程名称排序输出,其SQL语句如下:Select * from BasicCourseView order by CourseName;

    视图删除
    当数据库不再需要某视图,可以在数据库中删除该视图。
    语句基本格式:Drop view <视图名>;

    视图应用
    1、将复杂的SQL查询语句封装在一个视图中;
    2、提高数据访问安全性,保护用户隐私数据;
    3、提供一定程度的数据逻辑独立性;
    4、集中展示用户所感兴趣的特定数据。

    四、数据库设计与实现

    4.1 概述

    数据库设计是数据库应用系统开发的重要内容,在实现数据库之前,必须有明确的设计方案。
    数据库应用架构设计
    数据库应用架构可分为单用户结构、集中式结构、客户/服务器结构和分布式结构。
    数据库结构模型设计一般分为概念层、逻辑层和物理层设计,它们的设计模型分别为概念数据模型、逻辑数据模型和物理数据模型。
    数据库应用访问方式有直接本地接口连接访问、基于标准接口连接访问和基于数据访问层框架连接访问。

    数据库结构模型
    概念数据模型是一种面向用户的系统数据模型,它用来描述现实世界的系统概念化数据结构。使数据库设计人员在系统设计的初始阶段,摆脱计算机系统及DBMS的具体技术问题,集中精力分析业务数据以及数据之间的联系等,描述系统的数据对象及其组成关系。
    逻辑数据模型是在概念数据模型基础上,从系统设计角度描述系统的数据对象组成及其关联结构,并考虑这些数据对象符合数据库对象的逻辑表示。
    物理数据模型是在逻辑数据模型基础上,针对具体DBMS所设计的数据模型。用来描述系统数据模型在具体DBMS中的数据对象组织、存储方式、索引方式、访问路径等实现信息。

    4.2 E-R模型方法

    基础建模
    E-R模型
    E-R模型是“实体-联系模型”的简称,是一种描述现实世界概念数据模型、逻辑数据模型的有效方法。
    在E-R模型中,基本元素包括实体、属性、标识符和联系。
    • 实体:指问题域中存在的人、事、物、地点等客观事物在逻辑层面的数据抽象。它用于描述事物的数据对象,如客户、交易、产品、订单等。
    • 属性:指描述实体特征的数据项,每个实体都具有1个或多个属性。
    • 标识符:指标识不同实体实例的属性。标识符可以是1个或多个属性。标识符与主键的区别是标识符是一个逻辑概念,主键是物理概念。
    • 联系:指实体之间的联系,如“学生”与“成绩”的联系、“孩子”与“父亲”、“母亲”的联系等。联系中关联的实体数目称为联系度数

    实体-联系类型
    二元实体联系类型主要有:1对1;1对多;多对多。

    扩展建模
    在E-R模型中,实体之间除了基本联系外,还存在继承联系。继承联系用于表示实体之间的相似性关系。在实体继承联系中,一端是具有公共属性的实体,称为父实体;另一端是与父实体具有相似属性,同时也具有特征性的一个或多个实体,称为子实体
    在继承联系中,还可以分为互斥性继承联系和非互斥性继承联系。银行账户中个人账户和公司账户具有互斥性继承联系;职工中教师和干部具有非互斥性继承。除了互斥和非互斥的分类外,继承联系还可以分为完整继承和非完整继承。如果父实体实例必须属于子实体中的某一个,则称为完整继承联系;否则是非完整继承联系。比如,人实体与男人实体、女人实体之间具有完整继承联系;学生实体与本科生 实体、研究生实体具有非完整性继承联系。

    强弱实体联系
    在E-R模型中,按照实体之间的语义关系,可以将实体分为弱实体和强实体。弱实体是指那些对于另外实体有依赖关系的实体,即一个实体的存在必须以另一实体的存在为前提。而被依赖的实体称为强实体
    在E-R模型中,根据弱实体在语义上对强实体依赖程度的不同,弱实体又分为标识符(ID)依赖弱实体和非标识符(非ID)依赖弱实体两类。如果弱实体的标识符中含有所依赖实体的标识符,则该弱实体称为标识符(ID)依赖弱实体。

    4.3 数据库建模设计

    E-R模型到关系模型的转换原理
    • 将每一个实体转换成一个关系表,实体属性转换为关系表的列,实体标识符转换为关系表的主键或外键。
    • 将实体之间的联系转化为关系表之间的参照完整性约束。

    4.4 数据库规范化设计

    规范化数据库设计有效减少数据库中的冗余数据,尽量使同一数据在数据库中仅保存一份,有效降低维护数据一致性的工作量;设计合理的表间依赖关系和约束关系,便于实现数据完整性和一致性;设计合理的数据库结构,便于系统对数据高效访问处理。

    函数依赖
    函数依赖的数学定义:设有一关系模式R(U),U为关系R的属性集合,X和Y为属性U的子集。设t、s是关系R中的任意两个元组,如果t[X] = s[X],则 t[Y] = s[Y]。那么称Y函数依赖于X,表示为 X–> Y。
    函数依赖的左部称为决定因子,右部称为依赖函数。决定因子和依赖函数都是属性的集合。
    函数依赖反映属性与数性组之间相互依存、相互制约的关系,即关系表中属性之间的依赖关系。

    函数依赖的类型
    • 完全函数依赖:设X、Y是某关系的不同属性集,如X --> Y,且不存在X’ 作为X的子集,使得X’ --> Y,则Y称为完全函数依赖,否则称Y为部分函数依赖。
    • 函数传递依赖:设X、Y、Z是某关系的不同属性集,有X --> Y,Y !–> X, Y – Z,若X–> Z,称Z对X存在函数传递依赖。
    • 多值函数依赖

    关系规范化范式
    关系规范化是把一个有访问异常的关系分解成结构良好的关系的过程,使得这些关系有最小的冗余或没有冗余。;
    规范化范式是指关系表符合特定规范化程度的模式。

    第一范式
    如果关系表中的属性不可再细分,该关系满足第一范式,反之,该表就不是关系表。
    第二范式
    如果关系满足第一范式,并消除了关系中的属性部分函数依赖,该关系满足第二范式。
    第三范式
    如果关系满足第二范式,并切断了关系中的属性传递函数依赖,该关系满足第三范式。
    巴斯-科德范式 BCNF
    在关系中,所有函数依赖的决定因子都是候选键,该关系满足BCNF范式。
    第四范式
    若关系满足BCNF,并消除了多值函数依赖,该关系满足第四范式。
    关系的规范化程度越高,关系数据库存储的冗余数据就越少,可消除的数据访问异常就越多。不过关系的规范化程度越高,分解出来的关系表就越多,但实现数据查询访问时,需要关联多表,其效率降低。
    示例:

    在这里插入图片描述

    不满足,因为“联系方式”属性可以再细分为“电话”、“电子邮件”等。
    解决办法:将学生关系的“联系方式”进行属性分解。
    在这里插入图片描述

    问:进行属性分解后是否满足第二范式?
    答:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    逆规范化处理
    规范化减少了数据冗余,易于保证数据的完整性,但规范化过高也会导致数据库性能降低,因此,在利于规范化设计数据库时要平衡两者的关系。为此提出逆规范化处理,即,适当降低规范化范式约束,不再要求一个关系表必须达到很高的规范化程度,而是允许适当的数据冗余性,以获取数据访问性能。
    逆规范化处理的基本方法
    • 增加冗余列或派生列
    • 多个关系表合并为一个关系表

    五、数据库管理

    5.1 概述

    数据库管理是指为保证数据库系统的正常运行和服务质量必须进行的系统管理工作。

    在这里插入图片描述

    5.2 事务管理

    事务概念:在数据库中,事务是指由构成单个业务处理单元的一组数据库访问操作,要求它们要么都成功执行,要么都不执行。
    为什么需要事务管理:在数据库应用系统中,完成一个业务处理通常需要多个操作步骤才能完成处理,在每个操作步骤中,都可能遭遇失败,若没有一个处理机制,就可能造成操作数据混乱,从而破坏数据一致性。
    事务状态:在数据库系统中,==事是DBMS执行的最小任务单元。同时,事务也是DBMS最小的故障恢复任务单元和并发控制任务单元。==其生命周期状态变迁如下所示。
    在这里插入图片描述

    事务特性(ACID特性):
    • 原子性:事务所有操作在数据库中要么全部执行,要么全部不执行;
    • 一致性:事务多次执行,其结果应一致;
    • 隔离性:事务与事务之间隔离,并发执行透明;
    • 持续性:事务完成后,数据改变必须是永久的。

    事务并发执行:事务并发执行是指多个事务程序在数据库系统中同一时段运行。
    在这里插入图片描述
    在这里插入图片描述

    5.3 并发控制

    5.3.1 可串行调度

    当多个事务并发存取共享数据时,由于不当的数据操作顺序,可能出现数据不一致性问题(丢失更新数据、不可重复读、脏数据读等问题)。
    并发事务调度就是控制多个事务的数据操作语句按照恰当的顺序访问共享数据,使这些事务执行之后,避免造成数据的不一致性,即解决上述问题。
    事务调度原理:在DBMS中,事务管理器将并发执行事务的SQL数据操作请求提交给并发控制调度器。由并发控制调度器将各个事务的SQL数据操作请求按照一定顺序进行调度执行,并完成对数据库缓冲区的读写操作。

    在事务并发执行中,只有当事务中数据操作调度顺序的执行结果与事务串行执行结果一样时,该并发事务调度才能保证数据操作的正确性和一致性。符合这样效果的调度称为可串行调度

    5.3.2 锁机制

    资源锁定访问。加锁方式主要有:
    • 排它锁定——锁定后,不允许其他事务对共享数据再加锁;
    • 共享锁定:锁定后,只允许其他事务对共享数据添加读取锁。

    粒度越大,DBMS管理就越容易,但系统并发数据处理能力就越差。
    资源锁定粒度:数据库——粒度最大;表——粒度较大;页面——粒度中等;行——粒度最小。

    资源锁定实施方式:
    • 隐式锁定:DBMS缺省执行;
    • 显式锁定:加锁命令显式执行。

    基于锁机制的并发控制协议
    串行化调度必须约束并发事务对共享数据的操作访问是互斥方式进行,这需要用到基于数据库锁机制的并发控制协议。
    • 1、锁操作的相容性:加排它锁的共享数据事先不能有锁,加共享锁的共享数据事先只能有共享锁或无锁。
    • 2、加锁协议

    • 一级加锁协议:任何事务在修改共享数据对象之前,必须对该数据执行排它锁定指定,直到该事务处理完成,才进行解锁指令执行。特点:避免更新数据丢失问题,不能解决“不可重复读取”、“脏读”的问题。
      在这里插入图片描述

    • 二级加锁协议:在一级加锁协议基础上,针对并发事务的共享数据读操作,必须对该数据执行共享锁定指令,读完数据后即刻释放共享锁定。特点:避免“丢失更新”和“脏数据读问题”,还是可能出现“不可重复读取”的数据不一致问题。

      在这里插入图片描述

    • 三级加锁协议:在一级加锁协议基础上,针对并发事务对共享数据进行读操作,必须对该数据执行共享锁定指令,直到该事务处理结束才释放共享锁定。特点:解决“丢失更新”、“脏读”、“不可重复读”的问题。

    在这里插入图片描述

    • 不同级别锁协议对比
      在这里插入图片描述

    两阶段锁定协议
    并发事务的正确调度准则:一个给定的并发事务调度,当且仅当它是可串行化时,才能保证正确调度。
    保证可串行化的一个协议是二阶段锁定协议。
    二阶段锁定协议:规定每个事务必须分为两个阶段提出加锁和解锁申请:增长阶段,事务只能获得锁,但不能释放锁;缩减阶段,事务只能释放锁,但不能获得锁。

    若并发事务执行的所有事务都遵从两阶段锁定协议,则这些事务的任何并发调度都是可串行化调度,即这些开发调度执行结果可以保证数据库一致性。

    死锁问题解决
    • 事务死锁:在基于锁机制的并发事务执行中,如果这些事务同时锁定两个及以上资源时,可能会出现彼此都不能继续执行的状态,即事务死锁状态。
    在这里插入图片描述

    • 死锁出现的必要条件:
    	• 互斥条件
    	• 请求和保持条件
    	• 不剥夺条件
    	• 环路等待条件
    • 防范死锁的策略
    	• 允许用户一次发出当前所需全部资源的锁定,使用完成后,再释放给其他用户访问;
    	• 规定所有应用程序锁定资源的顺序必须完全相同。
    • 解决死锁的办法:当发生死锁时,回滚其中的一个事务,并取消它对数据库所做的改动。
    

    事务隔离级别
    在这里插入图片描述

    5.4 安全管理

    数据库系统安全模型:身份验证、DBMS权限管理、操作系统提供系统防护、数据库进行加密存储。

    5.4.1 用户管理

    身份验证。
    在数据库安全管理中,DBMS需要对每个用户进行管理,如用户创建、用户修改、用户删除管理等。实现用户管理方式:数据库服务器执行SQL语句管理用户、通过管理工具GUI 操作管理用户。
    1、用户创建SQL语句:create user <用户账号名> [[with] option […]];
    在这里插入图片描述

    2、用户修改SQL语句

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

    3、角色权限授予

    在这里插入图片描述

    5.5 数据库备份与恢复

    一、数据库系统故障原因
    数据库服务器硬件故障;系统软件故障;用户误操作;系统意外断电。
    二、数据库备份与恢复
    数据库备份:是指将数据库当前数据和状态进行副本复制,以便当数据库受到破坏或丢失数据时可以进行修复。
    数据库恢复:时数据库中数据丢失或被破坏时,从备份副本将数据库从错误状态恢复到某一正确状态
    三、数据库备份方法
    完全数据库备份、差异数据库备份、事务日志备份、文件备份

    展开全文
  • 数据库系统的结构

    千次阅读 2017-11-19 22:50:49
    数据库系统的结构 从数据库应用开发人员角度:数据库系统通常...数据模型有“型”和“值”的概念,型是指对某一类数据的结构和属性的说明,值是型的一具体赋值。 模式是数据库全体数据的逻辑结构和特征的描
  • 事务的四个属性分别为:原子性(Atomicty),一致性(consistency),隔离性(isolation),持久性(durability)。如果一个数据库声称支持事务的操作,那么该数据库必须要具备以上四特性。 原子性 原子性是指...
  • 查询优化关系数据库系统中有着非常重要的地位 关系查询优化是影响RDBMS性能的关键因素 由于关系表达式的语义级别很高,使关系系统可以从关系表达式分析查询语义,提供了执行查询优化的可能性 查询优化的优点...
  • 分布式数据库系统

    千次阅读 2018-08-06 15:51:35
     分布数据库定义:分布数据库是由一组数据组成的,这组数据分布计算机网络的不同计算机上,网络的每节点具有独立处理的能力(称为场地自洽),可以执行局部应用。同时每结点也能通过网络通信子系统执行全局...
  • 《数据库原理》— 数据库系统概论第五版习题解析

    万次阅读 多人点赞 2017-05-29 14:57:48
    数据库系统概论前七章习题解析 第1章绪论 1.试述数据、数据库、数据库系统、数据库管理系统的概念。答: (l)数据(Data):描述事物的符号记录称为数据。数据的种类有数字、文字、图形、图像、声音、正文等。...
  • 数据库系统概念

    千次阅读 2018-06-26 21:27:13
    实例:特定时刻存储在数据库中的信息的集合称作数据库的一实例。 模式:数据库的总体设计称作数据库模式。 物理数据独立性:应用程序如果不依赖与物理模式,它们就被称为是具有物理独立性,因此即使物理模式改变...
  • 数据库系统概论期末复习【超实用】

    万次阅读 多人点赞 2019-12-28 17:46:46
    所用教材:《数据库系统概论(第5版)》王珊 萨师煊 编著 理论与实践相结合的好书 本文大部分写自同学,本作者稍加详解。感谢该同学,这些题目做透能拿高分! 一、简答题(来自第一章 绪论 课后题P34)10’ 1. 试述...
  • 数据库系统中的三级模式、两级映像和两独立性

    万次阅读 多人点赞 2018-03-31 16:13:22
    1.数据库系统的三级模式结构:数据库系统的三级模式结构是指数据库系统是由外模式、模式和内模式三级构成,如图:①模式(schema): 模式也称逻辑模式,是数据库全体数据的逻辑结构和特征的描述,是所有用户的...
  • 数据库系统概论》复习

    千次阅读 多人点赞 2019-05-27 12:13:27
    1、数据库系统的四基本概念 数据(Data):描述事物的符号记录称为数据,数据是数据库存储的基本对象。 数据库(DB):长期存储计算机内、有组织的、可共享的大量数据的集合。数据库的数据按照一定的数据...
  •   数据库系统学习第四篇:数据库系统三级模式和两层映像。 前言   数据库三层结构隐藏了数据的存储和维护的细节,降低了数据库系统的复杂性,方便用户访问数据库。那三层结构具体是怎样设计的呢?这有赖于数据库...
  • 分布式数据库系统体系结构

    千次阅读 2020-04-29 10:35:06
    分布式数据库系统(DDBS)是指数据存放计算机网络的不同场地的计算机,每场地都具有自治处理能力并且可以完成局部应用,而且每一场地也参与全局应用程序的执行,全局应用程序可以通过网络通信访问系统...
  • 数据库系统期末复习

    万次阅读 多人点赞 2019-01-05 16:04:03
    数据库期末复习 文章目录数据库期末复习2. 关系模式介绍2.1 关系数据库的结构2.2 数据库模式2.3 码(key)2.4 模式... 从现有关系删去属性9. 单关系查询10. 多关系查询11. 自然连接(natural join)12. 更名运算13. ...
  • 数据库的 ACID 属性

    千次阅读 2016-07-23 22:28:40
    原文链接:https://en.wikipedia.org/wiki/ACID计算机科学,ACID...在数据库中,对数据的一系列操作逻辑上可以看成一整体的操作,这整体的操作就叫事物。例如,银行从一账户往另外一账户转账的过程
  • 数据库系统(PostgreSQL)

    千次阅读 2020-03-25 18:31:59
    数据库系统数据库系统基础数据库操作语言SQL数据定义SQL语句(创建、修改、删除)数据操纵SQL语句数据查询SQL语句数据控制SQL语句视图SQL语句数据库管理事务管理并发控制安全管理备份与恢复数据库应用编程数据库连接...
  • 数据库系统知识总结(一):数据库系统基础知识

    千次阅读 多人点赞 2019-02-25 21:01:00
    文章目录一、数据库系统基础知识1、四基本概念数据数据库数据库管理系统数据库系统2、数据库系统的特点3、数据模型层次模型网状模型关系模型4、数据库系统的结构数据库系统的三级模式结构1 模式2 外模式3 内模式...
  • Settings下的属性实际分为System,Global等,一般作用是用于存储系统默认属性值,通过监听读写属性值的变化执行相关的逻辑修改系统属性值,也可以用于系统间跨进程通信。 2.基本使用: 2.1读字符串 Settings.System...
  • 数据库系统结构(1)两种角度(2)数据库系统模式的概念(3)数据库系统的三级模式结构① 模式(Schema)② 外模式(External Schema)③ 内模式(Internal Schema)④ 数据库模式、外模式、内模式总结(4)数据库的...
  • 数据库设计是指对于一给定的应用环境,构造设计优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效的存储和管理数据,满足用户的应用需求,包括信息管理要求和数据操作要求。...
  • 数据库系统概论复习笔记

    万次阅读 多人点赞 2018-05-26 08:11:02
    Abstract: 数据库系统概论期末复习笔记 ~btw:欢迎关注 ~ Github: https://github.com/ScarlettYellow个人博客:https://scarletthuang.cn/PART1 数据库概述关系模型的构成:关系数据结构、关系操作集合、关系完整...
  • SQL数据库系统设计之食堂管理系统

    万次阅读 多人点赞 2018-03-19 22:41:42
    1数据库设计 1 1.1 需求分析 1 1.2 需求分析实现的过程 1.3 概念结构设计 1 1.3.1 概念结构设计的方法 1 1.3.2 概念结构设计的E-R图 2 1.3.3 逻辑结构设计 2数据库的实现 3 2.1数据库图表的建立…………...
  • 数据库系统的结构和组成

    千次阅读 2020-06-09 22:35:00
    数据库系统 一、数据库的结构 从数据库应用开发人员角度看,数据库系统通常采用三级模式结构,是数据库系统内部的系统结构。 从数据库最终用户角度看,数据库系统的结构分为:单用户结构、主从式结构、分布式结构、 ...
  • 数据库系统概论总结

    千次阅读 多人点赞 2017-06-12 23:55:56
    数据库复习文档一、数据模型 信息世界:实体,属性,域,码(键),实体型,实体集,联系 机器世界:字段(对应属性),记录,文件 数据模型有两种 ,概念数据模型(概念模型/信息模型),基本数据模型(包括...
  • 考研数据库系统概论题目整理

    万次阅读 多人点赞 2020-05-10 10:55:51
    数据库系统概论题目自整理 说复试题目过于牵强,只是自己整理的一些知识点而已,为了便于理解和背诵,有些部分定义和说明尽量简明扼要,如有错误请多多指教!(不可转载) 1.试述数据、数据库、数据库系统、数据库...
  • 04735数据库系统原理(笔记)(更新

    千次阅读 多人点赞 2021-07-13 21:23:53
    文章目录数据库管理三阶段三级模式/二级映像 数据库管理三阶段 人工管理阶段 1.数据不保存 2....数据库系统阶段 例如:mysql sqlserver sqlite 1.数据集成 2.数据共享性高 3.数据冗余小 4.数据可保证一致性 5.

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 249,622
精华内容 99,848
关键字:

在数据库系统中仅改变属性个数