Restart Study MySQL-01資料庫概述(基礎)

来源:https://www.cnblogs.com/changming06/archive/2023/12/03/17873952.html
-Advertisement-
Play Games

C(Chapter) C-01.資料庫概述 1.為什麼要用資料庫 持久化(persistence):把數據保存到可掉電式存儲設備(硬碟)中以供之後使用。大多數情況下,特別是企業應用,數據持久化是將記憶體中的數據保存到硬碟上加以"固化",而持久化的實現過程大多使用各種關係資料庫來完成。 持久化的主要作用 ...


C(Chapter)

C-01.資料庫概述

1.為什麼要用資料庫

  • 持久化(persistence):把數據保存到可掉電式存儲設備(硬碟)中以供之後使用。大多數情況下,特別是企業應用,數據持久化是將記憶體中的數據保存到硬碟上加以"固化",而持久化的實現過程大多使用各種關係資料庫來完成。
  • 持久化的主要作用是將記憶體中的數據存到關係型資料庫中,當然也可以存儲在磁碟文件,XML數據文件中。

2.資料庫與資料庫管理系統

2.1 資料庫的相關概念

DB:資料庫(Database)。存儲數據的倉庫,其本質是一個文件系統。保存了一系列有組織的數據。
DBMS:資料庫管理系統(Database Management System)。是一種操作和管理資料庫的大型軟體,用於建立,使用和維護資料庫,對資料庫進行統一的管理和控制。用戶通過資料庫管理和訪問資料庫中表的數據。
SQL:結構化查詢語言(Structured Query Language)。專門用來與資料庫交互的語言。

2.2 資料庫和資料庫管理系統的關係

資料庫管理系統(DBMS)可以管理多個資料庫,一般開發人員會針對每一個應用創建一個資料庫。為保存應用中實體的數據,一般會在資料庫中創建多個表,以保存程式中用戶的數據。

3.MySQL優勢

為什麼很多廠商選擇MySQL?
  • 1.開放源代碼,使用成本低。
  • 2.性能卓越,服務穩定。
  • 3.軟體體積小,使用簡單,並且易於維護。
  • 4.歷史悠久,社區用戶活躍,遇到問題容易解決。
  • 5.很多互聯網公司再用,經過了時間的考驗。

4.RDBMS與非RDBMS

RDBMS(Relationship Database Management System)

4.1 關係型資料庫(RDBMS)

4.1.1 實質
  • 關係型資料庫是最古老的資料庫類型,關係型資料庫模型是把複雜的數據結構歸結為簡單的二元關係(二維表格)。
  • 關係型資料庫以行(row)列(column)的形式存儲數據,以便於用戶理解。這一系列的行和列被稱為表(table),一組表組成了一個庫(database)。
  • 表和表之間的數據記錄有關係(relationship)。現實世界里的各種實體以及實體之間的各種關係均用關係模型來表示。關係型資料庫,就是建立在關係模型基礎上的資料庫。
  • SQL就是關係型資料庫的交互語言。
4.1.2 優勢
  • 複雜查詢 可以用SQL語句方便的在一個表以及各個表之間,做非常複雜的數據查詢。
  • 事務支持 使得對於安全性很高的數據訪問要求得以實現。

4.2 非關係型資料庫(非DBMS)

4.2.1 介紹

非關係型資料庫,可以看成關係型資料庫的簡化版本,基於鍵值對存儲數據,不需要經過SQL層的解析,性能非常高。同時,減少了很多不常用的功能,進一步提高了性能。
目前主流的非關係型資料庫都是免費的。

4.2.2 有那些非關係型資料庫

相比於SQL,NoSQL泛指非關係型資料庫,包括了鍵值型資料庫,文檔型資料庫,搜索引擎和列存儲等,還有圖形資料庫。也只有NoSQL才能將這些資料庫都概括。
鍵值型資料庫
鍵值型資料庫,通過key-value鍵值的方式來存儲數據,其中key和value可以是簡單的對象,也可以是複雜的對象。key作為唯一的標識符,優點是查找速度快,而且明顯優於關係型資料庫,確定是無法像關係型資料庫一樣使用條件過濾(比如WHERE),如果不知道去哪裡找數據,就會遍歷所有的鍵,消耗大量的CPU資源。
鍵值型資料庫典型的使用場景就是作為記憶體緩存。Redis是最流行的鍵值型資料庫。
文檔型資料庫
可以存放文檔,可以是xml格式,json格式。再資料庫中文檔作為處理信息的基本單位,一個文檔相當於一條記錄。文檔資料庫所存放的文檔,就相當於鍵值資料庫所存放的值。MongoDB是最流行的文檔型資料庫。此外還有CouchDB等。
搜索引擎資料庫
關係型資料庫雖然採用了索引提升了檢索效率,但是針對全文索引效率卻較低。搜索引擎資料庫是應用在搜索引擎領域的數據存儲形式,由於搜索引擎會爬取大量的數據,並以特定的格式進行存儲,這樣在檢索的時候,才能保證性能最優。核心原理是倒排索引
典型產品:ES(Elasticsearch),Solr,Splunk等。
列式資料庫
列式資料庫是相對於行式存儲的資料庫,Oracle,MySQL,SQL Server等資料庫都是採用的行式存儲(Row-based),而列式資料庫是將數據按照列存儲到資料庫中,這樣做的好處是可以大量降低系統的I/O,適合於分散式文件系統,不足在於功能相對有限。
典型產品:HBase。
圖形資料庫
圖形資料庫,利用了圖這種數據結構存儲了實體(對象)之間的關係,圖形資料庫最典型的例子就是社交網路中人與人的關係,數據模型主要是以節點和邊(關係)來實現,特點在於能高效的解決複雜的關係問題。
圖形資料庫顧名思義,就是一種存儲圖形關係的資料庫,它利用了圖這種數據結構,存儲了實體(對象)之間的關係。關係型數據用於存儲明確關係的數據,但對於複雜關係的數據存儲卻有些力不從心。如社交網路中人物之間的關係,如果使用關係型資料庫會非常複雜,用圖形資料庫將非常簡單。
典型產品:Neo4J,InfoGrid等。

4.2.3 NoSQL的演變

NoSQL對SQL做出了很好的補充,比如實際開發中,有很多業務需求,其實並不需要完整的關係型資料庫功能,非關係型資料庫的功能就足夠使用了。這種情況下,使用性能更高成本更低的的非關係型資料庫當然是更好的選擇,比如:排行榜,定時器等。

5.關係型資料庫設計規則

  • 關係型資料庫的典型數據結構就是數據表,這些數據表的組成都是結構化的(Structured)。
  • 將數據放到表中,表再放到庫中。
  • 一個資料庫中可以有多個表,每個表都有一個名字,用來標識自己。表名具有唯一性。
  • 表具有一些特性,這些特性定義了數據在表中如何存儲,類似Java中“類”的設計。

5.1 表,記錄,欄位

  • E-R(entity-relationship,實體-聯繫),模型中有三個主要概念是:實體集屬性聯繫集
  • 一個實體集(Class)對應資料庫中的一張表(Table),一個實體(Instance)則對應於資料庫表中的一行(Row),也稱為一條記錄(Record)。一個屬性(Attribute)對應於資料庫中的一列(Cloumn),也成為一個欄位(Field)。
  • ORM思想(Object Relational Mapping)體現:資料庫中的一張表 <----> Java中一個類,表中的一條數據 <----> 類的一個對象(實體),
    表中的一個列 <----> 類中的一個欄位,屬性(Field)。

5.2 表的關聯關係

  • 表與表之間的數據記錄有關係。現實世界的實體及實體之間的關係均用關係模型來表示。
  • 四種,一對一關係,一對多關係,多對多關係,自我引用。

學習視頻是尚矽谷宋紅康老師主講的b站視頻,BV1iq4y1u7vj
只是為了記錄自己的學習歷程,且本人水平有限,不對之處,請指正。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • acwing week2 基礎演算法3總結 總結點1:雙指針演算法 //常用模版框架 for (int i = 0, j = 0; i < n; i ++ ) { while (j < i && check(i, j)) j ++ ; } 常見問題分類: (1) 對於一個序列,用兩個指針維護一段區間 ( ...
  • 小市值選股策略的核心在於通過綜合分析公司的基本面、行業定位、財務健康狀況以及市場趨勢, 來尋找那些被市場低估但具備顯著成長潛力的股票,同時也要重視風險管理和投資組合的多樣化。 今天來給大家分享下小市值策略代碼如下: # 顯式導入 BigQuant 相關 SDK 模塊 from bigdatasour ...
  • 選項用來提供對相關設置的強類型訪問,讀取配置首選使用選項模式。選項無法脫離容器使用,依賴容器,實現了選項不同的訪問方式。選項模式使用了泛型包裝器,因此具備瞭如下優點: 不需要顯示註冊選項具體類型,只需要將泛型包裝器註入到容器中; 對於選項實例的評估推遲到獲取IOptions.Value時進行,而不是 ...
  • 前面老周給大伙伴們演示了過濾器的運行流程,大伙只需要知道下麵知識點即可: 1、過濾器分為授權過濾、資源訪問過濾、操作方法(Action)過濾、結果過濾、異常過濾、終結點過濾。上一次咱們沒有說異常過濾和終結點過濾,不過老周後面會說的。對這些過濾器,你有印象就行了。 2、所有過濾器介面都有同步版本和非同步 ...
  • 眾所周知,當我們使用IIS的時候,在使用負載均衡的情況下,想停掉一個站點,通常會點擊Sites(網站)中的Stop(停止)來停止一個站點。但是這樣做,會帶來一個問題,當點擊Stop(停止)時,正在響應中的請求會立刻被切斷,使客戶端無法收到響應,後續也無法連接該站點,在某些業務場景中,比如涉及金額交易 ...
  • 在.NET生態系統中,有許多出色的依賴註入(DI)框架可供選擇。每個框架都有其獨特的特點和優點,可以根據項目需求和偏好進行選擇。下麵詳細介紹一些.NET中優秀的DI框架,它們的優點以及適用場景。 1、Microsoft.Extensions.DependencyInjection: 官方支持:Mic ...
  • 模塊--》文件 包--》文件夾 我們將類似功能的模塊放到一起(包)內,要用時直接導入即可 語法: import 模塊名 as 別名: 》取別名是為了可以節省時間,簡化代碼 import win32process as pro # 以後直接用pro即可 模塊分為三種: 1.內置模塊 2.第三方模塊 3 ...
  • SQL處理日期 在資料庫操作中,處理日期是一個關鍵的方面。確保插入的日期格式與資料庫中日期列的格式匹配至關重要。以下是一些常見的SQL日期數據類型和處理方法。 SQL日期數據類型 MySQL日期數據類型 DATE - 格式為YYYY-MM-DD DATETIME - 格式為YYYY-MM-DD HH ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...