Главная страница
Навигация по странице:

  • Типы внешнего объединения

  • Поддержка полного внешнего объединения Синтаксис полного внешнего объединения не поддерживается в СУБД Access, MySQL, SQL Server и Sybase.Заключение

  • Список использованных источников

  • Список сокращений

  • Тема 24 кур.р.Базы данных. Вид работы Курсовая работа Название дисциплины Базы данных Тема Структура языка sql фамилия студента Копаев Имя студента Андрей


    Скачать 355.5 Kb.
    НазваниеВид работы Курсовая работа Название дисциплины Базы данных Тема Структура языка sql фамилия студента Копаев Имя студента Андрей
    Дата28.01.2018
    Размер355.5 Kb.
    Формат файлаdoc
    Имя файлаТема 24 кур.р.Базы данных.doc
    ТипКурсовая
    #35311
    страница4 из 4
    1   2   3   4

    Разница в синтаксисе


    Важно отметить, что синтаксис, используемый при создании внешнего объединения, может несколько отличаться для различных реализаций SQL. Различные формы синтаксиса, описанные этом разделе, помогут работать с большинством реализаций, но все же следует обратиться к документации своей СУБД и уточнить, какой синтаксис следует использовать, прежде чем начинать работу.

    Следующий оператор SELECT позволяет выполнить простое внутреннее объединение. С его помощью выбирается список всех клиентов и их заказы:

    SELECT Customers.cust_id, Orders.order_num
    FROM Customers INNER JOIN Orders
    ON Customers.cust_id = Orders.cust_id;

    Синтаксис внешнего объединения похож на этот. Для выборки имен всех клиентов, включая тех, которые еще не сделали заказов, можно сделать следующее:

    SELECT Customers.cust_id, Orders.order_num FROM Customers LEFT OUTER JOIN Orders ON Customers.cust_id = Orders.cust_id;


    cust_id       order_num
    ------------  --------------------
    1000000001     20005
    1000000002     NULL
    1000000003     20006
    1000000004     20007
    1000000005     20008

    Аналогично внутреннему объединению, в этом операторе SELECT используются ключевые слова OUTER JOIN для указания типа объединения (вместо указания его в предложении WHERE). Но, в отличие от внутренних объединений, которые связывают строки двух таблиц, внешние объединения включают в результат также строки, не имеющие связанных с ними строк. При использовании синтаксиса OUTER JOIN используется ключевое слово RIGHT или LEFT, чтобы указать таблицу, все строки которой будут включены в результат (RIGHT для таблицы, имя которой стоит справа от OUTER JOIN, LEFT — для той, имя которой значится слева).

    В предыдущем примере используются ключевые слова LEFT OUTER JOIN для выборки всех строк таблицы, указанной в левой части предложения FROM (таблицы Customers). Чтобы выбрать все строки из таблицы, указанной справа, используйте правое внешнее объединение (RIGHT OUTER JOIN), как показано в следующем примере:

    SELECT Customers.cust_id, Orders.order_num FROM Customers RIGHT OUTER JOIN Orders ON Orders.cust_id = Customers.cust_id;

    SQL Server дополнительно поддерживает упрощенный синтаксис внешнего объединения. Чтобы выбрать перечень всех клиентов, включая тех, которые не разместили ни одного заказа, можно сделать следующее:

    SELECT Customers.cust_id, Orders.order_num
    FROM Customers, Orders
    WHERE Customers.cust_id *= Orders.cust_id;


    cust_id        order_num 
    -------------  --------------------
    1000000001     20005
    1000000001     20009
    1000000002     NULL 
    1000000003     20006 
    1000000004     20007 
    1000000005     20008

    Здесь предложение объединения указано в предложении WHERE. Вместо проверки на равенство с помощью оператора = используется оператор *= для указания того, что в результат должна быть включена каждая строка таблицы Customers. Оператор *= представляет собой оператор левого внешнего объединения. С его помощью выбираются все строки левой таблицы.

    Противоположностью описанного левого внешнего объединения является правое внешнее объединение, его оператор таков: =*. Это объединение можно использовать для возвращения всех строк таблицы, имя которой находится справа от данного оператора, как показано в следующем примере:

    SELECT Customers.cust_id, Orders.order_num
    FROM Customers, Orders
    WHERE Orders.cust_id =* Customers.cust_id;

    Еще одна форма внешнего объединения (используемая только в СУБД Oracle) требует использования оператора ( + ) после имени таблицы, как показано ниже:

    SELECT Customers.cust_id, Orders.order_num
    FROM Customers, Orders
    WHERE Customers.cust_id (+) = Orders.cust_id;

    Типы внешнего объединения

    Независимо от формы используемого внешнего объединения всегда существуют только две его основные формы – левое внешнее объединение и правое внешнее объединение. Единственная разница между ними состоит в порядке указания таблиц, которые связываются. Другими словами, левое внешнее объединение может быть превращено в правое внешнее объединение просто за счет изменения порядка указания имен таблиц в предложении FROM или WHERE. А раз так, то эти два типа внешнего объединения могут заменять друг друга, и решение о том, какое именно из них нужно использовать, определяется сугубо удобством выполнения операции.

    Существует и другой вариант внешнего объединения — это полное внешнее объединение, которое извлекает все строки из обеих таблиц и связывает между собой те, которые могут быть связаны. В отличие от левого внешнего и правого внешнего объединений, которые включают в результат несвязанные строки только из одной таблицы, полное внешнее объединение включает в результат несвязанные строки из обеих таблиц. Синтаксис полного внешнего объединения таков:

    SELECT Customers.cust_id, Orders.order_num FROM Orders FULL OUTER JOIN Customers ON Orders.cust_id = Customers.cust_id;

     Поддержка полного внешнего объединения

    Синтаксис полного внешнего объединения не поддерживается в СУБД Access, MySQL, SQL Server и Sybase.

    Заключение

    SQL является непроцедурным языком, построенным на использовании обычных английских слов (таких как SELECT, INSERT, DELETE). Он может применяться как профессионалами, так и рядовыми пользователями. Этот язык формально и фактически стал стандартным языком определения и манипулирования реляционными базами данных.

    Оператор SELECT используется для создания запроса и является самым важным из всех существующих операторов SQL. Он объединяет в себе три основные операции реляционной алгебры: выборку, проекцию и соединение. При выполнении любого оператора SELECT создается результирующая таблица, содержащая один или несколько столбцов и нуль или больше строк.

    В списке выборки SELECT указываются столбцы и/или вычисляемые поля, которые должны присутствовать в результирующей таблице. В конструкции FROM должны быть перечислены все таблицы и представления, доступ к которым необходим для извлечения данных из столбцов, имена которых присутствуют в списке выборки SELECT.

    Конструкция WHERE используется для отбора строк данных, которые должны быть помещены в результирующую таблицу запроса. Отбор осуществляется посредством проверки заданных условий поиска для каждой из строк указанных таблиц. Конструкция ORDER BY позволяет упорядочить строки результирующей таблицы по значению одного или нескольких столбцов. Для каждого столбца может использоваться сортировка в порядке возрастания или убывания значений. Если конструкция ORDER BY присутствует в операторе SELECT, то она должна быть в нем последней.

    В языке SQL определено пять агрегирующих функций (COUNT, SUM, AVG, MIN и MAX), каждая из которых как параметр использует значения всех элементов указанного столбца и возвращает в качестве результата единственное значение. В одной конструкции SELECT не допускается смешивать и агрегирующие функции, и имена столбцов, за исключением случая использования конструкции GROUP BY.

    Конструкция GROUP BY позволяет включать в результирующую таблицу запроса итоговую информацию. Строки, которые имеют одно и то же значение в одном или нескольких столбцах, могут объединяться и рассматриваться как исходная информация для агрегирующих функций. В этом случае агрегирующая функция воспринимает каждую из групп как параметр и вычисляет единственное значение для каждой группы, возвращаемое как результат. Применительно к группам конструкция HAVING выполняет те же функции, что и конструкция WHERE по отношению к строкам. С ее помощью можно вы полнить отбор групп, которые будут помещены в результирующую таблицу запроса. Однако, в отличие от конструкции WHERE, в конструкции HAVING могут использоваться агрегирующие функции.

    Помимо оператора SELECT, язык SQL DML включает оператор INSERT, предназначенный для вставки одной строки данных в указанную таблицу или для вставки в таблицу произвольного количества строк, извлеченных из других таблиц с помощью некоторого подзапроса. Оператор UPDATE предназначен для обновления одного или нескольких значений заданных столбцов указанной таблицы. Оператор DELETE позволяет удалить из заданной таблицы одну или несколько строк данных.
    Глоссарий

    № п/п

    Понятие

    Определение

    1
    Microsoft SQL Server

    СУБД, обеспечивающая созда­ние информационных систем с архитектурой «клиент-сервер»

    2

    Агрегат данных

    поименованная совокупность элементов данных внутри записи, которую можно рассматривать как единое целое

    3

    База данных

    один или несколько специальным образом организованных файлов, хранящих систематизированную информацию, для доступа к которой используются программные средства системы управления базой данных

    4

    Метаданные

    описание собственной структуры базы данных

    5

    Метаданные приложений

    данные, описывающие структуру и формат пользовательских форм, отчетов, запросов и других компонентов приложений

    6

    Реляционная модель данных

    модель данных, хранящихся в базе, описывающая взаимосвязи элементов данных в виде отношения

    7

    Соединение


    физическая или концептуальная связь между объектами

    8

    Файл

    именованная область внешней памяти, в которую можно записывать данные и из которой можно считывать данные

    9

    Язык запросов SQL

    структурированный язык запросов, представляющий собой стандартизованное средство описания запросов к базам данных

    10

    Язык манипулирования данными

    совокупность конструкций, обеспечивающих выполнение основных операций по работе с данными: ввод, модификацию и выборку данных по запросам

    Список использованных источников

    1

    Конноли Т., Бегг Л., Страчан А. Базы данных. Проектирование, реализация и сопровождение. Теория и практика. 3-е издание. Вильямс 2003. – Таблицы, картинки.

    2

    Мамаев Е. Microsoft SQL Server 2000 – СПБ.: БХВ-Петербург, 2002.

    3

    Атре Ш. Структурный подход к организации баз данных – Финансы и статистика, 1983.

    4

    Бойко В. В., Савинков В.М. Проектирование баз данных информационных систем. – М.: Финансы и статистика, 1989.

    5

    Дейт К. Руководство по реляционной СУБД DB2. – М.: Финансы и статистика, 1988.

    6

    Джексон Г. Проектирование реляционных баз данных для использования с микроЭВМ. – М.: Мир. 1991.

    7

    Документация Microsoft SQL Server 2000.

    8

    Документация Microsoft Office Access 2003.

    9

    Гектор Гарсиа-Молина, Джеффри Ульман, Дженифер Уидом. Системы баз данных. Полный курс. Москва, Санкт-Петербург, Киев, Вильямс, 2003.

    10

    Когаловский М.Р. Энциклопедия технологий баз данных. – М.: Финансы и статистика, 2002.

    11

    С.Д. Кузнецов. Базы данных: языки и модели. Москва, Бином, 2008

    12

    С.Д. Кузнецов. Основы баз данных. 2-е изд. Москва, Бином, 2007

    13

    М.Р. Когаловский. Энциклопедия технологий баз данных. Финансы и статистика, 2002.

    14

    Материалы сайта «Сервер информационных технологий» WEB: www.citforum.ru

    Список сокращений

    ANSI – (American National Standards Institute) – Американский национальный институт стандартов.

    ISO (International Organization for Standardization) – международная организация, занимающаяся выпуском стандартов.

    SQL (Structured Query Language — «язык структурированных запросов») – универсальный компьютерный язык, применяемый для создания, модификации и управления данными в реляционных базах данных.

    СУБД (Система Управления Базами Данных) – совокупность программных и лингвистических средств общего или специального назначения, обеспечивающих управление созданием и использованием баз данных.
    Приложения

    А



    Б



    В




    1   2   3   4


    написать администратору сайта