切换导航
简历
工具
演示
查询
导航菜单
服务端
30
前端
114
数据库
82
进阶开发
8
桌面程序
2
QA
15
软件使用
36
规范协议
5
操作系统
11
AI
0
复用资源
6
硬件
0
标签
SQL Server
Redis
MySQL
其它
Oracle
外部链接
.NET Core SDK和运行时安装包
淘宝 NPM 镜像
查询网
Tables Generator线上表格转换工具
引用cdn在线脚本和样式
首页
数据库
SQL Server T-SQL 微软官方文档中 语言元素 语法约定说明
[TOC] ## SQL Server T-SQL 语言元素 语法约定 这篇内容可以帮助查阅微软关于SQL Server相关的文档,里面介绍了微软文档中对数据库语法的一些约定 **适用于:**Microsoft Fabric、Warehouse 中的 SQL Server、Azure SQL 数据库、Azure SQL 托管实例、Azure Synapse、Analytics Analytics Platform System (PDW)、SQL Analytics 终结点 ### T-SQL 语法约定说明表 |项|说明| |--|--| |大写|T-SQL 关键字| |斜体|用户提供的 T-SQL 语法的参数| |粗体|完全按显示原样键入数据库名称、表名称、列名、索引名称、存储过程、实用工具、数据类型名称和文本。| ||(竖线)|分隔括号或大括号中的语法项。 只能使用其中一项。| |[ ](方括号)|可选语法项。| |{}(大括号)|必选语法项。 不要键入大括号。| |[ , ...n ]|指示前面的项可以重复 n 次。 匹配项由逗号分隔。| |[ ...n ]|指示前面的项可以重复 n 次。 每一项由空格分隔。| |;|Transact-SQL 语句终止符。 虽然此版本的 SQL Server 中大部分语句都不需要分号,但今后发布的版本需要分号。| |::=|语法块的名称。 使用此约定,可以对能在一条语句中的多个位置使用的过长语法段或语法单元进行分组和标记。 可使用语法块的各个位置用括在尖括号内的标签指明:`<label>`。<br>集是表达式的集合,例如 <分组集>;列表是集的集合,例如 <组合元素列表>。| <hr> ### 对象名称的组成部分 数据库对象名的 T-SQL 引用有下面四种格式 + <mark>server_name.[database_name].[schema_name].object_name</mark> + <mark>database_name.[schema_name].object_name</mark> + <mark>schema_name.object_name</mark> + <mark>object_name</mark> >** 备注:**对象名组成中,server_name、database_name、schema_name 都可以省略,但object_name不能,引用某个特定对象时,不必总是指定服务器、数据库和架构,SQL Server 数据库引擎 也能标识对象。 不过,如果找不到对象,便会返回错误 **建议:**为了避免名称解析错误,建议指定架构范围内的对象时加上架构名称 **简写示例:**名称中间省略时,可以使用英文`.`代替,开始位置省略可以直接不写,`database_name..object_name` 这是省略了框架名称 组成部分说明表 |组成部分|说明| |--|--| |server_name|指定链接的服务器名称或远程服务器名称,例如在MSSM客户端中看到的服务器对象| |database_name|如果对象驻留在 SQL Server 的本地实例中,则指定 SQL Server 数据库的名称。 如果对象在链接服务器中,则 database_name 将指定 OLE DB 目录| |schema_name|如果对象在 SQL Server 数据库中,则指定包含对象的架构的名称。 如果对象在链接服务器中,则 schema_name 将指定 OLE DB 架构名称| |object_name|对象的名称| > **补充:** OLE DB(Object Linking and Embedding, Database)目录通常指的是 OLE DB 提供者在数据库元数据层面上维护的目录信息。这些信息可以包括数据库的表、视图、列、索引、存储过程等的描述。OLE DB 提供者通过访问这些目录信息来了解底层数据源的结构。 在 OLE DB 架构中,目录信息是由数据源(DataSource)对象提供的,并且可以通过查询特定的目录视图(如 DBSCHEMA_TABLES、DBSCHEMA_COLUMNS 等)来获取。这些目录视图是 OLE DB 定义的一组标准视图,用于统一表示不同数据源的元数据。 至于缓存,OLE DB 并不直接定义缓存机制,但是应用程序或中间件(如连接池或数据访问层)可以实现缓存策略来提高性能。例如,一个 OLE DB 提供者可能会缓存目录信息,以避免每次查询都去数据库中重新加载元数据,这样可以减少 I/O 操作并加快响应速度。 内存方面,OLE DB 提供者和消费者(应用程序)在操作数据时,通常会在内存中创建数据缓冲区,用于暂存读取的数据或即将写入的数据。这些缓冲区可以优化数据传输和处理效率。 总的来说,OLE DB 目录是指数据源的元数据,而缓存和内存使用则取决于具体实现,可以用来优化数据访问和处理流程。 ### 关于官方 T-SQL 示例说明 在官方的 T-SQL 参考系列文档中,文档提供的示例都已使用 SQL Server Management Studio 在 `ANSI_NULLS`、`ANSI_NULL_DFLT_ON`、`ANSI_PADDING`、`ANSI_WARNINGS`、`CONCAT_NULL_YIELDS_NULL`、`QUOTED_IDENTIFIER` 选项的默认设置进行了测试: T-SQL 参考系列文档中的大多数代码示例都已在运行区分大小写排序顺序的服务器上进行了测试。 测试服务器通常运行 ANSI/ISO 1252 代码页。 许多代码示例用字母 N 作为 Unicode 字符串常量的前缀。 如果没有 N 前缀,则字符串会被转换为数据库的默认代码页(即ANSI/ISO 1252 代码页)。 此默认代码页可能不识别某些字符。 > **补充:** ANSI/ISO 1252 代码页通常指的是 Windows-1252,这是一个8位字符编码方案,由Microsoft设计,用于显示和存储西欧语言中的拉丁字母字符。虽然它的名字中包含“ANSI”和“ISO”,但实际上它并不直接关联到任何特定的ANSI标准或ISO标准,而是由Microsoft定义的一个特定的代码页。 > Windows-1252与ISO 8859-1(也被称为Latin-1)非常相似,两者都覆盖了基本的拉丁字母和一些额外的欧洲语言特殊字符。然而,Windows-1252与ISO 8859-1在某些字符的映射上存在差异,特别是在128至159的代码点上。Windows-1252在这一范围内定义了一些额外的字符,如: + 欧元符号(€)在代码点164处 + 一些箭头、度量单位和其他符号 > ISO 8859-1在这些位置保留了未定义的状态,这意味着它将这些位置留空,而不指定任何特定的字符。 在历史上,Windows-1252因为其在Microsoft Windows操作系统中的广泛使用而变得流行。尽管如此,随着Unicode(尤其是UTF-8编码)的普及,Windows-1252的使用已经逐渐减少,因为它只能表示有限的字符集,而无法覆盖全球所有语言和字符的需求。 总之,Windows-1252(有时错误地被称为ANSI编码)是一种8位编码,主要用于西欧语言,但在Unicode成为标准后,它的使用正在逐步减少。 **SQL Server Management Studio 几个选项(这些选项都是SQL Server中的T-SQL兼容性设置,它们影响数据库查询的行为和结果)设置作用** |选项|说明| |--|--| |ANSI_NULLS|当ANSI_NULLS设置为ON时,比较运算符(如=、<、>)会按照SQL标准对待NULL值。即,任何涉及NULL的比较都会返回NULL,而不是0或1。例如,NULL = NULL 将返回 NULL 而不是 TRUE<br/>如果设置为OFF,则NULL值会被视为等于任何其他NULL值,并且不等于任何非NULL值| |ANSI_NULL_DFLT_ON|这个设置决定了当没有显式指定NULL值的默认行为时,SQL Server是否应该遵守SQL标准。如果设置为ON,那么在INSERT语句中没有提供值的列将被插入NULL,除非该列有DEFAULT约束或者NOT NULL约束| |ANSI_PADDING|当这个选项设置为ON时,字符串的比较和排序会考虑尾部的空格。如果设置为OFF,尾部的空格会被忽略。这会影响字符串函数(如RIGHT、LEFT、REPLICATE)以及字符串的比较。| |ANSI_WARNINGS|当设置为ON时,SQL Server会生成警告消息,指出某些可能产生意外结果的操作,比如算术溢出或除以零。如果设置为OFF,这些警告将不会被生成。| |CONCAT_NULL_YIELDS_NULL|当这个选项设置为ON时,如果参与字符串连接的任意一方是NULL,那么结果就是NULL。如果设置为OFF,NULL将被当作空字符串处理| |QUOTED_IDENTIFIER|这个设置控制是否允许使用双引号(")来引用标识符(如表名、列名)。如果设置为ON,双引号将被视为SQL标准的标识符分隔符;如果设置为OFF,则双引号将被视为常规的字符串分隔符| 这些设置通常可以在SQL Server Management Studio中通过更改数据库属性或在T-SQL脚本中使用SET语句进行更改。它们对查询结果的影响是显著的,因此在开发和部署数据库应用时需要特别注意这些设置的正确配置 ## 参考 > 微软官方: [Transact-SQL 语法约定 (Transact-SQL)](https://learn.microsoft.com/zh-cn/sql/t-sql/language-elements/transact-sql-syntax-conventions-transact-sql?view=sql-server-ver16)
扫一扫手机看
点击排行
windows 文件资源管理器使用
Layui 弹窗open使用说明
SQL Server 中字符串函数使用
C# 使用QQ邮箱代理做邮件接收功能
SQL Server关于apply的两种形式cross apply 和 outer apply
ASP.NET MVC 模型的自定义验证
nvm安装及常用命令
SQL Server 中数据类型转换
SQL Server 中WITH AS短语的使用
IE浏览器下AJAX缓存问题导致数据不更新的解决办法
订阅号