SQL Server 2005 - Tutorial -...

64

Click here to load reader

Transcript of SQL Server 2005 - Tutorial -...

Page 1: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

SQL Server 2005Φροντιςτόριο

Γεράςιμοσ Μαρκζτοσ

InfoLab, Τμιμα Πλθροφορικισ, Πανεπιςτιμιο Πειραιϊσ (http://infolab.cs.unipi.gr/)

Page 2: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

Φροντιςτόριο-Εργαςτόρια

Ημερομηνία Αντικείμενο Περιγραφή

Φροντιςτιριο ςτον SQL Server Παρουςίαςθ περιβάλλοντοσ SQL Server

Εργαςτιριο - SQL Server Database Engine/ Integration

Services

Σχεδίαςθ ΒΔ ςτον SQL Server, διαδικαςίεσ μεταφοράσ και

χειριςμοφ δεδομζνων (SSIS), TSQL, κζματα βζλτιςθσ εκτζλεςθσ

SQL ερωτθμάτων

Εργαςτιριο - SQL Server Database Engine

DBA ςε 2 ϊρεσ (διαχείριςθ χρθςτϊν, απόδοςθ SQL Server,

ςυνοδευτικά εργαλεία)

2

Page 3: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

RDBMS Μερύδια Αγορϊσ

Company 20062006 Market

Share (%) 20052005 Market

Share (%)2005-2006

Growth (%)

Oracle 7,168.0 47.1 6,238.2 46.8 14.9

IBM 3,204.1 21.1 2,945.7 22.1 8.8

Microsoft 2,654.4 17.4 2,073.2 15.6 28.0

Teradata 494.2 3.2 467.6 3.5 5.7

Sybase 486.7 3.2 449.9 3.4 8.2

Other Vendors

1,206.3 7.9 1,149.0 8.6 5.0

Total 15,213.7 100.0 13,323.5 100.0 14.2

Source: Gartner Dataquest (June 2007)

Worldwide Vendor Revenue Estimates from RDBMS Software, Based on Total Software Revenue, 2006 (Millions of Dollars)

Page 4: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

4

SQL Server 2005

Γενικά

Page 5: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

SQL Server

SQL Server

7.0

SQL Server

2005

SQL Server

2000

• Lowest TCO• Automatic Tuning

• Reliability & Security• Integrated Business Intelligence

High availability

Security

Developer productivity

Native XML

First to include Enterprise ETL & Deep Data Mining

Performance, scalability focus

XML support

First to include Notification

First to include Data Mining & Reporting

Re-architecture of relational server

Extensive auto resource management

First to include OLAP & ETL

Cross-release objectives

SQL Server

6.0/6.5

Differentiation from Sybase SQL Server

Windows integration

First to include Replication

1st Generation 2nd Generation 3rd Generation

Page 6: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

SQL Server 2005 Data Platform

Page 7: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

SQL Server 2005 Components

SQL Server 2005Relational Database Engine

.NET CLR

Analysis Services

Native HTTP Support

Service BrokerReplication

Reporting ServicesFull-Text Search

Notification Services

SQL Server Integration Services

Page 8: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

Εκδόςεισ Enterprise (για Windows Server)

Περιλαμβάνει το ςφνολο των δυνατοτιτων ςου ςυςτιματοσ SQL Server 2005

Standard

Περιλαμβάνει τισ βαςικζσ δυνατότθτεσ του ςυςτιματοσ SQL Server 2005

Workgroup

Βαςικζσ δυνατότθτεσ για μικρζσ επιχειριςεισ

Developer (τρζχει και ςε Windows XP)

Περιλαμβάνει όλεσ τισ δυνατότθτεσ (όπωσ τθν enterprise) αλλά ζχει περιοριςμοφσ ςτθ χριςθ (μόνο για development, τεςτ και demo)

Compact

Για mobile εφαρμογζσ

Express

Η δωρεάν ζκδοςθ που όμωσ ζχει πολλοφσ περιοριςμοφσ (ςτο μζγεκοσ των βάςεων δεδομζνων κτλ)

Δείτε: http://technet.microsoft.com/el-gr/library/ms143506(en-us,SQL.90).aspx

Page 9: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

Νέο στον SQL Server 2005

Express Workgroup

Standard EnterpriseFastest way for

developers to learn, build & deploy simple

data driven applications

Easiest to use & most affordable database solution for smaller

departments & growing businesses

Complete data management & analysis platform for medium businesses and large

departments

Fully integrated data management and

analysis platform for business critical

enterprise applications

2 CPU

3 GB RAM

Management Studio

Import/Export

Limited Replication Publishing

Back-up Log-shipping

4 CPU

Unlimited RAM(64-bit)

Database Mirroring

OLAP Server

Reporting Server

New Integration Services

Data Mining

Full Replication & SSB Publishing

Unlimited Scale + Partitioning

Adv. DB mirroring, Complete online &

parallel operations,

DB snapshot

Advanced Analysis Tools including full

OLAP & Data Mining

Report Builder + Customized & High

Scale Reporting

Adv SSIS

1 CPU1 GB RAM

4GB DB Size

Simple Management Tool

Report Wizard & Report Controls

Replication & SSB Client

Εκδόςεισ

Page 10: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

Καλϊ όλα αυτϊ… αλλϊ…

Ποιο λογιςμικό χρειάηομαι;

SQL Server 2005 Developer Edition 32/64 bit

Που κα το βρω;

http://msdnaa.cs.unipi.gr

Τι πρζπει να εγκαταςτιςω;

SQL Server Database Services

Workstations components , books online, development tools και sample databases

Να οριςτεί Mixed το Windows Authentication Mode

10

Page 11: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

Πωσ ςυνδϋομαι;

Ανοίγω το SQL Server Management Studio

Επιλζγω να ςυνδεκϊ ςτο Database Engine (υπάρχουν και άλλα…)

Επιλζγω τον Database Server ςτον οποίο κα ςυνδεκϊ (π.χ. Localhost)

Επιλζγω τφπο πιςτοποίθςθσ (authentication): υπάρχουν δυο είδθ λογαριαςμϊν ςτον SQL Server

Windows ι domain χριςτεσ – Windows Authentication

SQL Server χριςτεσ – SQL Server Authentication

Πλθκτρολογϊ username, password

11

Page 12: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

Βαςικϊ εργαλεύα

Νζο: SQL Server Management Studio Υποςτιριξθ όλων των SQL Server components

Database Engine

Analysis Services

Reporting Services

Notification Services

Integration Services

SQL Server Mobile Edition …

Υποςτιριξθ προθγοφμενων εκδόςεων του SQL Server

Νζο : Management Objects (SMO) Objects για διαχείριςθ (με προγραμματιςτικό τρόπο) του SQL Server

Νζο : SQLCMD Command line εργαλείο διαχείριςθσ του SQL Server

Νζο : Database Mail Αντικακιςτά το SQLMail

SMTP Support, Cluster Support, 64-bit Support

Δεν απαιτείται το Outlook

Page 13: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

SQL Server Management Studio

Page 14: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

SQL Server Configuration Manager

Change the Service Log On

Accounts for each SQL Service

Manage the State and Start

Mode for SQL ServicesConfigure SQL Services, Network

Protocols and Network

Configuration

Page 15: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

Δημιουργύα Scripts

Το Management Studio χρθςιμοποιεί τον SMO scripter

Όλεσ οι ενζργειεσ γίνονται scripts Καλφτεροσ ζλεγχοσ

Αποκικευςθ εντολϊν για μελλοντικι/ επαναλαμβανόμενθ χριςθ

Page 16: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

SQL Command-Line Tool

Type SQLCMD to enter

Interactive Mode

Type Exit to exit Interactive Mode

“SQLCMD –S” to connect to

Named Instance

Run “SQLCMD –i” to run against

a pre-built script fileRun “SQLCMD –o” to direct

output to a file

Page 17: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

CONNECT LON-DC-01\MSSQLSERVER

setvar db CustomerDB

BACKUP DATABASE $(db) TO DISK = “$(PATH)\$(db).bak”

CONNECT LON-SQL-01\MSSQLSERVER

setvar db ContactsDB

BACKUP DATABASE $(db) TO DISK = “$(PATH)\$(db).bak”

SQLCMD –Q –i C:\SCRIPTS\BACKUP.SQL –v PATH=“N:\BACKUPS”

SQLCMD Scripting Functionality

LON-DC-01

CustomerDB

LON-SQL-01

ContactsDB

N:\BACKUPS

Page 18: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

Database Mail Μζςω SMTP – Δεν είναι

απαραίτθτο το Microsoft Outlook

Cluster support

64-bit support

Δεν χρθςιμοποιείται το SQLCLR

Βαςίηεται ςε αςφγχρονθ αρχιτεκτονικι

Πολλαπλοί SMTP λογαριαςμοί

Καταγραφι ενεργειϊν (Logging)

Page 19: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

Ενεργοποιοφνται Alerts λόγω:

Λακϊν ςτον SQL Server

Θεμάτων ςτθν απόδοςθ του server

Ο SQL Agent μπορεί να χρθςιμοποιεί τοdatabase mail

Νζοι τφποι εργαςιϊν

Analysis Services

Integration Services

Οριςμόσ Proxy λογαριαςμϊν

Κάκε proxy λογαριαςμόσ ςυςχετίηεται SQL Server λογαριαςμό

Proxy λογαριαςμοί ορίηονται ςε database χριςτεσ, database ρόλουσ, και server ρόλουσ

SQL Server Agent

Page 20: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

Δημιουργύα Βϊςησ Δεδομϋνων

Απλόσ τρόποσ:

δεξί κλικ ςτο φάκελο

‘Database’,

επιλογι ‘New Database’

Ολοκλιρωςθ του Wizard

‘New Database’

Σφνκετοσ τρόποσ:

Με χριςθ τθσ εντολισ T-

SQL CREATE DATABASE

Page 21: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

Δημιουργύα Πύνακα Μζςα από το γραφικό

περιβάλλον

Επιλζγουμε τθ βάςθ δεδομζνων και κάνουμε δεξί κλικ ςτον φάκελο Table και επιλζγουμε New Table

Ορίηουμε για κάκε ςτιλθ όνομα και τφπο δεδομζνων

Δυνατότθτα αποκικευςθσ του Script

Με χριςθ τθσ εντολισ T-SQL CREATE TABLE

Page 22: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

Σχεδιαςμόσ Βϊςησ Δεδομϋνων Μοντελοποίθςθ

βάςεων δεδομζνων (δθμιουργία διαγραμμάτων)

Δυνατότθτα δθμιουργίασ και διαγραφισ πινάκων, ευρετθρίων, κλειδιϊν κ.α.

Page 23: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

Δημιουργύα Όψεων (Views)

Όψθ = εικονικόσ πίνακασ που βαςίηεται ςε ζνα SQL ερϊτθμα

Μζςα από το γραφικό περιβάλλον

Επιλζγουμε τθ βάςθ δεδομζνων και κάνουμε δεξί κλικ ςτον φάκελο Views και επιλζγουμε New View

Επιλζγουμε πίνακεσ και τρόπο ςφνδεςθσ τουσ

TIP: Εφκολοσ ςχεδιαςμόσ ερωτιματοσ μζςα από τθν οκόνθ δθμιουργίασ View

Με χριςθ τθσ εντολισ T-SQL CREATE VIEW

Page 24: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

Slide: 24© Edgewood Solutions LLC 2006

Synonyms Synonym = reference

ςε αντικείμενο που μπορεί να βρίςκεται ςε άλλον server ι ςχιμα

Μζςα από το γραφικό περιβάλλον

Με χριςθ τθσ εντολισ T-SQL CREATE SYNONYM

Page 25: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

Δημιουργύα SQL ερωτημϊτων

Κάνουμε κλικ ςτο κουμπί New Query (πάνω αριςτερά)

Γράφουμε τον κϊδικα που κζλουμε και πατάμε το κουμπί Execute

25

Page 26: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

Ειςαγωγό/ Εξαγωγό δεδομϋνων

Κάνοντασ δεξί κλικ ςε μια βάςθ δεδομζνων και μζςω του μενοφ Tasks μασ δίνονται δυνατότθτεσ Ειςαγωγισ (Import) και Εξαγωγισ (Export) δεδομζνων

Στον Wizard που ξεκινάει πρζπει αρχικά να ορίςουμε πθγι προζλευςθ. Αυτά μπορεί να είναι:

Text αρχεία

Excel και Access αρχεία

SQL Server

Oracle

Άλλα RDBMS

26

Page 27: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

Ειςαγωγό/ Εξαγωγό δεδομϋνων

Αν για παράδειγμα επιλζξουμε να ειςάγουμε δεδομζνα από ζνα text αρχείο ςτον SQL Server τότε πρζπει να ορίςουμε: που βρίςκεται το αρχείο

τθ βάςθ δεδομζνων ςτθν οποία κα αποκθκευτεί το αρχείο

τθ μορφι που ζχει το αρχείο (με ποιον τρόπο διαχωρίηονται οι γραμμζσ και οι ςτιλεσ)

το όνομα του πίνακα ςτο οποίο κα αποκθκευτοφν τα δεδομζνα

Αν δεν υπάρχει ο πίνακασ τότε κα δθμιουργθκεί

Αν υπάρχει ο πίνακασ, μποροφμε να κάνουμε αντιςτοίχθςθ μεταξφ των ςτθλϊν του αρχείου με τισ ςτιλεσ του πίνακα (προςοχή ςτουσ διαφορετικοφσ τφπουσ δεδομζνων)

27

Page 28: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

Backup/ Restore

Κάνοντασ δεξί κλικ ςε μια βάςθ δεδομζνων και μζςω του μενοφ Tasks μασ δίνονται δυνατότθτεσ Backup και Restore

Τζτοιεσ διαδικαςίεσ μποροφν να προγραμματιςτοφν ϊςτε να εκτελοφνται αυτόματα

28

Page 29: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

Backup

Για το backup, οι παράμετροι που πρζπει να κακορίςουμε:

Σε ποια βάςθ κα γίνει backup

Τφποσ backup

Full (όλθ τθ ΒΔ ι ςυγκεκριμζνα filegroups και μζροσ του log)

Differential (βάςθ ενόσ τελευταίου full backup)

Transaction log (μόνο το log)

Αν το backup λιγει μετά από ζνα διάςτθμα

Τον προοριςμό του backup αρχείου

Αν το backup αρχείο κα προςτεκεί ςε ζνα υπάρχον backup set ι κα διαγράψει τα προθγοφμενα

29

Page 30: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

Restore

Για το restore, οι παράμετροι που πρζπει να κακορίςουμε:

Σε ποια βάςθ κα γίνει restore

Από ποφ κα γίνει restore (από ΒΔ, από Device)

Προςδιορίηουμε το ςυγκεκριμζνο backup set που κα γίνει restore (1 αρχείο πολλά sets)

Αν το backup αρχείο κα προςτεκεί ςε ζνα υπάρχον backup set ι κα διαγράψει τα προθγοφμενα

Ορίηουμε αν κα διαγραφοφν τα δεδομζνα που υπάρχουν εκείνθ τθ ςτιγμι ςτθ ΒΔ

30

Page 31: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

Ευρετόρια

Επιλογζσ όταν δθμιουργοφμε ευρετιρια:

Clustered (το φυςικό αρχείο αναπροςαρμόηεται)

Nonclusterted (δθμιουργείται κατάλλθλο δζντρο)

Μποροφμε να ορίςουμε να είναι unique (δεν κα επιτρζπει τθν ίδια εγγραφι δυο φορζσ)

Όταν ορίηουμε πρωτεφον κλειδί τότε αυτόματα ορίηεται Clustered + Unique

Επιλζγουμε τισ ςτιλεσ πάνω ςτισ οποίεσ κα ςτθκεί το ευρετιριο

31

Page 32: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

32

SQL Server 2005

T-SQL, CLR και XML

Page 33: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

Η γλώςςα SQL SQL = Structured Query Language

Αναπτφχκθκε από τθν IBM το 1970

Είναι πλζον ANSI και ISO standard για RDBMS SQL ANSI = American National Standards Institute

ISO = International Organization for Standardization

SQL86 => SQL89 => SQL92

Συνδυάηει πολλζσ «γλϊςςεσ»:

DDL (Data Definition Language),

DML (Data Modification),

SAL (System Administration Language)

QL (Query Language)

Page 34: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

Η εντολό SELECT

SELECT select_list [ INTO new_table ] FROM table_source [ WHERE search_condition ] [ GROUP BY group_by_expression ] [ HAVING search_condition ] [ ORDER BY order_expression [ ASC | DESC ] ]

Page 35: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

SELECT: Λογικό ροό

1. From: Σφνολο δεδομζνων (πίνακασ, όψθ, άλλο SQL ερϊτθμα)

2. Where: Επιλογι ςυγκεκριμζνων εγγραφϊν-γραμμϊν (ςτθ ςτιλθ να υπάρχει θ φράςθ “%First Aid%”).

3. Aggregations: Είναι δυνατό να οριςτοφν ςυνακροίςεισ (aggregations) ςτο ςφνολο δεδομζνων (average, sum, count, min, max κτλ)

4. Order By: Οι εγγραφζσ που ζχουν τελικά επιλεγεί μποροφν να ταξινομθκοφν με βάςθ όςα δθλϊνονται ςτο order by.

5. Predicate: H ςειρά εμφάνιςθσ των ςτθλϊν

Page 36: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

SELECT Clause (SELECT)

SELECT [ ALL | DISTINCT ][ TOP n [ PERCENT ] [ WITH TIES ] ] < select_list >

< select_list > ::=

{ * | { table_name | view_name | table_alias }.*| { column_name | expression | IDENTITYCOL |

ROWGUIDCOL } [ [ AS ] column_alias ]

| column_alias = expression } [ ,...n ]

Page 37: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

FROM Clause (SELECT) [ FROM { < table_source > } [ ,...n ] ]

< table_source > ::= table_name [ [ AS ] table_alias ] [ WITH ( < table_hint > [

,...n ] ) ] | view_name [ [ AS ] table_alias ] | rowset_function [ [ AS ] table_alias ] | OPENXML | derived_table [ AS ] table_alias [ ( column_alias [ ,...n ]

) ] | < joined_table >

< joined_table > ::= < table_source > < join_type > < table_source > ON <

search_condition > | < table_source > CROSS JOIN < table_source > | < joined_table >

< join_type > ::= [ INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } ] [ < join_hint > ] JOIN

Page 38: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

Joins Υποκζτουμε ότι ζχουμε τουσ πίνακεσ

loan και borrower

n Σθμείωςθ: Δεν γνωρίηουμε πλθροφορίεσ για το δάνειο του πελάτθ Hayes και δεν ζχουμε ο όνομα του πελάτθ με δάνειο L-260

Page 39: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

Joins - Παραδεύγματα

loan inner join borrower onloan.loan_number =borrower.loan_number

n loan left outer join borrower onloan.loan_number = borrower.loan_number

Page 40: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

Joins - Παραδεύγματα

loan full outer join borrower using (loan_number)

n Συνδυάςει left και right outer join

Page 41: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

WHERE Clause (SELECT)

[ WHERE < search_condition > | < old_outer_join > ]

< old_outer_join > ::= column_name { * = | = * } column_name

Page 42: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

Search Condition (WHERE Clause) < search_condition > ::=

{ [ NOT ] < predicate > | ( < search_condition > ) } [ { AND | OR } [ NOT ] { < predicate > | ( < search_condition

> ) } ] } [ ,...n ]

< predicate > ::= { expression { = | < > | ! = | > | > = | ! > | < | < = | ! < }

expression| string_expression [ NOT ] LIKE string_expression

[ ESCAPE 'escape_character' ] | expression [ NOT ] BETWEEN expression AND expression| expression IS [ NOT ] NULL | CONTAINS

( { column | * } , '< contains_search_condition >' ) | FREETEXT ( { column | * } , 'freetext_string' ) | expression [ NOT ] IN ( subquery | expression [ ,...n ] ) | expression { = | < > | ! = | > | > = | ! > | < | < = | ! < }

{ ALL | SOME | ANY} ( subquery ) | EXISTS ( subquery )

}

Page 43: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

GROUP BY Clause (SELECT)

[ GROUP BY [ ALL ] group_by_expression [ ,...n ]

[ WITH { CUBE | ROLLUP } ] ]

Συνικωσ χρθςιμοποιείται μαηί με ςυναρτιςεισ ςυνάκροιςθσ (aggregate)

π.χ. SUM, COUNT, AVG, κτλ.

Page 44: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

HAVING Clause (SELECT)

[ HAVING < search_condition > ]

Page 45: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

UNION Clause (SELECT)

{ < query specification > | ( < query expression > ) } UNION [ ALL ] < query specification | ( < query expression > )

[ UNION [ ALL ] < query specification | ( < query expression > )

[ ...n ] ]

Page 46: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

ORDER BY Clause (SELECT)

[ ORDER BY { order_by_expression [ ASC | DESC ] } [ ,...n] ]

Page 47: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

INSERT

INSERT [ INTO] { table_name WITH ( < table_hint_limited > [ ...n ] )

| view_name | rowset_function_limited

}

{ [ ( column_list ) ] { VALUES

( { DEFAULT | NULL | expression } [ ,...n] ) | derived_table | execute_statement

} } | DEFAULT VALUES

< table_hint_limited > ::= { FASTFIRSTROW

| HOLDLOCK | PAGLOCK | READCOMMITTED | REPEATABLEREAD | ROWLOCK | SERIALIZABLE | TABLOCK | TABLOCKX | UPDLOCK

}

Page 48: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

UPDATE

UPDATE { table_name WITH ( < table_hint_limited > [ ...n ] ) | view_name | rowset_function_limited} SET { column_name = { expression | DEFAULT | NULL } | @variable = expression| @variable = column = expression } [ ,...n ]

{ { [ FROM { < table_source > } [ ,...n ] ]

[ WHERE < search_condition > ] }

| [ WHERE CURRENT OF { { [ GLOBAL ] cursor_name } | cursor_variable_name }] } [ OPTION ( < query_hint > [ ,...n ] ) ]

Page 49: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

DELETE

DELETE [ FROM ]

{ table_name WITH ( < table_hint_limited > [ ...n ] ) | view_name | rowset_function_limited}

[ FROM { < table_source > } [ ,...n ] ]

[ WHERE { < search_condition > | { [ CURRENT OF

{ { [ GLOBAL ] cursor_name } | cursor_variable_name

} ] }

} ] [ OPTION ( < query_hint > [ ,...n ] ) ]

Page 50: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

Μετατροπϋσ

CAST και CONVERT

Μετατρζπει ζνα τφπο ςε ζνα άλλο. Οι εντολζσ είναι παρόμοιεσ απλά με διαφορετικι

ςφνταξθ

CAST ( expression AS data_type )

CONVERT ( data_type [ ( length ) ] ,

expression [ , style ] )

Page 51: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

Aggregations

Page 52: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

Εκτϋλεςη SQL ερωτημϊτων

Page 53: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

Απόδοςη SQL ερωτημϊτων

Τθν εκτζλεςθ των SQL ερωτθμάτων τθ διαχειρίηεται ο Query Optimizer

Αποφαςίηει ποια Index κα χρθςιμοποιιςει

Επιλζγει ποιο πλάνο εκτζλεςθσ κα ακολουκιςει

Αποφεφγουμε SQL ερωτιματα τφπου SELECT * FROM

Προςζχουμε τθ χριςθ (!) καρτεςιανοφ γινομζνου

SELECT * FROM a, b

Προςοχι ςτθ χριςθ του LIKE

Χρθςιμοποιείται ευρετιριο(αν υπάρχει) όταν… WHERE lname LIKE ‘w%’

Δεν χρθςιμοποιείται ευρετιριο όταν… WHERE lname LIKE ‘%alton’

53

Page 54: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

Απόδοςη SQL ερωτημϊτων

Βελτιϊνουμε τθν απόδοςθ JOIN ερωτθμάτων όταν:

Περιορίηουμε τον αρικμό των εγγραφϊν πάνω ςτισ οποίεσ γίνεται το JOIN

Δθμιουργοφμε ευρετιρια πάνω ςτισ ςτιλεσ ςτισ οποίεσ γίνεται το JOIN (ςτα ξζνα κλειδιά δε δθμιουργοφνται αυτόματα τα ευρετιρια)

Κάνουμε JOIN πάνω ςε πεδία με όςο το δυνατό μικρότερο μικοσ (προςζχουμε τουσ τφπουσ δεδομζνων και αν χρειαςτεί δθμιουργοφμε και τεχνθτά κλειδιά)

Κάνουμε JOIN πάνω ςε πεδία με ίδιο τφπο δεδομζνων (ζτςι αποφεφγεται θ μετατροπι από τον SQL Server)

Επανα-δθμιουργοφμε (rebuild) τα ευρετιρια ϊςτε να απελευκερωκεί ελεφκεροσ χϊροσ

Σε περίπτωςθ μεγάλων JOIN προτιμοφμε να τοποκετοφμε τουσ πίνακεσ ςε διαφορετικά φυςικά αρχεία ςτο ίδιο FILEGROUP

54

Page 55: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

Απόδοςη SQL ερωτημϊτων

Βελτιϊνουμε τθν απόδοςθ JOIN ερωτθμάτων όταν:

Προτιμοφμε τθ χριςθ JOIN από το subquery (εκτόσ και αν πρόκειται για λίγεσ εγγραφζσ / δεν υπάρχει ευρετιριο ςτισ ςτιλεσ που κάνουμε JOIN)

Ελζγχουμε τι ακριβϊσ εκτελεί ο SQL Server εξετάηοντασ τα execution plans που μασ παρζχει

55

Page 56: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

T-SQL

Transact-SQL: Ενιςχυμζνθ SQL που προςφζρει χαρακτθριςτικά που αφοροφν μόνο τον SQL Server (system functions κτλ)

Τι αλλάηει ςτον SQL Server 2005: Exception handling

TOP(expression)

PIVOT/UNPIVOT

RANK

SNAPSHOT Isolation

VARCHAR(MAX), VARBINARY(MAX)…

Κτλ κτλ κτλ…56

Page 57: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

CLR

Το Common Language Runtime (CLR) είναι Virtual Machine του .NET Framework

Το CLR ζχει πλζον «ενςωματωκεί» ςτον SQL Server άρα μασ δίνεται θ δυνατότθτα να χρθςιμοποιιςουμε όλο το .NET Framework μζςα ςτον SQL Server

C#, Visual Basic .NET,..

ADO.NET

Τι κερδίηουμε:

Μποροφμε να χρθςιμοποιιςουμε μια πλοφςια γλϊςςα με διαδικαςτικι λογικι για να γράψουμε functions, stored procedures κτλ.

Μπορϊ εφκολα να ζχω πρόςβαςθ ςε εξωτερικζσ πθγζσ

Page 58: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

T-SQL και CLR

Transact SQL (T-SQL)

(Microsoft® SQL 2000)

.NET Languages (Microsoft®

SQL Server™ 2005)

User Defined

FunctionsX X

Stored Procedures X X

Triggers X X

User-Defined

TypesX

Aggregates X

Page 59: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

VS .NET

ProjectAssembly:

“TaxLib.dll”

VB,C#,C++ Build

SQL Server

SQL Data Definition: create assembly …

create function …

create procedure …

create trigger …

create type …

SQL Queries: select

sum(tax(sal,state))

from Emp where county

= ‘King’

Runtime

hosted by SQL

(in-proc)

Η διαδικαςύα…

Page 60: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

XML τύποσ δεδομϋνων

Ο XML τφποσ δεδομζνων είναι ενςωματωμζνοσ ςτο SQL Server 2005, οπότε μπορεί να χρθςιμοποιθκεί :

ωσ τφποσ δεδομζνων ςε ςτιλθ κάποιου πίνακα

ωσ παράμετροσ ςε stored procedure

ωσ τφποσ δεδομζνων ςε τιμι που επιςτζφεται απόuser-defined function

ωσ τφποσ δεδομζνων μεταβλθτισ

Page 61: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

XML ςτόλη

Μπορεί να αποκθκεφςει XML ζγγραφο

Page 62: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

XML ςτόλη

Δεν είναι απλά TEXT!!

Υποςτθρίηει τισ κλαςικζσ XMLτεχνολογίεσ/τεχνικζσ:

Επικφρωςθ (validation) με κάποιο XML Schema

Ειδικά ευρετιρια για XML

Υποςτιριξθ XQuery και XPath 2.0

Συγκεκριμζνεσ λειτουργίεσ που αφοροφν μόνο XML:

FOR XML

OpenXML

Page 63: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

Υλικό

Microsoft at University of Piraeus: http://msdnaa.cs.unipi.gr/

SQL Server home: http://www.microsoft.com/sql/default.mspx

SQL Server tech center: http://technet.microsoft.com/en-us/sqlserver/default.aspx

SQL Server development center: http://msdn2.microsoft.com/en-us/sqlserver/default.aspx

Άρκρα για βελτίωςθ τθσ απόδοςθσ του SQL Server: http://www.sql-server-performance.com/

SQL Server 2008: http://www.microsoft.com/sql/2008/default.mspx

SQL Server 2008 e-book: http://csna01.libredigital.com/?urss1q2we6

SQL Server 2008 εκπαιδευτικό υλικό: http://sqlserver2008jumpstart.microsofttraining.com/content/info.asp?CcpSubsiteID=69&infoid=27

63

Page 64: SQL Server 2005 - Tutorial - infolab.cs.unipi.grinfolab.cs.unipi.gr/pre-eclass/courses/db/labs/SQLServer/SQLServer... · Teradata 494.2 3.2 467.6 3.5 5.7 Sybase 486.7 3.2 449.9 3.4

64

Gerasimos Marketos

[email protected]

http://infolab.cs.unipi.gr/people/marketos

Επικοινωνία

University of Piraeus,

Information Systems Laboratory

80-82 Zeas Str., 18534 Piraeus, Greece

3rd Floor

Phone: (+30) 210 4142437

http://infolab.cs.unipi.gr