這個(gè)MySQL基礎(chǔ)教程解釋一些基本的SQL語句。 如果這是您第一次使用關(guān)系數(shù)據(jù)庫管理系統(tǒng),本教程將為您提供使用MySQL數(shù)據(jù)庫服務(wù)器所需的一切內(nèi)容,例如查詢數(shù)據(jù),更新數(shù)據(jù),管理數(shù)據(jù)庫和創(chuàng)建表。
如果您已經(jīng)熟悉其他關(guān)系數(shù)據(jù)庫管理系統(tǒng)(如PostgreSQL,Oracle或Microsoft SQL Server等),則可以使用本教程來刷新您的知識(shí),并了解MySQL的SQL方言與其他數(shù)據(jù)庫系統(tǒng)的不同之處。
第1節(jié). MySQL入門
本節(jié)將開始介紹和學(xué)習(xí)使用MySQL。我們將開始安裝MySQL,下載示例數(shù)據(jù)庫并將數(shù)據(jù)導(dǎo)入到MySQL服務(wù)器以進(jìn)行練習(xí)。
安裝MySQL數(shù)據(jù)庫服務(wù)器 - 演示如何在計(jì)算機(jī)上安裝MySQL數(shù)據(jù)庫服務(wù)器。
下載MySQL示例數(shù)據(jù)庫 - 介紹一個(gè)名稱為
yiibaidb的MySQL示例數(shù)據(jù)庫,提供下載示例數(shù)據(jù)庫及ER圖。將示例數(shù)據(jù)庫導(dǎo)入到MySQL數(shù)據(jù)庫服務(wù)器中 - 演示如何將示例數(shù)據(jù)庫(
yiibaidb)導(dǎo)入到MySQL數(shù)據(jù)庫服務(wù)器中進(jìn)行練習(xí)。
第2節(jié). 查詢數(shù)據(jù)
本節(jié)將幫助您了解如何從MySQL數(shù)據(jù)庫服務(wù)器查詢數(shù)據(jù)。 我們將從一個(gè)簡單的SELECT語句開始,從單個(gè)表查詢數(shù)據(jù)。
- SELECT語句 - 顯示如何使用簡單的SELECT語句來查詢單個(gè)表中的數(shù)據(jù)。
-
SELECT DISTINCT語句 - 了解如何在
SELECT語句中使用DISTINCT運(yùn)算符來消除結(jié)果集中的重復(fù)行。
第3節(jié). 過濾數(shù)據(jù)
-
WHERE - 學(xué)習(xí)如何使用
WHERE子句根據(jù)指定的條件過濾行記錄。 -
AND運(yùn)算符 - 介紹如何使用
AND運(yùn)算符以組合布爾表達(dá)式以形成用于過濾數(shù)據(jù)的復(fù)雜條件。 -
OR運(yùn)算符 - 介紹
OR運(yùn)算符,并展示如何將OR運(yùn)算符與AND運(yùn)算符組合以過濾數(shù)據(jù)。 -
IN運(yùn)算符 - 學(xué)習(xí)如何在
WHERE子句中使用IN運(yùn)算符來確定值是否匹配列表或子查詢中的指定值。 -
BETWEEN運(yùn)算符 - 顯示如何使用
BETWEEN運(yùn)算符來根據(jù)指定范圍查詢數(shù)據(jù)。 - LIKE - 提供基于特定模式匹配查詢數(shù)據(jù)的技術(shù)示例,以執(zhí)行一些模糊查詢。
-
LIMIT子句 - 使用
LIMIT來限制SELECT語句返回的行數(shù) -
IS NULL - 使用
IS NULL運(yùn)算符測試值是否為NULL。
第4節(jié). 排序數(shù)據(jù)
-
ORDER BY - 顯示如何使用
ORDER BY子句排序結(jié)果集。還將介紹使用FIELD函數(shù)的自定義排序順序。 -
使用ORDER BY子句進(jìn)行自然排序 - 通過使用
ORDER BY子句,演示MySQL中的各種自然排序技術(shù)。
第5節(jié). 連接表
- MySQL別名 - 引入別名,包括表別名和列別名,以提高復(fù)雜查詢的可讀性,并避免在查詢具有相同列名稱的多個(gè)表中的數(shù)據(jù)時(shí)發(fā)生歧義錯(cuò)誤。
- INNER JOIN - 應(yīng)用內(nèi)部聯(lián)接技術(shù)來查詢來自多個(gè)相關(guān)表的數(shù)據(jù)。
-
LEFT JOIN - 學(xué)習(xí)如何使用左連接來生成包含來自連接左側(cè)表中的行的結(jié)果集,并使用
NULL值來補(bǔ)充不匹配行。 - CROSS JOIN - 學(xué)習(xí)如何使來自多個(gè)表的行的笛卡爾乘積。
-
自連接 – 使用表別名將表連接到自身,并使用其他類型的連接(如
INNER JOIN或LEFT JOIN)連接同一表中的行記錄。
第6節(jié). 分組數(shù)據(jù)
- GROUP BY子句 - 學(xué)習(xí)如何根據(jù)列或表達(dá)式將行記錄分組到子組。
- HAVING子句 - 按特定條件過濾組。
第7節(jié). MySQL子查詢,派生表和通用表達(dá)式
- MySQL子查詢 - 學(xué)習(xí)如何在另一個(gè)查詢(外部查詢)中嵌套另一個(gè)查詢語句(內(nèi)部查詢),并使用內(nèi)部查詢的結(jié)果值作為外部查詢條件。
- MySQL派生表 - 介紹派生表概念,并演示如何使用它來簡化復(fù)雜查詢。
- MySQL通用表表達(dá)式 - 解釋通用表表達(dá)式概念,并向您展示如何使用CTE查詢表中的數(shù)據(jù)。
- 遞歸CTE - 演示如何使用遞歸通用表表達(dá)式(CTE)遍歷分層數(shù)據(jù)。
第8節(jié). 使用SET操作符
-
UNION和UNION ALL - 使用
UNION和UNION ALL操作符將兩個(gè)或多個(gè)多個(gè)SELECT語句的結(jié)果集合合并到一個(gè)結(jié)果集中。 -
INTERSECT模擬 - 顯示了幾種模擬MySQL中
INTERSECT運(yùn)算符的方法。
第9節(jié). 修改MySQL中的數(shù)據(jù)
在本節(jié)中,將學(xué)習(xí)如何使用各種MySQL語句來在表上執(zhí)行插入,更新和刪除數(shù)據(jù)操作。
-
INSERT語句 - 學(xué)習(xí)如何使用各種形式的
INSERT語句將數(shù)據(jù)插入到數(shù)據(jù)庫表中。 -
INSERT IGNORE - 解釋將數(shù)據(jù)行插入到表中并忽略導(dǎo)致錯(cuò)誤或異常的行的
INSERT IGNORE語句。 -
UPDATE語句 - 了解如何使用
UPDATE語句及其選項(xiàng)來更新數(shù)據(jù)庫表中的數(shù)據(jù)。 -
UPDATE JOIN語句 - 顯示如何使用帶有
INNER JOIN和LEFT JOIN的UPDATE JOIN語句執(zhí)行交叉表更新。 -
DELETE - 學(xué)習(xí)如何使用
DELETE語句從一個(gè)或多個(gè)表中刪除數(shù)據(jù)。 -
ON DELETE CASCADE - 學(xué)習(xí)如何從父表中刪除數(shù)據(jù)時(shí),使用外部鍵從
DELETE CASCADE引用動(dòng)作刪除子表中的數(shù)據(jù)。 - DELETE JOIN - 學(xué)習(xí)如何從多個(gè)表中刪除數(shù)據(jù)。
- REPLACE語句 - 學(xué)習(xí)如何插入或更新數(shù)據(jù),這取決于數(shù)據(jù)是否存在于表中。
- PREPARE語句 - 顯示如何使用PREPARE語句執(zhí)行查詢。
第10節(jié). MySQL事務(wù)
-
MySQL事務(wù) - 了解MySQL事務(wù),以及如何使用
COMMIT和ROLLBACK來管理MySQL中的事務(wù)。 - MySQL表鎖定 - 了解如何使用MySQL鎖來協(xié)調(diào)會(huì)話之間的表訪問。
第11節(jié). 管理MySQL數(shù)據(jù)庫和表
本節(jié)介紹如何管理MySQL中最重要的數(shù)據(jù)庫對(duì)象,包括數(shù)據(jù)庫和表。
- MySQL數(shù)據(jù)庫管理 - 學(xué)習(xí)各種語句來管理MySQL數(shù)據(jù)庫,包括創(chuàng)建新數(shù)據(jù)庫,刪除現(xiàn)有數(shù)據(jù)庫,選擇數(shù)據(jù)庫以及列出所有數(shù)據(jù)庫。
- MySQL表類型 - 了解每個(gè)表類型的功能至關(guān)重要,以便您可以有效地使用它們來最大限度地提高數(shù)據(jù)庫的性能。
-
CREATE TABLE - 學(xué)習(xí)如何使用
CREATE TABLE語句在數(shù)據(jù)庫中創(chuàng)建新表。 - MySQL序列 - 學(xué)習(xí)如何使用序列為表的主鍵列自動(dòng)生成唯一的數(shù)字。
-
ALTER TABLE - 學(xué)習(xí)如何使用
ALTER TABLE語句來更改現(xiàn)有表的結(jié)構(gòu)。 -
重命名表 - 演示如何使用
RENAME TABLE語句重命名表。 -
從表中刪除列 - 學(xué)習(xí)如何使用
ALTER TABLE DROP COLUMN語句從表中刪除一個(gè)或多個(gè)列。 -
向表中添加新列 - 學(xué)習(xí)如何使用
ALTER TABLE ADD COLUMN語句向現(xiàn)有表添加一個(gè)或多個(gè)列。 -
刪除表 - 學(xué)習(xí)如何使用
DROP TABLE語句刪除現(xiàn)有表。 - MySQL臨時(shí)表 - 討論MySQL臨時(shí)表,并學(xué)習(xí)如何管理臨時(shí)表。
-
TRUNCATE TABLE - 學(xué)習(xí)如何使用
TRUNCATE TABLE語句刪除表中的所有數(shù)據(jù)。
第12節(jié). MySQL索引
- 管理MySQL數(shù)據(jù)庫索引 - 學(xué)習(xí)如何使用MySQL索引,以及如何利用索引來加快數(shù)據(jù)檢索。
-
MySQL UNIQUE索引 - 顯示如何使用
UNIQUE索引來強(qiáng)制一個(gè)或多個(gè)列的值的唯一性。
第13節(jié). MySQL數(shù)據(jù)類型
- MySQL數(shù)據(jù)類型 - 學(xué)習(xí)MySQL中的各種數(shù)據(jù)類型,以便您可以在設(shè)計(jì)數(shù)據(jù)庫表時(shí)有效應(yīng)用它們。
-
INT - 學(xué)習(xí)如何使用整數(shù)數(shù)據(jù)類型。并演示如何使用
ZEROFILL和整數(shù)列的寬度屬性。 -
DECIMAL - 學(xué)習(xí)如何使用
DECIMAL數(shù)據(jù)類型存儲(chǔ)十進(jìn)制格式的精確值。 -
BIT - 介紹
BIT數(shù)據(jù)類型以及如何在MySQL中存儲(chǔ)位值。 -
BOOLEAN - 學(xué)習(xí)MySQL如何通過內(nèi)部使用
TINYINT(1)來處理布爾值。 -
CHAR - 學(xué)習(xí)如何使用存儲(chǔ)固定長度字符串的
CHAR數(shù)據(jù)類型。 -
VARCHAR - 提供
VARCHAR數(shù)據(jù)類型的基本指南。 -
TEXT - 演示如何使用
TEXT數(shù)據(jù)類型存儲(chǔ)文本數(shù)據(jù)。 - DATE - 介紹DATE數(shù)據(jù)類型,并顯示一些日期功能來有效處理日期數(shù)據(jù)。
-
TIME - 學(xué)習(xí)
TIME數(shù)據(jù)類型的功能,并向您演示如何使用一些有用的時(shí)間功能來處理時(shí)間數(shù)據(jù)。 -
DATETIME - 介紹
DATETIME數(shù)據(jù)類型和一些有用的函數(shù)來操作日期時(shí)間值。 -
TIMESTAMP - 介紹
TIMESTAMP類型及其功能,調(diào)用自動(dòng)初始化和自動(dòng)更新,允許您為表定義自動(dòng)初始化和自動(dòng)更新的列。 - JSON格式類型 - 顯示如何使用JSON數(shù)據(jù)類型來存儲(chǔ)JSON文檔。
-
ENUM - 了解如何正確使用
ENUM數(shù)據(jù)類型來存儲(chǔ)枚舉值。
第14節(jié). MySQL約束
-
NOT NULL約束 - 引入
NOT NULL約束,并顯示如何為列定義NOT NULL約束或?qū)?code>NOT NULL約束添加到現(xiàn)有列。 - 主鍵約束 - 指導(dǎo)如何使用主鍵約束來創(chuàng)建表的主鍵。
- 外鍵約束 - 學(xué)習(xí)外鍵概念,并逐步顯示如何創(chuàng)建和刪除外鍵。
-
UNIQUE約束 - 顯示如何使用
UNIQUE約束來強(qiáng)制表中列或一組列的值的唯一性。 -
CHECK約束 - 通過各種方式來模擬MySQL中的
CHECK約束。
第15節(jié). MySQL全球化
- MySQL字符集 - 本教程討論MySQL字符集,并演示如何對(duì)字符集執(zhí)行各種操作。
- MySQL排序規(guī)則 - 本教程討論了MySQL排序規(guī)則,并向您展示了如何為MySQL服務(wù)器,數(shù)據(jù)庫,表和列設(shè)置字符集和排序規(guī)則。
第16節(jié). MySQL導(dǎo)入和導(dǎo)出
-
將CSV文件導(dǎo)入MySQL表 - 演示如何使用
LOAD DATA INFILE語句將CSV文件導(dǎo)入MySQL表。 - MySQL導(dǎo)出表到CSV - 學(xué)習(xí)如何將MySQL表導(dǎo)出為CSV文件格式的各種技術(shù)。