Найти тему
JavAKnazzz

SQL ---- заметки 2

Оглавление

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