Комментарии
Листинг 3.13. Пример запроса SQL.
booktown=# SELECT Id, name FROM states; id | name 42 | Washington 51 I Oregon (2 rows) booktown=#
В табл. 3.8 и 3.9 анализируется другая, более сложная команда SQL. В ней используется действие UPDATE с секциями SET и WHERE, которые определяют соответственно правило изменения записей и критерий их отбора.
Таблица 3.8. Команда UPDATE с секцией SET.
UPDATE | states | SET | id | = | 51 |
Ключевое слово | Идентификатор | Ключевое слово | Идентификатор | Оператор | Целочисленная константа |
Команда | Имя таблицы | Имя секции | Имя поля | Присваивание | Новое значение поля id |
Таблица 3.9. Секция WHERE.
WHERE | name | = | 'Oregon' |
Ключевое слово | Идентификатор | Оператор | Строковая константа |
Имя секции | Имя поля | Проверка эквивалентности | Искомое значение |
Приведенная команда просматривает содержимое поля name каждой записи и проверяет, совпадает ли оно с условием секции WHERE (совпадение со строковой константой ' Oregon'). Затем во всех записях, соответствующих этому условию, полю id присваивается значение 51.
Итак, рассмотренная команда UPDATE содержит три ключевых слова, три идентификатора и две константы. Ключевыми словами являются лексемы UPDATE (выполняемое действие), SET (правило обновления записей) и WHERE (критерий отбора обновляемых записей).
Оба оператора представлены знаком =. В секции SET этот знак используется для присваивания (то есть обновления поля существующей записи) – применение, специфическое для секции SET. С другой стороны, в секции WHERE оператор = используется для сравнения двух значений. В данном примере поле name записи сравнивается со строковой константой Oregon.
Наконец, в примере присутствует целочисленная константа 51 (новое значение поля id) и строковая константа Oregon (сравниваемая с полем name в секции WHERE).
Таким образом, команда UPDATE, приведенная в листинге 3.14, обновляет таблицу states, присваивая значение 51 полю Id всех записей, у которых поле name содержит значение Oregon. Результат проверяется следующей командой SELECT.
Листинг 3.14. Обновление таблицы командой UPDATE.
booktown= <strong>#</strong> UPDATE states booktown – <strong>#</strong> SET id = 51 booktown – <strong>#</strong> WHERE name = 'Oregon'; UPDATE 1 booktown= <strong>#</strong> SELECT * FROM states booktown-$ WHERE name='Oregon': Id | name | abbreviation 51 | Oregon | OR (1 row) booktown= <strong>#</strong>