`brew install postgresql` _В автозагрузку:_ `brew services start postgresql` _Запуск вручную:_ `pg_ctl -D /usr/local/var/postgresql start` _Перезагрузка:_ `brew services restart postgresql` _Проверка версии:_ `brew info postgresql` _Инициализация по умолчанию:_ `initdb --locale=C -E UTF-8 /opt/homebrew/var/postgresql@14` _Экспортировать переменную:_ `export PATH=/opt/homebrew/bin:$PATH` _Если автозагрузка не сработает, директория здесь:_ `~/Library/LaunchAgents` _Создаем симлинк:_ `ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents` _Добавляем в автозагрузку:_ `launchctl load ~/Library?LaunchAgents/homebrew.mxcl.postgresql.plist` _Подключение к БД на MacOS (отличается от Linux). Проверяем пользователей:_ `psql -l` ![[Pasted image 20240312221215.png]] _Для подключения указываем Owner из таблицы выше:_ `sudo psql -U vlapa -d postgres` _Создаем пользователя с паролем (сначала подключаемся как описано выше):_ `CREATE USER ploshadka WITH PASSWORD '123456';` _Назначаем ему кодировку:_ `ALTER ROLE ploshadka SET client_encoding TO 'utf8';` _Создаем БД для русской локали, чтобы была возможность поиска:_ `CREATE DATABASE dbname TEMPLATE=template0 ENCODING 'UTF-8' LC_COLLATE 'ru_RU.UTF-8' LC_CTYPE 'ru_RU.UTF-8';` _Назначаем этому пользователю новую БД:_ `GRANT ALL PRIVILEGES ON DATABASE dbname TO ploshadka;` _проверим по таблице все-ли верно:_ `\list` _Как подключиться (на localhost достаточно создать БД и подключиться к ней указав только имя):_ `dbname='stocks'` _Остальное подхватится по умолчанию._ ### Узнаем размер БД: _Заходим на сервер в оболочку Postgres:_ `sudo psql -U vlapa -d postgres` _Проверяем размер:_ `SELECT pg_size_pretty(pg_database_size('vlapa_db'));` ### Узнаем размеры таблиц: _Находясь в оболочке Postgres входим в нужную БД:_ `\c vlapa_db` _Вводим команду отсортировать таблицы по большему размеру:_ ```bash SELECT nspname || '.' || relname AS "relation",     pg_size_pretty(pg_total_relation_size(C.oid)) AS "total_size"   FROM pg_class C   LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)   WHERE nspname NOT IN ('pg_catalog', 'information_schema')     AND C.relkind <> 'i'     AND nspname !~ '^pg_toast'   ORDER BY pg_total_relation_size(C.oid) DESC   LIMIT 20; ``` ################################################## _PostgreSQL - SQL команды:_ Как добавить колонку в правильное место: ```bash alter table tablename rename to oldtable; create table tablename (column defs go here); insert into tablename (col1, col2, col3) select col1, col2, col3 from oldtable; ``` _Как добавить колонку в конец:_ ```sh ALTER TABLE portfolio ADD COLUMN price_diff_open_current FLOAT NULL; ``` _Переименовать таблицу:_ ```sh alter table portfolio rename column lots to quantity; ``` _Обновить всю колонку одним значением:_ ```sh UPDATE operations SET user_id='1' ``` _Переименовать базу данных:_ ```sh alter database "stocks" rename to "captures"; ```