• 数据库基础知识


    数据库

    一、数据库基础

    1.1、数据库系统概述

    基本概念
    1. 数据:描述事物的符号记录称作数据,数据是数据库中存储的基本对象,描述事物可以是数字,文字,视频等

    2. 数据库:长期存储在计算机内的、有组织的、可共享的大量数据的集合。数据库中的数据按照一定的数据模型组织、描述和存储的,具有较小的冗余度,较高的数据独立性,容易拓展,可共享

    3. 数据库管理系统(dbms):介于用户和操作系统之间的一层数据管理软件,用于建立、使用和维护数据库。

    4. 数据库系统:由数据库和数据库管理系统,应用程序,数据管理员组成的存储和管理,处理和维护数据的系统。

    数据库系统的特点
    1. 数据结构化

    2. 数据的共享型高,冗余度低且易于扩充。面向整个系统而不是单一的应用。减少数据冗余。

    3. 数据独立性高。物理独立性(应用程序和数据库中的数据的物理存储是独立的)和逻辑独立性(应用程序域数据库的逻辑结构是独立的)。

    4. 数据有数据库管理系统统一的管理和控制。

    数据库管理系统的功能
    1. 数据定义的功能(Data Definition Language,DDL )

    2. 数据存储、组织和管理功能

    3. 数据操作功能(查询删除和插入)

    4. 事务管理和运行管理功能--建立、运用和维护时由数据库统一管理和控制。保证安全性可靠性多用户对数据的并发使用时候的系统恢复等等

    5. 数据库的建立和维护功能

    6. 其他功能--与其他软件的通信功能

    数据控制功能
    1. 数据的安全性保护,防止不合法的使用造成数据泄密和破坏

    2. 数据的完整性检查确保正确性、有效性和相容性。

    3. 并发控制,同时存取,修改数据库的时候,可能会发生相互干扰而使得遭到破坏

    4. 数据库的恢复,回复到某一个正确的状态

    1.2、数据库系统的结构

    数据库系统模式的概念

    数据模型中有,“型“和”值“,的概念,型指的是某一个数据的结构和属性的说明,值指的是型的一个具体的赋值。比如学生记录(学号,姓名,性别、学院、年龄、籍贯)这样的记录就是型

    模式是指数据库中的全体数据的逻辑结构和特征的描述,它仅仅是型的描述,不涉及具体的值。模式是一个具体值称为模式的一个实例,同一个模式会有多个实例。

    数据库系统的三级结构模式

    数据库的三级模式结构指的是数据库系统是由模式,外模式和内模式三级构成

    1. 模式 也叫做逻辑模式,是数据库中全体成员数据的逻辑结构和特征的描述,是所有用户的公共数据视图,是数据库系统结构模式的中间层,既不设计数据的物理存储模型和硬件细节,又与具体的应用程序,所使用的开发工具无关。

    2. 外模式 也叫做子模式或者用户模式,他是数据用户包括程序员和用户最终能够看到的和使用的局部数据逻辑结构的特征的描述,是数据库用户的数据视图,是与某一个应用相关的数据的逻辑来表示的。 外模式通常是一个模式的子集,一个数据库可以有多个外模式,外模式是保障数据安全的有力保障

    3. 内模式 也叫存储模式,一个数据库只有一个内模式。他是书物理结构和存储方式的描述,是数据在数据库内部的组织方式,比如数据是否压缩,是否加密哦,对数据存储的方式是不是有什么规定。

    二、数据模型

    2.1数据模型基础知识

    数据模型的概念

    模型是对现实世界中某个对象特征的模拟和抽象。数据模型也是一种模型,它是对现实世界数据特征的抽象,也就是说数据模型是用来描述数据、组织数据的和对数据进行处理的操作的。数据模型是对数据库系统的核心与基础。

    数据模型的组成要素

    一般来讲,数据模型是严格定义的一组概念的集合,这些概念精确地描述了系统的静态特征,动态特性和完整的约束性条件。数据模型通常由数据结构,数据操作和完整性约束三个条件共同同组成。

    1. 数据结构 数据结构描述数据库的组成对象和对象之间的联系。数据结构描述的内容有两类,一个是对象的类型,内容,性质有关的。比如网状模型的数据项,记录,关系模型中的域属性和关系等等。另一个是与数据之间相关的对象,比如网状模型的系项。数据结构刻画的是一个数据模型性质最重要的方面。因此在数据库系统中,人们通常按照其数据结构类型来命名数据模型。比如关系型的数据结构,层次模型,网状模型和关系模型。数据结构通常是描述数据对象的集合,是对系统静态特征的描述。

    2. 数据操作 数据操作是指对数据库中各种对象的实例和值允许执行的操作的指令的集合,包括相关的操作和对相关操作的规定。数据库主要是由查询和更新,主要是插入删除和修改的两大类操作。数据模型必须定义这些操作的具体名称包括定义这些操作的确切含义,操作符号,操作规则以及对实现操作的语言。数据操作是对系统动态特征的描述。

    3. 数据的完整性约束条件 完整性约束条件是一组完整性的规则。完整性规则就是给定的数据模型中数据以其所含有具体的制约和依存性法则,用于限定符号数据模型的数据状态以及状态的变化,用来保证数据的可靠性有效性和可靠性。数据模型还应该是完整性约束的条件的机制,以反映具体应用所涉及的必要的数据所必须要遵守的语法约束条件

    2.2概念模型

    基本概念
    1. 实体:实体是客观存在并且是事物与事物之间是相互联系的关系,比如一个学生、一门课程。

    2. 属性:是指实体所具有的某一个特定的性质,比如学号性别,年龄,出生年月日

    3. 实体型:用实体名和属性名集合来抽象和刻画同类实体。比如学生(学号,姓名,年龄)就是一个实体型

    4. 实体集:是指同一类型的实体的集合。全班同学

    5. 码:就是唯一能够标识实体的属性集,比如学号就是学生的码

    6. 域:指的是属性的取值范围,比如年龄是15-22

    7. 联系:实体与实体之间以及实体与组成他的各属性之间的关系

    实体间的关系
    1. 一对一:一个学生只能对应一个学号

    2. 一对多:一个班级里面能有若干个学生

    3. 多对多:一个课程能被若干个学生选修,而一个学生能选修若干个课程

    ER图

    ER图是最能表示实体与联系方法用来描述现实世界的概念模型。ER图提供了表示实体型属性和联系

    1. 矩形:表示实体型,方框里写明实体型

    2. 属性:用椭圆形表示,并且用无向边分别与有关实体型连接起来

    3. 联系:用菱形表示,同时在无向边旁边批注联系的类型,(1:1,1:n,m:n)

    2.3逻辑模型

    A层次模型:

    特点:有且只有一个无根节点的的父节点。其他节点尤其只有一个父节点

    优点:数据结构简单。查询效率高。提供了良好的完整性支持

    缺点:节点之间具有多对多的关系的时候难以表现出来。具有多个父节点的时候,不易采用层次模型,查询子女节点必须经过父节点。层次命令趋近于程式化。

    B网状模型

    特点:允许一个以上的节点无父结点。一个节点可以有多个父节点

    优点:更能更好的描述客观的世界。具有良好的性能,存取效率高。

    缺点:比较复杂,不利于用户的掌握。定义和操作复杂,不宜使用。记录之间的联系通过存取路径实现,加重了编写程序的负担。

    C关系模型

    关系型数据模型是以关系数据理论为基础,用二维表格来表示实体与实体之间的模型。

    1. 优点:建立在严格的数学概念的基础上。概念单一,结构简单清晰,用户容易理解。具有更高的数据独立性,和更好的数据安全保密性。

    2. 缺点:存取路径对用户隐蔽,查询效率低下。增加了开发数据库管理系统的难度。

    2.4物理模型

    物理模型提供了系统初始设计学需要的基础元素,以及相关元素之间的关系。存储机制和访问权限的最高描述,描述数据是如何在计算机中存储的,如何记录结构、顺序和访问路径。使用物理模型,可以在系统层实现数据库。

    三、关系型数据库

    3.1关系模型

    基本概念
    1. 关系:就是一张二维表,通常将一个没有重复行、重复列的二维表看成一个关系,每个关系都有一个关系名,即数据表名。

    2. 元组:表中的行称为元组,对应表中的一条记录,有关实体方面的等方面属性特征的数据

    3. 属性:表中的列称之为属性,即字段。

    4. 域:属性的取值范围就叫做域,同一个属性只能在相同的域中取值

    5. 关键字:是唯一能够区分确定不同元组或者属性组合的一个关键字。

    6. 主关键字:在候选关键字中选择一个关键字作为该关系的主关键字。关系中的主关键字是唯一的。

    7. 外部关键字:关系中的某个属性组和并非是关键字,却是另一个关系的主关键字,此属性为本关系外部关键字

    8. 关系模式:对关系的描述叫做关系的关系模式“关系名(属性名1,属性名2,属性名3,,,,,)

    E_R图和关系模型的转换
    1. E-R图转换为关系模型就是将实体型,实体的属性和实体之间的关系的联系转换为关系模式,一个实体型转换为一个关系模式,实体的属性就是关系的属性,实体的码就是关系的码。

    2. 分为:一对一,一对多,多对多。

    3.2关系的完整性

    关系模型的完整性是保证关系数据表正确的关键。关系模型支持实体完整性约束,参照完整性约束,与用户自定义的完整性约束。

    1. 实体完整性约束:主键不能为空,复合主键也不能为空值

    2. 参照完整性约束:在一个表为主键,在另一个表示非主键,那么这个表的非主键必定存在在第一表中能够找到

    3. 用户定义完整性约束:还需要一些特殊的约定条件,用户定义的完整性是针对具体关系数据库的约束条件。

    3.3关系的运算

    传统的集合运算
    1. 笛卡尔积

    专门的关系运算
    1. 选择:按照条件从指定的关系中挑选出满足条件的元组构成新的关系,关系模式不变,其中的元组数目小于原来的关系

    2. 投影:投影少列,组数不变

    3. 连接:从相应的关系中的笛卡尔积选取属性间满足一定运行条件的元组

    四、数据库设计

    4.1数据库设计概念

    数据库设计概念
    1. 数据库应用系统:使用了各种管理信息的系统,比如办公自动化软件,电子政务软件等等

    2. 数据库与设计:对于非定的应用环境,设计由数据库的逻辑模式和物理模式,并赐根据建立数据库及其系统,使之能有效地存储和管理系统,满足各种用户的信息管理要求和数据操作要求。

    数据库设计方法
    1. 新奥尔良方法:需求分析----概念设计结构---逻辑设计结构---物理设计结构四个阶段,运用软件工程思想

    2. 基于ER图的数据库设计的方法:是数据库概念设计阶段广泛采用的方法

    3. 3NF 第三范式的实际方法:用关系理论为指导设计数据库的逻辑模式,是设计关系数据库是逻辑阶段可以采用的一种有效的方法

    4. ODL 方法:面向对象设计的方法,说明数据库结构,可以描述面向对象的数据库结构设计,可以直接转换为面向对象的设计库。

    4.2规范化

    函数依赖
    1. 函数依赖

    2. 非平凡和平凡函数依赖:

    3. 完全和部分函数依赖

    4. 传递函数依赖

    公理系统
    1. 逻辑蕴涵:对以满足一种依赖函数,r若函数依赖:x-y

    2. Armstrong公理系统:自反律,增广律,传递律

    3. 推理规则:合并;伪传递;分解规则

    范式
    1. 第一范式

    2. 第二范式

    3. 第三范式

    4. 第扩充的第三范式

    4.3数据库设计的基本步骤

    1. 需求分析

    2. 概念结构设计:

    3. 逻辑结构设计:

    4. 物理设计结构:

    5. 数据库实施:

    6. 数据库运行和运维:

    五、结构化查询语言

    5.1SQL简介

    SQL(Structured Query Language),即结构化查询语言,是一种专门用于管理关系数据库管理系统(RDBMS)的编程语言

    SQL语言的主要功能包括:

    1. 数据查询:允许用户从数据库中检索特定数据。这是通过使用SELECT语句完成的,它是SQL中最常使用的部分之一。

    2. 数据操纵:用户可以插入、更新或删除数据库中的记录。这分别通过INSERT、UPDATE和DELETE语句实现。

    3. 数据定义:用于创建、修改或删除数据库中的表、索引和其他对象。这些操作通过CREATE、ALTER和DROP等语句完成。

    4. 数据控制:管理数据库的安全性和访问权限。这涉及授予或撤销用户的权限,通常使用GRANT和REVOKE语句。

    5. 事务控制:用于管理事务,确保数据的完整性。这包括COMMIT和ROLLBACK命令,用于保存或取消事务。

    SQL语言的设计初衷是易于学习和使用,因此它的语法相对简单直观。它不仅可以独立在数据库终端中使用,还可以嵌入到其他程序设计语言中,作为子语言来扩展应用程序的功能。

    此外,SQL自1974年由Boyce和Chamberlin提出以来,已经经历了多个版本的标准化,包括ANSI在1986年发布的最初标准,以及后来的SQL-89、SQL-92和SQL-99等版本。这些标准的制定和更新,使得SQL语言得到了广泛的应用和发展。

    总的来说,SQL是数据库领域的基础,无论是进行数据分析、软件开发还是系统管理,掌握SQL都是非常有用的技能。

    5.2对表结构的操作

    对表结构的操作主要包括创建表、修改表以及删除表。具体来看:

    1. 创建表(Create Table)

      • 使用CREATE TABLE语句来定义一个新的表。

      • 在创建表时,需要指定表名以及表中每个列的名称、数据类型和可能的约束条件。

    2. 修改表(Alter Table)

      • 使用ALTER TABLE语句来修改现有表的结构。

      • 可以添加新列、删除已有列、修改列的数据类型或约束等。

      • 还可以使用此命令来重命名表或更改表的字符集。

    3. 删除表(Drop Table)

      • 使用DROP TABLE语句来删除整个表,包括其结构和所有数据。

      • 这是一种不可逆操作,因此在执行前通常需要用户确认。

    这些操作是数据库管理中的基础部分,对于维护数据库结构的完整性和适应性至关重要。在进行这些操作时,需要谨慎考虑,因为它们会直接影响数据库中的数据和应用程序的功能。

    5.3对记录的操作

    数据库对记录的操作具体包括增加、删除、修改和查询记录。这些操作通常通过SQL(结构化查询语言)来完成,是数据库管理的基本功能。

    1. 增加记录:在数据库中添加新的数据记录通常使用INSERT INTO语句。例如,向一个名为students的表中插入一条新记录,可以执行类似于INSERT INTO students (name, age, grade) VALUES ('张三', 20, '三年级');的命令。

    2. 删除记录:从数据库中移除不再需要的记录可以使用DELETE FROM语句。例如,要删除students表中名为张三的记录,可以使用DELETE FROM students WHERE name='张三';命令。

    3. 修改记录:更新数据库中的现有记录使用UPDATE语句。例如,若要更新张三的成绩,可以使用类似于UPDATE students SET grade='A' WHERE name='张三';的命令。

    4. 查询记录:检索数据库中的记录通常使用SELECT语句。例如,要查询所有学生的信息,可以使用SELECT * FROM students;。如果只需要查询特定条件的数据,如所有三年级的学生,可以使用SELECT * FROM students WHERE grade='三年级';

    总的来说,数据库管理系统(DBMS)提供了这些操作的接口,数据管理员或具有相应权限的用户可以通过这些接口来维护数据库的内容。在进行这些操作时,需要确保操作的正确性,避免数据丢失或损坏。此外,大型数据库如Oracle、MySQL、SQL Server等,虽然在功能和性能上有所不同,但都支持这些基本的记录操作。

    5.4对表的查询

    数据库对表的操作教学

    目标:通过本课程,学员将学会如何在关系型数据库中对表进行基本的管理操作,包括创建、修改和删除表。

    预备知识:学员应具备基础的数据库和SQL语言知识。

    教学工具:数据库管理系统(如MySQL, PostgreSQL, Oracle等),SQL编辑器或数据库管理工具。

    教学内容:

    1. 创建表(Create Table)

      • 解释如何使用CREATE TABLE语句来定义一个新的数据表。

      • 演示如何指定列名、数据类型、约束(主键、外键、唯一性、非空等)。

      • 实例操作:创建一个名为employees的表,包含id, name, position, hire_date等字段。

    2. 修改表(Alter Table)

      • 讲解如何使用ALTER TABLE语句来更改现有表的结构。

      • 演示添加新列、删除列、更改列的数据类型和名称以及应用约束。

      • 实例操作:在employees表中添加一个email字段,然后删除一个不再需要的position字段。

    3. 删除表(Drop Table)

      • 说明如何使用DROP TABLE语句来彻底移除一个表及其所有数据。

      • 强调该操作不可逆,需谨慎使用。

      • 实例操作:删除刚才创建的employees表。

    练习:

    • 让学员根据指导独立完成上述操作,确保他们理解并能够执行每个步骤。

    • 提供一个假想的业务场景,要求学员设计一个包含多个表的数据库模型,并实施创建、修改和删除表的操作。

    评估:

    • 问答环节,以确保学员理解概念和步骤。

    • 检查学员的练习成果并提供反馈。

    总结:

    回顾本课的重点内容,确保学员掌握对表进行创建、修改和删除的基本操作,并了解这些操作对数据库管理的重要性。

    注意:实际教学中可能需要适应学员的具体需求和学习进度,调整示例和练习的难度。此外,务必提醒学员在进行任何操作前做好数据备份,以防意外情况导致数据丢失。

    六、课后习题

    1. 关系型数据库中,用于唯一标识每一条记录的属性是: A. 主键 B. 外键 C. 索引 D. 约束

      解析:主键(Primary Key)是数据库表中用于唯一标识每条记录的字段或字段组合。外键、索引和约束不能唯一标识记录。

      答案:A

    2. SQL语言中,用于从数据库表中检索数据的语句是: A. SELECT B. INSERT C. UPDATE D. DELETE

      解析:SELECT语句用于从数据库表中检索数据,INSERT用于插入数据,UPDATE用于更新数据,DELETE用于删除数据。

      答案:A

    3. 在数据库设计中,第一范式(1NF)要求表必须满足: A. 属性不可再分 B. 每个表只有一个主键 C. 所有属性都是单一数据类型 D. 没有重复的组

      解析:第一范式(1NF)要求表的每一列都是不可分割的基本数据项,即属性不可再分。选项B是第二范式的要求,选项C是数据库设计的基本要求,选项D是第三范式的要求。

      答案:A

    4. 在SQL中,哪个子句用于指定选择条件以限制SELECT查询的结果集? A. FROM B. WHERE C. ORDER BY D. GROUP BY

      解析:WHERE子句用于指定选择条件以限制SELECT查询的结果集。FROM子句用于指定查询涉及的表,ORDER BY用于对结果进行排序,GROUP BY用于对结果进行分组。

      答案:B

    5. 在数据库中,事务的ACID特性指的是: A. 原子性、一致性、隔离性、持久性 B. 关联性、一致性、隔离性、分布性 C. 原子性、兼容性、隔离性、持久性 D. 关联性、一致性、独立性、持久性

      解析:ACID是Atomicity(原子性)、Consistency(一致性)、Isolation(隔离性)、Durability(持久性)的首字母缩写,是事务处理的基本特性。

      答案:A

    6. 在数据库中,索引的作用是什么? A. 确保数据的完整性 B. 加速数据的检索速度 C. 强制使用默认值 D. 限制数据的类型

      解析:索引是用来提高数据库表中数据检索速度的数据库对象。它不涉及数据完整性、默认值或数据类型。

      答案:B

    7. 在SQL中,如果要将两个或多个查询结果集合并成一个结果集,应使用哪个关键字? A. UNION B. JOIN C. INTERSECT D. EXCEPT

      解析:UNION操作符用于合并两个或多个SELECT语句的结果集。JOIN用于连接两个或多个表,INTERSECT返回两个结果集的交集,EXCEPT返回第一个结果集中包含但第二个结果集中不包含的记录。

      答案:A

    8. 在数据库中,什么是规范化? A. 优化数据库性能的过程 B. 消除数据冗余的过程 C. 增加数据安全性的过程 D. 简化数据库结构的过程

      解析:规范化是数据库设计的一个过程,目的是减少数据冗余,确保数据完整性。它不是直接针对性能、安全性或简化结构的。

      答案:B

    9. 在SQL中,哪个命令用于删除表中的所有记录,但保留表结构? A. DELETE B. TRUNCATE C. DROP D. CLEAN

      解析:TRUNCATE命令用于删除表中的所有记录,但保留表结构。DELETE命令用于删除记录,但比TRUNCATE慢且可以恢复。DROP命令用于删除整个表结构和数据。CLEAN不是一个有效的SQL命令。

      答案:B

    10. 在数据库中,视图(View)是一个虚拟表,其数据来源于: A. 其他视图 B. 实际的数据库表 C. 数据库管理员 D. 存储过程

      解析:视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名字的列和行数据。但是,视图并不在数据库中以存储的数据形式存在。视图的数据来源于它所基于的表。

      答案:B

  • 相关阅读:
    【EMQX】 Spring Cloud 集成MQTT并异步入库(mongodb)
    2023-11-16 android 编译提示module freg.default missing dependencies:
    【干货】【常用电子元器件介绍】【二极管】(一)--二极管的种类、识别、检测和主要参数
    Kubernetes 是什么 ?
    CAP定理一文带你速解(通俗易懂,图文并茂)
    Kafka从安装使用到集成Springboot详细教程
    pytorch调整模型学习率
    Arcgis pro属性表字段计算生成随机数
    算法篇 滑动窗口 leetCode 无重复字符的最长子串
    【Elasticsearch专栏 02】深入探索:Elasticsearch为什么使用倒排索引而不是正排索引
  • 原文地址:https://blog.csdn.net/m0_69311549/article/details/136673003