Самоучитель по SQL-сервер в Linux

     Отличайтесь в сфере https://doc-dips.com/katalog/diplom-uchilischa туризма с дипломом ПТУ    

Команды SQL

Любая концептуальная информация о реляционных базах данных и таблицах приносит пользу лишь в том случае, если вы знаете, как организовать взаимодействие с данными. Язык SQL состоит из структурированных команд, предназначенных для добавления, модификации и удаления данных из базы. Эти команды образуют основу для взаимодействия с сервером PostgreSQL

Этот раздел посвящен «анатомии» команд SQL. В нем рассматриваются структурные компоненты команд, описываются функции каждого компонента и их взаимные связи. Стандартный клиент командной строки PostgreSQL, psql, выводит результаты выполнения команд в приведенных примерах.

Большинство примеров команд SQL относится к базе данных booktown. Весь вывод psql снабжается префиксом вида booktown=#

В некоторых примерах используется тестовая база данных testdb. По умолчанию в приглашении psql выводится только имя базы данных и символы =#, означающие, что система готова к вводу новой команды (хотя вы увидите, что символ = динамически изменяется по мере отслеживания состояния входных данных SQL). В книге это приглашение приводится вместе с входными и выходными данными SQL, чтобы вам было проще освоиться с выводом клиента psql.



Клиент psql подробно описан в главе 4. Здесь он упоминается лишь для пояснения стиля примеров команд SQL.

ПРИМЕЧАНИЕ

Схема базы данных booktown (вместе с примерами записей) находится в файле booktown.sql на компакт-диске. Чтобы установить эту базу данных, введите в приглашении командной строки команду psql -U postgres template! -f /mnt/cdrom/booktown.sql, где /mnt/cdrom — путь к смонтированному компакт-диску, a postgres — имя суперпользователя PostgreSQL.

Анатомия команд SQL

Команды SQL всегда начинаются с действия (verb) — слова или группы слов, описывающих выполняемую операцию. Кроме того, команда SQL обычно содержит одну или несколько секций, уточняющих ее смысл. В табл. 3.2 перечислены основные действия SQL.

Таблица 3.2. Основные действия PostgreSQL

Действие Описание

CREATE DATABASE

Создание новой базы данных

CREATE INDEX

Создание нового индекса для столбца таблицы

CREATE SEQUENCE

Создание новой последовательности в существующей базе данных

CREATE TABLE

Создание новой таблицы в существующей базе данных

CREATE TRIGGER

Создание нового определения триггера

CREATE VIEW

Создание нового представления для существующей таблицы

SELECT

Выборка записей из таблицы

INSERT

Вставка одной или нескольких новых записей в таблицу

UPDATE

Модификация данных в существующих записях

DELETE

Удаление существующих записей из таблицы

DROP DATABASE

Уничтожение существующей базы данных

DROP INDEX

Удаление индекса столбца из существующей таблицы

DROP SEQUENCE

Уничтожение существующего генератора последовательности

DROP TABLE

Уничтожение существующей таблицы

DROP TRIGGER

Уничтожение существующего определения триггера

DROP VIEW

Уничтожение существующего представления

CREATE USER

Создание в системе новой учетной записи пользователя PostgreSQL

ALTER USER

Модификация существующей учетной записи пользователя PostgreSQL

DROP USER

Удаление существующей учетной записи пользователя PostgreSQL

GRANT

Предоставление прав доступа к объекту базы данных

REVOKE

Лишение прав доступа к объекту базы данных

CREATE FUNCTION

Создание новой функции SQL в базе данных

CREATE LANGUAGE

Создание нового определения языка в базе данных

CREATE OPERATOR

Создание нового оператора SQL в базе данных

CREATE TYPE

Создание нового типа данных SQL в базе данных

Несмотря на явное сходство с языками программирования, разработчики поставили целью сделать язык SQL по возможности удобным и наглядным. В результате команды SQL часто напоминают простые предложения на английском языке. В отличие от обычных языков программирования, команды SQL указывают серверу, какие данные требуется найти, но не сообщают, как это должно происходить. В результате хорошо написанный запрос SQL читается почти так же легко, как обычное предложение.

ПРИМЕЧАНИЕ

В учебниках SQL термины «команда» и «запрос» часто считаются эквивалентными. В этой книге термин «запрос» используется только по отношению к командам, возвращающим данные (например, SELECT), а не к общим командам SQL, которые также могут создавать и модифицировать данные.

Во внутреннем представлении PostgreSQL структурированные команды SQL интерпретируются в виде последовательности лексем, обычно разделяемых пропусками (пробелами или символами новой строки вне парных ограничителей), хотя некоторые лексемы могут следовать без пропусков, если это не вызывает неоднозначной интеопоетапии (например, опепатопы могут стоять вплотную к идеитификаторам). В данном контексте лексемой считается слово или символ, осмысленно идентифицируемый сервером в процессе разбора (интерпретации) команды SQL.

С технической точки зрения каждая лексема может быть ключевым словом, идентификатором, защищенным идентификатором, константой (также встречается термин «литерал») или одним из специальных символов. К категории ключевых слов PostgreSQL относит слова, имеющие заранее определенный смысл в контексте SQL или PostgreSQL — действия, секции, имена функций и некоторые необязательные составляющие команд SQL (как, например, слово WORK в команде COMMIT). Идентификаторы представляют имена переменных для таблиц, столбцов и других объектов баз данных.

Ключевые слова и идентификаторы относятся к внутренним функциям, значениям и записям, смысл которых определяется PostgreSQL С другой стороны, константы описывают данные, интерпретируемые буквально (например, числа или символьные строки).

Наконец, команды SQL могут содержать специальные символы. К этой категории относятся зарезервированные символы (круглые и квадратные скобки, точка с запятой), влияющие на смысл и расположение ключевых слов, идентификаторов и литералов. Специальные символы можно рассматривать как своего рода «знаки препинания» в командах SQL.

Операторы также относятся к категории специальных символов и используются для применения логических или математических операций между данными (литеральными или представленными в виде идентификаторов). Обычно операторы содержат от одного до четырех символов.

В нескольких ближайших подразделах эти базовые компоненты SQL описываются более подробно.

Форматирование команд SQL

Как упоминалось в предыдущем подразделе, команды SQL состоят из последовательности элементов — лексем. Менее очевиден тот факт, что лексемы могут находиться в одной или нескольких строках, поскольку модуль лексического разбора PostgreSQL игнорирует лишние пропуски (в том числе разрывы строк).

В листинге 3.1 приведена команда SQL, которая в первом случае задана в одной строке, а во втором повторяется с разбивкой на несколько строк. Оба варианта команды SELECT выводят все содержимое таблицы my_list.

Листинг 3.1. Пробелы и переводы строк

testdb-* SELECT * FROM mylist;

todos
---------------------------------------

Pick up laundry. Send out bills.

Wrap up Grand Unifying Theory for publication.

(3 rows)

testdb-# SELECT * testdb-* FROM

testdb-# mylist;

todos
--------------------------------------

Pick up laundry. Send out bills.

Wrap up Grand Unifying Theory for publication.

(3 rows)

В листинге 3.1 лексемы второй команды разделены дополнительными пробелами и символами новой строки. Как видно из полученных результатов, PostgreSQL игнорирует лишние пробелы и разрывы строк, вследствие чего команды являются синтаксически эквивалентными. Вы можете воспользоваться этим фактом и разбить длинную команду SQL на несколько строк, чтобы упростить ее чтение. Для таких простых команд, как в листинге 3.1, это не нужно, но разбиение пригодится при работе со сложными командами SQL с многочисленными секциями, выражениями и условиями. В книге периодически встречаются примеры, в которых команда разбивается на несколько строк с комментариями к каждой части.

Содержание раздела