
- •ПоСіБник до вивчення курсу «оргаНізація баз даних»
- •Лабораторна робота № 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)
- •Завдання.
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,