diff --git a/files/databases/sql-cheatsheet.md b/files/databases/sql-cheatsheet.md new file mode 100644 index 0000000..35f61e5 --- /dev/null +++ b/files/databases/sql-cheatsheet.md @@ -0,0 +1,146 @@ +# Шпаргалка по 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; + ``` \ No newline at end of file