Записывайте прописными буквами зарезервированные слова
Обоснование
Слова, набранные в верхнем регистре, воспринимаются как целое, а не как последовательность слогов или букв. Они притягивают взгляд и производят впечатление важности — именно на этом основано их применение в заголовках и вывесках. Типографы обозначают форму слова термином Боита, который описан в книге Сэнгера (1975). Представьте себе, что каждая буква окружена прямоугольной рамкой. В слове, набранном строчными буквами, эти рамки будут разной высоты и располагаться будут на разных уровнях (из-за надстрочных и подстрочных элементов букв). В результате, форма слова окажется “зубчатой”, словно оно построено из кирпичиков разного размера.
Форма слова, набранного прописными буквами, — всегда простой и ровный прямоугольник, который зрительно выделяется, даже будучи окруженным строчными буквами. Сравните выражения:
Select а, Ь, с from foobar where flob = 23;
и
SELECT a, b, с FROM Foobar WHERE flob = 23;
Видите, как легко выделить операторы при чтении? Еще быстрее код будет читаться при расположении каждой конструкции на отдельной строке:
SELECT a, b, с
FROM Foobar
WHERE flob = 23;
Впрочем, о правилах вертикального набора мы поговорим позже.
Исключения
Нет.
Ключевые слова бывают двух видов — зарезервированные и незарезервированные. Зарезервированные слова являются частью языка SQL Незарезервированные представляют собой имена метаданных, которые не приводят к сообщениям об ошибках в SQL-программе. В реальных приложениях они вряд ли будут применяться.
<ключевое слово ::= Зарезервированное слово> | <незарезервированное слово>
<незарезервированное слово> ::= ADA
| С | CATALOG_NAME | CHARACTER_SET_CATALOG | CHARACTER_SET_NAME
| CHARACTER_SET_SCHEMA | CLASS_ORIGIN | COBOL | COLLATI0N_CATALOG
| COLLATION.NAME | COLLATION_SCHEMA | COLUMN JIAME | COMMAND_FUNCTION
| COMMITTED
| CONDITION_NUMBER | CONNECTION_NAME | CONSTRAINT_CATALOG
| CONSTRAINT_NAME
| CONSTRAINT_SCHEMA | CURSOR_NAME
| DATA | DATETIME_INTERVAL_CODE
| DATETIME_INTERVAL_PRECISION | DYNAMIC_FUNCTION
| FORTRAN
| LENGTH
| MESSAGE_LENGTH | MESSAGE_OCTET_LENGTH | MESSAGE_TEXT | MORE | MUMPS
| NAME | NULLABLE | NUMBER
| PASCAL | PLI
| REPEATABLE | RETURNED_LENGTH | RETURNED_OCTET_LENGTH
| RETURNED_SQLSTATE
| ROW.COUNT
| SCALE | SCHEMA_NAME | SERIALIZABLE | SERVER_NAME | SUBCLASS_ORIGIN
| TABLE_NAME | TYPE
| UNCOMMITTED | UNNAMED
Зарезервированное слово> :: =
ABSOLUTE | ACTION | ADD | ALL | ALLOCATE | ALTER | AND
| ANY | ARE | AS | ASC
| ASSERTION | AT | AUTHORIZATION | AVG
| BEGIN | BETWEEN | BIT | BIT_LENGTH | BOTH | BY
| CASCADE | CASCADED | CASE | CAST | CATALOG | CHAR | CHARACTER
| CHAR_LENGTH
| CHARACTER_LENGTH | CHECK | CLOSE | COALESCE | COLLATE | COLLATION
| COLUMN | COMMIT | CONNECT | CONNECTION | CONSTRAINT
| CONSTRAINTS | CONTINUE
| CONVERT | CORRESPONDING | COUNT | CREATE | CROSS | CURRENT
| CURRENT_DATE | CURRENT_TIME | CURRENT_TIMESTAMP | CURRENT_USER
| CURSOR
| DATE | DAY | DEALLOCATE | DEC | DECIMAL | DECLARE | DEFAULT
| DEFERRABLE
| DEFERRED | DELETE | DESC | DESCRIBE | DESCRIPTOR | DIAGNOSTICS
| DISCONNECT | DISTINCT | DOMAIN | DOUBLE | DROP
| ELSE | END | END-EXEC | ESCAPE | EXCEPT | EXCEPTION
| EXEC | EXECUTE | EXISTS
| EXTERNAL | EX1RACT
| FALSE | FETCH | FIRST | FLOAT | FOR | FOREIGN | FOUND | FROM
| FULL
| GET | GLOBAL | GO | GOTO | GRANT | GROUP
| HAVING | HOUR
| IDENTITY | IMMEDIATE | IN | INDICATOR | INITIALLY | INNER | INPUT
| INSENSITIVE | INSERT | INT | INTEGER | INTERSECT | INTERVAL | INTO
| IS
| ISOLATION
| JOIN
| KEY
| LANGUAGE | LAST | LEADING | LEFT | LEVEL | LIKE | LOCAL | LOWER
| MATCH | MAX | MIN | MINUTE | MODULE | MONTH
| NAMES | NATIONAL | NATURAL | NCHAR | NEXT | NO | NOT | NULL
| NULLIF | NUMERIC
| OCTET_LENGTH | OF | ON | ONLY | OPEN | OPTION | OR
| ORDER | OUTER
| OUTPUT | OVERLAPS
| PAD | PARTIAL | POSITION | PRECISION | PREPARE | PRESERVE | PRIMARY
| PRIOR | PRIVILEGES | PROCEDURE | PUBLIC
| READ | REAL | REFERENCES | RELATIVE | RESTRICT | REVOKE | RIGHT
| ROLLBACK | ROWS
| SCHEMA | SCROLL | SECOND | SECTION | SELECT | SESSION
| SESSION_USER | SET
| SIZE | SMALLINT | SOME | SPACE | SQL | SQLCODE | SQLERROR | SQLSTATE
| SUBSTRING | SUM | SYSTEM_USER
| TABLE | TEMPORARY | THEN | TIME | TIMESTAMP | TIMEZONE_HOUR
| TIMEZONE_MINUTE
| TO | TRAILING | TRANSACTION | TRANSLATE | TRANSLATION | TRIM
| TRUE
| UNION | UNIQUE | UNKNOWN | UPDATE | UPPER | USAGE | USER | USING
| VALUE | VALUES | VARCHAR | VARYING | VIEW
| WHEN | WHENEVER | WHERE | WITH | WORK | WRITE
| YEAR
| ZONE
Специфические зарезервированные слова могут встречаться в конкретных реализациях Их тоже нужно набирать в верхнем регистре