commit 38c08028f11f3c5f89b692e6c6d36ffc9701da5d Author: sivo5555 Date: Wed Oct 26 00:38:28 2022 +0300 Загрузил скрипты лаб 1-7 diff --git a/Lab1/Task1/SQLQuery1.sql b/Lab1/Task1/SQLQuery1.sql new file mode 100644 index 0000000..9d96c96 --- /dev/null +++ b/Lab1/Task1/SQLQuery1.sql @@ -0,0 +1 @@ +SELECT title, title_no FROM library.dbo.title; \ No newline at end of file diff --git a/Lab1/Task1/SQLQuery2.sql b/Lab1/Task1/SQLQuery2.sql new file mode 100644 index 0000000..3da9284 --- /dev/null +++ b/Lab1/Task1/SQLQuery2.sql @@ -0,0 +1 @@ +SELECT title, title_no FROM library.dbo.title WHERE title_no = 10; \ No newline at end of file diff --git a/Lab1/Task1/SQLQuery3.sql b/Lab1/Task1/SQLQuery3.sql new file mode 100644 index 0000000..e983812 --- /dev/null +++ b/Lab1/Task1/SQLQuery3.sql @@ -0,0 +1 @@ +SELECT member_no, fine_assessed FROM library.dbo.loanhist WHERE fine_assessed BETWEEN 8.00 AND 9.00; \ No newline at end of file diff --git a/Lab1/Task1/SQLQuery4.sql b/Lab1/Task1/SQLQuery4.sql new file mode 100644 index 0000000..a861695 --- /dev/null +++ b/Lab1/Task1/SQLQuery4.sql @@ -0,0 +1 @@ +SELECT author, title_no FROM library.dbo.title WHERE author IN ('Charles Dickens', 'Jane Austen'); \ No newline at end of file diff --git a/Lab1/Task1/SQLQuery5.sql b/Lab1/Task1/SQLQuery5.sql new file mode 100644 index 0000000..e1d5374 --- /dev/null +++ b/Lab1/Task1/SQLQuery5.sql @@ -0,0 +1 @@ +SELECT title, title_no FROM library.dbo.title WHERE title LIKE ('%Adventures%'); \ No newline at end of file diff --git a/Lab1/Task1/SQLQuery6.sql b/Lab1/Task1/SQLQuery6.sql new file mode 100644 index 0000000..04a2189 --- /dev/null +++ b/Lab1/Task1/SQLQuery6.sql @@ -0,0 +1 @@ +SELECT member_no, fine_assessed, fine_paid FROM library.dbo.loanhist WHERE fine_paid IS NULL; \ No newline at end of file diff --git a/Lab1/Task2/SQLQuery10.sql b/Lab1/Task2/SQLQuery10.sql new file mode 100644 index 0000000..942429e --- /dev/null +++ b/Lab1/Task2/SQLQuery10.sql @@ -0,0 +1,3 @@ +--SELECT title, title_no FROM library.dbo.title; +--SELECT CONCAT('The title is: ', title, ', title number: ', title_no, '.') FROM library.dbo.title; +SELECT CONCAT('The title is: ', title, ', title number: ', CONVERT(char, title_no), '.') FROM library.dbo.title; \ No newline at end of file diff --git a/Lab1/Task2/SQLQuery7.sql b/Lab1/Task2/SQLQuery7.sql new file mode 100644 index 0000000..14a1f81 --- /dev/null +++ b/Lab1/Task2/SQLQuery7.sql @@ -0,0 +1,2 @@ +SELECT DISTINCT city, state FROM library.dbo.adult; +SELECT * FROM library.dbo.title ORDER BY title; \ No newline at end of file diff --git a/Lab1/Task2/SQLQuery8.sql b/Lab1/Task2/SQLQuery8.sql new file mode 100644 index 0000000..b69b8ca --- /dev/null +++ b/Lab1/Task2/SQLQuery8.sql @@ -0,0 +1,2 @@ +--SELECT member_no, isbn, fine_assessed FROM library.dbo.loanhist WHERE fine_assessed IS NOT NULL; +SELECT member_no, isbn, fine_assessed*2 AS double_fine FROM library.dbo.loanhist WHERE fine_assessed IS NOT NULL; \ No newline at end of file diff --git a/Lab1/Task2/SQLQuery9.sql b/Lab1/Task2/SQLQuery9.sql new file mode 100644 index 0000000..c736c1d --- /dev/null +++ b/Lab1/Task2/SQLQuery9.sql @@ -0,0 +1,3 @@ +--SELECT CONCAT(firstname, ' ', middleinitial, ' ', lastname) FROM library.dbo.member WHERE lastname = 'Anderson'; +--SELECT CONCAT(firstname, ' ', middleinitial, ' ', lastname) AS email_name FROM library.dbo.member WHERE lastname = 'Anderson'; +SELECT LOWER(CONCAT(firstname, ' ', middleinitial, ' ', SUBSTRING(lastname, 1, 2))) AS email_name FROM library.dbo.member WHERE lastname = 'Anderson'; \ No newline at end of file diff --git a/Lab1/Task3/SQLQuery11.sql b/Lab1/Task3/SQLQuery11.sql new file mode 100644 index 0000000..488afa5 --- /dev/null +++ b/Lab1/Task3/SQLQuery11.sql @@ -0,0 +1,2 @@ +sp_who; +SELECT @@spid; \ No newline at end of file diff --git a/Lab1/Task3/SQLQuery12.sql b/Lab1/Task3/SQLQuery12.sql new file mode 100644 index 0000000..785fd29 --- /dev/null +++ b/Lab1/Task3/SQLQuery12.sql @@ -0,0 +1 @@ +EXEC sp_who 51; \ No newline at end of file diff --git a/Lab1/Task3/SQLQuery13.sql b/Lab1/Task3/SQLQuery13.sql new file mode 100644 index 0000000..88a441a --- /dev/null +++ b/Lab1/Task3/SQLQuery13.sql @@ -0,0 +1,3 @@ +SELECT @@version; +SELECT USER_NAME(), DB_NAME(), @@servername; +USE library SELECT * FROM information_schema.tables WHERE table_type = 'base table'; \ No newline at end of file diff --git a/Lab2/Task1.sql b/Lab2/Task1.sql new file mode 100644 index 0000000..d143721 --- /dev/null +++ b/Lab2/Task1.sql @@ -0,0 +1,3 @@ +SELECT SalesPersonID, Bonus FROM AdventureWorks.Sales.SalesPerson ORDER BY Bonus DESC; +SELECT TOP 4 SalesPersonID, Bonus FROM AdventureWorks.Sales.SalesPerson ORDER BY Bonus DESC; +SELECT TOP 4 WITH TIES SalesPersonID, Bonus FROM AdventureWorks.Sales.SalesPerson ORDER BY Bonus DESC; \ No newline at end of file diff --git a/Lab2/Task2_1.sql b/Lab2/Task2_1.sql new file mode 100644 index 0000000..bc812de --- /dev/null +++ b/Lab2/Task2_1.sql @@ -0,0 +1,2 @@ +SELECT COUNT(*) FROM AdventureWorks.HumanResources.Employee; +SELECT COUNT(*) FROM AdventureWorks.HumanResources.Employee WHERE ManagerID IS NOT NULL; \ No newline at end of file diff --git a/Lab2/Task2_2.sql b/Lab2/Task2_2.sql new file mode 100644 index 0000000..906afde --- /dev/null +++ b/Lab2/Task2_2.sql @@ -0,0 +1,3 @@ +SELECT SUM(OrderQty), ProductID FROM AdventureWorks.Sales.SalesOrderDetail GROUP BY ProductID; +SELECT SUM(OrderQty), ProductID FROM AdventureWorks.Sales.SalesOrderDetail GROUP BY ProductID ORDER BY SUM(OrderQty); +SELECT SUM(OrderQty), ProductID FROM AdventureWorks.Sales.SalesOrderDetail GROUP BY ProductID HAVING SUM(OrderQty) >= 2000 ORDER BY SUM(OrderQty); \ No newline at end of file diff --git a/Lab2/Task2_3.sql b/Lab2/Task2_3.sql new file mode 100644 index 0000000..d184e3c --- /dev/null +++ b/Lab2/Task2_3.sql @@ -0,0 +1,2 @@ +SELECT ProductID, SpecialOfferID, AVG(UnitPrice), SUM(LineTotal) FROM AdventureWorks.Sales.SalesOrderDetail GROUP BY ProductID, SpecialOfferID; +SELECT ProductID, SpecialOfferID, AVG(UnitPrice) AS avg_unit_price, SUM(LineTotal) AS sum_line_total FROM AdventureWorks.Sales.SalesOrderDetail GROUP BY ProductID, SpecialOfferID ORDER BY ProductId ASC; \ No newline at end of file diff --git a/Lab2/Task3_1.sql b/Lab2/Task3_1.sql new file mode 100644 index 0000000..b0a5177 --- /dev/null +++ b/Lab2/Task3_1.sql @@ -0,0 +1,3 @@ +SELECT SalesQuota, SUM(SalesYTD) AS TotalSalesYTD FROM AdventureWorks.Sales.SalesPerson GROUP BY SalesQuota; +SELECT SalesQuota, SUM(SalesYTD) AS TotalSalesYTD FROM AdventureWorks.Sales.SalesPerson GROUP BY ROLLUP(SalesQuota); +SELECT SalesQuota, SUM(SalesYTD) AS TotalSalesYTD FROM AdventureWorks.Sales.SalesPerson GROUP BY GROUPING SETS(ROLLUP (SalesQuota)); diff --git a/Lab2/Task3_2.sql b/Lab2/Task3_2.sql new file mode 100644 index 0000000..929d84c --- /dev/null +++ b/Lab2/Task3_2.sql @@ -0,0 +1,2 @@ +SELECT ProductID, SUM(LineTotal) FROM AdventureWorks.Sales.SalesOrderDetail WHERE UnitPrice < 5.00 GROUP BY ProductID ORDER BY ProductID; +SELECT ProductID, OrderQty, SUM(LineTotal) FROM AdventureWorks.Sales.SalesOrderDetail WHERE UnitPrice < 5.00 GROUP BY CUBE(ProductID, OrderQty) ORDER BY ProductID; \ No newline at end of file diff --git a/Lab3/Task1.sql b/Lab3/Task1.sql new file mode 100644 index 0000000..2a03670 --- /dev/null +++ b/Lab3/Task1.sql @@ -0,0 +1,4 @@ +SELECT CONCAT(firstname, ' ', middleinitial, ' ', lastname) as name, street, city, state, zip +FROM library.dbo.member +JOIN library.dbo.adult +ON library.dbo.member.member_no = library.dbo.adult.member_no; \ No newline at end of file diff --git a/Lab3/Task2.sql b/Lab3/Task2.sql new file mode 100644 index 0000000..f14b0d8 --- /dev/null +++ b/Lab3/Task2.sql @@ -0,0 +1,7 @@ +SELECT library.dbo.copy.isbn as 'isbn', library.dbo.copy.copy_no as 'copy', library.dbo.copy.on_loan as 'loan', library.dbo.title.title as 'title', +library.dbo.item.translation as 'translation', library.dbo.item.cover as 'cover' +FROM library.dbo.title +JOIN (library.dbo.copy JOIN library.dbo.item ON item.isbn = library.dbo.copy.isbn) +ON library.dbo.title.title_no = library.dbo.copy.title_no +WHERE library.dbo.item.isbn IN (1, 500, 1000) +ORDER BY isbn; \ No newline at end of file diff --git a/Lab3/Task3.sql b/Lab3/Task3.sql new file mode 100644 index 0000000..5016ce3 --- /dev/null +++ b/Lab3/Task3.sql @@ -0,0 +1,3 @@ +SELECT CONCAT(lastname,' ',middleinitial,' ',firstname) as name, isbn, log_date +FROM library.dbo.member LEFT OUTER JOIN library.dbo.reservation ON library.dbo.member.member_no = library.dbo.reservation.member_no +WHERE library.dbo.member.member_no IN (250, 341, 1675) ORDER BY library.dbo.member.member_no; \ No newline at end of file diff --git a/Lab3/Task4.sql b/Lab3/Task4.sql new file mode 100644 index 0000000..b821077 --- /dev/null +++ b/Lab3/Task4.sql @@ -0,0 +1,13 @@ +SELECT library.dbo.adult.member_no, COUNT(library.dbo.juvenile.member_no) as numkids +FROM library.dbo.adult +JOIN library.dbo.juvenile ON library.dbo.juvenile.adult_member_no = library.dbo.adult.member_no +WHERE state = 'AZ' +GROUP BY library.dbo.adult.member_no +HAVING COUNT(juvenile.member_no) > 2 +UNION +SELECT library.dbo.adult.member_no, COUNT(library.dbo.juvenile.member_no) as numkids +FROM library.dbo.adult +JOIN library.dbo.juvenile ON library.dbo.juvenile.adult_member_no = library.dbo.adult.member_no +WHERE state = 'CA' +GROUP BY library.dbo.adult.member_no +HAVING COUNT(juvenile.member_no) > 3; \ No newline at end of file diff --git a/Lab4/Task1.sql b/Lab4/Task1.sql new file mode 100644 index 0000000..d6e6a65 --- /dev/null +++ b/Lab4/Task1.sql @@ -0,0 +1,10 @@ +INSERT INTO library.dbo.item (isbn, title_no, translation, cover, loanable) VALUES (10001, 8, 'ENGLISH', 'HARDBACK', 'Y'); +INSERT INTO library.dbo.item (isbn, title_no, translation, cover, loanable) VALUES (10101, 8, 'ENGLISH', 'SOFTBACK', 'Y'); +SELECT * FROM library.dbo.item ORDER BY isbn DESC; + +INSERT INTO library.dbo.copy (isbn, copy_no, title_no, on_loan) VALUES (10001, 1, 8, 'N'); +SELECT * FROM library.dbo.copy ORDER BY isbn DESC; + +SELECT TOP 2 translation +FROM library.dbo.item +ORDER BY isbn DESC; \ No newline at end of file diff --git a/Lab4/Task2.sql b/Lab4/Task2.sql new file mode 100644 index 0000000..9d438c4 --- /dev/null +++ b/Lab4/Task2.sql @@ -0,0 +1,11 @@ +USE library; +EXEC sp_help @objname = 'library.dbo.title' + +INSERT INTO library.dbo.title (title, author, synopsis) VALUES ('The Art of Lawn Tennis', 'William T. Tilden', DEFAULT); +DELETE FROM library.dbo.title WHERE title_no = 54; +SELECT * FROM library.dbo.title ORDER BY title_no DESC; +SELECT TOP 1 title_no FROM library.dbo.title ORDER BY title_no DESC; +SELECT * FROM library.dbo.title WHERE title_no = (SELECT TOP 1 title_no FROM library.dbo.title ORDER BY title_no DESC) ORDER BY title_no DESC; + +INSERT INTO library.dbo.title (title, author) VALUES ('Riders of the Purple Sage', 'Zane Grey'); +SELECT * FROM library.dbo.title ORDER BY title_no DESC; \ No newline at end of file diff --git a/Lab4/Task3.sql b/Lab4/Task3.sql new file mode 100644 index 0000000..cd80277 --- /dev/null +++ b/Lab4/Task3.sql @@ -0,0 +1,9 @@ +USE library +CREATE TABLE sample1 +( +Cust_id int NOT NULL IDENTITY(100, 5), +Name char(10) NULL +); + +INSERT INTO sample1 DEFAULT VALUES; +SELECT * FROM sample1; \ No newline at end of file diff --git a/Lab4/Task4.sql b/Lab4/Task4.sql new file mode 100644 index 0000000..713efe7 --- /dev/null +++ b/Lab4/Task4.sql @@ -0,0 +1,2 @@ +SELECT * FROM library.dbo.item WHERE isbn = 10101; +DELETE FROM library.dbo.item WHERE isbn = 10101; \ No newline at end of file diff --git a/Lab4/Task5.sql b/Lab4/Task5.sql new file mode 100644 index 0000000..9c8f6ab --- /dev/null +++ b/Lab4/Task5.sql @@ -0,0 +1,3 @@ +UPDATE library.dbo.member SET lastname = 'Sivochub' WHERE member_no = 507; +SELECT * FROM library.dbo.member WHERE member_no = 507; +-- : 507 Rudd Katie A NULL \ No newline at end of file diff --git a/Lab4/Task6.sql b/Lab4/Task6.sql new file mode 100644 index 0000000..78d1b54 --- /dev/null +++ b/Lab4/Task6.sql @@ -0,0 +1,58 @@ +/* +USE library +BEGIN TRANSACTION + + SET IDENTITY_INSERT member ON + INSERT member (member_no, lastname, firstname, middleinitial) + VALUES (16101, 'Walters', 'B.', 'L') + SET IDENTITY_INSERT member OFF + + INSERT juvenile + VALUES (16101, 1, DATEADD(YY, -18, DATEADD(DD, -1, GETDATE()))) -- 18 + +COMMIT TRANSACTION; +*/ + +/* +SELECT juvenile.member_no, street, city, state, zip, phone_no, DATEADD(YY, 1, GETDATE()) +FROM library.dbo.juvenile +JOIN library.dbo.adult +ON juvenile.adult_member_no = adult.member_no +WHERE birth_date <= DATEADD(YY, -18, GETDATE()) +ORDER BY member_no; +*/ + +/* +INSERT INTO library.dbo.adult +SELECT juvenile.member_no, street, city, state, zip, phone_no, DATEADD(YY, 1, GETDATE()) +FROM library.dbo.juvenile +JOIN library.dbo.adult +ON juvenile.adult_member_no = adult.member_no +WHERE birth_date <= DATEADD(YY, -18, GETDATE()) +ORDER BY member_no; + +SELECT * FROM library.dbo.adult WHERE member_no = 16101; +*/ + +/* +SELECT juvenile.member_no, adult.member_no +FROM library.dbo.juvenile +JOIN library.dbo.adult +ON juvenile.member_no = adult.member_no; +*/ + +/* +DELETE FROM library.dbo.juvenile +WHERE juvenile.member_no IN +( +SELECT juvenile.member_no, adult.member_no +FROM library.dbo.juvenile +JOIN library.dbo.adult +ON juvenile.member_no = adult.member_no +); +*/ + + +/* +SELECT * FROM library.dbo.juvenile WHERE member_no = 16101; +*/ \ No newline at end of file diff --git a/Lab5/Task1.sql b/Lab5/Task1.sql new file mode 100644 index 0000000..5b69ab2 --- /dev/null +++ b/Lab5/Task1.sql @@ -0,0 +1,19 @@ +SELECT adult_member_no, No_of_children, expr_date +FROM +( + SELECT adult_member_no, COUNT(member_no) AS No_of_children + FROM library.dbo.juvenile + GROUP BY adult_member_no + HAVING COUNT(member_no) > 3 +) AS nested, library.dbo.adult +WHERE adult_member_no = member_no; + +SELECT adult_member_no, No_of_children, expr_date +FROM +( + SELECT adult_member_no, COUNT(member_no) AS No_of_children + FROM library.dbo.juvenile + GROUP BY adult_member_no + HAVING COUNT(member_no) > 3 +) AS nested JOIN library.dbo.adult +ON adult_member_no = member_no; \ No newline at end of file diff --git a/Lab5/Task2.sql b/Lab5/Task2.sql new file mode 100644 index 0000000..4dbd47e --- /dev/null +++ b/Lab5/Task2.sql @@ -0,0 +1,18 @@ +SELECT DISTINCT firstname, lastname, isbn, fine_paid +FROM library.dbo.member +JOIN library.dbo.loanhist ON member.member_no = loanhist.member_no +WHERE fine_paid IN (SELECT MAX(fine_paid) FROM library.dbo.loanhist) +ORDER BY isbn; + +SELECT title, title.title_no, reservation.isbn, COUNT(reservation.isbn) AS 'Total reserved' +FROM library.dbo.title +JOIN library.dbo.loan ON title.title_no = loan.title_no +JOIN library.dbo.reservation ON loan.isbn = reservation.isbn +WHERE title.title_no IN +( + SELECT title_no FROM library.dbo.loan + JOIN library.dbo.reservation ON loan.isbn = reservation.isbn + GROUP BY title_no + HAVING COUNT(reservation.isbn) < 5 OR COUNT(reservation.isbn) > 50 +) +GROUP BY title, title.title_no, reservation.isbn \ No newline at end of file diff --git a/Lab5/Task3.sql b/Lab5/Task3.sql new file mode 100644 index 0000000..429df3b --- /dev/null +++ b/Lab5/Task3.sql @@ -0,0 +1,8 @@ +SELECT member_no, lastname +FROM library.dbo.member +WHERE +( + SELECT SUM(fine_assessed) + FROM library.dbo.loanhist + WHERE member.member_no = loanhist.member_no +) > 5; \ No newline at end of file diff --git a/Lab6/Task1.sql b/Lab6/Task1.sql new file mode 100644 index 0000000..ac0e00a --- /dev/null +++ b/Lab6/Task1.sql @@ -0,0 +1,10 @@ +USE AdventureWorks +CREATE TABLE HumanResources.JobCandidateHistory +( + JobCandidateID int NOT NULL UNIQUE, + Resume xml NULL, + Rating int NOT NULL CONSTRAINT CK_JobCandidateHistory_Rating CHECK(Rating BETWEEN 1 AND 10) CONSTRAINT DF_JobCandidateHistory_Rating DEFAULT 5, + RejectDate datetime NOT NULL, + ContactID int NULL, + FOREIGN KEY (ContactID) REFERENCES Person.Contact(ContactID) +); \ No newline at end of file diff --git a/Lab6/Task1_1.sql b/Lab6/Task1_1.sql new file mode 100644 index 0000000..14451be --- /dev/null +++ b/Lab6/Task1_1.sql @@ -0,0 +1,16 @@ +-- This should fail +USE AdventureWorks +TRUNCATE TABLE [HumanResources].[JobCandidateHistory] +GO +USE AdventureWorks +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(1, +' + +' +,-1 +,GETDATE() +,1) +TRUNCATE TABLE [HumanResources].[JobCandidateHistory] +GO \ No newline at end of file diff --git a/Lab6/Task1_2.sql b/Lab6/Task1_2.sql new file mode 100644 index 0000000..ea0825a --- /dev/null +++ b/Lab6/Task1_2.sql @@ -0,0 +1,13 @@ +-- This should succeed +USE AdventureWorks +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(1, +' + +' +,6 +,GETDATE() +,1) +TRUNCATE TABLE [HumanResources].[JobCandidateHistory] +GO \ No newline at end of file diff --git a/Lab6/Task2.sql b/Lab6/Task2.sql new file mode 100644 index 0000000..dffd87b --- /dev/null +++ b/Lab6/Task2.sql @@ -0,0 +1,10 @@ +USE AdventureWorks +GO +ALTER TABLE HumanResources.JobCandidateHistory +NOCHECK CONSTRAINT CK_JobCandidateHistory_Rating +GO +/* +ALTER TABLE HumanResources.JobCandidateHistory +NOCHECK CONSTRAINT DF_JobCandidateHistory_Rating +GO +*/ \ No newline at end of file diff --git a/Lab6/Task2_1.sql b/Lab6/Task2_1.sql new file mode 100644 index 0000000..dfafd63 --- /dev/null +++ b/Lab6/Task2_1.sql @@ -0,0 +1,404 @@ +USE [AdventureWorks] + +-- Insert the test data +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(1, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(2, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(3, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(4, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(5, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(6, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(7, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(8, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(9, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(10, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(11, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(12, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(13, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(14, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(15, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(16, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(17, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(18, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(19, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(20, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(21, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(22, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(23, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(24, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(25, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(26, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(27, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(28, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(29, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(30, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(31, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(32, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(33, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(34, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(35, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(36, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(37, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(38, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(39, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(40, +' + +' +,6 +,GETDATE() +,1) +GO +TRUNCATE TABLE HumanResources.JobCandidateHistory diff --git a/Lab6/Task2_2.sql b/Lab6/Task2_2.sql new file mode 100644 index 0000000..dccbce0 --- /dev/null +++ b/Lab6/Task2_2.sql @@ -0,0 +1,11 @@ +USE AdventureWorks +GO +ALTER TABLE HumanResources.JobCandidateHistory +CHECK CONSTRAINT CK_JobCandidateHistory_Rating +GO +/* +ALTER TABLE HumanResources.JobCandidateHistory +CHECK CONSTRAINT DF_JobCandidateHistory_Rating +GO +*/ +INSERT INTO HumanResources.JobCandidateHistory (Rating) VALUES (20); -- \ No newline at end of file diff --git a/Lab7/Task1and2.sql b/Lab7/Task1and2.sql new file mode 100644 index 0000000..ca6d538 --- /dev/null +++ b/Lab7/Task1and2.sql @@ -0,0 +1,43 @@ +USE AdventureWorks; + +-- 1 +GO +CREATE VIEW HumanResources.vEmployeeDetails +WITH SCHEMABINDING AS +SELECT +e.EmployeeID +,c.Title +,c.FirstName +,c.MiddleName +,c.LastName +,c.Suffix +,e.Title AS JobTitle +,c.Phone +,c.EmailAddress +,c.EmailPromotion +,a.AddressLine1 +,a.AddressLine2 +,a.City +,sp.Name AS StateProvinceName +,a.PostalCode +,cr.Name AS CountryRegionName +,c.AdditionalContactInfo +FROM HumanResources.Employee e +INNER JOIN Person.Contact c +ON c.ContactID = e.ContactID +INNER JOIN HumanResources.EmployeeAddress ea +ON e.EmployeeID = ea.EmployeeID +INNER JOIN Person.Address a +ON ea.AddressID = a.AddressID +INNER JOIN Person.StateProvince sp +ON sp.StateProvinceID = a.StateProvinceID +INNER JOIN Person.CountryRegion cr +ON cr.CountryRegionCode = sp.CountryRegionCode; +GO + +SELECT * FROM HumanResources.vEmployeeDetails; + +-- 2 +GO +CREATE UNIQUE CLUSTERED INDEX IX_vEmployeeDetails +ON HumanResources.vEmployeeDetails (EmployeeID); \ No newline at end of file diff --git a/Lab7/Task3.sql b/Lab7/Task3.sql new file mode 100644 index 0000000..2ec2522 --- /dev/null +++ b/Lab7/Task3.sql @@ -0,0 +1,6 @@ +USE AdventureWorks; + +GO +EXEC sp_depends @objname="HumanResources.vEmployeeDetails"; +GO +EXEC sp_helptext @objname="HumanResources.vEmployeeDetails"; \ No newline at end of file diff --git a/Бекапы бд/AdventureWorks.bak b/Бекапы бд/AdventureWorks.bak new file mode 100644 index 0000000..10dd2d4 Binary files /dev/null and b/Бекапы бд/AdventureWorks.bak differ diff --git a/Бекапы бд/Library.bak b/Бекапы бд/Library.bak new file mode 100644 index 0000000..98d12a0 Binary files /dev/null and b/Бекапы бд/Library.bak differ diff --git a/Скрипты и задания/CreateSchemas.sql b/Скрипты и задания/CreateSchemas.sql new file mode 100644 index 0000000..a0f5b16 --- /dev/null +++ b/Скрипты и задания/CreateSchemas.sql @@ -0,0 +1,35 @@ +USE AW_Marketing +GO + +CREATE SCHEMA Promotions +CREATE TABLE ProductDiscounts +(ProductID int PRIMARY KEY, + Discount decimal, + Description nvarchar(50)) +ON CurrentData +GO + +CREATE SCHEMA Sponsorship +CREATE TABLE SponsorshipDeals +(SponsorshipID int IDENTITY PRIMARY KEY, + Description nvarchar(200)) +ON CurrentData +GO + +CREATE SCHEMA PastPromotions +CREATE TABLE ProductDiscounts +(ProductID int, + Discount decimal, + Description nvarchar(50)) +ON ArchivedData +GO + +CREATE SCHEMA PastSponsorship +CREATE TABLE SponsorshipDeals +(SponsorshipID int, + Description nvarchar(200)) +ON ArchivedData +GO + + + diff --git a/Скрипты и задания/CreateTables.sql b/Скрипты и задания/CreateTables.sql new file mode 100644 index 0000000..def0618 --- /dev/null +++ b/Скрипты и задания/CreateTables.sql @@ -0,0 +1,34 @@ +USE AW_Marketing +GO + +-- +IF EXISTS (SELECT * FROM sys.tables t + JOIN sys.schemas s ON t.schema_id = s.schema_id + WHERE t.[Name] = 'SpecialOffers' + AND s.[Name] = 'Promotions') + DROP TABLE Promotions.SpecialOffers + +IF EXISTS (SELECT * FROM sys.tables t + JOIN sys.schemas s ON t.schema_id = s.schema_id + WHERE t.[Name] = 'SpecialOffers' + AND s.[Name] = 'PastPromotions') + DROP TABLE PastPromotions.SpecialOffers +GO + + +-- . filegroup +CREATE TABLE Promotions.SpecialOffers +(OfferID int IDENTITY PRIMARY KEY, + Description nvarchar(200), + StartDate datetime, + EndDate datetime, + DiscountPercent decimal) + +-- ArchivedData filegroup +CREATE TABLE PastPromotions.SpecialOffers +(OfferID int IDENTITY PRIMARY KEY, + Description nvarchar(200), + StartDate datetime, + EndDate datetime, + DiscountPercent decimal) +ON ArchivedData \ No newline at end of file diff --git a/Скрипты и задания/DeliveryList.xml b/Скрипты и задания/DeliveryList.xml new file mode 100644 index 0000000..f95adba --- /dev/null +++ b/Скрипты и задания/DeliveryList.xml @@ -0,0 +1,11 @@ + + + + Steve Schmidt +
6126 North Sixth Street, Rockhampton
+
+ + Tony Lopez +
6445 Cashew Street, Rockhampton
+
+
\ No newline at end of file diff --git a/Скрипты и задания/ExecutionContext.sql b/Скрипты и задания/ExecutionContext.sql new file mode 100644 index 0000000..c4da87e --- /dev/null +++ b/Скрипты и задания/ExecutionContext.sql @@ -0,0 +1,47 @@ + +USE AdventureWorks +GO + +-- Create Sales.GetCurrencyRate + + +-- Test Sales.GetCurrencyRate + +-- Sales.GetCurrencyDiscountedProducts +CREATE FUNCTION Sales.GetCurrencyDiscountedProducts + (@CurrencyCode nchar(3)) +RETURNS @tbl_products TABLE + (ProductID int, + Name nvarchar(50), + ListPrice money, + CurrencyPrice money, + DiscountDescription nvarchar(255), + DiscountPercentage smallmoney, + DiscountAmount money, + DiscountedPrice money, + DiscountedCurrencyPrice money) +AS +BEGIN + DECLARE @CurrencyRate float + SET @CurrencyRate = Sales.GetCurrencyRate(@CurrencyCode) + + INSERT @tbl_products + SELECT P.ProductID, + P.Name, + P.ListPrice, + P.ListPrice * @CurrencyRate, + SO.Description, + SO.DiscountPct, + P.ListPrice * SO.DiscountPct, + P.ListPrice - P.ListPrice * SO.DiscountPct, + (P.ListPrice - P.ListPrice * SO.DiscountPct) * @CurrencyRate + FROM Sales.SpecialOfferProduct SOP INNER JOIN + Sales.SpecialOffer SO ON SOP.SpecialOfferID = SO.SpecialOfferID INNER JOIN + Production.Product P ON SOP.ProductID = P.ProductID + WHERE (SO.DiscountPct > 0) AND GetDate() BETWEEN StartDate AND EndDate + ORDER BY ProductID + RETURN +END +GO + +-- Test Sales.GetCurrencyDiscountedProducts diff --git a/Скрипты и задания/FORXML.sql b/Скрипты и задания/FORXML.sql new file mode 100644 index 0000000..4989705 Binary files /dev/null and b/Скрипты и задания/FORXML.sql differ diff --git a/Скрипты и задания/InitializeData.sql b/Скрипты и задания/InitializeData.sql new file mode 100644 index 0000000..cb316aa --- /dev/null +++ b/Скрипты и задания/InitializeData.sql @@ -0,0 +1,26 @@ +Use Master + +-- Setup user for execution context +IF NOT EXISTS (SELECT * FROM sys.syslogins WHERE name = 'MIAMI\Adam') + CREATE LOGIN [MIAMI\Adam] + FROM WINDOWS + WITH DEFAULT_DATABASE = AdventureWorks +GO + +Use AdventureWorks + +IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = 'Adam' AND type = 'U') + CREATE USER Adam FOR LOGIN [MIAMI\Adam] +GO + +-- Setup data +UPDATE Sales.SpecialOffer +SET StartDate = DateAdd(day, -1, GetDate()), + EndDate = DateAdd(day, 27, GetDate()) +WHERE SpecialOfferId IN (1,3,5,7,9,11,13,15) + +UPDATE Sales.SpecialOffer +SET StartDate = DateAdd(day, 28, GetDate()), + EndDate = DateAdd(month, 2, GetDate()) +WHERE SpecialOfferId IN (2,4,6,8,10,12,14,16) +GO diff --git a/Скрипты и задания/InsertTestData.sql b/Скрипты и задания/InsertTestData.sql new file mode 100644 index 0000000..dfafd63 --- /dev/null +++ b/Скрипты и задания/InsertTestData.sql @@ -0,0 +1,404 @@ +USE [AdventureWorks] + +-- Insert the test data +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(1, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(2, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(3, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(4, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(5, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(6, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(7, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(8, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(9, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(10, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(11, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(12, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(13, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(14, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(15, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(16, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(17, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(18, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(19, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(20, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(21, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(22, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(23, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(24, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(25, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(26, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(27, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(28, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(29, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(30, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(31, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(32, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(33, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(34, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(35, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(36, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(37, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(38, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(39, +' + +' +,6 +,GETDATE() +,1) +GO +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(40, +' + +' +,6 +,GETDATE() +,1) +GO +TRUNCATE TABLE HumanResources.JobCandidateHistory diff --git a/Скрипты и задания/Lock1.sql b/Скрипты и задания/Lock1.sql new file mode 100644 index 0000000..edd7228 --- /dev/null +++ b/Скрипты и задания/Lock1.sql @@ -0,0 +1,16 @@ +/* +Update a record in the Person.Contact table in the AdventureWorks database. +*/ + +USE AdventureWorks + +BEGIN TRANSACTION + UPDATE Person.Contact + SET FirstName = 'Fran' + WHERE ContactID = 6 +-- For the purpose of the exercise, COMMIT TRANASACTION or ROLLBACK TRANSACTION are not used. + +SELECT @@spid AS 'spid' +-- Use the SPID to identify the connection when using sys.dm_tran_locks. + +ROLLBACK TRANSACTION \ No newline at end of file diff --git a/Скрипты и задания/Lock2.sql b/Скрипты и задания/Lock2.sql new file mode 100644 index 0000000..6ffe61a --- /dev/null +++ b/Скрипты и задания/Lock2.sql @@ -0,0 +1,19 @@ +/* +Read and update a record in the Person.Contact table in the AdventureWorks database. +*/ + +USE AdventureWorks + +SET TRANSACTION ISOLATION LEVEL SERIALIZABLE + +SET lock_timeout 5000 + +BEGIN TRANSACTION + SELECT * FROM Person.Contact WHERE ContactID = 10 + UPDATE Person.Contact SET FirstName = 'Frances' WHERE ContactID = 6 +-- For the purpose of the exercise, COMMIT TRANSACTION or ROLLBACK TRANSACTION are not used. + +SELECT @@spid AS 'SPID' +-- Use the SPID to identify the connection when using sp_lock. + +-- ROLLBACK TRANSACTION \ No newline at end of file diff --git a/Скрипты и задания/LockList.sql b/Скрипты и задания/LockList.sql new file mode 100644 index 0000000..cff4d4e --- /dev/null +++ b/Скрипты и задания/LockList.sql @@ -0,0 +1,2 @@ +SELECT resource_type, request_mode,request_type, request_status, request_session_id +FROM sys.dm_tran_locks diff --git a/Скрипты и задания/OPENXML.sql b/Скрипты и задания/OPENXML.sql new file mode 100644 index 0000000..7d21ad7 Binary files /dev/null and b/Скрипты и задания/OPENXML.sql differ diff --git a/Скрипты и задания/TestConstraints.sql b/Скрипты и задания/TestConstraints.sql new file mode 100644 index 0000000..2a3f9ef --- /dev/null +++ b/Скрипты и задания/TestConstraints.sql @@ -0,0 +1,30 @@ +-- This should fail +USE AdventureWorks +TRUNCATE TABLE [HumanResources].[JobCandidateHistory] +GO +USE AdventureWorks +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(1, +' + +' +,-1 +,GETDATE() +,1) +TRUNCATE TABLE [HumanResources].[JobCandidateHistory] +GO + +-- This should succeed +USE AdventureWorks +INSERT INTO [HumanResources].[JobCandidateHistory] +VALUES +(1, +' + +' +,6 +,GETDATE() +,1) +TRUNCATE TABLE [HumanResources].[JobCandidateHistory] +GO \ No newline at end of file diff --git a/Скрипты и задания/Tran1.sql b/Скрипты и задания/Tran1.sql new file mode 100644 index 0000000..ff6f3c8 --- /dev/null +++ b/Скрипты и задания/Tran1.sql @@ -0,0 +1,20 @@ +/* +Starts a transaction to read the record of +Linda Gonzales and update her first name. +Second select shows the uncommitted update. +@@trancount shows the number of open transactions. +*/ + +USE AdventureWorks + +-- START TRANSACTION HERE +BEGIN TRANSACTION + SELECT @@trancount AS 'Transaction Count' + SELECT FirstName, MiddleName, LastName FROM Person.Contact WHERE ContactID = 342 + UPDATE Person.Contact SET FirstName = 'Lin' WHERE ContactID = 342 +-- END TRANSACTION HERE +COMMIT TRANSACTION + +SELECT FirstName, MiddleName, LastName FROM Person.Contact WHERE ContactID = 342 +SELECT @@trancount AS 'Transaction Count' + diff --git a/Скрипты и задания/Tran2.sql b/Скрипты и задания/Tran2.sql new file mode 100644 index 0000000..806e1b7 --- /dev/null +++ b/Скрипты и задания/Tran2.sql @@ -0,0 +1,21 @@ +/* +Starts a transaction to read the record of +Dominic Gonzalez and update his first name. +Second SELECT shows the uncommitted update. +@@trancount showS the number of open transactions. +Then the transaction is rolled back and the record read again. +*/ + +USE AdventureWorks + +BEGIN TRANSACTION + SELECT @@trancount AS 'Transaction Count' + SELECT FirstName, MiddleName, LastName FROM Person.Contact WHERE ContactID = 7454 + UPDATE Person.Contact SET FirstName = 'Dom' WHERE ContactID = 7454 + SELECT FirstName, MiddleName, LastName FROM Person.Contact WHERE ContactID = 7454 + SELECT @@trancount AS 'Transaction Count' +-- END TRANSACTION HERE +ROLLBACK TRANSACTION + + SELECT FirstName, MiddleName, LastName FROM Person.Contact WHERE ContactID = 7454 + SELECT @@trancount AS 'Transaction Count'