MySQL(一)基礎概念
如何理解資料庫相關概念
1.資料庫與資料庫管理系統
如何理解資料庫的相關概念
1. 資料庫與資料庫管理系統
資料庫(DataBase):儲存有組織的資料的容器。
資料庫管理系統(DataBase Manage System:DBMS):資料庫軟體,用於建立和操縱資料庫。
- 很多人會混淆資料庫和資料庫管理系統的概念,實際上人們使用的各種各樣的資料庫軟體。例如:MySQL,ORACLE,SQLServer,Redis都是資料庫管理系統,我們使用它們來訪問資料庫,對資料庫進行操作。
- 資料庫可以理解為一個電子的檔案櫃,用以儲存電子化的檔案。
現在我們很多人直接把資料庫代指為資料庫管理系統,在下文中除引用外所提及的資料庫均為資料庫管理系統。
2.資料庫的分類
資料庫按照型別分類可以分為:關係型資料庫和非關係型資料庫
關係型資料庫:關係型資料庫,是指採用了關係模型來組織資料的資料庫,其以行和列的形式儲存資料,以便於使用者理解,關係型資料庫這一系列的行和列被稱為表,一組表組成了資料庫。使用者通過查詢來檢索資料庫中的資料,而查詢是一個用於限定資料庫中某些區域的執行程式碼。關係模型可以簡單理解為二維表格模型,而一個關係型資料庫就是由二維表及其之間的關係組成的一個資料組織。
非關係型資料庫:NoSQL最常見的解釋是“non-relational”,NoSQL僅僅是一個概念,泛指非關係型的資料庫,區別於關聯式資料庫,它們不保證關係資料的ACID特性。
基礎概念
1.表
表:某種特定型別資料的結構化清單
在這裡表的涵義可以理解為將同型別的資料按照一定結構儲存在一個表格中,並且該表格在該資料庫中具有唯一性。即在同一個資料庫中,不可能出現兩個相同名稱的表。不同的資料庫中,可以為兩個分別儲存在兩個資料庫的表命名相同的名稱。
如果將資料庫想象成一個保險箱,那麼表就是儲存在保險箱內的檔案。
2.行、列
表由行和列編織成一個網格狀,列顯示屬性,資料按行儲存。
姓名 | 地址 | 電話 |
---|---|---|
張三 | 北京市昌平區 | xxxxxxxx |
趙四 | 北京市朝陽區 | xxxxxxxx |
每一列都代表一個具體的屬性,我們在設計表的時候,可以適當的將資料進行分解,正確的分解資料極其重要。比如在上面的例子中,如果地址是按照 XX市XX區這樣的內容儲存的,那麼如果有需求找出所有北京市內昌平區的人,那麼就會變得很困難。如果我們將資料分解為下面的格式,實現該需求將會變得容易很多。
姓名 | 所在省(市) | 所在區(縣) | 電話 |
---|---|---|---|
張三 | 北京市 | 昌平區 | xxxxxxxx |
趙四 | 北京市 | 朝陽區 | xxxxxxxx |
所以我們需要根據實際需求靈活設計表格以提高實現需求的效率,降低實現難度。
3.主鍵
某一列,它的值能夠唯一區分表中的每一行,這樣的列稱為主鍵
滿足成為主鍵的列必須滿足以下條件:
1.任意兩行都不具有相同的主鍵值;
2.每個行都必須具有一個主鍵值(不為NULL)
簡單的說就是:每一行中,存在一列具有非空且任意兩行都具有不同的值。這樣的列可以成為主鍵。
設定主鍵的目的是為了通過確保唯一性來標識某一行,如果不能通過標識標識特定的行,那麼後續對錶進行更新等操作將會變得非常困難。
主鍵可以是一列擁有非空的惟一值的列,也可以是多列組合下非空且惟一值的列。只要滿足上述條件即可。
- 在規定主鍵時,我們應當堅持一下幾個習慣
1.不更新主鍵列的值 (主鍵列值改變可能會影響到查詢等操作的準確性和穩定性)
2.不重用主鍵列的值
3.不在主鍵列中使用可能會修改的值。
記:
瞭解上述概念後,可以對資料庫的概念有粗略的理解。將資料庫層層拆解,每一個資料庫通過唯一的編號確定,而每一個資料庫內都有著一定數量的表,這些表也都具有唯一性,他們的唯一性通過命名來確定。每一個表由行和列組成,每一個列都標識了資料的屬性,其中能夠通過一個唯一值確定某一行的列這樣的列就是主鍵,搜尋主鍵對應的值我們就能確定某一行的資料,對資料進行增刪查改。
相關文章
- MySQL基礎概念MySql
- 圖論(一)--基礎概念圖論
- Nestjs入門教程【一】基礎概念JS
- NestJS 基礎概念JS
- Vue 基礎概念Vue
- HTTP基礎概念HTTP
- JVM 基礎概念JVM
- Vue基礎概念Vue
- python基礎概念Python
- Elaticsearch基礎概念
- Oracle RAC Cache Fusion 系列一:基礎概念Oracle
- Rxjava2(一)、基礎概念及使用RxJava
- 併發程式設計——基礎概念(一)程式設計
- ZooKeeper 概念與基礎
- Spring 5 基礎概念Spring
- 1章 基礎概念
- Elastic Stack基礎概念AST
- JavaScript WebGL 基礎概念JavaScriptWeb
- java 基礎概念 (1)Java
- 4、kubernetes基礎概念
- golang的基礎概念Golang
- CSS核心概念一把梭-基礎部分CSS
- MySQL基礎知識分享(一)MySql
- RocketMQ基礎概念之BrokerMQ
- 音視訊基礎概念
- Java基礎概念知識Java
- python爬蟲基礎概念Python爬蟲
- 分包基礎概念+使用分包
- 聊一聊 AOP :表現形式與基礎概念
- Java 多執行緒基礎(一)基本概念Java執行緒
- MySQL基礎MySql
- MySQL基礎知識小結(一)MySql
- 重新整理 mysql 基礎篇————— 介紹mysql[一]MySql
- ARCore學習之旅:基礎概念
- Node.js 系列 - 基礎概念Node.js
- Dubbo入門(1) - 基礎概念
- IO基礎知識與概念
- ElasticSearch - 基礎概念和對映Elasticsearch