Содержание
- 2. Запросы нам требуется механизм эффективного поиска информации в БД через запросы все СУБД (OOoBase здесь не
- 3. Реализация запросов Открывается окно дизайнера и, прежде всего, нам предлагается выбрать таблицы, из которых будет производиться
- 4. Дизайнер запросов Основное окно дизайнера, разделенно на две части: в верхней представлены все таблицы, участвующие в
- 5. Запуск запроса Давайте воспользуемся первой (самой левой) ячейкой строки Поле редактора и выберем из нее специальный
- 6. Временная таблица запроса Мы можем использовать временную таблицу для внесения новых записей. У нее тоже есть
- 7. Просмотр данных запроса
- 8. Быстрая навигация по таблице Справа от рассмотренной конструкции находятся 5 кнопок быстрой навигации по таблице, возвращенной
- 9. Редактирование запросов Новая задача – вывести все строки из таблицы Отдел, но упорядочить ее по возрастанию
- 10. Создание простых запросов с помощью мастера
- 11. Мы попадаем на первый шаг мастера – выбор таблиц и полей. В выпадающем списке Таблицы расположены
- 12. Выбор таблиц и полей На этом шаге нам предстоит определиться с правилами сортировки. Мастер предлагает до
- 13. Выбор таблиц и полей На четвертом шаге мы могли бы добавить функционал группировок и агрегирующих функций.
- 14. Выбор таблиц и полей На финальном шаге мы можем произвести краткий обзор того функционала, что мы
- 15. Выбор таблиц и полей Вторая проблема гораздо менее очевидна, но гораздо более существенна. Как раз те
- 16. Выбор таблиц и полей После нажатия кнопки Готово мы оказываемся в дизайнере. Вверху показаны обе таблицы,
- 17. Связь между таблицами Связь между двумя таблицами устанавливается по принципу «колонка к колонке». Т.е. с каждой
- 18. Связь между таблицами Подавляющее большинство связей между реальными таблицами в промышленных БД являются связями один-ко-многим. Теперь
- 19. Краткое резюме: запросы – это механизм эффективного поиска информации в базе; все запросы физически представляют собой
- 20. Контрольный вопрос 1. Может ли запрос вернуть информацию сразу из колонок трех таблиц? Нет, запрос работает
- 21. Контрольный вопрос 3. Укажите метасимвол, при использовании которого в дизайнере запросов будут выведены все колонки данной
- 22. Контрольный вопрос 5. Может ли быть выполнен запрос, извлекающий данные не из физической таблицы, а из
- 23. Контрольный вопрос 7. Мы решили создать новый запрос для извлечения информации из таблицы МояКоллекцияСD. Укажите, какие
- 24. Контрольный вопрос 9. Укажите в интерфейсе седьмого шага Мастера запросов текстовое поле, с помощью которого мы
- 25. Контрольный вопрос 12. Какую строку мы должны выбрать, чтобы связать эти две таблицы? КодКниги. КодИздательства. НазваниеКниги.
- 27. Скачать презентацию
Слайд 2Запросы
нам требуется механизм эффективного поиска информации в БД
через запросы все СУБД (OOoBase
Запросы
нам требуется механизм эффективного поиска информации в БД
через запросы все СУБД (OOoBase
Запросы – второй по счету тип объектов, доступных для создания и использования в OOoBase.
В области задач доступны три пути создания новых запросов:
через дизайнер;
через мастер;
с помощью SQL-команд.
Начинаем работу с дизайнером. Для этого в главном окне программы в области типов объектов должны быть выбраны Запросы, а справа, в области задач, нужно щелкнуть по пункту Создать запрос в режиме дизайна.
Слайд 3Реализация запросов
Открывается окно дизайнера и, прежде всего, нам
предлагается выбрать таблицы, из
Реализация запросов
Открывается окно дизайнера и, прежде всего, нам предлагается выбрать таблицы, из
Один запрос может работать с любым количеством таблиц и извлекать данные из любых их колонок.
Таким образом, запросы обладают известной двойственностью: с одной стороны, это механизм извлечения данных, а с другой – способ представления извлеченных данных в виде временных таблиц.
Поэтому вполне можно реализовать такую цепочку:
запрос Запрос1 извлекает данные из физической таблицы;
запрос Запрос2 извлекает данные из временной таблицы, сгенерированной как результат работы запроса Запрос1;
запрос Запрос3 извлекает данные из временной таблицы, сгенерированной как результат работы запроса Запрос2 и т.д. Для поставленной задачи (все строки таблицы Отдел) необходимо выбрать эту таблицу, щелкнуть по кнопке Добавить и сразу же Закрыть.
Слайд 4Дизайнер запросов
Основное окно дизайнера, разделенно на две части: в верхней представлены все
Дизайнер запросов
Основное окно дизайнера, разделенно на две части: в верхней представлены все
С помощью нижнего редактора мы можем сообщить дизайнеру, что нас интересует информация не из всех колонок, а только лишь из колонки НазваниеОтдела. Делается это с помощью строки Поле нижнего редактора. Каждая ячейка этой строки имеет выпадающий список, где перечислены все колонки всех таблиц участвующих в запросе. Причем элементы этого списка имеют формат <имя_таблицы>.<имя_колонки_таблицы>. Это связано с тем, что мы можем выбирать данные из любой колонки любой таблицы, участвующей в запросе. А поскольку колонка НомерСчета может быть как в таблице Поставки, так и в таблице Отгрузки, то подобный формат позволяет нам однозначно идентифицировать ту колонку, с которой мы собираемся работать.
Слайд 5Запуск запроса
Давайте воспользуемся первой (самой левой) ячейкой строки Поле редактора и выберем
Запуск запроса
Давайте воспользуемся первой (самой левой) ячейкой строки Поле редактора и выберем
Комбинация <имя_таблицы>.* имеет специальный смысл: мы сообщаем, что нам нужны все колонки из таблицы, имена которых указаны слева от точки. Это как раз соответствует нашему текущему заданию – извлечь всю информацию из таблицы. Поскольку никакого дополнительного анализа данных не требуется, мы можем просто сохранить запрос и покинуть дизайнер. Для этого нужно выбрать меню Файл > Сохранить, поменять предложенное имя запроса Запрос1 на что-то описывающее суть работы запроса (например, Отдел_ВсяИнформация) и нажать OK, завершить работу с дизайнером (меню Файл > Выход).
Для запуска существующего запроса на исполнение можно:
нажать правой кнопкой мыши на значок данного запроса в области объектов и выбрать из контекстного меню пункт Открыть;
произвести двойной щелчок левой кнопкой мыши по тому же значку.
Результат будет одинаковым: мы увидим ту самую временную таблицу, сгенерированную как результат работы запроса.
Слайд 6Временная таблица запроса
Мы можем использовать временную таблицу для внесения новых записей. У
Временная таблица запроса
Мы можем использовать временную таблицу для внесения новых записей. У
Запрос никогда не хранит никаких записей, а лишь извлекает их из таблиц. Так же и в этом случае: новая запись будет сохранена в той таблице, с которой работает запрос.
Помимо добавления новых записей, в том же окне можно изменить существующие записи и даже удалить их. Если мы хотим обезопасить себя от каких-либо модификаций данных, то нам достаточно выключить («отжать») кнопку Правка данных на панели инструментов. Перед Вами на иллюстрации данная кнопка выделена прямоугольником, и можно видеть, что по умолчанию она нажата, т.е. редактирование данных включено. После ее «отжатия» мы переходим в режим «только чтение» и можем лишь просматривать строки, но не можем вставлять/редактировать/удалять их.
Слайд 7Просмотр данных запроса
Просмотр данных запроса
Слайд 8Быстрая навигация по таблице
Справа от рассмотренной конструкции находятся 5 кнопок быстрой навигации
Быстрая навигация по таблице
Справа от рассмотренной конструкции находятся 5 кнопок быстрой навигации
перейти к первой строке в таблице;
перейти к предыдущей строке в таблице;
перейти к следующей строке в таблице;
перейти к последней строке в таблице;
перейти к спец-строке Новая строка (доступна, только если кнопка Правка данных на панели инструментов нажата).
Для того чтобы закрыть окно результатов запроса, следует выполнить команду Файл > Выход. Если при этом появится окно сохранения изменений в базе, следует ответить Не сохранять, т.к. редактирование данных не входило в наши планы.
Таким образом, элементарный запрос составляется очень быстро, а его выполнение не вызывает никаких проблем.
Слайд 9Редактирование запросов
Новая задача – вывести все строки из таблицы Отдел, но упорядочить
Редактирование запросов
Новая задача – вывести все строки из таблицы Отдел, но упорядочить
ля этого требуется: убедиться, что в области типов объектов по-прежнему выбраны Запросы; нажать правой кнопкой мыши на значок нашего единственного запроса в области объектов и выбрать из контекстного меню пункт Правка. Мы вернулись в уже знакомый нам дизайнер запросов. Сейчас новая задача выполнена лишь наполовину – вся нужная информация извлекается, но не в нужном нам порядке. Порядок извлечения информации задается сортировкой, за которую отвечает строка Сортировка нижнего редактора дизайнера. Очевидно, в нашем случае нам требуется сортировка по полю ЧислоСотрудников. Для начала работы с ним требуется выбрать вторую (слева) ячейку строки Поле и из выпадающего списка данной ячейки выбрать нужную колонку.
Ниже строки Сортировка, с которой мы работали только что, располагается ячейка строки Видимый. Флажок в этой ячейке показывает, что колонка выводится в результирующую таблицу; отсутствие флажка говорит о том, что колонка принимает участие в запросе, но в результирующую таблицу не попадает. Сохранить запрос и выйти.
Слайд 10Создание простых запросов с помощью мастера
Создание простых запросов с помощью мастера
Слайд 11Мы попадаем на первый шаг мастера – выбор таблиц и полей.
В
Мы попадаем на первый шаг мастера – выбор таблиц и полей.
В
В итоговую таблицу попадают лишь те колонки, которые будут данными кнопками перенесены в правый список Поля в запросе. Кнопки «вверх» и «вниз» справа от этого списка определяют порядок вывода колонок (слева-направо) в генерируемой итоговой таблице.
ВНИМАНИЕ! В связи с имеющейся ошибкой в интерфейсе при переключении таблиц список Поля в запросе может быть очищен от колонок, выбранных на предыдущем шаге. Но логически они остаются в этом списке и будут восстановлены при добавлении очередной колонки.
Обратим внимание, что благодаря формату <имя_таблицы>.<имя_колонки_таблицы> мы знаем, какая колонка какой таблице принадлежит.
Выбор таблиц и полей
Слайд 12Выбор таблиц и полей
На этом шаге нам предстоит определиться с правилами сортировки.
Выбор таблиц и полей
На этом шаге нам предстоит определиться с правилами сортировки.
Но, согласно нашему заданию, нам требуется лишь сортировка по фамилиям по возрастанию. Поэтому из списка Сортировка выбираем Сотрудник.Фамилия и оставляем переключатель в положении По возрастанию.
На третьем шаге мы можем задать условие фильтрации отбираемых для вывода строк. Согласно нашему заданию, мы обязаны это сделать. Нас не интересуют сотрудники Административного отдела, а это уже фильтрация.
Логически мы делаем такое заключение: если в таблице Сотрудник у данного сотрудника в колонке КодОтдела стоит 0 (это как раз код Административного отдела), то нам он не интересен.
Но третий шаг мастера требует сказать, какие строки нам интересны. А поэтому мы инвертируем предыдущее умозаключение: если в таблице Сотрудник у данного сотрудника в колонке КодОтдела стоит не 0 (это как раз код Административного отдела), то нам он интересен. Переводим последнюю фразу для мастера:
из выпадающего списка Поля выбираем Сотрудник.КодОтдела;
из выпадающего списка Условие выбираем не равно;
в поле Значение вносим 0.
Слайд 13Выбор таблиц и полей
На четвертом шаге мы могли бы добавить функционал группировок
Выбор таблиц и полей
На четвертом шаге мы могли бы добавить функционал группировок
На этом шаге мы можем присвоить нашим колонкам альтернативные имена или, как их еще называют, алиасы. Например, мы знаем, что в физической таблице Сотрудник есть колонка Оклад, но хотели бы, чтобы для данного запроса эта колонка называлась Зарплата за месяц. Тогда бы мы стерли слово Оклад в соответствующем текстовом поле и ввели бы новое значение. Алиасы никоим образом не влияют на исходные таблицы. Их назначение чисто декоративное и распространяется лишь на тот запрос, где они были применены. В нашем случае нет нужды прибегать к алиасам, названия колонок нас вполне удовлетворяют. Поэтому нужно просто нажать кнопку Дальше > и переместиться к шагу восьмому и последнему.
Слайд 14Выбор таблиц и полей
На финальном шаге мы можем произвести краткий обзор того
Выбор таблиц и полей
На финальном шаге мы можем произвести краткий обзор того
С помощью переключателя мы можем выбрать одну из двух опций:
Показать запрос. Сформировать запрос, выполнить его и отобразить результат;
Изменить запрос. Сформировать запрос, не выполнить его, а отобразить его в дизайнере запросов для последующей «доводки».
Давайте посмотрим, готов ли наш запрос? Можно увидеть явное нарушение задания: нам не требуется код отдела, а только его название. А в запросе, который почти готов, он будет выведен, да еще и дважды (колонка Сотрудник.КодОтдела и колонка Отдел.КодОтдела).
Слайд 15Выбор таблиц и полей
Вторая проблема гораздо менее очевидна, но гораздо более существенна.
Выбор таблиц и полей
Вторая проблема гораздо менее очевидна, но гораздо более существенна.
не понимает логической взаимосвязи между таблицами, хотя должен понимать.
Обе проблемы возможно решить через дизайнер, и поэтому наш выбор из двух опций очевиден – Изменить запрос. Таким образом, экран финального шага мастера запросов принимает следующий вид:
Слайд 16Выбор таблиц и полей
После нажатия кнопки Готово мы оказываемся в дизайнере. Вверху
Выбор таблиц и полей
После нажатия кнопки Готово мы оказываемся в дизайнере. Вверху
Для того чтобы решить вторую проблему, нам необходимо создать конструкцию, которая так и называется – связь. Начинается этот процесс через команду Вставка > Создать связь. Откроется диалог Свойства связи. Сколько бы таблиц не участвовало в запросе, связь всегда устанавливается между ровно двумя таблицами. Таблицы, участвующие в связи, можно выбрать из выпадающих списков Включенные таблицы. В нашем случае всего две таблицы принимают участие в запросе, и обе они уже выбраны.
Слайд 17Связь между таблицами
Связь между двумя таблицами устанавливается по принципу «колонка к колонке».
Связь между таблицами
Связь между двумя таблицами устанавливается по принципу «колонка к колонке».
Теперь можно нажать OK для создания заявленной связи. Если все было сделано правильно, в верхней части дизайнера между двумя таблицами возникает тонкая черная линия.
Небольшие квадраты по концам этой линии соединяют именно те колонки, которые отвечают за поддержание связи. Заметим, что связь, созданная только что, является классической связью один-ко-многим. Если мы берем один отдел, то в нем работает много сотрудников.
Слайд 18Связь между таблицами
Подавляющее большинство связей между реальными таблицами в промышленных БД являются
Связь между таблицами
Подавляющее большинство связей между реальными таблицами в промышленных БД являются
Самое интересное, что движок СУБД (подпрограмма, ответственная за выполнение запросов) ничего не знает ни о том, ни о другом. Единственное, что она умеет, - это выполнять SQL-скрипты. SQL-скрипт – это обычно небольшая (хотя чисто синтаксически нет никаких ограничений) программа, составленная на специальном языке программирования. Движок СУБД берет эту программу, анализирует ее команды и выполняет предписанные ею действия. Таким образом, можно утверждать, что запрос – это всегда SQL-скрипт, короткий фрагмент текста, написанный на языке программирования. А дизайнер и мастер – не более чем инструменты, позволяющие создать такой скрипт, не зная правила и синтаксис этого языка. Если мы хорошо овладеем SQL-языком, то, скорее всего, мы будем писать запросы «напрямую», не прибегая к помощи этих двух вспомогательных модулей.
Слайд 19Краткое резюме:
запросы – это механизм эффективного поиска информации в базе;
все запросы
Краткое резюме:
запросы – это механизм эффективного поиска информации в базе;
все запросы
дизайнер запросов и мастер запросов позволяют писать скрипты, даже не зная SQL-языка;
создание скрипта прямым вводом команд SQL-языка также возможно; результатом запуска любого скрипта на выполнение будет временная таблица, содержащая 0 и более строк данных;
запросы могут работать не только на физических таблицах, но и на таблицах, генерируемых другими запросами;
любая связь между таблицами будет подразумеваемой, пока она не будет выражена явно в скрипте.
Слайд 20Контрольный вопрос
1. Может ли запрос вернуть информацию сразу из колонок трех таблиц?
Контрольный вопрос
1. Может ли запрос вернуть информацию сразу из колонок трех таблиц?
Нет, запрос работает с колонками максимум одной таблицы.
Нет, запрос работает с колонками максимум двух таблиц.
Да, может.
Да, может, при условии, что общее количество колонок в запросе будет меньше или равно 10.
2. При создании запроса мы включили в него колонку коддиска. Означает ли это, что в результате запуска такого запроса на исполнение информация из этой колонки будет отображена на экране?
Да, информация всех колонок, включенных в запрос, безоговорочно визуализируется на экране.
Да, если КодДиска является первичным ключом; информация всех колонок первичного ключа безоговорочно визуализируется на экране.
Зависит от дизайна запроса; мы вправе как отобразить эту колонку вместе с ее значениями, так и скрыть ее.
Нет, если КодДиска является первичным ключом; все колонки первичного ключа безоговорочно пропускаются при визуализации результатов работы запроса на экране.
Слайд 21Контрольный вопрос
3. Укажите метасимвол, при использовании которого в дизайнере запросов будут выведены
Контрольный вопрос
3. Укажите метасимвол, при использовании которого в дизайнере запросов будут выведены
%
^
#
* +
@
!
4. Чем физически является любой запрос независимо от способа его создания?
Двоичным файлом на диске.
Короткой программой на языке SQL.
Короткой программой в двоичных кодах.
Шифрованным текстовым файлом.
Слайд 22Контрольный вопрос
5. Может ли быть выполнен запрос, извлекающий данные не из физической
Контрольный вопрос
5. Может ли быть выполнен запрос, извлекающий данные не из физической
Нет, не может.
Может, если этот другой (базовый) запрос сам извлекает данные из таблицы.
Может в любом случае.
Может, если этот другой (базовый) запрос извлекает не более 5000 строк данных.
6. Укажите ячейку дизайнера запросов, выпадающий список которой позволит включить сортировку по полю ДатаПриобретения. 4
Слайд 23Контрольный вопрос
7. Мы решили создать новый запрос для извлечения информации из таблицы
Контрольный вопрос
7. Мы решили создать новый запрос для извлечения информации из таблицы
Таблицы.
Запросы.
Закрыть.
Добавить.
Ближайшие задачи.
Кандидат.
МояКоллекцияCD.
Отдел.
Сотрудник.
8. Укажите ячейку дизайнера запросов, с помощью которой мы можем отключить визуализацию колонки ДатаПриобретения в запросе. 3
Слайд 24Контрольный вопрос
9. Укажите в интерфейсе седьмого шага Мастера запросов текстовое поле, с
Контрольный вопрос
9. Укажите в интерфейсе седьмого шага Мастера запросов текстовое поле, с
КодКниги
КодИздательства
НазваниеКниги
НазваниеИздательства
10. Укажите опции, благодаря которым сразу после окончания работы Мастера запросов будет запущен Дизайнер запросов, где мы сможем создать связь между двумя таблицами. (2, 3)
11. Укажите пункт меню в окне дизайнера запросов, с выбором которого начинается создание связи между двумя таблицами.
Файл.
Правка.
Вид.
Вставка.
Сервис.
Окно.
Слайд 25Контрольный вопрос
12. Какую строку мы должны выбрать, чтобы связать эти две таблицы?
Контрольный вопрос
12. Какую строку мы должны выбрать, чтобы связать эти две таблицы?
КодКниги.
КодИздательства.
НазваниеКниги.
ЦеныКниги.
13. Мы хотим запустить запрос на выполнение и проверить его работу. С этой целью мы щелкнули правой кнопкой мыши по значку данного запроса в области объектов. Укажите, какой пункт в появившемся контекстном меню реализует это намерение.
Копировать.
Удалить.
Переименовать.
Правка.
Редактировать в режиме SQL…
Открыть.
Создать представление.
Мастер форм…
Мастер отчетов…