SQLсервер в Linux -самостоятельное освоение пакета

viagra | 17 weeks and 3 days Смотрим тут: https://dieta-dlya-pokhudeniya.ru | Смотрим тут: https://newslw.ru/ | Смотрим тут: https://novostid.ru/лучший порно массаж

SQL в PostgreSQL


SQL в PostgreSQL
SQL в PostgreSQL Наше знакомство с языком SQL продолжается. На этот раз основное внимание мы уделим практическим аспектам его применения. В этой главе будет показано, как при помощи ком...
Сортировка записей
Сортировка записей Как упоминалось в главе 3, записи хранятся в таблицах в произвольном порядке. Более того, даже повторное выполнение запроса никоим образом не гарантирует одинакового...
Листинг 4 42 Использование секции ORDER BY
Листинг 4.42. Использование секции ORDER BY booktown=# SELECT isbn, edition, publication booktown-# FROM editions ooktown-# ORDER BY publication ASC; Isbn | edition | publication...
Листинг 4 42 показывает что записи
Листинг 4.42 показывает, что записи возвращаются в порядке возрастания, от старых дат к новым. Следует помнить, что при сортировке и выборке допускается использование полей, отсутствующих...
Листинг 4 43 Секция ORDER BY с несколькими выражениями
Листинг 4.43. Секция ORDER BY с несколькими выражениями booktown=# SELECT edition, publication booktown-# FROM editions booktown-# ORDER BY edition ASC, booktown-# publication DESC;...
Листинг 4 44 Использование секции DISTINCT с ORDER BY
Листинг 4.44. Использование секции DISTINCT с ORDER BY booktown=# SELECT DISTINCT ON (edition) booktown-# edition, publication booktown-# FROM editions booktown-# ORDER BY edition...
Выбор интервалов записей
Выбор интервалов записей В PostgreSQL количество записей, выбираемых запросом SQL, не ограничивается. Обработка запроса, возвращающего несколько миллионов записей, займет много времени,...
Листинг 4 45 Использование секций LIMIT и OFFSET
Листинг 4.45. Использование секций LIMIT и OFFSET booktown=# SELECT isbn, title, publication booktown-# FROM editions NATURAL JOIN books AS b (book_id) booktown-# ORDER BY publica...
Сравнение наборов записей
Сравнение наборов записей Если объединения используются в SQL для слияния полей двух источников, то ключевые слова UNION, INTERSECT и EXCEPT сравнивают значения полей в двух наборах и с...
Листинг 4 46 Использование секции UNION
Листинг 4.46. Использование секции UNION booktown=# SELECT title FROM books booktown-# UNION booktown-# SELECT last_name FROM authors booktown-# LIMIT 11; title 2001: A Space...
Листинг 4 47 Использование секции INTERSECT
Листинг 4.47. Использование секции INTERSECT booktown=# SELECT isbn FROM editions booktown-# INTERSECT booktown-# SELECT isbn FROM shipments booktown-# GROUP BY isbn booktown-# H...
Листинг 4 48 Использование секции EXCEPT
Листинг 4.48. Использование секции EXCEPT booktown=# SELECT last_name, first_name booktown-# FROM authors booktown-# EXCEPT booktown-# SELECT lastjiame, first_name booktown-# FR...
Листинг 4 49 Сравнение результатов двух подзапросов
Листинг 4.49. Сравнение результатов двух подзапросов booktown=# (SELECT title FROM books ORDER BY title DESC LIMIT 7) booktown-# EXCEPT booktown-# (SELECT title FROM books ORDER B...
Конструкции CASE
Конструкции CASE Чтобы программа SQL могла принимать простейшие решения, не прибегая к процедурным языкам, в PostgreSQL поддерживаются конструкции CASE, предусмотренные стандартом SQL К...
Листинг 4 50 Конструкции CASE в командах
Листинг 4.50. Конструкции CASE в командах booktown=# SELECT isbn, booktown-# CASE WHEN cost > 20 THEN 'over $20.00 cost' booktown-# WHEN cost = 20 THEN '$20.00 cost1 booktow...
Листинг 4 51 Конструкции CASE в подзапросах
Листинг 4.51. Конструкции CASE в подзапросах booktown=# SELECT isbn, booktown-# CASE WHEN cost > 20 THEN 'N/A - (Out of price range)' booktown-# ELSE (SELECT title FROM books b...
Создание таблиц на базе существующих таблиц
Создание таблиц на базе существующих таблиц Команда SELECT с секцией INTO TABLE создает новую таблицу, структура и содержимое которой определяются итоговым набором запроса. Синтаксис:...
Листинг 4 52 Создание таблицы
Листинг 4.52. Создание таблицы на основе данных другой таблицы booktown=# SELECT * INTO stock_backup booktown=# FROM stock; SELECT Таблица, указанная в секции INTO, не должна сущес...
Модификация записей командой UPDATE
Модификация записей командой UPDATE После того как записи сохранены в базе данных, вы можете обновить их поля командой SQL UPDATE. Новые значения полей задаются в виде констант, идентиф...
Листинг 4 53 Простая команда UPDATE
Листинг 4.53. Простая команда UPDATE booktown=# SELECT retail FROM stock booktown-# WHERE isbn = '0590445065'; retail 23.95 (1 row) booktown=# UPDATE stock booktown-# SET reta...
Обновление поля во всех записях таблицы
Обновление поля во всех записях таблицы При отсутствии секции WHERE команда UPDATE обновляет заданное поле во всех записях таблицы. Обычно в этой ситуации новое значение поля задается...
Листинг 4 54 Обновление поля во всех записях
Листинг 4.54. Обновление поля во всех записях booktown=# SELECT isbn, retail, cost booktown-# FROM stock booktown-# ORDER BY isbn ASC booktown-# LIMIT 3; isbn | retail | cost...
Обновление нескольких полей
Обновление нескольких полей Перечисление команд присваивания в секции SET через запятую позволяет обновить несколько полей таблицы в одной команде. В листинге 4.55 продемонстрировано о...
Листинг 4 55 Выполнение команды
Листинг 4.55. Выполнение команды UPDATE с обновлением нескольких полей booktown=# UPDATE publishers booktown-# SET name = 'OVReilly & Associates', booktown-# address = 'OVReilly &...
Листинг 4 55 также служит примером
Листинг 4.55 также служит примером практического использования оператора конкатенации || и функции substr(). Полю address присваиваются две строковые константы, объединенные оператором ||...
Обновление записей по нескольким источникам
Обновление записей по нескольким источникам В PostgreSQL команда SQL UPDATE была дополнена мощной нестандартной возможностью — поддержкой секции FROM. Секция FROM позволяет получать вх...
Листинг 4 56 Команда UPDATE с несколькими источниками
Листинг 4.56. Команда UPDATE с несколькими источниками booktown=# UPDATE stock . booktown-# SET retail = stock_backup.retail booktown-# FROM stock_backup booktown-# WHERE stock.isb...
Удаление записей командой DELETE
Удаление записей командой DELETE Удаление записей из таблиц производится стандартной командой SQL DELETE. Вызов DELETE приводит к необратимым последствиям (исключение составляют тщатель...
Листинг 4 57 Удаление записей из таблицы
Листинг 4.57. Удаление записей из таблицы booktown=# SELECT * FROM stock booktown-# WHERE stock = 0; isbn | cost | retail | stock 0394800753 | 16.00 | 16.95 | 0 0394900014 | 23.0...
Листинг 4 58 Удаление всех записей из таблицы
Листинг 4.58. Удаление всех записей из таблицы booktown=# DELETE FROM stock_backup; DELETE 16...
Подзапросы
Подзапросы Поддержка подзапросов, впервые реализованная в PostgreSQL версии 6.3, существенно повысила гибкость команд SQL. Подзапросом называется команда SELECT, заключенная в круглые с...
Листинг 4 59 Простой подзапрос
Листинг 4.59. Простой подзапрос booktown=# SELECT title FROM books 30oktown-# WHERE author_id = (SELECT id FROM authors) booktown(# WHERE last_name='Geisel' booktown(# AND first_name='T...
Листинг 4 60 Подзапрос с ключевым словом IN
Листинг 4.60. Подзапрос с ключевым словом IN booktown=# SELECT title FROM books booktown-# WHERE authorjd IN (SELECT id FROM authors booktown(# WHERE last_name - '"[A-E]'); ti...
Листинг 4 61 Многоцелевой подзапрос в секции IN
Листинг 4.61. Многоцелевой подзапрос в секции IN booktown=# SELECT isbn, cost, retail FROM stock booktown-# WHERE (isbn, stock) booktown-# IN (SELECT isbn, 0 FROM editions booktown...
Представления
Представления При работе с SQL нередко возникают ситуации, когда один и тот же запрос приходится использовать повторно. Ничто не раздражает так, как необходимость многократного ввода бо...
Создание представления
Создание представления Представления создаются командой CREATE VIEW, синтаксис которой выглядит следующим образом: CREATE VIEW представление AS запрос представление. Имя (иден...
Таблица 4 1 Таблица shipments
Таблица 4.1. Таблица shipments Поле Тип Модификатор id integer NOT NULL DEFAULT nextval ( 'shipments_ship_id_seq' )...
Листинг 4 62 Создание представления
Листинг 4.62. Создание представления booktown=# CREATE VIEW recent_shipments booktown-# AS SELECT count(*) AS num_shipped, max(ship_date), title booktown-# FROM shipments booktown-...
Применение представлений
Применение представлений Представления значительно упрощают получение нужных данных. Вместо того чтобы вводить длинный запрос, достаточно ввести простую команду SELECT (листинг 4.63)....
Листинг 4 63 Использование представления
Листинг 4.63. Использование представления booktown=# SELECT * FROM recent_shipments; num_shipped | max | title 5 | 2001-08-13 09:47:04-07 | The Cat in the Hat 5 | 2001-08-14 13:45:...
Листинг 4 63 демонстрирует еще
Листинг 4.63 демонстрирует еще одно важное обстоятельство: хотя при создании представления используется секция ORDER BY, итоговый набор можно заново отсортировать при выводе. Для этого в к...
Уничтожение представлений
Уничтожение представлений Команда уничтожения представления имеет следующий синтаксис (представление — имя уничтожаемого представления): DROP VIEW представление Уничтожение представл...
Другие возможности SQL
Другие возможности SQL В этой главе были представлены фундаментальные концепции применения языка SQL в PostgreSQL. В частности, были рассмотрены вопросы создания таблиц и выполнения с н...
Знакомство с psql
Знакомство с psql Клиент psql работает в режиме командной строки и входит в комплект поставки PostgreSQL. Его часто называют интерактивным монитором или интерактивным терминалом. Этот п...
Запуск psql
Запуск psql Перед запуском psql убедитесь в том, что двоичный файл psql находится в стандартном каталоге исполняемых файлов (например, /usr/bin), либо путь к каталогу двоичных файлов P...
Листинг 4 1 относящийся к интерпретатору
Листинг 4.1, относящийся к интерпретатору bash, иллюстрирует процедуру назначения системного пути для клиента psql....
Листинг 4 1 Назначение системного пути для psql
Листинг 4.1. Назначение системного пути для psql [user@host user]$ psql bash: psql: command not found [user@host user]$ echo $PATH /b1n:/usr/bin:/usr/local/bin:/usr/bin/Xll:/usr/XH...
Синтаксис psql
Синтаксис psql При запуске psql выводится краткая сводка четырех основных команд psql: \h — справка по SQL; \? — справка по командам psql; \д — выполнение запросов; \q —...
Листинг 4 2 Получение списка команд psql booktown=# \?
Листинг 4.2. Получение списка команд psql booktown=# \? \а toggle between unaligned and aligned mode \c[onnect] [dbname|- [user]] connect to new database (currently 'booktown') \C...
Выполнение запросов
Выполнение запросов В psql существует два способа ввода и исполнения запросов (в psql этот термин означает команду SQL вообще). В интерактивном режиме запросы обычно вводятся непосредс...
Ввод запросов в приглашении psql
Ввод запросов в приглашении psql Запустите psql и убедитесь в том, что вы подключены к нужной базе данных (и зарегистрированы в системе с нужными параметрами). На экране появляется при...
Листинг 4 3 Ввод команд в psql
Листинг 4.3. Ввод команд в psql testdb=# SELECT * FROM employees testdb-# WHERE firstname = 'Michael'; Запрос из листинга 4.3 возвращает записи обо всех работниках с именем «Mic...
Листинг 4 4 Включение открывающих
Листинг 4.4. Включение открывающих символов в приглашение psql testdb=# CREATE TABLE employees ( testdb(# Ввод команды продолжается. Открывающая круглая скобка в приглашении psql...
Редактирование буфера запроса
Редактирование буфера запроса Команда \е открывает текущее содержимое буфера запроса в редакторе, заданном переменной среды EDITOR. Это позволяет просмотреть и при необходимости измени...
Листинг 4 5 Присваивание значения переменной EDITOR
Листинг 4.5. Присваивание значения переменной EDITOR # set EDITOR='joe' $ export EDITOR Команда \е также может применяться для сохранения текущего содержимого буфера в файле. При...
Использование таблиц
Использование таблиц Таблицы являются основными блоками хранения данных в базе. Перед любыми операциями создания, выборки или модификации записей необходимо сначала создать таблицу, в к...
Создание таблицы командой CREATE TABLE
Создание таблицы командой CREATE TABLE В языке SQL таблицы создаются командой CREATE TABLE. Минимальный набор параметров включает имя таблицы и описания полей, состоящие из имени поля...
Синтаксис команды CREATE TABLE
Синтаксис команды CREATE TABLE Синтаксис команды CREATE TABLE выглядит так: CREATE [ TEMPORARY | TEMP ] TABLE имя_таблицы ( { имя_поля тип [ограничение_поля [... ] ] | ограничение_таблиц...
Пример создания таблицы
Пример создания таблицы Команда SQL, приведенная в листинге 4.6, создает таблицу books в базе данных booktovvn....
Листинг 4 6 Создание таблицы books
Листинг 4.6. Создание таблицы books booktown=# CREATE TABLE books ( booktown(# id integer UNIQUE. booktown(# title text NOT NULL, booktown(# authoMd integer, booktowntf subjected in...
Анализ структуры таблицы
Анализ структуры таблицы Команда \d (с указанием имени таблицы) предназначена для вывода структуры таблицы и ее ограничений, если они имеются. В листинге 4.7 приведены выходные данные...
Листинг 4 7 Выходные данные команды \d
Листинг 4.7. Выходные данные команды \d booktown=# \d books Table "books" Attribute | Type | Modifier id integer | not null title text I not null authorjd j integer j s...
Модификация таблицы командой ALTER TABLE
Модификация таблицы командой ALTER TABLE В большинстве современных РСУБД предусмотрена возможность модификации таблиц командой ALTER TABLE. Реализация ALTER TABLE в PostgreSQL 7.1.x по...
Создание полей
Создание полей Для создания нового поля в команду ALTER TABLE включается секция ADD COLUMN. Синтаксис команды ALTER TABLE с секцией ADD COLUMN: ALTER TABLE таблица ADD [ COLUMN ] имя...
Листинг 4 8 Добавление поля
Листинг 4.8. Добавление поля booktown=# ALTER TABLE books booktown-# ADD publication date; ALTER booktown=# \d books Table "books" Attribute | Type | Modifier id int...
Листинг 4 8 показывает что в таблице
Листинг 4.8 показывает, что в таблице books появилось новое поле с именем pub! I cation и типом date. Кроме того, он дает типичный пример плохой координации планирования между разработчика...
Назначение и отмена значений по умолчанию
Назначение и отмена значений по умолчанию При модификации существующих таблиц наибольшая свобода действий предоставляется при выборе значений по умолчанию. Программист может относительно л...
Листинг 4 9 Изменение значений по умолчанию
Листинг 4.9. Изменение значений по умолчанию Doktown=# ALTER TABLE books 3oktOwn-# ALTER COLUMN id x>ktown-# SET DEFAULT nextvalС books.ids'): JER }oktown=# \d books TABLE...
Переименование таблицы
Переименование таблицы Переименование таблиц осуществляется командой ALTER TABLE с секцией RENAME, интаксис переименования таблицы: JER TABLE таблица RENAME TO новое_иня Таблицу м...
Листинг 4 10 Переименование таблицы
Листинг 4.10. Переименование таблицы oktown=# ALTER TABLE books RENAME TO literature; TER oktown=# ALTER TABLE literature RENAME TO books; TER...
Переименование полей
Переименование полей PostgreSQL позволяет изменять имена полей без изменения данных, хранящихся таблице. Впрочем, переименование полей — дело рискованное, поскольку существующие прилож...
Листинг 4 11 Переименование поля
Листинг 4.11. Переименование поля booktown=# \d daily_inventory Table "daily_inventory" Attribute | Type | Modifier isbn | text in_stock | boolean | booktown=# ALTER TA...
Добавление ограничений
Добавление ограничений После создания таблицы сохраняются некоторые возможности добавления ограничении. В PostgreSQL 7.1.x команда ALTER TABLE с секцией ADD CONSTRAINT позволяет опреде...
Листинг 4 12 Создание новых ограничений
Листинг 4.12. Создание новых ограничений в существующей таблице booktown=# ALTER TABLE editions booktown-# ADD CONSTRAINT foreign_book booktown-# FOREIGN KEY (book_id) REFERENCES book...
Смена владельца
Смена владельца По умолчанию создатель таблицы автоматически становится ее владельцем. Владелец обладает всеми правами, связанными с таблицей, в том числе правами предоставления и отзы...
Листинг 4 13 Смена владельца таблицы
Листинг 4.13. Смена владельца таблицы booktown=# ALTER TABLE employees booktown-# OWNER TO corwin; ALTER Примечание 3Примечание 3 Смена владельца таблицы может осуществляться либо...
Реструктуризация таблиц
Реструктуризация таблиц Несмотря на возможность включения новых полей в существующую таблицу, следует помнить, что в PostgreSQL (во всяком случае, в версии 7.1.x) не поддерживается уда...
Реструктуризация таблиц командой CREATE TABLE AS
Реструктуризация таблиц командой CREATE TABLE AS Распространенная методика реструктуризации таблиц основана на использовании команды CREATE TABLE с секцией AS в сочетании с запросом SQL. К...
Листинг 4 14 Реструктуризация
Листинг 4.14. Реструктуризация таблицы командой CREATE TABLE AS booktown=# \d books Table "books" Attribute | Type | Modifier id | integer | not null title text I not nul...
Реструктуризация таблиц командами CREATE TABLE и INSERT INTO
Реструктуризация таблиц командами CREATE TABLE и INSERT INTO Если таблица, создаваемая командой CREATE TABLE AS, вас почему-либо не устраивает (например, если в таблице необходимо уста...
Листинг 4 15 Реструктуризация
Листинг 4.15. Реструктуризация таблицы командами CREATE TABLE и INSERT INTO booktownHf CREATE TABLE new_books ( booktown(# id integer UNIQUE, booktown(# title text NOT NULL. bookto...
Удаление таблиц командой DROP TABLE
Удаление таблиц командой DROP TABLE В SQL таблицы удаляются командой DROP TABLE. Команда имеет следующий синтаксис (таблица — имя удаляемой таблицы): DROP TABLE таблица Использование...
Добавление данных командами INSERT и COPY
Добавление данных командами INSERT и COPY После создания таблицы с заданной структурой наступает следующий этап — заполнение таблицы данными. В PostgreSQL имеются три общих способа запо...
Вставка новых данных
Вставка новых данных Ниже приведен синтаксис команды INSERT INTO при вставке новых данных: INSERT INTO таблица [ ( имя_поля [, ...] ) ] VALUES ( значение [. ...] ) Ниже перечислен...
Листинг 4 16 Вставка новой записи в таблицу books
Листинг 4.16. Вставка новой записи в таблицу books booktown=# INSERT INTO books (Id, title, author_id, subject_id) booktown-# VALUES (41472, 'Practical PostgreSQL', 1212, 4); INSE...
Листинг 4 17 Изменение порядка перечисления полей
Листинг 4.17. Изменение порядка перечисления полей booktown=# INSERT INTO books (subjected, author_id, id, title) booktown-# VALUES (4, 7805, 41473, 'Programming Python'); INS...
Вставка данных из других таблиц командой SELECT
Вставка данных из других таблиц командой SELECT Команда INSERT INTO применяется и в другой ситуации — когда данные, сохраняемые в таблице, уже присутствуют в другой таблице (или неекольких...
Листинг 4 18 Вставка данных из другой таблицы
Листинг 4.18. Вставка данных из другой таблицы booktown-# INSERT INTO books (id, title, author_id, subject_id) booktown-# SELECT nextval('book_ids', title, author_id, subject_id b...
Копирование данных из внешних файлов командой COPY
Копирование данных из внешних файлов командой COPY В PostgreSQL поддерживается и такая полезная возможность, как прямое импортирование данных в таблицу из внешних файлов командой COPY. Фай...
Листинг 4 19 Пример копируемого ASCIIфайла
Листинг 4.19. Пример копируемого ASCII-файла 1.Business.Productivity Ave 2.Children's Books,Kids Ct 3.Classics.Academic Rd 4,Computers,Productivity Ave 5,Cooking.Creativity St...
Листинг 4 20 Копирование ASCIIфайла
Листинг 4.20. Копирование ASCII-файла booktown=# COPY subjects FROM '/tmp/subjects.sql' booktown-# USING DELIMITERS '.' WITH NULL AS '\null; COPY...
Двоичный формат
Двоичный формат Команда COPY также позволяет выполнять операции ввода и вывода с данными в двоичном формате. Если команда COPY FROM содержит ключевое слово BINARY, входной файл должен...
Листинг 4 21 Копирование двоичного файла
Листинг 4.21. Копирование двоичного файла booktown=# COPY BINARY subjects FROM '/tmp/subjects.sql'; COPY...
Различия команд COPY и \copy
Различия команд COPY и \copy Команда SQL COPY не эквивалентна команде psql \copy. Команда \copy имеет тот же синтаксис (хотя и не завершается точкой с запятой), она выполняет операцию...
COPY TO
COPY TO Синтаксис команды COPY FROM практически аналогичен синтаксису команды, предназначенной для экспортирования данных в файл, просто ключевое слово FROM заменяется ключевым словом...
Листинг 4 22 Экспортирование таблицы books в файл ASCII
Листинг 4.22. Экспортирование таблицы books в файл ASCII booktown=# COPY books TO 'filename'; COPY...
Секция WITH OIDS
Секция WITH OIDS Файлы, содержащие идентификаторы объектов (созданные командой COPY TO с секцией WITH OIDS), загружаются командой COPY FROM, в которую также включается секция WITH OIDS...
Выборка данных командой SELECT
Выборка данных командой SELECT Центральное место в SQL занимает команда SELECT, предназначенная для построения запросов и выборки данных из таблиц и представлений. Данные, возвращаемые...
Простая команда SELECT
Простая команда SELECT В простейшем случае команда SELECT выбирает из заданной таблицы все данные (то есть все записи и все поля). Полная выборка данных производится командой SELECT...
Листинг 4 23 Выборка всех записей из таблицы books
Листинг 4.23. Выборка всех записей из таблицы books 300ktown=# SELECT * FROM books; id | title | author_id | subject_id 7808 | The Shining | 4156 | 9 4513 | Dune | 1866 | 15 426...
Выбор полей
Выбор полей Команда SELECT * является хорошим примером простейшего запроса, но на прак-гике необходимая информация нередко ограничивается несколькими полями габлицы. Чтобы повысить эфф...
Листинг 4 24 Изменение порядка следования полей при выборке
Листинг 4.24. Изменение порядка следования полей при выборке booktown=# SELECT Id, author_id, title, id booktown-# FROM books; id | authorjd | title | id 7808 | 4156 | The Shining...
Выражения константы и синонимы
Выражения, константы и синонимы Целями команды SELECT могут быть не только простые поля, но и произвольные выражения (включающие вызовы функций или различные операции с идентификаторами)...
Листинг 4 25 Выражения и константы
Листинг 4.25. Выражения и константы testdb=# SELECT 2+2, testdb-# pi (), testdb-# 'PostgreSQL is more than a calculator!'; ?column?| pi | ?column? 4 | 3.14159265358979 | PostgreSQL...
Листинг 4 26 Секция AS с выражениями и константами
Листинг 4.26. Секция AS с выражениями и константами booktown=# SELECT 2 + 2 AS "2 plus 2", booktown-# pi() AS "the pi fnction", booktown-# 'PostgreSQL is more than...
Выбор источников в секции FROM
Выбор источников в секции FROM В секции FROM указывается источник данных — таблица или итоговый набор. Секция может содержать несколько источников, разделенных запятыми. Результат подоб...
Листинг 4 27 Выборка из нескольких таблиц
Листинг 4.27. Выборка из нескольких таблиц booktown=# SELECT books.id, title, authors_id, last_name booktown-# FROM books, authors booktown-# WHERE books.authored = authors.id;...
Листинг 4 28 Выборка из подзапроса
Листинг 4.28. Выборка из подзапроса booktown=# SELECT 'test' AS test, id booktown-# FROM (SELECT * FROM books) booktown-# AS example_sub_query; test | id test | 7808 test | 4513...
Синонимы источников данных в секции FROM
Синонимы источников данных в секции FROM Источникам данных в секции FROM — таблицам, подзапросам и т. д. — можно назначать синонимы в секции AS (по аналогии с отдельными полями). Синонимы...
Листинг 4 29 Определение синонимов для источников данных
Листинг 4.29. Определение синонимов для источников данных booktown=# SELECT b.id, title, a.id, last_name booktown-# FROM books AS b, authors AS a booktown-# WHERE b.author_id = a.id;...
Листинг 4 30 Определение синонимов для полей
Листинг 4.30. Определение синонимов для полей booktown=# SELECT the_book_id, title, id, last_name booktown-# FROM books AS b (the_book_id), authors booktown-# WHERE author_id = id;...
Удаление дубликатов и ключевое слово DISTINCT
Удаление дубликатов и ключевое слово DISTINCT Необязательное ключевое слово DISTINCT исключает дубликаты из итогового набора. Если ключевое слово ON отсутствует, из результатов запроса...
Листинг 4 31 Ключевое слово DISTINCT
Листинг 4.31. Ключевое слово DISTINCT booktown=# SELECT DISTINCT author_id booktown-# FROM books; author_id 16 115 1212 1644 1809 1866 2001 2031 4156...
Уточнение запросов
Уточнение запросов В секции WHERE задается логическое условие, которому должны удовлетворять записи итогового набора. На практике команда SELECT почти всегда содержит как минимум одну...
Листинг 4 32 Простая секция WHERE
Листинг 4.32. Простая секция WHERE booktown=# SELECT * FROM books booktown-# WHERE subject_id = 4; id | title | author_id | subject_id 41472 | Practical PostgreSQL | 1212 | 4 41473...
Листинг 4 33 Объединение условий в секции WHERE
Листинг 4.33. Объединение условий в секции WHERE booktown=# SELECT title FROM books booktown-# WHERE subject_id = 4 booktown-# AND author_id = 7805; title Programming Python...
Листинг 4 34 показывает как простое
Листинг 4.34 показывает, как простое добавление круглых скобок влияет на результат выполнения команды....
Листинг 4 34 Группировка условий при помощи круглых скобок
Листинг 4.34. Группировка условий при помощи круглых скобок booktown=# SELECT * FROM books booktown-# WHERE author_id = 1866 booktown-# AND subject_id = 15 booktown-# OR subject_i...
Объединение наборов данных
Объединение наборов данных Как было показано в примере использования секции WHERE для выборки из двух таблиц (см. подраздел «Выбор источников в секции FROM»), существует...
Перекрестные объединения
Перекрестные объединения Результат перекрестного объединения принципиально не отличается от перечисления источников через запятую. Следовательно, в команде выборки с перекрестным объед...
Листинг 4 35 Простой перекрестный запрос
Листинг 4.35. Простой перекрестный запрос booktown=# SELECT b.id, title, a.id, last_name booktown-# FROM books AS b CROSS JOIN authors AS a booktown-# WHERE b.author_id = a.id; id |...
Внутренние и внешние объединения
Внутренние и внешние объединения На практике чаще используются внутренние и внешние объединения, при которых секция JOIN обязательно содержит критерий, уточняющий связи между объединяе...
Внутренние объединения
Внутренние объединения Конструкция INNER JOIN была включена в стандарт SQL92 для того, чтобы условия объединения источников данных (условия JOIN) можно было отличить от условий принадл...
Листинг 4 36 Сравнение команд INNER JOIN и WHERE
Листинг 4.36. Сравнение команд INNER JOIN и WHERE booktown=# SELECT title, last_name, first_name booktown-# FROM books, authors booktown-# WHERE (books.author_id = authors.id) book...
Листинг 4 37 Секции NATURAL и USING
Листинг 4.37. Секции NATURAL и USING booktown=# SELECT title. last_name, first_name booktown-# FROM books INNER JOIN authors AS a (author_id) booktown-# USING (author_id) booktown-...
Внешние объединения
Внешние объединения С другой стороны, внешнее объединение может сохранить записи, для которых не находится соответствия в других наборах. В этом случае недостающие поля заполняются зна...
Листинг 4 38 Внутренние и внешние объединения
Листинг 4.38. Внутренние и внешние объединения booktown=# SELECT title, isbn booktown-# FROM books INNER JOIN editions booktown-# ON (books.id = editions.book_id); title | isbn T...
Сложные объединения
Сложные объединения Хотя одна секция JOIN объединяет всего два набора данных, на практике объединения не ограничиваются двумя источниками. За набором, созданным посредством объединения...
Листинг 4 39 Объединение нескольких источников данных
Листинг 4.39. Объединение нескольких источников данных booktown=# SELECT a.last_name, p.name AS publisher, e.isbn, s.subject booktown-# FROM ((((authors AS a INNER JOIN books AS b<...
Группировка записей
Группировка записей Секция GROUP BY представляет чрезвычайно мощную концепцию SQL — агрегирование. На практике агрегирование запросов SQL приводит к тому, что все записи с одинаковыми з...
Листинг 4 40 Группировка записей
Листинг 4.40. Группировка записей booktown=# SELECT count(e.isbn) AS "number of books", booktown-# p.name AS publisher booktown-# FROM editions AS e INNER JOIN publishers AS...
Листинг 4 41 Использование секции HAVING
Листинг 4.41. Использование секции HAVING booktown=# SELECT count(e.isbn) AS "number of books", booktown-# p.name AS publisher booktown-# FROM editions AS e INNER JOIN publish...








Начало    



Книжный магазин