# Шпаргалка по SQL
- Создание новой БД ```sql CREATE DATABASE db_name; ``` - Создание новой таблицы ```sql CREATE TABLE users ( id SERIAL PRIMARY KEY, # Уникальный id firstName VARCHAR(100), # Строка lastName VARCHAR(100), # Строка age INT, # Число gender VARCHAR(10), # Строка isMarried BOOLEAN # true/false ); ``` - Основные типы данных > - INT (целые числа от -2^32 до +2^32) > - FLOAT / DOUBLE / DECIMAL (дробные числа) > - CHAR / VARCHAR / TEXT (строки) > - DATA / DATETIME / TIME (дата и время) > - ENUM (перечисления - списки допустимых значений) > - [И другие](https://sql-language.ru/osnova-sql/tipy-dannykh-sql.html) - Добавление данных в таблицу ```sql INSERT INTO users( firstName, lastName, age, gender, isMarried ) VALUES ( 'Alex', 'Manson' 25, 'male', false ); ``` - Выборка данных из таблицы ```sql # SELECT ## Получить всю таблицу users SELECT * FROM users; ## Получить только столбцы firstName и age из таблицы users SELECT firstName, age FROM users; # LIMIT ## Получить первых 20 записей таблицы users SELECT * FROM users LIMIT 20; # DISTINCT ## Получить только уникальные значения из столбца firstName SELECT DISTINCT(firstName) FROM users; # WHERE ## Записи, где столбец gender = 'male' SELECT * FROM users WHERE gender = 'male'; ## AND, OR SELECT * FROM users WHERE age = 25 AND isMarried = falsel SELECT * FROM users WHERE age = 20 OR age = 50; # BETWEEN ## Записи, где значения столбца age находятся в промежутке от 20 до 30 SELECT * FROM users WHERE age BETWEEN 20 AND 30; #NULL ## Записи, где столбец lastName не пуст SELECT * FROM users WHERE lastName IS NOT NULL; ``` - Поиск данных по шаблону ```sql # IN, LIKE, NOT LIKE ## % - подстановочный знак, который указывает на любое кол-во символов ## _ - подстановочный знак, который указывает на один символ ## Записи, где firsName равен 'John', 'Mike' или 'Kane' SELECT * FROM users WHERE firstName IN ('John', 'Mike', 'Kane'); ## Записи, где firsName начинается c буквы 'A' SELECT * FROM users WHERE firstName LIKE 'A%'; ## Записи, где первая буква в firstName равна 'A', 'B' или 'C' SELECT * FROM users WHERE firstName LIKE '[ABC]%'; ## Записи, где вторая буква в firsName не равна 'o' SELECT * FROM users WHERE firstName NOT LIKE '_o%'; ``` - Сортировка и фильтрация данных таблиц ```sql # ORDER BY ## ASC - по возрастанию (по умолчанию) ## DESC - по убыванию SELECT * FROM users ORDER BY firstName ASC; SELECT * FROM users ORDER BY age DESC; SELECT * FROM users ORDER BY lastName DESC, isMarried ASC; # HAVING ## Фильтрация результатов группировки ``` - Использование псевдонимов ```sql # AS SELECT firstName AS name FROM users WHERE name = "Alex"; ``` - Изменение таблиц ```sql # ALTER TABLE ## Добавить новую колонку city к таблицe users ALTER TABLE users ADD COLUMN city VARCHAR(50); ## Удалить колонку isMarried из таблицы users ALTER TABLE users DROP COLUMN isMarried; ## Переименовать колонку firstName в fName в таблицe users ALTER TABLE users RENAME COLUMN firstName TO fName; ## Переименовать таблицу users в consumers ALTER TABLE users RENAME TO consumers; ``` - Изменение данных в таблице ```sql # UPDATE ## Изменить в таблицe users записать с id = 1 UPDATE users SET firstName = 'Kale', age = 33 WHERE id = 1; ## Изменить записи, где gender = 'female' UPDATE users SET city = 'Paris' WHERE gender = 'famale'; ``` - Удаление данных из таблицы ```sql # DELETE # Удалить запись в таблице users, где id = 2 DELETE FROM users WHERE id = 2; # Удалить все записи в таблице users, где gender = 'male' DELETE FROM users WHERE gender = 'male'; ``` - [Агрегатные функции](https://codetown.ru/sql/agregatnye-funkcii/) > Используются для обобщения/подсчёта данных. ```sql # COUNT ## Возвращает количество элементов в таблице users SELECT COUNT(*) FROM users; ## Возвращает количество не повторяющихся значений столбца firstName SELECT COUNT(DISTINCT(firstName)) FROM users; # MAX, MIN SELECT MAX(age) FROM users; SELECT MIN(age) FROM users; # SUM # Сумма всех значений столбца age SELECT SUM(age) FROM users; # AVG ## Среднее значение столбца age SELECT AVG(age) FROM users; ```