Следующая команда выводит имя текущего
Следующая команда выводит имя текущего пользователя, подключенного к базе данных testdb:
testdb=# SELECT CURRENTJJSER AS myself;
myself
(1 row)
В следующем фрагменте объявляется курсор
В следующем фрагменте объявляется курсор cur_publ i sher, который затем используется для выборки двух записей. В клиенте psql результаты выборки отображаются немедленно.
booktown=# BEGIN WORK; BEGIN
booktown=# DECLARE cur_publisher CURSOR FOR SELECT name FROM publishers: SELECT
booktown=# FETCH FORWARD 2 IN cur_publisher; name
Kids Can Press
Henry Holt & Company. Inc.
(2 rows)
Следующая команда удаляет из таблицы
Следующая команда удаляет из таблицы shipments все записи о поставках книг покупателю с кодом 142 и датой отгрузки, предшествующей 7 августа 2001 года.
booktown-# DELETE FROM shipments
booktown-# WHERE customeMd = 142
booktown-# AND ship_date < '2001-08-07';
DELETE 1
Следующая команда удаляет агрегатную функцию
Следующая команда удаляет агрегатную функцию sum, работающую с типом text:
booktown=# DROP AGGREGATE sum text;
DROP
Следующая команда удаляет базу данных
Следующая команда удаляет базу данных testdb:
tempiatel=# DROP DATABASE testdb:
DROP
Следующая команда удаляет функцию
Следующая команда удаляет функцию title(integer) из базы данных booktown:
booktown=# DROP FUNCTION tit1e(integer):
DROP
Следующая команда удаляет группу sales:
Следующая команда удаляет группу sales:
booktown=# DROP GROUP sales;
DROP GROUP
Следующая команда удаляет индекс customer_id_idx
Следующая команда удаляет индекс customer_id_idx из базы данных booktown:
booktown=# DROP INDEX customer_id_idx;
DROP
Следующая команда удаляет язык pi
Следующая команда удаляет язык pi example из базы данных booktown:
booktown=# DROP PROCEDURAL LANGUAGE 'plexample':
DROP
Следующая команда удаляет бинарный оператор
Следующая команда удаляет бинарный оператор !#, работающий с двумя операндами типа Integer:
booktown=# DROP OPERATOR !# (integer, integer);
DROP
Следующая команда удаляет правило sync_stock_with_editions:
Следующая команда удаляет правило sync_stock_with_editions:
booktown=# DROP RULE sync_stock_with_editions;
DROP
удаляющая из базы данных последовательность
Команда, удаляющая из базы данных последовательность shipments_ship_id_seq:
booktown=# DROP SEQUENCE shipments_ship_id_seq;
DROP
Следующая команда удаляет таблицу employees
Следующая команда удаляет таблицу employees из базы данных booktown:
booktown=# DROP TABLE employees:
DROP
Следующая команда удаляет триггер sync_authors_books
Следующая команда удаляет триггер sync_authors_books из таблицы authors базы данных booktown:
booktown-# DROP TRIGGER sync_authors_books ON authors:
DROP
Следующая команда удаляет тип данных
Следующая команда удаляет тип данных zero из базы данных booktown:
booktown=# DROP TYPE zero;
DROP
Следующая команда удаляет из системы
Следующая команда удаляет из системы пользователя PostgreSQL с именем Jonathan:
tempiatel=# DROP USER Jonathan;
DROP
Следующая команда удаляет представление h_publishers
Следующая команда удаляет представление h_publishers из базы данных booktown:
booktown=# DROP VIEW h_publishers;
DROP
В следующем примере транзакция фиксируется
В следующем примере транзакция фиксируется командой END.
booktown=# END WORK;
COMMIT
В следующем фрагменте продемонстрированы ожидание
В следующем фрагменте продемонстрированы ожидание и уведомление о событии в клиенте psql:
booktown=# LISTEN publisherjjpdate;
LISTEN
booktown=# NOTIFY publisherjjpdate:
Asynchronous NOTIFY 'publisherjjpdate' from backend with pid '16864' received.
Следующая команда загружает объектный файл
Следующая команда загружает объектный файл /usr/local/src/lxp/libxpl.so в базу данных 1х:
lx=# LOAD 7usr/local/src/lxp/libxpl.so';
LOAD
Следующая команда блокирует таблицу books
Следующая команда блокирует таблицу books в базе данных booktown в режиме
ACCESS EXCLUSIVE:
booktown=# BEGIN;
BEGIN
booktown=# LOCK TABLE books IN ACCESS EXCLUSIVE MODE;
LOCK TABLE
В следующем фрагменте первая команда
В следующем фрагменте первая команда определяет некоторое событие, а вторая команда уведомляет серверный процесс о наступлении этого события:
booktown=# LISTEN publisherjteletion;
LISTEN
booktown=# NOTIFY publisherjjeletlon;
Asynchronous NOTIFY 'publisher_deletion' from backend with pid '16864' received.
Следующая команда восстанавливает все индексы
Следующая команда восстанавливает все индексы для таблицы books базы данных booktown:
booktown=# REINDEX TABLE books;
REINDEX
Следующая команда присваивает переменной SEED
Следующая команда присваивает переменной SEED значение по умолчанию:
testdb=# RESET SEED;
RESET VARIABLE
Следующая команда лишает пользователя guest
Следующая команда лишает пользователя guest права вставки новых записей в таблицу books:
booktown=# REVOKE INSERT ON guest FROM books;
CHANGE
и создает таблицу, после чего
Следующий код начинает транзакцию и создает таблицу, после чего транзакция фиксируется в базе данных:
booktown=# BEGIN WORK;
BEGIN
booktown=# CREATE TABLE test (id integer, name text);
CREATE
booktown=# COMMIT WORK;
COMMIT
Пример использования команды ROLLBACK для
Пример использования команды ROLLBACK для отмены случайно введенной команды DELETE:
booktown=# BEGIN WORK;
BEGIN
booktown=# DELETE FROM shipments;
DELETE 36
booktown=# ROLLBACK WORK:
ROLLBACK
Следующая команда создает временную таблицу
Следующая команда создает временную таблицу для хранения записей о работниках, коды которых меньше 105:
booktown=# SELECT * INTO TEMP TABLE old_emp
booktown-# FROM employees booktown-# WHERE id < 105;
SELECT
Следующая команда выбирает режим немедленной
Следующая команда выбирает режим немедленной проверки всех ограничений в текущей транзакции:
booktown=# SET CONSTRAINTS ALL IMMEDIATE;
SET CONSTRAINTS
Следующая команда удаляет все записи
Следующая команда удаляет все записи из таблицы temp_emp:
booktown=# TRUNCATE TABLE temp_emp;
TRUNCATE
Следующий код выводит список всех
Следующий код выводит список всех событий, ожидаемых в настоящий момент, после чего прекращает ожидание события publ i sher_update:
booktown=# SELECT relname FROM pgjistener; «
relname
publisherjjpdate publisher_delete (2 rows)
booktown=# UNLISTEN publisherjjpdate; UNLISTEN
booktown=# SELECT relname FROM pgjistener: relname
publisher_delete
В следующем примере значение поля
В следующем примере значение поля stock в записи книги с заданным кодом ISBN увеличивается на 1:
booktown=# UPDATE stock SET stock = stock + 1 WHERE isbn = '0385121679':
UPDATE 1
Следующий код открывает транзакцию, объявляет
Следующий код открывает транзакцию, объявляет курсор cur_publishers и закрывает его.
booktown=# BEGIN;
BEGIN
booktown=# DECLARE cur_publishers CURSOR FOR SELECT * FROM publishers;
SELECT
booktown=# CLOSE cur_publishers;
CLOSE
Ниже приведен пример выполнения команды
Ниже приведен пример выполнения команды VACUUM с ключевым словом VERBOSE для таблицы books:
booktown=# VACUUM VERBOSE books;
NOTICE: --Relation books--
NOTICE: Pages 1: Changed 0. reaped 1. Empty 0. New 0; Tup 15:
Vac 0. Keep/VTL 0/0. Crash 0. UnUsed 5. MinLen 52.
MaxLen 76: Re-using: Free/Avail. Space 7108/0:
EndEmpty/Avail. Pages 0/0. CPU 0.00s/0.00u sec.
NOTICE: Index books_id_pkey: Pages 2; Tuples 15: Deleted 0.
CPU 0.00s/0.00u sec.
Следующая команда производит кластеризацию таблицы
Следующая команда производит кластеризацию таблицы subjects на базе индекса
subjects_pkey:
booktown=# CLUSTER subjects_pkey ON subjects;
CLUSTER
Следующая команда копирует содержимое таблицы
Следующая команда копирует содержимое таблицы employees в файл emp_table с разделением полей символом |:
booktown=# COPY employees TO '/tmp/employee_data' USING DELIMITERS '|';
COPY
Копирование данных из файла в таблицу publishers:
booktown=# COPY publishers FROM Vtmp/publisher_data';
COPY
Следующая команда создает базу данных
Следующая команда создает базу данных с именем booktown:
tempiatel=# CREATE DATABASE booktown;
CREATE DATABASE
В следующем фрагменте та же база данных создается в другом каталоге:
tempiatelHf CREATE DATABASE booktown WITH LOCATION = '/usr/local/pgsql/booktown';
CREATE DATABASE
В следующем примере создается простая
В следующем примере создается простая функция SQL, которая возвращает название книги по ее коду, переданному функции:
booktown=# CREATE FUNCTION title(integer) RETURNS text
booktown-# AS 'SELECT title from books where id - $1'
booktown-# LANGUAGE 'sql':
CREATE
Теперь функция title() может использоваться в базе данных booktown для выборки записей, у которых поле id совпадает с переданным числовым аргументом:
booktown=# SELECT title(41472) AS book_title;
book title
Practical PostgreSQL
(1 row)
Следующая команда создает пустую группу
Следующая команда создает пустую группу с именем management:
booktown=# CREATE GROUP management;
CREATE GROUP
В следующем примере создается группа accounting, состоящая из двух пользователей, имена которых указаны в секции WITH USER:
booktown=# CREATE GROUP accounting WITH USER vincent, alien;
CREATE GROUP
Следующая команда строит уникальный индекс
Следующая команда строит уникальный индекс по полю Id таблицы employees:
booktown=# CREATE UNIQUE INDEX employee_id_idx
booktown-# ON employees (id);
CREATE
В другом фрагменте по полю last_name таблицы employees строится функциональный индекс с использованием функции upper():
booktown=# CREATE INDEX employee_upper_name_idx
booktown-# ON employees (upper(last_name));
CREATE
При выполнении команды CREATE LANGUAGE
При выполнении команды CREATE LANGUAGE обработчик для соответствующего языка должен быть создан заранее. Регистрация процедурных языков начинается с создания функции, задающей местонахождение объектного кода обработчика. В следующем фрагменте создается обработчик, объектный код которого находится в файле /usr/local/pgsql/lib/libexample.so:
booktown=# CREATE FUNCTION example_call_handler ( ) RETURNS opaque
booktown-# AS '/usr/local/pgsql/lib/libexample.so'
booktown-# LANGUAGE 'C';
CREATE
На втором этапе командой CREATE LANGUAGE существующий язык загружается в подключенную базу данных. В следующем примере создается язык plexample, использующий обработчик из предыдущего примера:
booktown=# CREATE PROCEDURAL LANGUAGE 'piexample'
booktown-# HANDLER example_call_handler
booktown-# LANCOMPILER 'My Example':
CREATE
После того как последовательность создана,
Пример создания последовательности с именем shipments_ship_id_seq:
booktown=# CREATE SEQUENCE shipments_ship_id_seq
booktown-# START 2000 INCREMENT 1;
CREATE
После того как последовательность создана, для получения ее следующего элемента можно воспользоваться функцией nextval ():
booktown=# SELECT nextval ('shipments_ship_id_seq');
nextval
200
(1 row)
Последовательности часто используются в команде INSERT:
booktown=# INSERT INTO shipments VALUES
booktown-# (nextval('shipments_ship_id_seq'),
booktown-# 107. '0394800753', 'now');
Следующая команда определяет триггер, вызываемый
Следующая команда определяет триггер, вызываемый при обновлении существующей записи в таблице authors:
booktown=# CREATE TRIGGER sync_authors_books
Dooktown-# BEFORE UPDATE
booktown-# ON authors
booktown-# FOR EACH ROW
booktown-# EXECUTE PROCEDURE sync authors and booksO;
CREATE
Функция PL/pgSQL sync_authors_and_books () обновляет значение поля author_id таблицы books при обновлении ноля id в таблице authors. Тем самым поддерживается синхронизация таблиц books и authors. Аналогичного эффекта можно было бы добиться при помощи ограничения FOREIGN KEY (см. главу 7).
Следующая команда включает пользователей PostgreSQL
Следующая команда включает пользователей PostgreSQL с именами Jessica и wiП1 am в группу sales:
booktown=# ALTER GROUP sales ADD USER Jessica, william:
ALTER
Удаление пользователя Jessica из группы sales:
booktown=# ALTER GROUP sales DROP USER Jessica:
ALTER
в таблицу employees новое поле
Следующая команда включает в таблицу employees новое поле address типа text:
booktown=# ALTER TABLE employees ADD COLUMN address text;
ALTER
Затем созданное поле address переименовывается в mailing_address:
booktown=# ALTER TABLE employees RENAME COLUMN address TO mailing_address;
ALTER
Переименование таблицы employees в personnel:
booktown=# ALTER TABLE employees RENAME TO personnel;
ALTER
Следующая команда назначает новым владельцем таблицы personnel пользователя PostgreSQL с именем Jonathan:
booktown=# ALTER TABLE personnel OWNER TO Jonathan:
ALTER
Наконец, следующая команда устанавливает для таблицы schedules ограничение внешнего ключа с именем valid_employee, проверяющее присутствие поля id в таблице personnel:
booktown=# ALTER TABLE schedules ADD CONSTRAINT valid_employee
booktown-# FOREIGN KEY (employeejd)
booktown-# REFERENCES personnel (id) MATCH FULL;
NOTICE: ALTER TABLE ... ADD CONSTRAINT will create implicit trigger(s) for
FOREIGN KEY check(s)
CREATE
Ниже приведены результаты, полученные при
Ниже приведены результаты, полученные при выполнении команды EXPLAIN для запроса к таблице books базы данных booktown.
booktown=# EXPLAIN SELECT * FROM books AS b (book_id)
booktown-* NATURAL INNER JOIN editions;
NOTICE: QUERY PLAN:
Merge Join (cost=71.27..83.96 rows=150 width=64)
-> Sort (cost=1.44..1.44 rows=15 width=24)
-> Seq Scan on books b (cost=0.00..1.15 rows=15 width=24)
-> Sort (cost=69.83..69.83 rows=1000 width=40)
-> Seq Scan on editions (cost=0.00..20.00 rows=1000 width=40)
EXPLAIN
В следующем примере приведен расширенный вывод для более простого запроса с ключевым словом VERBOSE.
booktown=# EXPLAIN VERBOSE SELECT * FROM books;
NOTICE: QUERY DUMP:
{ SEQSCAN :startup_cost 0.00 :total_cost 1.15 :rows 15 :width 24 :qptargetlist
({ TARGETENTRY :resdom { RESDOM :resno 1 :restype 23 :restypmod -1 :resname id
:reskey 0 :reskeyop 0 :ressortgroupref 0 :resjunk false } :expr { VAR :varno 1
:varattno 1 :vartype 23 :vartypmod -1 :varlevelsup 0 :varnoold 1 :varoattno 1}}
{ TARGETENTRY :resdom { RESDOM :resno 2 :restype 25 :restypmod -1 :resname title :reskey 0
:reskeyop 0 :ressortgroupref 0 :resjunk false } :expr { VAR :varno 1
:varattno 2 :vartype 25 :vartypmod -1 :varlevelsup 0 :varnoold 1 :varoattno 2}}
{ TARGETENTRY :resdom { RESDOM :resno 3 :restype 23 :restypmod -1 :resname
authoMd :reskey 0 :reskeyop 0 :ressortgroupref 0 :resjunk false } :expr
{ VAR :varno 1 :varattno 3 :vartype 23 :vartypmod -1 :varlevelsup 0 :varnoold
1 :varoattno 3}} { TARGETENTRY :resdom { RESDOM :resno 4 :restype 23 :restypmod
-1 :resname subject_id :reskey 0 :reskeyop 0 :ressortgroupref 0 :resjunk false }
:expr { VAR :varno 1 :varattno 4 :vartype 23 :vartypmod -1 :varlevelsup 0
:varnoold 1 :varoattno 4}}) :qpqual <> :lefttree <> :righttree <> :extprm
0 :locprm 0 :initplan <> :nprm 0 :scanrelid 1 }
NOTICE: QUERY PLAN:
Seq Scan on books (cost=0.00..1.15 rows=15 width=24)
EXPLAIN
В дальнейших примерах используется курсор
В дальнейших примерах используется курсор cur_empl oyee, возвращающий данные из таблицы employees.
Следующая команда выбирает первые две записи через курсор cur_employee:
booktown=# BEGIN:
BEGIN
booktown=# DECLARE cur_employee CURSOR FOR
booktown-# SELECT firstjiame, lastjiame FROM employees:
SELECT
booktown=# FETCH FORWARD 2 IN cur_employee;
first_name last_name
Vincent | Appel
Michael Holloway
(2 rows)
В следующем примере конструкция BACKWARD -2 (двойное отрицание) также производит выборку двух записей в прямом направлении:
booktown=# FETCH BACKWARD -2 IN cur_employee:
firstjiame | last_name
David Joble Ben Noble
(2 rows)
Наконец, следующая команда демонстрирует выборку в обратном направлении через курсор cur_employee.
booktown=# FETCH BACKWARD 3 IN cur_employee;
first_name | last_name
David Joble
Michael Holloway
Vincent Appel
(3 rows)
Следующая команда изменяет пароль пользователя
Следующая команда изменяет пароль пользователя mark:
booktown=# ALTER USER mark WITH PASSWORD 'т10215еm';
ALTER USER
Изменение срока действия пароля для пользователя mark:
booktown=# ALTER USER mark VALID UNTIL 'Dec 24 2012';
ALTER USER
Следующая команда предоставляет пользователю manager
Следующая команда предоставляет пользователю manager все права доступа к таблице publishers:
booktown=# GRANT ALL ON publishers TO manager;
GRANT
Ниже приведен пример использования команды \z клиента psql для вывода информации о правах доступа к таблице publ I shers:
booktown=# \z publishers
Access permissions for database "booktown"
Relation | Access permissions
publishers | {"=","manager=arwR"}
(1 row)
Следующая команда вставляет одну запись
Следующая команда вставляет одну запись в таблицу employees:
booktown=# INSERT INTO employees
booktown-# VALUES (106. 'Hall'. 'Timothy');
INSERT 3752064 1
В другом примере задаются значения полей i d и 1 astjname (без поля f I rstjname); эти поля перечисляются в списке, предшествующем секции VALUES. В результате поле firstjiame инициализируется значением NULL:
booktown=# INSERT INTO employees (id. lastjiame)
booktown=# VALUES (108, 'Williams');
INSERT 3752065 1
В последнем примере вес 15 записей таблицы books сохраняются в таблице books_backup, при этом источником данных при вставке является запрос:
booktown=# INSERT INTO book_backup
booktown-# SELECT * FROM books;
INSERT 0 15
В этих примерах используется транзакция
В этих примерах используется транзакция и курсор cur_employee, возвращающий данные из таблицы employees. Следующая команда MOVE смещает курсор на одну запись вперед в итоговом наборе:
booktown=# MOVE FORWARD 1 IN cur_employee;
MOVE
Выходные данные команды состоят из единственного сообщения MOVE. В следующем примере команда FETCH используется для отображения второй записи (после перемещения курсора):
booktown=# FETCH I IN cur_employee;
first_name | lastjiame
Michael Holloway
(1 row)
Следующая команда возвращает все записи
Следующая команда возвращает все записи из таблицы books:
booktown=# SELECT * FROM books;
id 1 title | authorjd | subjectjd
7808 | The Shining 4156 9
4513 Dune 1866 | 15
4267 | 2001: A Space Odyssey 2001 15
1608 The Cat in the Hat 1809 2
1590 Bartholomew and the Oobleck 1809 2
25908 Franklin in the Dark 15990 | 2
1501 Goodnight Moon 2031 | 2
190 Little Women 16 6
1234 The Velveteen Rabbit 25041 3
2038 Dynamic Anatomy 1644 | 0
156 The Tell-Tale Heart 115 9
41472 Practical PostgreSQL 1212 4
41473 | Programming Python 7805 | 4
41477 Learning Python 7805 j 4
41478 | Perl Cookbook 7806 | 4
(15 rows)
В другом примере выборка ограничивается записями с кодом, большим 5000:
booktown=# SELECT * FROM books WHERE id > 5000;
id title | authorjd | subjectjd
7808 | The Shining | 4156 | 9 25908
Franklin in the Dark 15990 2
41472 Practical PostgreSQL | 1212 4
41473 I Programming Python 7805 | 4
41477 I Learning Python 7805 | 4
41478 | Perl Cookbook 7806 | 4
(6 rows)
В следующем фрагменте при помощи
В следующем фрагменте при помощи переменной DATESTYLE выбирается традиционный формат даты PostgreSQL (Postgres) с дополнительным форматом US, обеспечивающим представление даты по американским стандартам.
booktown=# SET DATESTYLE TO Postgres.US:
SET VARIABLE
В следующем примере выбирается формат представления даты и времени по стандарту ISO:
booktown=# SET DATESTYLE TO ISO:
SET VARIABLE
Следующая команда устанавливает для текущей
Следующая команда устанавливает для текущей транзакции уровень изоляции
SERIALIZABLE:
testdb=# SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SET VARIABLE
Ниже приведен пример назначения нового уровня изоляции для текущего сеанса:
testdb=# SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SET VARIABLE
Следующая команда выводит уровень изоляции
Следующая команда выводит уровень изоляции текущей транзакции:
booktown=# SHOW TRANSACTION ISOLATION LEVEL;
NOTICE: TRANSACTION ISOLATION LEVEL is SERIALIZABLE
SHOW VARIABLE
Другая команда выводит текущий стиль представления даты:
booktown=# SHOW DATESTYLE;
NOTICE: DateStyle is ISO with US (NonEuropean) conventions
SHOW VARIABLE
Следующая команда создает комментарий для
Следующая команда создает комментарий для таблицы customers:
booktown=# COMMENT ON TABLE customers IS 'For customer names.';
COMMENT
Удаление комментария к таблице customers:
booktown=# COMMENT ON TABLE customers IS NULL;
REINDEX
REINDEX
Восстановление индексов в таблицах.
Синтаксис
REINDEX { TABLE | DATABASE | INDEX } объект [ FORCE ]
Параметры
TABLE ] DATABASE | INDEX. Тип индексируемого объекта. объект. Имя индексируемого объекта. FORCE. Ключевое слово FORCE восстанавливает индексы для всех перечисленных объектов. Если параметр не задан, восстанавливаются только поврежденные индексы.Результаты
REINDEX. Это сообщение выдается при успешной реиндексации целевого объекта.
Описание
Команда REINDEX восстанавливает (строит заново) поврежденные индексы. Возможность восстановления особенно важна при повреждении системных индексов. Чтобы восстановить системные индексы, завершите процесс postmaster и запустите его с ключом командной строки -о " -О -Р". В результате запускается автономный сервер, допускающий восстановление системных индексов. В приглашении командной строки psql введите команду REINDEX DATABASE.
RESET
RESET
Восстановление стандартных значений конфигурационных переменных.
Синтаксис
RESET переменная
Параметры
Переменная, которой присваивается значение по умолчанию.
Результаты
RESET VARIABLE. Это сообщение выдается при успешном сбросе переменной.
Описание
Команда RESET восстанавливает стандартные значения конфигурационных переменных. За дополнительной информацией об этих переменных и их первоначальных значениях обращайтесь к описанию команды SET.
Аналогичного результата можно добиться при помощи следующей команды:
SET переменная ТО DEFAULT
REVOKE
REVOKE
Отмена привилегий доступа у пользователя, группы или всех пользователей.
Синтаксис
REVOKE привилегия [. ... ]
ON объект [. ...]
FROM { PUBLIC | GROUP группа \ пользователь }
Параметры
привилегия. Отменяемая привилегия. Значения SELECT, INSERT, UPDATE и DELETE отменяют привилегии использования соответствующих команд. Значение RULE отменяет привилегию создания правил в таблицах. Значение ALL отменяет все привилегии доступа для таблицы или другого объекта. объект. Имя объекта, для которого отменяются привилегии. Таким объектом может быть таблица, представление или последовательность. группа. Имя группы, которая лишается привилегии. пользователь. Имя пользователя PostgreSQL, который лишается привилегии. PUBLIC. Ключевое слово PUBLIC лишает всех пользователей PostgreSQL указанной привилегии.Результаты
CHANGE. Сообщение возвращается, если привилегии были успешно отменены. ERROR: Relation 'объект' does not exist. Ошибка — указанный объект не найден в текущей базе данных. ERROR: aclparse: non-existent user "пользователь". Ошибка — пользовательс указанным именем не существует. ERROR: non-existent group "группа". Ошибка — группа не существует.Описание
Команда REVOKE отменяет привилегии доступа к объекту. Привилегии могут отзываться у конкретного пользователя, у группы или у всех пользователей (с ключевым словом PUBLIC).
ROLLBACK
ROLLBACK
Откат текущей транзакции с отменой всех изменений.
Синтаксис
ROLLBACK [ WORK TRANSACTION ]
Параметры
Необязательные ключевые слова, делающие команду SQL более наглядной.
Результаты
ROLLBACK. Сообщение выдается при успешном откате транзакции. NOTICE: ROLLBACK: no transaction In progress. Сообщение выдается при отсутствии незавершенных транзакций.Описание
Команда ROLLBACK прерывает текущую транзакцию и отменяет все изменения, находящиеся в очереди на фиксацию.
SELECT
SELECT
Выборка записей из таблицы или представления.
Синтаксис
SELECT [ ALL | DISTINCT [ ON ( уникальное_выражение [. ...] ) ] ]
цель [ AS выходное_имя ] [. ...]
[ FROM источник [ { . | CROSS JOIN } ...] ] [ WHERE условие_фильтрации ]
[ GROUP BY условие_группировки [. ... ] ]
[ HAVING агрегатное_условие [. ...] ]
[ { UNION | INTERSECT | EXCEPT } [ ALL ] подзапрос ]
[ ORDER BY выражение [ ASC DESC | USING оператор ] [. ...] ]
[ FOR UPDATE [ OF таблица [. ... 3 3 3
[ LIMIT { число | ALL } [ { OFFSET , } начало ] 3
источник ::= { [ ONLY ] таблица [ * 3
[ [ AS ] псевдоним источника [ ( список_псевдонимов) ] ] |
( подзапрос ) [ [ AS ] псевдоним [ ( список_псевдонимов ) ] ] |
источник [ NATURAL 3 тип_обьединения источник
[ ON ( условие_обьединения ) | USING ( список_полей_объединения ) ] }
тип_обьединения -.-.= [ INNER |
LEFT [ OUTER ]
RIGHT [ OUTER ]
FULL [ OUTER ] ] JOIN
Параметры
ALL | DISTINCT. Ключевое слово DISTINCT означает, что при наличии дубликатов в нескольких записях в выборку включается только одна (первая) запись. Ключевое слово ALL означает, что в выборку включаются все записи независимо от наличия дубликатов (используется по умолчанию). Обратите внимание: секция ORDER BY сортирует записи перед удалением дубликатов. Совместное использование этих секций позволяет убедиться в том, что в выборку включена именно та запись, которая вас интересует. DISTINCT ON. Ключевое слово ON, следующее за ключевым словом DISTINCT, позволяет задать одно или несколько выражений, уникальность которых проверяется командой. уникальное_выражение. Имя поля источника или синтаксически правильное выражение, уникальность значения которого проверяется секцией DISTINCT ON при удалении дубликатов. цель. Имя поля источника или синтаксически правильное выражение. выходное_имя. После ключевого слова AS указывается альтернативное имя выходного поля. В дальнейшем это имя используется при выводе данных, а также для ссылок в секциях ORDER BY и GROUP BY в той же команде SELECT. Помните, что это имя не действует в секциях WHERE и HAVING; в них должны использоваться настоящие имена. FROM источник. Таблица, подзапрос или объединенный набор, из которого берутся данные. { . | CROSS JOIN }. Перечисляемые источники разделяются запятыми или секциями CROSS JOIN. WHERE. Секция WHERE содержит условия фильтрации итогового набора. условие. Логическое выражение, применяемое к негруппированным целевым выражениям. GROUP BY. Секция GROUP BY содержит условия группировки записей. условие группировки. Имя поля источника или синтаксически правильное выражение, используемое для группировки записей. HAVING. Секция HAVING содержит условия фильтрации итогового набора. агрегатное условие. Логическое выражение, применяемое к группированным целевым выражениям. UNION. Слияние двух итоговых наборов, имеющих совместимую структуру, в один объединенный итоговый набор. INTERSECT. Из итогового набора исключаются все записи, не входящие в итоговый набор следующего подзапроса (то есть результат представляет собой пересечение двух множеств записей). EXCEPT. Из итогового набора исключаются все записи, входящие в итоговый набор следующего подзапроса (то есть результат представляет собой разность двух множеств записей). подзапрос. Полная команда SELECT. Чтобы в подзапрос могли входить секции ORDER BY, FOR UPDATE и LIMIT, он должен быть заключен в круглые скобки. ORDER BY. Сортировка итогового набора по заданным критериям. выражение [ ASC | DESC | USING оператор']. Имя поля итогового набора, по которому секция ORDER BY сортирует результаты. Ключевое слово ASC указывает на то, что сортировка выполняется по возрастанию (этот режим используется по умолчанию), а с ключевым словом DESC результат сортируется по убыванию. В секции USING указывается оператор (например, >), используемый для последующих сравнений. FOR UPDATE. Установка блокировки ROW SHARE MODE (см. описание команды LOCK) для таблицы-источника в текущей транзакции. OF таблица. Таблица, для которой устанавливается блокировка ROW SHARE MODE, если секция FROM содержит несколько таблиц. LIMIT. Вывод части полученного итогового набора. ALL | число. С ключевым словом ALL итоговый набор не ограничивается (режим используется по умолчанию). Если задан параметр число, итоговый набор ограничивается заданным количеством записей. { OFFSET | . } начало. Ключевое слово OFFSET (может заменяться запятой после ключевого слова LIMIT) означает, что в итоговом наборе игнорируется указанное количество начальных записей.Перечисленные ниже ключевые слова и параметры могут присутствовать в каждом определении источника.
[ ONLY ] таблица [ * ], Имя существующей таблицы или представления, из которого производится выборка. При отсутствии ключевого слова ONLY поиск также производится во всех производных таблицах. С этой же целью можно добавить после имени таблицы символ *. подзапрос. Команда SELECT, выполняемая в секции FROM другой команды SELECT. В результате выполнения подзапроса создается временная таблица, записи которой обрабатываются во время выполнения команды. Код подзапросов заключается в круглые скобки. [ AS ] псевдоним_источника. Альтернативное имя для источника данных, упоминаемого в секции FROM. список_псевдонимов. Разделенный запятыми список псевдонимов для полей предшествующего источника. Количество псевдонимов в списке может быть меньше количества нолей в источнике, к которому относится список. тип_объедипения. Тип объединения, задается одним из следующих значений: о [ INNER ] JOIN; LEFT [ OUTER ] JOIN; RIGHT [ OUTER ] JOIN; FULL [ OUTER ] JOIN. NATURAL. Необязательное ключевое слово NATURAL означает, что объединение двух источников производится по всем одноименным полям. Наличие ключевого слова NATURAL исключает необходимость объединения по явно заданным условиям. условие_объедипения. После ключевого слова ON указывается условие объединения. Синтаксис аналогичен синтаксису секции WHERE. список_полей_объединения. Список полей, приведенный в секции USING, представляет собой сокращенную запись для секции ON. Предполагается, что объединение производится по совпадающим значениям одноименных полей двух объединяемых источников.Результаты
Основным результатом команды SELECT является список записей итогового набора, за которым следует количество записей в выборке. Также возможны сообщения об ошибках.
ERROR: Relation 'источник' does not exist. Ошибка — указанная таблица или представление отсутствует в текущей базе данных. ERROR: Table name "источник" specified more than once. Ошибка — таблица или представление встречается в списке дважды без определения псевдонима. Ошибка исправляется определением псевдонима в секции AS для одного из источников. ERROR: Attribute 'поле' not found. Ошибка — поле не найдено ни в одном из перечисленных источников.Описание
Команда SELECT предназначена для выборки данных из таблицы, представления, подзапроса или набора, полученного в результате объединения. Секция WHERE определяет критерий отбора записей; если запись не удовлетворяет критерию, она не включается в набор. При отсутствии секции WHERE в выборку включаются все записи источника данных.
В команде SELECT могут включаться различные секции, полный список которых с краткими описаниями приведен выше в пункте «Параметры». Дополнительные примеры их использования имеются в главе 4.
SELECT INTO
SELECT INTO
Создание повой таблицы по результатам команды SELECT.
Синтаксис
SELECT [ ALL | DISTINCT [ ON ( уникальное_выражение [. ...] ) ] ]
цель [ AS выходное имя ] [, ...] [ INTO [ TEMPORARY | TEMP ] [ TABLE ] новая_таблица ]
[ FROM источник [ { . | CROSS JOIN } ...] ]
[ WHERE условие_фильтрации ]
[ GROUP BY условие_группировки [, ...] ]
[ HAVING агрегатное_усповие [, ...] ]
[ { UNION | INTERSECT | EXCEPT } [ ALL ] подзапрос ]
[ ORDER BY выражение [ ASC | DESC | USING оператор ] [. ...] ]
[ FOR UPDATE [ OF таблица [, ...]]]
[ LIMIT { число | ALL } [ { OFFSET | , } начало ] ]
источник ::= { [ ONLY ] таблица [ * ]
[ [ AS ] псевдоним_исгочника [ ( сгшсок_псевдонимов) ] ] |
( подзапрос ) [ [ AS ] псевдоним [ ( список_псевдонимов ) ] ] |
источник [ NATURAL ] тип_объединения источник
[ ON ( условие_обьединения ) USING ( список_полей_обьединения ) ]
тип_обьединения ::= [ INNER |
LEFT [ OUTER ]
RIGHT [ OUTER ] |
FULL [ OUTER ] ] JOIN
Параметры
Большая часть параметров команды SELECT INTO совпадает с параметрами команды SELECT. В команде SELECT INTO поддерживаются всего два новых параметра.
TEMPORARY, TEMP. Ключевое слово TEMPORARY (или TEMP) означает, что таблица предназначена для временного использования; после завершения сеанса она автоматически уничтожается. новая_таблица. Имя таблицы, создаваемой для хранения записей итогового набора запроса. Таблица создается автоматически и не должна существовать до момента выполнения команды.Результаты
Возможные результаты перечислены в описаниях команд CREATE TABLE и SELECT.
Описание
Команда SELECT INTO выполняет запрос и использует полученные записи для заполнения новой (автоматически созданной) таблицы. Имена полей и типы данных новой таблицы определяются структурой записей, полученных в результате запроса. С функциональной точки зрения команда SELECT INTO эквивалентна команде CREATE TABLE AS. На практике рекомендуется использовать команду CREATE TABLE AS, поскольку команда SELECT INTO не является стандартной и неправильно интерпретируется PL/pgSQL.
SET
SET
Присваивание значений конфигурационным переменным.
Синтаксис
SET переменная {ТО = } { значение \ 'значение' DEFAULT }
SET TIME ZONE { 'часовой_пояс' \ LOCAL DEFAULT }
Параметры
переменная. Имя конфигурационной переменной, которой присваивается новое значение. значение. Новое значение переменной. Ключевое слово DEFAULT возвращает переменной значение по умолчанию. часовой_пояс. Часовой пояс, в котором находится клиент. Допустимые значения: PST8PDT — тихоокеанское стандартное/летнее время (смещение от времени по Гринвичу — 8 часов); EST5EDT — стандартное/летнее время на восточном побережье (смещение от времени по Гринвичу — 5 часов); NZST13NZDT — Новая Зеландия, стандартное/летнее время (смещение от времени по Гринвичу — 13 часов). LOCAL. Часовой пояс определяется конфигурацией локальной системы. DEFAULT. Переменной возвращается значение по умолчанию.Результаты
SET VARIABLE. Сообщение выдается при успешном изменении значения переменной. ERROR: not a valid option name: (имя). Ошибка — переменная с указанным именем не существует. ERROR: permission denied. Ошибка — пользователь не обладает правами для изменения заданной переменной. ERROR: name can only be set at start-up. Ошибка — присваивание указанной переменной может выполняться только при запуске системы.Описание
Команда SET изменяет значения конфигурационных переменных PostgreSQL. Ниже перечислены переменные, с которыми работает команда SET.
CLIENT_ENCODING. Расширенная кодировка, используемая на стороне клиента (ее/и ее поддержка включена в PostgreSQL). DATESTYLE. Стиль представления даты и времени. Значение выбирается из ЧИСЛЕ основных форматов вывода, двух дополнительных форматов или же определяется комбинацией основного формата с дополнительным. Исходный формат даты/времени определяется переменной среды PGDATESTYLE. Также возможш инициализация формата при помощи ключей командной строки postmaster Например, при запуске postmaster с ключом -о "-е" выбирается европейски! формат представления даты (ключи postmaster описаны в главе 9). Ниже пере-числены допустимые стили представления даты и времени. ISO. Датам время выводятся в формате ISO-8601 (маска ГГГГ-ММ-ДД ЧЧ:ММ:СС) Формат используется по умолчанию. SQL. Дата и время выводятся в формате Oracle/Ingres. Несмотря на название, по умолчанию в SQL используется не этот формат, a ISO-8601. Postgres. Традиционный формат даты и времени PostgreSQL. о German. Немецкий формат даты (маска ДД. ММ. ГГГГ). European. Стандартный европейский формат даты, дополнение форматов SQL и PostgreSQL. Дата выводится в формате ДД/ММ/ГГГГ. NonEuropean, US. Стандартный американский формат даты, дополнение форматов SQL и PostgreSQL. Дата выводится в формате ММ/ДД/ГГГГ. SEED. Переменная инициализирует внутренний генератор случайных чисел PostgreSQL, используемый функцией randomO. Допустимыми значениями являются вещественные числа в интервале от 0 до 1. Переданное число умножается на 2:!0. Генератор случайных чисел также инициализируется функцией SQL setseedO с одним аргументом типа double precision. SERVER_ENCODING. Расширенная кодировка, используемая на стороне сервера (если ее поддержка включена в PostgreSQL).SET CONSTRAINTS
SET CONSTRAINTS
Выбор режима проверки ограничений в текущей транзакции.
Синтаксис
SET CONSTRAINTS { ALL режим [.... ] }
{ DEFERRED | IMMEDIATE }
Параметры
ALL. Ключевое слово ALL означает, что указанный режим должен относиться ко всем ограничениям в текущей транзакции. режим. Имя ограничения, для которого устанавливается режим проверки. DEFERRED. Проверка ограничений (или конкретного ограничения) откладывается до момента фиксации транзакции, то есть выполнения команды COMMIT. IMMEDIATE. Ограничения (или конкретное ограничение) проверяются в конце каждой команды в транзакционном блоке.Результаты
SET CONSTRAINTS. Сообщение выдается при успешном изменении режима проверки ограничений. ERROR: Constraint 'ограничение' does not exist. Ошибка — при попытке изменения режима проверки указано имя несуществующего ограничения.Описание
Команда SET CONSTRAINTS задает режим проверки для всех ограничений или одного ограничения в текущем транзакционном блоке. Существует два режима проверки: немедленная (IMMEDIATE) и отложенная (DEFERRED) проверка ограничений. В режиме IMMEDIATE все ограничения проверяются после выполнения каждой команды транзакции, а в режиме DEFERRED ограничения проверяются лишь после выполнения команды COMMIT.
Примечание 1
Примечание 1
В PostgreSQL версии 7.1.x (последней на момент написания книги) изменение режима проверки поддерживается только для ограничения FOREIGN KEY. Команда SET CONSTRAINTS не распространяется на ограничения CHECK и UNIQUE.
SET TRANSACTION
SET TRANSACTION
Выбор уровня изоляции текущей транзакции.
Синтаксис
SET TRANSACTION ISOLATION LEVEL
{ READ COMMITTED | SERIALIZABLE }
SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL
{ READ COMMITTED | SERIALIZABLE }
Параметры
READ COMMITED. Командам видны изменения, зафиксированные в базе данных до начала транзакции. Режим используется по умолчанию. SERIALIZABLE. Командам видны записи, зафиксированные в базе данных до выполнения первой команды DML в транзакции.Результаты
SET VARIABLE. Это сообщение выдается при успешном изменении режима транзакции. Команда SHOW TRANSACTION ISOLATION LEVEL выводит текущее значение режима изоляции (READ COMMITED или SERIALIZABLE).
Описание
Команда SET TRANSACTION задает уровень изоляции текущей транзакции. Изменение действует только в текущей транзакции; режимы изоляции следующих транзакций должны задаваться отдельно, поскольку по умолчанию действует режим READ COMMITED.
Команда SET TRANSACTION должна вызываться раньше первой команды DML в блоке. К категории DML относятся команды SELECT, INSERT, DELETE, UPDATE, FETCH и COPY.
Чтобы сменить уровень изоляции для всего сеанса (а не в отдельной транзакции), воспользуйтесь командой SET SESSION CHARACTERISTICS с параметром READ COMMITED или SERIALIZABLE. Выполнение команды SET TRANSACTION в транзакции временно переопределяет значение, установленное по умолчанию.
При выборе уровня изоляции READ COMMITED во всех командах транзакции «видны» только те записи, которые были зафиксированы до начала транзакции. При установке уровня изоляции SERIALIZABLE в командах транзакции также видны изменения, внесенные в базу данных до выполнения первой команды DML данной транзакции.
SHOW
SHOW
Вывод значений конфигурационных переменных.
Синтаксис
SHOW переменная
Параметры
Имя конфигурационной переменной.
Результаты
SHOW VARIABLE. Сообщение выдается при успешном выполнении команды SHOW. ERROR: Option 'переменная' is not recognized. Ошибка — переменная с указанным именем не существует. ERROR: permission denied. Ошибка — пользователь не обладает правами, необходимыми для получения информации. NOTICE: Time zone is unknown. Поступил запрос на вывод переменной TIMEZONE, однако значения переменных среды TZ и PGTZ не заданы.Описание
Команда SHOW выводит текущее значение конфигурационной переменной PostgreSQL. Значения переменных присваиваются командой SET или задаются автоматически при запуске сервера.
СREATE RULE
СREATE RULE
Определение нового правила в таблице.
Синтаксис
CREATE RULE правило AS ON событие ТО объект
[ WHERE условие ] DO [ INSTEAD ] операция
операция ::= NOTHING | query | ( query [; ...] ) | [ query [: ...] ]
Параметры
правило. Имя создаваемого правила. событие. Событие, при наступлении которого проверяется правило. Допустимыми значениями параметра являются SELECT, UPDATE, DELETE и INSERT. объект. Имя таблицы или уточненное имя поля (в формате таблица. поле). условие. Логическое выражение SQL, определяющее критерий применения правила. В условии не должны содержаться ссылки на другие таблицы, однако в нем могут присутствовать ссылки на специальные отношения new и old, которые соответственно представляют новые и существующие записи. INSTEAD. Ключевое слово INSTEAD означает, что заданная операция выполняется вместо события. Обычно операция выполняется перед наступлением события. операция. Запрос (или запросы), который определяет действия, выполняемые при наступлении указанного события. Возможно указание любых синтаксически правильных команд SELECT, UPDATE, DELETE и INSERT. Перечисляемые запросы заключаются в круглые скобки.В параметрах условие и операция могут использоваться специальные отношения new и old, при помощи которых можно получить доступ к новым и старым значениям полей объекта, указанного в определении правила.
Отношение new доступно в правилах INSERT и UPDATE; в нем содержатся значения вставляемых или обновляемых полей. Отношение old доступно в правилах SELECT, UPDATE и DELETE; в нем содержатся данные существующих записей, участвующих в операции выборки, обновления или удаления.
Результаты
CREATE. Это сообщение выдается при успешном создании нового правила.
Описание
Команда CREATE RULE создает в таблицах правила, предназначенные для выполнения альтернативных действий при вставке, обновлении и удалении данных. Система правил PostgreSQL также может использоваться при реализации представлений таблиц.
При выполнении команды SELECT, INSERT, DELETE и UPDATE автоматически производится поиск правил для этого события (порядок вызова правил не гарантирован). Если правило содержит секцию WHERE, проверяется указанное в ней условие, и если условие истинно — выполняется операция, заданная в определении правила. Если в определении правила присутствует ключевое слово INSTEAD, операция выполняется вместо обрабатываемого события; в противном случае она выполняется перед наступлением события. Будьте внимательны и избегайте циклических правил, то есть правил, в которых присутствуют ссылки на другие правила, которые, в свою очередь, ссылаются на исходное правило.
Примечание 1
Примечание 1
При использовании правил ON SELECT ключевое слово INSTEAD является обязательным. Фактически это означает, что правила ON SELECT всегда обеспечивают правильную реализацию представлений таблиц.
Соответствие «операториндекс»
Таблица 14.1. Соответствие «оператор-индекс»
Индекс |
Оператор |
В-дерево |
<, <=, >=, > |
R-дерево |
«, &<, &>, », @, — , && |
Хэш |
= |
Для каждого индексируемого поля можно задать операторный класс, который должен использоваться при индексации. Данная возможность существует только потому, что в некоторых обстоятельствах имеется несколько вариантов осмысленного упорядочения данных. Впрочем, типа индексации, принятого по умолчанию, обычно бывает достаточно, если только вы не занимаетесь разработкой собственных нестандартных типов и операторов.
Транзакции
Транзакции
Следует обратить внимание на особенности выполнения команды NOTIFY в транзакциях. Самая важная особенность заключается в том, что рассылка уведомлений по команде NOTIFY в транзакциях откладывается до момента фиксации. Тем самым предотвращается рассылка уведомлений транзакциями, которые в дальнейшем могут быть откачены.
Также следует учитывать, что серверный процесс не доставляет уведомление подключенному клиенту при наличии незавершенной транзакции. Если в клиентском процессе в настоящее время существует открытая транзакция, серверный процесс отправляет уведомление лишь после того, как транзакция будет завершена командой COMMIT или ROLLBACK.
TRUNCATE
TRUNCATE
Очистка таблицы.
Синтаксис
TRUNCATE [ TABLE ] таблица
Параметры
Имя таблицы. В результате очистки из таблицы удаляются все записи.
Результаты
TRUNCATE. Сообщение выдается при успешной очистке таблицы. ERROR: Relation 'таблица' does not exist. Ошибка— таблица с указанным именем не найдена в текущей базе данных.Описание
Команда TRUNCATE используется для удаления всех записей из таблицы. Удаление производится без перебора записей, что значительно ускоряет очистку таблиц с большим количеством записей. При полном уничтожении всего содержимого таблицы команда TRUNCATE работает быстрее DELETE.
UNLISTEN
UNLISTEN
Серверный процесс выходит из режима ожидания уведомлений.
Синтаксис
UNLISTEN { событие \ * }
Параметры
событие. Имя события, ожидаемого сервером. *. Отмена ожидания всех событий, определенных ранее.Результаты
UNLISTEN. Это сообщение выдается при успешном выполнении команды UNLISTEN.
Описание
Команда UNLISTEN прерывает ожидание события с указанным именем. При передаче символа * в текущем сеансе отменяются все зарегистрированные события. При завершении работы серверный процесс автоматически выполняет команду UNLISTEN *, полностью прекращая ожидание событий.
Примечание 1
Примечание 1
Чтобы получить список событий, ожидаемых в настоящий момент, воспользуйтесь выборкой из поля relname системной таблицы pgjistener.
Дополнительную информацию о командах NOTIFY и LISTEN, обеспечивающих простой механизм межпроцессных взаимодействий в PostgreSQL, можно найти в описании этих команд.
UPDATE
UPDATE
Обновление записей в таблице.
Синтаксис
UPDATE [ ONLY ] таблица SET
поле = выражение [. ...]
[ FROM список_источников ]
[ WHERE условие ]
Параметры
ONLY. Обновление выполняется только в указанной таблице и не распространяется на производные таблицы (если они существуют). таблица. Имя обновляемой таблицы. поле. Имя поля, обновляемого в таблице. выражение. Выражение, результат которого присваивается указанному полю. список_источников. Таблица, представление или другой источник данных (см. описание команды SELECT). Расширенная версия команды UPDATE в PostgreSQL позволяет задействовать значения полей других таблиц в условии WHERE; чтобы данная возможность работала правильно, необходимо перечислить используемые таблицы в секции FROM. условие. В секции WHERE задается критерий отбора обновляемых записей. Условие представляет собой произвольное выражение с результатом типа boolean.Результаты
UPDATE число. Сообщение выдается при успешном выполнении команды UPDATE. В параметре число сообщается количество модифицированных записей. Например, сообщение UPDATE 0 означает, что содержимое таблицы не изменялось. ERROR: Relation 'таблица' does not exist. Ошибка— таблицас указанным именем не найдена в текущей базе данных. ERROR: Relation 'таблица' does not have attribute 'поле'. Ошибка — поле с указанным именем не существует в таблице, использованной в секции SET. ERROR: Cannot update a view without an appropriate rule. Ошибка — попытка обновить представление (вместо таблицы) без правила, указывающего, как поступать в подобных ситуациях.Описание
Команда UPDATE изменяет значения полей во всех записях, удовлетворяющих условию, заданному в секции WHERE. Команда также позволяет модифицировать поля-массивы, в которых можно обновить отдельный элемент, интервал или весь массив. Чтобы обновление выполнялось только в указанной таблице, следует включить в команду ключевое слово ONLY; в противном случае обновление распространяется на все производные таблицы.
Примечание 1
Примечание 1
При обновлении таблиц необходимо наличие прав записи для обновляемых полей и прав чтения для полей, используемых в секции WHERE.
VACUUM
VACUUM
Удаление временных данных и анализ базы данных.
Синтаксис
VACUUM [ VERBOSE ] [ ANALYZE ] [ таблица ]
VACUUM [ VERBOSE ] ANALYZE [ таблица [ (поле [. ...] ) ] ]
Параметры
VERBOSE. Вывод отчета по каждой обработанной таблице. ANALYZE. В процессе выполнения команда VACUUM генерирует статистику для оптимизатора. таблица. Имя обрабатываемой таблицы. Если таблица не указана, команда VACUUM обрабатывает все таблицы базы данных. поле. Имя анализируемого поля (используется при обновлении статистики для оптимизатора).Результаты
VACUUM. Сообщение выдается в том случае, если обработка базы данных или таблицы прошла успешно. NOTICE: - Relation таблица-. Сообщение выводится в начале обработки таблицы в режиме VERBOSE. NOTICE: Pages 1: Changed 1. reaped 1. Empty 0, New 0; Tup 12: Vac 39. Keep/VTL 0/0. Crash 0. UnUsed 0. MinLen 52, MaxLen 76; Re-using: Free/Avail. Space 7180/ 0: EndEmpty/Avall. Pages 0/0. CPU O.OOs/O.OOu sec. Данные, полученные в результате анализа таблицы. NOTICE: Index индекс: Pages 2: Tuples 12: Deleted 39. CPU O.OOs/O.OOu sec. Данные, полученные в результате анализа индекса.Описание
Команда VACUUM удаляет временные данные откаченных транзакций и обновляет статистику в системных каталогах. При вызове с ключевым словом ANALYZE команда генерирует статистическую информацию о данных. Периодический вызов команды повышает быстродействие базы данных.