Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1 отчёт 1 часть.docx
Скачиваний:
9
Добавлен:
21.09.2019
Размер:
57.8 Кб
Скачать

2. Реализация серверной части.

2.1 Создание таблиц.

Запросы SQL для создания таблиц выглядят следующим образом:

CREATE TABLE kalFiellm

(nazvanie VARCHAR2(15) NOT NULL CONSTRAINT kalpk_nazvanie PRIMARY KEY,

janr VARCHAR2(15) NOT NULL,

god_vypuska NUMBER(4) NOT NULL CHECK(god_vypuska>1900 and god_vypuska<2020),

proizvoditel VARCHAR2(20),

strana VARCHAR2(15),

prodolzhitelnost number(4) CHECK (prodolzhitelnost>0),

rezhisser VARCHAR2(20) CONSTRAINT kalfk_rezhisser REFERENCES kalrezhischer(Fio));

CREATE TABLE kalFiellm - этот запрос создаёт таблицу ФИЛЬМ.

Далее в скобках указывается, из каких полей будет состоять данная таблица и тип данных каждого из полей:

Поле nazvanie является первичным ключом и имеет тип VARCHAR2(15), т.е. строка длиной 15 символов;

Поле god_vypuska имеет тип NUMBER(4) т.е. число, состоящее из 4 цифр, так как фильм всегда имеет год выпуска, то это поле не может быть пустым.

Поле janr имеет тип VARCHAR2(15), т.е. строку из 15 символов.Т.к. фильм всегда имеет жанр, то это поле является обязательным.

Поле rezhisser является внешним ключом, т.е. ссылка на соответствующее поле Fio таблицы " kalrezhischer ", и имеет тип данных VARCHAR2(20) т.е. строка из 20 символов;

Поле proizvoditel имеет тип данных VARCHAR2(20), т.е. строка длиной 20 символов. Так как у фильма обязательно есть производитель, то это поле является обязательным .

Поле strana имеет тип данных VARCHAR2(15),т.е. строку состоящую из 15 символов.

Поле prodolzhitelnost имеет тип данных NUMBER(4),продолжительность не может быть отрицательным поэтому используем оператор CHECK(условие) т.е. число, состоящее из 4 цифр. Так как фильм имеют продолжительность в любом случае, даже если это короткометражная картина , то это поле является обязательным;

Остальные поля таблиц описываются аналогично.

CREATE TABLE kalll_acKcterfilma

(FIO VARCHAR2(15),

nazvaniefilma VARCHAR2(15),

rol_v_filme VARCHAR2(15) NOT NULL,

CONSTRAINT pk_kalll_acKcterfilma PRIMARY KEY(FIO,nazvaniefilma));

CREATE TABLE kal_akkcter

(fio VARCHAR2(20) NOT NULL CONSTRAINT kal_pk_fio PRIMARY KEY,

nacionalnost VARCHAR2(15) NOT NULL,

data_rozhdeniya NUMBER(4) NOT NULL);

CREATE TABLE kalrezhischer

(Fio VARCHAR2(20) NOT NULL CONSTRAINT pkFio PRIMARY KEY,

nacionalnost VARCHAR2(20) NOT NULL,

data_rozhdeniya NUMBER(4) NOT NULL);

2.2 Работа с данными. Заполнение таблиц.

Запросы SQL для заполнения таблиц данными выглядят следующим образом.

Заполнение данными таблицы kalrezhischer:

Для заполнения таблицы сначала вводится команда INSERT INTO,далее название таблицы, которую будем заполнять данными. В скобках перечислим название всех полей таблицы.

INSERT INTO kalrezhischer (Fio, nacionalnost, data_rozhdeniya)

Затем используется команда VALUES, в скобках, в кавычках через запятую указываем значения полей:

INSERT INTO kalrezhischer (Fio, nacionalnost, data_rozhdeniya)

VALUES ('Djohn Cameron', 'USA',1956);

INSERT INTO kalrezhischer (Fio, nacionalnost, data_rozhdeniya)

VALUES ('Francisko Capollo', 'Italy',1954);

INSERT INTO kalrezhischer (Fio, nacionalnost, data_rozhdeniya)

VALUES ('Fedor Bondarchuk', 'Russia',1970);

INSERT INTO kalrezhischer (Fio, nacionalnost, data_rozhdeniya)

VALUES ('Julio Scorceze', 'Italy',1945);

INSERT INTO kalrezhischer (Fio, nacionalnost, data_rozhdeniya)

VALUES ('Fedor Bondarchuk', 'Russia',1970);

INSERT INTO kalrezhischer (Fio, nacionalnost, data_rozhdeniya)

VALUES ('Sergey Bodrov', 'Russia',1957);

INSERT INTO kalrezhischer (Fio, nacionalnost, data_rozhdeniya)

VALUES ('Ildar Ryazanov', 'Russia',1942);

Заполнение таблицы kalFiellm:

INSERT INTO kalFiellm(nazvanie, janr, god_vypuska, proizvoditel, strana, prodolzhitelnost, rezhisser)

VALUES ('2012', 'Fantastika','2010', 'Columbia', 'USA', 150,'Djohn Cameron');

INSERT INTO kalFiellm(nazvanie, janr, god_vypuska, proizvoditel, strana, prodolzhitelnost, rezhisser)

VALUES ('Krestniy Otec', 'Kriminal','1981', 'Paramount', 'Italy', 158,'Francisko Capollo');

INSERT INTO kalFiellm(nazvanie, janr, god_vypuska, proizvoditel, strana, prodolzhitelnost, rezhisser)

VALUES ('9 Rota', 'Boevik','2008', 'Avatar studio', 'Russia', 140,'Fedor Bondarchuk');

INSERT INTO kalFiellm(nazvanie, janr, god_vypuska, proizvoditel, strana, prodolzhitelnost, rezhisser)

VALUES ('Slavnie parni', 'Kriminal','1990', 'Universal', 'Italy', 143,'Julio Scorceze');

INSERT INTO kalFiellm(nazvanie, janr, god_vypuska, proizvoditel, strana, prodolzhitelnost, rezhisser)

VALUES ('Brat', 'Kriminal','1998', '21 Vek', 'Russia', 142,'Sergey Bodrov');

INSERT INTO kalFiellm(nazvanie, janr, god_vypuska, proizvoditel, strana, prodolzhitelnost, rezhisser)

VALUES ('Ironiy sudby', 'Komediy','1998', 'Mosfilm', 'Russia', 135,'Ildar Ryazanov');

Остальные таблицы заполняются аналогично.

Данные таблицы принимают вид:

Таблица режиссёр.

FIO NACIONALNOST DATA_ROZHDENIYA

-------------------- -------------------- ---------------

Djohn Cameron USA 1956

Francisko Capollo Italy 1954

Fedor Bondarchuk Russia 1970

Julio Scorceze Italy 1945

Sergey Bodrov Russia 1957

Ildar Ryazanov Russia 1942

Таблица фильм:

NAZVANIE JANR GOD_VYPUSKA PROIZVODITEL STRANA

--------------- --------------- ----------- -------------------- ----------

PRODOLZHITELNOST REZHISSER

---------------- --------------------

2012 Fantastika 2010 Columbia USA

150 Djohn Cameron

Krestniy Otec Kriminal 1981 Paramount Italy

158 Francisko Capollo

9 Rota Boevik 2008 Avatar studio Russia

140 Fedor Bondarchuk

NAZVANIE JANR GOD_VYPUSKA PROIZVODITEL STRANA

--------------- --------------- ----------- -------------------- ----------

PRODOLZHITELNOST REZHISSER

---------------- --------------------

Slavnie parni Kriminal 1990 Universal Italy

143 Julio Scorceze

Brat Kriminal 1998 21 Vek Russia

142 Sergey Bodrov

Ironiy sudby Komediy 1998 Mosfilm Russia

135 Ildar Ryazanov

Таблица актёр фильма:

FIO NAZVANIEFILMA ROL_V_FILME

--------------- --------------- ---------------

Oliver Platt 2012 Karl Anhauser

Tomas Makkarti 2012 Gordon Zibelman

Marlon Brando Krestniy Otec Don Karlione

Al Pachino Krestniy Otec Maikl Korleone

Aleksei CHadov 9 Rota Vladim Vorobiev

Soslan Fidarov 9 Rota Begbulatov

Rey Liotta Slavnie parni Genri Hill

Robert de Niro Slavnie parni Dchimmi Konvey

Vikt Suhorukov Brat Brat 2

Andrey Bodrov Brat Brat 1

Andrey Myagkov Ironiy sudby CHenya Lukashin

FIO NAZVANIEFILMA ROL_V_FILME

--------------- --------------- ---------------

Barbara Brilska Ironiy sudby Nadya SHeveleva

Таблица актёр:

FIO NACIONALNOST DATA_ROZHDENIYA

-------------------- --------------- ---------------

Oliver Platt USA 1981

Marlon Brando Italy 1964

Al Pachino Italy 1957

Soslan Fidarov Russia 1983

Rey Liotta Italy 1968

Robert de Niro USA 1955

Andrey Bodrov Russia 1981

Andrey Myagkov Russia 1953

Barbara Brilska Russia 1955

Tomas Makkarti USA 1971

Aleksei CHadov Russia 1978

FIO NACIONALNOST DATA_ROZHDENIYA

-------------------- --------------- ---------------

Vikt Suhorukov Russia 1964

Запросы:

Для изменения данных используется команда UPDATE, которая изменяет значения столбцов в таблице.

Пример 1:

Изменить дату выпуска путем увеличения на 10 только тех фильмов, продолжительность которых больше 143 минут.

UPDATE kalFiellm SET god_vypuska= god_vypuska+10

WHERE prodolzhitelnost>143

Для удаления данных используется команда DELETE, которая удаляет значения столбцов в таблице.

Например:

Удаление данных, тех фильмов, продолжительность сеанса которых меньше 150 минут.

DELETE FROM kalFiellm

WHERE god_vypuska<1989;

Для выборки данных используется команда SELECT.

1)Получить все сведения о режиссёрах, хранящихся в базе.

SELECT * FROM kalrezhischer;

FIO NACIONALNOST DATA_ROZHDENIYA

-------------------- -------------------- ---------------

Djohn Cameron USA 1956

Francisko Capollo Italy 1954

Fedor Bondarchuk Russia 1970

Julio Scorceze Italy 1945

Sergey Bodrov Russia 1957

Ildar Ryazanov Russia 1942

2)Выведем поле национальность из таблицы актёр

select nacionalnost from kal_akkcter;

NACIONALNOST

---------------

USA

Italy

Italy

Russia

Italy

USA

Russia

Russia

Russia

USA

Russia

NACIONALNOST

---------------

Russia

3)Выведем поля: актёр и дата их рождения,при условии что дата рождения не меньше 1960.

SQL> select fio,data_rozhdeniya from kal_akkcter where data_rozhdeniya>1960;

FIO DATA_ROZHDENIYA

-------------------- ---------------

Oliver Platt 1981

Marlon Brando 1964

Soslan Fidarov 1983

Rey Liotta 1968

Andrey Bodrov 1981

Tomas Makkarti 1971

Aleksei CHadov 1978

Vikt Suhorukov 1964

4)Выведем поле актёр и дату их рождения увеличенную в 100 раз.

select fio,data_rozhdeniya*100 from kal_akkcter;

FIO DATA_ROZHDENIYA*100

-------------------- -------------------

Oliver Platt 198100

Marlon Brando 196400

Al Pachino 195700

Soslan Fidarov 198300

Rey Liotta 196800

Robert de Niro 195500

Andrey Bodrov 198100

Andrey Myagkov 195300

Barbara Brilska 195500

Tomas Makkarti 197100

Aleksei CHadov 197800

FIO DATA_ROZHDENIYA*100

-------------------- -------------------

Vikt Suhorukov 196400

5)выделить фильмы которые сняты зарубежными киностудиями.

select nazvanie from kalFiellm where strana not like 'Russia';

NAZVANIE

---------------

2012

Krestniy Otec

Slavnie parni

6)Представить сведения о фильме, актере, который снимается в этом фильме, а также о национальности актёра:

select kalFiellm.nazvanie,kalll_acKcterfilma.FIO,

kal_akkcter.nacionalnost from kalFiellm,kalll_acKcterfilma,

kal_akkcter where (kalFiellm.nazvanie=kalll_acKcterfilma.nazvaniefilma) and (kal_akkcter.fio=kalll_acKcterfilma.FIO);

NAZVANIE FIO NACIONALNOST

--------------- --------------- ---------------

2012 Oliver Platt USA

Krestniy Otec Marlon Brando Italy

Krestniy Otec Al Pachino Italy

9 Rota Soslan Fidarov Russia

Slavnie parni Rey Liotta Italy

Slavnie parni Robert de Niro USA

Brat Andrey Bodrov Russia

Ironiy sudby Andrey Myagkov Russia

Ironiy sudby Barbara Brilska Russia

2012 Tomas Makkarti USA

9 Rota Aleksei CHadov Russia

NAZVANIE FIO NACIONALNOST

--------------- --------------- ---------------

Brat Vikt Suhorukov Russia

7)среднее значение продолжительности фильмов

select avg(kalFiellm.prodolzhitelnost) from kalFiellm;

AVG(KALFIELLM.PRODOLZHITELNOST)

-------------------------------

144,666667

8)сортировка режиссёров по дате рождения:

select Fio from kalrezhischer

order by data_rozhdeniya;

FIO

--------------------

Ildar Ryazanov

Julio Scorceze

Francisko Capollo

Djohn Cameron

Sergey Bodrov

Fedor Bondarchuk

18