Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

SQL Action Commands: Murach, Chapter 7

Download as pdf or txt
Download as pdf or txt
You are on page 1of 22

SQL Action Commands

Murach, Chapter 7

DML: Data Manipulation Language


Select Insert Update Delete

Viewing the data

Maintaining the data

Insert Syntax

(external source)

INSERT INTO table ( field list ) VALUES ( value list )

Insert Syntax

(internal source)

INSERT INTO table ( field list ) SELECT STATEMENT

New Employee
INSERT INTO tblEmployee ( EID, FirstName, LastName, JobTitle, AnnualSalary, Active, Supervisor, Password, SSN, Gender, DOB, Phone) VALUES ( 'JM7021', 'Jennifer', 'MacDougal', 'Assistant Manager', 97500, 'Y', 'C123', 'JennyMac', '458-03-7182', 'F', '11/28/1969', '(512) 555-2341')

Referential integrity and validation rules automatically checked. Secondary indices automatically updated.

New Employee

(Parents, then Children)

INSERT INTO tblFamily ( FID, FirstName, LastName, EID, Relationship, Gender, DOB ) VALUES ( 'FW9473', 'Mark', 'MacDougal', 'JM7021', 'Spouse', 'M', '6/10/1969' ) INSERT INTO tblFamily ( FID, FirstName, LastName, EID, Relationship, Gender, DOB ) VALUES ( 'FJ3911', 'Allison', 'MacDougal', 'JM7021', 'Child', 'F', '3/5/1997' ) Referential integrity and validation rules automatically checked. Secondary indices automatically updated.

Worked Last Year

(physical table)

INSERT INTO tblWorkedIn2010 ( EID, FullName ) SELECT EID, FirstName + ' ' + LastName FROM tblEmployee WHERE EID IN ( SELECT Distinct EID FROM tblPaycheck WHERE YEAR(PayDate) = 2010 )

Assumes tblWorkedIn2010 has already been CREATEd

Worked Last Year

(virtual table)

CREATE VIEW qryWorkedIn2010 AS SELECT EID, FirstName + ' ' + LastName AS FullName FROM tblEmployee WHERE EID IN ( SELECT Distinct EID FROM tblPaycheck WHERE YEAR(PayDate) = 2010 )

Worked Last Year

(virtual table)

CREATE VIEW qryWorkedLastYear AS SELECT EID, FirstName + ' ' + LastName AS FullName FROM tblEmployee WHERE EID IN ( SELECT Distinct EID FROM tblPaycheck WHERE YEAR(PayDate) = YEAR(GetDate()) - 1 )

Update Syntax
UPDATE table SET replacement statements WHERE row condition

Note: The SET and WHERE clauses can include subqueries

New Address
UPDATE SET tblEmployee Street = '6423 Fulton Blvd', Apt = Null, City = 'Austin', State = 'Tx', Zip = '78751', Phone = '(512) 555-2017' EID = 'JM7021'

WHERE

Referential integrity and validation rules automatically checked. Secondary indices automatically updated.

Promote Employees
UPDATE SET WHERE AND AND tblEmployee JobTitle = 'Senior Sales Representative', AnnualSalary = ROUND(1.03 * AnnualSalary, 2) Active = 'Y' JobTitle = 'Sales Representative' AnnualSalary >= 52000

Referential integrity and validation rules automatically checked. Secondary indices automatically updated.

10 Year Longevity Pay Raise


UPDATE SET WHERE AND tblEmployee AnnualSalary = ROUND(1.015 * AnnualSalary, 2) Active = 'Y' EID IN ( SELECT Distinct EID FROM tblPaycheck WHERE PayDate <= '3/21/2001' )

Assumes today is March 21, 2011

10 Year Longevity Pay Raise


UPDATE SET WHERE AND tblEmployee AnnualSalary = ROUND(1.015 * AnnualSalary, 2) Active = 'Y' EID IN ( SELECT Distinct EID FROM tblPaycheck WHERE PayDate <= DateAdd(year, -10, GetDate() ) )

Ten years before today

10 Year Longevity Pay Raise


UPDATE SET WHERE AND tblEmployee AnnualSalary = ROUND(1.015 * AnnualSalary, 2) Active = 'Y' EID IN ( SELECT Distinct EID FROM tblPaycheck WHERE PayDate <= DateAdd(year, -10, GetDate() ) )

What is wrong with this simplistic approach? And, can you fix it?

Delete Syntax
DELETE table WHERE row condition

Note: The WHERE clause can include subqueries

Discard Former Employee Paychecks


DELETE WHERE OR OR OR OR tblPaycheck CheckNumber = 4271 CheckNumber = 4329 CheckNumber = 4412 CheckNumber = 4494 CheckNumber = 4544

Paid to Stanley Andrews

Discard Former Employee Paychecks


DELETE tblPaycheck WHERE EID = 'SA79'

Stanley Andrews

Discard Former Employee Paychecks


DELETE tblPaycheck WHERE EID = 'SA79' DELETE tblPaycheck WHERE EID = 'RA55' OR EID = 'RDB' OR EID = 'GG42' OR EID = 'FH41'
Anderson, Dakin-Bailey, Grahame and Hagney

Discard Former Employee Paychecks


DELETE tblPaycheck WHERE EID = 'SA79' DELETE tblPaycheck WHERE EID = 'RA55' OR EID = 'RDB' OR EID = 'GG42' OR EID = 'FH41' DELETE tblPaycheck WHERE EID IN ( 'TM1', 'OMP', 'S843', 'Swit', 'Gower' )
Mitchell, Potter, Simms, Switzer and Warner

Discard Former Employee Paychecks


DELETE tblPaycheck WHERE EID = 'SA79'

ALL former employees

DELETE tblPaycheck WHERE EID = 'RD9000' OR EID = 'JG0742' OR EID = 'FH0441' OR EID = 'HL0255' DELETE tblPaycheck WHERE EID IN ( SELECT EID FROM tblEmployee WHERE Active = 'N' )

Discard Former Employees


DELETE tblPaycheck WHERE EID IN ( SELECT EID FROM tblEmployee WHERE Active = 'N' ) DELETE tblFamily WHERE EID IN ( SELECT EID FROM tblEmployee WHERE Active = 'N' ) DELETE tblEmployee WHERE Active = 'N'

(Children First)

Paycheck Archival
DECLARE @Cutoff AS DateTime SET @Cutoff = '12/31/2009'

INSERT INTO tblPaycheckArchive ( ArchiveDate, CheckNumber, PayDate, EID, GrossAmount, NetAmount) SELECT GetDate(), CheckNumber, PayDate, EID, GrossAmount, NetAmount FROM tblPaycheck WHERE PayDate <= @Cutoff
DELETE tblPaycheck WHERE PayDate <= @Cutoff

You might also like