PostgreSQL
coub
express.js
freeware
git
jquery
laravel
links
linux
macos
mysql
node.js
php
powershell
python
ubuntu
vim
virtualbox
анекдот
блог
игры
интересно
стихи
цитаты
Шпаргалка по PostgreSQL
July 15, 2013
Начал разбираться с postgre, по этому случаю какое-то время буду вести эту шпору. Поскольку я только начинаю разбираться, некоторые из решений наверняка будут неоптимальными или неполными, такое возможно. Я наивно полагал что postgre сильно похож на mysql, но выяснилось что это в общем-то не совсем так. Буду писать о PostgreSQL версии 9.2+.
Хороший ресурс с туториалами по PostgreSQL - postgresqltutorial.com
Оф. мануал - тут
-
Смотрим с какой версией postgre имеем дело
psql --version
-
Подключаемся к выбранной БД из консоли
psql -d db_name -U user_name
-
Переключиться на выбранную бд в текущем сеансе (curent_db=# - приглашение консоли PostgreSQL, db_name - бд, на которую переключаемся)
curent_db=# \c db_name
-
Показать все таблицы в текущей бд (аналог show tables в mysql)
curent_db=# \dt
-
Показать структуру выбранной таблицы (аналог desc table_name в mysql)
curent_db=# \d+ table_name
-
Показать список доступных бд (аналог show databases в mysql)
curent_db=# \l
-
Посмотреть запрос воспроизводящий структуру таблицы (аналог show create table в mysql). Как я понял (либо не нашел пока) аналога в postgre нет. Но все же вынуть такой запрос можно, правда уже другой утилитой. По сути это будет полный дамп структуры выбранной таблицы.
pg_dump -b db_name -U user_name -t table_name -s
-
Создать дамп бд и восстановить бд из дампа (см. ссылку)
pg_dump db_name > dump_file.sql psql db_name < dump_file.sql # восстанавливаем из tar pg_restore -U user -h localhost -d db_name db_name.tar
-
Создаем новую БД
create database dbname encoding 'utf8';
-
Восстанавливаем бинарный дамп БД
pg_restore -c -d db_name dump_file.dump
-
Посмотреть список всех сиквенсов в бд (sequence)
\ds # или \ds+
-
Посмотреть состояние сиквенса (sequence)
\d sequence_name # или \d+ sequence_name
-
Создание, инкремент, удаление, установка нового значения сиквенса
# создание create sequence seq_name start 100; # получаем инкрементированное значение select nextval('seq_name'); # изменяем текущее значение alter sequence seq_name restart 120; # последнее инкрементированное значение (аналог LAST_INSERT_ID() в MySQL) select lastval(); # удаление сиквенса drop sequence seq_name;
-
Поле типа auto_increment (аналог MySQL) не существует. Есть пара конструкций serial и bigserial которые для пользователя облегчают задачу создания полей с аналогичной функциональностью , автоматически транслируя
CREATE TABLE table_name ( id SERIAL, user_name character varying(100) NOT NULL );
в конструкцию видаCREATE SEQUENCE table_name_id_seq; CREATE TABLE table_name ( id integer DEFAULT nextval('table_name_id_seq') NOT NULL, user_name character varying(100) NOT NULL );
-
Дампим выбранную из БД таблицу
pg_dump -U userName dbName -t table_name > dump_file.sql
-
Аналог просмотра текущей активности из MySQL
SHOW FULL PROCESSLIST;
В Postgresql выглядит такSELECT * FROM pg_stat_activity;
-
Установка пароля для пользователя после чистой установки
sudo -u postgres psql postgres postgres=# \password postgres
Хороший ресурс с туториалами по PostgreSQL - postgresqltutorial.com
Оф. мануал - тут