Шпаргалка по SQL

Работа с базой

Создание новой БД

CREATE DATABASE db_name;

Создание новой таблицы

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 (перечисления - списки допустимых значений)
  • И другие

Добавление данных в таблицу

INSERT INTO users(
firstName, lastName, age, gender, isMarried
) VALUES (
'Alex', 'Manson' 25, 'male', false
);

Выборка данных из таблицы

# 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;

Поиск данных по шаблону

# 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%';

Сортировка и фильтрация данных таблиц

# 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
## Фильтрация результатов группировки

Использование псевдонимов

# AS
SELECT firstName AS name FROM users WHERE name = "Alex";

Изменение таблиц

# 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;

Изменение данных в таблице

# 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';

Удаление данных из таблицы

# DELETE
# Удалить запись в таблице users, где id = 2
DELETE FROM users WHERE id = 2;
# Удалить все записи в таблице users, где gender = 'male'
DELETE FROM users WHERE gender = 'male';

Агрегатные функции Используются для обобщения/подсчёта данных.

# 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;
Читать по теме
Интересные статьи