介紹
- 我不在乎。
- MySQL 是一個關聯式資料庫管理系統(RDBMS)。它是一個開源、多用戶、多線程資料庫系統,允許在表中儲存和管理結構化資料。它使用結構化查詢語言(SQL)來管理和操作資料。
MySQL 的主要特色:
- 開源
- 跨平台
-
關聯式資料庫:MySQL 基於關聯式資料庫模型,它將資料儲存在表格(也稱為關聯)中。
-
高效能:針對速度進行了最佳化,可以高效處理大量資料。
-
ACID Compliant:MySQL 支援 ACID(原子性、一致性、隔離性、持久性)屬性,確保資料庫事務可靠地處理。
- 原子性確保事務被視為單一不可分割的單元。事務中的所有操作要么成功完成,要么不應用任何操作。換句話說,交易是原子性的:它是「全有或全無」。
- 一致性確保交易將資料庫從一種有效狀態轉變為另一種有效狀態。事務完成後,所有資料必須處於一致狀態,遵守所有定義的規則、約束和關係。
- 隔離性確保事務彼此隔離地執行,即使它們同時發生。每筆交易都應該像唯一正在處理的交易一樣執行,防止其他交易的干擾。
- 持久性確保事務一旦提交,它就是永久性的,即使在出現斷電或崩潰等系統故障的情況下也是如此。事務所所做的變更將儲存到磁碟,並且不會出現任何後續故障。
-
多用戶存取:MySQL允許多個使用者同時存取資料庫,而不影響效能。
SQL關鍵字
創造
-
建立資料庫
- CREATE DATABASE 指令用於建立新資料庫。在 Mongoose 中,您不需要明確建立資料庫;當您連接到資料庫時它會自動建立。
-
使用資料庫
- USE DB_NAME 用來選擇要使用的資料庫。在 Mongoose 中,這是由連接字串處理的。
-
建立表格
- CREATE TABLE 指令用於在資料庫中建立新表。在 Mongoose 中,這類似於建立新集合。
-
建立索引
- CREATE INDEX 指令用於在表上建立索引以提高查詢效能。在 MongoDB 中,也是一樣的。
描述
- 在 SQL 中用於查看表的結構(其列、資料類型、約束等)。 Mongoose 範例:在 MongoDB 中,沒有與 DESCRIBE 直接等效的東西。但是,您可以透過程式檢查架構。
插入
- INSERT INTO 指令用於在表中插入新行。在貓鼬中,您可以將新文件插入集合/(模型)中。
選擇
- SQL 中的 SELECT 語句用於從資料庫中擷取資料。在 Mongoose 中,這相當於使用 .find() 方法來查詢集合。
更新
- UPDATE語句用來修改表格中現有的記錄。在 mongoose 中,您使用 find 和 update 或 .update()
刪除
- DELETE 語句用於刪除表中現有的記錄。在 mongoose 中,我們會使用deleteOne、deleteMany 或尋找並刪除。
改變
- SQL中的ALTER TABLE語句用來修改現有資料表的結構(新增欄位、刪除欄位和修改欄位)。
在 Mongoose 中,等效操作是修改架構以包含新字段,然後在必要時處理現有文件的更新。
加入
- JOIN 子句用於根據兩個或多個資料表之間的相關欄位組合來自兩個或多個資料表的行。在 MongoDB 中,連線 不像關聯式資料庫那樣原生支援。相反,您通常使用聚合管道(如$lookup)來實現類似的功能。
內連接
- INNER JOIN 關鍵字選擇在兩個表中具有匹配值的記錄。
左連接
- LEFT JOIN 關鍵字傳回左表(table1)中的所有記錄,以及右表(table2)中的符合記錄(如果有)。
右邊連接
- RIGHT JOIN 關鍵字會傳回右表 (table2) 中的所有記錄,以及左表 (table1) 中的符合記錄(如果有)。
交叉連接
- CROSS JOIN 關鍵字傳回兩個資料表(table1 和 table2)中的所有記錄。
資料類型
MySQL 中有三種主要資料類型:字串、數字、日期和時間。但在MongoDB中,有多種資料類型,但它們與MySQL中的不同。 MongoDB使用BSON(Binary JSON)來儲存數據,它支援豐富的資料類型。以下是 MySQL 和 MongoDB 中常見資料類型的比較:
字串資料類型
MySQL |
MongoDB (BSON) |
Notes |
CHAR, VARCHAR
|
String |
Both store textual data. MongoDB's String is analogous to VARCHAR. |
TEXT, TINYTEXT, etc. |
String |
No separate TEXT type in MongoDB; all textual data is stored as String. |
數字資料型
MySQL |
MongoDB (BSON) |
Notes |
INT, SMALLINT, etc. |
NumberInt |
Represents 32-bit integers. |
BIGINT |
NumberLong |
Represents 64-bit integers. |
FLOAT, DOUBLE
|
NumberDouble |
Represents floating-point numbers. |
DECIMAL, NUMERIC
|
String or custom |
MongoDB doesn't have an exact equivalent; use String for precision. |
日期和時間資料類型
MySQL |
MongoDB (BSON) |
Notes |
DATE |
Date |
Both store date-only values. |
DATETIME, TIMESTAMP
|
Date |
MongoDB stores both date and time as a Date object. |
TIME |
String or custom |
MongoDB does not have a direct TIME type; store as String if needed. |
YEAR |
String or Int
|
Represented using String or NumberInt. |
布林資料類型
MySQL |
MongoDB (BSON) |
Notes |
BOOLEAN, TINYINT(1)
|
Boolean |
Both store true/false values. |
二進位資料類型
MySQL |
MongoDB (BSON) |
Notes |
BLOB, TINYBLOB, etc. |
BinData |
MongoDB's BinData is used for storing binary data like files. |
JSON/數組資料類型
MySQL |
MongoDB (BSON) |
Notes |
JSON |
Object |
MongoDB natively stores JSON-like documents as Object. |
N/A |
Array |
MongoDB has a native Array type for storing lists of values. |
其他資料類型
MySQL |
MongoDB (BSON) |
Notes |
ENUM |
String or custom |
Use a String field with validation for enumerated values. |
SET |
Array |
Use an Array to represent sets of values. |
N/A |
ObjectId |
Unique identifier type in MongoDB, typically used as a primary key. |
N/A |
Decimal128 |
Used for high-precision decimal numbers in MongoDB. |
主鍵
外鍵
資料完整性和約束
-
非空:
確保列不能有 NULL 值。
-
獨特:
確保列中的所有值都是唯一的。
-
預設:
如果未提供值,則為列指派預設值。
-
檢查(MySQL 8.0):
確保列中的值滿足給定條件。
-
自動增量:
自動為列產生唯一值,通常用作主鍵。
僅此而已。一切順利,請隨時留下您的回饋,您可以在這裡與我聯繫:thekbbohara
哦,順便問一下我們如何設定Mysql。
我推薦使用 docker:
以上是供 Mongoose 開發人員使用的 Mysql。的詳細內容。更多資訊請關注PHP中文網其他相關文章!