文章目录
- 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
:不允许操作(默认值,会报错)
通过主键和外键的设置,可以有效保证数据库中数据的完整性和一致性。