IT入门知识第四部分《数据库》(4/10)

news2024/11/25 12:50:34

目录

1. 数据库基础

1.1 数据库的定义

1.2 数据库的关键概念

数据模型

数据库架构

数据库操作语言(DML 和 DDL)

总结

2. 关系型数据库

2.1 MySQL

MySQL 的历史和特点

MySQL 的安装和配置

MySQL 的基本操作

2.2 PostgreSQL

PostgreSQL 的特点和优势

PostgreSQL 的高级功能

PostgreSQL 为什么使用它

2.3 Oracle

Oracle 数据库的商业特性

Oracle 的体系结构

Oracle 的管理工具

3. 非关系型数据库

3.1 MongoDB

MongoDB 的文档存储模型

MongoDB 的基本操作

3.2 Cassandra

Cassandra 的分布式架构

Cassandra 的数据模型

Cassandra 的数据复制和分区

3.3 Redis

Redis 的内存数据存储特性

Redis 的数据结构

Redis 的持久化和复制机制

1. 数据库基础

在数字化时代,数据无处不在,而数据库则是组织和管理这些数据的系统。数据库不仅为企业提供了数据存储的解决方案,还使得数据的检索、分析和处理变得更加高效和系统化。

1.1 数据库的定义

数据库是一个有组织的数据集合,它允许用户存储、检索和操作数据。数据库通常用于各种应用程序,从简单的个人地址簿到复杂的企业系统,如客户关系管理(CRM)、库存管理和电子商务平台。

功能:

  • 存储: 长期存储大量数据。
  • 检索: 快速查找和访问所需数据。
  • 处理: 对数据进行计算和分析。
  • 管理: 确保数据的安全性、完整性和一致性。

类型:

  • 关系型数据库: 使用表格模型存储数据,表之间通过关系(如外键)连接。
  • 非关系型数据库: 不依赖表格模型,而是使用其他数据模型,如键值对、文档或图形数据库。

1.2 数据库的关键概念

数据模型

数据模型是数据库中数据的逻辑表示。它定义了数据的结构、数据之间的关系以及数据的约束条件。常见的数据模型包括:

  • 关系模型: 使用表格、行和列来表示数据。
  • 文档模型: 存储类似于JSON或XML的文档。
  • 键值模型: 通过键来存储和检索值。
  • 图形模型: 存储实体之间的关系,用于复杂的网络结构。

数据库架构

数据库架构是指数据库的组织结构,包括数据是如何存储和访问的。它通常包括:

  • 物理架构: 数据库在磁盘上的存储方式。
  • 逻辑架构: 数据库的逻辑设计,如表结构和索引。
  • 视图: 用户看到的数据库结构,可能与实际存储结构不同。

数据库操作语言(DML 和 DDL)

DML(数据操纵语言) 用于与数据库中的数据交互,包括:

  • SELECT: 查询数据。
  • INSERT: 插入新数据。
  • UPDATE: 更新现有数据。
  • DELETE: 删除数据。

DDL(数据定义语言) 用于定义数据库的结构,包括:

  • CREATE: 创建新的数据库对象,如表、索引。
  • ALTER: 修改现有数据库对象的结构。
  • DROP: 删除数据库对象。

总结

数据库基础是理解数据如何被存储、访问和操作的前提。了解数据库的定义、功能、类型、数据模型、架构和操作语言对于任何需要与数据打交道的开发者或数据分析师来说都是至关重要的。随着技术的发展,数据库的类型和操作方式也在不断演变,但这些核心概念仍然是构建高效、可靠数据库系统的基石。

SQL(Structured Query Language)是一种标准化的语言,用于在关系型数据库管理系统(RDBMS)中进行数据管理和操作。以下是一些常见的SQL语句示例:

  1. 选择数据

    SELECT column1, column2 FROM table_name;

  2. 选择特定条件的数据

    SELECT * FROM table_name WHERE condition;

  3. 插入数据

    INSERT INTO table_name (column1, column2) VALUES (value1, value2);

  4. 更新数据

    UPDATE table_name SET column1 = value1 WHERE condition;

  5. 删除数据

    DELETE FROM table_name WHERE condition;

  6. 创建数据库

    CREATE DATABASE database_name;

  7. 创建表

    CREATE TABLE table_name ( column1 datatype, column2 datatype, ... );

  8. 修改表结构

    ALTER TABLE table_name ADD column_name datatype;

  9. 重命名表

    RENAME TABLE old_table_name TO new_table_name;

  10. 删除表

    DROP TABLE table_name;

  11. 创建索引以提高查询效率

    CREATE INDEX index_name ON table_name (column);

  12. 分组数据

    SELECT column, COUNT(*) FROM table_name GROUP BY column;

  13. 使用聚合函数

    SELECT AVG(column), SUM(column), MAX(column), MIN(column) FROM table_name;

  14. 连接表

    SELECT * FROM table1 INNER JOIN table2 ON table1.column = table2.column;

  15. 子查询

    SELECT * FROM table_name WHERE column IN (SELECT column FROM other_table WHERE condition);

  16. 排序结果

    SELECT * FROM table_name ORDER BY column ASC, another_column DESC;

  17. 限制结果数量

    SELECT * FROM table_name LIMIT number;

  18. 事务处理

    BEGIN; UPDATE table_name SET column = value WHERE condition; COMMIT;

  19. 备份数据库

    -- 这通常不是纯SQL命令,而是由数据库管理系统提供的工具或命令行选项

  20. 恢复数据库

    -- 同上,通常不是SQL命令

请注意,这些SQL语句只是示例,具体的语法可能会根据不同的数据库系统(如MySQL、PostgreSQL、SQL Server等)略有不同。

2. 关系型数据库

关系型数据库,是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,以便于用户理解,关系型数据库这一系列的行和列被称为表,一组表组成了数据库。用户通过查询来检索数据库中的数据,而查询是一个用于限定数据库中某些区域的执行代码。关系模型可以简单理解为二维表格模型,而一个关系型数据库就是由二维表及其之间的关系组成的一个数据组织。

关系型数据库(RDBMS)是数据存储和检索的主流方式,它们基于关系模型,使用表格、行和列来组织数据。SQL(Structured Query Language)作为标准语言,用于在关系型数据库中进行数据操作。

2.1 MySQL

MySQL 的历史和特点

MySQL是一个广泛使用的开源关系型数据库管理系统,最初由MySQL AB开发,现在属于Oracle公司。它以高性能、可靠性和易用性而闻名。

Mysql官网:https://www.mysql.com/

特点:

  • 开源免费
  • 支持多种操作系统。
  • 高度可定制的存储引擎。
  • 大量社区支持和文档

MySQL 的安装和配置

MySQL可以在多种平台上安装,包括Linux、Windows和macOS。安装过程通常涉及下载安装包、运行安装程序和配置基本设置。

MySQL 的基本操作

  • 创建数据库:
    CREATE DATABASE mydatabase;
  • 创建表:
    CREATE TABLE mytable (
      id INT AUTO_INCREMENT PRIMARY KEY,
      name VARCHAR(50),
      age INT
    );
  • 插入数据:
    INSERT INTO mytable (name, age) VALUES ('John Doe', 30);
  • 查询数据:
    SELECT * FROM mytable WHERE age > 25;
  • 更新数据:
    UPDATE mytable SET age = 31 WHERE id = 1;
  • 删除数据:
    DELETE FROM mytable WHERE id = 1;

2.2 PostgreSQL

PostgreSQL 的特点和优势

PostgreSQL,通常简称为Postgres,是一个高度可扩展的开源对象关系数据库系统。它以其强大的功能和对SQL标准的遵守而受到赞誉。

PostgreSQL官网:https://www.postgresql.org/about/

PostgreSQL 是一个功能强大的开源对象关系数据库系统,它使用并扩展了 SQL 语言,并结合了许多功能,可以安全地存储和扩展最复杂的数据工作负载。 PostgreSQL 的起源可以追溯到 1986 年,作为加州大学伯克利分校POSTGRES项目的一部分,并且在核心平台上拥有超过 35 年的积极开发经验。

PostgreSQL 因其经过验证的架构、可靠性、数据完整性、强大的功能集、可扩展性以及软件背后的开源社区始终如一地提供高性能和创新解决方案的奉献精神而赢得了良好的声誉。 PostgreSQL 可在所有主要操作系统上运行,自 2001 年以来一直符合ACID,并且具有强大的附加组件,例如流行的PostGIS地理空间数据库扩展器。毫不奇怪,PostgreSQL 已成为许多人和组织选择的开源关系数据库。

开始使用 PostgreSQL 从未如此简单 - 选择您想要构建的项目,然后让 PostgreSQL 安全可靠地存储您的数据。PostgreSQL可以通过源代码或预编译的二进制文件在多种操作系统上安装。安装后,可以使用psql命令行工具或图形界面工具来管理数据库。

优势:

  • 符合标准的SQL支持。
  • 事务、并发控制和数据完整性。
  • 支持复杂的查询和数据类型。

PostgreSQL 的高级功能

  • 事务: 确保数据的一致性和可靠性。
  • 并发控制: 通过多版本并发控制(MVCC)来实现。
  • 数据完整性: 通过外键、检查约束等机制来维护。

PostgreSQL 为什么使用它

PostgreSQL 附带了许多功能,旨在帮助开发人员构建应用程序、管理员保护数据完整性和构建容错环境,并帮助您管理数据,无论数据集有多大或多小。除了免费和开源之外,PostgreSQL 还具有高度可扩展性。例如,您可以定义自己的数据类型、构建自定义函数,甚至可以用不同的编程语言编写代码,而无需重新编译数据库!

PostgreSQL 尝试遵守SQL 标准,这种一致性不会与传统功能相矛盾,也不会导致糟糕的架构决策。支持 SQL 标准所需的许多功能,尽管有时语法或功能略有不同。随着时间的推移,预计将进一步实现一致性。截至 2023 年 9 月发布的第 16 版,PostgreSQL 至少符合 SQL:2023 Core 一致性的 179 项强制功能中的 170 项。截至撰写本文时,还没有关系数据库完全符合该标准。

以下是 PostgreSQL 中各种功能的完整列表,每个主要版本中都会添加更多功能:

  • 数据类型
    • 基元:整数、数字、字符串、布尔值
    • 结构化:日期/时间、数组、范围/多范围、UUID
    • 文档:JSON/JSONB、XML、键值(Hstore)
    • 几何:点、线、圆、多边形
    • 定制:复合、定制类型
  • 数据的完整性
    • 唯一,不为空
    • 主键
    • 外键
    • 排除约束
    • 显式锁、咨询锁
  • 并发、性能
    • 索引:B 树、多列、表达式、部分
    • 高级索引:GiST、SP-Gist、KNN Gist、GIN、BRIN、覆盖索引、布隆过滤器
    • 复杂的查询规划器/优化器、仅索引扫描、多列统计
    • 事务、嵌套事务(通过保存点)
    • 多版本并发控制(MVCC)
    • 读取查询的并行化和构建 B 树索引
    • 表分区
    • SQL 标准中定义的所有事务隔离级别,包括 Serialized
    • 表达式的即时 (JIT) 编译
  • 可靠性、灾难恢复
    • 预写日志记录 (WAL)
    • 复制:异步、同步、逻辑
    • 时间点恢复 (PITR)、活动备用
    • 表空间
  • 安全
    • 身份验证:GSSAPI、SSPI、LDAP、SCRAM-SHA-256、证书等
    • 强大的访问控制系统
    • 列级和行级安全性
    • 使用证书和附加方法进行多重身份验证
  • 可扩展性
    • 存储函数和过程
    • 过程语言:PL/pgSQL、Perl、Python 和 Tcl。通过扩展还可以使用其他语言,例如 Java、JavaScript (V8)、R、Lua 和 Rust
    • SQL/JSON 构造函数和路径表达式
    • 外部数据包装器:使用标准 SQL 接口连接到其他数据库或流
    • 可定制的表存储接口
    • 许多提供附加功能的扩展,包括 PostGIS
  • 国际化、文本搜索
    • 支持国际字符集,例如通过 ICU 校对
    • 不区分大小写和不区分重音的排序规则
    • 全文检索

2.3 Oracle

Oracle 数据库的商业特性

Oracle数据库是一个领先的商业RDBMS,以其高性能、可靠性和高级功能而闻名。Oracle数据库由Oracle公司开发和支持。

商业特性:

  • 高级安全性。
  • 强大的分析和数据处理能力。
  • 广泛的工具和应用程序集成。

Oracle 的体系结构

  • 实例: 包括内存结构(SGA)和数据库进程。
  • 数据库: 物理文件的集合,包括数据文件、控制文件和重做日志文件。
  • 模式: 数据库中的逻辑结构,如表、视图、索引和存储过程。

Oracle 的管理工具

  • SQL*Plus: 一个命令行工具,用于执行SQL语句和PL/SQL块。
  • Oracle Enterprise Manager: 一个图形界面工具,用于数据库的监控和管理。

通过这些工具和特性,Oracle数据库为企业提供了强大的数据管理解决方案。虽然它是商业软件,但许多企业仍然选择Oracle数据库,因为它提供了广泛的功能和企业级的支持。

3. 非关系型数据库

NoSQL,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在处理web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,出现了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,特别是大数据应用难题。

非关系型数据库,通常称为NoSQL数据库,是为了满足大规模数据集合的存储和检索需求而设计的,它们不依赖传统的关系模型。NoSQL数据库提供了多样化的数据模型和高可扩展性,适用于大数据和高并发的应用场景。

3.1 MongoDB

MongoDB 的文档存储模型

MongoDB是一种基于文档的数据库,它存储BSON(二进制JSON)文档。每个文档可以包含多种数据类型,如字符串、数字、数组、对象等。

MongoDB官网:https://www.mongodb.com/

特点:

  • 高性能:由于其数据结构的灵活性,MongoDB在处理复杂查询时表现出高性能。
  • 高可用性:通过副本集(Replica Sets)实现,副本集是一组维护相同数据集的MongoDB服务器。
  • 易扩展性:通过分片(Sharding)实现水平扩展,分布数据跨多个服务器。

MongoDB 的基本操作

  • 创建文档(CRUD中的Create):
    db.collection.insertOne({
      name: "John Doe",
      age: 30,
      address: {
        street: "123 Main St",
        city: "Anytown"
      }
    });
  • 读取文档(Read):
    db.collection.find({ name: "John Doe" });
  • 更新文档(Update):
    db.collection.updateOne({ name: "John Doe" }, { $set: { age: 31 } });
  • 删除文档(Delete):
    db.collection.deleteOne({ name: "John Doe" });
  • 索引:
    db.collection.createIndex({ name: 1 });
  • 聚合:
    db.collection.aggregate([
      { $match: { age: { $gte: 18 } } },
      { $group: { _id: "$age", count: { $sum: 1 } } }
    ]);

3.2 Cassandra

Cassandra 的分布式架构

Cassandra是一个分布式NoSQL数据库,设计用于处理大量数据跨多个服务器。

Cassandra 的数据模型

  • 列族:类似于关系型数据库中的表。
  • :列族中的字段。
  • 超列:列的集合(可选)。

Cassandra 的数据复制和分区

  • 数据复制:通过副本因子来控制,确保数据的高可用性。
  • 数据分区:使用一致性哈希将数据分布到不同的节点。

3.3 Redis

Redis 的内存数据存储特性

Redis是一个基于内存的数据库,提供极快的读写速度。它通常用作数据缓存或消息队列系统。

Redis官网:https://redis.io/

Redis 的数据结构

  • 字符串(Strings)
  • 哈希(Hashes)
  • 列表(Lists)
  • 集合(Sets)
  • 有序集合(Sorted Sets)

Redis 的持久化和复制机制

  • 持久化:Redis可以将内存中的数据保存到磁盘,防止数据丢失。
  • 复制:支持主从复制,提高数据的可用性和可扩展性。

通过这些NoSQL数据库,开发者可以根据应用的具体需求选择最合适的数据存储解决方案。每种NoSQL数据库都有其独特的特性和适用场景,理解这些特性有助于在大数据时代做出更合理的技术选择。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1834084.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软件测试期末复习

软件测试期末复习 Author 雨 2024年6月18日 1. 什么是软件测试 从一个通常为无限的执行域中选取合适的有限的测试用例,对程序所期望的行为进行动态验证的活动过程。 2. 软件测试的目的 尽早地发现软件的缺陷 3.什么是测试什么是缺陷 从软件内部看:软件开…

在 Stable Diffusion 中控制光线的三种方式

光线在摄影中扮演着至关重要的角色,并对图像的整体质量和意境产生重要影响。你可以利用光线来增强主题,创造深度和立体感,传达情感,并突出重要细节。 在本文中,你将了解通过以下方法来控制光线: 光线提示…

【推荐100个unity插件之21】unity实现多语言切换功能——Localization插件的使用

文章目录 前言优缺点优点缺点 安装创建配置选择语言选择默认语言创建多语言表数据创建key配置不同语言文本预加载绑定不同多语言文本数据,并显示语言切换自己编写按钮控制语言切换多语言图片切换在构建中使用Localization分析错误修复动态修改多语言文本内容参考推荐…

高考后的抉择:如何在心仪专业与知名学校之间做出选择?

目录 前言1. 专业选择的深度探讨1.1 专业的优势与挑战1.1.1 课程学习1.1.2 就业前景 1.2 专业选择的个人经验与思考 2. 名校对个人发展的长短期影响2.1 名校声誉的品牌效应2.1.1 职业发展2.1.2 社会认可度 2.2 教育资源与学术氛围2.2.1 教育资源2.2.2 学术氛围 2.3 就业优势 3.…

【2024最新精简版】RabbitMQ面试篇

文章目录 Kafka和RabbitMQ什么区别惰性队列(Lazy Queues)是怎么实现的?RabbitMQ工作模式有哪些 ?你们项目中哪里用到了RabbitMQ ?为什么会选择使用RabbitMQ ? 有什么好处 ?使用RabbitMQ如何保证消息不丢失 ?消息的重复消费问题如何解决的…

3.1、前端异步编程(超详细手写实现Promise;实现all、race、allSettled、any;async/await的使用)

前端异步编程规范 Promise介绍手写Promise(resolve,reject)手写Promise(then)Promise相关 API实现allraceallSettledany async/await和Promise的关系async/await的使用 Promise介绍 Promise是一个类,可以翻…

Spring技术——介绍、初识

从这篇博客正式开始学习 Spring 。 一、整个Spring技术学习的介绍 首先先对 Spring 做一个简单的认识,并从以下3个方面了解学习Spring 技术的意义: (1)为什么要学习 Spring 技术? 1、它的市场的占有率很高&#xff…

webpack 压缩图片

压缩前: 压缩后: 压缩后基本上是压缩了70-80%左右 1.依赖版本及配置 "imagemin-webpack-plugin": "^2.4.2", "imagemin-mozjpeg": "^7.0.0", "imagemin-pngquant": "^5.0.1", "webpa…

ClickHouse安装与下载22.3.2.2

ClickHouse安装与下载 目录 1. ClickHouse简介 1.1 ClickHouse优点: 1.2 ClickHouse缺点: 1.3 ClickHouse引擎: 1.3.1 数据库引擎 1.3.2 表引擎 2. ClickHouse下载安装 2.1 ClickHouse下载安装 2.2 ClickHouse使用 1. ClickHouse简…

五要素便携式气象站

TH-BQX5自然灾害,如暴雨、洪水、飓风等,对于人类生活的影响和威胁始终不可忽视。在应对自然灾害的过程中,提高应急响应和预警能力成为了一项迫切而重要的任务。近年来,五要素便携式气象站因其便捷、精准的特点,在自然灾…

大数据技术与实践学习

大数据技术与实践期末复习 生态系统 每一张图片都值得思考,理清楚到底是什么! 1.结构化数据(数据库里面的):Sqoop(效率比较慢/隔一段时间抽取一次) 2.半结构化或者非结构化数据:F…

Coursera耶鲁大学金融课程:Financial Markets 笔记Week 02

Financial Markets 本文是学习 https://www.coursera.org/learn/financial-markets-global这门课的学习笔记 这门课的老师是耶鲁大学的Robert Shiller https://en.wikipedia.org/wiki/Robert_J._Shiller Robert James Shiller (born March 29, 1946)[4] is an American econom…

细说MCU通过定时器输出PWM波形的实现方法

目录 一、硬件及工程 二、建立工程 三、代码修改 1、重定义回调函数 2、启动定时器中断 四、下载运行 一、硬件及工程 文章依赖的硬件及工程配置参考本文作者的其他文章:细说ARM MCU的串口接收数据的实现过程-CSDN博客 细说ARM MCU的串口接收数据的实现过程-C…

Matlab基础语法:变量和数据类型,基本运算,矩阵和向量,常用函数,脚本文件

目录 一、变量和数据类型 二、基本运算 三、矩阵和向量 四、常用函数 五、脚本文件 六、总结 一、变量和数据类型 Matlab 支持多种数据类型,包括数值类型、字符类型和逻辑类型。掌握这些基本的变量和数据类型,是我们进行数学建模和计算的基础。 数…

IT入门知识第三部分《软件开发》(3/10)

目录 IT入门知识大纲第三部分《软件开发》 1. 软件开发生命周期(SDLC) 1.1 需求分析 1.2 软件设计 1.3 程序编码 1.4 软件测试 1.5 项目部署 1.6 运行维护 2. 软件开发方法论 2.1 瀑布模型 2.2 敏捷开发 2.2.1 Scrum 2.2.2 Kanban 2.3 Dev…

ip地址b类和c类的区别是什么?体现在哪里

在数字化时代的浪潮中,IP地址扮演着不可或缺的角色。它们不仅是设备在网络中的唯一标识,更是网络连接和信息传输的基石。然而,对于非专业人士来说,IP地址的复杂分类可能会显得有些晦涩难懂。今天,我们就来深入探索IP地…

C#语言中的Async/await最佳实践

自从 C# 5 中引入 async/await 以来,开发人员之间一直对 async/await 关键字的最佳实践以及幕后实际发生的事情感到困惑。 让我们先从基础开始。 在 Windows 窗体的早期,UI 延迟与 I/O 操作所花费的时间成正比。这意味着,如果您尝试将数据保…

【ONE·基础算法 || 记忆化搜索】

总言 主要内容:编程题举例,熟悉理解记忆化搜索类题型(对比递归、动态规划理解运用)。             文章目录 总言1、记忆化搜索1.1、基本介绍1.2、细节理解(记忆搜索化、递归、动态规划……) 2、斐…

如何通过小猪APP分发轻松实现Web封装APP

你有没有想过将你的网站或者Web应用变成一个真正的APP?这听起来可能有点复杂,但其实在今天的技术环境下,这已经变得非常简单了。特别是有了像小猪APP分发这样的工具,你可以轻松地将你的Web应用封装成一个APP。 为什么要将Web应用封…

Java学习55-super关键字的使用

1.举例1:子类继承父类以后,对父类方法进行了重写,那么在子类中,是否还可以对父类中被重写的方法进行调用? 可以! 举例2:子类继承父类以后,发现子类和父类中定义了同名的属性&#xf…