Главная страница
Навигация по странице:

  • Требования к сдаче лабораторной работы

  • Лабораторная работа №3

  • Однострочные подзапросы

  • Многострочные подзапросы

  • Предложение HAVING с подзапросами

  • Лабораторная работа №4

  • Переменные подстановки с одним амперсандом

  • Пример SELECT NLease, column_name FROM lease WHERE column = condition; Определение переменных пользователя

  • Передача значений переменных в командный файл Параметр

  • Пример SELECT NLease, AdR, LDate FROM Lease WHERE NTn = 1 / Указания

  • Лабораторная работа №5

  • лабораторный практикум. Русакова М.С. Лабораторный практикум. Практикум по базам данных самара 2015 министерство образования и науки российской федерации


    Скачать 0.72 Mb.
    НазваниеПрактикум по базам данных самара 2015 министерство образования и науки российской федерации
    Анкорлабораторный практикум
    Дата23.09.2022
    Размер0.72 Mb.
    Формат файлаpdf
    Имя файлаРусакова М.С. Лабораторный практикум.pdf
    ТипПрактикум
    #691718
    страница3 из 10
    1   2   3   4   5   6   7   8   9   10
    Пример
    Вывод средней, самой высокой и самой низкой арендной платы.
    SELECT AVG (Rn) as “AVG”, MAX (Rn) as “MAX”, MIN (Rn) as “MIN”
    FROM Rent
    /
    Примечание. Функции AVG и SUM применяются к столбцам с числовыми данными, функции MAX и
    MIN применяются к данным любого типа.
    Функция COUNT имеет два варианта формата: COUNT(*) и COUNT(выражение). Функция
    COUNT(*) возвращает количество всех строк в таблице, включая повторяющиеся строки и строки с неопределенными значениями.
    Пример
    Вывод количества всех договоров.

    29
    SELECT COUNT (*) FROM Lease
    /
    В отличие от COUNT(*) функция COUNT(выражение) подсчитывает только строки с определенными значениями в столбце, описанном выражением.
    Предложение GROUP BY
    Предложение GROUP BY используется для разбиения строк таблицы на группы. Затем для получения сводной информации по каждой группе можно использовать групповые функции.
    Указания
     Если в предложение SELECT включена групповая функция, получить одновременно отдельные результаты можно только в случае, если в предложении GROUP BY задан отдельный столбец.
    Если список столбцов отсутствует, выдается сообщение об ошибке.
     Предложение WHERE позволяет исключить некоторые строки до начала разбиения на группы.
     В предложении GROUP BY должны быть заданы столбцы.
     В предложении GROUP BY нельзя использовать позиционные обозначения или псевдонимы столбцов.
     По умолчанию строки сортируются в порядке возрастания в соответствии со списком GROUP BY.
    Изменить порядок сортировки можно с помощью предложения ORDER BY.
     Сводные результаты по группам и подгруппам можно получить путем указания, более чем одного столбца в предложении GROUP BY.
    Пример
    Вывод суммарной годовой стоимости аренды объектов Ивановым.
    SELECT Tenant.Tn, (SUM (12* Rent.Rn)) AS ИТОГ
    FROM Realty, Lease, Tenant, Rent
    WHERE Lease.AdR = Realty.AdR
    AND Lease.NTn = Realty.NTn
    AND Realty.Type = Rent.Type
    AND Tenant.Tn LIKE ‘%Иванов%’
    GROUP BY Tenant.Tn
    /
    Предложение HAVING
    Предложение HAVING задает условие отбора групп для вывода. Следовательно, на группы накладывается дальнейшее ограничение, основанное на сводной информации.
    Если используется предложение HAVING, сервер Oracle выполняет следующие действия:
    1) группирует строки;
    2) применяет групповую функцию;
    3) производит вывод групп, удовлетворяющих условию предложения HAVING.

    30
    Предложение HAVING может предшествовать предложению GROUP BY, но более логично ставить предложение GROUP BY первым. Образование групп и вычисление групповых функций происходят до того, как к группам из списка SELECT применяется ограничение, заданное в предложении HAVING.
    Пример
    Определить, средняя стоимость каких арендуемых объектов превышает 5000 руб.
    SELECT Realty.AdR, Realty.Type
    FROM Realty, Rent,
    WHERE (Rent.Type=Realty.Type)
    GROUP BY Realty.AdR
    HAVING AVG(Rent.Rn)>5000
    /
    Задания
    Часть 1. Однострочные функции
     Выведите фамилии владельцев недвижимости с заглавной буквы, а типы недвижимости – через запятую и заглавными буквами.
     Установите сначала значение арендной платы за аренду гаража неопределенным, а потом сделайте ее равной 3000 руб. Подсказка: воспользуйтесь NVL.
     Определите дату окончания аренды для всех арендаторов, если дом сдается на год, квартира – на полгода, гараж – на квартал. Выведите дату в формате «27 of October, 2004». Упорядочьте по дате, начиная с самой ранней.
     Определите дату следующего платежа для каждого арендатора, если платежи производятся ежемесячно по вторникам. Выведите дату в формате «27/X/04». Сделайте сортировку по датам по возрастанию.
     Определите, какое время прошло от момента аренды. Выведите адрес недвижимости, фамилию арендатора, дату начала аренды в формате «27th Oct 004» и количество месяцев, прошедшее с момента начала аренды, а также количество кварталов, прошедшее с момента начала аренды
    (значение округлите – подумайте, чем здесь лучше воспользоваться – round или trunk?). Для столбцов создайте псевдонимы, данные упорядочьте по количеству кварталов по возрастанию.
     Придумайте самостоятельно (и реализуйте) еще 2 запроса, позволяющие продемонстрировать возможности однострочных функций.
    Часть 2. Групповые функции
     Определите количество договоров, заключенных до 01.01.2004 г. Результат выведите с логичной значимой подписью.
     Определите количество владельцев недвижимости, со дня заключения договора с которыми прошло более 2 лет. Результат выведите с логичной значимой подписью.
     Получите для каждого арендатора суммарную квартальную стоимость аренды, для каждого владельца – суммарную выручку за квартал. Сделайте это двумя запросами.
     Придумайте и реализуйте собственный запрос на групповые функции.

    31
    Требования к сдаче лабораторной работы
     Выполнить запросы с использованием однострочных функций. Каждый запрос должен быть сохранен в отдельный файл.
     Выполнить запросы на групповые функции. Каждый запрос должен быть сохранен в отдельный файл.
     Придумать и соответствующим образом оформить ваши собственные запросы. Естественно, они должны быть выполнены, сохранены в отдельные файлы и не должны совпадать с запросами ваших одногруппников.

    32
    Лабораторная работа №3
    Подзапросы
    Общие сведения
    Подзапрос – это команда SELECT, вложенная в предложение другой команды SQL. С помощью подзапросов можно создавать из простых команд гораздо более мощные. Это может быть удобно для выборки строк таблицы по условию, зависящему от данных в самой таблице.
    Подзапросы можно использовать в разных предложениях команд SQL:
     Предложение WHERE.
     Предложение HAVING.
     Предложение FROM команды SELECT или DELETE.
    Подзапросы очень полезны при написании команд SELECT для выборки значений по неизвестному условному значению. С помощью подзапроса можно находить неизвестные значения.
    Синтаксис:
    SELECT список_выбора
    FROM таблица
    WHERE выражение оператор
    (SELECT список_выбора
    FROM таблица)
    /
    Здесь: оператор
    оператор сравнения (например, >, = или IN).
    Примечание. Операторы сравнения делятся на два класса: однострочные (>, =, >=, <, <>, <=) и
    многострочные (IN, NOT IN).
    Подзапросы иногда называют вложенной командой SELECT, подкомандой SELECT или внутренней командой SELECT. Как правило, подзапрос выполняется первым, а его результат используется для полного определения условия во внешнем запросе.
    Указания
     Подзапрос должен быть заключен в скобки.
     Подзапрос должен находиться после оператора сравнения.
     В подзапросе нельзя использовать предложение ORDER BY. На каждую команду SELECT разрешается только одно предложение ORDER BY, и если оно используется, то должно быть последним в главной команде SELECT.
    Команда SELECT может рассматриваться как блок запроса. Этот пример состоит из двух блоков запроса: главный запрос и внутренний запрос.

    33
    Однострочные подзапросы
    Однострочный подзапрос возвращает из вложенной команды SELECT только одну строку. В подзапросах этого типа используется однострочный оператор сравнения или логический оператор: =, >,
    <, >= или <=.
    Пример
    Выборка номеров договоров, которые были заключены в тот же день, что и у владельца Иванова.
    SELECT NLease
    FROM Lease
    WHERE LDate = (SELECT Lease.LDate
    FROM Lease, Owner
    WHERE (Owner.Ow = 'Иванов') AND (Owner.NOn=Lease.NOn))
    /
    Первой выполняется команда SELECT вложенного блока запроса. Пусть результат запроса – 01-Feb-
    05. Далее обрабатывается главный блок запроса. Результат подзапроса используется при этом для вычисления условия поиска. Фактически для сервера Oracle главный запрос будет выглядеть следующим образом:
    SELECT NLease
    FROM Lease
    WHERE LDate = '01-Feb-05'
    /
    Можно выводить данные из основного запроса, используя групповую функцию в подзапросе для возврата одной строки. Подзапрос заключается в скобки и помещается после оператора сравнения.
    Пример
    Вывод адресов объектов с арендной платой ниже среднего.
    SELECT Realty.AdR
    FROM Realty, Rent
    WHERE (Realty.Type=Rent.Type)
    AND (Rent.Rn<(SELECT AVG(Rent.Rn)
    FROM Rent))
    /

    34
    Многострочные подзапросы
    Подзапросы, возвращающие более одной строки, называются многострочными. В них следует использовать не однострочный, а многострочный оператор – например, IN. Оператор IN ожидает одного или нескольких значений.
    Предложение HAVING с подзапросами
    Подзапросы можно использовать не только в предложении WHERE, но и в предложении HAVING.
    Сервер Огас1е выполняет подзапрос первым и возвращает результаты в предложение HAVING главного запроса.
    Задания
     Определить, для каких типов недвижимости минимальная арендная плата не превышает 10000 руб. Посчитать количество арендаторов, готовых платить за недвижимость данных типов.
    Посчитать количество владельцев недвижимости, готовых предоставлять эту недвижимость в аренду. Посчитать количество договоров, заключенных по недвижимости данных типов.
     Определить адреса недвижимости и номера договоров, заключенных с одним и тем же владельцем недвижимости. Определить адреса недвижимости и номера договоров, заключенных с одним и тем же арендатором недвижимости.
     Вывести тип и адрес недвижимости, для которых было заключено 2 и более договоров аренды.
     Подсчитать количество владельцев недвижимости, сумма выручки которых превысила среднюю арендную стоимость по всем заключенным договорам.
     Придумать и реализовать 2 собственных запроса, в которых необходимо использовать подзапрос
    (или подзапросы).

    35
    Лабораторная работа №4
    Определение переменных во время выполнения
    Для ограничения количества выходных строк можно создать командный файл с предложением
    WHERE. Для изменения условия при каждом выполнении командного файла используются так называемые переменные подстановки. Значения переменных подстановки могут заменять значения в предложении WHERE, текстовую строку и даже имя столбца таблицы.
    Отчеты, которые вы получали до сих пор, не были интерактивными. В готовом приложении пользователь запрашивал отчет, который создавался без каких-либо приглашений ввести данные. Объем данных в отчете был предопределен постоянным предложением WHERE. Но SQL*Plus позволяет создавать и интерактивные отчеты, когда пользователя приглашают ввести значения, ограничивающие объем выходных данных.
    Для создания отчета в командный файл или в отдельные команды SQL включаются переменные подстановки. Переменная выступает в роли контейнера, в котором временно хранятся значения.
    В SQL*Plus можно использовать переменную подстановки с одним амперсандом для временного хранения значений. SQL*Plus позволяет также определять переменные заранее с помощью команд
    ACCEPT и DEFINE. Команда ACCEPT считывает строку данных, введенную пользователем, и сохраняет ее в переменной. Команда DEFINE создает переменную и присваивает ей значение.
    Примеры ограничения интервалов данных
     Отчет за текущий квартал или период времени
     Отчет, содержащий данные только по пользователю, который его запросил
     Получение списка служащих только одного отдела.
    Другие интерактивные возможности
     Динамическое изменение верхних и нижних колонтитулов страниц
    Получение входных параметров из файла, а не от оператора
     Передача значений между командами SQL.
    Переменные подстановки с одним амперсандом
    При создании отчетов пользователь часто заинтересован в динамическом ограничении объема выходных данных. SQL*Plus обеспечивает такую гибкость через переменные пользователя. Задать переменные в своих командах SQL можно с помощью амперсанда (&). Присваивать значение каждой переменной при этом не требуется.
    Таблица 19. Переменная подстановки с одним амперсандом
    Пример
    Описание
    &переменная
    Переменная в команде SQL; если переменная не существует, SQL*Plus просит пользователя ввести значение. SQL*Plus не сохраняет переменную после ее использования

    36
    Пример
    SELECT AdR, LDate FROM lease
    WHERE NLease = &n_lease;
    Текстовые строки и даты в предложении WHERE должны быть заключены в апострофы. Это же правило распространяется и на переменные подстановки. Чтобы не вводить апострофы во время выполнения команды SQL, рекомендуется заключать в них переменную в самой команде SQL.
    Пример
    SELECT AdT, NTn FROM tenant
    WHERE Tn = ‘&tn_name’;
    Подстановка переменных может использоваться не только в предложении WHERE, но и для подстановки имен столбцов, выражений и текстовых строк.
    Пример
    SELECT NLease, &column_name FROM lease
    WHERE &column = &condition;
    Определение переменных пользователя
    Задать переменные можно до выполнения команды SELECT. Для определения и установки значений переменных SQL*Plus предлагает две команды – DEFINE и ACCEPT.
    Таблица 20. Команды определения переменных пользователя
    Команда
    Описание
    DEFINE переменная = значение
    Создание переменной типа CHAR и присвоение ей значения
    DEFINE переменная
    Вывод переменной, ее значения и типа данных
    DEFINE
    Вывод всех переменных пользователя, их значений и типа данных
    ACCEPT
    Чтение строки, введенной пользователем, и сохранение ее в переменной
    Сокращенный синтаксис:
    ACCEPT переменная [тип_данных] [FORMAT] [PROMPT текст] [HIDE]
    Здесь:
    переменная имя переменной, хранящей значение.
    Если переменная не существует, SQL*
    Plus ее создаст;

    37
    тип_данных NUMBER, CHAR или DATE. Максимальная длина для типа CHAR – 240 байтов. DATE сверяется с моделью формата;
    FORMAT модель формата, например, A10 или 9.999;
    PROMPT текст текст, который выдается прежде, чем пользователь может ввести значение;
    HIDE предотвращает отображение данных, введенных пользователем.
    Примечание: Если для определения переменной используется команда ACCEPT, амперсанд перед
    параметром подстановки не ставится.
    Указания
     Команды ACCEPT и DEFINE создают переменную, если она не существует, а существующую переменную переопределяют;
     Пользуясь командой DEFINE, не забывайте заключать в апострофы строки, содержащие пробелы;
     Команда ACCEPT используется в следующих целях: o
    Для создания приглашения к вводу данных с учетом пожеланий пользователя. В противном случае выдается стандартное приглашение, используемое по умолчанию:
    «Enter value for variable»; o
    Для явного определения переменных типа NUMBER и DATE; o
    Для ввода данных без их отображения в целях секретности.
    Пример
    ACCEPT Type_Name PROMPT ‘Задайте тип недвижимости:’
    SELECT d.Rn, d1.AdR, d2.LDate
    FROM rent d, realty d1, lease d2
    WHERE d.type = d1.type
    AND d1.AdR = d2.AdR
    AND d.Type = ‘&Type_Name’
    /
    Команда UNDEFINE
    Переменная сохраняет свое значение до:
     очистки командой UNDEFINE;
     выхода из SQL*Plus.
    Отменив определение переменной, можно проверить произведенное изменение с помощью команды
    DEFINE. При выходе из SQL*Plus переменные, заданные во время сеанса, теряются. Для сохранения переменных от сеанса к сеансу измените свой файл login.sql так, чтобы эти переменные инициализировались сразу после загрузки системы.

    38
    Передача значений переменных в командный файл
    Параметр – это значение, которое можно передать в отчет прямо из командной строки. Для создания получения отчета с учетом параметров выполните следующие шаги.
     Создайте командный файл с командой SELECT.
     В команде SELECT для каждой переменной используйте ссылку типа «&номер».
     В командной строке задайте значение переменной прямо за именем командного файла. Значение переменной должно отделяться от имени файла пробелом.
    Пример
    SELECT NLease, AdR, LDate
    FROM Lease
    WHERE NTn = &1
    /
    Указания
     Присвоить параметрам значимые имена можно с помощью команды DEFINE.
     Используйте префикс для различных названий столбцов, обычных переменных и переменных с параметрами.
     Последовательность значений параметров в командной строке очень важна. Первое значение соответствует переменной &1, второе – переменной &2 и т. д.
     Запрос может содержать до девяти параметров с именами от &1 до &9.
     SQL*Plus сохраняет параметры и их значения до следующего переопределения или выхода из
    SQL*Plus.
    Задания
     Создайте командный файл для выборки информации о недвижимости, дата начала аренды которой заключена в пределах определенного диапазона. Выходные данные должны включать фамилии владельцев и арендаторов, адрес недвижимости, ее тип и арендную плату. Даты, определяющие временной диапазон, запрашиваются у пользователя. Используйте формат
    MM/DD/YY.
     Создайте командный файл для получения списка имен, адресов проживания и номеров арендаторов определенного типа недвижимости. Тип недвижимости задается с клавиатуры. Поиск должен осуществляться независимо от регистра символов.
     То же, что и в задании 2, но только для владельцев недвижимости.
     Создайте отчет, содержащий фамилии владельцев недвижимости, фамилии всех арендаторов, заключивших договор с данным владельцем, выручку владельцев с каждого своего арендатора.
    Арендная плата начисляется ежемесячно с момента заключения договора.
     Придумайте и реализуйте еще 2 запроса с использованием переменных подстановки.
    Требования к сдаче лабораторной работы
     Каждое задание должно быть сохранено в отдельный командный файл.
     Ваши 2 запроса должны быть оригинальными (т. е. не совпадать с запросами из книги, заданиями и запросами ваших одногруппников).

    39
    Лабораторная работа №5
    Представления
    Представление – это логическая таблица, созданная на основе реальной таблицы или другого представления. Представление не содержит собственных данных, а скорее является «окном», через которое можно просматривать или изменять данные из таблиц. Представление хранится в словаре данных как команда SELECT.
    Преимущества представлений:
     Ограничивается доступ к базе данных вследствие того, что представления могут отображать определенное подмножество базы данных;
     С помощью простых запросов пользователь может такие же результаты, как с помощью сложных.
    Например, использование представлений позволяет осуществить выборку данных из нескольких таблиц без каких-либо знаний об операторе соединения таблиц (join);
     Обеспечивается независимость данных для пользователей, посылающих случайные незапрограммированные запросы, и прикладных программ. Одно и то же представление может использоваться для выборки данных из нескольких таблиц;
     Использование представлений позволяет обеспечить доступ к данным по различным критериям для различных групп пользователей.
    1   2   3   4   5   6   7   8   9   10


    написать администратору сайта