Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Раздел-2(СУБД).doc
Скачиваний:
18
Добавлен:
01.09.2019
Размер:
981.5 Кб
Скачать

2.6.2. Манипулирование данными с помощью языка запросов sql

Ранее уже было отмечено, что языковые средства СУБД, обеспечивающие обработку (представление и редактирование) данных, являются ее важнейшей компонентой. Развитие реляционной модели данных привело к появлению реляционных языков, наиболее распространенным из которых является SQL (Structured Query Language, язык структурированных запросов). На сегодняшний день язык SQL является де-факто стандартом реляционного языка баз данных и используется в большинстве коммерческих систем.

SQL был разработан в компании IBM Research в начале 1970-х годов, с того времени диалекты языка SQL стали Американским национальным стандартом (ANSI), Международным стандартом (ISO), стандартом системы UNIX, стандартом корпорации IBM, описывающим "общий интерфейс базы данных". Язык SQL используется для выполнения операций над таблицами (создание, удаление, изменение структуры) и над данными (выборка, добавление, изменение, удаление), а также некоторых сопутствующих операций (сортировка, группировка данных и др.). Как уже было отмечено, SQL является непроцедурным языком, что считается одним из основных его преимуществ, и не содержит имеющихся в обычных языках программирования операторов управления, организации подпрограмм, ввода-вывода и т.п. Формулирование запроса к базе данных на проведение определенных операций над данными производится на естественном для пользователя языке (английском). Важно подчеркнуть, что эти возможности опираются только на логическую структуру базы данных, а не на ее физическую структуру, что согласуется с требованием реляционной модели. Основным требованием от пользователя является умение правильно сформулировать запрос, не заботясь о том, как происходит его выполнение. SQL автономно не используется, а обычно является встроенным языком программирования многих СУБД (Access, Paradox, Visual FoxPro и др.) или современных версий процедурных языков программирования (Pascal, C++ и др.).

В силу ограниченности объема данной книги отметим только некоторые функции языка по организации запросов, иллюстрирующие структуру операторов SQL. Для детального освоения языка SQL читателям можно рекомендовать специальную литературу [15]. Все запросы на получение практически любого количества данных из одной или нескольких таблиц выполняются с помощью единственного предложения SELECT. В общем случае результатом реализации предложения SELECT является другая таблица. К этой новой (рабочей) таблице может быть снова применена операция SELECT и т.д., т.е. такие операции могут быть вложены друг в друга. В упрощенном виде оператор SELECT имеет следующий формат:

SELECT [ALL|DISTINCT] <список данных>

FROM <список таблиц>

[WHERE <условие выборки>]

[GROUP BY <имя столбца> [, <список таблиц>]…]

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

  • SELECT (выбрать) – данные из указанных столбцов и (если необходимо) выполнить перед выводом их преобразование в соответствии с указанными выражениями и (или) функциями;

  • FROM (из) – перечисленных таблиц, в которых расположены эти столбцы;

  • WHERE (где) – строки из указанных таблиц должны удовлетворять указанному перечню условий отбора строк;

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

Кроме традиционных операторов сравнения (= | <> | < | <= | > | >=), в WHERE фразе используются условия BETWEEN (между), LIKE (похоже на), IN (принадлежит), IS NULL (не определено) и EXISTS (существует), которые могут предваряться оператором NOT (не). Критерий отбора строк формируется из одного или нескольких условий, соединенных логическими операторами:

  • AND (и) – когда должны удовлетворяться оба разделяемых с помощью AND условия;

  • OR (или) – когда должно удовлетворяться одно из разделяемых с помощью OR условий;

  • AND NOT (и не) – когда должно удовлетворяться первое условие и не должно второе;

  • OR NOT (или не) – когда или должно удовлетворяться первое условие, или не должно удовлетворяться второе, причем существует приоритет AND над OR (сначала выполняются все операции AND и только после этого операции OR). Для получения желаемого результата WHERE условия должны быть введены в правильном порядке, который можно организовать введением скобок.

В качестве иллюстрации возможностей SQL рассмотрим примеры запросов, использующие указанные конструкции.

Запрос "Получить данные о видах загружаемых материалов в доменную печь" на языке SQL выглядит следующим образом:

SELECT Материалы FROM Доменная_печь

Пример более сложного запроса, предполагающего формирование специальных условий на результат отбора с помощью фразы WHERE: "Получить данные химического анализа о содержании кремния и углерода в чугуне, взятом на доменной печи №1 при выпуске №122212".

SELECT Si_чуг, C_чуг

FROM Доменная_печь

WHERE Д_печь='1' AND N_выпуска='122212'

Запрос, иллюстрирующий использование встроенных статистических функций (функций множества): "Получить общее количество выпусков на каждой из доменных печей за 01.10.2000".

SELECT COUNT(N_выпуска)

FROM Доменная_печь

WHERE Дата_выпуска=#01.10.2000#