理解SQL定义语法

5

我在编写SQL方面还是一个初学者,但我想变得更好。其中一件我从未真正理解的事情是如何解释任何给定对象的构建语法。下面是从https://msdn.microsoft.com/en-us/library/ms190312.aspx中获取的OPENROWSET定义的示例。我了解符号“|”表示“OR”,但不确定其他标记。有没有一个好地方可以学习如何解释这个?

OPENROWSET 
( { 'provider_name' , { 'datasource' ; 'user_id' ; 'password' 
   | 'provider_string' } 
   , {   [ catalog. ] [ schema. ] object 
       | 'query' 
     } 
   | BULK 'data_file' , 
       { FORMATFILE = 'format_file_path' [ <bulk_options> ]
       | SINGLE_BLOB | SINGLE_CLOB | SINGLE_NCLOB }
} ) 

<bulk_options> ::=
   [ , CODEPAGE = { 'ACP' | 'OEM' | 'RAW' | 'code_page' } ] 
   [ , ERRORFILE = 'file_name' ]
   [ , FIRSTROW = first_row ] 
   [ , LASTROW = last_row ] 
   [ , MAXERRORS = maximum_errors ] 
   [ , ROWS_PER_BATCH = rows_per_batch ]
   [ , ORDER ( { column [ ASC | DESC ] } [ ,...n ] ) [ UNIQUE ]

5
请看这个链接:https://msdn.microsoft.com/zh-cn/library/ms177563.aspx。 - UnhandledExcepSean
1
@Ghost的回复是最佳答案。 - Philip Kelley
[ , ORDER ( { column [ ASC | DESC ] } [ ,...n ] ) [ UNIQUE ] ] 这里缺少一个] - Lukasz Szozda
2个回答

4
在每个涉及 SQL Server 的Microsoft Docs页面上(甚至是OPENROWSET相关的页面),都有一个名为Transact-SQL Syntax Conventions的链接(@Ghost在评论中发布了它)。

Transact-SQL Syntax Conventions link

这个链接将引导您到所寻找的SQL语法约定说明页面。


3
我认为理解这个语法最简单的方法是通过可视化Railroad Diagram

如何使用:

  1. 从文档中获取语法
  2. 将其粘贴到由Colin Daley编写的语法转换器
  3. 您可能需要手动更正一些错误(例如缺少括号,''
  4. 单击 生成Railroad Diagram
  5. 通过从开始到结束移动来学习

enter image description here

使用以下工具生成图像:http://bottlecaps.de/rr/ui


您还可以搜索SQL ServerRailroad Diagrams

SQL Server CREATE TABLE syntax diagrams

最重要的语法:

  • 可选项用方括号括起来
  • 表达式组用花括号括起来
  • |是二元运算符,表示“或”。

2
那个答案比我的准确多了!谢谢你的提示!我会把这个网站分享给刚开始学习SQL的同事们。 - gofr1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接