backend-cheats/files/databases/sql-cheatsheet.md

146 lines
5.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Шпаргалка по SQL
<div align="right"><a href="https://github.com/cheatsnake/backend-cheats#%D1%80%D0%B5%D0%BB%D1%8F%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F-%D0%B1%D0%B0%D0%B7%D0%B0-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85">Вернуться на главную страницу ⬆️</a></div>
- Создание новой БД
```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;
```