В SQL имеется около сорока инструкций (наиболее важные и часто используемые из них представлены в таблицах ниже). Каждая из них "просит" СУБД выполнить определенное действие, например извлечь данные, создать таблицу или добавить в таблицу новые данные. Все инструкции SQL имеют подобную структуру, которая изображена на рис. 1.
Инструкции SQL для обработки данных
| Извлекает данные из базы данных |
| Добавляет новые строки в базу данных |
| Обновляет данные, имеющиеся в базе данных |
| Добавляет/обновляет/удаляет новые и старые строки на основе условий |
| Удаляет строки из базы данных |
Команды SQL по Определению данных
| Добавляет новую таблицу в базу данных |
| Удаляет таблицу из базы данных |
| Изменяет структуру существующей таблицы |
| Добавляет новое представление в базу данных |
| Удаляет представление из базы данных |
| Создает индекс для столбца |
| Удаляет индекс столбца |
| Добавляет новую схему в базу данных |
| Удаляет схему из базы данных |
| Добавляет новый домен значений данных |
| Изменяет определение домена |
| Удаляет домен из базы данных |
Инструкции SQL по Управлению доступом
| Предоставляет пользователю привилегии доступа |
| Отменяет пользовательские привилегии доступа |
| Добавляет в базу данных новую роль |
| Предоставляет роль, содержащую привилегии доступа |
| Удаляет роль из базы данных |
Инструкции SQL по Управлению транзакциями
| Завершает текущую транзакцию |
| Отменяет текущую транзакцию |
| Определяет характеристики доступа к данным в текущей транзакции |
| Явно начинает новую транзакцию |
| Устанавливает точку восстановления транзакции |
Команды Программного SQL
| Определяет курсор запроса |
| Возвращает описание плана доступа к данным в запросе |
| Открывает курсор для получения результатов запроса |
| Извлекает строку из результатов запроса |
| Закрывает курсор |
| Подготавливает инструкцию SQL к динамическому выполнению |
| Динамически выполняет инструкцию SQL |
| Описывает подготовленный запрос |
Рис. 1. Структура инструкции SQL
Каждая инструкция SQL начинается с команды, т.е. ключевого слова, описывающего действие, выполняемое инструкцией. Типичными командами являются CREATE
(создать), INSERT
(добавить), delete (удалить) и COMMIT
(зафиксировать). После команды идет одно или несколько предложений. Предложение может описывать данные, с которыми работает инструкция, или содержать уточняющую информацию о действии, выполняемом инструкцией. Каждое предложение также начинается с ключевого слова, такого как WHERE
(где), FROM
(откуда), into (куда) или HAVING
(имеющий). Одни предложения в инструкции являются обязательными, а другие — нет. Конкретная структура и содержимое предложения могут изменяться. Многие предложения содержат имена таблиц или столбцов; некоторые из них могут содержать дополнительные ключевые слова, константы и выражения.
В стандарте ANSI/ISO определен набор зарезервированных (а также незарезервированных) ключевых слов, которые используются в инструкциях SQL. В соответствии со стандартом, зарезервированные ключевые слова нельзя использовать для именования объектов базы данных, таких как таблицы, столбцы и пользователи. Во многих реализациях СУБД этот запрет ослаблен, но тем не менее следует избегать использования ключевых слов в качестве имен таблиц и столбцов. В табл. 1 перечислены ключевые слова, включенные в стандарт ANSI/ISO SQL:2006.
Таблица 1. Зарезервированные ключевые слова SQL:2006
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Следует также избегать при именовании объектов баз данных незарезервированных ключевых слов, поскольку они являются кандидатами в зарезервированные в будущих версиях стандарта. В табл. 2 перечислены ключевые слова, включенные в стандарт ANSI/ISO SQL:2006.
Таблица 2. Незарезервированные ключевые слова SQL:2006
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
В моём блоге допустимые формы инструкций SQL иллюстрируются с помощью синтаксических диаграмм, таких как показанная на рис. 2. Чтобы создать правильную инструкцию или предложение, необходимо пройти по синтаксической диаграмме вдоль линий до точки, которая служит концом диаграммы. На синтаксической диаграмме и в примерах ключевые слова всегда напечатаны прописными буквами (как слова delete
и from
на рис. 2), но почти во всех СУБД ключевые слова можно набирать как прописными, так и строчными буквами, и часто последнее оказывается более удобным.
Рис. 2. Пример синтаксической диаграммы
Изменяемые элементы инструкции SQL в синтаксической диаграмме указаны строчными буквами и выделены курсивом (имя таблицы и условие отбора на рис. 2). При создании инструкции программист должен самостоятельно определить каждый из таких элементов. Необязательные предложения и ключевые слова (например, предложение where
на рис. 2) на синтаксической диаграмме показаны с помощью дополнительных линий. Если имеется возможность необязательного выбора из нескольких ключевых слов, тогда то из них, которое принято по умолчанию (т.е. действие, выполняемое инструкцией, если не указано ни одно из ключевых слов, выполняется, как если бы было указано слово по умолчанию), подчеркивается.