Загрузка данных


/* =========================================================
   ПРАКТИЧЕСКАЯ РАБОТА №20
   База: user312_db
   Таблицы: student13, predmet13, ocenki13
   ========================================================= */


/* =========================================================
   1. СОЗДАЁМ ТАБЛИЦУ ПОСЕЩАЕМОСТЬ
   ========================================================= */

CREATE TABLE posesh13
(
    Kod_studenta INT NOT NULL,
    Uvazh_prop INT NOT NULL DEFAULT 0,
    Neuvazh_prop INT NOT NULL DEFAULT 0,

    PRIMARY KEY (Kod_studenta),

    FOREIGN KEY (Kod_studenta)
    REFERENCES student13(Kod_studenta)
);


/* Заполняем студентами */

INSERT INTO posesh13
(
    Kod_studenta,
    Uvazh_prop,
    Neuvazh_prop
)
SELECT
    Kod_studenta,
    0,
    0
FROM student13;


/* Проверяем */

SELECT *
FROM posesh13;


/* =========================================================
   2. ПОСЕЩАЕМОСТЬ В МАРТЕ
   ========================================================= */

/* Копируем таблицу */

SELECT *
INTO posesh_mart13
FROM posesh13;


/* Добавляем первичный ключ */

ALTER TABLE posesh_mart13
ADD PRIMARY KEY (Kod_studenta);


/* Связываем со студентами */

ALTER TABLE posesh_mart13
ADD FOREIGN KEY (Kod_studenta)
REFERENCES student13(Kod_studenta);


/* Заполняем пропуски */

UPDATE posesh_mart13
SET Uvazh_prop = Kod_studenta % 5,
    Neuvazh_prop = (Kod_studenta % 4) * 2 + 2;


/* Проверка */

SELECT *
FROM posesh_mart13;


/* =========================================================
   3. ПОСЕЩАЕМОСТЬ В АПРЕЛЕ
   ========================================================= */

SELECT *
INTO posesh_aprel13
FROM posesh13;


ALTER TABLE posesh_aprel13
ADD PRIMARY KEY (Kod_studenta);


ALTER TABLE posesh_aprel13
ADD FOREIGN KEY (Kod_studenta)
REFERENCES student13(Kod_studenta);


/* Заполняем пропуски */

UPDATE posesh_aprel13
SET Uvazh_prop = Kod_studenta % 4,
    Neuvazh_prop = (Kod_studenta % 5) * 2 + 2;


/* Проверка */

SELECT *
FROM posesh_aprel13;


/* =========================================================
   4. ПОСЕЩАЕМОСТЬ В МАЕ
   ========================================================= */

SELECT *
INTO posesh_may13
FROM posesh13;


ALTER TABLE posesh_may13
ADD PRIMARY KEY (Kod_studenta);


ALTER TABLE posesh_may13
ADD FOREIGN KEY (Kod_studenta)
REFERENCES student13(Kod_studenta);


/* Заполняем пропуски */

UPDATE posesh_may13
SET Uvazh_prop = Kod_studenta % 3,
    Neuvazh_prop = (Kod_studenta % 3) * 2 + 2;


/* Проверка */

SELECT *
FROM posesh_may13;


/* =========================================================
   5. ПЕРЕВЕСТИ НА СЛЕДУЮЩИЙ КУРС
   ========================================================= */

/* Смотрим студентов первого курса */

SELECT *
FROM student13
WHERE Kurs = 1;


/* Переводим на следующий курс */

UPDATE student13
SET Kurs = Kurs + 1
WHERE Kurs = 1;


/* Проверка */

SELECT *
FROM student13;


/* =========================================================
   6. ОТРАБОТКИ МАРТ
   ========================================================= */

/*
   Вместо Иванов напиши фамилию
   реального студента из student13
*/

UPDATE posesh_mart13
SET Neuvazh_prop = Neuvazh_prop - 2
WHERE Kod_studenta IN
(
    SELECT Kod_studenta
    FROM student13
    WHERE Familiya = N'Иванов'
)
AND Neuvazh_prop >= 2;


/* Проверка */

SELECT *
FROM posesh_mart13;


/* =========================================================
   7. ОТРАБОТКИ АПРЕЛЬ
   ========================================================= */

UPDATE posesh_aprel13
SET Neuvazh_prop = Neuvazh_prop - 2
WHERE Kod_studenta IN
(
    SELECT Kod_studenta
    FROM student13
    WHERE Familiya = N'Иванов'
)
AND Neuvazh_prop >= 2;


/* Проверка */

SELECT *
FROM posesh_aprel13;


/* =========================================================
   8. ОТРАБОТКИ МАЙ
   ========================================================= */

UPDATE posesh_may13
SET Neuvazh_prop = Neuvazh_prop - 2
WHERE Kod_studenta IN
(
    SELECT Kod_studenta
    FROM student13
    WHERE Familiya = N'Иванов'
)
AND Neuvazh_prop >= 2;


/* Проверка */

SELECT *
FROM posesh_may13;


/* =========================================================
   9. АКАДЕМИЧЕСКИЙ ОТПУСК
   НЕ ЗАПУСКАТЬ!
   ========================================================= */

/*

DELETE FROM student13
WHERE Familiya = N'Иванов';

*/


/*
   Этот запрос только сохранить:

   Академический отпуск.sql

   EXECUTE НЕ НАЖИМАТЬ.
*/


/* =========================================================
   10. НОВЫЕ ПРЕДМЕТЫ13
   ========================================================= */

/*
   ЭТУ ТАБЛИЦУ СОЗДАЁМ ВРУЧНУЮ!

   Tables
   -> ПКМ
   -> New
   -> Table

   Поля:

   Nazvanie       nvarchar(100)
   Prepodavatel   nvarchar(100)

   Сохраняем как:

   Новые предметы13

   Потом:
   ПКМ -> Edit Top 200 Rows

   Добавляем одну запись, например:

   Программирование
   Иванов И.И.
*/


/* =========================================================
   11. ДОБАВЛЯЕМ НОВЫЙ ПРЕДМЕТ В predmet13
   ========================================================= */

INSERT INTO predmet13
(
    Nazvanie,
    Prepodavatel
)
SELECT
    Nazvanie,
    Prepodavatel
FROM [Новые предметы13];


/* Проверка */

SELECT *
FROM predmet13;