
SQL(結構化查詢語言)是一種用於管理和操作關聯型數據庫的標準語言。本文將介紹 SQL Server 和 Oracle 兩大數據庫系統中常用的 SQL 語法,讓你對 SQL 語法有更清晰的理解和應用。
1. 基本查詢語法
SQL Server 和 Oracle 都支持標準的 SQL 查詢語法,下面的範例展示了如何從表格中查詢數據。
SELECT column1, column2
FROM table_name
WHERE condition;
例子:
假設有一個名為 Employees
的表,包含 EmployeeID
和 Name
兩個列,查詢所有員工的 EmployeeID
和 Name
:
SELECT EmployeeID, Name
FROM Employees;
2. 插入數據
插入數據的語法在 SQL Server 和 Oracle 中非常相似。以下是插入單行數據的基本語法:
INSERT INTO table_name (column1, column2)
VALUES (value1, value2);
例子:
插入一個新員工的資料:
INSERT INTO Employees (EmployeeID, Name)
VALUES (1, 'John Doe');
3. 更新數據
使用 UPDATE
語句可以更新已經存在的數據。SQL Server 和 Oracle 的語法相同:
UPDATE table_name
SET column1 = value1, column2 = value2
WHERE condition;
例子:
將 EmployeeID
為 1 的員工的 Name
更新為 ‘Jane Doe’:
UPDATE Employees
SET Name = 'Jane Doe'
WHERE EmployeeID = 1;
4. 刪除數據
刪除數據的語法也相似。使用 DELETE
語句:
DELETE FROM table_name
WHERE condition;
例子:
刪除 EmployeeID
為 1 的員工:
DELETE FROM Employees
WHERE EmployeeID = 1;
5. 創建表格
創建表格的語法基本相同,但 SQL Server 和 Oracle 在一些細節上有所不同,特別是在數據類型和自增字段的定義上。
SQL Server:
CREATE TABLE table_name (
column1 datatype PRIMARY KEY,
column2 datatype,
...
);
Oracle:
CREATE TABLE table_name (
column1 datatype PRIMARY KEY,
column2 datatype,
...
);
例子:
創建一個 Employees
表:
CREATE TABLE Employees (
EmployeeID INT PRIMARY KEY,
Name VARCHAR(100)
);
6. 聚合函數
SQL 中常用的聚合函數有:COUNT
、SUM
、AVG
、MIN
和 MAX
。它們的語法相同,通常與 GROUP BY
一起使用。
例子:
計算員工總數:
SELECT COUNT(*) FROM Employees;
計算員工工資的平均值(假設 Salary
列存在):
SELECT AVG(Salary) FROM Employees;
7. 排序查詢結果
ORDER BY
用於排序查詢結果,默認為升序(ASC
),如果需要降序則使用 DESC
。
例子:
按 Name
升序排列員工:
SELECT EmployeeID, Name
FROM Employees
ORDER BY Name ASC;
8. 關聯查詢(JOIN)
JOIN
用於將多個表格聯接在一起,根據條件來獲取多表數據。常見的 JOIN
類型有:INNER JOIN
、LEFT JOIN
、RIGHT JOIN
和 FULL JOIN
。
例子:
假設有兩個表格:Employees
和 Departments
,每個員工都有一個 DepartmentID
,我們可以通過 INNER JOIN
來聯接這兩個表格。
SELECT Employees.EmployeeID, Employees.Name, Departments.DepartmentName
FROM Employees
INNER JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;
9. 子查詢
子查詢是嵌套在其他 SQL 查詢中的查詢。你可以在 SELECT
、INSERT
、UPDATE
和 DELETE
語句中使用子查詢。
例子:
查詢所有工資高於平均工資的員工:
SELECT Name
FROM Employees
WHERE Salary > (SELECT AVG(Salary) FROM Employees);
10. 資料庫和表格管理
創建資料庫
SQL Server:
CREATE DATABASE database_name;
Oracle:
CREATE DATABASE database_name;
查看所有資料庫和表格
SQL Server:
-- 查看所有資料庫
SELECT name FROM sys.databases;
-- 查看所有表格
SELECT table_name FROM information_schema.tables;
Oracle:
-- 查看所有資料庫
SELECT * FROM v$database;
-- 查看所有表格
SELECT table_name FROM all_tables;
11. SQL Server 與 Oracle 的差異
雖然 SQL Server 和 Oracle 的語法大部分相同,但還是有一些差異需要注意:
- 數據類型:SQL Server 和 Oracle 可能在數據類型的命名和使用上有所不同。例如,SQL Server 使用
VARCHAR
,而 Oracle 使用VARCHAR2
。 - 自增字段:在 SQL Server 中使用
IDENTITY
來定義自增字段,而在 Oracle 中則使用SEQUENCE
和觸發器(Trigger)來實現類似功能。
希望本文的教學能幫助你更好地理解 SQL,並將其應用於實際工作中。