Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки України
Національний університет “Львівська політехніка”
Кафедра інформаційних
систем та мереж
Звіт
до лабораторної роботи №5
Виконання теоретико-множинних операцій реляційної алгебри засобами SQL
Львів - 2008
Мета роботи: Розробити SQL запити для виконання операцій реляційної алгебри: об’єднання, перетину, різниці, Декартового добутку.
Хід роботи
Для простоти заповнимо таблиці tblUsergroup і tblUser фіктивними значеннями.
tblUsergroup:
UsergroupID UsergroupName UsergroupDescription
----------- -------------------------------------------------- --------------------------
1 Admin Administrator
2 User Just a user
tblUser:
UserID UserLogin UserName UserUsergroupID
----------- -------------------- -------------------- ---------------
1 aaa a 1
2 bbb b 2
3 ccc c 1
4 ddd d 2
5 eee e 1
6 fff f 2
7 ggg g 1
8 hhh h 2
Створимо на основі останньої дві нові:
DECLARE @tblUser1 AS TABLE (UserID int, UserLogin nvarchar(20), UserName nvarchar(20), UserUsergroupID int)
INSERT INTO @tblUser1 SELECT UserID, UserLogin, UserName, UserUsergroupID FROM tblUser WHERE UserID < 6
DECLARE @tblUser2 AS TABLE (UserID int, UserLogin nvarchar(20), UserName nvarchar(20), UserUsergroupID int)
INSERT INTO @tblUser2 SELECT UserID, UserLogin, UserName, UserUsergroupID FROM tblUser WHERE UserID > 3
@tblUser1:
UserID UserLogin UserName tblUser2
----------- -------------------- -------------------- -----------
1 aaa a 1
2 bbb b 2
3 ccc c 1
4 ddd d 2
5 eee e 1
@tblUser2:
UserID UserLogin UserName tblUser1
----------- -------------------- -------------------- -----------
4 ddd d 2
5 eee e 1
6 fff f 2
7 ggg g 1
8 hhh h 2
Запит для виконання об‘ єднання:
SELECT * FROM @tblUser1
UNION
SELECT * FROM @tblUser2
Результат:
UserID UserLogin UserName UserUsergroupID
----------- -------------------- -------------------- ---------------
1 aaa a 1
2 bbb b 2
3 ccc c 1
4 ddd d 2
5 eee e 1
6 fff f 2
7 ggg g 1
8 hhh h 2
Запит для виконання перетину:
SELECT * FROM @tblUser1
WHERE UserID IN (SELECT UserID FROM @tblUser2)
Результат:
UserID UserLogin UserName UserUsergroupID
----------- -------------------- -------------------- ---------------
4 ddd d 2
5 eee e 1
Запит для виконання різниці:
SELECT * FROM @tblUser1
WHERE UserID NOT IN (SELECT UserID FROM @tblUser2
Результат:
UserID UserLogin UserName UserUsergroupID
----------- -------------------- -------------------- ---------------
1 aaa a 1
2 bbb b 2
3 ccc c 1
Запит для виконання Декартового добутку:
SELECT * FROM @tblUser1, @tblUser2
Результат:
UserID UserLogin UserName UserUsergroupID UserID UserLogin UserName UserUsergroupID
----------- -------------------- -------------------- --------------- ----------- -------------------- -------------------- ---------------
1 aaa a 1 4 ddd d 2
2 bbb b 2 4 ddd d 2
3 ccc c 1 4 ddd d 2
4 ddd d 2 4 ddd d 2
5 eee e 1 4 ddd d 2
1 aaa a 1 5 eee e 1
2 bbb b 2 5 eee e 1
3 ccc c 1 5 eee e 1
4 ddd d 2 5 eee e 1
5 eee e 1 5 eee e 1
1 aaa a 1 6 fff f 2
2 bbb b 2 6 fff f 2
3 ccc c 1 6 fff f 2
4 ddd d 2 6 fff f 2
5 eee e 1 6 fff f 2
1 aaa a 1 7 ggg g 1
2 bbb b 2 7 ggg g 1
3 ccc c 1 7 ggg g 1
Висновок: на цій лабораторній роботі було розглянуто операції реляційної алгебри та
проведено об’єднання, перетин, різницю та декартовий добуток таблиць.