文章目錄
- 1. 數據庫操作
- 2. 表操作
- 3. 數據插入、更新、刪除
- 4. 數據查詢
- 5. 存儲過程
- 6. 事務處理
- 7、如何使用T-SQL在表中設置主鍵和外鍵?
- 1. 設置主鍵(PRIMARY KEY)
- 方法1:創建表時定義主鍵
- 方法2:通過ALTER TABLE添加主鍵
- 2. 設置外鍵(FOREIGN KEY)
- 方法1:創建表時定義外鍵
- 方法2:通過ALTER TABLE添加外鍵
- 3. 命名約束(推薦)
- 4、注意事項:
T-SQL(Transact-SQL)是SQL Server專用的SQL擴展語言,以下是一些常用的T-SQL命令示例:
1. 數據庫操作
-- 創建數據庫
CREATE DATABASE MyDatabase;-- 切換數據庫
USE MyDatabase;-- 刪除數據庫
DROP DATABASE MyDatabase;
2. 表操作
-- 創建表
CREATE TABLE Customers (CustomerID INT PRIMARY KEY IDENTITY(1,1),Name VARCHAR(50) NOT NULL,Email VARCHAR(100) UNIQUE,RegistrationDate DATETIME DEFAULT GETDATE()
);-- 修改表(添加列)
ALTER TABLE Customers
ADD Phone VARCHAR(20);-- 刪除表
DROP TABLE Customers;
3. 數據插入、更新、刪除
-- 插入數據
INSERT INTO Customers (Name, Email)
VALUES ('張三', 'zhangsan@example.com'),('李四', 'lisi@example.com');-- 更新數據
UPDATE Customers
SET Email = 'newemail@example.com'
WHERE CustomerID = 1;-- 刪除數據
DELETE FROM Customers
WHERE CustomerID = 2;
4. 數據查詢
-- 基本查詢
SELECT Name, Email
FROM Customers
WHERE RegistrationDate > '2023-01-01'
ORDER BY Name ASC;-- 聚合查詢
SELECT COUNT(*) AS TotalCustomers,YEAR(RegistrationDate) AS RegYear
FROM Customers
GROUP BY YEAR(RegistrationDate)
HAVING COUNT(*) > 10;-- 連接查詢
SELECT c.Name, o.OrderID
FROM Customers c
INNER JOIN Orders o ON c.CustomerID = o.CustomerID;
5. 存儲過程
-- 創建存儲過程
CREATE PROCEDURE GetCustomerByID@ID INT
AS
BEGINSELECT * FROM Customers WHERE CustomerID = @ID;
END;-- 執行存儲過程
EXEC GetCustomerByID @ID = 1;
6. 事務處理
BEGIN TRANSACTION;BEGIN TRYINSERT INTO Orders (CustomerID, OrderDate) VALUES (1, GETDATE());INSERT INTO OrderDetails (OrderID, ProductID, Quantity) VALUES (SCOPE_IDENTITY(), 101, 5);COMMIT TRANSACTION;
END TRY
BEGIN CATCHROLLBACK TRANSACTION;SELECT ERROR_MESSAGE() AS ErrorMessage;
END CATCH;
這些是T-SQL中最常用的基本命令,實際使用中可以根據具體需求進行組合和擴展。T-SQL還支持游標、觸發器、函數等更復雜的數據庫操作。
7、如何使用T-SQL在表中設置主鍵和外鍵?
在T-SQL中,可以通過CREATE TABLE
或ALTER TABLE
語句來設置主鍵(PRIMARY KEY)和外鍵(FOREIGN KEY),以下是具體實現方法:
1. 設置主鍵(PRIMARY KEY)
主鍵用于唯一標識表中的每條記錄,具有唯一性且不能為NULL。
方法1:創建表時定義主鍵
CREATE TABLE Customers (CustomerID INT NOT NULL,Name VARCHAR(50) NOT NULL,Email VARCHAR(100),-- 定義主鍵(單個字段)PRIMARY KEY (CustomerID)
);-- 復合主鍵(多個字段組合唯一)
CREATE TABLE OrderDetails (OrderID INT NOT NULL,ProductID INT NOT NULL,Quantity INT,-- 定義復合主鍵PRIMARY KEY (OrderID, ProductID)
);
方法2:通過ALTER TABLE添加主鍵
-- 先創建表
CREATE TABLE Products (ProductID INT NOT NULL,ProductName VARCHAR(100) NOT NULL
);-- 后期添加主鍵
ALTER TABLE Products
ADD PRIMARY KEY (ProductID);
2. 設置外鍵(FOREIGN KEY)
外鍵用于建立兩個表之間的關聯,確保引用完整性(即外鍵值必須在被引用表的主鍵中存在)。
方法1:創建表時定義外鍵
CREATE TABLE Orders (OrderID INT NOT NULL PRIMARY KEY,OrderDate DATETIME,CustomerID INT,-- 定義外鍵,關聯Customers表的CustomerIDFOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)-- 可選:刪除被引用記錄時的處理規則ON DELETE SET NULL -- 當客戶被刪除時,訂單的CustomerID設為NULLON UPDATE CASCADE -- 當客戶ID更新時,訂單的CustomerID同步更新
);
方法2:通過ALTER TABLE添加外鍵
-- 先創建表
CREATE TABLE OrderDetails (OrderID INT NOT NULL,ProductID INT NOT NULL,Quantity INT,PRIMARY KEY (OrderID, ProductID)
);-- 后期添加外鍵
ALTER TABLE OrderDetails
ADD -- 關聯Orders表FOREIGN KEY (OrderID) REFERENCES Orders(OrderID) ON DELETE CASCADE,-- 關聯Products表FOREIGN KEY (ProductID) REFERENCES Products(ProductID) ON DELETE CASCADE;
3. 命名約束(推薦)
為約束指定名稱可以更方便地管理(如后期刪除約束):
CREATE TABLE Orders (OrderID INT NOT NULL,CustomerID INT,-- 命名主鍵CONSTRAINT PK_Orders PRIMARY KEY (OrderID),-- 命名外鍵CONSTRAINT FK_Orders_Customers FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
);-- 刪除約束的方法
ALTER TABLE Orders
DROP CONSTRAINT FK_Orders_Customers;
4、注意事項:
- 主鍵字段必須唯一且非空,一個表只能有一個主鍵(可由多個字段組成)。
- 外鍵字段的類型必須與被引用的主鍵字段類型一致。
ON DELETE
和ON UPDATE
用于指定當被引用的記錄被刪除或更新時的處理規則,常用選項有:CASCADE
:級聯操作(刪除/更新子表中對應記錄)SET NULL
:將子表中對應字段設為NULL(需字段允許NULL)NO ACTION
:不允許操作(默認值,會報錯)
通過主鍵和外鍵的設置,可以有效保證數據庫中數據的完整性和一致性。