Postgres Professional выпустила учебник по SQL для СУБД PostgreSQL
Первый учебник по основам SQL применительно к свободно распространяемой системе управления базами данных (СУБД) PostgreSQL вышел в свет 19 июня при поддержке компании Postgres Professional. Учебник бесплатен, он доступен по свободной лицензии.
Автор пособия – Евгений Моргунов, кандидат технических наук, доцент кафедры информатики и вычислительной техники Сибирского государственного университета науки и технологий имени академика М. Ф. Решетнёва. Моргунов применяет СУБД PostgreSQL в преподавании дисциплины «Технология программирования» в течение 17 лет. SQL (Structured Query Language, произносится «эс-кью-эль», реже «сиквел»; второй вариант произношения остался со времён предыдущего названия языка, «SEQUEL») – широко распространённый формальный язык описания запросов к базам данных.
Свободная лицензия и доступ к исходному коду позволяют использовать СУБД PostgreSQL в учебном процессе. Интерес к учебнику уже проявили Ульяновский государственный технический университет и ряд других вузов, сообщает компания.
Как говорится в сообщении, внедрение PostgreSQL в вузах до недавнего времени тормозилось отсутствием документации на русском языке, учебных пособий, а также лоббированием интересов зарубежных производителей СУБД. Компания Postgres Professional, российский вендор СУБД PostgreSQL, перевела на русский язык документацию по PostgreSQL. Для подготовки учебных пособий и магистерских программ для глубокого изучения технологий управления базами данных на примере PostgreSQL потребуется совместная работа с вузами.
Учебник представляет собой первую, базовую часть учебного курса по языку SQL применительно к СУБД PostgreSQL. В пособии рассматриваются все основные возможности языка SQL, включая команды создания объектов БД, манипулирования данными и управления транзакциями, а также специальные типы данных, специфика индексной поддержки PostgreSQL и настройки запросов. Много внимания уделяется развитию практических навыков обучаемых. В конце каждой главы приведены упражнения. Для практических заданий используется демонстрационная база данных. В методических целях предложена разбивка материала на учебный семестр из расчета 36 или 54 часов.
Ранее Postgres Professional выпустила учебные курсы по администрированию СУБД PostgreSQL (базовый и расширенный уровень), доступные в видеоформате и в виде очных занятий в четырех сертифицированных учебных центрах. Также доступен курс для разработчиков Hacking PostgreSQL. В июле 2017 года ожидается выход базового и расширенного курса для разработчиков серверной части приложения.
В электронном виде учебник доступен здесь.
На СУБД PostgreSQL в последнее время переходят различные российские госорганизации и компании, среди которых правительство Москвы, «Яндекс.Почта», госучреждения Московской области, МИА «Россия сегодня» и др.
Справка
Компания Postgres Professional создана в 2015 году российскими разработчиками PostgreSQL с целью продвижения и расширения возможностей данной СУБД с открытым кодом и свободной лицензией, развиваемой международным сообществом более 20 лет. Postgres Professional является российским вендором PostgreSQL и осуществляет поддержку полного цикла, включая IT-аудит, консалтинг, разработку, администрирование, техподдержку, обучение. В компании на данный момент работает более 50 человек.
В 2016 году Postgres Professional выпустила СУБД Postgres Pro — собственную версию PostgreSQL. СУБД Postgres Pro включена в реестр отечественного программного обеспечения, а версия СУБД Postgres Pro 9.5.2.1 сертифицирована ФСТЭК (номер 3637 в реестре).
Консорциум во главе с Postgres Professional занял первое место в конкурсе IT-проектов Минкомсвязи в номинации «Системы управления базами данных».
d-russia.ru
Иллюстрированный самоучитель по PostgreSQL › Введение [страница — 2] | Самоучители по программированию
Введение
Для кого написана эта книга?
PostgreSQL заслуженно считается одной из лучших СУБД, распространяемых с открытыми текстами, а по своим возможностям PostgreSQL успешно конкурирует со многими коммерческими пакетами.
Настоящая книга была задумана как практическое руководство по PostgreSQL версии 7.1.x, хотя большая часть материала в равной степени относится как к предыдущим, так и к будущим версиям PostgreSQL. При подборе материала авторы стремились к тому, чтобы читатель как можно быстрее освоил практические навыки работы с PostgreSQL. Хотя в книге затрагиваются некоторые теоретические аспекты функционирования СУБД, подобные теоретические отступления будут относительно короткими. Прежде всего, мы стремились к тому, чтобы полученные знания позволили читателю самостоятельно создать работоспособную базу данных PostgreSQL и обеспечить ее дальнейшее сопровождение. Надеемся, книга поможет всем, кто хочет ближе познакомиться с СУБД PostgreSQL и ее возможностями.
Книга ориентирована на широкий круг читателей, интересующихся объектно-реляционной системой управления базами данных (ОРСУБД) PostgreSQL. Предполагается, что читатель знаком с системами Linux и Unix, хотя и не является экспертом в области баз данных. Хотя все примеры тестировались в системе Red Hat Linux, практически весь материал относится к большинству систем семейства Unix.
Структура книги
Книга делится на четыре основные части, каждая из которых посвящена отдельному аспекту СУБД PostgreSQL. В заключительную, пятую, часть вошли справочные описания команд и несколько технических приложений.
Часть I, «Общие сведения и установка», знакомит читателя с PostgreSQL. В ней рассказано, что такое PostgreSQL, где найти этот пакет и как установить его в системе. В ней также рассматриваются различные ключи компиляции, позволяющие настроить PostgreSQL для конкретной ситуации.
В части II
Часть III, «Администрирование PostgreSQL», посвящена вопросам, представляющим интерес для каждого администратора баз данных (или для того, кто хочет им стать). В главе 8, «Аутентификация и шифрование», представлены средства аутентификации PostgreSQL и поддерживаемые типы шифрования данных. Глава 9, «Управление базами данных», описывает фундаментальные принципы управления базами данных PostgreSQL, включая инициализацию файловой системы и запуск/остановку сервера. В этой главе также приведена информация о создании и удалении баз данных, архивации и восстановлении архивов. В главе 10, «Управление пользователями и группами», рассказано о создании и удалении учетных записей пользователей и групп, а также об управлении привилегиями доступа.
Часть IV, «Программирование в PostgreSQL», знакомит читателя с программированием для PostgreSQL и процедурным языком PL/pgSQL, JDBC (Java Database Connectivity) и LXP. В главе 11, «PL/pgSQL», приводится информация о языке PL/pgSQL, включении его поддержки в базах данных и различных возможностях программирования. Глава 12, «JDBC», посвящена созданию JDBC-интерфейса с PostgreSQL и основам его практического использования. Эта часть книги завершается главой 13, «LXP», в которой рассматриваются проблемы установки, настройки и использования сервера приложений LXP совместно с сервером HTTP Apache.
Завершает книгу часть V, «Команды», которая содержит подробный справочник с описанием всех стандартных и расширенных команд SQL, поддерживаемых в PostgreSQL. Кроме того, в эту часть включено несколько технических приложений.
Платформа и версия PostgreSQL
На момент написания книги последняя версия PostgreSQL имела номер 7.1.3. Эта версия использовалась во всех примерах и для построения образца базы данных
Принятые обозначения
Для удобства изложения и восприятия материала в этой книге используются некоторые специальные обозначения.
Специальные термины, которые встречаются в тексте, выделены курсивом. Фрагменты кода обозначаются моноширинным шрифтом, а для названий файлов и элементов интерфейса используется специальный шрифт.
Во многих разделах имеются рубрики «Внимание», «Примечание» и «Совет», призванные привлечь внимание читателя. Каждая рубрика имеет свою специфику.
Внимание
Будьте осторожны, когда встретите эту рубрику. Гораздо лучше учиться на ошибках других, чем совершать ошибки самому.
Примечание
В эту рубрику вошли некоторые рассуждения, связанные с рассматриваемой темой, но лежащие вне контекста текущего раздела. Помните, в примечаниях часто содержатся крупицы мудрости.
Совет
Здесь содержатся советы тех, кто действительно знает, как работать с PostgreSQL В них вы найдете информацию о том, как сэкономить время при выполнении определенных задач или выбрать кратчайший путь их решения.
samoychiteli.ru
Введение | 2 |
Что такое PostgreSQL? | 3 |
Что такое PostgreSQL? | 4 |
Бесплатная версия | 5 |
Возможности PostgreSQL | 6 |
Что дальше? | 7 |
Установка PostgreSQL | 8 |
Подготовка к установке | 9 |
10 этапов установки PostgreSQL. Этап 1. Создание пользователя postgres. | 11 |
Этап 2. Установка пакета исходных текстов PostgreSQL. | 12 |
Этап 3. Настройка конфигурации. | 13 |
Этап 4. компиляция исходных текстов. | 14 |
Этап 5. Регрессионное тестирование. | 15 |
Этап 6. Установка откомпилированных программ и библиотек. | 16 |
Этап 7. Настройка переменных среды. | 17 |
Этап 8. Инициализация и запуск PostgreSQL. | 18 |
Этап 9. Настройка сценария SysV для PostgreSQL. | 19 |
Этап 10. Создание базы данных. | 20 |
Краткий курс SQL | 21 |
Знакомство с SQL | 22 |
Знакомство с реляционными базами данных | 23 |
Команды SQL | 25 |
Ключевые слова и идентификаторы | 27 |
Константы | 29 |
Специальные символы | 33 |
Комментарии | 35 |
Типы данных | 37 |
Символьные типы | 42 |
Числовые типы | 43 |
Геометрические типы | 52 |
Массивы | 53 |
Преобразование типов | 54 |
Таблицы в PostgreSQL | 55 |
SQL в PostgreSQL | 57 |
Знакомство с psql | 58 |
Использование таблиц | 61 |
Добавление данных командами INSERT и COPY | 69 |
Выборка данных командой SELECT | 73 |
Выбор источников в секции FROM | 76 |
Удаление дубликатов и ключевое слово DISTINCT | 78 |
Объединение наборов данных | 80 |
Группировка записей | 85 |
Сортировка записей | 87 |
Выбор интервалов записей | 89 |
Сравнение наборов записей | 90 |
Конструкции CASE | 92 |
Создание таблиц на базе существующих таблиц | 93 |
Модификация записей командой UPDATE | 94 |
Удаление записей командой DELETE | 96 |
Подзапросы | 97 |
Представления. Другие возможности SQL. | 98 |
Операторы и функции | 101 |
Операторы | 102 |
Правила использования операторов | 103 |
Строковые операторы | 104 |
Числовые операторы | 108 |
Логические операторы | 111 |
Операторы и NULL | 112 |
Приоритет операторов | 113 |
Функции. Использование функций. | 114 |
Математические функции | 115 |
Строковые функции | 123 |
Функции для работы с датой и временем | 133 |
Функции преобразования типа | 138 |
Агрегатные функции | 144 |
Клиенты PostgreSQL | 148 |
Дополнительные возможности клиента psql | 149 |
Загрузка запросов из внешних файлов | 153 |
Работа с переменными | 154 |
Графический клиент PgAccess | 157 |
Создание баз данных | 158 |
Нетривиальные возможности | 160 |
Индексы | 161 |
Нетривиальное использование таблиц | 165 |
Массивы | 172 |
Автоматизация стандартных процедур | 176 |
Транзакции и курсоры | 184 |
Расширение PostgreSQL | 189 |
Аутентификация и шифрование | 195 |
Управление базами данных | 207 |
Запуск и завершение PostgreSQL | 208 |
Сценарий SysV | 211 |
Инициализация файловой системы | 213 |
Создание и удаление баз данных | 215 |
Сопровождение базы данных | 219 |
Архивация и восстановление данных | 222 |
Восстановление базы данных | 225 |
Управление пользователями и группами | 229 |
Управление пользователями и группами | 230 |
Управление пользователями | 231 |
Управление группами | 237 |
Предоставление привилегий | 240 |
PL/pgSQL | 244 |
Поддержка PL/pgSQL | 245 |
Структура языка | 247 |
Переменные | 250 |
Возвращение переменных | 255 |
Передача управления | 258 |
Циклы | 262 |
Обработка ошибок и исключений | 266 |
PL/pgSQL и триггеры | 268 |
JDBC | 270 |
JDBC | 271 |
Построение драйвера JDBC для PostgreSQL | 272 |
Использование драйвера PostgreSQL | 273 |
Использование JDBC | 275 |
Специфика использования JDBC с PostgreSQL | 279 |
LXP | 280 |
Преимущества LXP | 281 |
Базовые возможности | 282 |
Установка и настройка LXP | 283 |
Знакомство с разметкой LXP | 287 |
Переменные и объекты LXP | 288 |
Использование cookie в LXP | 290 |
Лексический разбор тегов | 291 |
Условная логика | 293 |
Циклы | 296 |
Включение данных | 297 |
Включение файлов LXP | 298 |
Включение файлов с разделителями | 299 |
Включение файлов XML, RSS и RDF | 301 |
Включение внешних источников данных | 302 |
Внешние теги | 306 |
Команды PostgreSQL | 308 |
ABORT | 309 |
ALTER GROUP | 310 |
ALTER TABLE | 311 |
ALTER USER | 313 |
BEGIN | 314 |
CLOSE | 315 |
CLUSTER | 316 |
COMMENT | 317 |
COMMIT | 318 |
COPY | 319 |
CREATE AGGREGATE | 321 |
CREATE DATABASE | 323 |
CREATE FUNCTION | 325 |
CREATE GROUP | 326 |
CREATE INDEX | 327 |
CREATE LANGUAGE | 329 |
CREATE OPERATOR | 330 |
СREATE RULE | 332 |
CREATE SEQUENCE | 333 |
CREATE TABLE | 334 |
CREATE TABLE AS | 337 |
CRЕАТЕ TRIGGER | 338 |
CREATE TYPE | 339 |
CREATE USER | 341 |
CREATE VIEW | 342 |
CURRENT DATE. CURRENT_TIME. | 343 |
CURRENT_TIMESTAMP. CURRENT_USER. | 344 |
DECLARE | 345 |
DELETE | 346 |
DROP AGGREGATE | 347 |
DROP DATABASE | 348 |
DROP FUNCTION | 349 |
DROP GROUP. DROP INDEX. | 350 |
DROP LANGUAGE | 351 |
DROP OPERATOR | 352 |
DROP RULE. DROP SEQUENCE. | 353 |
DROP TABLE | 354 |
DROP TRIGGER | 355 |
DROP TYPE | 356 |
DROP USER | 357 |
DROP VIEW. END. | 358 |
EXPLAIN | 359 |
FETCH | 360 |
GRANT | 362 |
INSERT | 363 |
LISTEN | 364 |
LOAD | 365 |
LОСК | 366 |
MOVE | 367 |
NOTIFY | 368 |
REINDEX | 369 |
RESET | 370 |
REVOKE | 371 |
ROLLBACK | 372 |
SELECT | 373 |
SELECT INTO | 375 |
SET | 376 |
SET CONSTRAINTS | 377 |
SET TRANSACTION | 378 |
SHOW | 379 |
TRUNCATE | 380 |
UNLISTEN | 381 |
UPDATE | 382 |
VACUUM | 383 |
Приложения | 384 |
Приложение А. Типы расширенных кодировок. | 385 |
Приложение Б. Ключи командной строки postgres. | 386 |
Приложение В. Двоичный формат команды COPY. | 387 |
Приложение Г. Внутренние переменные psql. | 388 |
samoychiteli.ru
Иллюстрированный самоучитель по PostgreSQL › Краткий курс SQL › Таблицы в PostgreSQL [страница — 55] | Самоучители по программированию
Таблицы в PostgreSQL
Многие программисты (особенно обладающие опытом работы с другими реляционными СУБД на базе SQL) хорошо знакомы с общими концепциями реляционных баз данных, рассмотренными в этой главе. Тем не менее в разных РСУ БД используются разные механизмы работы с таблицами на системном уровне. В этом разделе более подробно описана реализация таблиц в PostgreSQL.
Системные поля
В PostgreSQL все таблицы содержат системные поля, которые остаются невидимыми для пользователя и не выводятся при выборке (если служебная информация не запрашивается специально). В системных полях хранятся метаданные, описывающие содержимое записей. Некоторые из них позволяют различать кортежи (фиксированные состояния записей) при работе с блоками транзакций (за дополнительной информацией о транзакциях обращайтесь к главе 7).
В табл. 3.25 перечислены системные поля, присутствующие в каждой записи в дополнение к полям, определенным пользователем в структуре таблицы.
Таблица 3.25. Системные поля.
Поле | Описание |
---|---|
old | 4-байтовый уникальный идентификатор объекта записи. В пределах одной таблицы значения end никогда не повторяются |
tableoid | Идентификатор объекта таблицы, содержащей запись. Имя таблицы связывается с идентификатором в системной таблице рg class |
xmin | Идентификатор транзакции вставки для кортежа |
cmin | Идентификатор команды, ассоциированной с транзакцией вставки для кортежа |
xmax | Идентификатор транзакции удаления для кортежа. Для видимых (не удаленных) кортежей равен нулю |
cmax | Идентификатор команды, ассоциированной с транзакцией удаления для кортежа. По аналогии с xmax равен нулю для видимых кортежей |
ctid | Идентификатор, описывающий физическое местонахождение кортежа в базе данных. Поле ctid содержит пару чисел: номер блока и индекс кортежа в блоке |
Идентификаторы объектов
Как было сказано в подразделе «Таблицы» раздела «Знакомство с реляционными базами данных», база данных содержит таблицы, а каждая таблица содержит хотя бы одно именованное поле. Таблица может содержать записи данных, но их наличие не является обязательным. Каждое поле записи, хранящейся в таблице, содержит некоторые данные или NULL.
Один из вопросов, которые приходится решать при операциях с базами данных, – как различить две записи с одинаковыми значениями полей? Для этого в PostgreSQL предусмотрены идентификаторы объектов (object identifiers, OID), уникальные в пределах таблицы. Иначе говоря, таблица никогда не содержит записи одинаковыми идентификаторами OID. Таким образом, даже если содержимое пользовательских полей двух записей полностью совпадает, на программном уровне записи можно различить по значению OID. Пример приведен в листинге 3.31.
Листинг 3.31. Идентификация записей по OID.
3Stdb=# SELECT * FROM my_list; todos ---------------------------------- Correct redundancies In my_list. Correct redundancies in my_list. (1 rows) testdb=# SELECT * .old FROM my_list: todos | old ---------------------------------------- Correct redundancies in my list. | 3391263 Correct redundancies In my list. | 3391264 (2 rows) testdb=# DELETE FROM my_list testdb-# WHERE old = 3391264; DELETE 1 testdb=# SELECT *.oid FROM my_list; todos old ---------------------------------------------- Correct redundancies in my list. | 3391263 (1 row)
samoychiteli.ru
Иллюстрированный самоучитель по PostgreSQL › SQL в PostgreSQL [страница — 57] | Самоучители по программированию
Наше знакомство с языком SQL продолжается. На этот раз основное внимание мы уделим практическим аспектам его применения. В этой главе будет показано, как при помощи команд SQL создавать таблицы, заполнять их данными и модифицировать эти данные.
Таблицы являются основными блоками хранения данных в базе. Перед любыми операциями создания, выборки или модификации записей необходимо сначала создать таблицу, в которой эти записи будут храниться. | В этом разделе рассматриваются процедуры создания, модификации и удаления таблиц командами CREATE TABLE, ALTER TABLE и DROP TABLE SQL (вопросам создания баз данных посвящена глава 9).
После создания таблицы с заданной структурой наступает следующий этап – заполнение таблицы данными. В PostgreSQL имеются три общих способа заполнения таблиц данными: | вставка новых группированных данных командой INSERT INTO;
Центральное место в SQL занимает команда SELECT, предназначенная для построения запросов и выборки данных из таблиц и представлений. Данные, возвращаемые в результате запроса, называются итоговым набором; как и таблицы, они состоят из записей и полей.
В секции FROM указывается источник данных – таблица или итоговый набор. Секция может содержать несколько источников, разделенных запятыми. Результат подобного перечисления функционально эквивалентен перекрестному объединению, о котором рассказано в подразделе «Объединение наборов данных».
Необязательное ключевое слово DISTINCT исключает дубликаты из итогового набора. Если ключевое слово ON отсутствует, из результатов запроса с ключевым словом DISTINCT исключаются записи с повторяющимися значениями целевых полей. Проверяются только поля, входящие в целевой список SELECT.
Как было показано в примере использования секции WHERE для выборки из двух таблиц (см. подраздел «Выбор источников в секции FROM»), существует возможность выборки данных из разных источников с объединением их полей. В SQL этот процесс формально называется объединением (join).
Секция GROUP BY представляет чрезвычайно мощную концепцию SQL – агрегирование. На практике агрегирование запросов SQL приводит к тому, что все записи с одинаковыми значениями выражения, заданного в секции GROUP BY, группируются в одну агрегатную запись.
Как упоминалось в главе 3, записи хранятся в таблицах в произвольном порядке. Более того, даже повторное выполнение запроса никоим образом не гарантирует одинакового порядка следования возвращаемых записей.
В PostgreSQL количество записей, выбираемых запросом SQL, не ограничивается. Обработка запроса, возвращающего несколько миллионов записей, займет много времени, но сервер не остановится, пока не вернет весь итоговый набор (или процесс не будет прерван извне).
Если объединения используются в SQL для слияния полей двух источников, то ключевые слова UNION, INTERSECT и EXCEPT сравнивают значения полей в двух наборах и строят новый итоговый набор на основании результатов сравнения.
Чтобы программа SQL могла принимать простейшие решения, не прибегая к процедурным языкам, в PostgreSQL поддерживаются конструкции CASE, предусмотренные стандартом SQL Ключевые слова SQL CASE, WHEN, THEN и END позволяют выполнять простые условные преобразования записей.
Команда SELECT с секцией INTO TABLE создает новую таблицу, структура и содержимое которой определяются итоговым набором запроса. Синтаксис: | SELECT цели_выборки | INTO [ TABLE ] новая_таблица FROM старая_таблица | В этом варианте команда SELECT косвенно выполняет команду CREATE TABLE.
После того как записи сохранены в базе данных, вы можете обновить их поля командой SQL UPDATE. Новые значения полей задаются в виде констант, идентификаторов других баз данных или выражений. Допускается обновление как поля в целом, так и подмножества его значений в соответствии с заданными условиями.
Удаление записей из таблиц производится стандартной командой SQL DELETE. Вызов DELETE приводит к необратимым последствиям (исключение составляют тщательно спланированные транзакционные блоки), поэтому удаление данных из базы требует крайней осторожности.
Поддержка подзапросов, впервые реализованная в PostgreSQL версии 6.3, существенно повысила гибкость команд SQL. Подзапросом называется команда SELECT, заключенная в круглые скобки, которая выполняется в контексте другой команды SQL.
При работе с SQL нередко возникают ситуации, когда один и тот же запрос приходится использовать повторно. Ничто не раздражает так, как необходимость многократного ввода больших и сложных запросов в psql.
samoychiteli.ru
Иллюстрированный самоучитель по PostgreSQL › Управление базами данных › Запуск и завершение PostgreSQL [страница — 209] | Самоучители по программированию
Запуск и завершение PostgreSQL
Запуск PostgreSQL в приложении pg_ctl
Чтобы запустить серверный процесс PostgreSQL postmaster, передайте pg_ctl ключ start. Помните, что приложение pg_ctl должно запускаться пользователем postgres (или другим пользователем, которому принадлежит каталог данных PostgreSQL).
В листинге 9.1 приведен пример запуска postmaster с каталогом данных /usr/ local/pgsql/data. СУБД успешно запускается, выдает время последнего завершения работы базы данных и отладочную информацию, после чего пользователь postgres возвращается к приглашению командного интерпретатора.
Листинг 9.1. Запуск PostgreSQL в приложении pg_ctl.
[postgres@booktown – ]$ pg_ctl – D /usr/1oca!/pgsql/data start postmaster successfully started DEBUG: database system was shut down at 2001-09-17 08:06:34 POT DEBUG: Checkpoint record at (0. 1000524052) DEBUG: Redo record at (0. 1000524052): Undo record at (0. 0): Shutdown TRUE DEBUG: NextTransactionld: 815832: NextOid: 3628113 DEBUG: database system is in production state [postgres@booktown – ]$
Завершение PostgreSQL в приложении pg_ctl
Серверный процесс PostgreSQL postmaster можно остановить той же программой pg_ctl, которой он был запущен. Приложение pg_ctl проверяет Наличие работающего процесса postmaster, и если команда stop была выдана владельцем работающего процесса (например, пользователем postgres), сервер PostgreSQL прекращает работу.
Существуют три режима завершения серверного процесса PostgreSQL: интеллектуальный (smart), ускоренный (fast) и немедленный (immediate). Режим завершения задается ключом – т при вызове pg_ctl.
В интеллектуальном режиме (используемом по умолчанию) PostgreSQL перед завершением ждет, пока все клиенты отключатся от сервера. В ускоренном режиме PostgreSQL просто начинает стандартную процедуру завершения, не проверяя состояние клиентских подключений. В немедленном режиме стандартная процедура завершения пропускается, и при последующем перезапуске система должна пройти через режим восстановления.
Внимание
Никогда не завершайте процесс postmaster командой kill – 9 (kill – KILL), что приводит к потере или порче данных.
В листинге 9.2 сценарий pg_ctl завершает процесс postmaster в ускоренном режиме. Процесс postmaster прекращает работу, не дожидаясь отключения клиентов.
Листинг 9.2. Завершение PostgreSQL в приложении pg_ctl.
[postgres@booktown – ]$ pg_ctl – D /usr/local/pgsql/data stop – m fast Fast Shutdown request at Mon Sep 17 09:23:39 2001 DEBUG: shutting down waiting for postmaster to shut down….. DEBUG: database system is shut down done postmaster successfully shut down [postgres@booktown – ]$
Примечание
Завершение в режиме smart эквивалентно команде kil I – TERM для процесса postmaster. Режим fast эквивалентен команде kill – INT, а аналогом режима immediate является команда kill – QUIT.
samoychiteli.ru
Иллюстрированный самоучитель по PostgreSQL › SQL в PostgreSQL › Знакомство с psql [страница — 58] | Самоучители по программированию
Знакомство с psql
Наше знакомство с языком SQL продолжается. На этот раз основное внимание мы уделим практическим аспектам его применения. В этой главе будет показано, как при помощи команд SQL создавать таблицы, заполнять их данными и модифицировать эти данные.
Система PostgreSQL, как и большинство сетевых СУБД, основана па парадигме «клиент-сервер». Центральное место в PostgreSQL занимает процесс postmaster, предназначенный не для прямого взаимодействия с пользователем, а для обслуживания подключений со стороны различных клиентов.
При запуске службы (service) PostgreSQL процесс postmaster начинает работать в фоновом режиме, прослушивая заданный порт TCP/IP в ожидании подключений со стороны клиентов. По умолчанию postmaster ведет прослушивание порта 5432.
Существует несколько интерфейсов, через которые клиент подключается к процессу postmaster. В примерах этой книги используется psql – самый универсальный и доступный клиент, входящий в комплект поставки PostgreSQL.
В этой главе описаны основные принципы работы с psql, процедуры создания и использования таблиц, а также некоторые операции с данными в таблицах. Кроме того, в ней рассматриваются подзапросы и представления SQL.
Клиент psql работает в режиме командной строки и входит в комплект поставки PostgreSQL. Его часто называют интерактивным монитором или интерактивным терминалом. Этот простой, но мощный инструмент позволяет напрямую работать с сервером PostgreSQL и потому особенно хорошо подходит для экспериментов.
Запуск psql
Перед запуском psql убедитесь в том, что двоичный файл psql находится в стандартном каталоге исполняемых файлов (например, /usr/bin), либо путь к каталогу двоичных файлов PostgreSQL (например, /usr/local/pgsql/bin) включен в список каталогов переменной среды PATH. За дополнительной информацией обращайтесь к главе 2.
Способ присваивания значения переменной PATH зависит от командного интерпретатора. В bash или ksh соответствующая команда может выглядеть так:
$ export PATH=$PATH:/usr/local/pgsql/bin
В интерпретаторах csh или tcsh используется несколько иной синтаксис:
$ set path=(Spath /usr/local/pgsql/bin)
Листинг 4.1, относящийся к интерпретатору bash, иллюстрирует процедуру назначения системного пути для клиента 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/XHR6/tnn [user@host user]$ export PATH=$PATH:/usr/local/pgsql/bin [user@host user]$ psql testdb Welcome to psql .the PostgreSQL interactive terminal. Type: \copyright for distribution terms \h for help with SQL commands \? for help on internal slash commands \g or terminate with semicolon to execute query \q to quit testdb= <strong>#</strong>
После настройки переменной PATH интерактивный терминал PostgreSQL запускается командой psql, за которой следует имя базы данных.
Внимание
После выхода из psql изменения переменной среды будут потеряны. Чтобы изменения переменной PATH сохранялись после выхода из программы, команда настройки PATH включается в стартовый сценарий командного интерпретатора (например, ~/.bash_profile).
samoychiteli.ru