· 7 years ago · Oct 02, 2018, 12:56 PM
1ÐŸÐµÑ€ÐµÐ½ÐµÑ Ð² my-mans
2
3-- подключитьÑÑ Ðº postgres (утилита psql)
4psql -U postgres
5
6-- команды помощи
7help
8\h -- помощь по командам SQL
9\? -- помощь по командам psql
10
11-- выход из конÑоли postgres
12\q
13
14-- Ñоздать базу
15CREATE DATABASE my_database;
16
17-- подключитьÑÑ Ðº базе
18\connect my_database;
19
20-- Ñоздать таблицу my_table Ñ Ð¿Ð¾Ð»Ñми field1 (тип целочиÑленный, обÑзательное Ð´Ð»Ñ Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ), field2 (тип Ñтрока 255 Ñимволов)
21CREATE TABLE my_table (field1 INT NOT NULL, field2 VARCHAR(255));
22
23-- вывеÑти вÑе таблицы
24\d
25
26-- удалить таблицу my_table
27DROP TABLE my_table;
28
29-- внеÑти в таблицу запиÑÑŒ
30INSERT INTO my_table(field1, field2) VALUES(1,'Any text value');
31
32-- вывеÑти запиÑи
33SELECT * FROM my_table; -- вÑе запиÑи
34SELECT * FROM my_table WHERE field1 = 1; -- вÑе, где field1 = 1
35SELECT * FROM my_table WHERE field1 != 1; -- и т д
36SELECT * FROM my_table WHERE field1 > 1;
37SELECT * FROM my_table LIMIT 100; -- первые 100 запиÑей;
38SELECT * FROM my_table LIMIT 100 OFFSET 200; -- запиÑÑŒ Ñ 201 по 300;
39
40-- Ñортировка при выводе
41SELECT * FROM my_table ORDER BY field1 ASC; -- вывеÑти отÑортировав в возраÑтающем порÑдке
42SELECT * FROM my_table ORDER BY field1 DESC; -- вывеÑти отÑортировав в убывающем порÑдке
43
44-- изменить запиÑÑŒ таблицы (поле field2 Ñтроки, где field1 = 1);
45UPDATE my_table SET field2 = 'Other text value' WHERE field1 = 1;
46
47-- удаление данных
48DELETE FROM my_table; -- удалить вÑе запиÑи;
49DELETE FROM my_table WHERE field1 = 1; -- удалить запиÑÑŒ где field1 = 1;
50
51
52-- ***************************************
53-- Ð½Ð¾Ñ€Ð¼Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ (разбиение таблиц на неÑколько)
54-- ***************************************
55
56-- Constraints - Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ñ‚Ð¸Ð¿Ð¾Ð² данных
57CREATE TABLE my_table (
58 field1 INT NOT NULL, -- запиÑÑŒ обÑзательна
59 field2 VARCHAR(255) NOT NULL UNIQUE, -- запиÑÑŒ должна быть уникальной
60 field3 BOOLEAN NOT NULL DEFAULT TRUE -- значение по умолчанию - true
61 ...
62);
63
64-- Первичный и внешние ключи
65-- при Ñоздании запиÑи таблицы Ñ Ð¾Ñ‚ÑутÑтвующим внешним ключом выведетÑÑ Ð·Ð°Ð¿Ð¸ÑÑŒ об ошибке. будут выводитÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ¸ и в иных ÑлучаÑÑ…, когда будут нарушатьÑÑ ÑвÑзи.
66CREATE TABLE IF NOT EXISTS my_table ( -- ключ IF NOT EXISTS проверÑет, ÑущеÑтвует ли таблица.
67 field1 SERIAL INT PRIMARY KEY, -- при добавлении PRIMARY KEY поле автоматичеÑки наÑледует Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ NOT NULL и UNIQUE, и ÑоздаетÑÑ Ð¸Ð½Ð´ÐµÐºÑ. SERIAL тип данных ÑвлÑющийÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки увеличивающимÑÑ Ñчетчиком (аналог ключа AUTOINCREMENT в Sqlite)
68 field2 VARCHAR(255) NOT NULL UNIQUE,
69 field3 INT NOT NULL,
70 FOREIGN KEY(field3) REFERENCES other_table(field_name) -- поле ÑÑылаетÑÑ Ð½Ð° внешнюю таблицу other_table на поле field_name, которое обÑзательно должно быть Ñ PRIMARY KEY
71);
72
73-- вывод данных из неÑкольких таблиц Ñо ÑвÑзанными полÑми
74SELECT * FROM table_1 LEFT JOIN table_2 ON (table_2.field = table_1.field);
75
76-- алиаÑÑ‹, нужны Ð´Ð»Ñ ÑƒÐ´Ð¾Ð±Ñтва. Также, при выводе наименование таблиц или полей выводитÑÑ Ð°Ð»Ð¸Ð°Ñом, при его наличии.
77SELECT * FROM table_1 as tab1 LEFT JOIN table_2 as tab2 ON (tab1.field = tab2.field);
78
79
80-- ***************************************
81-- Редактирование таблиц, раÑширенные возможноÑти SELECT, функции
82-- ***************************************
83
84-- Добавление Ð¿Ð¾Ð»Ñ Ð² таблицу
85ALTER TABLE table_name ADD COLUMN new_field
86BOOLEAN NOT NULL DEFAULT TRUE;
87
88-- добавление Ð¿Ð¾Ð»Ñ Ñ Ð°Ð²Ñ‚Ð¾Ð¸Ð½ÐºÑ€ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð¼ и primary key в таблицу
89ALTER TABLE test1 ADD COLUMN id SERIAL PRIMARY KEY;
90
91-- Удаление Ð¿Ð¾Ð»Ñ Ð¸Ð· таблицы
92ALTER TABLE table_name DROP COLUMN new_field;
93
94-- переименовать поле
95ALTER TABLE table_name RENAME old_field TO new_field;
96
97-- Ñменить тип данных
98ALTER TABLE table_name ALTER COLUMN any_field SET
99DATA TYPE VARCHAR(255);
100
101-- изменить значение по умолчанию
102ALTER TABLE table_name ALTER COLUMN any_field SET
103DEFAULT 'new value';
104
105-- добавить/удалить constraint NOT NULL
106ALTER TABLE table_name ALTER COLUMN any_field
107SET|DROP NOT NULL;
108
109-- переименовать таблицу
110ALTER TABLE table_name RENAME TO new_table_name;
111
112-- РаÑширенные возможноÑти SELECT
113SELECT * FROM table WHERE field1 LIKE 'value'; -- field1 = 'value'
114SELECT * FROM table WHERE field1 LIKE 'val%'; -- field1 начинаетÑÑ Ñ 'val'
115SELECT * FROM table WHERE field1 LIKE '%lue'; -- field1 заканчиваетÑÑ Ð½Ð° 'lue'
116SELECT * FROM table WHERE field1 LIKE '%e%'; -- field1 Ñодержит 'e'
117-- неÑколько уÑловий
118SELECT * FROM table WHERE field1 = 'value' AND field2 > 'value2';
119SELECT * FROM table WHERE field1 = 'value' OR field2 > 'value2';
120
121-- вывод уникальных запиÑей
122SELECT DISTINCT field1 FROM table;
123
124-- группирование запиÑей
125
126SELECT field1, COUNT(field1) FROM table GROUP BY field1;
127-- Ñгруппирует запиÑи таблицы table по полю field и выведет уникальные Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ field и количеÑтво повторений
128
129SELECT field1, COUNT(field1) FROM table GROUP BY field1
130HAVING COUNT(field) > 3;
131-- Ñгруппирует запиÑи таблицы table по полю field и выведет уникальные Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ field и количеÑтво повторений, где количеÑтво повторений больше 3