SQL(Structured Query Language,結構化查詢語言)是與資料庫互動的基礎語言,廣泛應用於各種資料庫管理系統,如 MySQL、PostgreSQL 和 SQL Server。在本篇文章中,將介紹 SQL 的基本語法,並通過多個實際練習案例,學習掌握從資料表創建到高階查詢的技能喔。
資料表是資料庫的基本結構,透過 SQL 可以輕鬆創建資料表。以下是創建一個學校資料表的 SQL 範例:
CREATE TABLE schools (
id INT AUTO_INCREMENT, -- 自動增長的 id 字段,作為主鍵
name VARCHAR(100), -- 學校名稱
address VARCHAR(100), -- 學校地址
PRIMARY KEY (id) -- 設置 id 為主鍵
);
當資料表創建完成後,可以使用 INSERT INTO
語句將資料新增到資料表中:
-- 新增一筆學校資料
INSERT INTO schools (name, address) VALUES ('大學一', '一市一區');
-- 新增另一筆學校資料
INSERT INTO schools (name, address) VALUES ('大學二', '二市二區');
要查看資料表中的資料,可以使用 SELECT
語句:
-- 查詢所有學校的資料
SELECT * FROM schools;
假設你正在為一所學校設計資料庫,以下將展示如何管理學生資料。
學生資料表需要儲存學生的姓名、電話、年級、班級、地址等信息,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 為主鍵
);
我們可以透過 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');
要查詢資料表中的所有學生資料,可以使用以下語句:
-- 查詢所有學生資料
SELECT * FROM students;
如果你只想查詢 id
等於 2 的學生資料,可以使用 WHERE
子句:
-- 查詢 id 為 2 的學生資料
SELECT * FROM students WHERE id = 2;
假設你想查找地址中包含「一」字的學生資料,可以使用 LIKE
進行模糊查詢:
-- 查詢地址中有「一」字的學生資料
SELECT * FROM students WHERE address LIKE '%一%';
你可以使用 ORDER BY
來對查詢結果進行排序,ASC
表示升序,DESC
表示降序:
-- 依照學生的 id 降序排序
SELECT * FROM students ORDER BY id DESC;
如果你需要修改某筆資料,可以使用 UPDATE
語句:
-- 更新 id 為 1 的學生的名字為 David
UPDATE students SET name = '學生四' WHERE id = 1;
若某筆資料不再需要,可以使用 DELETE
刪除它:
-- 刪除 id 為 3 的學生資料
DELETE FROM students WHERE id = 3;
接下來,我們將進行一個書店資料庫管理的練習喔。
書店資料表需要記錄書籍的書名、作者、出版社、價格等信息:
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 為主鍵
);
我們可以使用 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');
假設你要查詢所有價格低於 300 的書籍,可以使用 WHERE
子句:
-- 查詢價格小於 300 的書籍
SELECT * FROM books WHERE price < 300;
如果有書籍賣出後不再販售,可以刪除資料:
-- 刪除 id 為 1 的書籍
DELETE FROM books WHERE id = 1;
如果書籍的資料需要更正,可以使用 UPDATE
:
-- 更新 id 為 3 的書籍的書名與出版日期
UPDATE books SET name = '書本四', publication = '2024-01-04' WHERE id = 3;
假設某客戶記得書名的作者中包含「一」字,可以使用 LIKE
進行查詢:
-- 查詢作者名中包含「一」字的書籍
SELECT * FROM books WHERE author LIKE '%一%';
你可以使用 ORDER BY
來將書籍按價格排序:
-- 按價格從高到低排序
SELECT * FROM books ORDER BY price DESC;
如果你有多個資料表,並且需要從中查詢相關資料,可以使用 JOIN
來結合資料表。例如,我們可以創建兩個資料表:books
(書籍)和 companys
(出版社)。
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 ('出版社五', '五市');
你可以使用 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。
對於這類的撰寫方式習慣嗎?歡迎多多進行良性的知識交流喔!目前是在學習階段,大家有不同看法的話歡迎進行良性的知識交流!
大家可以考慮多多分享文章和考慮訂閱沙龍方案或贊助等喔!不過請注意不要違反著作權等行為。當然決定權都在於您,不會干涉您的任何決定。
提醒,文章僅供正當的知識參考,文章不負任何責任。