2012-05-08 5 views
2

'INDEX'가 ANSI SQL의 키워드인지 여부에 대한 조사를 해봤지만, 특히 2008 년과 2011 년 표준에 대해서는 어떤 행운이 없었습니다.'INDEX'는 (는) 올바른 SQL ANSI ISO 표준 키워드/예약어입니까?

이것이 유효한 ANSI ISO SQL 키워드인지 확실히 알고 있습니까?

+1

실용적인 관점에서 가장 중요한 것은 사용하는 DBMS의 키워드인지 확인하는 것입니다. (예외적으로 생각할 수도 있지만) – zerkms

답변

4

인덱스를 작성, 변경 또는 관리하는 데 사용되는 SQL 언어에 대한 ANSI 표준은 없습니다. 따라서 INDEX는 ANSI 표준에 따라 키워드 (예약어)가 아닙니다.

Kevin Kline은 그의 책 SQL in a Nutshell에서 나를 구체적으로 뒷받침합니다. 그는 이것을 색인 생성을위한 구문이 공급 업체마다 크게 다른 이유 중 하나로 지적합니다.

또 다른 정황적 인 증거로 다양한 공급 업체가 SQL 설명서에서 INDEX에 대한 설명이 ANSI 표준에 대한 확장임을 언급합니다. 예를 들어 IBM doc here for ALTER INDEX을 참조하십시오. 또한

이있는 ANSI SQL의 handy list은 예약 된 단어 -하지만 최대 보조 노트로 2003


: ANSI 인덱스에 관해서 전혀 언급 내가 본 유일한 시간 고유 색인 (종종 단순히 고유 제한 조건)이 Null 값을 처리하는 방법에 대해 이야기 할 때입니다. ANSI에 따르면 null은 null과 같지 않습니다. 따라서 고유 인덱스는 ANSI마다 서로 같지 않으므로 다중 null 값을 허용해야합니다. 일부 엔진은이 규칙을 따르며 다른 엔진은 그렇지 않습니다. 이 경우 ANSI 표준은 두 개의 널 값이 같거나 고유한지 여부만을 나타냅니다. 표준은 인덱스와 아무 관련이 없습니다. INDEX에는 비슷한 효과를 갖는 다른 ANSI 표준이있을 수 있지만이를 둘러싼 DDL에 대해서는 아무 것도 없습니다.

+1

* "일부 엔진은이 규칙을 따릅니다. ""SQL-Server "를 읽습니다. –

+0

필자는 Sybase가 널 (null)에 떨어지는 내 머리 꼭대기에서 확신하지 못했습니다! = null 문제가 있지만 MSSQL IS/주된 범인 - 필터링 된 색인이 도움이되었지만 (약간). – RThomas

+0

Sybase에 대해 확실하지 않습니다 (이 측면에서는 SQL Server와 동일한 트랩에있을 수도 있음). –

1

SQL을 대상으로 지정할 수있는 모든 데이터 소스가 '인덱스'개념을 지원하지 않으므로 색인이 의도적으로 SQL 표준에서 생략되었습니다. 예를 들어 MS Access SQL에서 CREATE TABLE 구문을 사용하여 SQL이 '테이블'로 간주하지만 Excel이 '명명 된 범위'로 간주하고 Excel 범위에서 액세스 테이블 인덱스를 만드는 새 MS Excel 통합 문서를 만들 수 있습니다 이치에 맞지 않는다.