前言:SQL(Structured Query Language)是用于管理關系型數據庫的標準語言,廣泛應用于數據查詢、更新、定義和管理等操作。本文將為你提供一份詳細的 SQL 速查手冊,涵蓋從基礎到高級的各種 SQL 操作,幫助你快速掌握和應用 SQL 技能。
一、查找數據的查詢
SELECT name AS "姓名" FROM users;
- 功能:從
users
表中選擇name
列,并將其顯示為“姓名”。 - 詳解:
SELECT
指定要查詢的列,AS "姓名"
為查詢結果指定別名,FROM users
指定數據來源表。
范例:
假設 users
表如下:
id | name | |
---|---|---|
1 | Alice | alice@example.com |
2 | Bob | bob@example.com |
3 | Charlie | charlie@example.com |
執行語句:
SELECT name AS "姓名" FROM users;
結果:
姓名 |
---|
Alice |
Bob |
Charlie |
二、修改數據的查詢
UPDATE employees SET salary = salary * 1.1 WHERE department = 'IT';
- 功能:將
IT
部門的員工工資提高 10%。 - 詳解:
UPDATE
指定要更新的表,SET
指定要更新的列和值,WHERE
指定更新條件。
范例:
假設 employees
表如下:
id | name | salary | department |
---|---|---|---|
1 | Alice | 50000 | HR |
2 | Bob | 60000 | IT |
3 | Charlie | 55000 | Finance |
執行語句:
UPDATE employees SET salary = salary * 1.1 WHERE department = 'IT';
結果:
id | name | salary | department |
---|---|---|---|
1 | Alice | 50000 | HR |
2 | Bob | 66000 | IT |
3 | Charlie | 55000 | Finance |
三、聚合查詢
SELECT department, AVG(salary) AS avg_salary FROM employees GROUP BY department HAVING AVG(salary) > 50000;
- 功能:按部門分組,計算每個部門的平均工資,并篩選出平均工資大于 50000 的部門。
- 詳解:
SELECT
指定要查詢的列,GROUP BY
按部門分組,HAVING
篩選條件。
范例:
假設 employees
表如下:
id | name | salary | department |
---|---|---|---|
1 | Alice | 50000 | HR |
2 | Bob | 60000 | IT |
3 | Charlie | 55000 | Finance |
4 | David | 58000 | IT |
執行語句:
SELECT department, AVG(salary) AS avg_salary FROM employees GROUP BY department HAVING AVG(salary) > 50000;
結果:
department | avg_salary |
---|---|
IT | 59000 |
四、連接查詢
SELECT employees.name, departments.department_name
FROM employees
INNER JOIN departments
ON employees.department_id = departments.id;
- 功能:從
employees
和departments
表中選擇匹配的行。 - 詳解:
INNER JOIN
連接兩個表,ON
指定連接條件。
范例:
假設 employees
表如下:
id | name | department_id |
---|---|---|
1 | Alice | 1 |
2 | Bob | 2 |
3 | Charlie | 3 |
假設 departments
表如下:
id | department_name |
---|---|
1 | HR |
2 | IT |
3 | Finance |
執行語句:
SELECT employees.name, departments.department_name
FROM employees
INNER JOIN departments
ON employees.department_id = departments.id;
結果:
name | department_name |
---|---|
Alice | HR |
Bob | IT |
Charlie | Finance |
五、視圖查詢
CREATE VIEW high_salary_employees AS SELECT name, salary FROM employees WHERE salary > 50000;
- 功能:創建一個視圖,顯示工資高于 50000 的員工。
- 詳解:
CREATE VIEW
創建視圖,AS
定義視圖的查詢。
范例:
假設 employees
表如下:
id | name | salary |
---|---|---|
1 | Alice | 50000 |
2 | Bob | 60000 |
3 | Charlie | 55000 |
執行語句:
CREATE VIEW high_salary_employees AS SELECT name, salary FROM employees WHERE salary > 50000;
查詢視圖:
SELECT * FROM high_salary_employees;
結果:
name | salary |
---|---|
Bob | 60000 |
Charlie | 55000 |
六、修改表的查詢
ALTER TABLE employees ADD COLUMN bonus DECIMAL(10,2);
- 功能:向
employees
表中添加一個bonus
列。 - 詳解:
ALTER TABLE
修改表結構,ADD COLUMN
添加新列。
范例:
假設 employees
表如下:
id | name | salary |
---|---|---|
1 | Alice | 50000 |
2 | Bob | 60000 |
3 | Charlie | 55000 |
執行語句:
ALTER TABLE employees ADD COLUMN bonus DECIMAL(10,2);
結果:
id | name | salary | bonus |
---|---|---|---|
1 | Alice | 50000 | NULL |
2 | Bob | 60000 | NULL |
3 | Charlie | 55000 | NULL |
七、單表查詢
SELECT name, salary FROM employees WHERE salary > 50000;
- 功能:從
employees
表中選擇工資高于 50000 的員工。 - 詳解:
SELECT
指定要查詢的列,WHERE
指定查詢條件。
范例:
假設 employees
表如下:
id | name | salary |
---|---|---|
1 | Alice | 50000 |
2 | Bob | 60000 |
3 | Charlie | 55000 |
執行語句:
SELECT name, salary FROM employees WHERE salary > 50000;
結果:
name | salary |
---|---|
Bob | 60000 |
Charlie | 55000 |
八、多表查詢
SELECT employees.name, departments.department_name
FROM employees, departments
WHERE employees.department_id = departments.id;
- 功能:從
employees
和departments
表中選擇匹配的行。 - 詳解:
FROM
指定兩個表,WHERE
指定連接條件。
范例:
假設 employees
表如下:
id | name | department_id |
---|---|---|
1 | Alice | 1 |
2 | Bob | 2 |
3 | Charlie | 3 |
假設 departments
表如下:
id | department_name |
---|---|
1 | HR |
2 | IT |
3 | Finance |
執行語句:
SELECT employees.name, departments.department_name
FROM employees, departments
WHERE employees.department_id = departments.id;
結果:
name | department_name |
---|---|
Alice | HR |
Bob | IT |
Charlie | Finance |
九、集合運算
SELECT name FROM employees WHERE department = 'HR'
UNION
SELECT name FROM employees WHERE department = 'IT';
- 功能:返回
HR
和IT
部門的員工姓名。 - 詳解:
UNION
合并兩個查詢結果。
范例:
假設 employees
表如下:
id | name | department |
---|---|---|
1 | Alice | HR |
2 | Bob | IT |
3 | Charlie | Finance |
4 | David | IT |
執行語句:
SELECT name FROM employees WHERE department = 'HR'
UNION
SELECT name FROM employees WHERE department = 'IT';
結果:
name |
---|
Alice |
Bob |
David |
十、子查詢
SELECT name FROM employees WHERE salary > (SELECT AVG(salary) FROM employees);
- 功能:選擇工資高于平均工資的員工。
- 詳解:
SELECT
指定要查詢的列,WHERE
中的子查詢計算平均工資。
范例:
假設 employees
表如下:
id | name | salary |
---|---|---|
1 | Alice | 50000 |
2 | Bob | 60000 |
3 | Charlie | 55000 |
執行語句:
SELECT name FROM employees WHERE salary > (SELECT AVG(salary) FROM employees);
結果:
name |
---|
Bob |
十一、數據操作
INSERT INTO employees (name, salary, department) VALUES ('Eve', 52000, 'HR');
- 功能:向
employees
表中插入一條新記錄。 - 詳解:
INSERT INTO
插入新記錄,VALUES
指定插入的值。
范例:
假設 employees
表如下:
id | name | salary | department |
---|---|---|---|
1 | Alice | 50000 | HR |
2 | Bob | 60000 | IT |
3 | Charlie | 55000 | Finance |
執行語句:
INSERT INTO employees (name, salary, department) VALUES ('Eve', 52000, 'HR');
結果:
id | name | salary | department |
---|---|---|---|
1 | Alice | 50000 | HR |
2 | Bob | 60000 | IT |
3 | Charlie | 55000 | Finance |
4 | Eve | 52000 | HR |
十二、數據定義
CREATE TABLE departments (id INT PRIMARY KEY,department_name VARCHAR(50)
);
- 功能:創建一個
departments
表。 - 詳解:
CREATE TABLE
創建表,PRIMARY KEY
指定主鍵。
范例:
執行語句:
CREATE TABLE departments (id INT PRIMARY KEY,department_name VARCHAR(50)
);
結果:成功創建 departments
表。
十三、擴展內容
EXPLAIN SELECT * FROM employees WHERE salary > 50000;
- 功能:顯示查詢執行計劃。
- 詳解:
EXPLAIN
用于分析查詢性能。
范例:
假設 employees
表如下:
id | name | salary |
---|---|---|
1 | Alice | 50000 |
2 | Bob | 60000 |
3 | Charlie | 55000 |
執行語句:
EXPLAIN SELECT * FROM employees WHERE salary > 50000;
結果:顯示查詢執行計劃,幫助優化查詢性能。
希望以上內容符合您的需求!