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