Sunteți pe pagina 1din 37

Note de laborator: T-SQL Vers. 1.

0
Octavian G. Mustafa
e-mail address: octawian@yahoo.com

Cuprins
Instalarea SGBD-ului . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Primul proiect SQL Server Management Studio . . . . . . . . . . . . . . . . . . . . . . . . 17 Diverse proiecte1 SSMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Surse bibliograce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

Instalarea SGBD-ului

Baza de date (BD) este, g andind simplist, un tabel cu facilit a ti, vezi d.ex. programul Biblioteca [3]. Din punct de vedere teoretic, o BD reprezint a o colect ie de date n interdependent a, c areia i se asociaz a o descriere a acestora, respectiv a relat iilor dintre ele [6, p. 19]. Software -ul cu care cre am si manipul am o baz a de date poart a denumirea generic a de sistem de gestiune a bazelor de date (SGBD)2 [ibid, p. 20]. In acest scop, vom folosi suita de programe Microsoft SQL Server 2008 R2, disponibil a n varianta (edit ia) Enterprise via MSDNAA ori, n varianta Express, la adresa [11], sub sistemul de operare Windows XP Professional SP 3 asupra c aruia avem drepturi de administrator. Lor le ad aug am n primul caz Service Pack -ul 2 [14, 16].
Acest eseu nu a fost raportat vreunui referent. In consecint a, cont inutul s au trebuie considerat ca atare. In particular, utilizarea instruct iunilor care urmeaz a se face pe r aspunderea dumneavoastr a. Autorul v a a steapt a comentariile la adresa de e-mail de mai sus si v a mult ume ste anticipat pentru efortul depus. 1 Activez opt iunea SPAI, adic a Scuze Pentru At atea Init iale ! 2 In limba englez a, database management system (DBMS), [2, p. 1].

Incepem procesul de instalare click - and mica imagine (iconit a) setup.exe care corespunde programului (descris ca) Native SQL Install Boo tstrapper. Aceast a act iune va produce aparit ia ferestrei din Figura 1. Pentru a verica dac a sunt ndeplinite condit iile necesare instal arii SGBDului, ntrebuint am utilitarul System Configuration Checker, vezi Figura 2, si instal am eventual auxiliarele lips a. D.ex., este posibil s a avem nevoie de Microsoft .NET Framework 3.5 SP1, vezi si tutorialul [9].

Figura 1 Dac a totul este n regul a, atunci, aleg and opt iunea Installation din meniul drept (Figura 1), lans am n execut ie varianta New Installation, vezi Figurile 3, 4. In Figura 5 g asim meniul Product Key, care ne permite s a opt am ntre versiunea de evaluare si cea oferit a de MSDNAA. Figurile 6, 7, 8 se ocup a de meniurile prin care este preg atit a/vericat a instalarea general a. Pentru a stabili caracteristicile serverului SQL, vezi Figura 9, trebuie s a select am m acar opt iunile situate n elipsele ro sii din Figura 10. Vericarea acestora se ntreprinde n meniul din Figura 11. In acest moment putem congura o instant a a serverului SQL, [2, p. 13]. 3 Opt am pentru instant a predenit a (standard), vezi Figura 12. Avem, de asemeni, posibilitatea s a construim un director-r ad acin a convenabil pentru sierele serverului, C:\...\septembrie_2012 .
3

In limba englez a, default instance.

Dac a cerint ele de spat iu n memorie sunt ndeplinite (Figura 13), putem congura conturile de accesare a serviciilor serverului (Figura 14). Pentru simplitate, ne restr angem la un singur cont si, av and drepturi de administrator asupra sistemului de operare, alegem contul NT AUTHORITY\SYSTEM, vezi Figura 15, care nu necesit a parol a.

Figura 2 Accesul la motorul serverului se bazeaz a pe autenticarea oferit a de sistemul de operare, adic a pe opt iunea Windows authentication mode din Figurile 16, 17. Serviciile de analiz a si raportare, vezi Figurile 18 21, se utilizeaz a separat de cele ale serverului SQL [2, p. 12]. Dup a vericarea nal a (Figura 22), se realizeaz a instalarea (Figura 23). Odat a ncheiat a instalarea, putem utiliza serverul SQL, dintre ale c arui siere ne intereseaz a (mai ales) cele care se g asesc n (sub-)directorul DATA, cu calea C:\Program Files\Microsoft SQL Server\septembrie_2012 \MSSQL10_50.MSSQLSERVER\MSSQL\DATA Veric am ntotdeauna dac a serviciile SQL Server (MSSQLSERVER), respectiv SQL Server Agent (MSSQLSERVER) sunt active, vezi Figura 24 n 4 caz contrar, evident, le pornim. . . .
4

In afara c aii Start/Control Panel/Administrative Tools/Services putem act io-

Documentat ia serverului SQL [4], intitulat a Books Online (BOL), este un ajutor esent ial n manevrarea acestuia. Ea a fost deja instalat a n calculator (local) ns a, apel and la opt iunea Resources din meniul prezentat n Figura 25, poate accesat a si de pe site-ul MSDN [12]. In special, avem nevoie de rubrica Technical Reference, vezi Figura 26 aici este ilustrat a varianta local a a BOL-ului . Cu ajutorul a dou a siere de comenzi [1], pe care le list am n continuare, putem accesa SGBD-ul, respectiv BOL-ul. In afara lor, exist a, bine-nt eles, c aile clasice: Start/All Programs/Microsoft SQL Server 2008 R2 pentru a ajunge la SGBD si Start/All Programs/Microsoft SQL Server 20 08 R2/Documentation and Tutorials pentru BOL.

Figura 3
serverul2008.bat
1 2 3

4 5 6

@echo o f f s e t c o n t i n u a r e =\100\ Tools \ Binn \ VSShell \ Common7 \ IDE s e t c a l e _ M a n a g e m e n t S t u d i o = C :\ Program Files \ M i c r o s o f t (cont.) SQL Server % c o n t i n u a r e% s e t c a l e _ S e r v e r M a n a g e r = C :\ WINDOWS \ system32 s e t c a l e _ b r o w s e r = C :\ Program Files \ Internet Explorer s e t partea1 = ms - help : // MS . SQLCC . v10 / MS . SQLSVR . v10 . en / (cont.) s 1 0 s q _ G e t S t a r t /
na aceste servicii cu programul Server Configuration Manager, vezi codul surs a al sierului serverul2008.bat listat n cele ce urmeaz a.

10 11 12 13 14

15 16 17 18

19 20 21

s e t partea2 = html /31 f9e6dc - e946 -4576 -80 bb -729 f 2 b e e 7 4 7 8. (cont.) htm s e t r e f _ p a r t e a 1= ms - help : // MS . SQLCC . v10 / MS . SQLSVR . v10 . en (cont.) / s 1 0 d e _ 5 t e c h r e f / s e t r e f _ p a r t e a 2= html / e9533f6b - c48a -4 f53 - a7a0 -379 (cont.) e 0 9 2 b b 6 6 7. htm s e t c a l e _ a j u t o r =% partea1 %% partea2 % s e t c a l e _ r e f e r i n t e =% r e f _ p a r t e a 1 %% r e f _ p a r t e a 2% s e t treaba1 = i e x p l o r e % c a l e _ a j u t o r% s e t treaba2 = i e x p l o r e % c a l e _ r e f e r i n t e % path =% path %;% c a l e _ M a n a g e m e n t S t u d i o %;% c a l e _ S e r v e r M a n a g e r (cont.) %;% c a l e _ b r o w s e r% echo . echo Pentru SQL Server Manager Studio tastati : Ssms echo . echo Pentru SQL Server C o n f i g u r a t i o n Manager tastati : (cont.) S Q L S e r v e r M a n a g e r 1 0 . msc echo . cd C :\ s t a r t % treaba1 % & s t a r t % treaba2 % & cmd deschidere_help.bat

1 2

5 6 7 8

9 10

11 12

@echo o f f s e t c a l e _ h e l p= " C :\ Program Files \ Common Files \ M i c r o s o f t (cont.) Shared \ Help 8 " s e t partea1 = ms - help : // MS . SQLCC . v10 / MS . SQLSVR . v10 . en / (cont.) s 1 0 s q _ G e t S t a r t / s e t partea2 = html /31 f9e6dc - e946 -4576 -80 bb -729 f 2 b e e 7 4 7 8. (cont.) htm s e t adresa =% partea1 %% partea2 % s e t treaba = dexplore / helpcol % adresa % s e t mesaj1 = Help pentru M i c r o s o f t SQL Server 2008 R2 . s e t mesaj2 = Mergeti in josul index - ului de help pana (cont.) dati de " t u t o r i a l s" . s e t mesaj3 = Enjoy ! echo . & echo % mesaj1 % & echo % mesaj2 % & echo % mesaj3 % & (cont.) echo . cd % c a l e _ h e l p% & ( s t a r t % treaba %) & ( cd C :\) c a l l cmd

Poze

Figura 4

Figura 5

Figura 6

Figura 7

Figura 8

Figura 9

Figura 10

Figura 11

Figura 12

Figura 13

10

Figura 14

Figura 15

11

Figura 16

Figura 17

12

Figura 18

Figura 19

13

Figura 20

Figura 21

14

Figura 22

Figura 23

15

Figura 24

Figura 25

16

Figura 26

Primul proiect SQL Server Management Studio

Construim un director (folder) destinat viitoarelor programe SQL, C:\Pro iecteleMele_SQL . Acestea vor elaborate cu ajutorul SGBD-ului SQL Server Management Studio (SSMS). Extensia limbajului SQL5 folosit a de SSMS este T-SQL (Transact-SQL), cf. [8, p. 1]. O discut ie (complicat a [6, p. 75]) privind deosebirile dintre T-SQL si standardul limbajului SQL (ANSI, ISO) presupune abordarea nivelurilor de conformitate 6 . In cadrul T-SQL, compatibilitatea/conformitatea cu variantele anterioare este dat a de COMPATIBILITY_LEVEL , vezi [5]. Lans and n execut ie SSMS-ul, ajungem la o fereastr a asem an atoare celei din Figura 27. Aici, avem mai multe sub-ferestre (opt ionale) ale c aror titluri au fost nconjurate cu elipse ro sii: Object Explorer, Solution Explorer, Template Explorer, Output. Ele pot accesate folosind meniul View din elipsa albastr a . In Figura 28 se indic a modul de a ajunge la fereastra Output. Adic a, folosind calea View/Other Windows/Output.
5 6

De la englezescul Structured Query Language, [2, p. 1], [6, p. 73]. In limba englez a, levels of conformance, [10, p. 3 si urm.]

17

Sistemul de gestiune este, acum, (aproape7 ) gata pentru primul nostru proiect. Din meniul File, vezi Figura 29, select am opt iunea New iar aici alegem varianta Project. In fereastra New Project din Figura 30 avem grij a s a e activ a iconit a SQL Server Scripts din elipsa albastr a vom introduce numele proiectului, si anume Primul_proiect, n c ampul de culoare alb a intitulat Name, respectiv vom preciza directorul proiectului n c ampul Location. Pentru a salva proiectul n directorul construit anterior, folosim butonul Browse. Ultimul c amp al ferestrei New Project este Solution Name. Aici va ap area (standard) numele proiectului. Ceea ce se nume ste solut ia unui proiect SSMS, vezi sierul Primul_proiect.ssmssln din Figura 49, va permite printr-o dubl a ap asare pe butonul st ang al mouse-ului nc arcarea acestuia n SGBD, indiferent dac a sistemul de gestiune este n execut ie sau nu. In Figura 31 poate observat a fereastra Solution Explorer, n care a ap arut elementul Primul_proiect . Ne pozit ion am cu cursorul pe el si, ap as and butonul drept al mouse-ului, producem aparit ia unui meniu din care vom selecta varianta Add. Aceasta, odat a activat a, evident iaz a alt meniu, de unde vom alege opt iunea New Item. In Figura 32 avem o nou a fereastr a (pop-up), Add New Item. Aici, din lista dreapt a Categories , veric am s a e selectat elementul Database. Trec and la lista st ang a, Templates, alegem elementul Create Database. Apoi, nlocuim textul din c ampul Name cu un nume convenabil, mai precis crearea_bazei.sql. Dup a care act ion am butonul Add din elipsa albastr a. Ca urmare a act iunii noastre, n Figura 33 a fost a sat un cod sablon8 (standard), pe care l vom ignora, nlocuindu-l cu textul din Figura 38, listat mai jos.
crearea_bazei.sql
1 2 3 4 5

USE master ; IF DB ID( n u m e _ p r e n u m e ) IS NOT NULL DROP DATABASE n u m e _ p r e n u m e;

CREATE DATABASE n u m e _ p r e n u m e; 7 -- CREATEE DATABASE n u m e _ p r e n u m e; 8 GO


6

Comentariile, esent iale ntr-un program complicat, pot f acute e pe c ate un r and folosind simbolul --, e ntr-un paragraf cu ajutorul delimita7 8

Lipse ste numerotarea r andurilor, de care ne vom ocupa ulterior. In limba englez a, template.

18

torilor /*, */. D.ex., am dezactivat instruct iunile de la r andul 7 al scriptului folosind un comentariu uni-r and. De asemeni, urmez ndeaproape recomand arile/stilul de programare din [2]. Astfel, simbolul (opt ional) ; este util ca nal al instruct iunilor T-SQL, [ibid., p. 20]. Comanda GO nu face parte din limbajul T-SQL, ci este adresat a SSMSului, pentru execut ia ca un tot unitar a unui grup de instruct iuni [7]. Revenind la Figura 33, apel am iara si meniul Add, din care vom selecta elementul New Query. Rezultatul este reprodus n Figura 34. Astfel, un nou sier SQLQuery1.sql a fost ad augat proiectului. Pozit ion andu-ne cu cursorul pe iconit a acestuia din fereastra Solution Explorer, ap as am butonul drept al mouse-ului, ceea ce ne permite via opt iunea Rename s a-l redenumim n mod convenabil: crearea_tabelului.sql.
crearea_tabelului.sql
1 2 3 4 5 6 7

USE n u m e _ p r e n u m e ; IF OBJECT ID( dbo . t a b e l u l _ c e n t r a l , U ) IS NOT NULL DROP TABLE dbo . t a b e l u l _ c e n t r a l ; CREATE TABLE dbo . t a b e l u l _ c e n t r a l ( nume N V A R C H A R(40) NOT NULL, prenume N V A R C H A R(40) NOT NULL );

In cazul primului program SQL, vezi Figura 32, am fost ajutat i la scrierea codului de lista Templates. Mai precis, vezi Figura 33, n fereastra central a (browser) a SSMS-ului a ap arut sablonul codului necesar cre arii unei noi BD, pe care l-am ignorat. Este ns a util, n majoritatea situat iilor, s a compar am codul nostru cu tipicul SGBD-ului. Pentru a g asi sablonul de cod al introducerii unui tabel n baza de date nou denit a, utiliz am fereastra Template Explorer, din Figurile 34 elipsa albastr a , 35. Pentru a produce codul din fereastra central a a Figurii 35 este sucient s a activ am elementul Create Table din (sub-)lista Table. Am ajuns la Figura 36. Astfel, ne punem ntrebarea: este corect codul scris de noi p an a acum ? Mai ales c a am ignorat sabloanele. . . Pentru a-l verica, dat ind c a sierele SQL din proiect sunt, defapt, interog ari ale unor BD din server, trebuie s a ne conect am (mai nt ai) la diverse baze de date. Veric am dac a serverul funct ioneaz a folosind Services, Server Conf iguration Manager despre care am pomenit deja . O scurt atur a este dat a de sierele de comenzi listate n continuare. Cel de-al doilea prive ste oprirea serverului, de realizat dup a ce ne-am ncheiat activit a tile SSMS.
start_servicii.bat
1

@echo o f f

19

2 3 4 5 6 7 8

cd C :\ echo . echo Pornire servicii SQL ... echo . NET START M S S Q L S E R V E R NET START S Q L S E R V E R A G E N T c a l l cmd stop_servicii.bat

1 2 3 4 5 6 7 8 9 10

@echo o f f cd C :\ echo . echo Oprire servicii SQL ... echo . :: incepem cu agentul , care depinde :: de s e r v i c i u l s e r v e r u l u i NET STOP S Q L S E R V E R A G E N T NET STOP M S S Q L S E R V E R c a l l cmd

Revenind la Figura 36, select am Database Engine din meniul Connect a sat n fereastra Object Explorer. Rezultatul este prezentat n Figura 37, adic a aparit ia ferestrei Connect to Server. Aici, doar la prima utilizare a SSMS-ului, ap as am butonul Connect din elipsa ro sie. Altfel, vezi si Figura 44, folosim butonul Options >> si apoi, n fereastra Connection Properties, la rubrica Connect to database, opt am pentru <default>. Dac a totul a decurs bine, atunci n bara orizontal a de culoare galben din josul ferestrei centrale a SSMS-ului se va vedea mesajul Connected... Am folosit opt iunea <default> n alegerea bazei de date la care ne-am conectat deoarece codul pe care vrem s a-l veric am utilizeaz a BD-ul master. Aceast a baz a este vizibil a n fereastra Object Explorer din Figura 38 n (sub-)lista System Databases. Activ am instruct iunea cu gre seli (nr. 7) din scriptul crearea_bazei.sql. Apoi, salv am modicarea adus a codului ap as and butonul disket a din mica elips a ro sie . Zona modicat a n program va evident iat a de o bar a vertical a de culoare verde. Vericarea9 codului se face ap as and triunghiul verde din elipsa de culoare maro. Rezultatul se g ase ste n Figura 39, n elipsa albastr a. Corect am codul, l salv am si relu am debugging-ul ap as and triunghiul verde a doua oar a. Deoarece codul este corect, operat iunea va 10 trebui ncheiat a manual , vezi Figura 40. Pentru aceasta ap as am p atratul
9 10

In limba englez a, debugging. Au trecut deja (00:00:) 28 secunde. . . , vezi banda galben a de sub cod.

20

ro su din elipsa de aceea si culoare. In Figura 41, n elipsa albastr a, g asim r aspunsul la act iunea noastr a: ncheierea interog arii la cererea utilizatorului. Codul este corect si suntem preg atit i s a cre am prima baz a de date. Pentru aceasta, n Figura 41, ap as am butonul Execute, evident iat printr-un semn de exclamare n culoarea ro su. Ca s a vedem rezultatul interog arii, n Figura 42, utiliz am butonul Refresh din fereastra Object Explorer situat n elipsa ro sie . In Figura 43, elementul nume_prenume (elipsa albastr a) a ap arut n lista Databases din fereastra Object Explorer. Dorim, mai departe, s a manipul am noua BD. Pentru aceasta, ne deconect am de la baza de date master, vezi tot Figura 43, folosind butonul Disconnect din elipsa ro sie. Conectarea la baza nume_prenume se face ca n Figura 44. Relu am operat iile: Refresh, Debug si Execute pentru scriptul crearea _tabelului.sql. Am ajuns la Figura 45: BD-ul nostru posed a un tabel numit tabelul_central . Aici, numele obiectului (tabel) nu este complet calicat 11 . Prin dbo se desemneaz a schema standard de care apart ine12 obiectul, [2, p. 18]. In continuare, popul am tabelul.
popularea_tabelului.sql
1 2 3

USE n u m e _ p r e n u m e ; GO

INSERT INTO dbo . t a b e l u l _ c e n t r a l ( nume , prenume ) 5 VALUES( N Popa ,N Ion ) ; 6 INSERT INTO dbo . t a b e l u l _ c e n t r a l ( nume , prenume ) 7 VALUES( N Belu ,N Gigi ) ; 8 GO
4

Rezultatul se vede n Figura 46, unde primim mesajul c a au fost afectate 13 de schimbare (populare) 1 + 1 = 2 r anduri (linii de tabel). Din acest moment putem interoga n sens propriu BD-ul: ce anume con tine baza de date ? Fire ste, exist a mai multe moduri de transmitere a r aspunsului c atre utilizator. Ad aug am urm atorul script proiectului SSMS.
interogarea_1.sql
1 2

USE n u m e _ p r e n u m e ; SELECT nume AS numele_cautat ,


In limba englez a, fully qualied name. Incep and cu SQL Server 2005, o schem a desemneaz a si un container (utilizator, [15, p. 42]) si un nume de spat iu (namespace), vezi [13]. 13 In limba englez a, rows.
12 11

21

3 4 5 6

prenume AS p r e n u m e l e _ c a u t a t F R O M dbo . t a b e l u l _ c e n t r a l ; GO

R aspunsul la interogarea precedent a realizat a prin execut ia scriptului , poate receptat folosind butonul Results to Grid situat n elipsa ro sie vertical a din Figura 47. Acesta va ap asat, bine-nt eles, naintea butonului Execute. Dac a opt am pentru butonul Results to File, vezi Figura 48, n urma execut iei va ap area fereastra Save Results. Fi sierul obt inut, raspunsul_cerut.rpt, al c arui cont inut poate vizualizat, d.ex., cu utilitarul Notepad , este listat mai jos.
raspunsul_cerut.rpt
1 2 3 4 5 6

numele_cautat -------------------Popa Belu (2 row ( s ) affected )

prenumele_cautat ---------------------Ion Gigi

In ncheiere, s a numerot am liniile de cod din fereastra central a a SSMS ului. In Figura 50, din meniul Tools alegem varianta Options. Aceasta ne va conduce la fereastra Options din Figura 51. Aici, din lista Text E ditor/Transact-SQL, situat a n partea st ang a a ferestrei, select am elemen tul General. In urma activ arii listei Display, n partea dreapt a a ferestrei, bif am opt iunea Line Numbers. Rezultatul alegerii noastre este ilustrat n elipsa ro sie din Figura 52.

22

Alte (multe. . . ) poze

Figura 27

Figura 28

23

Figura 29

Figura 30

24

Figura 31

Figura 32

25

Figura 33

Figura 34

26

Figura 35

Figura 36

27

Figura 37

Figura 38

28

Figura 39

Figura 40

29

Figura 41

Figura 42

30

Figura 43

Figura 44

31

Figura 45

Figura 46

32

Figura 47

Figura 48

33

Figura 49

Figura 50

34

Figura 51

Figura 52

35

Diverse proiecte SSMS


VA URMA

Surse bibliograce
[1] Fis iere batch, http://en.wikipedia.org/wiki/Batch_file [2] Ben-Gan, I., Microsoft SQL Server 2008. T-SQL fundamentals, Microsoft Press, Redmond, 2009 [3] Biblioteca: Programe_C++_1, https://www.dropbox.com/sh/gi3yyjt1rsq58vl/6R_nE49U9j [4] Books Online (BOL): Technical Reference, http://msdn.microsoft.com/en-us/library/ bb500275%28v=sql.100%29.aspx [5] COMPATIBILITY_LEVEL , BOL: ms-help://MS.SQLCC.v10/MS.SQLSVR.v10.en/s10de_6tsql/html/ ca5fd220-d5ea-4182-8950-55d4101a86f6.htm [6] Fotache, M., SQL. Dialecte DB2, Oracle, PostgreSQL s i SQL Server, Edit ia a II-a rev azut as i ad augit a, Ed. Polirom, Bucures ti, 2009 [7] GO, BOL: ms-help://MS.SQLCC.v10/MS.SQLSVR.v10.en/s10de_6tsql/html/ b2ca6791-3a07-4209-ba8e-2248a92dd738.htm [8] Henderson, K., Transact-SQL, Ed. Teora, Bucures ti, 2002 [9] Instalarea SQL Server 2008 R2: tutorial, http://www.sqlcoffee.com/SQLServer2008_0013.htm [10] Kline, K., SQL in a nutshell, OReilly & Assoc., Beijing, 2001 [11] Microsoft SQL Server 2008 R2, http://www.microsoft.com/en-us/download/ details.aspx?id=30438

36

[12] MSDN, http://www.msdn.microsoft.com [13] SCHEMA, BOL: ms-help://MS.SQLCC.v10/MS.SQLSVR.v10.en/s10de_4deptrbl/ html/54aaa7cd-ed12-4787-ae2b-4024032a7cb5.htm [14] Service Pack 2, http://www.microsoft.com/en-us/download/ details.aspx?id=30437 [15] Stephens, R.; Plew, R.; Jones, A. D., Sams Teach yourself SQL in 24 hours. Fourth edition, Sams Publish., Indianapolis, 2008 [16] Utilizarea unui Service Pack, http://support.microsoft.com/kb/2527041

37

S-ar putea să vă placă și