Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

О т в е т ы н а з а д а н и е №5.

1.

CREATE TABLE Команды (

название CHAR(30) PRIMARY KEY,

страна CHAR(30),

уровень_фанатов CHAR(5) CHECK (уровень_фанатов in (‘дикий’, ‘умеренный’)),

CHECK (страна = ‘England’ OR уровень_фанатов = ‘wild’)

);

CREATE TABLE Игроки (

Имя CHAR(30) PRIMARY KEY,

Страна CHAR(30),

Имя_команды CHAR(30) REFERNCES Команды(название),

Оклад NUMBER,

CHECK (Страна = (SELECT T. страна

FROM Команды T

WHERE T. название = Имя_команды)

OR

оклад/1.2 > (SELECT max(P. оклад)

FROM Игроки P, команды T

WHERE P. имя_команды = Имя_команды

AND T. название = Имя_команды

AND T. страна= P. страна))

);

CREATE TABLE Games(

Имя_команды1 CHAR(30) REFERENCES Команды(название),

Колво_голов1 NUMBER,

Имя_команды 2 CHAR(30) REFERENCES Команды(название),

Колво_голов 2 NUMBER,

дата DATE,

PRIMARY KEY(Имя_команды1, Имя_команды2, дата),

CHECK Имя_команды1 <> Имя_команды2)

);

CREATE TABLE Голы(

Имя_игрока CHAR(30) REFERNCES Игроки(имя),

Колво_голов NUMBER CHECK (Колво_голов > 0),

Дата DATE,

PRIMARY KEY(Имя_игрока, Дата)

);

CREATE ASSERTION Проверка_голов CHECK

(NOT EXISTS

((SELECT *

FROM Игры G

WHERE G. колво_голов1 <>

(SELECT sum(L. колво_голов)

FROM Игроки P, Голы L

WHERE P. имя_команды = G. имя_команды1

AND P. имя = L. имя_игрока

AND G. дата = L. дата))

UNION

((SELECT *

FROM Игры G

WHERE G. колво_голов2 <>

(SELECT sum(L. колво_голов)

FROM Игроки P, Голы L

WHERE P. имя_команды = G. имя_команды2

AND P. имя = L. имя_игрока

НЕ нашли? Не то? Что вы ищете?

AND G. дата = L. дата)))

);

CREATE ASSERTION NoPhantomGoals CHECK

(NOT EXISTS

((SELECT *

FROM Голы L

WHERE L. дата <> ALL

(SELECT G. дата

FROM Игроки P, Игры G

WHERE P. имя = L. имя_игрока

AND G. имя_команды1 = P. имя_команды))

UNION

(SELECT *

FROM Голы L

WHERE L. дата <> ALL

(SELECT G. дата

FROM Игроки P, Игры G

WHERE P. имя = L. имя_игрока

AND G. имя_команды2 = P. имя_команды)))

);

2.

CREATE TABLE R (

a int PRIMARY KEY,

b int

);

CREATE TABLE S (

c int REFERNCES R(a),

d int

);

Инициалицазия: R = {(1,2)}, S = {(1,3)}

Последовательность SQL команд:

1. DELETE FROM R;

2. DELETE FROM S;

3. DELETE FROM R;

Стратегия выбрана по умолчанию (запрет) ON DELETE:

После команды

R

S

1

{(1,2)}

{(1,3)}

2

{(1,2)}

{}

3

{}

{}

ON DELETE SET NULL:

После команды

R

S

1

{}

{(NULL,3)}

2

{}

{}

3

{}

{}

ON DELETE CASCADE:

После команды

R

S

1

{}

{}

2

{}

{}

3

{}

{}

3.

a)

CREATE PROCEDURE ПРОДАЖА (

Игрок IN Игроки. имя%TYPE,

Команда1 IN Игроки. Имя_команды%TYPE,

Команда2 IN Игроки. Имя_команды%TYPE,

) AS

BEGIN

UPDATE Игроки

SET Имя_команды = команда2, оклад = оклад * 1.1

WHERE имя = Игрок AND имя_команда = команда1;

END;

b)

CREATE PROCEDURE Премиальные AS

CURSOR c IS

SELECT Имя_игрока, колво_голов

FROM Голы

WHERE колво_голов > 1;

ng c%ROWTYPE;

бонус Игроки. оклад%TYPE;

BEGIN

OPEN c;

LOOP

FETCH c INTO ng;

EXIT WHEN c%NOTFOUND;

бонус := 1000;

IF ng. колво_голов = 3 THEN

бонус := 10000;

ELSIF ng. колво_голов > 3 THEN

бонус := 100000;

END IF;

UPDATE Игроки

SET оклад = оклад + бонус

WHERE Имя = ng. имя_игрока;

END LOOP;

CLOSE c;

END;

4

1.  ALTER TABLE ПРОДАВЕЦ ADD Бонус NUMBER;

2.  UPDATE ЗАКАЗ SET Сумма=Сумма/31;

3.  DELETE FROM ПРОДАВЕЦ WHERE Имя IN (

SELECT Имя продавца

FROM ЗАКАЗ

GROUP BY Имя продавца

HAVING COUNT(*)<3);

4.  DELETE FROM ПОКУПАТЕЛЬ A WHERE NOT EXIST(

SELECT *

FROM ЗАКАЗ B

WHERE A. Имя=В. Имя покупателя);

5.

CREATE PROCEDURE ins_zakaz (

Имя_покупателя IN ПОКУПАТЕЛЬ. Имя%TYPE,

Имя_продавца IN ПРОДАВЕЦ. Имя %TYPE)

AS

nom_zakaz ЗАКАЗ. номер%TYPE;

BEGIN

SELECT MAX(номер) INTO nom_zakaz

FROM ЗАКАЗ;

INSERT INTO ЗАКАЗ

(номер, Имя_покупателя, Имя_продавца)

VALEUS (nom_zakaz+1, имя_покупателя, имя_продавца);

END;