Хомоненко А.Д., Цыганков В.М., Мальцев М.Г. - Базы данных. Учебник для высших учебных заведений (6-е изд.) - 2009 (960530), страница 21
Текст из файла (страница 21)
По умолчанию в ответную таблицувключаются все строки, в том числе и повторяющиеся. В отборе данных участвуют записи одной или нескольких таблиц, перечисленных в списке операнда FROM.Список данных может содержать имена столбцов, участвующих в запросе, а также выражения над столбцами. В простейшем случае в выражениях можно записывать имена столбцов, знаки арифметических операций (+, — , * , / ) , константы и круглые скобки. Если в списке данныхзаписано выражение, то наряду с выборкой данных выполняются вычисления, результаты которого попадают в новый (создаваемый) столбецответной таблицы.При использовании в списках данных имен столбцов нескольких таблицдля указания принадлежности столбца некоторой таблице применяют конструкцию вида: <имя таблицы>.<имя столбца>.Операнд W H E R E задает условия, которым должны удовлетворять записи в результирующей таблице.
Выражение <условие выборки> являетсялогическим. Его элементами могут быть имена столбцов, операции сравнения, арифметические операции, логические связки (И, И Л И , НЕТ), скобки, специальные функции LIKE, NULL, IN и т. д.Операнд G R O U P BY позволяет выделять в результирующем множествезаписей группы. Группой являются записи с совпадающими значениями встолбцах, перечисленных за ключевыми словами G R O U P BY. Выделениегрупп требуется для использования в логических выражениях операндовW H E R E и HAVING, а также для выполнения операций (вычислений) надгруппами.В логических и арифметических выражениях можно использовать следующие групповые операции (функции): AVG (среднее значение в группе), МАХ(максимальное значение в группе), MIN (минимальное значение в группе),SUM (сумма значений в группе), COUNT (число значений в группе).Операнд HAVING действует совместно с операндом G R O U P BY и используется для дополнительной селекции записей во время определениягрупп.
Правила записи <условия поиска> аналогичны правилам формирования <условия выборки> операнда W H E R E .3. Реляционнаямодельданных105Операнд ORDER BY задает порядок сортировки результирующего множества. Обычно каждая <спецификация> аналогична соответствующей конструкции оператора CREATE INDEX и представляет собой пару вида: <имя столб ц а > [ ASC| DESC].Замечание.Оператор SELECT может иметь и другие более сложные синтаксические конструкции, которые мы подробно рассматривать не будем, а поясним их смысл.Одной из таких конструкций, например, являются так называемые подзапросы. Они позволяют формулировать вложенные запросы, когда результаты одного оператора SELECT используются в логическом выражении условия выборки операнда W H E R E другого оператора SELECT.Вторым примером более сложной формы оператора SELECT является оператор, в котором отобранные записи в дальнейшем предполагается модифицировать (конструкция FOR UPDATE OF).
СУБД после выполнения такого оператора обычно б л о к и р у е т ( з а щ и щ а е т ) о т о б р а н н ы е з а п и с и отмодификации их другими пользователями.Еще один случай специфического использования оператора SELECT —выполнение объединений результирующих таблиц при выполнении нескольких операторов SELECT (операнд UNION).Пример 5. Выбор записей.Для таблицы ЕМР, имеющей поля: NAME (имя), SAL (зарплата), MGR(руководитель) и DEPT (отдел), требуется вывести имена сотрудников и размер их зарплаты, увеличенный на 100 единиц.
Оператор выбора можно записать следующим образом:SELECT name, sal+100FROM emp.Пример 6. Выбор с условием.Вывести названия таких отделов таблицы ЕМР, в которых в данный момент отсутствуют руководители. Оператор SELECT для этого запроса можно записать так:SELECT deptFROM empW H E R E mgr is NULL.Пример 7. Выбор с группированием.Пусть требуется найти минимальную и максимальную зарплаты для каждогоиз отделов (по таблице ЕМР).
Оператор SELECT для этого запроса имеет вид:SELECT dept, MIN(sal), MAX(sal)FROM empG R O U P BY dept.Часть 1. Основы106построениябазданных9. Оператор изменения записей имеет формат вида:UPDATE <имя таблицы>SET <имя столбца> = {<выражепие> , NULL }[, SET <имя столбца> = {<выражение> , NULL }... ][ W H E R E <условие>]Выполнение оператора UPDATE состоит в изменении значений в определенных операндом SET столбцах таблицы для тех записей, которые удовлетворяют условию, заданному операндом W H E R E .Новые значения полей в записях могут быть пустыми (NULL), либо вычисляться в соответствии с арифметическим выражением.
Правила записи арифметических и логических выражений аналогичны соответствующим правилам оператора SELECT.Пример 8. Изменение записей.Пусть необходимо увеличить на 500 единиц зарплату тем служащим, которые получают не более 6000 (по таблице ЕМР). Запрос, сформулированный с помощью оператора SELECT, может выглядеть так:UPDATE empSET sal = 6500W H E R E sal <= 6000.10. Оператор вставки новых записей имеет форматы двух видов:INSERT INTO <имя та6лицы>[(<список столбцов>)]VALUES (<список значений>)иINSERT INTO <имя та6лицы>[(<список столбцов>)]<предложение SELECT>В первом формате оператор INSERT предназначен для ввода новых записей сзаданными значениями в столбцах.
Порядок перечисления имен столбцов долженсоответствовать порядку значений, перечисленных в списке операнда VALUES.Если <список столбцов> опущен, то в <списке значений> должны быть перечислены все значения в порядке столбцов структуры таблицы.Во втором формате оператор INSERT предназначен для ввода в заданнуютаблицу новых строк, отобранных из другой таблицы с помощью предложения SELECT.Пример 9. Ввод записей.Ввести в таблицу ЕМР запись о новом сотруднике. Для этого можно записать такой оператор вида:INSERT INTO emp3. Реляционнаямодельданных107VALUES («Ivanov», 7500, «Lee», «cosmetics»).11. Оператор удалениязаписей имеет формат вида:DELETE F R O M < и м я таблицы>[ W H E R E <условие>]Результатом выполнения оператора D E L E T E является удаление из указанной таблицы строк, которые удовлетворяют условию, определенному операндом W H E R E .
Если необязательный операнд W H E R E опущен, то есть условие отбора удаляемых записей отсутствует, удалению подлежат все записитаблицы.Пример 10. Удаление записей.В связи с ликвидацией отдела игрушек (toy), требуется удалить из таблицы Е М Р всех сотрудников этого отдела. Оператор D E L E T E для этой задачи будет выглядеть так:D E L E T E F R O M empW H E R E dept = «toy».В заключение отметим, что, по словам Дейта, язык SQL является гибридом реляционной алгебры и реляционного исчисления. В нем имеются элементы алгебры (оператор объединения U N I O N ) и исчисления (квантор сущ е с т в о в а н и я E X I S T S ) .
Кроме того, я з ы к S Q L обладает р е л я ц и о н н о йполнотой.Контрольные вопросы и задания1. Дайте определение реляционной модели и назовите составляющие ееэлементы.2. Охарактеризуйте составные элементы реляционной модели данных иформы их представления.3. Приведите математическое описание понятия отношения.4. Что такое домен отношения?5. Дайте определение схемы отношения.6. Что представляет собой первичный ключ отношения, для чего оп задается?7. Назовите условия, при соблюдении которых таблицу можно считатьотношением.8. Что такое индекс, для чего используется индексирование?9.
Изобразите схему одноуровневой индексации и дайте ей характеристику.10. Изобразите схему двухуровневой индексации и дайте ей характеристику.11. Что такое вторичный индекс, в чем его отличие от первичного индекса?12. Приведите схему возможной организации связи вторичного индекса сэлементами базы данных.108Часть 1. Основы построениябазданных13. Опишите действие механизма контроля целостности при манипулировании данными в таблицах.14. Дайте общую характеристику теоретических языков запросов.15. Назовите операции реляционной алгебры, предложенной Коддом, иприведите графическую интерпретацию для операций пересечения ипроизведения.16. Охарактеризуйте общий и частные случаи операции соединения.17.
Назовите правила записи выражений реляционной алгебры.18. Назовите и охарактеризуйте дополнительные операции реляционнойалгебры, предложенные Дейтом.19. Охарактеризуйте варианты реляционного исчисления.20. З а п и ш и т е в ы р а ж е н и е р е л я ц и о н н о г о и с ч и с л е н и я на кортежах, соответствующее запросу: « П о л у ч и т ь имена поставщиков, которыеп о с т а в л я ю т все детали».21. Охарактеризуйте язык QBE.22.
Дайте опеределение понятия элемента примера и приведите пример егоиспользования в шаблоне запроса на выборку.23. Назовите предполагаемые направления совершенствования языка Q B Eв современных С У Б Д .24. Охарактеризуйте язык SQL.25. Покажите, что с помощью выражения (( S [П#] M I N U S ( SP W H E R EД # = 'Р2' ) [П#] ) J O I N S ) [Имя] реляционной алгебры можно получить имена поставщиков, которые не поставляют деталь Р2 (рис. 3.7).26. С ф о р м у л и р у й т е запрос, в котором требуется определить названияфирм, которые поставляют товары, отличные от товаров, предлагаемыхфирмой Pencraft (подраздел 3.8).Литература1. Дейт К.Дж.