|
Программирование >> Руководство по sql
SQL: select titles.title id, au ord, au lname, au fname from authors, titles, titleauthors where authors,au id = titleauthors.au id and titles.title id = titleauthors.title id Для выполнения этого запроса нам пришлось бы вводить довольно много информации с клавиатуры, и не исключено, что в процессе этого ввода мы сделали бы не одну ошибку. Помимо этого, от нас потребовалось бы проявить определенные познания в области баз данных. Создание курсора под названием books, базирующегося на следующем операторе SELECT, облегчило бы использование этой конкретной совокупности данных. Вот оператор, с помощью которого можно создать такой курсор: SQL: create view books as select titles.title id, au ord, au lname, au fname from authors, titles, titleauthors where authors.au id = titleauthors.au id and titles. title id = titleauthors. title id Теперь руководитель отдела рекламы может воспользоваться этим курсором для получения тех же результатов, не задумываясь об объединениях, списках выбора и условиях поиска: SQL: select * from books Результат:
BUllll TC7777 TC7777 TC4203 ОLeary Yokomoto OLeary Gringlesby Blotchet-Halls Michael Akiko Michael Burt Reginald Курсор можно использовать в операторе SELECT так, как если бы он был обычной таблицей. Например, руководителю отдела рекламы может понадобиться упорядочить результаты просмотра в алфавитном порядке (по фамилиям авторов). Например; SQL: select * from books order by au lname Бухгалтеру может потребоваться другое представление. Его не интересует, кто из авторов является первым, а кто вторым. Допустим, что бухгалтера интересует только нижняя строка: на чье имя должны быть выписаны чеки и на какую сумму. Такой запрос связан с вычислением того, сколько книг было продано и по какой цене, а также какой процент от суммы полагается каждому автору; SQL: select au fname, au lname, sum (price*ytd sales*royalty*royaltyshare) as Total Income from authors, titles, titleauthors, roysched where authors.au id = titleauthors.au id and titles.title id = titleauthors.title id and titles.title id = roysched.title id and ytd sales between lorange and hirange group by au lname, au fname Если бухгалтер воспользуется указанным ниже оператором SELECT для создания курсора под именем myaltychecks, то эквивалентный запрос будет иметь следующий вид: SQL: select * from royaltychecks Результаты (кто получает чек и на какую сумму) будут иметь следующий вид:
Наконец, рассмотрим пример со служащим головной издательской компании, который хочет выяснить положение дел с различными категориями книг в каждом из филиалов. Для этого можно воспользоваться запросом следующего вида: SQL: select pub id, type, sum(price*ytd sales), avg(price), avg(ytd sales) from titles group by pub id, type Однако служащему могут не нравиться все эти сложности. Что ж, можно воспользоваться куда более простым оператором: SQL: select * from currentinfo Результат:
Воспользовавшись этим курсором, занятой служащий может быстро увидеть, какие издания приносят доход, и установить взаимосвязь между прибылью, средней ценой и средним уровнем продаж. Почему же все-таки курсор? Как видно из предьщущих примеров, курсорами можно пользоваться для фокусировки , упрощения и настройки базы данных под конкретного пользователя. Кроме того, с помощью курсоров реализуется механизм обеспечения безопасности. Наконец, они могут защитить пользователей при изменении структуры базы данных. Фокусировка, упрощение и настройка. Курсор позволяет руководителю отдела рекламы, бухгалтеру и служащему в приведенных выше примерах сфокусировать свое внимание на конкретных данных и задачах. При этом никакая излишняя или отвлекающая внимание информация ему не встретится. Упрощается и работа с данными. Если самые необходимые операции объединения, проектирования и/или выбора уже определены с помощью курсоров, существенно упрощается процесс добавления других операторов. Самостоятельное построение такого развернутого запроса, с другой стороны, могло бы представлять собой весьма устрашающую перспективу. Курсоры - превосходный способ настройки (или подгонки) общей базы данных к нуждам конкретного пользователя, каждый из которых может иметь свои собственные
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |