Лабораторные работы по разделу 4 Для выполнения лабораторных работ по разделу используется следующая ER-диаграмма базы данных: Лабораторная работа №3. Использование базовой конструкции оператора SELECT, работа с несколькими таблицами Целью лабораторной работы является изучение оператора выбора данных SELECT на основе данных из таблиц схемы HR (трудовые ресурсы). Все языковые конструкции, которые будут сформированы в этой и последующих лабораторных работах, необходимо сохранять в исполняемом файле с расширением *.sql. Для того чтобы сформировать исполняемый файл, необходимо в интегрированной среде разработки SQL Developer открыть окно ввода SQL запросов – SQL Worksheet и добавить код SQL оператора. В меню «Файл» выбрать пункт «Сохранить как», предварительно проверив, что необходимые лист с SQL оператором активен, или щелкнуть правой кнопкой мыши на рабочем листе SQL и выбрать пункт «Сохранить файл». Для исполняемого файла рекомендуется задавать имя в следующем формате: lab<Номер_Лаб_Работы>_<Номер_варианта>.sql Для того чтобы выполнить запрос из исполняемого файла, необходимо его открыть и нажать на кнопку «Execute Statement» (выполнить оператор) на панели инструментов или кнопку [F9] клавиатуры. Для выполнения DML или DCL операторов требуется нажать на кнопку «Run Script» панели инструментов, либо кнопку [F5] клавиатуры. Чтобы выполнить запрос, нажмите на кнопку «Выполнить заявление» на рабочем листе SQL. Кроме того, вы можете нажать [F9]. Для DML и DDL операторов, используйте значок «Run Script» или нажмите [F5]. После того как выполнится запрос, убедитесь, что вы не вводите ваш следующий запрос в том же листе. Для каждого запроса рекомендуется открывать новый лист. Варианты индивидуальных заданий: 1. 2. 3. 4. 5. 6. 7. 8. Сформируйте запрос, отображающий для каждого сотрудника, фамилию (LAST_NAME), код работы (JOB_ID), дату найма (HIRE_DATE) и номера сотрудника (EMPLOYEE_ID). Номер сотрудника должен быть на первой позиции в результирующей таблице. Добавьте псевдоним STARTDATE для столбца HIRE_DATE. Сохраните результат. Создайте запрос для отображения всех уникальных кодов работ из таблицы EMPLOYEES. Сохраните результат. Выведите на экран структуру таблицы EMPLOYEES. Выведите на экран содержимое таблицы EMPLOYEES, назвав столбцы результирующей таблицы «Emp #», «Employee», «Job», «Hire Date». Запустите запрос. Сохраните результат. Сформируйте запрос, содержащий информацию, объединенную в один столбец, о фамилии и коде работы сотрудника. Фамилия и код работы необходимо разделить запятой и пробелом. Для столбца задайте имя «Employee and Title». Запустите запрос. Сохраните результат. Все данные из столбцов таблицы EMPLOYEES объедините в один результирующий столбец. Разделите значения каждого из столбцов запятой. Для столбца задайте имя «THE_OUTPUT». Сохраните результат. Выведите список сотрудников, получающих заработную плату большую чем у непосредственного руководителя. Сохраните результат. Выведите список сотрудников, получающих максимальную заработную плату в своем отделе. Сохраните результат. Выведите список ID отделов, количество сотрудников в которых не превышает 3 человек. 9. Выведите список сотрудников, не имеющих назначенного руководителя, работающего в том-же отделе. Сохраните результат. 10. Найти список ID отделов с максимальной суммарной зарплатой сотрудников. Сохраните результат. 11. Выведите информацию о всех сотрудниках, зарплата которых больше 2500, но меньше 3500. Сохраните результат. 12. Отсортируйте записи из таблицы EMPLOYEES сначала по возрастанию идентификатора отдела, а затем в рамках каждого отдела по убыванию заработной платы. Лабораторная работа №4. Реализация работы с DML операторами. Добавление, изменение, удаление информации из базы данных Целью лабораторной работы является закрепление теоретического материала по конструкциям языка DМL, добавлению и удалению записей в таблице, изменению записей. Для использования оператора DDL при добавлении строк в таблицу необходимо выполнить следующие действия: • Просмотрите содержимое таблицы REGIONS схемы «HR». Данное упражнение предполагает, что значение столбца REGION_ID не превышает 100. Если такие записи существуют, то необходимо их удалить. • Добавьте новую строку в таблицу REGIONS, которая будет содержать страну «Great Britain» с идентификатором 101. Не используйте перечисление столбцов для добавления этой информации. • Напишите оператор INSERT, позволяющий добавлять одну строку в таблицу REGIONS. Значения для полей таблицы должны быть заданы в виде параметров. Сохраните инструкцию в файле lab4.sql. • Выполните файл lab4.sql, добавив в таблицу запись «Australasia» с идентификатором 102. • Просмотрите содержимое таблицы REGIONS, две записи должны быть добавлены. • Добавьте в таблицу EMPLOYEES первые две записи из таблицы, представленной ниже. Задайте явно наименования столбцов, в которые будет добавляться информация. ID LAST_NAME FIRST_NAME EMAIL SALARY 1001 Patel Ralph [email protected] 895 1002 Dancs Betty [email protected] 860 1003 Biri Ben 1100 1004 Newman Chad 750 1005 Ropeburn Audrey 1550 • • • • • • • • Зафиксируйте изменения. Добавьте запись в таблицу REGIONS. В поле REGION_NAME введите значение «Oceania», а в поле REGION_ID необходимо добавить значение, следующее за максимальным значением идентификатора региона. Максимальное значение идентификатора региона, увеличенное на 1, формируется в результате работы подзапроса. Проверьте, что запись появилась в таблице REGIONS с идентификатором 103. Добавьте в таблицу EMPLOYEES сотрудников с идентификационными номерами 1003, 1004 из таблицы. Так как для этих сотрудников не сформирован EMAIL, то его необходимо сформировать в подзапросе. EMAIL сотрудника формируется путем конкатенации первой буквы имени с 7 буквами фамилии и строки ‘@hr.com’. Проверьте, что запись появилась в таблице EMPLOYEES. Зафиксируйте изменения. Обновите поле REGION_NAME таблицы REGIONS значением «Iberia» для строк с идентификатором региона 102 и 103. Используйте знак неравенства при формировании условия отбора строк на обновление. Зафиксируйте изменения. Варианты индивидуальных заданий: 1. 2. В таблице EMPLOYEES установите для всех сотрудников, чья заработная плата меньше 900, заработную плату в размере 1000. В таблице REGIONS для всех записей с идентификатором региона >100 установите новое значение идентификатора региона. Необходимо реализовать подзапрос для расчета нового значения поля REGION_ID. Для расчета REGION_ID используется формула: REGION_ID = REGION_ID +MAX(REGION_ID); 3. 4. 5. Удалите строки из таблицы REGIONS для которых идентификатор региона равен идентификатору, формирующемуся в результате работы подзапроса. Результатом работы подзапроса является идентификатор региона, для которого поле REGION_NAME = «Iberia». В таблице EMPLOYEES удалите сотрудника с именем Betty. Сохраните результат. Удалите из таблицы REGIONS одну строку с идентификатором региона 104. 6. Обновите поле REGION_NAME таблицы REGIONS значением «Scandinavia» для строки с идентификатором региона 101. 7. Добавьте в таблицу DEPARTMENTS строку, содержащую значения department_id = 30 и department_name= Purchasing. 8. Добавьте в таблицу EMPLOYEES запись о сотруднике с именем Den Raphealy и установите дату приема на работу = «FEB 3, 2014». 9. Установите для сотрудника с идентификатором 113 из таблицы EMPLOYEES зарплату, как у сотрудника с идентификатором 205. 10. Установите для сотрудника с идентификатором 113 из таблицы EMPLOYEES идентификатор работ, как у сотрудника с идентификатором 205. 11. Удалите из таблицы EMPLOYEES строки для которых department_id выбирается из подзапроса. Подзапрос формирует department_id на основании записей таблицы DEPARTMENTS для которых department_name содержит символьную последовательность «Public». 12. Удалите из таблицы EMPLOYEES строки для которых department_id выбирается из подзапроса. Подзапрос формирует department_id на основании записей таблицы DEPARTMENTS для которых department_name = ‘Finance'.