Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Лабораторная работа № 15. Многотабличные запросы ⇐ ПредыдущаяСтр 8 из 8 Для следующих упражнений понадобятся следующие таблицы из базы данных «Борей»: «Заказы», «Заказано», «Сотрудники», «Клиенты» и «Товары». Импортируйте в Вашу базу данных недостающие таблицы.
1.Создайте с помощью оператора CREATE TABLE таблицы «писатель» и «книга».и заполните их так, как показано ниже.
В колонке «Автор» таблицы «книга» указаны коды писателей из таблицы «писатель». Несколько клеток в последних строках обеих таблиц специально оставлены пустыми. В строке 7 таблицы «книги» указан код 12, отсутствующий в таблице «писатель». Таблицы, состоящие из двух столбцов, в одном из которых хранится наименование объекта, а в другом – номер или код, называется справочником. Код из справочника используется в других таблицах вместо имени объекта. Замена наименование кодом уменьшает вероятность ошибки при вводе данных и позволяет при изменении наименования, например фамилии, внести изменение только в одно поле справочника. 2. Запрос на выборку наименований книг и их авторов выглядит так: SELECT a.Наим,b.ФИО Введите и выполните этот запрос. Обратите внимание на то, что данные из строк с пустыми полями в результаты запроса не входят. В многотабличном запросе можно использовать любые условия для отбора данных. Если не использовать никаких условий, то будет выведено декартово произведение из всех строк, таблиц, используемых в запросе, то есть 4*9=36 строк. Удалите из последнего запроса предложение WHERE и выполните получившийся запрос. В SQL в многотабличных запросах с условием отбора данных можно применять конструкцию, называемую внутренним соединением (INNER JOIN). Сформированный выше запрос на выборку наименований книг и их авторов можно переписать так SELECT a.Наим,b.ФИО В результате данного запроса не выбраны названия книг и авторы из записей, не удовлетворяющих условию: книгa.Автор=писатель.КодП.
Чтобы в выборку включить названия книг из записей, не удовлетворяющих условию запроса, применяется «левое внешнее соединение» (LEFT JOIN): SELECT a.Наим,b.ФИО Для книг «Обломов», «Пётр I» и «На дне» поле ФИО в результатах этого запроса останется пустым Чтобы в выборку включить ФИО писателей из записей, не удовлетворяющих условию запроса, применяется, применяется «правое внешнее соединение» (RIGHT JOIN): SELECT a.Наим,b.ФИО Введите и выполните последние 3 запрос. Сравните результаты выборок между собой и с первым запросом данной лаб. работы. Самостоятельно составьте и выполните запрос на выборку всех имеющихся в базе названий произведений Толстого Л.Н. и Пушкина вместе с ФИО авторов.
3. Cоставьте и выполните следующие запросы: · используя таблицы «заказы» и «клиенты», выбрать названия клиентов, их представителей (поле «ОбращатьсяК») и даты размещения их заказов при условии, что клиенты из Лондона. · используя таблицы «заказы» «заказано», «товары» и «клиенты», выбрать названия клиентов, их представителей (поле «ОбращатьсяК») и коды и марки выбранных ими товаров при условии, что названия клиентов начинаются на “F” и заказы оформлял сотрудник Кротов. 4.Объединение таблицы с самой собой применяется в тех случаях, когда в одной строке результатов выполнения запроса требуется выводить данные из разных строк исходной таблицы. Пример. Допустим, в таблице «Сотрудники» имеются поля «ФИО», «должность» и «отдел». Требуется найти всех программистов и их начальников. Известно, что программисты работают почти во всех отделах. Запрос выглядит так: SELECT а.ФИО AS программист,b.ФИО AS начальник_отдела Результаты будут выглядеть примерно так:
Самостоятельно составьте и выполните следующий запрос: из таблицы «Клиенты» всех продавцов и представителей из тех городов, в которых есть и продавцы и представители.
Лабораторная работа № 16. Предикат NULL. Для выяснения смысла значения NULL рассмотрим пример. Пусть в городе N ведётся база данных, в которой хранятся данные обо всех жителях, включая детей. Очевидно, что в графу «профессия» записи о ребёнке поместить нечего, так как у ребёнка ещё нет профессии. Графа профессия может оказаться пустой и в том случае, когда в момент занесения данных профессия жителя не была известна. Предполагается, что графа будет заполнена позже. Для неизвестного значения в SQL применяется специальное обозначение NULL. Значение NULL имеют по умолчанию все поля, в которые ничего не заносилось. NULL применяется в полях всех типов и само не имеет типа. Значение NULL можно использовать только в специальном предикате IS NULL, имеющем следующий синтаксис: <выражение> IS [NOT]NULL Предикат IS NULL принимаетзначение «истина» только, если выражение равно NULL. 1.Для работы с NULL-значениями полей создайте в базе данных таблицу NullPusto, состоящую из двух текстовых полей длиной по 30 символов. Назовите поля «ФИО» и «адр». Запишите в таблицу следующие данные:
2.Создайте и выполните следующие запросы к таблице NullPusto: a) выбрать все записи с NULL; b) выбрать все записи с “”; c) выбрать все записи, в которых есть адреса; d) выбрать все записи, в которых нет адресов; e) подсчитать количество записей, содержащих NULL; f) подсчитать количество записей, содержащих NULL и “”. Сохраните запросы и покажите их преподавателю.
2 .Подзапросы. С помощью SQL можно вкладывать один запросы внутрь другого. Внутренний запрос называют подзапросом. Обычно, внутренний запрос генерирует значение, которое проверяется в предикате внешнего запроса, определяющего верно оно или нет. Например, в следующем запросе выбираются из таблицы «Товары» те товары, цена которых меньше средней цены всех товаров таблицы: SELECT * Самостоятельно с помощью подзапроса выберите из таблицы «Заказано» заказы на товары с маркой «Pavlova». Марки товаров хранятся в таблице «Товары». 3.Предикат EXISTS имеет синтаксис EXISTS подзапрос и принимает значение ИСТИНА (TRUE), если подзапрос содержит хотя бы одну строку. В следующем запросе выбираются фамилии всех сотрудников, оформлявших заказы для клиента ANTON, при условии, что хотя бы один заказ для клиента ANTON был размещён в мае любого года. SELECT DISTINCT b.Фамилия Самостоятельно, используя таблицы «Сотрудники», «Клиенты» и «Заказы», создайте и выполните запрос на выборку всех клиентов из Рио-Де-Жанейро, если был сделан хотя бы один заказ из Рио-Де-Жанейро, оформленый сотрудником Кротовым. 4.Предикаты количественного сравнения ANY, SOME и ALL имеют синтаксис оператор сравнения {ANY | SOME | ALL} подзапрос. ANY и SOME – синонимы. Пример использования предиката ANY: SELECT КодЗаказа Для исследования особенностей предиката ANY проделайте следующее упражнение: · выберите из таблицы «Товары» цены товаров от поставщика с кодом 2; запишите эти цены; · используя ANY, выберите все товары, цены которых больше цен поставщика 2; сравните выбранные цены с записанными · повторите предыдущий пункт, иcпользуя вместо ANY предикат ALL; сравните результаты Сохраните все выполненные запросы и покажите их преподавателю
Лабораторная работа № 17. Объединение результатов нескольких запросов – UNION. Создание таблицы из существующих таблиц – SELECT … INTO 1.Предложение UNION применяется для вывода всех строк из нескольких запросов. Количество столбцов во всех запросах должно быть одинаковым и типы соответствующих столбцов должны быть сравнимыми. В следующем примере выводятся адреса и города клиентов и заказов. Параметр ALL разрешает выводить дубликаты строк. SELECT ALL Адрес,Город,'Заказы ' AS Источник Выполните этот запрос. Самостоятельно выберите из таблиц «Клиенты» и «Сотрудники» следующие данные: · фамилию и имя; · должность; · город. В дополнительном столбце укажите, из какой таблицы выбрана запись.
2. Создание таблицы из существующих таблиц с помощью SELECT … INTO. Во многих СУБД конструкция SELECT … INTO <имя таблицы> используется для создания новой таблицы и вывода в неё результатов запроса. Например, таблица «Страны» с названиями всех стран, в которые направляются заказы, создаётся в результате выполнения следующего запроса: SELECT DISTINCT СтранаПолучателя Самостоятельно с помощью SELECT … INTO создайте таблицу «Клиенты2», содержащую данные из таблицы «Клиенты» обо всех клиентах, живущих в Лондоне. Сохраните выполненные запросы и покажите их преподавателю
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2017-01-27; просмотров: 191; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.131.238 (0.006 с.) |