first commit

This commit is contained in:
Vitalii Litvinchuk
2026-05-04 23:15:09 +03:00
commit 6deed0469a
49 changed files with 5366 additions and 0 deletions
+196
View File
@@ -0,0 +1,196 @@
--Створення бази даних
CREATE DATABASE OrdersDB;
use OrdersDB;
--Створення таблиці Salespeople
CREATE TABLE Salespeople (
SNUM int NOT NULL,
SNAME char(20) NOT NULL,
CITY char(20),
COMM decimal(8, 2),
PRIMARY KEY (SNUM)
);
--Створення таблиці Customers
CREATE TABLE Customers (
CNUM int NOT NULL,
CNAME char(20) NOT NULL,
CITY char(20),
RATING int,
SNUM int,
PRIMARY KEY (CNUM),
FOREIGN KEY (SNUM) REFERENCES Salespeople (SNUM)
);
--Створення таблиці Orders
CREATE TABLE Orders (
ONUM int NOT NULL,
AMT DECIMAL(8, 2) NOT NULL,
ODATE DATE,
SNUM int,
CNUM int,
PRIMARY KEY (ONUM),
FOREIGN KEY (SNUM) REFERENCES Salespeople (SNUM),
FOREIGN KEY (CNUM) REFERENCES Customers (CNUM)
);
--Масова ставка даних у таблиці
INSERT INTO
Salespeople (snum, sname, city, comm)
VALUES (1001, 'Peel', 'London', 0.12),
(
1002,
'Serres',
'San Jose',
0.13
),
(
1003,
'Axelrod',
'New York',
0.1
),
(
1004,
'Motika',
'London',
0.11
),
(
1007,
'Rifkin',
'Barcelona',
0.15
);
INSERT INTO
Customers (
cnum,
cname,
city,
rating,
snum
)
VALUES (
2001,
'Hoffman',
'London',
100,
1001
),
(
2002,
'Giovanni',
'Rome',
200,
1003
),
(
2003,
'Liu',
'San Jose',
200,
1002
),
(
2004,
'Grass',
'Berlin',
300,
1002
),
(
2006,
'Clemens',
'London',
100,
1001
),
(
2007,
'Pereira',
'Rome',
100,
1004
),
(
2008,
'Cisneros',
'San Jose',
300,
1007
);
INSERT INTO
Orders (onum, amt, odate, cnum, snum)
VALUES (
3001,
18.69,
'1990-10-03',
2008,
1007
),
(
3002,
1900.1,
'1990-10-03',
2007,
1004
),
(
3003,
767.19,
'1990-10-03',
2001,
1001
),
(
3005,
5160.45,
'1990-10-03',
2003,
1002
),
(
3006,
1098.16,
'1990-10-03',
2008,
1007
),
(
3007,
75.75,
'1990-10-04',
2004,
1002
),
(
3008,
4723.0,
'1990-10-05',
2006,
1001
),
(
3009,
1713.23,
'1990-10-04',
2002,
1003
),
(
3010,
1309.95,
'1990-10-06',
2004,
1002
),
(
3011,
9891.88,
'1990-10-06',
2006,
1001
);
+45
View File
@@ -0,0 +1,45 @@
CREATE DATABASE Mangata_Gallo;
use Mangata_Gallo;
-- 1.1
-- Створіть таблицю "Clients" з такими обмеженнями:
-- ClientID: первинний ключ, тип - цілі, не порожнє
-- FullName: тип - змінний символьний довжиною 100, не порожнє
-- PhoneNumber: тип - цілі, не порожнє, унікальні
create table Clients (
client_id int primary key auto_increment,
full_name nvarchar (100) not null,
phone_number int not null unique
);
-- 1.2
-- Створіть таблицю "Items" з такими атрибутами та обмеженнями:
-- ItemID: первинний ключ, тип - цілі, не порожнє
-- ItemName: тип - змінний символьний довжиною 100, не порожнє
-- Price: тип – десяткові (7 розрядів, два знаки після коми), не порожнє
create table Items (
item_id int primary key auto_increment,
item_name nvarchar (100) not null,
price decimal(7, 2) not null
);
-- 1.3
-- творіть таблицю "Orders" з такими атрибутами та обмеженнями:
-- OrderID: первинний ключ, тип - цілі, не порожнє
-- ClientID: зовнішній ключ, тип - цілі, не порожнє
-- ItemID: зовнішній ключ, тип - цілі, не порожнє
-- Quantity: тип - цілі, не порожнє, максимально допустима кількість одиниць товару на замовлення - 3
-- Cost: тип – десяткові (8 розрядів, 2 знаки після коми), не порожнє
create table Orders (
order_id int primary key auto_increment,
client_id int not null,
item_id int not null,
quantity int not null check (quantity <= 3),
cost decimal(8, 2) not null,
constraint fk_client foreign key (client_id) references Clients (client_id),
constraint fk_item foreign key (item_id) references Items (item_id)
);
+92
View File
@@ -0,0 +1,92 @@
use Mangata_Gallo;
-- 2.1
-- Створіть таблицю "Staff" з такими атрибутами та обмеженнями "не порожнє":
-- StaffID: первинний ключ, тип - цілі, не порожнє
-- PhoneNumber: тип - цілі, не порожнє, унікальні
-- FullName: тип - змінний символьний довжиною 100, не порожнє
-- email: тип - змінний символьний довжиною 100, не порожнє, знаходиться у домені "mangata-gallo.com"
-- Відобразіть схему таблиці
-- Додайте два записи у таблицю, які задовольняють обмеженням, спробуйте ввести один запис для якого значення домену не відповідає обмеженню
create table Staff (
staff_id int primary key auto_increment,
phone_number int not null unique,
full_name nvarchar (100) not null,
email nvarchar (100) not null check (
email like '%@mangata-gallo.com'
)
);
insert into
Staff (
phone_number,
full_name,
email
)
values (
123456789,
'John Doe 1',
'random1@mangata-gallo.com'
),
(
123456788,
'John Doe 2',
'random2@mangata-gallo.com'
);
insert into
Staff (
phone_number,
full_name,
email
)
values (
123456787,
'John Doe 3',
'random3@gallo.com'
);
-- 2.2
-- Створіть таблицю "ContractInfo" з такими атрибутами та обмеженнями "не порожнє":
-- ContractID: первинний ключ, тип - цілі, не порожнє
-- StaffID: тип - цілі, не порожнє
-- Location: тип - змінний символьний довжиною 50, не порожнє, значення за замовчуванням - "Texas"
-- StaffType: тип - змінний символьний довжиною 20, не порожнє, може набувати значень - "Junior" or a "Senior"
-- Salary: тип – десяткові (9 розрядів, 2 знаки після коми), не порожнє
-- Відобразіть схему таблиці
-- Додайте два записи у таблицю з довільними даними, які задовольняють обмеженням, для другого запису не додавайте значення поля Location
-- Спробуйте додати ще один запис, в якості StaffType використавши значення "Midle"
create table ContractInfo (
contract_id int primary key auto_increment,
staff_id int not null,
location nvarchar (50) default 'Texas',
staff_type nvarchar (20) check (
staff_type in ('Junior', 'Senior')
),
salary decimal(9, 2) not null,
constraint fk_staff foreign key (staff_id) references Staff (staff_id)
);
insert into
ContractInfo (
staff_id,
location,
staff_type,
salary
)
values (1, 'Texas', 'Junior', 100000);
insert into
ContractInfo (staff_id, staff_type, salary)
values (2, 'Senior', 200000);
insert into
ContractInfo (
staff_id,
location,
staff_type,
salary
)
values (3, 'Texas', 'Middle', 150000);
+80
View File
@@ -0,0 +1,80 @@
use OrdersDB;
-- 3.1
-- Додайте у таблицю Salespeople себе у якості продавця
-- Додайте у таблицю Customers двох своїх напарників у якості
-- Ваших клієнтів Додайте дві угоди у таблицю Orders (
-- по одній для кожного з Ваших клієнтів
-- )
insert into
Salespeople (snum, sname, city, comm)
values (
1111,
'Vitalii',
'Zdolbuniv',
0.11
);
insert into
Customers (
cnum,
cname,
city,
rating,
snum
)
values (
2009,
'Oleg',
'Ostroh',
100,
1111
),
(
2010,
'Poman',
'Ostroh',
200,
1111
);
insert into
Orders (onum, amt, odate, cnum, snum)
values (
3012,
1000,
'2026-03-19',
2009,
1111
),
(
3013,
2000,
'2026-03-19',
2010,
1111
);
-- 3.2
-- Накладіть додаткові обмеження на зовнішні ключі snum у таблицях Customers та Orders: ON DELETE CASCADE ON UPDATE CASCADE
-- Спробуйте змінити для себе у таблиці Salespeople значення snum, збільшивши його на 1
-- перевірте чи з'явилися відповідні зміни у таблицях Customers та Orders
-- Спробуйте видалити свій запис продавця у таблиці Salespeople
-- перевірте чи спрацювало каскадне видалення пов'язаних записів у таблицях Customers та Orders
alter table Customers drop constraint Customers_ibfk_1;
alter table Orders drop constraint Orders_ibfk_1;
alter table Customers
add constraint Customers_ibfk_1 foreign key (snum) references Salespeople (snum) on delete cascade on update cascade;
alter table Orders
add constraint Orders_ibfk_1 foreign key (snum) references Salespeople (snum) on delete cascade on update cascade;
update Customers set snum = 1112 where snum = 1111;
update Orders set snum = 1112 where snum = 1111;
delete from Salespeople where snum = 1112;