1. 2. 3. 4. 5. 6. 7. 8. 9. ГОУ МГИУ Кафедра: «Информационные технологии и системы в экономике и управлении» (22) Дисциплина: «Базы данных» Лабораторная работа №7 «Запросы на связях таблиц на языке SQL» Группа 8292 Студент: Насибулин Ильнур Радикович Преподаватель: Широков Л.А. Имя файла:prv(lr7(11v(8292(nasibulin(6s( Дата сдачи: Лабораторная работа №7 Запросы на связях таблиц на языке SQL Задание. Для реляционной таблицы, сформированной в работе 1, выполнить: Выполнить соединение 2-х таблиц. Создать 3 запроса на соединении таблиц. Изложить теорию вопросов задания для защиты работы. Порядок выполнения. 1. Ознакомиться с методикой выполнения задания по лекциям и справочным материалам СУБД Access 2. Выполнить пункты задания 3. Подготовить отчет с включением результирующих по заданиям принтскринов экранов для защиты лабораторной работы 4. Подготовиться к защите лабораторной работы 1.Выполнить соединение 2-х таблиц. Для соединения 2х и более таблиц, необходимо использовать конструкцию JOIN . Для примера соединим 2 таблицы- Balance и PRV . Отобразим первую таблицу – Balance: Отобразим следующую таблицу- PRV : Скрипт, объединяющий таблицы, выглядит следующим образом: SELECT prv.PIN, prv.[Адрес подключения], prv.Логин, prv.Статус, prv.[E-Mail] телефон], Balance.Баланс FROM Balance INNER JOIN prv ON Balance.PIN = prv.PIN; , prv.[Домашний Результатом работы данного скрипта будет следующая таблица : Важно отметить, что соединения таблиц происходит при помощи ON – задает поле, по которому происходит соединения таблиц. 2.Создать 3 запроса на соединении таблиц. В качестве примера рассмотрим новую таблицу SKIDKIS, в ней отображается скидка на абонентскую плату. Таблица состоит из 2х полей : PIN и Скидки по ТП. Таблица SKIDKIS: Следующий скрипт позволяет объединить поля из таблиц PRV,Balance и SKIDKIS: SELECT prv.PIN, prv.Логин, prv.[Адрес подключения] , Balance.Баланс, Skidkis.[скидки по ТП] FROM (Skidkis INNER JOIN prv ON Skidkis.PIN = prv.PIN) INNER JOIN Balance ON prv.PIN = Balance.PIN Результирующая таблица выглядит следующим образом: Выполним еще один запрос на объединение таблиц , с использованием разных полей. Следующий скрипт объединяет 2 таблицы и отображает статус и скидку по тарифному плану: SELECT prv.Статус, Skidkis.[скидки по ТП ] FROM prv INNER JOIN Skidkis ON prv.PIN = Skidkis.PIN; Результат выглядит следующим образом: ; 3.Изложить теорию вопросов задания для защиты работы. Конструкция JOIN. Объединяет записи из двух таблиц, если в связующих полях этих таблиц содержатся одинаковые значения. Синтаксис FROM таблица1 INNER JOIN таблица2 ON таблица1.поле1 оператор_сравнения таблица2.поле2 Операция INNER JOIN состоит из следующих элементов: Элемент Описание таблица1, таблица2 Имена таблиц, содержащих объединяемые записи поле1, поле2 Имена связываемых полей. Поля, не являющиеся числовыми, должны относиться к одному типу данных и содержать данные одного вида. Однако имена этих полей могут быть разными оператор_сравнения Любой оператор сравнения: (=, <, >, <=, >= или <>) Замечания Операцию INNER JOIN можно использовать в любом предложении FROM. Это самый распространенный тип объединения. С его помощью осуществляется объединение записей из двух таблиц по связующему полю, если оно содержит одинаковые значения в обеих таблицах. При работе с таблицами «Отделы» и «Сотрудники» операцией INNER JOIN можно воспользоваться для выбора всех сотрудников в каждом отделе. Если же требуется выбрать все отделы (включая те из них, в которых нет сотрудников) или всех сотрудников (в том числе и не закрепленных за отделом), можно при помощи операции LEFT JOIN или RIGHT JOIN создать внешнее объединение. При попытке объединить поля, содержащие данные типа поле MEMO или поле объекта OLE, возникает ошибка. Допускается объединение двух числовых полей похожих типов. Например, можно объединить поля с типами данных Счетчик и Длинное целое, поскольку эти типы похожи. Однако объединить поля с типами данных Одинарное с плавающей точкой и Двойное с плавающей точкой нельзя. В следующем примере показано, как можно объединить таблицы «Категории» и «Товары» по полю «ИДКатегории». SELECT ИмяКатегории, Наименование FROM Категории INNER JOIN Товары ON Категории.ИДКатегории = Товары.ИДКатегории; В предыдущем примере «ИДКатегории» является связующим полем, но оно не включено в результат запроса, поскольку оно не указано в инструкции SELECT. Чтобы включить связующее поле в результат запроса, укажите имя поля в инструкции SELECT: в данном случае это Категории.ИДКатегории. В инструкции JOIN можно также связать несколько предложений ON, используя следующий синтаксис: SELECT поля FROM таблица1 INNER JOIN таблица2 ON таблица1.поле1 оператор_сравнения таблица2.поле1 AND ON таблица1.поле2 оператор_сравнения таблица2.поле2) OR ON таблица1.поле3 оператор_сравнения таблица2.поле3)] Ниже приведен пример синтаксиса, с помощью которого можно составлять вложенные инструкции JOIN: SELECT поля FROM таблица1 INNER JOIN (таблица2 INNER JOIN [( ]таблица3 [INNER JOIN [( ]таблицаX [INNER JOIN ...)] ON таблица3.поле3 оператор_сравнения таблицаX.полеX)] ON таблица2.поле2 оператор_сравнения таблица3.поле3) ON таблица1.поле1 оператор_сравнения таблица2.поле2 Операции LEFT JOIN и RIGHT JOIN могут быть вложены в операцию INNER JOIN, но операция INNER JOIN не может быть вложена в операцию LEFT JOIN или RIGHT JOIN.