1. Создать таблицу
CREATE TABLE users (
id BIGINT NOT NULL PRIMARY KEY,
first_name VARCHAR(64) NOT NULL,
last_name VARCHAR(64) NOT NULL,
email VARCHAR(128) NOT NULL
);
2. Работа с таблицами
Вставка
INSERT INTO users (id, first_name, last_name, email) ----> в какую таблицу (имя) какие колонки вставлять
VALUES (1, 'Vlad', 'Ivanov', 'vi@yandex.ru'); ----> указываем значения - конкретные данные
Обновление
UPDATE users SET ---> в какой таблице обновляем
email = 'oper@ya.ru', first_name = 'Ivan' ---> какие значения вставляем
WHERE id = 1; ---> условия, т.е. кому конкретно меняем (если не указать заменит все данные)
Удаление
DELETE FROM users
WHERE id = 2 OR id = 3 ---> можно удалить несколько строк
3. Достать данные из таблицы
SELECT id, first_name, last_name, email
FROM users
WHERE id = 1 ---> условие, можно писать любые условия, можно совмещать со словами AND и OR
4. Связь таблиц
CREATE TABLE spendings (
id BIGINT NOT NULL PRIMARY KEY,
price INT NOT NULL,
create_at TIMESTAMP DEFAULT now(),
user_id BIGINT NOT NULL,
CONSTRAINT user_id_fk FOREIGN KEY(user_id) REFERENCES users (id)
);
5. Присоединение колонок из разных таблиц JOIN
SELECT spendings.*, users.first_name
FROM spendings
INNER JOIN users ON users.id = spendings.user_id
==> INNER JOIN: Этот тип JOIN возвращает только те строки, которые имеют соответствие в обоих таблицах. Он соединяет строки из двух таблиц на основе условия, определенного в операторе ON.
==> LEFT JOIN (или LEFT OUTER JOIN): Этот тип JOIN возвращает все строки из левой таблицы и соответствующие строки из правой таблицы. Если нет соответствия, то для правой таблицы будут возвращены NULL значения.
==> RIGHT JOIN (или RIGHT OUTER JOIN): Этот тип JOIN возвращает все строки из правой таблицы и соответствующие строки из левой таблицы. Если нет соответствия, то для левой таблицы будут возвращены NULL значения.
==> FULL JOIN (или FULL OUTER JOIN): Этот тип JOIN возвращает все строки из обеих таблиц, и если нет соответствия, то для недостающих значений будут возвращены NULL значения.
6. Агрегатные функции
Суммирование
SELECT SUM(price)
FROM spendings
GROUP BY user_id
7. HAVING - только после GROUP BY
SELECT users.*, SUM(spendings.price)
FROM users
JOIN spendings ON users.id = spendings.user_id
GROUP BY spendings.user_id
HAVING SUM(spendings.price) > 1000000
8. ИЗМЕНЕНИЕ ТАБЛИЦ
ALTER TABLE spendings ADD COLUMN category_id BIGINT;
ALTER TABLE spendings ADD CONSTRAINT category_fk FOREIGN KEY (category_id) REFERENCES categories (id);