SQL - Overview
您好,有志於成為程式設計師的各位!我很高興能成為您們在這個令人興奮的SQL世界中的引路人。作為一個教了超過十年計算機科學的人,我可以告訴您,SQL就像是數據世界中的瑞士軍刀——非常多功能且絕對必要。所以,讓我們一起潛入水中,一起揭開SQL的神秘面紗!
What is SQL?
SQL,全名結構化查詢語言(Structured Query Language),是一種專門用於管理和操作關係數據庫的程式設計語言。現在,我知道這可能聽起來有點令人生畏,但這樣想:如果數據是一個大圖書館,那麼SQL就是那位知道每本書在哪裡并能夠迅速找到您需要的任何信息的圖書管理員。
SQL的關鍵特點
- 宣告式語言:您告訴SQL您想要什麼,而不是如何獲得它。
- 基於集合的操作:它對數據集進行操作,而不仅仅是單個記錄。
- 非過程式語言:您不需要指定獲取數據的具體步驟。
以下是一個簡單的例子來說明SQL的樣子:
SELECT first_name, last_name
FROM employees
WHERE department = 'Sales';
這個查詢是請求數據庫給我們提供銷售部門所有員工的姓名。相當直接了當,不是嗎?
Why SQL?
現在,你可能會想,“我為什麼要學習SQL?”好吧,讓我給你講一個小故事。幾年前,我的一個學生剛從大學畢業就找到了一份很好的工作,只是因為她懂SQL。那家公司有大量的數據,但卻無法理解它們。她的SQL技能讓她一躍成為公司的英雄!
以下是一些學習SQL的有力理由:
- 通用語言:幾乎所有關係數據庫都能理解SQL。
- 數據無處不在:從小型企業到科技巨頭,每個人都在使用數據庫。
- 職業機會:SQL技能在各行各業都非常搶手。
- 強大的數據操作:SQL能夠輕鬆處理大量數據。
A Brief History of SQL
SQL的歷史比許多人都悠久!它誕生於20世紀70年代,在技術領域中,這簡直就是古老。IBM的研究員Donald Chamberlin和Raymond Boyce基於Edgar Codd的關係模型開發了SQL。他們就像是數據的Dr. Frankenstein,將一種能夠與數據庫對話的語言帶到生活中!
關鍵里程碑
年份 | 事件 |
---|---|
1970 | Edgar Codd提出關係模型 |
1974 | SQL在IBM誕生 |
1986 | SQL成為ANSI標準 |
1987 | SQL成為ISO標準 |
1990年代 | 許多數據庫系統採用了SQL |
How SQL Works?
現在,讓我們探查一下SQL是如何施展它的魔法的。SQL運行在一個客戶端-服務器模型上。把它想像成一家餐廳:你(客戶)下訂單,廚房(服務器)準備並提供你的餐點。
SQL的過程
- 連接:你的應用程序連接到數據庫服務器。
- 查詢:你向服務器發送一個SQL查詢。
- 處理:服務器處理你的查詢。
- 結果:服務器將結果返回給你的應用程序。
讓我們看一個更複雜的例子來說明這個過程:
SELECT c.customer_name, SUM(o.total_amount) as total_spent
FROM customers c
JOIN orders o ON c.customer_id = o.customer_id
GROUP BY c.customer_name
HAVING SUM(o.total_amount) > 1000
ORDER BY total_spent DESC;
這個查詢做了很多事情:
- 它將兩個表:
customers
和orders
進行連接。 - 它計算每個客戶的總消費金額。
- 它過濾出消費金額超過1000美元的客戶。
- 最後,它按照消費金額從高到低的順序對結果進行排序。
當你運行這個查詢時,SQL會經過以下幾個步驟:
- 它首先將
customers
和orders
表進行連接。 - 然後它按照客戶名將結果進行分組。
- 它為每個客戶計算
total_amount
的總和。 - 它應用
HAVING
子句過濾出消費金額超過1000美元的客戶。 - 最後,它按照總消費金額的降序對結果進行排序。
所有這些都是在背後發生的,而你得到的是一個整齊的結果表!
SQL in Action
為了真正理解SQL是如何工作的,讓我們創建一個簡單的數據庫並運行一些查詢。想像我們正在管理一家小型書店:
-- 創建一個書籍表
CREATE TABLE books (
book_id INT PRIMARY KEY,
title VARCHAR(100),
author VARCHAR(50),
price DECIMAL(5,2)
);
-- 插入一些數據
INSERT INTO books VALUES
(1, 'To Kill a Mockingbird', 'Harper Lee', 12.99),
(2, '1984', 'George Orwell', 10.99),
(3, 'Pride and Prejudice', 'Jane Austen', 9.99);
-- 查詢價格超過$10的書籍
SELECT title, price
FROM books
WHERE price > 10
ORDER BY price DESC;
當你運行最後這個查詢時,SQL會:
- 檢查
books
表中的所有記錄。 - 對每本書的價格進行檢查,看是否符合條件(> 10)。
- 對符合條件的書籍,選擇它的標題和價格。
- 最後,它將這些結果按照價格的降序進行排序。
結果可能會像這樣:
title | price |
---|---|
To Kill a Mockingbird | 12.99 |
1984 | 10.99 |
這就是了!你剛剛見證了SQL的作用,從創建表、插入數據到查詢它。
記住,學習SQL就像學習騎自行車一樣。起初可能會有些搖搖晃晃,但隨著練習,你會很快地在數據庫中穿梭。持續實驗,保持好奇心,並不要害怕犯錯誤——這是我們學習的最好方式!
Credits: Image by storyset