Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Sabelnikov_lab3_2_4_DataBases.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.99 Mб
Скачать
  1. Оператор select и самосоединение select, который реализует самосоединение:

-- FIND PAIRS OF TESTCASES WITH EQUAL AMOUNT OF QUESTIONS --

SELECT t1.Name as 'Name of t1', t2.Name as 'Name of t2', t1.Questions_Amount

FROM dbo.TestCase t1, dbo.TestCase t2

WHERE t1.Questions_Amount = t2.Questions_Amount AND t1.Name < t2.Name

ORDER BY LEN(t1.Name) ASC, LEN(t2.Name) ASC;

-- The same but we're searching for triples (not pairs) with the same creator --

SELECT t1.Name as 'Name of t1', t2.Name as 'Name of t2', t3.Name as 'Name of t2', a.Full_Name

FROM dbo.TestCase t1, dbo.TestCase t2, dbo.TestCase t3, dbo.Account a

WHERE t1.Id_Creator = t2.Id_Creator AND t2.Id_Creator = t3.Id_Creator AND t1.Id < t2.Id AND t2.Id < t3.Id AND t1.Id_Creator = a.Id

ORDER BY LEN(t1.Name) ASC, LEN(t2.Name) ASC, LEN(t3.Name) ASC;

-- FIND PAIRS OF QUESTIONS WITH THE SAME RIGHT ANSWERS, AND SHOW WHO CREATED THEM --

SELECT q1.Name as 'Name of t1', 'Author of t1' = a1.Full_Name, q2.Name as 'Name of t2', 'Author of t2' = a2.Full_Name, q1.Right_Answers

FROM dbo.Question q1, dbo.Question q2, dbo.TestCase t1, dbo.TestCase t2, dbo.Account a1, dbo.Account a2

WHERE q1.Right_Answers = q2.Right_Answers AND q1.Id < q2.Id AND q1.Id_Test = t1.Id AND q2.Id_Test = t2.Id AND t1.Id_Creator = a1.Id AND t2.Id_Creator = a2.Id

ORDER BY LEN(q1.Name) ASC, LEN(q2.Name) ASC;

  1. Оператор select и join Добавим несколько записей в таблицу, нарушая целостность базы данных:

-- ADD SOME ADDITIONAL DATA

ALTER TABLE dbo.Account NOCHECK CONSTRAINT all;

ALTER TABLE dbo.Question NOCHECK CONSTRAINT all;

ALTER TABLE dbo.[Session] NOCHECK CONSTRAINT all;

ALTER TABLE dbo.TestCase NOCHECK CONSTRAINT all;

ALTER TABLE dbo.[Type] NOCHECK CONSTRAINT all;

INSERT INTO [dbo].[Account]

([Nick_Name],[Full_Name],[Account_Type],[Notes])

VALUES

('eliza2','Her Majesty Elizabeth II',99,'A Queen of GB');

INSERT INTO [dbo].[Type]

([Name],[Description],[Rights])

VALUES

('CoolGuy','The coolest guy on the district ever',77);

ALTER TABLE dbo.Account CHECK CONSTRAINT all;

ALTER TABLE dbo.Question CHECK CONSTRAINT all;

ALTER TABLE dbo.[Session] CHECK CONSTRAINT all;

ALTER TABLE dbo.TestCase CHECK CONSTRAINT all;

ALTER TABLE dbo.[Type] CHECK CONSTRAINT all;

SELECT * FROM dbo.Account;

SELECT * FROM dbo.[Type];

Select, реализующий внутреннее и внешнее (левое, правое и полное) объединение таблиц:

-- INNER JOIN --

SELECT a.Id, a.Nick_Name, a.Full_Name, t.Name, t.[Description]

FROM dbo.Account a JOIN dbo.[Type] t ON a.Account_Type = t.Id;

-- LEFT OUTER JOIN --

SELECT a.Id, a.Nick_Name, a.Full_Name, t.Name, t.[Description]

FROM dbo.Account a LEFT JOIN dbo.[Type] t ON a.Account_Type = t.Id;

-- RIGHT OUTER JOIN --

SELECT a.Id, a.Nick_Name, a.Full_Name, t.Name, t.[Description]

FROM dbo.Account a RIGHT JOIN dbo.[Type] t ON a.Account_Type = t.Id;

-- FULL OUTER JOIN --

SELECT a.Id, a.Nick_Name, a.Full_Name, t.Name, t.[Description]

FROM dbo.Account a FULL JOIN dbo.[Type] t ON a.Account_Type = t.Id;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]