完整的 SQL 教學與練習(從創建資料表到進階查詢)

更新於 發佈於 閱讀時間約 12 分鐘

SQL(Structured Query Language,結構化查詢語言)是與資料庫互動的基礎語言,廣泛應用於各種資料庫管理系統,如 MySQL、PostgreSQL 和 SQL Server。在本篇文章中,將介紹 SQL 的基本語法,並通過多個實際練習案例,學習掌握從資料表創建到高階查詢的技能喔。


一、SQL 基本語法

1. 創建資料表

資料表是資料庫的基本結構,透過 SQL 可以輕鬆創建資料表。以下是創建一個學校資料表的 SQL 範例:

CREATE TABLE schools (
id INT AUTO_INCREMENT, -- 自動增長的 id 字段,作為主鍵
name VARCHAR(100), -- 學校名稱
address VARCHAR(100), -- 學校地址
PRIMARY KEY (id) -- 設置 id 為主鍵
);

2. 新增資料

當資料表創建完成後,可以使用 INSERT INTO 語句將資料新增到資料表中:

-- 新增一筆學校資料
INSERT INTO schools (name, address) VALUES ('大學一', '一市一區');
-- 新增另一筆學校資料
INSERT INTO schools (name, address) VALUES ('大學二', '二市二區');

3. 查詢資料

要查看資料表中的資料,可以使用 SELECT 語句:

-- 查詢所有學校的資料
SELECT * FROM schools;


二、SQL 練習範例:學生資料管理

假設你正在為一所學校設計資料庫,以下將展示如何管理學生資料。

1. 創建學生資料表

學生資料表需要儲存學生的姓名、電話、年級、班級、地址等信息,SQL 如下:

CREATE TABLE students (
id INT AUTO_INCREMENT, -- 自動增長的 id 字段
name VARCHAR(50) NOT NULL, -- 學生姓名,必填
phone VARCHAR(20) DEFAULT '沒有電話' NOT NULL, -- 電話欄位,若沒有電話則預設為 '沒有電話'
grade VARCHAR(5), -- 年級
class VARCHAR(5), -- 班級
address VARCHAR(100), -- 地址
id_number VARCHAR(10), -- 身分證字號
PRIMARY KEY (id) -- 設置 id 為主鍵
);

2. 新增學生資料

我們可以透過 INSERT INTO 將學生資料加入資料表中:

-- 新增學生資料
INSERT INTO students(name, grade, class, address, id_number) VALUES ('學生一', '三', '一班', '一市', 'A122222222');
INSERT INTO students(name, phone, grade, class, address, id_number) VALUES ('學生二', '0921111111', '一', '二班', '二縣', 'B222222222');
INSERT INTO students(name, phone, grade, class, address, id_number) VALUES ('學生三', '0931111111', '二', '三班', '三市', 'C132222222');

3. 查詢學生資料

要查詢資料表中的所有學生資料,可以使用以下語句:

-- 查詢所有學生資料
SELECT * FROM students;

4. 精準搜尋

如果你只想查詢 id 等於 2 的學生資料,可以使用 WHERE 子句:

-- 查詢 id 為 2 的學生資料
SELECT * FROM students WHERE id = 2;

5. 模糊搜尋

假設你想查找地址中包含「一」字的學生資料,可以使用 LIKE 進行模糊查詢:

-- 查詢地址中有「一」字的學生資料
SELECT * FROM students WHERE address LIKE '%一%';

6. 排序資料

你可以使用 ORDER BY 來對查詢結果進行排序,ASC 表示升序,DESC 表示降序:

-- 依照學生的 id 降序排序
SELECT * FROM students ORDER BY id DESC;

7. 更新資料

如果你需要修改某筆資料,可以使用 UPDATE 語句:

-- 更新 id 為 1 的學生的名字為 David
UPDATE students SET name = '學生四' WHERE id = 1;

8. 刪除資料

若某筆資料不再需要,可以使用 DELETE 刪除它:

-- 刪除 id 為 3 的學生資料
DELETE FROM students WHERE id = 3;


三、SQL 練習:書店資料管理

接下來,我們將進行一個書店資料庫管理的練習喔。

1. 創建書籍資料表

書店資料表需要記錄書籍的書名、作者、出版社、價格等信息:

CREATE TABLE books (
id INT AUTO_INCREMENT,
name VARCHAR(50), -- 書名
author VARCHAR(50), -- 作者
company VARCHAR(50), -- 出版社
address VARCHAR(50), -- 出版社地址
price SMALLINT, -- 價格
publication DATE, -- 出版日期
PRIMARY KEY(id) -- 設置 id 為主鍵
);

2. 新增書籍資料

我們可以使用 INSERT INTO 將書籍資料新增到資料表中:

-- 新增三本書籍
INSERT INTO books(name, author, company, price, publication) VALUES ('書本一', '作者一', '出版社一', 150, '2024-01-01');
INSERT INTO books(name, author, company, price, publication) VALUES ('書本二', '作者二', '出版社二', 450, '2023-01-02');
INSERT INTO books(name, author, company, price, publication) VALUES ('書本三', '作者三', '出版社三', 310, '2022-01-03');

3. 查詢價格小於 300 的書籍

假設你要查詢所有價格低於 300 的書籍,可以使用 WHERE 子句:

-- 查詢價格小於 300 的書籍
SELECT * FROM books WHERE price < 300;

4. 刪除書籍資料

如果有書籍賣出後不再販售,可以刪除資料:

-- 刪除 id 為 1 的書籍
DELETE FROM books WHERE id = 1;

5. 更新書籍資料

如果書籍的資料需要更正,可以使用 UPDATE

-- 更新 id 為 3 的書籍的書名與出版日期
UPDATE books SET name = '書本四', publication = '2024-01-04' WHERE id = 3;

6. 查詢作者名中包含「一」字的書籍

假設某客戶記得書名的作者中包含「一」字,可以使用 LIKE 進行查詢:

-- 查詢作者名中包含「一」字的書籍
SELECT * FROM books WHERE author LIKE '%一%';

7. 依價格排序書籍

你可以使用 ORDER BY 來將書籍按價格排序:

-- 按價格從高到低排序
SELECT * FROM books ORDER BY price DESC;


四、進階 SQL:使用 JOIN 結合多表查詢

如果你有多個資料表,並且需要從中查詢相關資料,可以使用 JOIN 來結合資料表。例如,我們可以創建兩個資料表:books(書籍)和 companys(出版社)。

1. 創建兩個資料表並插入資料

CREATE TABLE companys (
id INT AUTO_INCREMENT,
name VARCHAR(50),
address VARCHAR(50),
PRIMARY KEY(id)
);

INSERT INTO companys(name, address) VALUES ('出版社四', '四市');
INSERT INTO companys(name, address) VALUES ('出版社五', '五市');

2. 使用 JOIN 查詢書籍和出版社的資料

你可以使用 JOIN 將兩個資料表結合,並查詢書籍和出版社的信息:

-- 使用 JOIN 查詢書籍與出版社的資料
SELECT books.*, companys.name AS company_name, companys.address
FROM books
JOIN companys
ON books.company_id = companys.id;


結語

掌握 SQL 語法是資料庫管理的基礎,無論是進行資料表的創建、資料的新增、查詢還是更新,都能透過 SQL 精準高效地完成。隨著你深入學習,還可以進行更複雜的查詢和操作,例如多表查詢、資料聚合和索引優化等。接下來會介紹Laravel和PHP。


對於這類的撰寫方式習慣嗎?歡迎多多進行良性的知識交流喔!目前是在學習階段,大家有不同看法的話歡迎進行良性的知識交流!

 

大家可以考慮多多分享文章和考慮訂閱沙龍方案或贊助等喔!不過請注意不要違反著作權等行為。當然決定權都在於您,不會干涉您的任何決定。

 

提醒,文章僅供正當的知識參考,文章不負任何責任。

留言
avatar-img
留言分享你的想法!
avatar-img
阿棋的沙龍
2會員
34內容數
有軟體開發相關文章。
你可能也想看
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
本章節介紹了HTML中的表格和表單元素。表格部分詳細說明了table、tr、td等標籤的用途,以及如何構建結構化數據。表單部分則涵蓋了form、input、button等標籤,解釋了如何創建用戶交互界面以收集和提交數據。章節通過實例代碼展示了這些元素的實際應用。
Thumbnail
本章節介紹了HTML中的表格和表單元素。表格部分詳細說明了table、tr、td等標籤的用途,以及如何構建結構化數據。表單部分則涵蓋了form、input、button等標籤,解釋了如何創建用戶交互界面以收集和提交數據。章節通過實例代碼展示了這些元素的實際應用。
Thumbnail
※ 關聯式資料庫(RDBMS)是什麼? 關聯式資料庫(RDBMS)是一種傳統的資料庫系統,以結構化查詢語言(SQL)為基礎,將資料儲存於預定義的表格中。這些表格包括行和列,彼此之間存在明確的關聯性。 ※ 關聯式資料庫(RDBMS)有兩個重要元素: 關聯(Relational): 關聯式資料庫
Thumbnail
※ 關聯式資料庫(RDBMS)是什麼? 關聯式資料庫(RDBMS)是一種傳統的資料庫系統,以結構化查詢語言(SQL)為基礎,將資料儲存於預定義的表格中。這些表格包括行和列,彼此之間存在明確的關聯性。 ※ 關聯式資料庫(RDBMS)有兩個重要元素: 關聯(Relational): 關聯式資料庫
Thumbnail
在這個星光閃爍的數據宇宙中,SQL是一把鑰匙,開啟了通往知識寶庫的大門。想像一下,每一條SELECT語句都像是一段魔法咒語,喚醒沉睡在數據庫深處的信息。今天,我們就要一起踏上這段探秘之旅,將揭開SQL基本查詢指令的神秘面紗,學習如何巧妙地與數據對話。
Thumbnail
在這個星光閃爍的數據宇宙中,SQL是一把鑰匙,開啟了通往知識寶庫的大門。想像一下,每一條SELECT語句都像是一段魔法咒語,喚醒沉睡在數據庫深處的信息。今天,我們就要一起踏上這段探秘之旅,將揭開SQL基本查詢指令的神秘面紗,學習如何巧妙地與數據對話。
Thumbnail
聚合函數 可以對資料的筆數、平均、最大、最小和加總的運算,提供查詢結果:如下表示: COUNT(Column):計算筆數,「*」是統計紀錄數。 AVG(Column):計算欄位平均值。 MAX(Column):計算欄位最大值。 MIN(Column):計算欄位最小值。 SUM(Colum
Thumbnail
聚合函數 可以對資料的筆數、平均、最大、最小和加總的運算,提供查詢結果:如下表示: COUNT(Column):計算筆數,「*」是統計紀錄數。 AVG(Column):計算欄位平均值。 MAX(Column):計算欄位最大值。 MIN(Column):計算欄位最小值。 SUM(Colum
Thumbnail
依照上圖的資料表創建出公司的資料庫 Employee CREATE TABLE `employee`( `emp_id` INT PRIMARY KEY, `name` VARCHAR(20), `birth_date` DATE, `sex`VARCHAR(1), `salary
Thumbnail
依照上圖的資料表創建出公司的資料庫 Employee CREATE TABLE `employee`( `emp_id` INT PRIMARY KEY, `name` VARCHAR(20), `birth_date` DATE, `sex`VARCHAR(1), `salary
Thumbnail
在資料庫管理中,SQL(Structured Query Language)是一種強大的工具,用於處理資料庫中的資料。本篇教學將介紹 SQL 中的基本操作,包括 SELECT、UPDATE、INSERT 和 DELETE,讓您能夠有效地查詢、更新、插入和刪除資料。
Thumbnail
在資料庫管理中,SQL(Structured Query Language)是一種強大的工具,用於處理資料庫中的資料。本篇教學將介紹 SQL 中的基本操作,包括 SELECT、UPDATE、INSERT 和 DELETE,讓您能夠有效地查詢、更新、插入和刪除資料。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News