Transact-SQL概述(SQL Server 2022)
新书速览|SQL Server 2022从入门到精通:视频教学超值版_sql server 2022 出版社-CSDN博客
《SQL Server 2022从入门到精通(视频教学超值版)(数据库技术丛书)》(王英英)【摘要 书评 试读】- 京东图书 (jd.com)
SQL Server数据库技术_夏天又到了的博客-CSDN博客
在前面的章节中,其实已经使用了Transact-SQL语言,只是没有系统地对该语言进行介绍。事实上,不管应用程序的用户界面如何,与SQL Server 实例通信的所有应用程序都通过将Transact-SQL 语句发送到服务器进行通信。
对数据库进行查询和修改操作的语言叫作SQL,其含义是结构化查询语言(Structured Query Language)。SQL有许多不同的类型,有3个主要的标准:①ANSI(American National Standards Institute,美国国家标准协会)SQL;②对ANSI SQL修改后在1992年采纳的标准,称为SQL92或SQL2;③最近的SQL99标准。SQL99标准从SQL2扩充而来并增加了对象关系特征和许多其他新功能。其次,各大数据库厂商提供了不同版本的SQL。这些版本的SQL支持原始的ANSI标准,而且在很大程度上支持新推出的SQL92标准。
Transact-SQL语言是SQL的一种实现形式,它包含标准的SQL语言部分。标准的SQL语句几乎完全可以在Transact-SQL语言中执行,因为包含这些标准的SQL语言来编写应用程序和脚本,所以提高了它们的可移植性。Transact-SQL语言在具有SQL的主要特点的同时,还增加了变量、运算符、函数、流程控制和注释等语言因素,使得Transact-SQL的功能更加强大。另外,在标准的ANSI SQL99外,Transact-SQL语言根据需要又增加了一些非标准的SQL语言。在有些情况下,使用非标准的SQL语言可以简化一些操作步骤。
4.1.1 什么是Transact-SQL
Transact-SQL是Microsoft公司在关系数据库管理系统SQL Server中的SQL3标准的实现,是微软对SQL的扩展。在SQL Server中,所有与服务器实例的通信都是通过发送Transact-SQL语句到服务器来实现的。根据其完成的具体功能,可以将Transact-SQL语句分为四大类,分别为数据操作语句、数据定义语句、数据控制语句和一些附加的语言元素。
数据操作语句:
SELECT,INSERT,DELETE,UPDATE
数据定义语句:
CREATE TABLE,DROP TABLE,ALTER TABLE,CREATE VIEW,
DROP VIEW,CREATE INDEX,DROP INDEX,CREATE PROCEDURE
ALTER PROCEDURE,DROP PROCEDURE,CREATE TRIGGER,
ALTER TRIGGER,DROP TRIGGER
数据控制语句:
GRANT,DENY,REVOKE
附加的语言元素:
BEGIN TRANSACTION/COMMIT,ROLLBACK,SET TRANSACTION,
DECLARE OPEN,FETCH,CLOSE,EXECUTE
4.1.2 Transact-SQL语法的约定
表4-1列出了Transact-SQL参考的语法关系图中使用的约定,并进行了说明。
表4-1 语法约定
约 定 | 说 明 |
大写 | Transact-SQL关键字 |
斜体 | 用户提供的Transact-SQL语法的参数 |
粗体 | 数据库名、表名、列名、索引名、存储过程、实用工具、数据类型名以及必须按所显示的原样输入的文本 |
下画线 | 指示当语句中省略了带下画线的值的子句时,应用的默认值 |
|(竖线) | 分隔括号或大括号中的语法项。只能使用其中一项 |
[ ](方括号) | 可选语法项。不要输入方括号 |
{ }(花括号) | 必选语法项。不要输入花括号 |
[,...n] | 指示前面的项可以重复n次。各项之间以逗号分隔 |
[...n] | 指示前面的项可以重复n次。每一项由空格分隔 |
; | Transact-SQL语句终止符。虽然在此版本的SQL Server中大部分语句不需要分号,但将来的版本中需要 |
<label> ::= | 语法块的名称。此约定用于对可在语句中的多个位置使用的过长语法段或语法单元进行分组和标记。可使用语法块的每个位置,由括在尖括号内的标签指示:<标签> |
除非另外指定,否则所有对数据库对象名的Transact-SQL引用将由4部分名称组成,格式如下:
server_name .[database_name].[schema_name].object_name
| database_name.[schema_name].object_name
| schema_name.object_name
| object_name
- server_name:指定链接的服务器名称或远程服务器名称。
- database_name:表示如果对象驻留在SQL Server 的本地实例中,则指定SQL Server数据库的名称。如果对象在链接服务器中,则database_name将指定OLE DB目录。
- schema_name:表示如果对象在SQL Server 数据库中,则指定包含对象的架构的名称。如果对象在链接服务器中,则schema_name将指定 OLE DB 架构名称。
- object_name:表示对象的名称。
引用某个特定对象时,不一定要指定服务器、数据库和架构供SQL Server数据库引擎标识该对象。但是,如果找不到对象,就会返回错误消息。
除使用时完全限定引用时的4个部分外,在引用时若要省略中间节点,则需要使用句点来指示这些位置。表4-2显示了引用对象名的有效格式。
表4-2 引用对象名的有效格式
引用对象名的格式 | 说 明 |
server . database . schema . object | 4个部分的名称 |
server . database .. object | 省略架构名称 |
server .. schema . object | 省略数据库名称 |
server ... object | 省略数据库和架构名称 |
database . schema . object | 省略服务器名 |
database .. object | 省略服务器和架构名称 |
schema . object | 省略服务器和数据库名称 |
object | 省略服务器、数据库和架构名称 |
许多代码示例用字母N作为Unicode字符串常量的前缀。如果没有N前缀,则字符串被转换为数据库的默认代码页。此默认代码页可能不识别某些字符。