# Бази даних та інформаційні системи (Мулярчук Владислава) ## Лабораторна робота №1 Согласно заданному варианту выполнить следующее: Создать БД. Создать таблицы БД. При создании таблиц обязательно использовать (хотя бы один раз) атрибуты столбцов: UNIQUE, NULL, NOT NULL, DEFAULT, CHECK; оператор CONSTRAINT. Заполнить таблицы БД, используя команду INSERT. Проверить содержимое таблиц БД, используя команду SELECT. Привести примеры использования команды ALTER TABLE для добавления, изменения, удаления столбца таблицы, добавления и удаления ограничений для таблицы. Привести пример использования команды UPDATE. Привести пример использования команды DELETE. ## Варіант №6 1) Створити і заповнити відношення БД наукового фонду: Наукові напрямки(Id (ПК), Назва). 2) Науковці (Id (ПК), ПІБ, Дата народження, Вчений ступінь, Вчене звання). 3) Гранти (Id (ПК), Науковий напрямок (ЗК до таблиці "Наукові напрямки"), Керівник (ЗК до таблиці "Вчені"), Назва теми (С 100, обов'язкове поле) Дата початку (D, обов'язкове поле), Організація (C 60, обов'язкове поле), Дата закінчення (D, обов'язкове поле, більше дати початку), Сума фінансування (N 8 0, обов'язкове поле, більше 0 )). 4) Учасники (Id (ПК), Грант (ЗК), Науковець (ЗК)). # *Завдання №0* Створити базу данних наукового фонду за допомогою команди ``` mysql CREATE DATABASE науковий_фонд; USE науковий_фонд; ``` # *Завдання №1* Створити таблицю Бази даних Наукові напрямки(Id (ПК), Назва). Для створення таблиць використовую запропонований онлайн ресурс: https://onecompiler.com/mysql/3yf5s7ww8 Використовувала атрибути стовпців NOT NULL, команды INSERT, SELECT ``` mysql create table наукові_напрямки (ID int NOT NULL, Name varchar(50)NOT NULL); insert наукові_напрямки (ID, Name) values (1, 'FLEX'); insert наукові_напрямки (ID, Name) values (2, 'Sabit'); insert наукові_напрямки (ID, Name) values (3, 'DIGH'); select * from наукові_напрямки; ``` Результат: ![](https://i.imgur.com/Gp3D0qE.png) # *Завдання №2* Науковці (Id (ПК), ПІБ, Дата народження, Вчений ступінь, Вчене звання). ``` mysql create table науковці (ID int NOT NULL, NameSurname varchar(200)NOT NULL ,Data int NOT NULL, Degree varchar(100) NULL, Status varchar(100) Null,UNIQUE(ID)); insert науковці (ID, NameSurname,Data,Degree) values (1,'Frances Allen',1932,'Turing Award'); insert науковці (ID, NameSurname,Data,Status) values (2,'Anne Cheng',1955,'Chinese scholar'); insert науковці (ID, NameSurname,Data,Degree,Status) values (3,'Elena Aprile',1954,'coparther','physicist'); insert науковці (ID, NameSurname,Data,Status) values (4,'Ruth Bari',1917,'professor'); select * from науковці; ``` Результат: ![](https://i.imgur.com/8S2Trse.png) Використовую атрибути стовпців NOT NULL,NULL,UNIQUE та команди INSERT, SELECT,ALTER TABLE,UPDATE. ``` mysql alter table науковці add Field varchar(100); update науковці set Field='mathematics' where NameSurname='Ruth Bari'; select * from науковці; ``` Результат: ![](https://i.imgur.com/DO7SoXB.png) # *Завдання №3* Гранти (Id (ПК), Науковий напрямок (ЗК до таблиці “Наукові напрямки”), Керівник (ЗК до таблиці “Вчені”), Назва теми (С 100, обов’язкове поле) Дата початку (D, обов’язкове поле), Організація (C 60, обов’язкове поле), Дата закінчення (D, обов’язкове поле, більше дати початку), Сума фінансування (N 8 0, обов’язкове поле, більше 0 )). Використовуюючи первісні та зовнішні ключі створила посилання на дві попередні таблиці. Використала атрибути стовпців NOT NULL,NULL,UNIQUE,DEFAULT,CHECK оператор CONSTRAINT та команди INSERT, SELECT ``` mysql create table наукові_напрямки (ID int PRIMARY KEY, Name varchar(50)NOT NULL); insert наукові_напрямки (ID, Name) values (1, 'FLEX'); insert наукові_напрямки (ID, Name) values (2, 'Sabit'); insert наукові_напрямки (ID, Name) values (3, 'DIGH'); create table науковці (ID int PRIMARY KEY , NameSurname varchar(200)NOT NULL ,Data int NOT NULL, Degree varchar(100) NULL, Status varchar(100) Null,UNIQUE(ID)); insert науковці (ID, NameSurname,Data,Degree) values (1,'Frances Allen',1932,'Turing Award'); insert науковці (ID, NameSurname,Data,Status) values (2,'Anne Cheng',1955,'Chinese scholar'); insert науковці (ID, NameSurname,Data,Degree,Status) values (3,'Elena Aprile',1954,'coparther','physicist'); insert науковці (ID, NameSurname,Data,Status) values (4,'Ruth Bari',1917,'professor'); alter table науковці add Field varchar(100); update науковці set Field='mathematics' where NameSurname='Ruth Bari'; create table гранти (ID int AUTO_INCREMENT PRIMARY KEY ,Direct int, FOREIGN KEY (Direct ) REFERENCES наукові_напрямки(Id),HeadId int,FOREIGN KEY (HeadId) REFERENCES науковці(Id), TopicName varchar(100) NOT NULL ,DataStart date NOT NULL, Organisation varchar(60) NOT NULL, DataFinish date NOT Null,Financing int DEFAULT 3000 CHECK(Financing >0),CONSTRAINT грантID UNIQUE(ID)); insert гранти (Direct,HeadId, TopicName,DataStart,Organisation,DataFinish,Financing) values (1,1,'EcoEction',"05.09.13",'Teenagers',"2021.03.15",1500); insert гранти (Direct,HeadId, TopicName,DataStart,Organisation,DataFinish,Financing) values (2,2,'ThePower',"03.11.10" , 'Chinesepeople',"2021.11.2",5640); insert гранти (Direct,HeadId, TopicName,DataStart,Organisation,DataFinish) values (3,3,'CulturCapitals',"03.11.13" , 'Ukranians',"2021.11.07"); insert гранти (HeadId, TopicName,DataStart,Organisation,DataFinish,Financing) values (4,'SaveResources',"20.07.17",'All people',"2021.01.20",10000); select * from гранти; ``` Результат: ![](https://i.imgur.com/GshRGjc.png) ![](https://i.imgur.com/9fGGe81.png) Використання команд ALTER TABLE,UPDATE,DELETE. ``` mysql ALTER TABLE гранти DROP COLUMN Organisation; UPDATE гранти SET Financing = Financing + 300; select * from гранти; ``` Результат: ![](https://i.imgur.com/1QhxYI6.png) # *Завдання №4* Учасники (Id (ПК), Грант (ЗК), Науковець (ЗК)). ``` mysql create table наукові_напрямки (ID int PRIMARY KEY, Name varchar(50)NOT NULL); insert наукові_напрямки (ID, Name) values (1, 'FLEX'); insert наукові_напрямки (ID, Name) values (2, 'Sabit'); insert наукові_напрямки (ID, Name) values (3, 'DIGH'); create table науковці (ID int PRIMARY KEY , NameSurname varchar(200)NOT NULL ,Data int NOT NULL, Degree varchar(100) NULL, Status varchar(100) Null,UNIQUE(ID)); insert науковці (ID, NameSurname,Data,Degree) values (1,'Frances Allen',1932,'Turing Award'); insert науковці (ID, NameSurname,Data,Status) values (2,'Anne Cheng',1955,'Chinese scholar'); insert науковці (ID, NameSurname,Data,Degree,Status) values (3,'Elena Aprile',1954,'coparther','physicist'); insert науковці (ID, NameSurname,Data,Status) values (4,'Ruth Bari',1917,'professor'); alter table науковці add Field varchar(100); update науковці set Field='mathematics' where NameSurname='Ruth Bari'; create table гранти (ID int AUTO_INCREMENT PRIMARY KEY ,Direct int, FOREIGN KEY (Direct ) REFERENCES наукові_напрямки(Id),HeadId int,FOREIGN KEY (HeadId) REFERENCES науковці(Id), TopicName varchar(100) NOT NULL ,DataStart date NOT NULL, Organisation varchar(60) NOT NULL, DataFinish date NOT Null,Financing int DEFAULT 3000 CHECK(Financing >0),CONSTRAINT грантID UNIQUE(ID)); insert гранти (Direct,HeadId, TopicName,DataStart,Organisation,DataFinish,Financing) values (1,1,'EcoEction',"05.09.13",'Teenagers',"2021.03.15",1500); insert гранти (Direct,HeadId, TopicName,DataStart,Organisation,DataFinish,Financing) values (2,2,'ThePower',"03.11.10" , 'Chinesepeople',"2021.11.2",5640); insert гранти (Direct,HeadId, TopicName,DataStart,Organisation,DataFinish) values (3,3,'CulturCapitals',"03.11.13" , 'Ukranians',"2021.11.07"); insert гранти (HeadId, TopicName,DataStart,Organisation,DataFinish,Financing) values (4,'SaveResources',"20.07.17",'All people',"2021.01.20",10000); create table учасники (ID int AUTO_INCREMENT PRIMARY KEY,GrantId int, FOREIGN KEY (GrantId ) REFERENCES гранти(Id),HeadId int,FOREIGN KEY (HeadId) REFERENCES науковці(Id) ); insert учасники (GrantId,HeadId) values (1, 1); insert учасники (GrantId, HeadId) values (2, 2); insert учасники (GrantId, HeadId) values (3, 3); insert учасники (GrantId, HeadId) values (4, 4); select * from учасники; ``` ![](https://i.imgur.com/nmsVmDt.png)