Sql создание своей БД. Лаба4 ОБД Лобанов. Лабораторна робота 4 вивчення команд dml, ddl. Застосування утіліти oracle sqlloader Виконав ст гр. Іткн189
Скачать 415.85 Kb.
|
Міністерство освіти і науки України Харківський національний університет радіоелектроніки Кафедра ШІ Дисципліна: «Організація баз даних та знань» ЛАБОРАТОРНА РОБОТА № 4 «ВИВЧЕННЯ КОМАНД DML, DDL. ЗАСТОСУВАННЯ УТІЛІТИ ORACLE SQL*LOADER»
Харків 2019 «ВИВЧЕННЯ КОМАНД DML, DDL. ЗАСТОСУВАННЯ УТІЛІТИ ORACLE SQL*LOADER» Мета роботи Метою лабораторної роботи є придбання навичок роботи при створенні об'єктів бази даних: таблиць, уявлень, послідовностей в ORACLE; використання команд маніпулювання даними. А також застосування утіліти SQL*LOADER для завантаження даних у БД. Сценарії, за допомогою яких були створені таблиці й подання --страны create table LOBANOV_countries( country_id number not null, country_name varchar2(20) not null, constraint country_pk primary key (country_id), constraint country_name unique (country_name) ); --состав команд create table LOBANOV_squad( team_id number not null, sportsmen_id number not null, games_year number not null, constraint sportsmen_pk primary key (sportsmen_id), constraint team_id unique (team_id) ); --дисциплины create table LOBANOV_disciplines( discipline_id number not null, kind_of_sport varchar2(20) not null, constraint discipline_pk primary key (discipline_id), constraint kind_of_sport unique (kind_of_sport) ); --спортсмены create table LOBANOV_sportsmens( sportsmen_id number not null, name_sportsmen varchar2(30)not null, gender_sportsmen varchar(10) not null, data_of_birthday_sportsmen DATE, country_id number not null, discipline_id number not null, constraint sportsmens_pk primary key (sportsmen_id), constraint country_fk foreign key (country_id) references LOBANOV_countries (country_id), constraint discipline_fk foreign key (discipline_id) references LOBANOV_disciplines (discipline_id) ); --матчи create table LOBANOV_matches( match_id number not null, team_id_1 number not null, team_id_2 number not null, score_team_1 number, score_team_2 number, date_of_match date, constraint match_pk primary key (match_id), ); --команды create table LOBANOV_teams( team_id number not null, team_name varchar2(20) not null, country_id number not null, date_of_founding date, discipline_id number not null, team_status varchar2(10), director_of_team varchar2(20), match_id number not null, constraint team_pk primary key (team_id), ); --звания create table LOBANOV_rank( rank_id number not null, rank_name varchar2(20) not null, sportsmen_id number not null, year_of_rank number not null, constraint rank_pk primary key (rank_id), constraint sportsmen_fk foreign key(sportsmen_id) references LOBANOV_sportsmens (sportsmen_id) ); alter table LOBANOV_matches add constraint team_id_1_fk foreign key (team_id_1) references LOBANOV_teams (team_id) alter table LOBANOV_matches add constraint team_id_2_fk foreign key (team_id_2) references LOBANOV_teams (team_id) alter table LOBANOV_teams add constraint country_team_fk foreign key (country_id) references LOBANOV_countries (country_id) alter table LOBANOV_teams add constraint discipline_teams__fk foreign key (discipline_id) references LOBANOV_disciplines (discipline_id) alter table LOBANOV_teams add constraint match_fk foreign key (match_id) references LOBANOV_matches (match_id) Створення послідовностей create sequence common_sequence ; create sequence country_sequence; create sequence squad_sequence; create sequence disciplines_sequence; create sequence sportsmens_sequnce; create sequence matches_sequence; create sequence teams_sequence; create sequence rank_sequence; create or replace view LOBANOV_squads_view as select sp.name_sportsmen,sp.country_id, tm.team_name,tm.date_of_founding from lobanov_sportsmens sp, lobanov_teams tm where sp.discipline_id=tm.discipline_id; create or replace view lobanov_country_view as select cntr.country_name, sprt.* from lobanov_countries cntr, lobanov_sportsmens sprt where cntr.country_id=sprt.country_id; create or replace view lobanov_all_tables as select cntr.country_name,dsp.kind_of_sport,mtc.date_of_match,rnk.rank_name,spr.name_sportsmen,sqd.games_year, tms.team_name from lobanov_countries cntr,lobanov_disciplines dsp,lobanov_matches mtc, lobanov_rank rnk,lobanov_sportsmens spr,lobanov_squad sqd , lobanov_teams tms where spr.sportsmen_id=rnk.sportsmen_id and spr.sportsmen_id=sqd.sportsmen_id and tms.team_id=sqd.team_id and tms.team_id=mtc.team_id_1 and tms.team_id=mtc.team_id_2 and mtc.team_id_1!=mtc.team_id_2 and cntr.country_id=spr.country_id and cntr.country_id=tms.country_id and dsp.discipline_id=spr.discipline_id and dsp.discipline_id=tms.discipline_id and mtc.match_id=tms.match_id; Запити, що включають оператори INSERT, UPDATE, DELETE insert into lobanov_countries(country_id,country_name ) values( common_sequence.NEXTVAL, 'Japan' ); insert into lobanov_countries(country_id,country_name ) values( common_sequence.NEXTVAL, 'USSR' ); insert into lobanov_countries(country_id,country_name ) values( common_sequence.NEXTVAL, 'Germany' ); insert into lobanov_countries(country_id,country_name ) values( common_sequence.NEXTVAL, 'Ukraine' ); select cntr.country_id,cntr.country_name from lobanov_countries cntr; update lobanov_countries set country_name='Tadzhikistan' where country_id=3; select cntr.country_id,cntr.country_name from lobanov_countries cntr; delete from lobanov_countries where country_id=1; select cntr.country_id,cntr.country_name from lobanov_countries cntr; E R-діаграма Запити до БД на основі подань Створити запит, який шукає гравців та назви їх країни, де їх порядковий номер дорівнює 3 або 4. select lv.name_sportsmen, lv.country_name from lobanov_country_view lv where lv.country_id=3 or lv.country_id=4; Створити запит, який шукає гравців та назви їх країни, де їх порядковий номер дорівнює порядковому номеру їх країни. select lv.name_sportsmen, lv.country_name from lobanov_country_view lv where lv.sportsmen_id=lv.country_id; Завантаження даних в таблицю за допомогою SQL*Loader (дані повинні завантажуватися з файлу з розширенням CSV. При завантаженні використати послідовність, що генерує значення, починаючи з максимального в даній таблиці із кроком «три») Файл-контролер (controller.ctl): LOAD DATA APPEND INTO TABLE LOBANOV_countries FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS ( country_name, country_id SEQUENCE(max,3) ) Завантажені дані (lobanov.csv) Команда, що розпочинає процес завантаження даних: sqlldr userid=HR/******@XE, control=C:\sql\controller.ctl, log=C:\sql\logg.log, data=C:\sql\lobanov.csv ,bad=C:\sql\bd.bad,discard=C:\sql\tos.dsc Логи (logg.log) select * from lobanov_countries; Висновок В даній лабораторній роботі набув навичок створювати власні таблиці, уявлення та послідовності в БД, заповнювати їх даними, змінювати та видаляти ці дані. Також навчився заповнювати таблиці даними з зовнішніх файлів за допомогою SQL*Loader. Було важко психологічно впоратися з проблемами, які виникали, а також незадоволений SQL NAVIGATOR Oracle, бо коли виникає помилка, Oracle не хоче, щоб ви її вирішили. |