Files
obsidian/Prog/Шпаргалка по PostgreSQL.md
2026-09-24 13:22:58 +05:00

4.2 KiB
Raw Permalink Blame History

#PostgreSQL #PostgreSQL #SQL

Перенес в my-mans

-- подключиться к postgres (утилита psql)

psql -U postgres

-- команды помощи help \h -- помощь по командам SQL ? -- помощь по командам psql

-- выход из консоли postgres \q

-- создать базу

CREATE DATABASE my_database;

-- подключиться к базе

\connect my_database;

-- создать таблицу my_table с полями field1 (тип целочисленный, обязательное для заполнения), field2 (тип строка 255 символов)

CREATE TABLE my_table (field1 INT NOT NULL, field2 VARCHAR(255));

-- вывести все таблицы

\d

-- удалить таблицу my_table

DROP TABLE my_table;

-- внести в таблицу запись

INSERT INTO my_table(field1, field2) VALUES(1,'Any text value');

-- вывести записи

SELECT * FROM my_table; -- все записи
SELECT * FROM my_table WHERE field1 = 1; -- все, где field1 = 1 
SELECT * FROM my_table WHERE field1 != 1; -- и т д
SELECT * FROM my_table WHERE field1 > 1;
SELECT * FROM my_table LIMIT 100; -- первые 100 записей;
SELECT * FROM my_table LIMIT 100 OFFSET 200; -- запись с 201 по 300;

-- сортировка при выводе

SELECT * FROM my_table ORDER BY field1 ASC; -- вывести отсортировав в возрастающем порядке
SELECT * FROM my_table ORDER BY field1 DESC; -- вывести отсортировав в убывающем порядке

-- изменить запись таблицы (поле field2 строки, где field1 = 1);

UPDATE my_table SET field2 = 'Other text value' WHERE field1 = 1;

-- удаление данных

DELETE FROM my_table; -- удалить все записи;
DELETE FROM my_table WHERE field1 = 1; -- удалить запись где field1 = 1;

-- *********************************** -- нормализация (разбиение таблиц на несколько) -- ***********************************

-- Constraints - ограничения типов данных

CREATE TABLE my_table (
  field1 INT NOT NULL, -- запись обязательна
  field2 VARCHAR(255) NOT NULL UNIQUE, -- запись должна быть уникальной
  field3 BOOLEAN NOT NULL DEFAULT TRUE -- значение по умолчанию - true
  ...
);

-- Первичный и внешние ключи -- при создании записи таблицы с отсутствующим внешним ключом выведется запись об ошибке. будут выводится ошибки и в иных случаях, когда будут нарушаться связи. CREATE TABLE IF NOT EXISTS my_table ( -- ключ IF NOT EXISTS проверяет, существует ли таблица. field1 SERIAL INT PRIMARY KEY, -- при добавлении PRIMARY KEY поле автоматически наследует ограничения NOT NULL и UNIQUE, и создается индекс. SERIAL тип данных являющийся автоматически увеличивающимся счетчиком (аналог ключа AUTOINCREMENT в Sqlite) field2 VARCHAR(255) NOT NULL UNIQUE, field3 INT NOT NULL, FOREIGN KEY(field3) REFERENCES other_table(field_name) -- поле ссылается на внешнюю таблицу other_table на поле field_name, которое обязательно должно быть с PRIMARY KEY );

-- вывод данных из нескольких таблиц со связанными полями

SELECT * FROM table_1 LEFT JOIN table_2 ON (table_2.field = table_1.field);

-- алиасы, нужны для удобства. Также, при выводе наименование таблиц или полей выводится алиасом, при его наличии.

SELECT * FROM table_1 as tab1 LEFT JOIN table_2 as tab2 ON (tab1.field = tab2.field);