Скачиваний:
69
Добавлен:
15.03.2015
Размер:
427.59 Кб
Скачать

Санкт-Петербургский Государственный Университет Телекоммуникаций имени проф. М.А. Бонч-Бруевича

Факультет Информационных систем и технологий Кафедра Информационных и управляющих систем

Отчет

По лабораторной работе №3

По дисциплине: Управление данными

Выполнила студентка

Группы ИСТ-12

Лазарева М.Н

Преподаватель:

Сабинин О.Ю.

Санкт-Петербург

2014

Цель работы: Используя Data Modeler получить реляционную модель, изучить структуру и информацию в таблицах.

Задание:

  • Выполнить подключение к СУБД Oracle.

  • Используя Data Modeler получить реляционную модель, изучить структуру и информацию в таблицах.

  • Написать и выполнить запросы. Показать результаты запросов.

Ход работы:

  1. Используя Data Modeler строим реляционную модель. В нашем случае она будет выглядеть следующем образом. На рисунке 1 представлена реляционная модель.

Рисунок 1. Реляционная модель.

  1. Выполняем запросы которые позволяют выполнять следующее:

  1. Запрос, позволяющий вывести всю информацию из таблицы Employee. Показать результат запроса.

SELECT FROM Employees;

  1. Запрос, позволяющий вывести фамилии сотрудников и зарплаты сотрудников, получающих зарплату, большую 10000. Фамилии сотрудников вывести заглавными буквами. Показать результат запросов.

SELECT Last_name, SALARY

FROM Employees

where salary >10000;

  1. Запрос, позволяющий вывести фамилии сотрудников с фамилиями, начинающимися на букву K и имеющими букву n на третьем месте. Показать результат запроса.

SELECT LAST_NAME FROME Employees

WHERE LAST_NAME LIKE ‘K_n%’;

  1. Запрос, позволяющий вывести фамилии сотрудников и первые буквы имен (в одном столбце), а также зарплату с добавленным знаком $. Имена столбцов вывести по-русски. Отсортировать в порядке убывания зарплат. Показать результат запроса.

SELECT LAST_NAME||’ ‘||SUBSTAR(LAST_NAME,1,1) AS “Фамилия_Имя”,SALARY||’ $’ AS “Зарплата”

FROME Employees

  1. Выполнить запрос, позволяющий определить сумму зарплат, среднюю зарплату и количество сотрудников. Показать результат запроса.

SELECT SUM(SALARY),AVG(SALARY),(Employee_ID)

FROM Employees

  1. Написать запрос, позволяющий вывести текущую дату. Показать результат запроса.

SELECT SYSDATE

FROM DUAL

  1. Написать запрос, позволяющий вывести дату и день недели, которые будут через 1000 дней. Информацию вывести в виде: 22-Апрель-2017, Пятница.

Показать результат выполнения запроса

SELECT to_char (SYSDATE+1000,’DD-Mon-YYYY-DY’,’NLS_Language=Russian’)

FROM DUAL;

  1. Написать запрос позволяющий количество прожитых Вами часов. Показать результат запроса.

SELECT ((SYSDATE-to_date(’10-11-1991’,’DD-MM-YYYY’))*24) AS “Прожитых часов”

FROM DUAL;

  1. Выполнить запрос который позволяет определить день недели, который будет через 1000 дней. Показать выполнения запроса.

SELECT to_char(sysdate+1000,’DAY’)AS “день+1000”

FROM DUAL;

  1. Выполнить запрос, позволяющий определить полное количество прожитых Вами лет, количество полных месяцев (которые не вошли в полные года) и количество дней. Показать результат выполнения запроса.

SELECT EXTRACT (YEAR FROM (b-a) YEAR TO MONTH)

||’years’

||EXTRACT (MONTH FROM (b-a) YEAR TO MONTH)

||’month’

||EXTRACT (DAY FROM (b-a) DAY TO SECOND)

||’days’

“INTERVAL”

FROM(

SELECT to_date(’10-11-1991’,dd-mm-yyyy’)a, to_date(’15-03-2014’,

‘dd-mm-yyyy’)b FROM DUAL);

  1. Выполнить запрос, позволяющий выделить второе слово в адресе отдела (Таблица Locacions). Показать результат выполнения запроса.

SELECT substr (street_address, 1+instr (street_address,' '),(instr (street_address||' ',' ',1,2)-instr (street_address,' '))) FROM locations

  1. Выполнить запрос, позволяющий определить сумму цифр в произвольном символьном выражении. Показать результат запроса.

SELECT LENGTH(‘Marina’)

FROM DUAL;

  1. Выполнить запрос, позволяющий определить список сотрудников, принятых на работу в 2004-м году, даты приема на работу и зарплаты. Имена столбцов должны быть - Фамилия, Дата приема на работу, Зарплата.

Показать результат выполнения запроса.

SELECT FIRST_NAME, HIRE_DATE, SALARY

FROM Employees

WHERE HIRE_DATE BETWEEN’01-янв-2004’ AND’31-дек-2004’;

  1. Выполнить запрос, позволяющий определить список сотрудников, имеющих три буквы a в фамилии (независимо от регистра) и не имеющих комиссионных процентов.

select employee_id, last_name

from employees

where lower(last_name) like '%a%a%a' and commission_pct is null;

  1. Написать запрос, позволяющий в произвольной символьной строке оставить между словами только по одному пробелу. Показать результат выполнения запроса.

select replace(replace(replace(str, ' ', ' _'), '_ '),'_') as "Строка"

from(select 'Test line there' str from dual);

  1. Написать команду, которая позволит выводить фамилию сотрудника через запятую столько раз, сколько букв в его фамилии. Показать результат выполнения запроса

select lpad(last_name||' ', length(last_name||'..')*length(last_name)-1, last_name||',')as last_name

from EMPLOYEES;

Вывод: В результате выполнения данной работы мною были получены навыки написания и выполнения запросов на языке SQL. Так же были получены навыки построения реляционной модели.