![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву ![]() Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Соединение таблиц и анализ данных.Содержание книги
Поиск на нашем сайте
Цель и порядок работы 1.1 Цель работы Ознакомиться со структурой и синтаксисом основных конструкций формирования соединений.
1.2 Порядок выполнения работы - Ознакомиться с описанием работы; - Выполнить задание для самостоятельной работы; - Ответить на контрольные вопросы; - Представить результаты работы преподавателю.
2. Общие сведения Для создателей стандарта SQL2 внешние объединения были серьезной проблемой. Так как внешние объединения — это единственный способ представления результатов ряда крайне необходимых запросов, было важно, чтобы стандарт SQL2 поддерживал данное понятие. Кроме того, внешние объединения поддерживались многими СУБД и становились все более важной частью SQL. Однако, как видно из предыдущей лабораторной работы, способы представления внешних объединений в различных СУБД сильно отличались друг от друга. Кроме того, все способы обозначения внешних объединений в коммерческих программных продуктах страдали недостатками и выбирались по принципу их минимального влияния на язык SQL, а не из соображений ясности и точности. На этом фоне в стандарте SQL2 был определен совершенно новый метод поддержки внешних объединений, который не опирался ни на одну популярную СУБД. В спецификации стандарта SQL2 поддержка внешних объединений осуществляется в предложении FROM с тщательно разработанным синтаксисом, позволяющим пользователю точно определить, каким образом исходные таблицы должны быть объединены в запросе. Механизм поддержки внешних объединений, представленный в стандарте SQL2, обладает двумя преимуществами. Во-первых, с появлением стандарта SQL2 стало возможным создавать объединения самых сложных видов. Во-вторых, существующие СУБД могут без каких-либо конфликтов поддерживать имеющиеся в стандарте SQL2 расширения стандарта SQL1 и в то же время сохранять поддержку своего собственного синтаксиса для внешних объединений. Этих преимуществ удалось добиться за счет значительного усложнения прежде одного из самых простых разделов языка SQL. По сути, расширенная поддержка объединений является частью значительного расширения возможностей запросов в SQL2 в целом. Стало возможным выполнять операции над результатами запроса как над множествами (сложение, пересечение, вычитание таблиц) и применять выражения, манипулирующие строками, таблицами и подчиненными запросами.
Соединение - последний из трех операторов (выборка, проецирование и соединение), которые должен поддерживать любой язык реляционных запросов. С помощью операции соединения в одном операторе SELECT можно манипулировать данными из разных таблиц. Соединение таблиц сродни сборке из отдельных частей конструктора единого целого. Нормализованная база данных характеризуется тем, что в ней данные не концентрируются в больших, всеобъемлющих таблицах, а распределяются по многочисленным таблицам с меньшим количеством столбцов в целях устранения повторяющихся данных, экономии пространства, повышения производительности и обеспечения целостности данных. Задача нормализации является очень важной и крайне необходимой для обеспечения нормального функционирования реляционных баз данных; тем не менее, из того, что данные нормализованы, т.е. распределены по многочисленным таблицам, следует также, что для выборки данных приходится использовать несколько таблиц. Концепции нормализации рассматриваются более подробно в следующей лабораторной работе. А на данный момент достаточно помнить, что по мере увеличения степени нормализации базы данных возрастает вероятность того, что для получения всех требуемых данных придется прибегать к соединению нескольких таблиц. В данной лабораторной работе приведено вводное описание процесса комбинирования данных из нескольких таблиц в один результирующий набор с использованием различных форм конструкции JOIN. В число этих конструкций входят следующие: - INNER JOIN—внутреннее соединение. - OUTER JOIN— внешнее соединение, как левое (LEFT), так и правое (RIGHT). - FULL JOIN— полное соединение. - CROSS JOIN—перекрестное соединение.
Конструкции JOIN Во время работы с данными, хранящимися в нормализованной базе данных, часто приходится сталкиваться с ситуациями, в которых всю необходимую информацию невозможно получить только из одной таблицы. В других случаях вся информация, которая должна быть получена, находится в одной таблице, но выборка этих данных должна осуществляться по условиям, подлежащим проверке по другой таблице. Конструкция JOIN предназначена для использования именно в таких ситуациях.
Конструкция JOIN выполняет именно ту задачу, на которую указывает смысл соответствующего английского глагола, — соединяет информацию из двух таблиц в один результирующий набор. Результирующий набор можно рассматривать как «виртуальную» таблицу. В него входят и столбцы, и строки, а сами столбцы характеризуются определенными типами данных. Результирующий набор можно использовать так, как если бы это была таблица, и обращаться к нему для выполнения других запросов. Конкретные способы, применяемые в конструкции JOIN для соединения информации из двух таблиц в один результирующий набор, зависят от того, какие указания предусмотрены в этой конструкции, касающиеся сбора данных из разных таблиц, поэтому и предусмотрены четыре разных типа конструкции JOIN. Но все разности конструкций JOIN имеют одну общую отличительную особенность в том, что в них одна строка согласуется с одной или несколькими другими строками для получения результирующей строки, представляющей собой надмножество, созданное путем соединения нолей из нескольких записей. Например, предположим, что строки с данными о департаменте берутся из таблицы Departments (таблица 6).
Таблица 6 – Одна строка с данными из таблицы Departments.
Теперь перейдем к рассмотрению строки из таблицы с данными сотрудниках, называемой employees (таблица 7).
Таблица 7 – Одна строка с данными из таблицы Emploees
Конструкция JOIN позволяет создать одну строку из двух строк, находящихся в полностью отдельных таблицах (таблица 8).
Таблица 8 – Строка, полученная в результате соединения строк с данными из таблиц Departments и Employees
С помощью этой конструкции JOIN строки соединяются на основании СВЯЗИ "один к одному" (по крайней мере такое впечатление складывается на основании приведениях данных). Одна строка из таблицы Departments соединяется с одной строкой из таблицы Employees. Немного дополним условия этого примера и рассмотрим, что при этом произойдет. Введем еще одну строку в таблицу Employees (таблица 9).
Таблица 9 - Две строки с данными из таблицы Emploees
Теперь рассмотрим, что произойдет после соединения дополненной таблицы Employees с той же таблицей Departments (содержащей только одну строку) (таблица 10).
Таблица 10 - Результаты соединения дополненной таблицы Employees с таблицей Department
Вполне очевидно, что полученные данные существенно изменились, поскольку больше нельзя утверждать, что между таблицами наблюдается связь «один к одному»; скорее, здесь присутствует связь «один ко многим».
Условия соединения синтаксически описываются следующим образом (заметьте, что типы соединения намеренно исключены из этого примера). SELECT * FROM имя_таблицы1 JOIN имя_таблицы2 ON имя_тоблицы1. столбец1 = имя_таблицы2.столбец2 {AND|OR} имя_таблицы1.столбецЗ = имя_таблицы2.столбец4 JOIN table_nameЗ ON имя_таблицы1.столбецА = имя_таблицыЗ.столбецА [{AND|OR} имя_таблицы1.столбецЗ = имя_таблицы2.столбец4
Для создания предложения JOIN с несколькими условиями используется оператор AND или OR.
КОНСТРУКЦИИ INNER JOIN Бесспорно, конструкции INNER JOIN представляют собой наиболее распространенную разновидность конструкции JOIN. С помощью этих конструкций осуществляется согласование строк по данным из одного или нескольких общих полей, как и в большинстве других конструкций JOIN, но в отличие от этого конструкция INNER JOIN возвращает только строки, согласованные по всем полям, которые обозначены как используемые для соединения. В предыдущих примерах в результирующий набор вошла по меньшей мере один раз каждая строка, но на практике такая ситуация встречается редко. Наиболее предпочтительный формат кода для конструкции INNER JOIN выглядит примерно таким образом: SELECT * FROM имя_таблицы1 INNER JOIN имя_таблицы2 ON имя_тоблицы1. столбец1 = имя_таблицы2.столбец2 {AND|OR} имя_таблицы1.столбецЗ = имя_таблицы2.столбец4
Отличительная особенность INNER JOIN состоит в том, что она возвращает только те строки, которые были согласованны по всем полям.
Пример 1: SELECT departments.department_id, department_name, location_id, employee_id, first_name, last_name FROM departments inner join employees ON (departments.department_id = employees.department_id)
Рисунок №49 – Результат выборки
Рассмотрим еще один небольшой запрос, который позволяет ознакомиться с особенностями конструкции JOIN: Пример 2: SELECT departments.department_id, department_name, location_id, employee_id, first_name, last_name FROM departments inner join employees ON (departments.department_id = employees.department_id)WHERE employee_id > 107
Рисунок №50 – Результат выборки из примера №2
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2017-02-09; просмотров: 384; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.191.132.147 (0.008 с.) |