【SQL語法教學】SQL Server與Oracle語法完整入門指南

資料庫

SQL(結構化查詢語言)是一種用於管理和操作關聯型數據庫的標準語言。本文將介紹 SQL Server 和 Oracle 兩大數據庫系統中常用的 SQL 語法,讓你對 SQL 語法有更清晰的理解和應用。

1. 基本查詢語法

SQL Server 和 Oracle 都支持標準的 SQL 查詢語法,下面的範例展示了如何從表格中查詢數據。

SELECT column1, column2
FROM table_name
WHERE condition;

例子:

假設有一個名為 Employees 的表,包含 EmployeeIDName 兩個列,查詢所有員工的 EmployeeIDName

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 中常用的聚合函數有:COUNTSUMAVGMINMAX。它們的語法相同,通常與 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 JOINLEFT JOINRIGHT JOINFULL JOIN

例子:

假設有兩個表格:EmployeesDepartments,每個員工都有一個 DepartmentID,我們可以通過 INNER JOIN 來聯接這兩個表格。

SELECT Employees.EmployeeID, Employees.Name, Departments.DepartmentName
FROM Employees
INNER JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;

9. 子查詢

子查詢是嵌套在其他 SQL 查詢中的查詢。你可以在 SELECTINSERTUPDATEDELETE 語句中使用子查詢。

例子:

查詢所有工資高於平均工資的員工:

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,並將其應用於實際工作中。

發佈留言