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

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

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

相关文章

相似性搜索揭秘:向量嵌入与机器学习应用

引言 在当今数据驱动的世界中,有效地检索和利用信息是一项关键挑战。在数据库、搜索引擎和众多应用程序中,寻找相似数据是一项基本操作。传统数据库中,基于固定数值标准的相似项搜索相对直接,通过查询语言即可实现,如…

聚四氟乙烯离心管 四氟反应管 消解管 PTFE螺口带盖管 特氟龙试管

一、产品介绍 样品悬浮液盛放在管状试样容器中,在离心机的高速旋转下,由于巨大的离心力作用,使悬浮的微小颗粒 以一定的速度沉降,从而与溶液得以分离。这种带密封盖或压盖的管状试样容器,就是离心管。 PTFE离心管&…

【机器学习】第9章 降维算法——PCA降维

一、概念 1.PCA (1)主成分分析(Principal ComponentAnalysis,PCA)一种经典的线性降维分析算法。 (2)原理,这里以二维转一维为例,原来的平面变成了一条直线 这是三维变二…

车载学习:UDS诊断、ECU刷写、OTA升级、Tbox测试、CANoe实操

每天的直播时间: 周一至周五:20:00-23:00 周六与周日:9:00-12:00,14:00-17:00 TBOX 深圳 涉及过T-BOX测试吗Ota升级涉及的台架环境是什么样的?上…

PHP蜜语翻译器在线文字转码解码源码

源码介绍 PHP蜜语翻译器在线文字转码解码源码 文字加密通话、一键转换、蜜语密码 无需数据库,可以将文字、字母、数字、代码、表情、标点符号等内容转换成新的文字形式,通过简单的文字以不同的排列顺序来表达不同的内容!支持在线加密解密 有多种加密展示…

SpringCloud之Nacos

SpringCloud之Nacos 一、微服务介绍 1. 什么是微服务 2014年,Martin Fowler(马丁福勒 ) 提出了微服务的概念,定义了微服务是由以单一应用程序构成的小服务,自己拥有自己的进程与轻量化处理,服务依业务功能…

Spring Boot集成websocket实现webrtc功能

1.什么是webrtc? WebRTC 是 Web 实时通信(Real-Time Communication)的缩写,它既是 API 也是协议。WebRTC 协议是两个 WebRTC Agent 协商双向安全实时通信的一组规则。开发人员可以通过 WebRTC API 使用 WebRTC 协议。目前 WebRTC…

WPF学习(4)--SCICHART学习

一、项目创建过程 1.下载SCICHART插件 2.选中第一个&#xff0c;确保引用中有我们要用的 二、示例代码 1.前端代码 <Window x:Class"SciChart.Examples.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"h…

centos 7无需token编译安装freeswitch 1.10.11 ——筑梦之路

准备工作 安装编译工具和依赖包 yum update -y sudo yum install epel-release vim tcpdump net-tools.x86_64 -y sudo yum install gcc-c sqlite-devel zlib-devel libcurl-devel pcre-devel speex-devel ldns-devel libedit-devel openssl-devel git -y yum install yasm n…

DFS 迷宫

个人感觉DFS没有递归那么烧脑 简单迷宫 如何接受二维数组 先构建A[MAXN][MAXN]&#xff0c;人后二重循环 #include <iostream> #include <vector> #include <cmath> #include <string> #include <cstring> using namespace std; const int N…

微型操作系统内核源码详解系列五(2):cm3下栈的初始化

系列一&#xff1a;微型操作系统内核源码详解系列一&#xff1a;rtos内核源码概论篇&#xff08;以freertos为例&#xff09;-CSDN博客 系列二&#xff1a;微型操作系统内核源码详解系列二&#xff1a;数据结构和对象篇&#xff08;以freertos为例&#xff09;-CSDN博客 系列…

windows反弹shell的方法

什么是正向shell和反向shell 首先说&#xff0c;正向shell是控制端主动连接被控制端&#xff0c;通过目标主机开放一个监听端口等待其他主机访问&#xff0c;从而获得对目标主机的shell访问&#xff0c;优点是控制端可以整个控制目标主机&#xff0c;但缺点会受到防火墙的连&a…

手机usb共享网络电脑没反应的方法

适用于win10电脑&#xff0c;安卓手机上可以 开启usb网络共享选择&#xff0c;如果选择后一直跳&#xff0c;让重复选择usb选项的话&#xff0c;就开启 开发者模式&#xff0c;进到 开发者模式 里设置 默认usb 共享网络 选项 &#xff0c;就不会一直跳让你选。 1.先用数据线 连…

如何通过Appium连接真机调试

1、打开appium&#xff0c;点击启动appium服务器&#xff08;如图1&#xff09; 2、appium启动成功后&#xff0c;点击放大镜启动检查会话&#xff08;如图2&#xff09; 3、填写真机设备信息和APP的package、activity,点击启动会话&#xff08;如图3&#xff09; 4、打开运行A…

数据结构-十大排序算法集合(四万字精讲集合)

前言 1&#xff0c;数据结构排序篇章是一个大的工程&#xff0c;这里是一个总结篇章&#xff0c;配备动图和过程详解&#xff0c;从难到易逐步解析。 2&#xff0c;这里我们详细分析几个具备教学意义和实际使用意义的排序&#xff1a; 冒泡排序&#xff0c;选择排序&#xff0c…

Swift Combine — Subject Publishers(PassthroughSubject CurrentValueSubject)

本文主要介绍一下Subject&#xff0c;Subject 本身也是一个 Publisher&#xff0c;其定义如下&#xff1a; public protocol Subject<Output, Failure> : AnyObject, Publisher {func send(_ value: Self.Output)func send(completion: Subscribers.Completion<Self.…

【漏洞复现】泛微OA E-Cology ln.FileDownload 任意文件读取漏洞

免责声明&#xff1a; 本文内容旨在提供有关特定漏洞或安全漏洞的信息&#xff0c;以帮助用户更好地了解可能存在的风险。公布此类信息的目的在于促进网络安全意识和技术进步&#xff0c;并非出于任何恶意目的。阅读者应该明白&#xff0c;在利用本文提到的漏洞信息或进行相关测…

JAVA开发 选择本地的文件,控制台输出选择的文件名

打开文件选择器对话框&#xff0c;控制台输出选择的文件 1、展示效果2、实现代码3、JFileChooser类 1、展示效果 2、实现代码 import javax.swing.*; import java.io.*; import java.text.SimpleDateFormat; import java.util.Date;public class GenerateCompress {public sta…

强大的api管理系统Storm Core API_V1.1免授权源码

强大的api管理系统Storm Core API_V1.1免授权源码&#xff0c;带用户key和ip白名单功能 可设置付费操作等 更新日志 此次更新功能比较多 1.完善个人中心页面 2.完善注册登录页面 3.完善key功能 4.增加ip白名单功能 5.以及一些其他小小的美化 6.模板dxx的图片可单个自定…

AWS——01篇(AWS入门 以及 AWS之EC2实例及简单实用)AWS

AWS——01篇&#xff08;AWS入门 以及 AWS之EC2实例及简单实用&#xff09; 1. 前言 2. 创建AWS账户 3. EC2 3.1 启动 EC2 新实例 3.1.1 入口 3.1.2 设置名称 选择服务 3.1.3 创建密钥对 3.1.4 网络设置——安全组 3.1.4.1 初始设置 3.1.4.2 添加安全组规则&#xff08;开放新…