目錄
1. 簡介和基礎概念
- 1.1.MySQL 是什麼?
- 1.2.資料庫管理系統(DBMS)的基本概念
- 1.3.SQL(Structured Query Language)的作用和重要性
2. 安裝和配置 MySQL
- 2.1.在Linux下使用Docker進行MySQL的安裝和配置
- 2.2.Windows、MacOS 下的安裝步驟(待補充)
3. SQL 基礎
- 3.1.SQL 的基本語法和結構
- 3.2.資料庫、表的建立和刪除
- 3.3.資料型別、約束和索引的介紹
4. 資料操作基礎
- 4.1.資料的增、刪、改、查(CRUD)
- 4.2.使用 SELECT 查詢資料
- 4.3.WHERE 子句和運算子
- 4.4.ORDER BY 和 LIMIT 語句的使用
1. 簡介和基礎概念
1.1.MySQL 是什麼?
MySQL 是一個開源的關係型資料庫管理系統(RDBMS),由瑞典的 MySQL AB 公司開發,現在由 Oracle 公司持有和維護,同時也有大量的開源社群貢獻者參與到 MySQL 的開發和改進中。MySQL 是最流行的關係型資料庫管理系統之一,被廣泛應用於各種規模的應用程式和網站開發中。
MySQL 的特點:
- 開源性質:MySQL 是開源軟體,可以免費使用,並且有大量的社群支援和貢獻。
- 跨平臺性:MySQL 可以在各種作業系統上執行,包括 Windows、Linux、macOS 等。
- 高效能:MySQL 是一個高效能的資料庫系統,能夠處理大量的資料和請求。
- 穩定可靠:MySQL 已經經過了長時間的發展和測試,具有很高的穩定性和可靠性。
- 易用性:MySQL 的安裝和配置相對簡單,學習曲線較低,適合初學者和中小型專案使用。
MySQL 在各種應用場景中都有廣泛的應用:
- Web 開發:MySQL 是很多網站和應用程式的首選資料庫,用於儲存使用者資料、文章內容、日誌記錄等。
- 企業應用:MySQL 在企業內部的資訊管理、客戶關係管理(CRM)、人力資源管理(HRM)等方面都有應用。
- 資料分析:MySQL 可以作為資料倉儲,用於儲存和分析大量的資料,支援資料探勘和商業智慧應用。
- 嵌入式系統:MySQL 可以整合到各種嵌入式系統中,如路由器、智慧家居裝置等,用於儲存配置資訊和日誌資料。
1.2.資料庫管理系統(DBMS)的基本概念
資料庫管理系統(DBMS)是一種軟體,用於管理和組織資料的集合,以及提供資料的儲存、檢索、更新和管理功能。DBMS 是現代資訊系統的核心組成部分,它能夠有效地管理大量資料,並提供使用者友好的介面進行資料操作。
資料庫的定義:
資料庫是一個組織資料的集合,它以某種結構儲存在計算機系統中,並可被多個使用者共享和訪問。資料庫中的資料按照一定的模型組織和管理,以滿足使用者的需求。
資料庫管理系統的功能:
-
資料定義功能(DDL):用於定義資料庫的結構,包括建立、修改和刪除資料庫、表、索引等物件的操作。
-
資料操縱功能(DML):用於對資料庫中的資料進行增加、刪除、修改和查詢的操作,通常透過 SQL 語言實現。
-
資料控制功能(DCL):用於控制資料庫訪問的許可權和安全性,包括使用者管理、許可權分配等操作。
-
資料完整性功能:確保資料庫中的資料滿足一定的約束和規則,防止資料的損壞和不一致性。
-
資料恢復與備份功能:提供資料備份和恢復機制,保障資料的安全性和可靠性。
資料庫管理系統的分類:
-
關係型資料庫管理系統(RDBMS):採用關係模型來組織和管理資料的系統,如 MySQL、Oracle、SQL Server 等。
-
非關係型資料庫管理系統(NoSQL DBMS):不使用傳統的關係模型,而是採用其他資料模型來組織和管理資料的系統,如 MongoDB、Redis、Cassandra 等。
資料庫管理系統(DBMS)是一種用於管理和組織資料的軟體系統,它扮演著重要的角色,為使用者提供了資料管理、儲存、檢索和操作的功能。掌握資料庫管理系統的基本概念和功能,有助於使用者更好地理解和應用資料庫技術,提高工作效率和資料處理能力。
1.3.SQL(Structured Query Language)的作用和重要性
SQL 的定義
SQL(Structured Query Language)是一種用於管理和操作關係型資料庫的標準化查詢語言。它是一種特定目的的程式語言,用於執行對資料庫中的資料進行查詢、更新、刪除和新增等操作。
SQL 的作用
-
資料查詢(Query):SQL 語言最基本的功能之一是查詢資料庫中的資料。使用者可以使用 SQL 編寫各種型別的查詢語句,從資料庫中檢索所需的資料。
-
資料操作(CRUD):SQL 支援對資料庫中的資料進行增加(Create)、讀取(Read)、更新(Update)、刪除(Delete)等操作,通常稱為 CRUD 操作。
-
資料定義(DDL):SQL 可以用於定義資料庫中的結構,包括建立資料庫、表、索引等物件。
-
資料控制(DCL):SQL 也可以用於管理資料庫的訪問許可權和安全性,包括使用者管理、許可權分配等操作。
-
資料完整性和約束(Constraints):SQL 支援在資料庫中定義各種約束,如主鍵約束、外來鍵約束、唯一約束等,以確保資料的完整性和一致性。
SQL 的重要性
-
標準化:SQL 是一種標準化的資料庫查詢語言,被廣泛應用於各種關係型資料庫管理系統(RDBMS),如 MySQL、Oracle、SQL Server 等。
-
易學易用:SQL 的語法簡單明瞭,易於學習和理解。即使對於非程式設計背景的使用者,也可以透過簡單的培訓快速掌握基本的 SQL 查詢和操作技能。
-
靈活性:SQL 提供了豐富的查詢語句和操作功能,可以滿足各種複雜的資料處理需求,支援複雜的資料分析和報表生成。
-
高效性:SQL 查詢引擎經過最佳化和調整,可以在大型資料集上快速執行查詢操作,提高資料處理的效率和效能。
-
廣泛應用:SQL 作為標準化的資料庫查詢語言,被廣泛應用於各種行業和領域,如企業管理、金融服務、科學研究等,成為管理和分析資料的重要工具。
SQL(Structured Query Language)是一種標準化的關係型資料庫查詢語言,具有簡單、靈活、高效等特點,被廣泛應用於各種資料庫管理系統中。
2. 安裝和配置 MySQL
2.1.在Linux下使用Docker進行MySQL的安裝和配置
2.1.1. 安裝 Docker 和 Docker Compose
2.1.1.1 安裝 Docker
確保你的Linux系統已經安裝了Docker。你也可以按照官方文件提供的步驟安裝Docker:https://www.docker.com/。
a. 使用官方安裝指令碼
Docker官方提供了一個便捷的安裝指令碼,可以在Linux系統上安裝Docker CE。執行以下命令以下載並執行安裝指令碼:
curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh
b. 啟動Docker服務
安裝完成後,使用以下命令啟動Docker服務:
sudo systemctl start docker
c. 設定Docker開機自啟動
如果需要Docker服務在系統啟動時自動啟動,可以使用以下命令:
sudo systemctl enable docker
d. 驗證安裝
執行以下命令驗證Docker安裝是否成功:
docker --version
如果安裝成功,將顯示Docker的版本資訊。
2.1.1.2 安裝 Docker Compose
如果你計劃使用Docker Compose來管理多個容器,你需要安裝Docker Compose。你也可以在Docker的官方文件中找到安裝說明:https://docs.docker.com/compose/install/
a. 下載Docker Compose
在GitHub的Docker Compose儲存庫中找到最新的穩定版本,複製下載連結。使用curl
命令下載該版本:
sudo curl -L "https://github.com/docker/compose/releases/download/{VERSION}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
確保將{VERSION}
替換為所需的版本號。
b. 授權執行許可權
下載完成後,為docker-compose檔案新增執行許可權:
sudo chmod +x /usr/local/bin/docker-compose
c. 驗證安裝
執行以下命令驗證Docker Compose是否安裝成功:
docker-compose --version
如果安裝成功,將顯示Docker Compose的版本資訊。
2.1.2. 使用 Docker 執行 MySQL 容器
2.1.2.1 下載 MySQL 映象
使用Docker Hub上提供的MySQL官方映象。開啟終端,執行以下命令拉取MySQL映象:
docker pull mysql
2.1.2.2 啟動 MySQL 容器
建立並啟動一個MySQL容器。可以使用Docker Compose編寫一個docker-compose.yml
檔案來管理MySQL容器的配置。
version: '3.1' services: mysql: image: mysql restart: always environment: MYSQL_ROOT_PASSWORD: your_password_here # 設定root使用者的密碼 ports: - "3306:3306" # 對映MySQL的3306埠到宿主機的3306埠 volumes: - ./my.cnf:/etc/mysql/my.cnf # 掛載my.cnf配置檔案 - ./mysql_data:/var/lib/mysql # 掛載MySQL的資料目錄 - ./mysql_logs:/var/log/mysql # 掛載MySQL的日誌目錄 volumes: mysql_data: # 定義MySQL資料的持久化卷 mysql_logs: # 定義MySQL日誌的持久化卷
這個 docker-compose.yml
檔案做了以下幾個工作:
- 指定了MySQL容器的基本配置,包括映象、重啟策略和環境變數。
- 對映了MySQL的3306埠到宿主機的3306埠,以便可以從外部訪問MySQL服務。
- 掛載了
my.cnf
配置檔案到MySQL容器的/etc/mysql/my.cnf
路徑,以覆蓋預設的MySQL配置。 - 掛載了宿主機的
mysql_data
目錄到MySQL容器的/var/lib/mysql
路徑,以持久化儲存MySQL的資料。 - 掛載了宿主機的
mysql_logs
目錄到MySQL容器的/var/log/mysql
路徑,以持久化儲存MySQL的日誌。
在上面的示例中,我們定義了一個名為mysql
的服務,使用MySQL官方映象,指定了root使用者的密碼,並將MySQL的資料目錄掛載到主機上的一個卷中。
my.cnf檔案如下:
# MySQL配置檔案 [mysqld] # 以下是MySQL伺服器的配置選項 # 設定MySQL資料目錄 datadir=/var/lib/mysql # 設定MySQL監聽的IP地址 # 如果只希望本地連線,則設定為127.0.0.1 bind-address = 0.0.0.0 # 設定MySQL伺服器使用的字符集 character-set-server = utf8mb4 # 設定MySQL的埠號 port = 3306 # 設定MySQL的日誌檔案 # 錯誤日誌 log-error=/var/log/mysql/error.log # 設定MySQL允許的最大連線數 max_connections=200 # 設定MySQL的緩衝區大小 key_buffer_size = 64M # 設定MySQL的排序緩衝區大小 sort_buffer_size = 4M # 設定MySQL的臨時表大小 tmp_table_size = 32M # 設定MySQL的最大臨時表大小 max_heap_table_size = 32M # 設定MySQL的最大資料包大小 max_allowed_packet = 16M # 設定MySQL的查詢快取大小 query_cache_size = 16M # 設定MySQL的連線超時時間 connect_timeout = 10 # 設定MySQL的等待超時時間 wait_timeout = 600 # 設定MySQL的互動式超時時間 interactive_timeout = 600 # 設定MySQL是否允許遠端訪問 # 一般建議禁止遠端訪問,除非有必要 # skip-networking # 設定MySQL是否啟用慢查詢日誌 # slow_query_log = 1 # slow_query_log_file = /var/log/mysql/slow.log # long_query_time = 1 # 設定MySQL是否啟用binlog # log-bin = mysql-bin # binlog_format = mixed # expire_logs_days = 10
使用以下命令啟動MySQL容器:
docker-compose up -d
2.1.2.3 連線到 MySQL 容器
一旦MySQL容器啟動成功,你可以使用MySQL的命令列客戶端連線到MySQL伺服器。你可以使用以下命令連線到MySQL伺服器:
docker exec -it <container_id> mysql -uroot -p
在上面的命令中,<container_id>
是你MySQL容器的ID或名稱。然後,你將被要求輸入root使用者的密碼。
2.1.3. 安全設定
2.1.3.1 修改root使用者密碼
首先,應該修改root使用者的初始密碼。連線到MySQL伺服器後,執行以下命令:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
2.1.3.2 移除匿名使用者
移除MySQL資料庫中的匿名使用者。在MySQL命令列介面中執行以下命令:
DROP USER ''@'localhost';
2.1.3.3 移除遠端root訪問許可權
不建議遠端主機可以使用root賬號訪問MySQL資料庫。你可以透過以下命令刪除遠端root訪問許可權:
DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');
2.1.3.4 建立新使用者並授權
建立一個新的MySQL使用者,並授予該使用者適當的許可權。例如:
CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'user_password'; GRANT ALL PRIVILEGES ON *.* TO 'new_user'@'localhost' WITH GRANT OPTION; FLUSH PRIVILEGES;
2.1.3.5 關閉不必要的遠端訪問
如果不需要從遠端主機訪問MySQL資料庫,禁用遠端訪問。在MySQL配置檔案中,一般是/etc/mysql/mysql.conf.d/mysqld.cnf
中新增以下行:
3. SQL 基礎
3.1.SQL 的基本語法和結構
SQL(Structured Query Language)是用於管理關係型資料庫的標準化查詢語言,它提供了豐富的語法和結構來執行對資料庫的操作。在學習 SQL 的基礎部分時,我們需要了解其基本語法和結構。
3.1.1. SQL 查詢語句的基本結構
SQL 查詢語句通常由以下幾個關鍵部分組成:
- SELECT 語句:用於指定要檢索的資料列。
- FROM 子句:用於指定要檢索資料的表或檢視。
- WHERE 子句:可選的,用於指定檢索資料的條件。
- GROUP BY 子句:可選的,用於對檢索到的資料進行分組。
- HAVING 子句:可選的,用於指定對分組資料的條件。
- ORDER BY 子句:可選的,用於指定檢索到的資料的排序方式。
- LIMIT 子句:可選的,用於限制檢索資料的行數。
3.1.2. SQL 查詢語句示例
下面是一個簡單的 SQL 查詢語句示例:
SELECT column1, column2 FROM table_name WHERE condition GROUP BY column1 HAVING condition ORDER BY column1 ASC LIMIT 10;
在這個示例中:
SELECT column1, column2
:指定要檢索的資料列。FROM table_name
:指定要檢索資料的表。WHERE condition
:可選的條件,用於過濾檢索資料。GROUP BY column1
:可選的,按指定列進行分組。HAVING condition
:可選的條件,用於過濾分組資料。ORDER BY column1 ASC
:可選的,指定檢索到的資料按照指定列升序排序。LIMIT 10
:可選的,限制檢索資料的行數為 10 條。
3.1.3. SQL 常用的資料操作語句
除了 SELECT 查詢語句之外,SQL 還包括其他常用的資料操作語句,如:
- INSERT INTO:用於向表中插入新的資料。
- UPDATE:用於更新表中現有的資料。
- DELETE FROM:用於從表中刪除資料。
- CREATE TABLE:用於建立新的表。
- ALTER TABLE:用於修改現有表的結構。
- DROP TABLE:用於刪除現有表。
3.1.4. SQL 註釋
SQL 支援單行註釋和多行註釋,可以使用 --
進行單行註釋,使用 /* */
進行多行註釋。
-- 這是單行註釋 /* 這是 多行註釋 */
3.1.5. SQL 資料型別
SQL 支援多種資料型別,包括但不限於整數、浮點數、字元、日期等。常見的資料型別有 INT、VARCHAR、DATE、DATETIME 等。
3.2.資料庫、表的建立和刪除
在 SQL 中,建立和管理資料庫以及資料庫中的表是非常基礎和重要的操作。
3.2.1. 建立資料庫
要建立資料庫,可以使用 SQL 中的 CREATE DATABASE
語句。
CREATE DATABASE database_name;
其中,database_name
是要建立的資料庫的名稱。
示例:
CREATE DATABASE my_database;
3.2.2. 刪除資料庫
要刪除資料庫,可以使用 SQL 中的 DROP DATABASE
語句。
DROP DATABASE database_name;
其中,database_name
是要刪除的資料庫的名稱。
示例:
DROP DATABASE my_database;
3.2.3. 建立表
要建立表,可以使用 SQL 中的 CREATE TABLE
語句。
CREATE TABLE table_name (
column1 datatype,
column2 datatype,
...
);
其中,table_name
是要建立的表的名稱,column1
、column2
是表的列名,datatype
是列的資料型別。
示例:
CREATE TABLE employees ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50), age INT, department VARCHAR(50) );
在上面的示例中,我們建立了一個名為 employees
的表,包含了 id
、name
、age
和 department
四個列,分別儲存員工的編號、姓名、年齡和部門資訊。
3.2.4. 刪除表
要刪除表,可以使用 SQL 中的 DROP TABLE
語句。
DROP TABLE table_name;
其中,table_name
是要刪除的表的名稱。
示例:
DROP TABLE employees;
上面的示例將刪除名為 employees
的表。
3.2.5. 注意事項
- 在執行
CREATE DATABASE
和DROP DATABASE
語句時,請謹慎操作,確保你有足夠的許可權和備份以防意外情況發生。 - 在執行
CREATE TABLE
語句時,確保你正確指定了列的名稱、資料型別和約束,以保證表的結構正確。 - 在執行
DROP TABLE
語句時,會永久刪除表中的所有資料,請謹慎操作。
3.3.資料型別、約束和索引的介紹
3.3.1. 資料型別
資料型別是什麼?
資料型別定義了資料庫中可以儲存的資料的種類。它們規定了資料的儲存方式、範圍以及可以對資料執行的操作。
常見的 SQL 資料型別:
- 整數型別:INT、TINYINT、SMALLINT、BIGINT等。
- 浮點數型別:FLOAT、DOUBLE、DECIMAL等。
- 字元型別:CHAR、VARCHAR、TEXT等。
- 日期和時間型別:DATE、TIME、DATETIME、TIMESTAMP等。
示例:
CREATE TABLE employees ( id INT, name VARCHAR(50), salary DECIMAL(10, 2), hire_date DATE );
在上述示例中,我們定義了一個名為 employees
的表,其中包含了整數、字元、十進位制和日期型別的列。
3.3.2. 約束
約束是什麼?
約束是用於規定表中資料的規則,以保證資料的完整性和一致性。透過約束,可以對錶中的列施加各種規則,如主鍵、唯一性、非空等。
常見的約束型別:
- 主鍵約束(PRIMARY KEY):唯一標識表中的每一行,不能包含空值。
- 外來鍵約束(FOREIGN KEY):用於建立表與表之間的關聯。
- 唯一約束(UNIQUE):確保列中的資料值是唯一的。
- 非空約束(NOT NULL):確保列中的資料值不為空。
示例:
CREATE TABLE employees ( id INT PRIMARY KEY, name VARCHAR(50) NOT NULL, department_id INT, FOREIGN KEY (department_id) REFERENCES departments(id) );
上述示例中,我們定義了一個 employees
表,其中包含了主鍵約束、非空約束和外來鍵約束。
3.3.3. 索引
索引是什麼?
索引是對錶中的一列或多列的值進行排序的一種結構,以便快速查詢和訪問資料。
常見的索引型別:
- 單列索引:對單個列建立的索引。
- 複合索引:對多個列建立的聯合索引。
- 唯一索引:確保列中的資料值是唯一的索引。
- 全文索引:用於全文搜尋的索引。
示例:
CREATE TABLE employees ( id INT PRIMARY KEY, name VARCHAR(50), department_id INT, INDEX idx_department (department_id) );
在上述示例中,我們定義了一個名為 idx_department
的索引,以加速對 department_id
列的檢索。
3.3.4. 資料型別、約束和索引的選擇
在設計資料庫時,應根據實際需求選擇合適的資料型別,併為資料新增適當的約束和索引。這有助於提高資料庫的效能、確保資料的完整性,並簡化對資料的管理和維護。
3.3.5. 注意事項
- 謹慎選擇資料型別,確保它們能夠正確地儲存和表示資料。
- 合理使用約束,以確保資料的完整性和一致性。
- 謹慎新增索引,避免過多或過少的索引,以提高查詢效能。
4. 資料操作基礎
4.1.資料的增、刪、改、查(CRUD)
在 SQL 資料庫中,對資料進行增、刪、改、查是常見且重要的操作,通常被稱為 CRUD 操作。
4.1.1. 資料的增加(Create)
向資料庫中新增新的資料記錄是資料操作中的一項關鍵任務。在 SQL 中,我們使用 INSERT INTO
語句來執行資料的插入操作。
語法:
INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...);
其中,table_name
是要插入資料的表名,column1, column2, ...
是要插入資料的列名,value1, value2, ...
是要插入的資料值。
示例:
INSERT INTO employees (name, age, department) VALUES ('John Doe', 30, 'IT');
將向名為 employees
的表中插入一條新的資料記錄,包括姓名、年齡和部門資訊。
4.1.2. 資料的刪除(Delete)
從資料庫中刪除資料記錄是另一個常見的操作。在 SQL 中,我們使用 DELETE FROM
語句來執行資料的刪除操作。
語法:
DELETE FROM table_name
WHERE condition;
其中,table_name
是要刪除資料的表名,condition
是一個可選的條件,用於指定要刪除的資料記錄。
示例:
DELETE FROM employees WHERE id = 1;
將從 employees
表中刪除 id
列為 1 的資料記錄。
4.1.3. 資料的修改(Update)
更新資料庫中的資料是常見的操作之一,它允許我們修改現有資料記錄的內容。在 SQL 中,我們使用 UPDATE
語句來執行資料的更新操作。
語法:
UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;
其中,table_name
是要更新資料的表名,column1 = value1, column2 = value2, ...
是要更新的列和對應的新值,condition
是一個可選的條件,用於指定要更新的資料記錄。
示例:
UPDATE employees SET age = 35 WHERE name = 'John Doe';
將名為 John Doe
的員工的年齡更新為 35 歲。
4.1.4. 資料的查詢(Select)
資料的檢索是 SQL 中最常見的操作之一,它允許我們從資料庫中獲取所需的資料記錄。在 SQL 中,我們使用 SELECT
語句來執行資料的查詢操作。
語法:
SELECT column1, column2, ...
FROM table_name
WHERE condition;
其中,column1, column2, ...
是要檢索的列名,table_name
是要檢索資料的表名,condition
是一個可選的條件,用於指定要檢索的資料記錄。
示例:
SELECT name, age, department FROM employees WHERE department = 'IT';
將檢索出部門為 IT
的所有員工的姓名、年齡和部門資訊。
在 SQL 資料庫中,CRUD 操作是資料庫管理和應用開發中的基礎。透過掌握增加、刪除、修改和查詢資料的基本操作,我們能夠有效地管理和利用資料庫中的資料資源,實現各種功能和業務需求。
4.2.使用 SELECT 查詢資料
在 MySQL 資料庫中,使用 SELECT 語句進行資料查詢是非常常見和重要的操作。SELECT 語句允許我們從資料庫中檢索出所需的資料,以便進行進一步的分析、處理或展示。
4.2.1. SELECT 語句基本結構
SELECT 語句的基本結構如下所示:
SELECT column1, column2, ...
FROM table_name
WHERE condition;
- column1, column2, ...: 指定要檢索的列名,可以是一個或多個列。
- table_name: 指定要檢索資料的表名。
- condition: 可選的條件,用於篩選檢索的資料行。
4.2.2. 查詢所有列的資料
要檢索表中所有列的資料,可以使用星號 (*) 萬用字元。
SELECT * FROM table_name;
這將檢索出表中所有列的資料記錄。
4.2.3. 查詢特定列的資料
如果只想檢索表中的特定列資料,可以透過在 SELECT 語句中指定列名來實現。
SELECT column1, column2 FROM table_name;
這將檢索出表中指定列的資料記錄。
4.2.4. 使用 WHERE 子句篩選資料
WHERE 子句允許我們根據特定條件篩選檢索的資料記錄。
SELECT column1, column2
FROM table_name
WHERE condition;
示例:
SELECT * FROM employees WHERE department = 'IT';
示例將檢索出部門為 IT 的所有員工的資料記錄。
4.2.5. 使用 ORDER BY 子句排序資料
ORDER BY 子句允許我們根據指定的列對檢索到的資料進行排序。
SELECT column1, column2
FROM table_name
ORDER BY column1 ASC/DESC;
示例:
SELECT * FROM employees
ORDER BY salary DESC;
示例將按照員工薪資(salary)的降序排列檢索到的資料記錄。
4.2.6. 使用 LIMIT 子句限制資料行數
LIMIT 子句允許我們限制檢索到的資料行數。
SELECT column1, column2
FROM table_name
LIMIT number;
示例:
SELECT * FROM employees LIMIT 10;
示例將檢索出前 10 條員工的資料記錄。
4.2.7. 結合多個條件進行查詢
在 WHERE 子句中,可以使用 AND、OR、NOT 等邏輯運算子結合多個條件進行查詢。
SELECT column1, column2
FROM table_name
WHERE condition1 AND condition2;
示例:
SELECT * FROM employees WHERE department = 'IT' AND age > 30;
示例將檢索出部門為 IT 且年齡大於 30 歲的員工的資料記錄。
4.2.8. 使用萬用字元進行模糊查詢
在 WHERE 子句中,可以使用萬用字元 % 進行模糊查詢。
示例:
SELECT * FROM employees WHERE name LIKE 'John%';
示例將檢索出姓名以 "John" 開頭的所有員工的資料記錄。
透過 SELECT 查詢語句,我們可以根據特定條件從資料庫中檢索出所需的資料,實現資料的篩選、排序和限制。
4.3.WHERE 子句和運算子
在 MySQL 資料庫中,WHERE 子句和運算子用於篩選檢索的資料,允許我們根據特定條件從資料庫中選擇性地獲取資料。
4.3.1. WHERE 子句的基本結構
WHERE 子句用於在 SELECT 查詢語句中指定條件,以篩選出符合條件的資料行。它的基本語法如下:
SELECT column1, column2, ...
FROM table_name
WHERE condition;
在這個語法中,condition
是一個邏輯表示式,用於定義檢索資料的條件。
4.3.2. WHERE 子句中的運算子
在 WHERE 子句中,我們可以使用以下常用的運算子來構建條件:
-
比較運算子:
=
(等於)<>
或!=
(不等於)>
(大於)<
(小於)>=
(大於等於)<=
(小於等於)
-
邏輯運算子:
AND
(與)OR
(或)NOT
(非)
-
模糊匹配運算子:
LIKE
(用於模糊匹配)IN
(用於指定多個值進行匹配)BETWEEN
(用於指定範圍)
4.3.3. 示例:使用 WHERE 子句查詢資料
透過一些示例來演示 WHERE 子句的使用:
- 基本的等於運算子:
SELECT * FROM employees WHERE department = 'IT';
以上查詢將檢索出部門為 IT 的所有員工的資料。
- 使用比較運算子:
SELECT * FROM employees WHERE age > 30 AND salary < 50000;
以上查詢將檢索出年齡大於 30 歲且薪資低於 50000 的員工的資料。
- 模糊匹配運算子:
SELECT * FROM employees WHERE name LIKE 'John%';
以上查詢將檢索出名字以 "John" 開頭的所有員工的資料。
- 使用邏輯運算子:
SELECT * FROM employees WHERE department = 'IT' OR department = 'Finance';
以上查詢將檢索出部門為 IT 或 Finance 的所有員工的資料。
- 使用 IN 運算子:
SELECT * FROM employees WHERE department IN ('IT', 'Finance');
以上查詢將檢索出部門為 IT 或 Finance 的所有員工的資料,與上面的查詢效果相同。
4.3.4. 使用 WHERE 子句的注意事項
- 在使用 WHERE 子句時,應確保條件的準確性和合理性,以避免檢索出錯誤的資料。
- 使用合適的索引可以提高 WHERE 子句的查詢效能,特別是在對大型表進行查詢時。
- 避免在 WHERE 子句中使用函式或表示式,這可能會導致索引失效,降低查詢效能。
WHERE 子句和運算子是 SQL 查詢中的重要組成部分,它們允許我們根據特定條件從資料庫中檢索出所需的資料。
4.4.ORDER BY 和 LIMIT 語句的使用
在 MySQL 資料庫中,ORDER BY 和 LIMIT 語句用於對檢索到的資料進行排序和限制結果集的行數。這兩個語句在實際應用中經常用於最佳化資料查詢和展示。
4.4.1. ORDER BY 語句
ORDER BY 語句用於對檢索到的資料行按指定的列進行排序。它的基本語法如下:
SELECT column1, column2, ...
FROM table_name
ORDER BY column1 [ASC|DESC];
- column1, column2, ...: 指定要檢索的列名。
- ASC|DESC: 可選項,表示升序(預設)或降序排列。
4.4.2. 示例:使用 ORDER BY 對資料排序
讓我們透過一些示例來演示 ORDER BY 語句的使用:
- 按升序排列:
SELECT * FROM employees
ORDER BY age ASC;
以上查詢將按照員工年齡的升序排列檢索到的資料行。
- 按降序排列:
SELECT * FROM employees
ORDER BY salary DESC;
以上查詢將按照員工薪資的降序排列檢索到的資料行。
4.4.3. LIMIT 語句
LIMIT 語句用於限制檢索到的資料行數。它的基本語法如下:
SELECT column1, column2, ...
FROM table_name
LIMIT number;
number: 指定要返回的行數。
4.4.4. 示例:使用 LIMIT 限制資料行數
讓我們透過一些示例來演示 LIMIT 語句的使用:
- 限制返回行數為 10 條:
SELECT * FROM employees LIMIT 10;
以上查詢將返回前 10 條員工資料行。
- 結合 ORDER BY 和 LIMIT 使用:
SELECT * FROM employees ORDER BY hire_date DESC LIMIT 5;
以上查詢將按照員工入職日期的降序排列,並返回最新的 5 條資料行。
4.4.5. ORDER BY 和 LIMIT 的注意事項
- ORDER BY 和 LIMIT 語句通常一起使用,以便對資料進行排序並限制返回的行數。
- 在對大型資料集進行查詢時,合理使用 ORDER BY 和 LIMIT 可以提高查詢效能,減少資料傳輸和處理的開銷。
- 要注意 LIMIT 子句的位置,應該在 ORDER BY 子句之後使用,否則可能得到不正確的結果。