儘管近年來出現了 MongoDB、Firebase 和 Redis 等現代 NoSQL 資料庫,但 SQL 資料庫在開發人員中仍然非常受歡迎。
SQL(結構化查詢語言)是一種用於與各種資料庫中的資料互動的語言,包括 MySQL、PostgreSQL、Oracle 和 MS SQL Server 等流行資料庫。
在本文中,您將了解開始使用 MySQL 所需的一切知識,MySQL 是一個開源資料庫,為 WordPress 等內容管理系統、Shopify 等電子商務平台以及 Twitter 等社交媒體平台提供支援。
您將了解MySQL 的工作原理、關聯式資料庫及其一些關鍵概念、如何使用命令列安裝MySQL 資料庫並與之交互,以及用於建立、讀取、更新和刪除資料的現代SQL 語法在MySQL 中。
大多數使用關聯式資料庫的開發人員實際上並沒有編寫原始 SQL。更常見的是,他們使用執行物件關係映射或 ORM 的庫。
這些程式庫基本上使您的資料庫表看起來像是網站伺服器端的對象,因此您可以使用您選擇的任何物件導向的程式語言來輕鬆操作資料。
ORM 的範例包括 Sequelize (JavaScript)、Eloquent (Laravel)、SQLAlchemy (Python) 和 Active Record (Ruby on Rails)。
ORM 無需編寫原始 SQL 程式碼。相反,您可以利用物件導向程式設計的知識來建立、讀取、更新和刪除 SQL 資料庫上的資料。 ORM 讓關聯式資料庫的使用更加簡單、直覺。
本質上,關聯式資料庫管理系統由兩個主要元件組成:資料庫和查詢語言。
資料庫本身只是表的集合。在每個表中,您的實際資料都按列和行組織,與電子表格相同。關係資料庫中的表可以根據每個表通用的資料進行連結或關聯。
查詢語言用於操作和讀取資料庫中的資料。對於大多數關係型資料庫,用於操作資料的查詢語言是 SQL 的變體。
如果你想學習如何使用MySQL,我們必須先了解一些基本概念,以便以視覺化的方式解釋以下SQL資料庫概念,我將使用一個名為的資料庫視覺化工具DrawSQL。首先,我們將了解架構和資料類型。
您可以將架構視為定義表的整體結構及其與其他表的關係的藍圖。
例如,考慮以下使用者表的架構:
在上面的表格圖中,您會注意到每一行都是一個字典,其中鍵代表資料庫中的列,值代表可以儲存在其中的資料類型。
MySQL中有多種資料類型,不同的SQL資料庫資料類型也不同。
您也會注意到接受整數值的 id
鍵前面也有一個鍵。這表示 id
是使用主鍵約束定義的。
因此每一列的id
的值不能為空,且必須唯一。因此,兩個或多個使用者永遠不能共享相同的主鍵,並且每一行都可以透過其主鍵來識別。
這些規則共同構成了users 表的架構。
讓我們更深入了解 MySQL 資料庫中的限制。
我們之前看到了主鍵約束,它確保指定鍵的值對於表中的每一列都是唯一的。
在 MySQL 中,約束是允許或限製表中儲存哪些值的規則。它們有助於限制將插入表中的資料類型,確保表內資料的準確性和完整性。
MySQL 中常用下列約束:
NOT NULL
:確保列不能有 NULL 值UNIQUE
:確保列中的所有值都彼此不同主鍵
:NOT NULL 與UNIQUE 的組合-唯一標識表中的每一行外鍵
:用於將兩個表連結在一起CREATE INDEX
:用於快速建立資料庫並從資料庫檢索資料CHECK
:確保列中的值符合指定條件DEFAULT
:如果未指定值,則為列設定預設值為了添加更多上下文,我們假設用戶表格用於儲存線上購物網站中的註冊用戶。
通常,線上購物網站的資料庫中必須有一個產品表格和一個購物車表。 產品將包含用戶可用的所有產品,購物車將包含特定用戶打算購買的特定商品以及每件商品的數量。 p>
到目前為止所建立的所有表格如下:
#所有這些表都是唯一的實體。例如,這表示 carts 表不需要儲存任何有關使用者的資訊。
從技術上講,沒有什麼可以阻止我們將購物車資料合併到用戶表中。畢竟,兩組資訊都是相互關聯的(用戶擁有購物車)。然而,這種方法最終會導致表擁擠,從而非常難以管理。
相反,我們採取了更永續的方法,創建一個單獨的購物車表來儲存所有與購物車相關的資料。然後,我們透過將外鍵 user_id
和 product_id
放置在 carts 表中來建立對其他表的參考。
這樣,購物車就可以訪問有關擁有購物車的用戶以及購物車中存在的產品的任何信息,儘管其中沒有實際存儲任何此類信息。
現在我們已經對 MySQL 和 MySQL 伺服器有了更高層次的了解,讓我們透過在我們的系統上安裝 MySQL 來實作。
要在系統上安裝 MySQL,請前往 MySQL 社群下載頁面並下載 MySQL 安裝程式。
下載完成後,執行安裝程式並完成安裝精靈以安裝 MySQL。
選擇安裝類型時,請確保包含 MySQL 伺服器產品。我建議使用開發人員預設選項。
成功安裝後,您應該可以從命令列存取 MySQL 伺服器命令。
但是,要從命令列使用 MySQL,您首先需要驗證自己的身分。執行以下命令,並在佔位符中填寫您的使用者名稱:
mysql -u <your username> -p
系統將提示您輸入管理員密碼,如果這兩個詳細資訊都正確,您將被授予從命令列存取 MySQL 的權限。
請記住,MySQL 的預設使用者名稱是root,預設密碼為空。
要在 MySQL 中建立資料庫,我們使用 CREATE DATABASE
語句,後面跟著資料庫名稱:
CREATE DATABASE shopping_site;
語句是告訴系統做某事的程式碼。 SQL 語句總是以分號結尾。大寫的單字是保留的 SQL 關鍵字,SQL 將解釋它們來執行某些操作。
執行上述指令將在 MySQL 中建立一個名為 shopping_site 的空資料庫。
要查看 MySQL 實例中存在的所有資料庫,請執行 SHOW DATABASE
。
要在新資料庫中建立表,請使用 CREATE TABLE
語句,後面跟著表名稱和包含我們要在此表中包含的列列表的括號:
CREATE TABLE users( id INT PRIMARY KEY AUTO_INCREMENT, first_name VARCHAR(255), last_name VARCHAR(255), email VARCHAR(255) UNIQUE NOT NULL, password VARCHAR(255), created_at TIMESTAMP, updated_at TIMESTAMP );
對於使用者中的每一列,我們指定了該列的資料類型。我們也為 id 和 email 欄位新增了一系列約束。
運行該命令將在資料庫中建立一個名為users的空但結構化的表。
要在表格中建立新記錄,請使用 INSERT INTO
語句,後面跟著要插入值的表:
INSERT INTO users(first_name, last_name, email, password) VALUES( 'Kingsley', 'Ubah', 'ubahthebuilder@gmail.com', '12345678' );
在第一個括號中,我們指定了要插入值的欄位。然後,在第二個括號中,我們按照正確的順序指定要插入的值。
執行該指令會將這些值插入users表中的指定列。
要从数据库查询数据,请使用 SELECT
语句。
例如,如果我们想从 users 表中选择所有内容,我们可以使用以下语句:
SELECT * FROM users;
星号 (*
) 代表我们数据库中的所有内容。该语句将返回整个表以及每一列。
如果我们只需要列的子集,例如 id 和 email,我们可以指定列来代替星号:
SELECT id, email FROM users;
在选择数据方面,我们的能力是无限的。
要从 MySQL 中完全删除表,请使用 DROP
语句,后跟表名称:
DROP TABLE users;
现在,使用此命令时需要小心!它将永久删除users表中的所有数据。另外,不要将其与 DROP DATABASE
语句混淆,该语句会删除整个数据库。
MySQL 是一个开源关系数据库管理系统,即使在今天,它仍然为网络的重要部分提供支持。结构化查询语言或 SQL 用于在 MySQL 数据库中操作和存储数据。
在这篇文章中,我们回顾了 SQL 的一些关键概念,包括 ORM、模式、约束和数据库规范化。我们还回顾了 MySQL 的安装和设置过程。
最后,我们介绍了一些负责在 MySQL 中操作数据的 SQL 语句。
以上是踏上您的 MySQL 之旅的詳細內容。更多資訊請關注PHP中文網其他相關文章!