Тема 24 кур.р.Базы данных. Вид работы Курсовая работа Название дисциплины Базы данных Тема Структура языка sql фамилия студента Копаев Имя студента Андрей
![]()
|
Разница в синтаксисеВажно отметить, что синтаксис, используемый при создании внешнего объединения, может несколько отличаться для различных реализаций 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 позволяет удалить из заданной таблицы одну или несколько строк данных. Глоссарий
Список использованных источников
Список сокращений ANSI – (American National Standards Institute) – Американский национальный институт стандартов. ISO (International Organization for Standardization) – международная организация, занимающаяся выпуском стандартов. SQL (Structured Query Language — «язык структурированных запросов») – универсальный компьютерный язык, применяемый для создания, модификации и управления данными в реляционных базах данных. СУБД (Система Управления Базами Данных) – совокупность программных и лингвистических средств общего или специального назначения, обеспечивающих управление созданием и использованием баз данных. Приложения
|