Ключевые слова в выражениях на языке SQL могут записываться как прописными, так и строчными буквами, в одну или несколько строк. В конце выражения должна стоять точка с запятой (;). Однако во многих системах, обеспечивающих ввод, редактирование и отправку на выполнение SQL-выражений, в случае ввода одного такого выражения допускается не указывать признак окончания (;). Если же требуется выполнить блок из нескольких SQL-выражений, то они обязательно должны быть разделены точкой с запятой.
Все ключевые слова SQL (команды, операторы и проч.) являются зарезервированными и не должны использоваться в качестве имен таблиц, столбцов, переменных и т. п. Вот пример неправильного использования ключевых слов:
SELECT SELECT FROM WHERE WHERE SELECT=UPDATE;
Во всех языках программирования, а также в SQL важное место занимают поддерживаемые типы данных. Данные, которые хранятся в памяти компьютера и подвергаются обработке, можно отнести к различным типам. Понятие типа данных возникает естественным образом, когда необходимо применить к ним операции обработки. Например, операция умножения применяется к числам, т. е. к данным числового типа. А что получится, если умножить слово "Вася" на число 25? Поскольку трудно дать вразумительный ответ на этот вопрос, то напрашивается вывод: некоторые операции не следует применять к разнотипным данным. Мы также не знаем, что должно получиться в результате умножения слов "Саша" и "Маша", поэтому заключаем, что определенные операции вообще не применимы к данным некоторых типов.
С другой стороны, существуют операции, результат которых зависит от типа данных. Например, операция сложения, обозначаемая символом (+), может применяться и к двум числам, и к двум строкам, состоящим из произвольных слов. В первом случае результатом применения этой операции будет некоторое число, а во втором — строка, получающаяся путем приписывания второй строки к концу первой. В случае строк операцию сложения еще называют склейкойили конкатенацией. Операции, применимые к различным типам данных, но обозначаемые одним и тем же символом, называют перегруженными. Так, операция, обозначаемая символом (+), является перегруженной: применительно к числам она выполняет арифметическое сложение, а применительно к строкам символов — склейку.
Типы данных столбцов таблиц базы данных могут отличаться от типов данных, поддерживаемых SQL. Это обстоятельство необходимо учитывать при составлении SQL-запросов. Так, например, если в таблице Сотрудники столбец Зарплата определен по каким-либо причинам как символьный, то следующий запрос приведет к ошибке из-за несоответствия типов сравниваемых данных:
SELECT Фамилия FROM Сотрудники WHERE Зарплата > 25000;
Данный запрос пытается получить список всех сотрудников, у которых зарплата больше 25 000. Однако в таблице сотрудники столбец Зарплата содержит символьные, а не числовые данные. В условии запроса (оператор WHERE) сравниваются символьное и числовое значения. На практике данная проблема легко преодолима с помощью функции CAST () приведения значения к требуемому типу. Кроме того, между некоторыми типами столбцов таблицы и данных, участвующих в SQL-выражениях, существуют соответствия, допускающие их совместное использование. Такие типы называют согласованными.
Различные СУБД поддерживают несколько отличающиеся наборы типов данных для столбцов таблиц базы данных. Аналогичная ситуация и с типами данных, поддерживаемых различными версиями и реализациями SQL. Вместе с тем, всегда имеются типы данных, которые поддерживаются всеми реализациями SQL.
В спецификации SQL:2003 признаны пять предопределенных общих типов, внутри которых могут быть подтипы:
• строковый (символьный):
v CHARACTER (илиCHAR);
v CHARACTER VARYING (илиVARCHAR);
v CHARACTER LARGE OBJECT (илиCLOB);
• числовой:
v точные числовые типы:
1. INTEGER;
2. SMALLINT;
3. BIGINT;
4. NUMERIC;
5. DECIMAL;
v приблизительные числовые типы:
1. REAL;
2. DOUBLE PRECISION;
3. FLOAT;
• логический (булевский) — BOOLEAN;
• даты-времени:
v DATE;
v TIME WITHOUT TIME ZONE;
v TIME WITH TIME ZONE;
v TIMESTAMP WITHOUT TIME ZONE;
v TIMESTAMP WITH TIME ZONE;
• интервальный.
Кроме того, существуют особые типы: ROW (запись), ARRAY (массив) и MULTISET (мультимножество).