MySQL 入門指南

52Hertz程序人生發表於2024-03-09

目錄

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 的特點:

  1. 開源性質:MySQL 是開源軟體,可以免費使用,並且有大量的社群支援和貢獻。
  2. 跨平臺性:MySQL 可以在各種作業系統上執行,包括 Windows、Linux、macOS 等。
  3. 高效能:MySQL 是一個高效能的資料庫系統,能夠處理大量的資料和請求。
  4. 穩定可靠:MySQL 已經經過了長時間的發展和測試,具有很高的穩定性和可靠性。
  5. 易用性:MySQL 的安裝和配置相對簡單,學習曲線較低,適合初學者和中小型專案使用。

MySQL 在各種應用場景中都有廣泛的應用:

  1. Web 開發:MySQL 是很多網站和應用程式的首選資料庫,用於儲存使用者資料、文章內容、日誌記錄等。
  2. 企業應用:MySQL 在企業內部的資訊管理、客戶關係管理(CRM)、人力資源管理(HRM)等方面都有應用。
  3. 資料分析:MySQL 可以作為資料倉儲,用於儲存和分析大量的資料,支援資料探勘和商業智慧應用。
  4. 嵌入式系統:MySQL 可以整合到各種嵌入式系統中,如路由器、智慧家居裝置等,用於儲存配置資訊和日誌資料。

1.2.資料庫管理系統(DBMS)的基本概念

資料庫管理系統(DBMS)是一種軟體,用於管理和組織資料的集合,以及提供資料的儲存、檢索、更新和管理功能。DBMS 是現代資訊系統的核心組成部分,它能夠有效地管理大量資料,並提供使用者友好的介面進行資料操作。

資料庫的定義:

資料庫是一個組織資料的集合,它以某種結構儲存在計算機系統中,並可被多個使用者共享和訪問。資料庫中的資料按照一定的模型組織和管理,以滿足使用者的需求。

資料庫管理系統的功能:

  1. 資料定義功能(DDL):用於定義資料庫的結構,包括建立、修改和刪除資料庫、表、索引等物件的操作。

  2. 資料操縱功能(DML):用於對資料庫中的資料進行增加、刪除、修改和查詢的操作,通常透過 SQL 語言實現。

  3. 資料控制功能(DCL):用於控制資料庫訪問的許可權和安全性,包括使用者管理、許可權分配等操作。

  4. 資料完整性功能:確保資料庫中的資料滿足一定的約束和規則,防止資料的損壞和不一致性。

  5. 資料恢復與備份功能:提供資料備份和恢復機制,保障資料的安全性和可靠性。

資料庫管理系統的分類:

  1. 關係型資料庫管理系統(RDBMS):採用關係模型來組織和管理資料的系統,如 MySQL、Oracle、SQL Server 等。

  2. 非關係型資料庫管理系統(NoSQL DBMS):不使用傳統的關係模型,而是採用其他資料模型來組織和管理資料的系統,如 MongoDB、Redis、Cassandra 等。

資料庫管理系統(DBMS)是一種用於管理和組織資料的軟體系統,它扮演著重要的角色,為使用者提供了資料管理、儲存、檢索和操作的功能。掌握資料庫管理系統的基本概念和功能,有助於使用者更好地理解和應用資料庫技術,提高工作效率和資料處理能力。

1.3.SQL(Structured Query Language)的作用和重要性

SQL 的定義

SQL(Structured Query Language)是一種用於管理和操作關係型資料庫的標準化查詢語言。它是一種特定目的的程式語言,用於執行對資料庫中的資料進行查詢、更新、刪除和新增等操作。

SQL 的作用

  1. 資料查詢(Query):SQL 語言最基本的功能之一是查詢資料庫中的資料。使用者可以使用 SQL 編寫各種型別的查詢語句,從資料庫中檢索所需的資料。

  2. 資料操作(CRUD):SQL 支援對資料庫中的資料進行增加(Create)、讀取(Read)、更新(Update)、刪除(Delete)等操作,通常稱為 CRUD 操作。

  3. 資料定義(DDL):SQL 可以用於定義資料庫中的結構,包括建立資料庫、表、索引等物件。

  4. 資料控制(DCL):SQL 也可以用於管理資料庫的訪問許可權和安全性,包括使用者管理、許可權分配等操作。

  5. 資料完整性和約束(Constraints):SQL 支援在資料庫中定義各種約束,如主鍵約束、外來鍵約束、唯一約束等,以確保資料的完整性和一致性。

SQL 的重要性

  1. 標準化:SQL 是一種標準化的資料庫查詢語言,被廣泛應用於各種關係型資料庫管理系統(RDBMS),如 MySQL、Oracle、SQL Server 等。

  2. 易學易用:SQL 的語法簡單明瞭,易於學習和理解。即使對於非程式設計背景的使用者,也可以透過簡單的培訓快速掌握基本的 SQL 查詢和操作技能。

  3. 靈活性:SQL 提供了豐富的查詢語句和操作功能,可以滿足各種複雜的資料處理需求,支援複雜的資料分析和報表生成。

  4. 高效性:SQL 查詢引擎經過最佳化和調整,可以在大型資料集上快速執行查詢操作,提高資料處理的效率和效能。

  5. 廣泛應用: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 檔案做了以下幾個工作:

  1. 指定了MySQL容器的基本配置,包括映象、重啟策略和環境變數。
  2. 對映了MySQL的3306埠到宿主機的3306埠,以便可以從外部訪問MySQL服務。
  3. 掛載了my.cnf配置檔案到MySQL容器的/etc/mysql/my.cnf路徑,以覆蓋預設的MySQL配置。
  4. 掛載了宿主機的mysql_data目錄到MySQL容器的/var/lib/mysql路徑,以持久化儲存MySQL的資料。
  5. 掛載了宿主機的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中新增以下行:

bind-address = 127.0.0.1

2.2.Windows、MacOS 下的安裝步驟(待補充)

...

3. SQL 基礎

3.1.SQL 的基本語法和結構

SQL(Structured Query Language)是用於管理關係型資料庫的標準化查詢語言,它提供了豐富的語法和結構來執行對資料庫的操作。在學習 SQL 的基礎部分時,我們需要了解其基本語法和結構。

3.1.1. SQL 查詢語句的基本結構

SQL 查詢語句通常由以下幾個關鍵部分組成:

  1. SELECT 語句:用於指定要檢索的資料列。
  2. FROM 子句:用於指定要檢索資料的表或檢視。
  3. WHERE 子句:可選的,用於指定檢索資料的條件。
  4. GROUP BY 子句:可選的,用於對檢索到的資料進行分組。
  5. HAVING 子句:可選的,用於指定對分組資料的條件。
  6. ORDER BY 子句:可選的,用於指定檢索到的資料的排序方式。
  7. 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 是要建立的表的名稱,column1column2 是表的列名,datatype 是列的資料型別。

示例:

CREATE TABLE employees (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50),
    age INT,
    department VARCHAR(50)
);

在上面的示例中,我們建立了一個名為 employees 的表,包含了 idnameagedepartment 四個列,分別儲存員工的編號、姓名、年齡和部門資訊。

3.2.4. 刪除表

要刪除表,可以使用 SQL 中的 DROP TABLE 語句。

DROP TABLE table_name;

其中,table_name 是要刪除的表的名稱。

示例:

DROP TABLE employees;

上面的示例將刪除名為 employees 的表。

3.2.5. 注意事項

  • 在執行 CREATE DATABASEDROP 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 BYLIMIT 語句通常一起使用,以便對資料進行排序並限制返回的行數。
  • 在對大型資料集進行查詢時,合理使用 ORDER BYLIMIT 可以提高查詢效能,減少資料傳輸和處理的開銷。
  • 要注意 LIMIT 子句的位置,應該在 ORDER BY 子句之後使用,否則可能得到不正確的結果。