coub css express.js freeware git jquery laravel links linux macos mysql node.js php PostgreSQL python task1 ubuntu vim virtualbox анекдот игры интересно музыка стихи цитаты

Шпаргалка по PostgreSQL July 15, 2013
Начал разбираться с postgre, по этому случаю какое-то время буду вести эту шпору. Поскольку я только начинаю разбираться, некоторые из решений наверняка будут неоптимальными или неполными, такое возможно. Я наивно полагал что postgre сильно похож на mysql, но выяснилось что это в общем-то не совсем так. Буду писать о PostgreSQL версии 9.2+.
  1. Смотрим с какой версией postgre имеем дело
    psql --version
    
  2. Подключаемся к выбранной БД из консоли
    psql -d db_name -U user_name
    
  3. Переключиться на выбранную бд в текущем сеансе (curent_db=# - приглашение консоли PostgreSQL, db_name - бд, на которую переключаемся)
    curent_db=# \c db_name
    
  4. Показать все таблицы в текущей бд (аналог show tables в mysql)
    curent_db=# \dt
    
  5. Показать структуру выбранной таблицы (аналог desc table_name в mysql)
    curent_db=# \d+ table_name
    
  6. Показать список доступных бд (аналог show databases в mysql)
    curent_db=# \l
    
  7. Посмотреть запрос воспроизводящий структуру таблицы (аналог show create table в mysql). Как я понял (либо не нашел пока) аналога в postgre нет. Но все же вынуть такой запрос можно, правда уже другой утилитой. По сути это будет полный дамп структуры выбранной таблицы.
    pg_dump -b db_name -U user_name -t table_name -s
    
  8. Создать дамп бд и восстановить бд из дампа (см. ссылку)
    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 
    
  9. Создаем новую БД
    create database dbname encoding 'utf8';
    
  10. Восстанавливаем бинарный дамп БД
    pg_restore -c -d db_name dump_file.dump
    
  11. Посмотреть список всех сиквенсов в бд (sequence)
    \ds
    # или
    \ds+
    
  12. Посмотреть состояние сиквенса (sequence)
    \d sequence_name
    # или
    \d+ sequence_name
    
  13. Создание, инкремент, удаление, установка нового значения сиквенса
    # создание
    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;
    
  14. Поле типа 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
    );
    
  15. Дампим выбранную из БД таблицу
    pg_dump -U userName dbName -t table_name > dump_file.sql
    
  16. Аналог просмотра текущей активности из MySQL
    SHOW FULL PROCESSLIST;
    
    В Postgresql выглядит так
    SELECT * FROM pg_stat_activity;
    
  17. Установка пароля для пользователя после чистой установки
    sudo -u postgres psql postgres
    postgres=# \password postgres
    

Хороший ресурс с туториалами по PostgreSQL - postgresqltutorial.com
Оф. мануал - тут
PostgreSQL