Push 163 file(s) from Obsidian
This commit is contained in:
@@ -0,0 +1,107 @@
|
||||
#PostgreSQL #PostgreSQL #SQL
|
||||
|
||||
Перенес в my-mans
|
||||
|
||||
-- подключиться к postgres (утилита psql)
|
||||
```bash
|
||||
psql -U postgres
|
||||
```
|
||||
|
||||
-- команды помощи
|
||||
help
|
||||
\h -- помощь по командам SQL
|
||||
\? -- помощь по командам psql
|
||||
|
||||
-- выход из консоли postgres
|
||||
\q
|
||||
|
||||
-- создать базу
|
||||
```sql
|
||||
CREATE DATABASE my_database;
|
||||
```
|
||||
|
||||
-- подключиться к базе
|
||||
```
|
||||
\connect my_database;
|
||||
```
|
||||
|
||||
-- создать таблицу my_table с полями field1 (тип целочисленный, обязательное для заполнения), field2 (тип строка 255 символов)
|
||||
```sql
|
||||
CREATE TABLE my_table (field1 INT NOT NULL, field2 VARCHAR(255));
|
||||
```
|
||||
|
||||
-- вывести все таблицы
|
||||
```sh
|
||||
\d
|
||||
```
|
||||
|
||||
-- удалить таблицу my_table
|
||||
```sql
|
||||
DROP TABLE my_table;
|
||||
```
|
||||
|
||||
-- внести в таблицу запись
|
||||
```sql
|
||||
INSERT INTO my_table(field1, field2) VALUES(1,'Any text value');
|
||||
```
|
||||
|
||||
-- вывести записи
|
||||
```sql
|
||||
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;
|
||||
```
|
||||
|
||||
-- сортировка при выводе
|
||||
```sql
|
||||
SELECT * FROM my_table ORDER BY field1 ASC; -- вывести отсортировав в возрастающем порядке
|
||||
SELECT * FROM my_table ORDER BY field1 DESC; -- вывести отсортировав в убывающем порядке
|
||||
```
|
||||
|
||||
-- изменить запись таблицы (поле field2 строки, где field1 = 1);
|
||||
```sql
|
||||
UPDATE my_table SET field2 = 'Other text value' WHERE field1 = 1;
|
||||
```
|
||||
|
||||
-- удаление данных
|
||||
```sql
|
||||
DELETE FROM my_table; -- удалить все записи;
|
||||
DELETE FROM my_table WHERE field1 = 1; -- удалить запись где field1 = 1;
|
||||
```
|
||||
|
||||
|
||||
-- ***********************************
|
||||
-- нормализация (разбиение таблиц на несколько)
|
||||
-- ***********************************
|
||||
|
||||
-- Constraints - ограничения типов данных
|
||||
```sql
|
||||
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
|
||||
);
|
||||
|
||||
-- вывод данных из нескольких таблиц со связанными полями
|
||||
```sql
|
||||
SELECT * FROM table_1 LEFT JOIN table_2 ON (table_2.field = table_1.field);
|
||||
```
|
||||
|
||||
-- алиасы, нужны для удобства. Также, при выводе наименование таблиц или полей выводится алиасом, при его наличии.
|
||||
```sql
|
||||
SELECT * FROM table_1 as tab1 LEFT JOIN table_2 as tab2 ON (tab1.field = tab2.field);
|
||||
```
|
||||
Reference in New Issue
Block a user