summaryrefslogtreecommitdiff
path: root/SQL/SQL. Базы Данных.md
diff options
context:
space:
mode:
Diffstat (limited to 'SQL/SQL. Базы Данных.md')
-rw-r--r--SQL/SQL. Базы Данных.md172
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)
+_бывают:
+- простые
+- составные
+- естественные
+- искусственные
+-