Для удобства пользования базой данной, предоставляет нам возможность делать запросы в нашу базу данных. С помощью запросов мы можем получить нужные данные, отсортировать по какому-либо полю, сгруппировать по какому-то полю и тд.
Мои запросы:
В наших таблицах есть связи, но в полях хранятся id вместо какой-либо полезной нам информации. Запросы позволяют это исправить и сделать наши таблицы более информативными и понятными.
Таблица carts - SELECT carts.id, goods.name, quantity, order_id FROM carts, goods WHERE goods.id = goods_id
Таблица orders - SELECT orders.id, clients.first_name client_first_name, clients.last_name client_last_name, clients.middle_name client_middle_name, payment_methods.name payment_method_name, paid, date_time FROM orders, clients, payment_methods WHERE orders.client_id = clients.id AND orders.payment_method_id = payment_methods.id
Таблица procurement - SELECT procurement.id, goods.name goods_name, suppliers.first_name supplier_first_name, suppliers.last_name supplier_last_name, suppliers.middle_name supplier_middle_name, suppliers.phone supplier_phone, procurement.price FROM procurement, goods, suppliers WHERE procurement.goods_id = goods.id AND procurement.supplier_id = suppliers.id
Таблица reviews - SELECT reviews.id, goods.name goods_name, clients.first_name client_first_name, clients.last_name client_last_name, clients.middle_name client_middle_name, review_text, rating FROM reviews, goods, clients WHERE reviews.goods_id = goods.id AND reviews.client_id = clients.id
Таблица sale - SELECT sale.id, goods.name goods_name, price, discount FROM sale, goods WHERE sale.goods_id = goods.id
Для удобства мы можем создать представления наших запросов и в будущем мы будет обращаться именно к представлениям
Представление для carts - CREATE VIEW carts_view AS SELECT carts.id, goods.name, quantity, order_id FROM carts, goods WHERE goods.id = goods_id
Представление для orders - CREATE VIEW order_view AS SELECT orders.id, clients.first_name client_first_name, clients.last_name client_last_name, clients.middle_name client_middle_name, payment_methods.name payment_method_name, paid, date_time FROM orders, clients, payment_methods WHERE orders.client_id = clients.id AND orders.payment_method_id = payment_methods.id
Представление для procurement - CREATE VIEW procurement_view AS SELECT procurement.id, goods.name goods_name, suppliers.first_name supplier_first_name, suppliers.last_name supplier_last_name, suppliers.middle_name supplier_middle_name, suppliers.phone supplier_phone, procurement.price FROM procurement, goods, suppliers WHERE procurement.goods_id = goods.id AND procurement.supplier_id = suppliers.id
CREATE VIEW review_view AS SELECT reviews.id, goods.name goods_name, clients.first_name client_first_name, clients.last_name client_last_name, clients.middle_name client_middle_name, review_text, rating FROM reviews, goods, clients WHERE reviews.goods_id = goods.id AND reviews.client_id = clients.id
CREATE VIEW sale_view AS SELECT sale.id, goods.name goods_name, price, discount FROM sale, goods WHERE sale.goods_id = goods.id
Вот что получилось:
Пример удаления строки (Удаляем отзыв с рейтингом 4) - DELETE FROM `reviews` WHERE rating = 4
Пример добавления строки (Добавляем отзыв) - INSERT INTO `reviews`(`id`, `goods_id`, `client_id`, `review_text`, `rating`) VALUES (null, 4, 2, "Some review", 5)
Пример изменения строки. (Даём скидку пользователю) - UPDATE `clients` SET `discount`=2 WHERE id = 1
Пример группировки строк в таблице. (группируем по заказу) - SELECT * FROM carts GROUP BY order_id
Пример группировки строк в таблице с having (группируем по заказу с подсчетом товаров в заказе и общим количеством) - SELECT COUNT(goods_id) count_goods, sum(quantity) sum_quantity, order_id FROM carts GROUP BY order_id HAVING COUNT(goods_id)
Пример использования. (Поиск пользователя по имени) LIKE - SELECT * FROM clients WHERE first_name LIKE "Кумуш"
Пример использования JOIN - SELECT goods.id, goods.name, types_of_goods.name name_types_of_goods, quantity_in_stock, description FROM goods INNER JOIN types_of_goods ON goods.type_id = types_of_goods.id
Пример использования BETWEEN (Выбираем товар по минимальной и максимальной цене) - SELECT * FROM sale WHERE price BETWEEN 13000 AND 16000
Пример сортировки от большего к меньшему - SELECT * FROM sale ORDER BY price DESC
Пример использования IN (Выбираем типы данных «Ноутбук» и «Нетбук») - SELECT * FROM types_of_goods WHERE name IN ("Ноутбук", "Нетбук")
Пример использования OR - SELECT * FROM types_of_goods WHERE name = "Ноутбук" OR name = "Нетбук"
Пример использования UNION (Выбираем всех людей в бд) - SELECT first_name, last_name, middle_name FROM clients UNION SELECT first_name, last_name, middle_name FROM suppliers