diff options
Diffstat (limited to 'SQL/SQL. Базы Данных.md')
| -rw-r--r-- | SQL/SQL. Базы Данных.md | 172 |
1 files changed, 172 insertions, 0 deletions
diff --git a/SQL/SQL. Базы Данных.md b/SQL/SQL. Базы Данных.md new file mode 100644 index 0000000..48e9bc5 --- /dev/null +++ b/SQL/SQL. Базы Данных.md @@ -0,0 +1,172 @@ +```sh +sudo apt install postgres +sudo apt install-contrib # Debian +sudo systemctl start posgresql.service +sudo systemctl status posgresql.service + +sudo -u postgres createuser --interactive +# вводим имя +# даем права sudo + +man createuser + +sudo -u postgres createdb metall +sudo adduser metall +sudo -u metall psql + +# переключиться на другую БД: +psql -d postgres +``` +### Установка из исходников: +```sh +# качаем с сайта нужную версию: +# https://www.postgresql.org/ftp/source/v16.2/postgresql-16.2.tar.gz + +mkdir Downloads +cd Downloads + +# Качаем: +wget https://ftp.postgresql.org/pub/source/v16.2/postgresql-16.2.tar.gz +# Скачать скрипт и сразу выполнить: +wget -O - http://www.tecmint.com/wp-content/scripts/Colorfull.sh | bash +# Также можно использовать curl: +curl -O https://github.com/torvalds/linux/archive/v4.11-rc6.tar.gz + +tar -xzvf postgresql-16.2.tar.gz +cd postgresql-16.2 +./configure --prefix=/var/lib/postgresql + +# Поиск пакетов в Linux: +sudo apt-cache search lib<пакет> # нужен пакет <name>-dev +sudo apt install <name>-dev + +brew install pkg-config + +./configure --prefix=/var/lib/postgresql +sudo make install-world +cd /var/lib/postgresql +sudo chown -R vlapa ../postgresql +./bin/pg_ctl initdb +export PGDATA=/var/lib/postgresql/main +./bin/pg_ctl initdb +./bin/pg_ctl -D /var/lib/postgresql/main start +./bin/psql -h localhost -U vlapa. postgres +# Создать БД: +CREATE DATABASE <name_db> + +#=========================================================== +# создадим конфигурацию перед сборкой. Для этого используем команду configure с тремя опциями: + +# prefix — укажем каталог для установки PostgreSQL; +# libdir — укажем каталог с библиотеками PostgreSQL, это необходимо, так как PostgreSQL устанавливается в нестандартное расположение и не будет знать где ему искать библиотеки; +# with-pgport — укажем нестандартный порт на котором будет работать этот экземпляр PostgreSQL. + +./configure --prefix=/home/alex/pgsql-16 --libdir=/home/alex/pgsql-16/lib/ --with-pgport=5555 +mkdir ~/pgsql-16/data/ +echo "export PGDATA=~/pgsql-16/data/" >> .bashrc +. .bashrc +ls -d $PGDATA + +echo "export PGDATA=~/pgsql-16/data/" >> .bashrc +. .bashrc +whereis psql + +initdb -k + +pg_ctl -l ~/pgsql-16/postgres.log start # -l -файл логов +pg_ctl status +psql -d postgres -c 'select now()' +pg_ctl stop +``` + +### Создание и запуск второго кластера +```sh +mkdir ~/pgsql-16/data2/ +initdb -k -D ~/pgsql-16/data2/ + +pg_ctl -D /home/alex/pgsql-16/data2/ -l logfile start +# При инициализация кластера, если путь к каталогу PGDATA отличается от переменной $PGDATA или если такая переменная не задана. То нужно с помощью ключа -D указать путь к этому каталогу. + +# Чтобы запустить второй кластер одновременно с первым, нужно поменять порт, на котором работает PostgreSQL. Изменим этот порт для второго кластера: +echo port = 5556 >> ~/pgsql-16/data2/postgresql.conf +pg_ctl -D ~/pgsql-16/data2/ -l ~/pgsql-16/data2/postgres.log start + +ps ax | grep postgresql +# Первый кластер запущен без ключа -D и используется переменная $PGDATA, а во втором кластере путь к PGDATA прописан в строке запуска. +# Перед дальнейшей работой выключим оба кластера: +pg_ctl stop + +pg_ctl -D /home/alex/pgsql-16/data2 stop +``` + +# 📑 Шпаргалка по основным командам PostgreSQL + +Вся работа с PostgreSQL осуществляется под пользователем `postgres` + +`$sudo su postgres` + +Работать с `PosgreSQL` можно как в интерактивном режиме, так и из командной строки. Программа — `psql` + +## Основные команды PostgreSQL в интерактивном режиме: + +- `\connect db_name` – подключиться к базе с именем db_name +- `\du` – список пользователей +- `\dp` (или `\z`) – список таблиц, представлений, последовательностей, прав доступа к ним +- `\di` – индексы +- `\ds` – последовательности +- `\dt` – список таблиц +- `\dt+` — список всех таблиц с описанием +- `\dt *s*` — список всех таблиц, содержащих s в имени +- `\dv` – представления +- `\dS` – системные таблицы +- `\d+` – описание таблицы +- `\o` – пересылка результатов запроса в файл +- `\l` – список баз данных +- `\i` – читать входящие данные из файла +- `\e` – открывает текущее содержимое буфера запроса в редакторе (если иное не указано в окружении переменной _EDITOR_, то будет использоваться по умолчанию vi) +- `\d` “table_name” – описание таблицы +- `\i` запуск команды из внешнего файла, например \i /my/directory/my.sql +- `\pset` – команда настройки параметров форматирования +- `\echo` – выводит сообщение +- `\set` – устанавливает значение переменной среды. Без параметров выводит список текущих переменных (\unset – удаляет). +- `\?` – справочник psql +- `\help` – справочник SQL +- `\q` (или `Ctrl+D`) – выход с программы + +## Удаленное подключение к Postgres: +- **postgresql.conf** +- **pg_hba.conf** + +Вы можете найти эти два файла в папке: +- **/etc/postgresql/13/main** (Linux) +- **C:/Program Files/PostgreSQL/13/data** (Windows) + + + + +![[Снимок экрана 2024-03-14 в 13.21.49.png]] + +![[Снимок экрана 2024-03-14 в 13.22.17.png]] + + +![[Снимок экрана 2024-03-14 в 13.25.59.png]] + +![[Снимок экрана 2024-03-14 в 13.27.58.png]] + + +![[Снимок экрана 2024-03-14 в 13.29.48.png]] +![[Снимок экрана 2024-03-14 в 13.32.01.png]] + +###################################################################### + +### Первичный ключ: + +_должен быть: +- уникальным +- заполненным (not Null) +_бывают: +- простые +- составные +- естественные +- искусственные +- |
