Управление данными УД / Управление данными_ИСТ-11-12-15 / ИСТ-12 / 3-Основы языка SQL / Лазарева3
.docx
Санкт-Петербургский Государственный Университет Телекоммуникаций имени проф. М.А. Бонч-Бруевича
Факультет Информационных систем и технологий Кафедра Информационных и управляющих систем
Отчет
По лабораторной работе №3
По дисциплине: Управление данными
Выполнила студентка
Группы ИСТ-12
Лазарева М.Н
Преподаватель:
Сабинин О.Ю.
Санкт-Петербург
2014
Цель работы: Используя Data Modeler получить реляционную модель, изучить структуру и информацию в таблицах.
Задание:
-
Выполнить подключение к СУБД Oracle.
-
Используя Data Modeler получить реляционную модель, изучить структуру и информацию в таблицах.
-
Написать и выполнить запросы. Показать результаты запросов.
Ход работы:
-
Используя Data Modeler строим реляционную модель. В нашем случае она будет выглядеть следующем образом. На рисунке 1 представлена реляционная модель.

Рисунок 1. Реляционная модель.
-
Выполняем запросы которые позволяют выполнять следующее:
-
Запрос, позволяющий вывести всю информацию из таблицы Employee. Показать результат запроса.
SELECT FROM Employees;

-
Запрос, позволяющий вывести фамилии сотрудников и зарплаты сотрудников, получающих зарплату, большую 10000. Фамилии сотрудников вывести заглавными буквами. Показать результат запросов.
SELECT Last_name, SALARY
FROM Employees
where salary >10000;

-
Запрос, позволяющий вывести фамилии сотрудников с фамилиями, начинающимися на букву K и имеющими букву n на третьем месте. Показать результат запроса.
SELECT LAST_NAME FROME Employees
WHERE LAST_NAME LIKE ‘K_n%’;

-
Запрос, позволяющий вывести фамилии сотрудников и первые буквы имен (в одном столбце), а также зарплату с добавленным знаком $. Имена столбцов вывести по-русски. Отсортировать в порядке убывания зарплат. Показать результат запроса.
SELECT LAST_NAME||’ ‘||SUBSTAR(LAST_NAME,1,1) AS “Фамилия_Имя”,SALARY||’ $’ AS “Зарплата”
FROME Employees

-
Выполнить запрос, позволяющий определить сумму зарплат, среднюю зарплату и количество сотрудников. Показать результат запроса.
SELECT SUM(SALARY),AVG(SALARY),(Employee_ID)
FROM Employees

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

-
Написать запрос, позволяющий вывести дату и день недели, которые будут через 1000 дней. Информацию вывести в виде: 22-Апрель-2017, Пятница.
Показать результат выполнения запроса
SELECT to_char (SYSDATE+1000,’DD-Mon-YYYY-DY’,’NLS_Language=Russian’)
FROM DUAL;

-
Написать запрос позволяющий количество прожитых Вами часов. Показать результат запроса.
SELECT ((SYSDATE-to_date(’10-11-1991’,’DD-MM-YYYY’))*24) AS “Прожитых часов”
FROM DUAL;

-
Выполнить запрос который позволяет определить день недели, который будет через 1000 дней. Показать выполнения запроса.
SELECT to_char(sysdate+1000,’DAY’)AS “день+1000”
FROM DUAL;

-
Выполнить запрос, позволяющий определить полное количество прожитых Вами лет, количество полных месяцев (которые не вошли в полные года) и количество дней. Показать результат выполнения запроса.
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);

-
Выполнить запрос, позволяющий выделить второе слово в адресе отдела (Таблица Locacions). Показать результат выполнения запроса.
SELECT substr (street_address, 1+instr (street_address,' '),(instr (street_address||' ',' ',1,2)-instr (street_address,' '))) FROM locations

-
Выполнить запрос, позволяющий определить сумму цифр в произвольном символьном выражении. Показать результат запроса.
SELECT LENGTH(‘Marina’)
FROM DUAL;
![]()
-
Выполнить запрос, позволяющий определить список сотрудников, принятых на работу в 2004-м году, даты приема на работу и зарплаты. Имена столбцов должны быть - Фамилия, Дата приема на работу, Зарплата.
Показать результат выполнения запроса.
SELECT FIRST_NAME, HIRE_DATE, SALARY
FROM Employees
WHERE HIRE_DATE BETWEEN’01-янв-2004’ AND’31-дек-2004’;

-
Выполнить запрос, позволяющий определить список сотрудников, имеющих три буквы a в фамилии (независимо от регистра) и не имеющих комиссионных процентов.
select employee_id, last_name
from employees
where lower(last_name) like '%a%a%a' and commission_pct is null;
![]()
-
Написать запрос, позволяющий в произвольной символьной строке оставить между словами только по одному пробелу. Показать результат выполнения запроса.
select replace(replace(replace(str, ' ', ' _'), '_ '),'_') as "Строка"
from(select 'Test line there' str from dual);

-
Написать команду, которая позволит выводить фамилию сотрудника через запятую столько раз, сколько букв в его фамилии. Показать результат выполнения запроса
select lpad(last_name||' ', length(last_name||'..')*length(last_name)-1, last_name||',')as last_name
from EMPLOYEES;

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