TD SQL入門教程:零基礎學會資料庫操作
歡迎來到TD SQL入門教程!無論您是資料科學家、開發人員,還是僅僅對資料庫世界感到好奇,本教學都將引導您從零開始,掌握Teradata資料庫的基本操作。SQL(Structured Query Language,結構化查詢語言)是與關係型資料庫溝通的標準語言,而TD SQL則是專為Teradata資料倉儲系統設計的SQL方言。學會TD SQL,您將能夠有效地管理和操作巨量資料。
1. 什麼是SQL?
SQL是一種專門用於管理關係型資料庫的程式語言。它允許您執行多種操作,例如建立資料庫物件(如資料表)、插入、查詢、更新和刪除資料。SQL的重要性在於其標準化和普遍性,幾乎所有的關係型資料庫系統都支援SQL。
2. TD SQL基礎
Teradata是一個強大的並行處理(MPP)資料倉儲系統,它使用TD SQL作為其主要的查詢語言。TD SQL在標準SQL的基礎上,針對Teradata的架構和效能進行了優化,但其基本語法和概念與標準SQL保持一致,這使得學習TD SQL對於有SQL基礎的人來說相對容易。
在TD SQL中,資料庫操作主要分為兩大類:
- 資料定義語言 (Data Definition Language, DDL):用於定義和管理資料庫物件的結構,如建立、修改、刪除資料表。
- 資料操作語言 (Data Manipulation Language, DML):用於操作資料庫中的資料,如插入、查詢、更新、刪除資料。
3. 資料定義語言 (DDL) – 建立資料表
資料表是資料庫中儲存資料的基本結構,它由列(columns)和行(rows)組成。使用CREATE TABLE語句可以建立新的資料表。
CREATE TABLE
CREATE TABLE語句用於定義資料表的名稱、每個列的名稱、資料類型以及任何約束。
語法:
sql
CREATE [SET/MULTISET] TABLE table_name (
column1 datatype [constraints],
column2 datatype [constraints],
...
PRIMARY KEY (column1, ...)
);
SET或MULTISET:指定資料表是否允許重複的行。SET表不允許重複行,而MULTISET表允許。在Teradata中,MULTISET是預設選項。table_name:您要建立的資料表名稱。columnN:列的名稱。datatype:列將儲存的資料類型(例如,INTEGER、VARCHAR(n)、DATE)。constraints:應用於列的規則(例如,NOT NULL、PRIMARY KEY)。PRIMARY KEY用於唯一識別資料表中的每一行。
範例:
建立一個名為 Employees 的資料表:
sql
CREATE MULTISET TABLE Employees (
EmployeeID INTEGER NOT NULL,
FirstName VARCHAR(50) NOT NULL,
LastName VARCHAR(50) NOT NULL,
DateOfBirth DATE,
DepartmentID INTEGER,
PRIMARY KEY (EmployeeID)
);
這個範例建立了 Employees 資料表,包含五個列。EmployeeID 被設定為主鍵且不能為空。
4. 資料操作語言 (DML) – 資料的增、刪、改、查
一旦資料表建立完成,您就可以使用DML語句來操作其中的資料了。
INSERT (新增資料)
INSERT 語句用於向資料表中新增行(記錄)。
語法:
sql
INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...);
如果您為所有列提供值,並且順序與資料表中列的定義順序一致,則可以省略列名。
範例:
“`sql
— 插入單行資料
INSERT INTO Employees (EmployeeID, FirstName, LastName, DateOfBirth, DepartmentID)
VALUES (101, ‘John’, ‘Doe’, ‘1985-03-15’, 1);
— 如果按順序插入所有列的值,可以省略列名
INSERT INTO Employees
VALUES (102, ‘Jane’, ‘Smith’, ‘1990-07-22’, 2);
“`
SELECT (查詢資料)
SELECT 語句是SQL中最常用的命令,用於從一個或多個資料表中檢索資料。
語法:
sql
SELECT column1, column2, ...
FROM table_name
WHERE condition
ORDER BY column_name [ASC|DESC];
SELECT *:檢索資料表中的所有列。FROM table_name:指定要從中檢索資料的資料表。WHERE condition:根據指定條件過濾記錄。ORDER BY column_name:根據一個或多個列對結果集進行排序,ASC(升序)或DESC(降序)。
範例:
“`sql
— 選擇 Employees 資料表中的所有列和所有行
SELECT *
FROM Employees;
— 選擇 Employees 資料表中的特定列
SELECT EmployeeID, FirstName, LastName
FROM Employees;
— 選擇 DepartmentID 為 1 的員工
SELECT FirstName, LastName
FROM Employees
WHERE DepartmentID = 1;
— 選擇 1988 年後出生,並按姓氏升序排列的員工
SELECT FirstName, LastName, DateOfBirth
FROM Employees
WHERE DateOfBirth > ‘1988-01-01’
ORDER BY LastName ASC;
“`
UPDATE (更新資料)
UPDATE 語句用於修改資料表中現有的記錄。
語法:
sql
UPDATE table_name
SET column1 = new_value1, column2 = new_value2, ...
WHERE condition;
SET:指定要更新的列及其新值。WHERE condition:(可選) 指定要更新哪些行。如果省略,資料表中的所有行都將被更新。
範例:
“`sql
— 更新特定員工的部門ID
UPDATE Employees
SET DepartmentID = 3
WHERE EmployeeID = 101;
— 更新員工的多個列
UPDATE Employees
SET DepartmentID = 4, DateOfBirth = ‘1986-06-20’
WHERE EmployeeID = 102;
“`
DELETE (刪除資料)
DELETE 語句用於從資料表中刪除現有的行。
語法:
sql
DELETE FROM table_name
WHERE condition;
WHERE condition:(可選) 指定要刪除哪些行。如果省略,資料表中的所有行都將被刪除。
範例:
“`sql
— 刪除特定員工的記錄
DELETE FROM Employees
WHERE EmployeeID = 101;
— 刪除 DepartmentID 為 2 的所有員工
DELETE FROM Employees
WHERE DepartmentID = 2;
— 刪除 Employees 資料表中的所有記錄(資料表結構保留)
— DELETE FROM Employees;
“`
結論
本教程為您提供了TD SQL的入門知識,涵蓋了資料表的建立以及資料的增、刪、改、查等基本操作。掌握這些基礎知識是您進一步學習和使用Teradata資料庫的關鍵。SQL的世界廣闊而深奧,建議您在實踐中不斷探索,學習更進階的SQL功能,如聯結(JOIN)、聚合函數(Aggregate Functions)、子查詢(Subqueries)等,以充分發揮TD SQL在資料管理和分析中的強大能力。