Я в основном согласен с мнением, что ключевые слова не должны быть разрешены в качестве идентификаторов. Большинство современных вычислительных языков имеют 20 или, может быть, 30 ключевых слов, и в этом случае введение моратория на их использование в качестве идентификаторов вполне разумно. К сожалению, SQL происходит из старой школы языков COBOL («вычислительные языки должны быть как можно ближе к английскому»). Следовательно, SQL (как и COBOL) имеет несколько сотен ключевых слов .
Я не помню, говорит ли стандарт SQL что-либо о том, должны ли зарезервированные слова быть разрешенными в качестве идентификаторов, но, учитывая обширный (чрезмерный!) Словарь, неудивительно, что несколько реализаций SQL позволяют это. *
Сказав, что использование ключевых слов в качестве идентификаторов не так глупо, как сама концепция идентификаторов в кавычках в SQL (и они не относятся к DB2). Разрешить использование чувствительных к регистру идентификаторов - это одно, а заключенные в кавычки идентификаторы допускают всякую чепуху, включая пробелы, диакритические знаки и в некоторых реализациях (да, включая DB2) управляющие символы! Попробуйте следующее, например:
CREATE TABLE "My
Tablé" ( A INTEGER NOT NULL );
Да, это разрыв строки в середине идентификатора вместе с электронным острым знаком в конце ... (что приводит к интересным предположениям о том, какая кодировка используется для метаданных базы данных и, следовательно, не является ли Unicode например, база данных разрешает определение таблицы, содержащей имена столбцов на японском языке).