introduction to sql, part i

56
Introduction to SQL, Part I (with Microsoft SQL Server) Svetlin Nakov Telerik Corporation www.telerik. com

Upload: dex

Post on 15-Feb-2016

52 views

Category:

Documents


0 download

DESCRIPTION

Introduction to SQL, Part I. (with Microsoft SQL Server). Svetlin Nakov. Telerik Corporation. www.telerik.com. Table of Contents. SQL and T-SQL Languages The Telerik Academy Database Schema Introducing the SELECT SQL Statement Allowed Operators The WHERE Clause - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Introduction to  SQL, Part I

Introduction to SQL, Part I

(with Microsoft SQL Server)

Svetlin NakovTelerik

Corporationwww.telerik.com

Page 2: Introduction to  SQL, Part I

Table of Contents1. SQL and T-SQL Languages2. The Telerik Academy

Database Schema3. Introducing the SELECT SQL

StatementAllowed OperatorsThe WHERE ClauseSorting with ORDER BYSelecting Data From

Multiple Tables 2

Page 3: Introduction to  SQL, Part I

Table of Contents (2)4. Selecting Data From Multiple

TablesNatural JoinsJoin with USING ClauseInner Joins with ON ClauseLeft, Right and Full Outer JoinsCross Joins

5. Inserting Data6. Updating Data7. Deleting Data 3

Page 4: Introduction to  SQL, Part I

Relational Databases and SQL

The SQL Execution Model

Page 5: Introduction to  SQL, Part I

Relational Databases and SQL

A relational database can be accessed and modified by executing SQL statements

SQL allows Defining / modifying the database schema

Searching / modifying table data A set of SQL commands are available for extracting subset of the table data

Most SQL commands return a single value or record set

5

Page 6: Introduction to  SQL, Part I

Communicating with the DB

6

SQL statement issent to the DB serverSELECT Name FROM Departments

NameEngineeringSalesMarketing…

The result is returned

(usually as a record set)

Database

Page 7: Introduction to  SQL, Part I

SQL Execution SQL commands are executed through a database connection DB connection is a channel between

the client and the SQL server DB connections take resources and

should be closed when no longer used

Multiple clients can be connected to the SQL server at the same time

SQL commands can be executed in parallel Transactions and isolation deal with

concurrency

7

Page 8: Introduction to  SQL, Part I

SQL and T-SQLIntroduction

Page 9: Introduction to  SQL, Part I

What is SQL? Structured Query Language (SQL)

Declarative language for query and manipulation of relational data

SQL consists of: Data Manipulation Language (DML)

SELECT, INSERT, UPDATE, DELETE Data Definition Language (DDL)

CREATE, DROP, ALTER GRANT, REVOKE

9

Page 10: Introduction to  SQL, Part I

SQL – Few Examples

10

SELECT FirstName, LastName, JobTitle FROM Employees

INSERT INTO Projects(Name, StartDate)VALUES('Introduction to SQL Course', '1/1/2006')

SELECT * FROM Projects WHERE StartDate = '1/1/2006'

UPDATE ProjectsSET EndDate = '8/31/2006'WHERE StartDate = '1/1/2006'

DELETE FROM ProjectsWHERE StartDate = '1/1/2006'

Page 11: Introduction to  SQL, Part I

What is T-SQL? T-SQL (Transact SQL) is an extension to the standard SQL language T-SQL is the standard language

used in MS SQL Server Supports if statements, loops,

exceptions Constructions used in the high-

level procedural programming languages

T-SQL is used for writing stored procedures, functions, triggers, etc.

11

Page 12: Introduction to  SQL, Part I

T-SQL – Example

12

CREATE PROCEDURE EmpDump AS DECLARE @EmpId INT, @EmpFName NVARCHAR(100), @EmpLName NVARCHAR(100) DECLARE emps CURSOR FOR SELECT EmployeeID, FirstName, LastName FROM Employees OPEN emps FETCH NEXT FROM emps INTO @EmpId, @EmpFName, @EmpLName WHILE (@@FETCH_STATUS = 0) BEGIN PRINT CAST(@EmpId AS VARCHAR(10)) + ' ' + @EmpFName + ' ' + @EmpLName FETCH NEXT FROM emps INTO @EmpId, @EmpFName, @EmpLName END CLOSE emps DEALLOCATE empsGO

Page 13: Introduction to  SQL, Part I

SQL LanguageIntroducing SELECT Statement

Page 14: Introduction to  SQL, Part I

Capabilities of SQL SELECT

14

Table 1 Table 2

Table 1 Table 1

SelectionTake some of the rows

ProjectionTake some of the columns

JoinCombine tables bysome column

Page 15: Introduction to  SQL, Part I

The Telerik Academy Database Schema in SQL

Server

15

Page 16: Introduction to  SQL, Part I

Basic SELECT Statement

SELECT identifies what columns FROM identifies which table

16

SELECT *|{[DISTINCT] column|expression [alias],...}FROM table

Page 17: Introduction to  SQL, Part I

SELECT Example Selecting all columns from departments

Selecting specific columns

17

SELECT * FROM Departments

SELECT DepartmentID, NameFROM Departments

DepartmentID

Name ManagerID

1 Engineering 122 Tool design 43 Sales 273… … …

DepartmentID

Name

1 Engineering2 Tool design3 Sales

Page 18: Introduction to  SQL, Part I

Arithmetic Operations Arithmetic operators are available:

+, -, *, / Examples:

18

SELECT LastName, Salary, Salary + 300FROM Employees

LastName Salary (No column name)

Gilbert 12500,00 12800,00Brown 13500,00 13800,00Tamburello 43300,00 43600,00

SELECT (2 + 3) * 4 --> returns 20

Page 19: Introduction to  SQL, Part I

The NULL Value A NULL is a value that is unavailable,

unassigned, unknown, or inapplicable Not the same as zero or a blank space

Arithmetic expressions containing a NULL value are evaluated to NULL

19

SELECT LastName, ManagerID FROM Employees

LastName

ManagerID

Sánchez NULLDuffy 300Wang 1

NULL is displayed as empty space or

as NULL

Page 20: Introduction to  SQL, Part I

Column Aliases Aliases rename a column heading Useful with calculations Immediately follows the column name

There is an optional AS keyword Double quotation marks if contains

spaces

20

SELECT FirstName, LastName, Salary,Salary*0.2 AS Bonus FROM Employees

FirstName

LastName Salary Bonus

Guy Gilbert 12500,00 2500.00000Kevin Brown 13500,00 2700.00000

Page 21: Introduction to  SQL, Part I

Concatenation Operator Concatenates columns or character

strings to other columns Is represented by plus sign “+” Creates a resultant column that is a

character expression

21

SELECT FirstName + ' ' + LastName AS [Full Name],EmployeeID as [No.] FROM EmployeesFull Name No.Guy Gilbert 1Kevin Brown 2Roberto Tamburello

3

Page 22: Introduction to  SQL, Part I

Literal Character Strings

A literal is a character, a number, or a date included in the SELECT list

Date and character literal values must be enclosed within single quotation marks

Each character string is output once for each row returned

22

SELECT FirstName + '''s last name is ' +LastName AS [Our Employees] FROM Employees

Our EmployeesGuy's last name is GilbertKevin's last name is BrownRoberto's last name is Tamburello

Page 23: Introduction to  SQL, Part I

Removing Duplicate Rows

The default display of queries is all rows, including duplicate rows

Eliminate duplicate rows by using the DISTINCT keyword in the SELECT clause

23

SELECT DepartmentIDFROM Employees

DepartmentID772...

SELECT DISTINCT DepartmentIDFROM Employees

DepartmentID72...

Page 24: Introduction to  SQL, Part I

Set Operations: UNION, INTERSECT and MINUS

UNION combines the results from several SELECT statements The columns count and types should

match

INTERSECT / EXCEPT perform logical intersection / difference between given two sets of records

24

SELECT FirstName AS NameFROM EmployeesUNIONSELECT LastName AS NameFROM Employees

NameA. ScottAbbasAbercrombie...

Page 25: Introduction to  SQL, Part I

Limiting the Rows Selected

Restrict the rows returned by using the WHERE clause:

More examples:

25

SELECT LastName, DepartmentID FROM Employees WHERE DepartmentID = 1

SELECT FirstName, LastName, DepartmentID FROM Employees WHERE LastName = 'Sullivan'

LastName

DepartmentID

Tamburello

1

Erickson 1Goldberg 1... ...

SELECT LastName, Salary FROM EmployeesWHERE Salary <= 20000

Page 26: Introduction to  SQL, Part I

Other Comparison Conditions

Using BETWEEN operator to specify a range:

Using IN / NOT IN to specify a set of values:

Using LIKE operator to specify a pattern:

% means 0 or more chars; _ means one char

26

SELECT LastName, Salary FROM EmployeesWHERE Salary BETWEEN 20000 AND 22000

SELECT FirstName, LastName, ManagerID FROM Employees WHERE ManagerID IN (109, 3, 16)

SELECT FirstName FROM EmployeesWHERE FirstName LIKE 'S%'

Page 27: Introduction to  SQL, Part I

Comparing with NULL Checking for NULL value:

Attention: COLUMN=NULL is always false!

27

SELECT LastName, ManagerId FROM EmployeesWHERE ManagerId IS NULL

SELECT LastName, ManagerId FROM EmployeesWHERE ManagerId IS NOT NULL

SELECT LAST_NAME, MANAGER_ID FROM EMPLOYEESWHERE MANAGER_ID = NULL

SELECT LAST_NAME, MANAGER_ID FROM EMPLOYEESWHERE NULL = NULL

This is always false!

This is always false!

Page 28: Introduction to  SQL, Part I

Logical Operators and Brackets

Using NOT, OR and AND operators and brackets:

28

SELECT FirstName, LastName FROM EmployeesWHERE Salary >= 20000 AND LastName LIKE 'C%'

SELECT LastName FROM EmployeesWHERE ManagerID IS NOT NULL OR LastName LIKE '%so_'SELECT LastName FROM EmployeesWHERE NOT (ManagerID = 3 OR ManagerID = 4)

SELECT FirstName, LastName FROM EmployeesWHERE (ManagerID = 3 OR ManagerID = 4) AND (Salary >= 20000 OR ManagerID IS NULL)

Page 29: Introduction to  SQL, Part I

Sorting with ORDER BY Sort rows with the ORDER BY clause

ASC: ascending order, default DESC: descending order

29

SELECT LastName, HireDate FROM Employees ORDER BY HireDate

LastName

HireDate

Gilbert 1998-07-31

Brown 1999-02-26

Tamburello

1999-12-12SELECT LastName,

HireDate FROM Employees ORDER BY HireDate DESC

LastName

HireDate

Valdez 2005-07-01

Tsoflias 2005-07-01

Abbas 2005-04-15

Page 30: Introduction to  SQL, Part I

SQL LanguageSelecting Data From Multiple Tables

Page 31: Introduction to  SQL, Part I

Data from Multiple Tables

Sometimes you need data from more than one table:

31

LastName

DepartmentID

Duffy 1Abbas 3Galvin 2

DepartmentID

Name

1 Engineering

2 Tool design

3 SalesLastName

DepartmentName

Duffy EngineeringGalvin Tool designAbbas Sales

Page 32: Introduction to  SQL, Part I

Cartesian Product This will produce Cartesian product:

The result:

32

SELECT LastName, Name AS DepartmentNameFROM Employees, Departments

LastName

DepartmentName

Duffy Document Control

Wang Document Control

Sullivan Document Control

Duffy EngineeringWang Engineering.. ..

Page 33: Introduction to  SQL, Part I

Cartesian Product (2) A Cartesian product is formed when: A join condition is omitted A join condition is invalid All rows in the first table are joined

to all rows in the second table To avoid a Cartesian product, always include a valid join condition

33

Page 34: Introduction to  SQL, Part I

Types of Joins Inner joins Left, right and full outer joins Cross joins

34

Page 35: Introduction to  SQL, Part I

Inner Join with ON Clause

To specify arbitrary conditions or specify columns to join, the ON clause is used Such JOIN is called also INNER JOIN

35

SELECT e.EmployeeID, e.LastName, e.DepartmentID, d.DepartmentID, d.Name AS DepartmentNameFROM Employees e INNER JOIN Departments d ON e.DepartmentID = d.DepartmentID

EmployeeID

LastName

DepartmentID

DepartmentID

DepartmentName

1 Gilbert 7 7 Production2 Brown 4 4 Marketing

3 Tamburello 1 1 Engineering

Page 36: Introduction to  SQL, Part I

Equijoins Inner joins with join conditions pushed down to the WHERE clause

36

SELECT e.EmployeeID, e.LastName, e.DepartmentID, d.DepartmentID, d.Name AS DepartmentNameFROM Employees e, Departments d WHERE e.DepartmentID = d.DepartmentID

EmployeeID

LastName

Depart-mentID

Depart-mentID

Department-Name

1 Gilbert 7 7 Production2 Brown 4 4 Marketing3 Tamburell

o1 1 Engineerin

g

Page 37: Introduction to  SQL, Part I

INNER vs. OUTER Joins Inner join

A join of two tables returning only rows matching the join condition

Left (or right) outer join Returns the results of the inner join

as well as unmatched rows from the left (or right) table

Full outer join Returns the results of an inner join

as well as the results of a left and right join

37

Page 38: Introduction to  SQL, Part I

INNER JOIN

38

SELECT e.LastName EmpLastName, m.EmployeeID MgrID, m.LastName MgrLastNameFROM Employees e INNER JOIN Employees m ON e.ManagerID = m.EmployeeID

EmpLastName MgrID MgrLastNameErickson 3 TamburelloGoldberg 3 TamburelloDuffy 109 SánchezJohnson 185 HillHiga 185 HillFord 185 HillMaxwell 21 Krebs... ... ...

Page 39: Introduction to  SQL, Part I

LEFT OUTER JOIN

39

SELECT e.LastName EmpLastName, m.EmployeeID MgrID, m.LastName MgrLastNameFROM Employees e LEFT OUTER JOIN Employees m ON e.ManagerID = m.EmployeeID

EmpLastName MgrID MgrLastNameSánchez NULL NULLBenshoof 6 BradleyMiller 14 MaxwellOkelberry 16 BrownHill 25 MuFrum 184 RichinsCulbertson 30 Barreto de Mattos... ... ...

Page 40: Introduction to  SQL, Part I

RIGHT OUTER JOIN

40

SELECT e.LastName EmpLastName, m.EmployeeID MgrID, m.LastName MgrLastNameFROM Employees e RIGHT OUTER JOIN Employees m ON e.ManagerID = m.EmployeeID

EmpLastName MgrID MgrLastNameLertpiriyasuwat

38 Liu

NULL 39 HinesNULL 40 McKayBerglund 41 WuKoenigsbauer 123 HayNULL 124 ZabokritskiNULL 125 Decker... ... ...

Page 41: Introduction to  SQL, Part I

FULL OUTER JOIN

41

SELECT e.LastName EmpLastName, m.EmployeeID MgrID, m.LastName MgrLastNameFROM employee e FULL OUTER JOIN employee m ON e.ManagerID = m.EmployeeID

EmpLastName MgrID MgrLastNameSanchez NULL NULL… … …Cracium 3 TamburelloGilbert 16 Brown… … …NULL 17 HartwigNULL 1 Gilbert… … …

Page 42: Introduction to  SQL, Part I

Three-Way Joins A three-way join is a join of three tables

42

SELECT e.FirstName, e.LastName, t.Name as Towns, a.AddressTextFROM Employees e JOIN Addresses a ON e.AddressID = a.AddressID JOIN Towns t ON a.TownID = t.TownID

FirstName

LastName

Towns AddressText

Guy Gilbert Monroe 7726 Driftwood Drive

Kevin Brown Everett 2294 West 39th St.

Roberto Tamburello

Redmond

8000 Crane Court

... ... ... ...

Page 43: Introduction to  SQL, Part I

Self-Join Self-join means to join a table to

itself Always used with table aliases

43

SELECT e.FirstName + ' ' + e.LastName + ' is managed by ' + m.LastName as MessageFROM Employees e JOIN Employees mON (e.ManagerId = m.EmployeeId)

MessageOvidiu Cracium is managed by TamburelloMichael Sullivan is managed by TamburelloSharon Salavaria is managed by TamburelloDylan Miller is managed by Tamburello…

Page 44: Introduction to  SQL, Part I

Cross Join The CROSS JOIN clause produces the

cross-product of two tables Same as a Cartesian product Not often used

44

SELECT LastName [Last Name], Name [Dept Name]FROM Employees CROSS JOIN Departments

Last Name Dept NameDuffy Document ControlWang Document ControlDuffy EngineeringWang Engineering… …

Page 45: Introduction to  SQL, Part I

Additional Conditions You can apply additional conditions in the WHERE clause:

45

SELECT e.EmployeeID, e.LastName, e.DepartmentID, d.DepartmentID, d.Name AS DepartmentNameFROM Employees e INNER JOIN Departments d ON e.DepartmentID = d.DepartmentIDWHERE d.Name = 'Sales'

EmployeeID

LastName

Depart-mentID

Depart-mentID

Department-Name

268 Jiang 3 3 Sales273 Welcker 3 3 Sales275 Blythe 3 3 Sales

Page 46: Introduction to  SQL, Part I

Complex Join Conditions

Joins can use any Boolean expression in the ON clause:

46

SELECT e.FirstName, e.LastName, d.Name as DeptNameFROM Employees e INNER JOIN Departments d ON (e.DepartmentId = d.DepartmentId AND e.HireDate > '1/1/1999' AND d.Name IN ('Sales', 'Finance'))

FirstName LastName DeptNameDeborah Poe FinanceWendy Kahn Finance… … …

Page 47: Introduction to  SQL, Part I

SQL LanguageInserting Data in Tables

Page 48: Introduction to  SQL, Part I

Inserting Data INSERT command

INSERT INTO <table> VALUES (<values>) INSERT INTO <table>(<columns>) VALUES (<values>)

INSERT INTO <table> SELECT <values>

48

INSERT INTO EmployeesProjectsVALUES (229, 25)

INSERT INTO Projects(Name, StartDate)VALUES ('New project', GETDATE())

INSERT INTO Projects(Name, StartDate) SELECT Name + ' Restructuring', GETDATE() FROM Departments

Page 49: Introduction to  SQL, Part I

SQL LanguageUpdating Data in Tables

Page 50: Introduction to  SQL, Part I

Updating Joined Tables We can update tables based on

condition from joined tables

50

UPDATE EmployeesSET JobTitle = 'Senior ' + JobTitleFROM Employees e JOIN Departments d ON e.DepartmentID = d.DepartmentIDWHERE d.Name = 'Sales'

Page 51: Introduction to  SQL, Part I

Updating Data UPDATE command

UPDATE <table> SET <column=expression> WHERE <condition>

Note: Don't forget the WHERE clause!

51

UPDATE EmployeesSET LastName = 'Brown'WHERE EmployeeID = 1

UPDATE EmployeesSET Salary = Salary * 1.10, JobTitle = 'Senior ' + JobTitleWHERE DepartmentID = 3

Page 52: Introduction to  SQL, Part I

SQL LanguageDeleting Data From Tables

Page 53: Introduction to  SQL, Part I

Deleting Data Deleting rows from a table

DELETE FROM <table> WHERE <condition>

Note: Don’t forget the WHERE clause!

Delete all rows from a table at once TRUNCATE TABLE <table>

53

DELETE FROM Employees WHERE EmployeeID = 1DELETE FROM Employees WHERE LastName LIKE 'S%'

TRUNCATE TABLE Users

Page 54: Introduction to  SQL, Part I

Deleting from Joined Tables

We can delete records from tables based on condition from joined tables

54

DELETE FROM EmployeesFROM Employees e JOIN Departments d ON e.DepartmentID = d.DepartmentIDWHERE d.Name = 'Sales'

Page 55: Introduction to  SQL, Part I

WTF?

55

Page 56: Introduction to  SQL, Part I

Introduction to SQL, Part I

Questions?