Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
мет_ОБД.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
1.92 Mб
Скачать

Id_pers int not null references persons)

/*

За допомогою команди DDL create table створюється таблиця з ім'ям STUDENTS, що має 2 поля:

id_stud - поле, що має цілочисельний тип даних int, що є первинним ключем (PRIMARY KEY - обмеження, що вимагає, щоб значення в стовпці завжди існували (NOT NULL) і були унікальними(UNIQUE); тільки один стовпець або набір стовпців може мати це обмеження).

Це поле призначене для зберігання номера залікової студента.

id_pers - поле, що має цілочисельний тип даних int і обмеження FOREIGN KEY ... REFERENCES (зовнішній ключ, при такому використанні обмеження ключові слова FOREIGN KEY і імена стовпців можуть бути опущені). Це обмеження встановлює зв'язок між стовпцем або групою стовпців поточної таблиці й стовпцем або групою стовпців референсної таблиці (вказується після ключового слова REFERENCES). Стовпець або група стовпців у референсній таблиці повинні мати обмеження PRIMARY KEY або UNIQUE.

Це поле призначене для зберігання назви досліджуваного предмета.

Для виконання команди CREATE TABLE користувач повинен мати привілей dm_ddladmin доступу до бази даних, у якій створюється таблиця.

*/

DECLARE

@ID_PR INT

/*

Оголошення змінної ID_PR, що має цілочисельний тип INT. Перед ім'ям змінної необхідно завжди використовувати символ @.

Змінну ID_PR можна використовувати в межах поточного пакета команд (тобто усередині BEGIN...END). Примусове виконання блоку команд за допомогою команди GO приведе до неможливості подальшого використання змінної ID_PR. За допомогою ключового слова DECLARE можна оголосити декілька змінних, причому кожне нове оголошення необхідно відокремлювати від попередніх за допомогою коми. Наприклад:

DECLARE

@A int,

@B money

*/

SET @ID_PR = (SELECT ID_PERS FROM PERSONS

WHERE SURNAME = 'IVANOV')

Insert into students values (9560679, @id_pr)

SET @ID_PR = (SELECT ID_PERS FROM PERSONS

WHERE SURNAME = 'PETROV')

Insert into students values (3945794, @id_pr)

SET @ID_PR = (SELECT ID_PERS FROM PERSONS

WHERE SURNAME = 'SIDOROV')

Insert into students values (4596956, @id_pr)

/*

Команда SET використовується для установки значення змінної ID_PR. Значенням є результат виконання команди DML SELECT, у результаті чого на підставі даних з таблиці PERSONS формується код особистості зазначеним прізвищем. Команда SET дозволяє встановити значення тільки для однієї змінної.

За допомогою команди INSERT таблиця STUDENTS заповнюється значеннями. Оскільки у жодного поля таблиці немає властивості IDENTITY, то після ключового слова VALUE вказуються значення для всіх стовпців таблиці.

Для виконання команди INSERT користувач повинен мати привілей dm_datawriter доступу до бази даних, у якій перебуває шукана таблиця.

*/

END

-ELSE

-- DROP TABLE STUDENTS

/*

Якщо таблиця STUDENTS існує, то вона знищується за допомогою команди DDL DROP TABLE, для виконання якої користувач повинен мати привілей dm_ddladmin доступу до бази даних, у якій перебуває таблиця. Цю команду не можна застосовувати для таблиць, на які йде посилання в обмеженні FOREIGN KEY ... REFERENCES (для видалення таких таблиць необхідно видалити обмеження FOREIGN KEY ... REFERENCES або таблицю, його утримуючу).

*/

GO

/*

Команда GO служить для примусового закінчення (виконання) пакета команд. Після її використання стає неможливим подальше використання описаних раніше змінних.

*/

if NOT exists(select TABLE_NAME from INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'STUD_PROGRESS')

/*

Перевіряється: чи існує вибірка з подання TABLES, власником якого є користувач INFORMATION_SCHEMA, поля TABLE_NAME, значення якого повинне рівнятися STUD_PROGRESS. Для одержання потрібного значення поля TABLE_NAME використовується команда DML SELECT. Для її використання користувач повинен мати привілей dm_datareader доступу до бази даних, що містить шукану таблицю.

Зміст цього оператора мови TSQL полягає в перевірці того, чи існує таблиця з ім'ям STUD_PROGRESS. Якщо така таблиця не існує, то виконується її створення і заповнення даними.

*/

BEGIN

/*

Використовуються операторні дужки BEGIN...END, тому що, цілий блок операторів повинен розглядатися як єдина група операторів.

*/

CREATE TABLE STUD_PROGRESS (ID_STUD INT REFERENCES STUDENTS,