菜鸟科技网

TSQL命令有哪些基础语法与用法?

T-SQL 是 Microsoft 对 SQL 标准的扩展,是 SQL Server 数据库的核心语言,它不仅包含标准的 SQL 语句,还增加了变量、流程控制、函数、错误处理等强大的编程特性。

TSQL命令有哪些基础语法与用法?-图1
(图片来源网络,侵删)

为了方便学习和理解,我将 T-SQL 命令按功能进行分类,并提供每个分类下的核心命令、语法示例和详细说明。


T-SQL 命令分类概览

  1. 数据查询语言 - 用于从数据库中检索数据。
  2. 数据操作语言 - 用于在表中插入、更新和删除数据。
  3. 数据定义语言 - 用于创建、修改和删除数据库对象(如表、视图、索引等)。
  4. 数据控制语言 - 用于控制数据库对象的访问权限。
  5. 事务控制语言 - 用于管理数据库事务。
  6. 流程控制语言 - 用于编写复杂的脚本和存储过程。
  7. 其他重要命令 - 如变量声明、输出等。

数据查询语言

这是最常用、最核心的命令。

命令 描述 语法示例
SELECT 从数据库表中检索数据。 SELECT column1, column2 FROM table_name WHERE condition;
FROM 指定要查询的表。 SELECT * FROM Employees;
WHERE 根据指定条件过滤结果集。 SELECT * FROM Employees WHERE Department = 'Sales';
JOIN 根据相关列将两个或多个表的行结合起来。 SELECT E.Name, D.DepartmentName FROM Employees E JOIN Departments D ON E.DeptID = D.ID;
GROUP BY 将结果集按一个或多个列进行分组,通常与聚合函数一起使用。 SELECT Department, COUNT(*) AS EmployeeCount FROM Employees GROUP BY Department;
HAVING GROUP BY 生成的组进行过滤,类似于 WHERE 但用于组。 SELECT Department, AVG(Salary) AS AvgSalary FROM Employees GROUP BY Department HAVING AVG(Salary) > 60000;
ORDER BY 对结果集进行升序 (ASC) 或降序 (DESC) 排序。 SELECT * FROM Employees ORDER BY HireDate DESC;
UNION / UNION ALL 合并两个或多个 SELECT 语句的结果集。UNION 会去除重复项,UNION ALL 不会。 SELECT City FROM Customers UNION SELECT City FROM Suppliers;
DISTINCT 返回唯一不同的值。 SELECT DISTINCT City FROM Customers;
TOP / OFFSET-FETCH 限制返回的行数。TOP 是 SQL Server 特有的,OFFSET-FETCH 是标准 SQL,功能更强大。 SELECT TOP 5 * FROM Employees ORDER BY Salary DESC;
SELECT * FROM Employees ORDER BY Salary OFFSET 10 ROWS FETCH NEXT 5 ROWS ONLY;

数据操作语言

用于对表中的数据进行增、删、改操作。

命令 描述 语法示例
INSERT INTO 向表中插入新的一行或多行数据。 INSERT INTO Employees (ID, Name, Department) VALUES (1, 'John Doe', 'IT');
INSERT INTO Employees (ID, Name, Department) VALUES (2, 'Jane Smith', 'HR'), (3, 'Mike Johnson', 'IT');
UPDATE 更新表中已存在的数据。 UPDATE Employees SET Salary = 65000 WHERE Name = 'John Doe';
DELETE FROM 从表中删除一行或多行数据。 DELETE FROM Employees WHERE Name = 'John Doe';

重要提示UPDATEDELETE 操作前,强烈建议先使用 SELECT 语句检查 WHERE 条件是否正确,以免误操作。

TSQL命令有哪些基础语法与用法?-图2
(图片来源网络,侵删)
-- 先检查
SELECT * FROM Employees WHERE Name = 'John Doe';
-- 确认无误后,再执行
-- DELETE FROM Employees WHERE Name = 'John Doe';

数据定义语言

用于定义和管理数据库的结构。

命令 描述 语法示例
CREATE 创建数据库或数据库对象。 CREATE TABLE Employees (ID INT PRIMARY KEY, Name NVARCHAR(100), Salary DECIMAL(18, 2));
CREATE PROCEDURE usp_GetEmployees AS ...
ALTER 修改现有数据库对象的结构。 ALTER TABLE Employees ADD HireDate DATE;
ALTER TABLE Employees ALTER COLUMN Salary DECIMAL(18, 0);
DROP 删除数据库或数据库对象。 DROP TABLE Employees;
DROP PROCEDURE usp_GetEmployees;
TRUNCATE TABLE 删除表中的所有行,但保留表结构,比 DELETE 更快,且不触发触发器,不可回滚。 TRUNCATE TABLE LogTable;
RENAME 重命名表(SQL Server 中使用 sp_rename 存储过程)。 EXEC sp_rename 'Employees', 'Staff';

数据控制语言

用于控制用户对数据库对象的访问权限。

命令 描述 语法示例
GRANT 授予用户或角色特定的权限。 GRANT SELECT, INSERT ON Employees TO User_A;
REVOKE 撤销之前授予的权限。 REVOKE INSERT ON Employees FROM User_A;
DENY 显式拒绝用户或角色获得某个权限,即使他们通过其他角色获得了该权限。 DENY SELECT ON Employees TO User_B;

事务控制语言

用于管理事务,确保数据的一致性。

命令 描述 语法示例
BEGIN TRANSACTION 显式开始一个事务。 BEGIN TRANSACTION;
COMMIT TRANSACTION 提交当前事务,将所有更改永久保存到数据库。 COMMIT TRANSACTION;
ROLLBACK TRANSACTION 回滚当前事务,撤销自事务开始以来所做的所有更改。 ROLLBACK TRANSACTION;
SAVE TRANSACTION 在事务中设置一个保存点,可以部分回滚。 SAVE TRANSACTION MySavePoint;

ROLLBACK TRANSACTION MySavePoint;

流程控制语言

这些是 T-SQL 的编程特性,用于编写复杂的逻辑。

TSQL命令有哪些基础语法与用法?-图3
(图片来源网络,侵删)
命令/关键字 描述 语法示例
BEGIN...END 定义一个代码块,将多条语句组合在一起。 IF @Salary > 100000 BEGIN ... END
IF...ELSE 条件判断,如果条件为真,执行 IF 后的代码;否则执行 ELSE 后的代码。 IF @Age >= 18 PRINT 'Adult'; ELSE PRINT 'Minor';
WHILE 当条件为真时,重复执行一个代码块。 WHILE @Counter < 10 BEGIN ... SET @Counter = @Counter + 1 END
BREAK 退出 WHILE 循环。 WHILE @Counter < 10 BEGIN IF @Counter = 5 BREAK; ... END
CONTINUE 跳过当前循环的剩余部分,直接进入下一次循环。 WHILE @Counter < 10 BEGIN IF @Counter % 2 = 0 CONTINUE; ... END
CASE 实现多路分支,类似于其他编程语言中的 switch-caseif-else if SELECT Name, Salary, CASE WHEN Salary > 100000 THEN 'High' WHEN Salary > 50000 THEN 'Medium' ELSE 'Low' END AS SalaryLevel FROM Employees;
TRY...CATCH 错误处理机制。TRY 块中的代码如果出错,会立即跳转到 CATCH 块执行。 BEGIN TRY -- 可能出错的代码 END TRY BEGIN CATCH -- 错误处理代码 END CATCH

其他重要命令

命令/关键字 描述 语法示例
DECLARE 声明一个局部变量。 DECLARE @EmployeeCount INT;
SET / SELECT 为变量赋值。SET 用于为单个变量赋值,SELECT 可以为多个变量赋值或从查询结果中赋值。 SET @EmployeeCount = 10;
SELECT @EmployeeCount = COUNT(*) FROM Employees;
PRINT 将消息返回到客户端。 PRINT 'Hello, World!';
RAISERROR / THROW 抛出一个错误。THROW 是更现代、推荐的方式。 THROW 50000, 'An error occurred.', 1;
EXEC / EXECUTE 执行一个存储过程、标量值函数或字符串。 EXEC usp_GetEmployee 1;
EXEC('SELECT * FROM Employees');

T-SQL 是一个功能极其丰富的语言,掌握这些命令是使用 SQL Server 的基础,对于初学者,建议从 DML (SELECT, INSERT, UPDATE, DELETE) 和基本的 DDL (CREATE TABLE) 开始,然后逐步学习 JOINs聚合函数 (GROUP BY, HAVING),最后再深入到 存储过程事务错误处理 等高级主题。

希望这份详细的列表能帮助你更好地理解和使用 T-SQL!

分享:
扫描分享到社交APP
上一篇
下一篇