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

目录

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数据库都有其独特的特性和适用场景,理解这些特性有助于在大数据时代做出更合理的技术选择。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LabVIEW利用旋转编码器脉冲触发数据采集

利用旋转编码器发出的脉冲控制数据采集,可以采用硬件触发方式,以确保每个脉冲都能触发一次数据采集。本文提供了详细的解决方案,包括硬件连接、LabVIEW编程和触发设置,确保数据采集的准确性和实时性。 一、硬件连接 1. 旋转编码…

Linux搭建我的世界乌托邦探险之旅3.2整合包服务端,Minecraft开服教程

Linux服务器使用MCSM10 搭建 我的世界 乌托邦探险之旅3.2 整合包 服务端 的教程,Minecraft整合包开服教程。 大型养老探险整合包:乌托邦探险之旅3.2,探索上千种结构,造访丰富的自然群系,欣赏生动的生物动画&#xff0…

Android如何简单快速实现RecycleView的拖动重排序功能

本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点 要实现这个拖动重排序功能,主要是用到了RecycleView的ItemTouchHelper类 首先是定义一个接口 interface ItemTouchHelperAdapter …

MVC 框架安全

在现代 Web 开发中,使用 MVC 架构是一种流行的做法。MVC 是 Model-View-Controller 的缩写,它将 Web 应用分为三层,View 层负责用户视图、页面展示等工作;Controller 负责应 用的逻辑实现,接收 View 层传入的用户请求&…

代码随想录算法训练营第三十九天| 416. 分割等和子集

416. 分割等和子集 - 力扣&#xff08;LeetCode&#xff09; class Solution {public boolean canPartition(int[] nums) {int sum 0;for (int i0;i<nums.length;i){sum nums[i];}if(sum%2!0){return false;}int weight sum /2;// int[][] dp new int[nums.length][weig…

软件测试-第1章-绪论

目录 1.1软件危机和软件生存期 &#xff08;1&#xff09;软件危机 &#xff08;2&#xff09;软件生存周期 1.2软件测试的意义 1.3什么是软件测试 &#xff08;1&#xff09;软件测试的定义 &#xff08;2&#xff09;软件测试的范围 1.4怎样认识软件测试 1&#xff…

【包管理】Node.JS与Ptyhon安装

文章目录 Node.JSPtyhon Node.JS Node.js的安装通常包括以下几个步骤&#xff1a; 访问Node.js官网&#xff1a; 打开Node.js的官方网站&#xff08;如&#xff1a;https://nodejs.org/zh-cn/download/&#xff09;。 下载安装包&#xff1a; 根据你的操作系统选择对应的Node…

Go语言RPC开发深度指南:net/rpc包的实战技巧和优化策略

Go语言RPC开发深度指南&#xff1a;net/rpc包的实战技巧和优化策略 概览理解net/rpc的核心概念RPC的基本原理net/rpc的工作模式关键特性 快速开始准备RPC服务和客户端的基础环境构建一个基础的RPC服务端构建一个基础的RPC客户端 开发一个实际的RPC服务设计服务接口实现服务客户…

《Windows API每日一练》4.5 GDI映射模式

上一节讲述设置绘图模式时&#xff0c;包括设置背景模式、混合模式&#xff0c;还有一个就是映射模式。本节我们将详细讲述映射模式。 本节必须掌握的知识点&#xff1a; 设备坐标和逻辑坐标 视口和窗口 MM_TEXT映射模式 度量映射模式 自定义映射模式 第27练&#xff1a;GDI映…

打破安全设备孤岛,多源威胁检测与响应(XDR)如何构建一体化安全防线

在数字化和信息化迅猛发展的当下&#xff0c;安全设备孤岛现象成为网络安全治理中的一大挑战。在多元化的市场环境中&#xff0c;不同厂商的安全设备因数据格式与系统兼容性的差异&#xff0c;导致信息流通受阻、共享困难&#xff0c;形成孤立的安全防线。 安全设备孤岛现象不仅…

重构大学数学基础_week05_雅各比矩阵与雅各比行列式

这周来讲一下雅各比矩阵和雅各比行列式。 多元函数的局部线性属性 首先我们来回顾一下向量函数&#xff0c;就是我们输入一个向量&#xff0c;输出也是一个向量&#xff0c;我们假设现在有一个向量函数 这个函数意思就是在说&#xff0c;我们在原来的平面上有一个向量(x,y),经…

小米手机怎么用代理换ip:步骤详解与实用指南

在数字化时代&#xff0c;网络安全与隐私保护日益受到重视。对于小米手机用户而言&#xff0c;使用代理换IP已成为提升网络安全性、访问特定网站或绕过地域限制的有效手段。本文将详细介绍如何在小米手机上设置代理以更换IP地址&#xff0c;帮助用户更好地保护个人信息和享受更…

openEuler 24.03 LTS - 华为欧拉开源版(华为 RHEL 兼容发行版)

openEuler 24.03 LTS - 华为欧拉开源版&#xff08;华为 RHEL 兼容发行版&#xff09; 华为红帽企业 Linux 兼容发行版 请访问原文链接&#xff1a;https://sysin.org/blog/openeuler/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sy…

6.17 作业

使用qt实现优化自己的登录界面 要求&#xff1a; 1. qss实现 2. 需要有图层的叠加 &#xff08;QFrame&#xff09; 3. 设置纯净窗口后&#xff0c;有关闭等窗口功能。 4. 如果账号密码正确&#xff0c;则实现登录界面关闭&#xff0c;另一个应用界面显示。 第一个源文件 …

【Netty】nio处理acceptreadwrite事件

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;Netty ⛺️稳中求进&#xff0c;晒太阳 1.处理accept 1.1客户端代码 public class Client {public static void main(String[] args) {try (Socket socket new Socket("localhost…

泛微开发修炼之旅--19ecode获取用户人员信息方案汇总及代码示例(含pc端和移动端)

文章详情链接&#xff1a;19ecode获取用户人员信息方案汇总及代码示例&#xff08;含pc端和移动端&#xff09;

Web前端开发实战:HTML5+CSS3+JavaScript+Vue+Bootstrap

&#x1f482; 个人网站:【 摸鱼游戏】【神级代码资源网站】【工具大全】&#x1f91f; 一站式轻松构建小程序、Web网站、移动应用&#xff1a;&#x1f449;注册地址&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交…

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

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

ResNet——Deep Residual Learning for Image Recognition(论文阅读)

论文名&#xff1a;Deep Residual Learning for Image Recognition 论文作者&#xff1a;Kaiming He et.al. 期刊/会议名&#xff1a;CVPR 2016 发表时间&#xff1a;2015-10 ​论文地址&#xff1a;https://arxiv.org/pdf/1512.03385 1.什么是ResNet ResNet是一种残差网络&a…

【八股系列】介绍React高阶组件,适用于什么场景?

文章目录 1. HOC的工作原理2. 返回的新组件3. 适用场景4. 注意事项5. 示例代码 React高阶组件&#xff08; Higher-Order Components&#xff0c;简称HOC&#xff09;是 React中一种高级的 复用组件逻辑的技术。 HOC自身不是 React API的一部分&#xff0c;而是基于 Reac…