Міністерство освіти і науки
Національний університет „Львівська політехніка”
Кафедра EОМ
Звіт
з лабораторної роботи № 3
з дисципліни: “ Організація баз даних”
Об’єднання таблиць за допомогою операторів JOIN (LEFT, RIGHT, INNER), використання індексів
2018
Тема: Об’єднання таблиць за допомогою операторів JOIN (LEFT, RIGHT, INNER), використання індексів
Мета: Отримати навики використання операторів JOIN та індексів
Завдання:
Використовуючи таблиці, що створені у лабораторній роботі №2 визначити і створити необхідні індекси, вибір обгрунтувати
Використовуючи створені таблиці написати запити:
1 запит із використанням оператора INNER JOIN
1 запит із використанням оператора LEFT JOIN
1 запит із використанням оператора RIGHT JOIN
1 запит із використанням будь-якого оператора JOIN + довільні оператори із лабораторнії роботі №2
При захисті лабораторної роботи взяти індивідуальне завдання у викладача
Вибір варіанту:
№
Завдання
3.
База даних продуктового супермаркету
Хід роботи:
Код запитів до бази даних:
CREATE TABLE SECTION(SECTION_NUMBER INT PRIMARY KEY NOT NULL,
SECTION_NAME CHAR(20));
CREATE TABLE SHELVES(ID INT PRIMARY KEY NOT NULL,
SHELVE_NUMBER INT NOT NULL,
PRODUCT_NAME CHAR(20),
SECTION_NUMBER INT);
CREATE TABLE PRODUCT(PRODUCT_NAME CHAR(20) PRIMARY KEY NOT NULL,
SHELVE_NUMBER INT);
CREATE TABLE PRODUCT_PROPERTIES(PRODUCT_NAME CHAR(20) PRIMARY KEY NOT NULL,
QANTITY INT,
PRICE FLOAT);
INSERT INTO SECTION VALUES(1, 'TOYS')
INSERT INTO SECTION VALUES(2, 'CLOTHES')
INSERT INTO SECTION VALUES(3, 'BOOKS')
INSERT INTO SECTION VALUES(4, 'SPORTS')
INSERT INTO SECTION VALUES(5, 'OFFICE')
INSERT INTO SECTION VALUES(6, 'DAIRY_PRODUCTS')
INSERT INTO SECTION VALUES(7, 'FRESH_MEAT')
INSERT INTO SECTION VALUES(8, 'VEGETABLE')
INSERT INTO SECTION VALUES(9, 'VIDEO_GAMES')
INSERT INTO SECTION VALUES(10, 'DVD')
INSERT INTO SHELVES VALUES(1, 1, 'MILK_3%', 1)
INSERT INTO SHELVES VALUES(2, 1, 'THE_CATCHER_IN_THE_RYE', 2)
INSERT INTO SHELVES VALUES(3, 2,'MEAT', 3)
INSERT INTO SHELVES VALUES(4, 3,'MILK_5%', 4)
INSERT INTO SHELVES VALUES(5, 4,'MILK_7%', 5)
INSERT INTO SHELVES VALUES(6, 5,'MILK_10%', 6)
INSERT INTO SHELVES VALUES(7, 6,'TOMATOES', 7)
INSERT INTO SHELVES VALUES(8, 6,'POTATOES', 8)
INSERT INTO SHELVES VALUES(9, 4,'CHICKEN', 9)
INSERT INTO SHELVES VALUES(10, 4,'WATERMELON', 10)
SELECT * FROM SHELVES
INSERT INTO PRODUCT VALUES('MILK_3%', 1)
INSERT INTO PRODUCT VALUES('MILK_5%', 2)
INSERT INTO PRODUCT VALUES('MILK_7%', 3)
INSERT INTO PRODUCT VALUES('MILK_10%', 4)
INSERT INTO PRODUCT VALUES('THE_CATCHER_IN_THE_RYE', 5)
INSERT INTO PRODUCT VALUES('MEAT', 6)
INSERT INTO PRODUCT VALUES('POTATOES', 7)
INSERT INTO PRODUCT VALUES('TOMATOES', 8)
INSERT INTO PRODUCT VALUES('CHICKEN', 9)
INSERT INTO PRODUCT VALUES('WATERMELON', 10)
SELECT * FROM PRODUCT
INSERT INTO PRODUCT_PROPERTIES VALUES('MILK_3%', 1, 1.2)
INSERT INTO PRODUCT_PROPERTIES VALUES('MILK_5%', 2, 13.23)
INSERT INTO PRODUCT_PROPERTIES VALUES('MILK_7%', 3, 16.25)
INSERT INTO PRODUCT_PROPERTIES VALUES('MILK_10%', 4, 14.27)
INSERT INTO PRODUCT_PROPERTIES VALUES('THE_CATCHER_IN_THE_RYE', 5, 12.2)
INSERT INTO PRODUCT_PROPERTIES VALUES('MEAT', 6, 1.2)
INSERT INTO PRODUCT_PROPERTIES VALUES('POTATOES', 7, 3.23)
INSERT INTO PRODUCT_PROPERTIES VALUES('TOMATOES', 8, 8.2)
INSERT INTO PRODUCT_PROPERTIES VALUES('CHICKEN', 9, 6.2)
INSERT INTO PRODUCT_PROPERTIES VALUES('WATERMELON', 10, 1.56)
SELECT * FROM PRODUCT_PROPERTIES
INNER JOIN PRODUCT
ON PRODUCT_PROPERTIES.PRODUCT_NAME = PRODUCT.PRODUCT_NAME
SELECT * FROM PRODUCT
LEFT JOIN SHELVES
ON PRODUCT.PRODUCT_NAME = SHELVES.PRODUCT_NAME
SELECT * FROM SECTION
RIGHT JOIN SHELVES
ON SECTION.SECTION_NUMBER = SHELVES.SHELVE_NUMBER
SELECT * FROM PRODUCT
LEFT JOIN SHELVES
ON PRODUCT.PRODUCT_NAME = SHELVES.PRODUCT_NAME
WHERE PRODUCT.SHELVE_NUMBER < 5
/
Рис.1. Приклад виконання оператора LEFT JOIN з умовою
ON PRODUCT.PRODUCT_NAME = SHELVES.PRODUCT_NAME
WHERE PRODUCT.SHELVE_NUMBER < 5
Висновок: В даній лабораторній роботі я зрозумів принципи створення та використання індексів баз даних та навчився використовувати запити INNER JOIN, LEFT JOIN, RIGHT JOIN