first commit
This commit is contained in:
Executable
+196
@@ -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
|
||||
);
|
||||
Executable
+45
@@ -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)
|
||||
);
|
||||
Executable
+92
@@ -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);
|
||||
Executable
+80
@@ -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;
|
||||
Reference in New Issue
Block a user