/************************************
Chapter 4 Scripts
For MCITP SQL Server 2005 Database Administration All-in-One Exam Guide
By Darril Gibson
The scripts available here are the same ones used in each of the chapters. Ideally, you would type in the script and learn from any errors you might make. Occasionally, however, you may want a copy of the script to paste into the query window or into a batch file. If so, feel free to use these script files.
I strongly encourage you not to rely on these pre-typed scripts, but instead to get used to typing the T-SQL yourself. The more you do it (even if you’re just typing what you see in the book), the more comfortable you’ll get with T-SQL.
Some scripts in the book are intended to be run from the command line. They've been included where appropriate so that you can copy and paste them into Notepad and save them as a batch file (.bat). You can then run the batch file from the command prompt.
*************************************/
use adventureworks
go
select * from sales.salesorderheader
/************************************/
use adventureworks
go
select * from Sales.SalesOrderHeader
/************************************/
USE AdventureWorks;
GO
SELECT *
FROM Sales.SalesOrderHeader
/************************************/
USE AdventureWorks
SELECT Title, FirstName, LastName, EmailAddress
FROM Person.Contact
/************************************/
USE AdventureWorks
SELECT *
FROM Person.Contact
/************************************/
USE AdventureWorks
SELECT Title, FirstName, LastName, EmailAddress
FROM Person.Contact
/************************************/
USE AdventureWorks
SELECT Title, FirstName AS [First Name], LastName [Last Name], EmailAddress
FROM Person.Contact
/************************************/
SELECT Title, FirstName, LastName, EmailAddress
FROM Person.Contact
WHERE LastName = 'Stone'
/************************************/
SELECT Title, FirstName, LastName, EmailAddress
FROM Person.Contact
WHERE ModifiedDate >= '6/29/2004'
/************************************/
SELECT Title, FirstName, LastName, EmailAddress
FROM Person.Contact
WHERE LastName LIKE 'St%'
/************************************/
SELECT Title, FirstName, LastName, EmailAddress
FROM Person.Contact
WHERE LastName LIKE '%st_'
/************************************/
USE AdventureWorks
SELECT Title, FirstName, LastName, EmailAddress
FROM Person.Contact
WHERE UPPER(LastName) LIKE 'MC%'
/************************************/
SELECT Title, FirstName, LastName, EmailAddress
FROM Person.Contact
WHERE LastName = 'Smith' OR FirstName ='John'
/************************************/
SELECT ContactID, Title, FirstName, LastName, EmailAddress
FROM Person.Contact
WHERE ContactID BETWEEN 5 and 10
SELECT ContactID, Title, FirstName, LastName, EmailAddress
FROM Person.Contact
WHERE ContactID >=5 AND ContactID <=10
/************************************/
SELECT ContactID, Title, FirstName, LastName, EmailAddress
FROM Person.Contact
WHERE FirstName = 'Sandy' OR FirstName = 'Jay' OR
FirstName = 'Carla' OR FirstName = 'Ronald'
/************************************/
SELECT ContactID, Title, FirstName, LastName, EmailAddress
FROM Person.Contact
WHERE FirstName IN ('Sandy', 'Jay', 'Carla','Ronald')
/************************************/
SELECT ContactID, Title, FirstName, MiddleName, LastName, EmailAddress
FROM Person.Contact
WHERE MiddleName IS NULL
/************************************/
SELECT FirstName, LastName
FROM Person.Contact
WHERE EXISTS
(SELECT *
FROM HumanResources.Employee
WHERE Person.Contact.ContactID =
HumanResources.Employee.ContactID)
/************************************/
USE AdventureWorks
SELECT * FROM Production.Product
/************************************/
SELECT Name, ProductNumber, StandardCost, ListPrice
FROM Production.Product
/************************************/
USE AdventureWorks
SELECT Name, ProductNumber, StandardCost, ListPrice
FROM Production.Product
WHERE StandardCost > 0
/************************************/
SELECT Name, ProductNumber, StandardCost, ListPrice
FROM Production.Product
WHERE ProductNumber Like 'CN%'
/************************************/
SELECT Name, ProductNumber, StandardCost, ListPrice
FROM Production.Product
WHERE StandardCost > 0 AND StandardCost < 100
/************************************/
SELECT Name, ProductNumber, StandardCost, ListPrice
FROM Production.Product
WHERE StandardCost BETWEEN 0.00 AND 100
/************************************/
SELECT Name, ProductNumber, StandardCost, ListPrice
FROM Production.Product
WHERE EXISTS
(SELECT * FROM Production.Product
WHERE ProductNumber LIKE '[A-C]%')
/************************************/
SELECT TOP 10 Name, ProductNumber, StandardCost, ListPrice
FROM Production.Product
ORDER BY ListPrice DESC
/************************************/
SELECT TOP 10 PERCENT Name, ProductNumber, StandardCost, ListPrice
FROM Production.Product
ORDER BY ListPrice DESC
/************************************/
SELECT TOP 10 Name, ProductNumber, StandardCost, ListPrice
FROM Production.Product
ORDER BY Name
COLLATE SQL_Lithuanian_Cp1257_CS_AS
/************************************/
USE AdventureWorks
SELECT LastName, FirstName, Phone
FROM Person.Contact
ORDER BY LastName
/************************************/
USE AdventureWorks
SELECT LastName, FirstName, Phone
FROM Person.Contact
ORDER BY LastName DESC
/************************************/
USE AdventureWorks
SELECT TOP 5 CustomerID, SalesPersonID, TotalDue
FROM Sales.SalesOrderHeader
ORDER BY TotalDue DESC
/************************************/
USE AdventureWorks;
GO
SELECT SalesPersonID,
SUM(TotalDue) AS 'Total Sales'
FROM Sales.SalesOrderHeader
GROUP BY SalesPersonID
/************************************/
USE AdventureWorks;
GO
SELECT SalesPersonID,
SUM(TotalDue) AS 'Total Sales'
FROM Sales.SalesOrderHeader
GROUP BY SalesPersonID
HAVING SUM(TotalDue) > 1000000
/************************************/
USE AdventureWorks;
GO
SELECT SalesPersonID,
SUM(TotalDue) AS 'Total Sales'
FROM Sales.SalesOrderHeader
WHERE SalesPersonID IS NOT NULL
GROUP BY SalesPersonID
HAVING SUM(TotalDue) > 10000000
ORDER BY SalesPersonID
/************************************/
SELECT Name, ProductNumber, ProductModelID
FROM Production.Product
SELECT ProductModelID,Name
FROM Production.ProductModel
/************************************/
SELECT Production.Product.Name, Production.Product.ProductNumber,
Production.ProductModel.Name AS 'Model Name'
FROM Production.ProductModel
INNER JOIN Production.Product
ON Production.ProductModel.ProductModelID =
Production.Product.ProductModelID
/************************************/
SELECT TOP 5 CustomerID, SalesPersonID, TotalDue
FROM Sales.SalesOrderHeader
ORDER BY TotalDue DESC
/************************************/
USE AdventureWorks
/************************************/
SELECT SalesOrderID AS Invoice,
TotalDue [TotalDue],
OrderDate [Invoice Date]
FROM Sales.SalesOrderHeader
ORDER BY OrderDate
/************************************/
SELECT GetDate()
/************************************/
SELECT CONVERT(varchar,GetDate(),101)
/************************************/
SELECT CONVERT(varchar,GetDate(),102)
/************************************/
SELECT SalesOrderID AS Invoice,
TotalDue [Invoice Total],
CONVERT(varchar,OrderDate, 101)
FROM Sales.SalesOrderHeader
ORDER BY OrderDate
/************************************/
SELECT SalesOrderID AS Invoice,
TotalDue [Invoice Total],
CONVERT(varchar,OrderDate, 101) As OrderDate
FROM Sales.SalesOrderHeader
ORDER BY OrderDate
/************************************/
SELECT SalesOrderID AS Invoice,
TotalDue [Invoice Total],
CONVERT(varchar,OrderDate, 101) As [Order Date]
FROM Sales.SalesOrderHeader
ORDER BY OrderDate
/************************************/
SELECT Person.Contact.LastName AS [Last Name],
Person.Contact.FirstName AS [First Name],
Sales.SalesOrderHeader.CustomerID [Customer Number],
Sales.SalesOrderHeader.TotalDue [Order Total]
FROM Person.Contact INNER JOIN
Sales.SalesOrderHeader
ON Person.Contact.ContactID = Sales.SalesOrderHeader.ContactID INNER JOIN
Sales.SalesPerson
ON Sales.SalesOrderHeader.SalesPersonID = Sales.SalesPerson.SalesPersonID
/************************************/
SELECT pc.LastName AS [Last Name],
pc.FirstName AS [First Name],
soh.CustomerID [Customer Number],
soh.TotalDue [Order Total]
FROM Person.Contact AS pc INNER JOIN
Sales.SalesOrderHeader soh
ON pc.ContactID = soh.ContactID
INNER JOIN Sales.SalesPerson sp
ON soh.SalesPersonID = sp.SalesPersonID
/************************************/
USE AdventureWorks;
SELECT *
FROM Person.Contact
WHERE FirstName ='JoLynn' AND LastName = 'Dobney'
/************************************/
UPDATE Person.Contact
SET LastName = 'Adams'
WHERE ContactID = 1070
SELECT *
FROM Person.Contact
WHERE ContactID = 1070
/************************************/
INSERT INTO Person.Contact
(FirstName, LastName,PasswordHash, PasswordSalt)
VALUES ('Darril', 'Gibson', 'P@ssw0rd','P@$$S@lt')
/************************************/
SELECT * FROM Person.Contact
WHERE FirstName = 'Darril'
/************************************/
SELECT * FROM Person.Contact
WHERE FirstName = 'Darril'
/************************************/
DELETE FROM Person.Contact
WHERE FirstName = 'Darril'
/************************************/
SELECT *
FROM Purchasing.Vendor
/************************************/
USE AdventureWorks
INSERT INTO Purchasing.Vendor
(AccountNumber, Name,CreditRating)
VALUES('AcmeSupp101','AcmeSupplies',1)
/************************************/
USE AdventureWorks
SELECT *
FROM Purchasing.Vendor
WHERE AccountNumber = 'AcmeSupp101'
/************************************/
USE AdventureWorks
UPDATE Purchasing.Vendor
Set CreditRating = 3
WHERE AccountNumber = 'AcmeSupp101'
/************************************/
USE AdventureWorks
DELETE
FROM Purchasing.Vendor
WHERE AccountNumber = 'AcmeSupp101'
/************************************/
USE AdventureWorks
Go
DISABLE TRIGGER dVendor ON Purchasing.Vendor
GO
DELETE
FROM Purchasing.Vendor
WHERE AccountNumber = 'AcmeSupp101'
GO
ALTER TABLE Purchasing.Vendor ENABLE TRIGGER dVendor
/************************************/
BEGIN TRANSACTION
UPDATE Person.Contact
SET LastName = 'Dobney'
WHERE ContactID = 1070
COMMIT TRANSACTION
/************************************/
SELECT * FROM
Production.ProductInventory
WHERE ProductID = 1
/************************************/
USE AdventureWorks
BEGIN TRANSACTION
UPDATE Production.ProductInventory
SET Quantity = Quantity - 10
WHERE ProductID = 1 AND LocationID=1
UPDATE Production.ProductInventory
SET Quantity = Quantity + 10
WHERE ProductID = 1 AND LocationID=6
COMMIT TRANSACTION
/************************************/
SELECT * FROM
Production.ProductInventory
WHERE ProductID = 1
/************************************/
SELECT @@TRANCOUNT
/************************************/
BEGIN TRANSACTION
UPDATE Production.ProductInventory
SET Quantity = Quantity - 1000
WHERE ProductID = 1 AND LocationID=1
IF (SELECT Quantity
FROM Production.ProductInventory
WHERE ProductID =1 and LocationID=1) < 0
BEGIN
ROLLBACK TRANSACTION
RETURN
END
UPDATE Production.ProductInventory
SET Quantity = Quantity + 1000
WHERE ProductID = 1 AND LocationID=6
COMMIT TRANSACTION
/************************************/
USE AdventureWorks
SELECT ProductID, Name, ListPrice
FROM Production.Product
WHERE ProductID = 514
/************************************/
BEGIN TRAN
USE AdventureWorks
UPDATE Production.Product
SET ListPrice = ListPrice * 1.1
Where ProductID=514
SELECT ProductID, Name, ListPrice
FROM Production.Product
WHERE ProductID = 514
/************************************/
--Window 2
USE AdventureWorks
SELECT ProductID, Name, ListPrice
FROM Production.Product
WHERE ProductID = 514
/************************************/
ROLLBACK TRAN
SELECT ProductID, Name, ListPrice
FROM Production.Product
WHERE ProductID = 514
/************************************/
BEGIN TRAN
UPDATE Production.Product
SET ListPrice = ListPrice * 1.1
Where ProductID=514
SELECT ProductID, Name, ListPrice
FROM Production.Product
WHERE ProductID = 514
COMMIT TRAN
/************************************/
--Window 2
SELECT ProductID, Name, ListPrice
FROM Production.Product
WHERE ProductID = 514
/************************************/
UPDATE Production.Product
SET ListPrice = 133.24
Where ProductID=514
SELECT ProductID, Name, ListPrice
FROM Production.Product
WHERE ProductID = 514
/************************************/
ALTER TABLE
Production.ProductInventory
ADD CONSTRAINT CK_Quantity
CHECK (Quantity >= 0)
/************************************/
UPDATE Production.ProductInventory
SET Quantity = -1000
WHERE ProductID = 1 AND LocationID=1
/************************************/
BEGIN TRY
BEGIN TRANSACTION
UPDATE Production.ProductInventory
SET Quantity = Quantity - 1000
WHERE ProductID = 1 AND LocationID=1
UPDATE Production.ProductInventory
SET Quantity = Quantity + 1000
WHERE ProductID = 1 AND LocationID=6
COMMIT TRANSACTION
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION
SELECT 'Transaction rolled back'
END CATCH
/************************************/
SELECT * FROM Production.ProductInventory
WHERE ProductID = 1
/************************************/
DECLARE @VendorID int, @CreditRating int
SET @VendorID = 1
SET @CreditRating=50
USE AdventureWorks
UPDATE Purchasing.Vendor
SET CreditRating = @CreditRating
WHERE VendorID=@VendorID
/************************************/
DECLARE @VendorID int, @CreditRating int
SET @VendorID = 1
SET @CreditRating=50
BEGIN TRY
BEGIN TRANSACTION
USE AdventureWorks
UPDATE Purchasing.Vendor
SET CreditRating = @CreditRating
WHERE VendorID=@VendorID
COMMIT TRANSACTION
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION
IF @CreditRating > 5 OR @CreditRating < 1
SELECT 'Credit Rating must be between 1 and 5.'
END CATCH
/************************************/
SELECT *
FROM Purchasing.Vendor
/************************************/
SET @CreditRating=3
/************************************/
CREATE DATABASE XMLTest
/************************************/
USE XMLTest
CREATE TABLE Project
(
ProjectID int IDENTITY(1,1) NOT NULL,
ProjectData xml NOT NULL
CONSTRAINT [PK_Project_ProjectID] PRIMARY KEY CLUSTERED
(ProjectID)
)
/************************************/
--Insert untyped data
USE XMLTest
DECLARE @xmlInsert XML
SET @xmlInsert =
'
Employee Database
1994-06-10abc
2008-05-05def
Darril Gibson
Create database for employees
'
INSERT INTO Project
VALUES (@xmlInsert)
/************************************/
USE XMLTest
DELETE FROM Project
/************************************/
USE XMLTest
CREATE XML SCHEMA COLLECTION dbo.xmlProjectSchemaCollection AS
'
'
/************************************/
USE XMLTest
SELECT xml_schema_namespace('dbo','xmlProjectSchemaCollection')
/************************************/
USE XMLTest
ALTER TABLE Project
ALTER COLUMN ProjectData XML (dbo.xmlProjectSchemaCollection)
/************************************/
USE XMLTest
DECLARE @xmlInsert XML
SET @xmlInsert =
'
101
Employee Database
2007-06-30Z
2008-05-29Z
Darril Gibson
Create database for employees
'
INSERT INTO Project
VALUES (@xmlInsert)
/************************************/
SELECT * FROM Project
/************************************/
USE XMLTest
SELECT ProjectData.query('project/projectname')
FROM Project
Where ProjectID=1
/************************************/
DECLARE @myXML xml
SET @myXML =
'
'
DECLARE @ProjName varchar(50)
SET @ProjName = @myXML.value('(/Root/Project/@ProjectName)[2]', 'nvarchar(50)' )
SELECT @ProjName
/************************************/
SELECT Author, Title, Price, PublishDate
FROM Books WITH (INDEX(1))
WHERE PublishDate > '2001'