Создание пользователя и выделение ему привилегий, создание и заполнение таблиц.
Voditeli
Voditeli
Поз. вод | ФИО | № вод.прав | Тел-н | Год нач. сотр-ва | АТП | Прописка | Год рождения | Паспорт |
Иванов | Постоянная | |||||||
Гачик | Временная | |||||||
Степанов | Постоянная | |||||||
Кравец | Временная | |||||||
Шмелёв | нет |
Таблица "Voditeli" находится в первой нормальной форме (в ней нет сложных неразбиваемых атрибутов), во второй нормальной форме (нет функциональных зависимостей), в третьей нормальной форме (нет транзитивной зависимости).
Bus
Bus
Гос № | Марка | ТО | АТП | Штраф (№ протокола) |
р010но | Golden Drakon | 11.09.2013 | ||
н113ов | ZIL | 8.10.2011 | ||
м158хр | Golden Drakon | 3.09.2012 | ||
р256рт | Hern | 3.12.2013 | ||
о782он | ZIL | 31.09.2010 |
Таблица "Bus" находится в первой нормальной форме (в ней нет сложных неразбиваемых атрибутов), во второй нормальной форме (нет функциональных зависимостей), в третьей нормальной форме (нет транзитивной зависимости).
Marshrut
Marshrut
№ марш | Нач. точка | Конеч. точка | Время в пути (мин) | Кол-во остановок | Гос № авт |
Дербышки | Ленина | О782он | |||
Халева | Габишева | Р256рт | |||
Гаврилова | Гаврилова | М158хр | |||
Максимова | Тинчурина | Н113ов | |||
РКБ | Кольцо | Р010но |
Таблица "Marshrut" находится в первой нормальной форме (в ней нет сложных неразбиваемых атрибутов), во второй нормальной форме (нет функциональных зависимостей), в третьей нормальной форме (нет транзитивной зависимости).
Создание пользователя и выделение ему привилегий, создание и заполнение таблиц.
Создание пользователя и выделение ему привилегий:
CREATE USER Administrator
IDENTIFIED BY password21;
GRANT all privilege
TO Administrator;
Создание таблиц с ограничениями:
CREATE TABLE Voditeli
(Поз.вод NUMBER(6) PRIMARY KEY,
ФИО VARCHAR2(50) NOT NULL,
№ вод.прав NUMBER (10) NOT NULL,
Телефон VARCHAR2(10) UNIQUE,
Год начала сотрудничества VARCHAR2(6) NOT NULL,
АТП VARCHAR2(3) NOT NULL,
Прописка VARCHAR2(20) NOT NULL,
Год рождения NUMBER(4) UNIQUE,
Паспорт NUMBER(50) UNIQUE);
CREATE TABLE Bus
(Гос. № VARCHAR2 (6) PRIMARY KEY,
Марка VARCHAR2(30) NOT NULL,
ТО VARCHAR2(50) NOT NULL,
АТП VARCHAR2(3) UNIQUE,
Штраф NUMBER(50) NOT NULL);
CREATE TABLE Marshrut
(№ марш. NUMBER(3) PRIMARY KEY,
Нач. точка VARCHAR2(30) NOT NULL,
Конеч. точка VARCHAR2(50) NOT NULL,
Время в пути(м) VARCHAR2(10) UNIQUE,
Кол-во останов. VARCHAR2(10) NOT NULL,
Гос.№ авт. VARCHAR2(500) NOT NULL);
Заполнение таблиц:
INSERT INTO Voditeli (Поз.вод, ФИО, № вод. прав, Телефон, Год начала сотрудничества, АТП, Прописка, Год рождения, Паспорт)
VALUES (100, ‘Иванов’, ‘123456’, ‘2318217’, ‘2007’, ‘1’, ‘постоянная’, ‘1960’, ‘64261357’);
INSERT INTO Voditeli
VALUES (200, ‘Гачик’, ‘654321’, ‘8281917’, ‘2001’, ‘2’, ‘временная’, ‘1976’, ‘97123612’);
INSERT INTO Pisateli
VALUES (300, ‘Степанов’, ‘645321’, ‘9215368’, ‘2008’, ‘3’, ‘постоянная’, ‘1988’, ‘26243311’);
INSERT INTO Voditeli
VALUES (400, ‘Кравец’, ‘601543’, ‘5331279’, ‘2006’, ‘4’, ‘временная’, ‘1969’, ‘42565621);
INSERT INTO Voditeli
VALUES (500, ‘Шмелёв’, ‘302532’, ‘6282366’, ‘2012’, ‘5’, ‘нет’, ‘1973’, ‘43254363’);
INSERT INTO Bus (Гос.№, Марка, ТО, АТП, Штраф(номер протокола))
VALUES (р010но, ‘Golden Drakon’, ’11.09.2013’, ‘3’, ‘12’);
INSERT INTO Bus
VALUES (н113ов, ‘ZIL’, ‘8.10.2011’, ‘2’, ‘13’);
INSERT INTO Bus
VALUES (м158хр, ‘Golden Drakon’, ‘3.09.2012’, ‘4’, ‘87’);
INSERT INTO Bus
VALUES (р256рт, ‘Hern’, ‘3.12.2013’, ‘1’, ‘982’);
INSERT INTO Bus
VALUES (о782он, ‘ZIL’, ’31.09.2010’, ‘9’, ‘324’);
INSERT INTO Marshrut (№ марш, Нач. точка, Конеч. точка, Время в пути(мин), Кол-во остановок, Гос.№ авт)
VALUES (86, ‘Дербышки’, ‘ Ленина’, ‘120’, ‘10’, ‘о782он’);
INSERT INTO Marshrut
VALUES (53, ‘Халева’, ‘Габишева’, ‘180’, ‘28’, ‘р256рт’);
INSERT INTO Marshrut
VALUES (33, ‘Гаврилова’, ‘Гаврилова’, ‘120’, ‘19’, ‘м158хр’);
INSERT INTO Marshrut
VALUES (32, ‘Максимова’, ‘Тинчурина’, ‘90’, ‘17’, ‘н113ов’);
INSERT INTO Marshrut
VALUES (8, ‘РКБ’, ‘Кольцо’, ‘60’, ‘20’, ‘р010но’);
Лабораторная работа №2
1. Выведите на дисплей фамилию, зарплату, и комиссионные для всех работников, которые зарабатывают комиссионные. Отсортировать данные в порядке зарплаты и комиссионных.
SELECT First_name, salary, commission_pct
FROM employees
Where commission_pct>0
ORDER BY salary, commission asc;
2. Для каждого работника, вывести идентификационный номер, фамилию, зарплату, заработную плату и зарплату с учетом надбавки на 15%.
SELECT employee_id, first_name, salary, salary+salary*0,15
FROM employees;
3. Написать запрос для отображения работника с указанием фамилии, департамента наименование, местонахождение ID, и город для всех работников, которые зарабатывают комиссионные.
Select employees.first_name, departments.department_name, departments.location_id, locations.city
From employees, departments, locations
Where employees.department_id=departments.department_id, departments.location_id=locations.location_id;
4. Написать запрос для отображения фамилии и даты (начала работы) для всех сотрудников, работающих в том же департаменте, где работает сотрудник Zlotkey.
SELECT firs_name, hire_date
FROM employees
WHERE departments_id =
(select departments_id
From employees
Where firs_name=Zlotkey);
5. Написать запрос, который отображает номера и фамилии всех работников. При этом они работают в департаменте с любым сотрудником, чья фамилия содержит букву u.
Select employee_id, first_name
From employees
Where departments_id=
(select departments_id
From employees
Where firs_name in (‘*u*’));
6. Написать запрос для отображения видов работ и количество людей связанных с этой работой.
Select departments.department_name, count( employee_id)
From employees, departments
Where employees.department_id=departments.department_id
Group by department_id;
7. Написать запрос для отображения номера департамента, количества работников, средней зарплаты для всех работников этого департамента.
Select E1.department_id, count(E1.employee_id), AVG(E1.salary)
From employees E1, employees E2
Where E1 department_id IN
(Select E2.department_id,
From E2
Where E2.department_id = E1.department_id);
8.1 Создание представлений из одной таблицы.
Create or replace view стаж
As select фамилия, год начала сотрудничества
from voditeli
Where год начала сотрудничества<2013;
8.2 Создание представлений из двух таблиц.
Create or replace view marshrut33
As select marshut.№марш=33, bus.№автобуса
From marhrut, bus
Where marshrut.гос.№ авт.=bus.гос.№;
8.3 Создание индекса.
CREATE INDEX bus_idx
ON bus(штраф);