
- •ПоСіБник до вивчення курсу «оргаНізація баз даних»
- •Лабораторна робота № 1 Інсталяція та інтерфейс Microsoft sql Server
- •Завдання для самостійної роботи
- •Лабораторна робота № 2 Розробка реляційної бази даних
- •Завдання
- •Лабораторна робота № 3 Створення та наповнення таблиць бд
- •Теоретична частина
- •Insert into persons values ('ivanov', 'ivan', 'ivanovich')
- •Insert into persons values ('petrov', 'petr', 'petrovich')
- •Insert into persons values ('sidorov', 'sidor', 'sidorovich')
- •Id_pers int not null references persons)
- •Insert into students values (9560679, @id_pr)
- •Insert into students values (3945794, @id_pr)
- •Insert into students values (4596956, @id_pr)
- •Id_subj int references subjects,
- •Id_mark int references marks)
- •Insert into stud_progress(id_stud, id_subj, id_mark) values
- •Insert into stud_progress(id_stud, id_subj, id_mark) values
- •Insert into stud_progress(id_stud, id_subj, id_mark) values
- •Завдання
- •Лабораторна робота № 4 Виконання запитів до бази даних
- •Теоретична частина
- •Into ім'я_таблиці
- •In (список_імен_стовпців_значень_груп)
- •In (список_імен_стовпців))
- •Intersect
- •Intersect
- •Лабораторна робота № 5 Ітеративна обробка результату запита
- •Теоретична частина
- •5.1. Declare
- •5.2. Open
- •5.3. Fetch
- •5.4. Close
- •5.5. Deallocate
- •5.6. Функції роботи з курсорами
- •5.7. Приклади використання курсорів
- •Завдання
- •Лабораторна робота № 6 Створення тригерів бд
- •Теоретична частина.
- •Видалення тригерів.
- •Дозвіл | заборона спрацьовування тригерів.
- •Приклади тригерів.
- •Instead of delete
- •Instead of insert, update, delete
- •Insert into table1(c1, c2) (select c1, c2 from inserted)
- •Завдання.
Insert into persons values ('ivanov', 'ivan', 'ivanovich')
Insert into persons values ('petrov', 'petr', 'petrovich')
Insert into persons values ('sidorov', 'sidor', 'sidorovich')
/*
За допомогою команди INSERT таблиця PERSONS заповнюється значеннями. Оскільки перше поле таблиці має властивість IDENTITY, то значення для нього генеруються автоматично, а тому не вказуються в списку значень після ключового слова VALUE. При цьому після ім'я таблиці не потрібно задавати список стовпців, для яких явно зазначені значення в команді INSERT.
Для виконання команди INSERT користувач повинен мати привілей dm_datawriter доступу до бази даних, у якій перебуває шукана таблиця.
*/
END
-ELSE
-- DROP TABLE PERSONS
/*
Якщо таблиця SUBJECTS існує, то вона знищується за допомогою команди DDL DROP TABLE, для виконання якої користувач повинен мати привілей dm_ddladmin доступу до бази даних, у якій перебуває таблиця. Цю команду не можна застосовувати для таблиць, на які йде посилання в обмеженні FOREIGN KEY ... REFERENCES (для видалення таких таблиць необхідно видалити обмеження FOREIGN KEY ... REFERENCES або таблицю, його утримуючу).
*/
if NOT exists(select TABLE_NAME from INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'MARKS')
/*
Перевіряється: чи існує вибірка з подання TABLES, власником якого є користувач INFORMATION_SCHEMA, полючи TABLE_NAME, значення якого повинне рівнятися MARKS. Для одержання потрібного значення поля TABLE_NAME використовується команда DML SELECT. Для її використання користувач повинен мати привілей dm_datareader доступу до бази даних, що містить шукану таблицю.
Зміст цього оператора мови TSQL полягає в перевірці того, чи існує таблиця з ім'ям MARKS. Якщо така таблиця не існує, то виконується її створення і заповнення даними.
*/
BEGIN
/*
Використовуються операторні дужки BEGIN...END, тому що, цілий блок команд повинен розглядатися як єдина група команд.
*/
create table MARKS (ID_MARK int PRIMARY KEY IDENTITY, MARK varchar(20))
/*
За допомогою команди DDL create table створюється таблиця з ім'ям MARKS, що має 2 поля:
id_mark - поле, що має цілочисельний тип даних int, що є первинним ключем (PRIMARY KEY - обмеження, що вимагає, щоб значення в стовпці завжди існували (NOT NULL) і були унікальними(UNIQUE); тільки один стовпець або набір стовпців може мати це обмеження) і властивість IDENTITY, що дозволяє генерувати значення поля автоматично (у цьому випадку, оскільки не зазначене початкове значення і збільшення, то будуть згенеровані значення, починаючи з 1 з кроком 1.
Це поле призначене для зберігання коду оцінки.
mark - поле, що має строковий тип даних змінної довжини з максимальною кількістю символів = 20 (varchar(20)).
Це поле призначене для зберігання позначення оцінки.
Для виконання команди CREATE TABLE користувач повинен мати привілей dm_ddladmin доступу до бази даних, у якій створюється таблиця.
*/
INSERT INTO MARKS VALUES('A')
INSERT INTO MARKS VALUES('BC')
INSERT INTO MARKS VALUES('DE')
INSERT INTO MARKS VALUES('FX')
/*
За допомогою команди INSERT таблиця MARKS заповнюється значеннями. Оскільки перше поле таблиці має властивість IDENTITY, то значення для нього генеруються автоматично, а тому не вказуються в списку значень після ключового слова VALUE. При цьому після імені таблиці не потрібно задавати список стовпців, для яких явно зазначені значення в команді INSERT.
Для виконання команди INSERT користувач повинен мати привілей dm_datawriter доступу до бази даних, у якій перебуває шукана таблиця.
*/
END
-ELSE
-- DROP TABLE MARKS
/*
Якщо таблиця MARKS існує, то вона знищується за допомогою команди DDL DROP TABLE, для виконання якої користувач повинен мати привілей dm_ddladmin доступу до бази даних, у якій перебуває таблиця. Цю команду не можна застосовувати для таблиць, на які йде посилання в обмеженні FOREIGN KEY ... REFERENCES (для видалення таких таблиць необхідно видалити обмеження FOREIGN KEY ... REFERENCES або таблицю, його утримуючу).
*/
if NOT exists(select TABLE_NAME from INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'STUDENTS')
/*
Перевіряється: чи існує вибірка з подання TABLES, власником якого є користувач INFORMATION_SCHEMA, поля TABLE_NAME, значення якого повинне рівнятися STUDENTS. Для одержання потрібного значення поля TABLE_NAME використовується команда DML SELECT. Для її використання користувач повинен мати привілей dm_datareader доступу до бази даних, що містить шукану таблицю.
Зміст цього оператора мови TSQL полягає в перевірці того, чи існує таблиця з ім'ям STUDENTS. Якщо така таблиця не існує, то виконується її створення і заповнення даними.
*/
BEGIN
/*
Використовуються операторные дужки BEGIN...END, тому що, цілий блок операторів повинен розглядатися як єдина група операторів.
*/
create table STUDENTS (ID_STUD int PRIMARY KEY,