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


/* =========================================================
   ПРАКТИЧЕСКАЯ РАБОТА №20
   База: user312_db

   Основные таблицы:
   student13
   predmeti13
   ocenki13
   ========================================================= */


/* =========================================================
   ЗАДАНИЕ 2
   ПОСЕЩАЕМОСТЬ ЗА МАРТ, АПРЕЛЬ И МАЙ

   Kod_studenta:
   - НЕ PRIMARY KEY
   - FOREIGN KEY
   - UNIQUE для связи 1 к 1

   В каждой таблице по 15 записей.
   ========================================================= */


/* =========================================================
   МАРТ
   ========================================================= */

CREATE TABLE posesh_mart13
(
    Kod_studenta INT NOT NULL UNIQUE,
    Uvazh_prop INT NOT NULL,
    Neuvazh_prop INT NOT NULL,

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


/* Заполняем 15 записей */

INSERT INTO posesh_mart13
(
    Kod_studenta,
    Uvazh_prop,
    Neuvazh_prop
)
SELECT TOP 15
    Kod_studenta,
    Kod_studenta % 5,
    (Kod_studenta % 4) * 2
FROM student13
ORDER BY Kod_studenta;


/* Показываем март */

SELECT *
FROM posesh_mart13;



/* =========================================================
   АПРЕЛЬ
   ========================================================= */

CREATE TABLE posesh_aprel13
(
    Kod_studenta INT NOT NULL UNIQUE,
    Uvazh_prop INT NOT NULL,
    Neuvazh_prop INT NOT NULL,

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


/* Заполняем 15 записей другими значениями */

INSERT INTO posesh_aprel13
(
    Kod_studenta,
    Uvazh_prop,
    Neuvazh_prop
)
SELECT TOP 15
    Kod_studenta,
    (Kod_studenta * 2) % 7,
    (Kod_studenta * 3) % 10
FROM student13
ORDER BY Kod_studenta;


/* Показываем апрель */

SELECT *
FROM posesh_aprel13;



/* =========================================================
   МАЙ
   ========================================================= */

CREATE TABLE posesh_may13
(
    Kod_studenta INT NOT NULL UNIQUE,
    Uvazh_prop INT NOT NULL,
    Neuvazh_prop INT NOT NULL,

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


/* Заполняем 15 записей другими значениями */

INSERT INTO posesh_may13
(
    Kod_studenta,
    Uvazh_prop,
    Neuvazh_prop
)
SELECT TOP 15
    Kod_studenta,
    (Kod_studenta * 3) % 8,
    (Kod_studenta * 4) % 11
FROM student13
ORDER BY Kod_studenta;


/* Показываем май */

SELECT *
FROM posesh_may13;



/* =========================================================
   ПОКАЗАТЬ ВСЕ 3 МЕСЯЦА
   ========================================================= */

SELECT * FROM posesh_mart13;
SELECT * FROM posesh_aprel13;
SELECT * FROM posesh_may13;



/* =========================================================
   ЗАДАНИЕ 2.1
   ПЕРЕВЕСТИ 3 СТУДЕНТОВ С 1 КУРСА НА 2 КУРС

   Показываем ДО и ПОСЛЕ.
   ========================================================= */


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

SELECT TOP 3 Kod_studenta
INTO #Perevod
FROM student13
WHERE Kurs = 1
ORDER BY Kod_studenta;


/* =========================================================
   ДО
   ========================================================= */

SELECT s.*
FROM student13 AS s
INNER JOIN #Perevod AS p
    ON s.Kod_studenta = p.Kod_studenta;


/* =========================================================
   ОБНОВЛЕНИЕ
   ========================================================= */

UPDATE s
SET Kurs = Kurs + 1
FROM student13 AS s
INNER JOIN #Perevod AS p
    ON s.Kod_studenta = p.Kod_studenta;


/* =========================================================
   ПОСЛЕ
   ========================================================= */

SELECT s.*
FROM student13 AS s
INNER JOIN #Perevod AS p
    ON s.Kod_studenta = p.Kod_studenta;


/* Удаляем временную таблицу */

DROP TABLE #Perevod;



/* =========================================================
   ЗАДАНИЕ 2.2
   СТУДЕНТ ОТРАБОТАЛ 2 ЧАСА
   НЕУВАЖИТЕЛЬНЫХ ПРОПУСКОВ

   Берём любой один месяц — АПРЕЛЬ.
   Выбираем студента, у которого минимум 2 часа.

   Показываем ДО и ПОСЛЕ.
   ========================================================= */


/* Выбираем одного студента */

DECLARE @Kod_studenta INT;

SELECT TOP 1
    @Kod_studenta = Kod_studenta
FROM posesh_aprel13
WHERE Neuvazh_prop >= 2
ORDER BY Kod_studenta;


/* =========================================================
   ДО ОТРАБОТКИ
   ========================================================= */

SELECT
    s.*,
    p.Uvazh_prop,
    p.Neuvazh_prop
FROM student13 AS s
INNER JOIN posesh_aprel13 AS p
    ON s.Kod_studenta = p.Kod_studenta
WHERE s.Kod_studenta = @Kod_studenta;


/* =========================================================
   ОТРАБОТАЛ 2 ЧАСА
   ========================================================= */

UPDATE posesh_aprel13
SET Neuvazh_prop = Neuvazh_prop - 2
WHERE Kod_studenta = @Kod_studenta;


/* =========================================================
   ПОСЛЕ ОТРАБОТКИ
   ========================================================= */

SELECT
    s.*,
    p.Uvazh_prop,
    p.Neuvazh_prop
FROM student13 AS s
INNER JOIN posesh_aprel13 AS p
    ON s.Kod_studenta = p.Kod_studenta
WHERE s.Kod_studenta = @Kod_studenta;



/* =========================================================
   ЗАДАНИЕ 3
   АКАДЕМИЧЕСКИЙ ОТПУСК

   ТОЛЬКО НАПИСАТЬ И СФОТКАТЬ.
   НЕ ВЫПОЛНЯТЬ!
   ========================================================= */


/*

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

*/


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

   ЭТОТ DELETE НЕ ЗАПУСКАТЬ!
*/


/* =========================================================
   ЗАДАНИЕ 4
   СОЗДАЁМ ТАБЛИЦУ НОВЫХ ПРЕДМЕТОВ
   НА ОСНОВЕ predmeti13
   ========================================================= */


/* Создаём такую же структуру */

SELECT TOP 0 *
INTO novie_predmeti13
FROM predmeti13;


/* Проверяем новую таблицу */

SELECT *
FROM novie_predmeti13;


/* =========================================================
   ТЕПЕРЬ В novie_predmeti13 НУЖНО ДОБАВИТЬ
   ОДНУ ДИСЦИПЛИНУ И ОДНОГО ПРЕПОДАВАТЕЛЯ.

   ЭТУ ЗАПИСЬ ВНЕСТИ ВРУЧНУЮ:

   Tables
   -> novie_predmeti13
   -> ПКМ
   -> Edit Top 200 Rows

   Например:

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

   Если в predmeti13 есть Kod_predmeta,
   его тоже нужно заполнить уникальным кодом.
   ========================================================= */


/* =========================================================
   ПОСЛЕ ЗАПОЛНЕНИЯ novie_predmeti13
   ПОКАЗЫВАЕМ НОВЫЙ ПРЕДМЕТ
   ========================================================= */

SELECT *
FROM novie_predmeti13;


/* =========================================================
   ДОБАВЛЕНИЕ НОВОГО ПРЕДМЕТА В predmeti13

   ЭТОТ INSERT ПОКА НЕ ЗАПУСКАЙ,
   ЕСЛИ ЕЩЁ НЕ ЗАПОЛНИЛ novie_predmeti13.
   ========================================================= */


/*

INSERT INTO predmeti13
SELECT *
FROM novie_predmeti13;

*/


/* Показываем существующую таблицу предметов */

SELECT *
FROM predmeti13;