Sunteți pe pagina 1din 17

Anul universitar

2019-2020
MICROSOFT SQL SERVER.

1. Istoria bazelor de date.

Când vine vorba despre stocarea informaţiilor, pentru unii acest termen înseamnă o agenda veche în care
sunt trecute toate datele importante de care au nevoie: adrese, numere de telefon, informaţii financiare s.a.m.d..
Pentru cei din domeniul IT şi nu numai, înseamnă sisteme dedicate special stocării datelor importante.
În acest articol voi face o istorie a ceea ce înseamnă stocare datelor cu ajutorul produselor informatice.
Primele baze de date erau dezvoltate pe sisteme mainframe şi erau manipulate de oameni special pregătiţi
pentru a gestiona aceste sisteme. Aceste baze de date erau simple Sisteme de Gestiune a Bazelor de Date
(SGBD). Primul Sistem de Baze de Date Relaţionale (SGBDR) a fost lansat de Oracle Corporation si folosea
limbajul de interogare SQL. Deşi versiunea originală a fost dezvoltată pentru sisteme VAX/VMS, Oracle a fost
unul dintre primii furnizori care a lansat o versiune si pentru sistemele PC pe sistemul de operare DOS.
La jumătatea anilor 80, Sybase a lansat propriul sau SGBDR - SQL Server. Acesta avea biblioteci client
pentru accesul la baza de date. AsigurБnd suportul pentru proceduri rezidente (astăzi denumite proceduri
stocate") si interoperabilitatea cu o diversitate de reţele, SQL Server a devenit un produs de succes în scurt timp,
mai ales în mediile client/server.

O dată cu dezvoltarea sistemelor personale (PC), au apărut şi primele aplicaţii de baze de date care
foloseau un singur fişier pentru a stoca toata informaţia din baza de date (denumite baze de date flat file"). Ele
erau de tip Xbase, un limbaj care s-a răspândit foarte repede fiind folosit in special la manipularea datelor.
Sistemele care l-au folosit, daca mai este nevoie sa le enumăr, au fost dBase, FoxBase, FoxPro. Aceste versiuni
rulau sub sistemul MS-DOS şi împărtăşeau limitările acestuia. Cea mai răspândită aplicaţie care folosea limbajul
xBase a fost FoxPro, sistem dezvoltat de firma Fox Software. Chiar şi în zilele noastre există firme care
stochează alte extrem de importante în baze de date FoxPro, iar cel mai cunoscut exemplu este cel al organizaţiei
care gestionează Euro Tunel. Aceasta foloseşte o aplicaţie care gestionează câteva sute de GB de date.
La începutul anilor 90, firma Microsoft Corporation a lansat aplicaţia Access, aplicaţie care se bazează în
mare parte pe logica de stocare a sistemului FoxPro, sistem care fusese achiziţionat de firmă în 1989. Aplicaţia
Access a devenit, în scurt timp, cea mai folosită aplicaţie de gestiune a bazelor de date flat file" de pe sistemele
personale. Ajuns acum la versiunea 9 (denumită 2000), sistemul de stocare s-a schimbat fiind pregătit să fie
scalat oricând către o baza de date Microsoft SQL Server. Totodată, începând cu versiunea 7 i s-a adăugat un
limbaj de programare dedicat (Visual Basic for Applications - VBA), bazat pe limbajul de programare Visual
Basic. Prin intermediul acestuia se puteau manipula datele mai uşor, se puteau folosi automatisme pentru diverse
interogări, afişări etc. Începând cu versiunea 9, limbajul integrat este compatibil cu Visual Basic şi cu limbajul
folosit de MS SQL Server.
În privinţa sistemelor server, piaţa s-a dezvoltat uimitor de repede deoarece s-a constatat cât de
folositoare sunt sistemele dedicate acestui lucru. Oracle a lansat şi şi-a dezvoltat baza de aplicaţii server, astăzi
ajungând la versiunea 9. Începând cu versiunea 8i, au fost introduse extensii orientate pe obiecte. Lansată cu
ocazia Oracle OpenWorld , Oracle 9i reprezintă cea mai completă infrastructura pregătită pentru rularea
aplicaţiilor Internet. Oracle 9i include Oracle 9i Database si Oracle 9i Application Server si pachetul de unelte de
dezvoltare Oracle 9i Developer Suite.

În ceea ce priveşte corporaţia Microsoft, aceasta a lansat tot în anul 2000 serverul de baze de date SQL
Server 2000. Aplicaţia se doreşte a fi un concurent direct pentru aplicaţiile Oracle, iar pentru acest fapt i s-a
adăugat suport 100% pentru limbajul XML prin intermediul căruia se poate interoga direct serverul dintr-un
browser (dacă serverul a fost configurat să suporte această facilitate).

Tot în 2000, compania IBM a lansat varianta 7 a aplicaţiei DB 2. Aceasta aplicaţie, ca şi Oracle, este
implementata pe mai multe platforme (inclusiv Linux), fiind o aplicaţie pur obiectuală. Si pentru ca am ajuns la
aplicaţii de baze de date obiectuale, trebuie să amintim şi de aplicaţia companiei Computer Associates, Jasmine.
Pe sistemele Linux, cel mai folosit server de baze de date este MySQL. Cu toate că există un alt produs
gratuit (MySQL este gratuit atât timp cât aplicaţia dezvoltata nu este revânduta) - PostgreSQL, MySQL rămâne
preferatul programatorilor de Linux. De ce? Pentru că limbajul cel mai folosit pe partea de server web - PHP -
dispune de o extensie MySQL înglobată. Dar nu numai acest lucru a influenţat folosirea MySQL. Una dintre
alegeri a fost şi datorită uşurinţei administrării acestui sever, el dispunând de un client de accesare inclus.

2. Descrierea generală a SGBD InterBase.

Sistemul de gestiune a bazei de date (SGBD) InterBase prezintă implementarea


modernă a bazelor de date relaţionale, bazate pe tranzacte. SGBD InterBase poate prelucra în
paralel atât un volum mare de tranzacţii mici cât şi tranzacţii cu prelucrarea de lungă durată
datelor. InterBase are o tehnologie unică de delimitare a tranzacţiilor, care nu blochează
comenzile de citire şi înscriere, fiindcă tranzacţiile nu necesită blocarea tuplelor folosite. Şi
aceste tranzacţii nu necesită programare adăugătoare.
Arhitectura sa SuperServer măreşte performanţa şi optimizează resursele sistemului, în
special pentru un număr mare de utilizatori, fiindcă este realizată pe prelucrare în procese paralele. Un
concept de bază a arhitecturii SuperServer este colectarea centralizată a informaţiei despre utilizatori,
a statisticii despre Baza de Date şi apelurile clienţilor. Aceasta permite păstrarea informaţiei des
utilizate în cache şi îmbunătăţeşte timpul de răspuns.
Instalarea serverului necesită doar 10 MB de memorie ceea ce ne permite să nu ne gândim la
spaţiu liber la instalare. Alt lucru la care nu trebuie de pierdut timpul este ajustarea parametrilor,
fiindcă InterBase optimizează tranzacţiile pentru d-stă.

Să enumerăm unele din posibilităţile principale:

 notificatorii de evenimente;
 trighere;
 proceduri stocate;
 restricţii de integritate a datelor.
Notificatorii de evenimente permit de a notifica pe cineva în cazul apariţiei unui eveniment
concret, fără a apela Baza de Date în continuu. De exemplu, InterBase poate notifica un manager, prin
e-mail, că în stoc se termină un produs oarecare.

Trigherele pot să asigure respectarea business regulilor pe server, astfel toate aplicaţiile ce
folosesc date corporative respectă aceste reguli automat. Cu atât mai mult că trigherele pot să
automatizeze răspunsurile la evenimente pe server, de exemplu să ceară validarea datelor când un
tuplu este schimbat.

Procedurile stocate permit mărirea vitezei de răspuns prin delegarea lucrărilor de rutină de la
client la server. Totodată procedurile stocate încurajează proiectarea modulară şi fac exploatarea şi
reutilizarea mai simplă şi mai sigură prin limitarea operaţiilor la cele definite în proceduri. Funcţiile
definite de utilizatori extind capacităţile de calcul şi posibilităţile de creare a operaţiilor business
dorite. InterBase are o bibliotecă de funcţii standarde gata, astfel nu va trebui să începeţi de la zero.

Restricţiile de integritate a datelor fac posibil menţinerea relaţiilor dintre tuplele păstrate în
Baza de Date. InterBase asigură patru tipuri de restricţii de integrităţii datelor:

Unique şi Primary Key: asigură să nu existe două tuple cu acelaşi valori pentru o mulţime
de coloane;

Integritatea referinţelor în cascadă: validează relaţiile părinte-copil între tabele pentru


asigurarea sincronizării şi modificările sau ştergerile în cascadă;

Check: condiţia asociată va fi validată pentru orice tuplu al tabelului;

Domain: permite crearea tipurilor noi de date şi specificării integrităţii la nivel de coloane.
Domeniile pot fi utilizate pentru a specifica un segment de valori acceptabile sau o listă de valori
valide şi o valoare implicită. Aceasta înseamnă că după definirea domeniului, el poate fi utilizat în
orice loc al aplicaţiei ca o referinţă la un tip de date mai sofisticat.

În 1986, InterBase a elaborat primul SQL server cu suport a două tipuri de date
avansate. BLOb (sunet, imagine, grafică sau informaţie binară) şi masive multidimensionale
(până la 16 dimensiuni într-un câmp). Aceasta a făcut ca InterBase să fie alegerea pentru
aplicaţiile ştiinţifice şi multimedia cum atunci atât şi acum. Azi, WWW şi aplicaţiile de
telefonie utilizează BLOb foarte des pentru a oferi soluţii multimedia. Şi cu InterBase
serverul este adoptat automat la utilizarea filtrelor, compresoarelor şi convertoarelor de date,
de exemplu să transforme o fotografie scanată într-un fişier jpeg.
Să admitem că doriţi să mutaţi Baza de Date de pe un calculator pe o soluţie Client/Server.
Sau aveţi nevoie să lărgiţi aplicaţia în aşa mod ca să fie utilizată de mai multe departamente. În orice
caz, InterBase este o soluţie ideală fiindcă el a fost proiectat în special pentru medii de Baze de Date
distribuite.

InterBase poate prelucra tranzacţiile multi-server. Această posibilitate automat asigură ca


modificările distribuite să fie acceptate (commited) fără vreo intervenţie specială din partea aplicaţiei.
Când o tranzacţie se extinde pe mai multe servere, InterBase automat apelează serverele pentru să se
asigure că ele lucrează, apoi transmite instrucţiunea comit pentru a termina tranzacţia. Pe lângă
aceasta InterBase permite, dacă ceva sa întâmplat, de a anula tranzacţia pe toate serverele implicate.

InterBase este implementat utilizând ANSI SQL-92. Această interfaţă standard reduce
considerabil timpul de adoptare la InterBase a elaboratorilor noi. El se utilizează la implementarea
procedurilor stocate, trigherelor, restricţiilor şi declaraţiilor de integritate a datelor.

3. Suport extins pentru aplicaţiile de baze de date.

Dicţionarul de date stochează si utilizează informaţia despre conţinutul si comportamentul


datelor din tabele. Aici se pot specifica atribute extinse de câmpuri precum valorile minimă, maximă
si implicită, opţiunile de formatare în afişare si editare. Este locul ideal pentru a stabili si asigura
integritatea datelor. Formele în care urmează să fie utilizate vor prelua instantaneu caracteristicile si
vor stabili conexiunile la selectarea câmpurilor de date.

Componentele de acces la bazele de date au fost rescrise în întregime păstrând însă interfaţa
versiunilor precedente. Astfel, tabelele si query-urile sînt completate cu proprietăţi si evenimente de
filtrare dinamică a datelor si oferă evenimente suplimentare pentru tratarea extinsă a erorilor. Există o
proprietate care permite utilizarea facilităţii de stocare în cache a modificărilor (detalii despre cache
updates mai jos). Tabelele pot face uz de tehnica specială BDE de filtrare a datelor printr-o expresie
de tip SQL care garantează obţinerea unui set editabil de înregistrări (ceea ce nu întotdeauna este
posibil printr-un query) cu minimum de consum de memorie.
4. Limbajul SQL.

4.1. Noţiuni generale.

Limbajul SQL (Structured Query Language – Limbaj de Interpelări Structurat) este un set de
comenzi şi operatori de gestiune a bazelor de date relaţionale. Standardul pentru limbajul SQL a fost
elaborat în anul 1992 de către Organizaţia Internaţională de Standardizare ISO (International Standards
Organization) şi Institutul Naţional American de Standarde ANSI (American National Standards Institute)
şi poartă denumirea de SQL-92.

Înainte de a începe expunerea propriu zisă a comenzilor limbajului SQL vom defini o serie de
noţiuni fundamentale ale limbajului: baza de date, tabel, index, relaţie, etc.

Baza de date este o colecţie de tabele (ce conţin date) şi o serie de obiecte suplimentare numite
indecşi, tabele virtuale, relaţii între tabele, proceduri încorporate şi trighere toate ele fiind definite
pentru a spori eficienţa gestionării datelor. Informaţia stocată într-o bază de date se referă la un domeniu
concret de activitate.

Tabelul este un element al unei baze de date care reprezintă un set de date organizat în
formă de coloane şi linii. Fiecare coloană conţine un nume, tip şi lăţime. Coloanele se numesc câmpuri,
iar liniile se articole al tabelului.

Indexul este un element al bazei de date care permite programelor de gestiune a bazei de
date de a regăsi rapidă a informaţilor necesare fără a scana întreg tabelul. Accesarea rapidă a articolelor
unui tabel se bazează pe valorile unei expresii de indexare.

După cum am mai menţionat, SQL prezintă din sine un limbaj structurat de interpelări.
Acesta este un limbaj care dă posibilitate de a crea baze de date relaţionale şi a lucra cu ele. Baza de date
este un set de informaţie legată, care se păstrează în tabel.

Spaţiul informaţional devine tot mai unificat. Asta a adus la necesitatea creării unui limbaj
standard, care s-ar putea folosi în diferite tipuri a mediilor de calculatoare. Limbajul standard va da
posibilitatea utilizatorilor, care cunosc un set de comenzi, să le folosească pentru crearea, găsirea,
modificarea şi transferarea informaţiei - independent de faptul, că ei lucrează la calculator personal, la o
staţie lucrătoare de reţea, sau la calculator universal.

În lumea calculatoarelor, utilizatorul care are limbajul dat, are un mare avantaj în
utilizarea şi generalizarea informaţiei dintr-un şir de surse cu ajutorul unui mare număr de
metode.
Eleganţa şi independenţa de la specificul tehnologiilor informaţionale, şi susţinerea lui de către
liderii industriei în sfera tehnologiei bazelor de date relaţionale, a făcut limbajul SQL limbaj standard de
bază. Din această cauză oricine care doreşte să lucreze cu bazele de date a anilor 90, trebuie să cunoască
SQL.

Standardul SQL este determinat de ANSI (American National Standards Institute) şi în momentul
de faţă el este acceptat şi de ISO (Organizaţia Internaţională a Standardelor). Însă majoritatea programelor
comerciale a bazelor de date îl lărgesc fără a pune la cunoştinţă ANSI, adăugând diverse particularităţi în
acest limbaj, care, cum ei cred că ele vor fi forte folositoare. Câteodată ele ceva schimbă standardul
limbajului, dar ideile bune au tendinţa de a se dezvolta şi curând devin standarde a "pieţei" de la sine ele
în puterea folositoare a calităţilor sale.

Aplicaţiile C++ Builder se adresează la date prin intermediul BDE (Borland Database Engine).
Tipul de acces la bazele de date variază în funcţie de tipul bazei de date. Bazele de date locale Paradox,
dBASE, MS Access şi FoxPro sunt apelate de BDE prin intermediul driver-ilor standarde. Datele din
serverele SQL sânt primite datorită utilizării sistemului special de driver-e SQL Links. Un rol important
în prelucrarea şi trimiterea interpelării îl joacă sistemul de prelucrare a interpelărilor – componentă a
procesorului BD. Toate sistemele de gestionare a bazelor de date nu utilizează limbajul SQL ca mijloc
principal în lucru cu datele. Cu toate acestea, BDE cu ajutorul driver-ului standard respectiv translează
cererile ce vin de la aplicaţii într-o formă înţeleasă de sistemul de gestiune al bazei de date şi primeşte
răspuns. Deoarece cererea către orice BD locală se execută de un singur mecanism, există o sintaxă unică
SQL pentru lucru a astfel de date. Această variantă poartă denumirea de SQL local şi este o parte
componentă din standardul SQL92.

Toate serverele BD care lucrează cu BDE prin SQL Links sunt nişte sisteme
industriale complicate şi lucrează pe baza extensiilor proprii ale limbajului. În acest caz BDE
pur şi simplu transmite cererea la server, fără a o transla sau modifica. Este evident că, în
acest caz elaboratorul aplicaţiei trebuie să cunoască această variantă SQL.

4.2. Componenţa limbajului SQL.

Limbajul SQL este destinat pentru manipularea datelor în baze de date relaţionale , determinarea
structurii bazei de date şi dirijarea cu drepturile de acces la date într-un mediu cu mulţi utilizatori.

Şi de atâta, în limbajul SQL în calitate de părţi componente întră:

 limbaj de manipulare a datelor (Data Manipulation Language, DML)


 limbaj de determinare a datelor (Data Definition Language, DDL)
 limbaj de dirijare a datelor (Data Control Language, DCL).
O să subliniem, că acestea nu sânt limbaje aparte, ci sânt diverse comenzi a unui limbaj. Astfel de
divizare sa făcut numai din punctul de vedere a diverselor valori funcţionale a comenzilor date.

Limbajul de manipulare a datelor se utilizează, cum se vede din denumire, pentru manipularea
datelor în tabelele bazei de date. El este format din 4 comenzi de bază.

Comenzile de bază a limbajului SQL

Tab.2.4.2

SELECT (selectare)

INSERT (inserare)

UPDATE (modificare)

DELETE (ştergere)

Din punctul de vedere a interfeţei aplicate există două tipuri de comenzi SQL:

 SQL interactiv
 SQL incorporat.
SQL interactiv se utilizează în utilize speciale (de tipul WISQL sau DBD), care dau posibilitatea
în regim interactiv introducerea interpelărilor cu utilizarea comenzilor SQL, trimiterea lor pentru execuţie
la server şi pentru a primi rezultate în fereastra care este destinată pentru aceasta. SQL incorporat se
foloseşte în programele aplicate, şi le permite să trimită interpelări la server şi să prelucreze rezultatele
primite, şi cu tot mai mult combinând orientare - set şi orientarea - record.

4.3. Operaţii relaţionale. Comenzile limbajului de manipulare cu


datele.

Sarcina principală de pregătire a interpelării – crearea legăturii dintre sistemul de gestiune al BD


care va executa interpelarea, şi setul de date al componentei TQuery respective. Dacă acest lucru a fost
realizat, atunci se determină modalitatea de executare a interpelării – accesul local prin intermediul
driver-ului standard sau transmiterea textului cererii la server. După aceasta se setează valorile pentru
variabilele parametrilor interpelării.

Dacă interpelarea se execută local, atunci ea se transmite prin intermediul driver-ului standard la
sistemului de gestiune al BD respectiv pentru a fi executată de acesta. Prin legătura creată la pregătirea
interpelării rezultatul se transmite în setul de date al aplicaţiei.
Dacă interpelarea a fost adresată serverului SQL, atunci se presupune că ea are o sintaxă
specifică, corespunzătoare serverului dat. În acest caz toată pregătirea specială a parametrilor interpelării
se execută de partea serverului. BDE asigură numai transmiterea interpelării şi întoarcerea rezultatului de
execuţie la setul de date al aplicaţiei.

Încă o modalitate de executare a interpelărilor pentru serverul SQL – adresarea directă la funcţiile
API a serverului respectiv. Aceasta însă, este metoda cea mai rapidă, dar şi cea mai complicată pentru
elaboratori.

Cea mai importantă comandă a limbajului de manipulare cu datele este comanda SELECT. După
simplitatea sintaxei ei se ascunde o mare bogăţie de posibilităţi.

SELECT poate, de asemenea, întoarce date din multiple tabele, setând lista numelor
tabelelor în clauza FROM, separate prin virgulă.
Operatorul LIKE

Operatorul LIKE ne dă posibilitatea de a folosi caractere speciale în text. Caracterele speciale sînt
acele caractere care au o semnificaţie specială când sînt folosite în condiţia de căutare. Caracterul (%) va
semnifica – unul sau mai multe caractere, (_) – un singur caracter.

Operatorii Logici
Toate exemplele de până acum au inclus numai câte o condiţie de căutare. Însă, în SQL avem
posibilitatea de a include orice număr de condiţii de căutare în clauza WHERE combinându-le cu ajutorul
operatorilor AND sau OR.

Când AND apare între condiţiile de căutare, ambele condiţii trebuie să fie adevărate pentru ca
înscrierea să fie întoarsă.

Când OR apare între condiţiile de căutare, numai una din condiţii trebuie să fie adevărată pentru
ca înscrierea respectivă să fie întoarsă.

Când introducem condiţii de căutare compuse, trebuie să ţinem cont de ordinea de evaluare a
condiţiilor.

Funcţiile agregate
SQL pune la dispoziţie funcţii agregate care calculează o singură valoare dintr-un grup de valori.
Grupul de valori sunt toate datele dintr-un câmp particular pentru setul dat de înscrieri. Funcţiile agregate
pot fi folosite în cadrul clauzei SELECT, sau oriunde în cadrul instrucţiunii SELECT unde se foloseşte
valoarea.

Clauza HAVING
La fel ca şi clauza WHERE care reduce numărul înscrierilor întoarse de clauza SELECT, clauza
HAVING poate fi folosită pentru a reduce numărul de înscrieri întoarse de clauza GROUP BY. La fel ca şi
clauza WHERE, clauza HAVING are condiţie de căutare. În clauza HAVING condiţia de căutare
corespunde tipic unei funcţii agregate folosite în clauza SELECT.

De obicei, cererea întoarce înscrieri în “ordinea naturală”, ordine în care înscrierile sînt găsite în
tabel. Deoarece păstrarea datelor în tabele este de obicei neordonată (nesortată), rezultatul cererii va fi de
asemenea nesortat. Clauza ORDER BY sortează rezultatul în acord cu câmpul specificat. Fiecare coloană
din clauza ORDER BY trebuie de asemenea să apară şi în clauza SELECT a instrucţiunii.

INSERT

Insert înscrie unul sau mai multe tuple de date într-un tabel sau view existent. Insert este una din
privilegiile bazei de date controlate de către comenzile GRANT şi REVOKE.

Valorile sunt înscrise în tuplu în ordinea coloanelor din tabelă, doar dacă nu este indicată o listă
de coloane vizate. Dacă lista de coloane vizate prezintă un subset al coloanelor disponibile, valorile nule
sau implicite automat sunt înscrise în toate coloanele nevizate.

Dacă lista opţională a coloanelor vizate este omisă, clauza VALUES trebuie să asigure valori
pentru introducerea în toate coloanele tabelei.

Pentru a introduce un singur tuplu de date, clauza VALUES trebuie să asigure o listă specifică de
valori pentru insertare.

Pentru a introduce mai multe tuple de date, trebuie să fie specificată o select expresie care
extrage datele dintr-o tabelă pentru a le introduce în tabela aceasta. Coloanele selectate trebuie să
corespundă cu coloanele vizate pentru introducere.
Este permis de a alege câmpuri de date din acelaşi tabel în care dorim să efectuăm introducerea,
dar aşa practică nu se recomandă deoarece poate cauza in introducerea infinită de tuple.

UPDATE

Modifică parţial sau în întregime tuplul existent de date dintr-un tabel sau view. Disponibil în
SQL, DSQL şi isql.

UPDATE modifică unul sau mai multe tuple dintr-un tabel sau view existent. UPDATE este una
din privilegiile SGBD controlate de către GRANT şi REVOKE

DELETE

Modifică parţial sau în întregime tuplul existent de date dintr-un tabel sau view. Disponibil în
SQL, DSQL şi isql.
DELETE specifică unul sau mai multe tuple pentru ştergere din tabel sau view care poate
fi modificat. DELETE este una din privilegiile SGBD controlate de către GRANT şi REVOKE.

4.4. Crearea bazelor de date în SQL Server.

Pentru crearea unei baze de date se utilizează comanda CREATE DATABASE. Această
comandă permite de asemenea ataşarea unei baze de date la un fişier creat anterior.

database_name – numele bazei de date. Acest nume trebuie să fie unic pe server şi să
corespundă cerinţelor standard asupra identificatoarelor. Poate avea lungimea maximală de 128
de caractere. În cazul în care utilizatorul nu specifică numele fişierului log sistemul MS SQL
Server automat generează un nume de fişier prin adăugarea unui sufix la numele bazei de date. În
asemenea cazuri numele bazei de date trebuie să aibă maximum 123 caractere.

ON specifică în mod explicit lista de fişiere în care va fi amplasat grupul primar de


fişiere ale bazei de date. Aici pot fi indicate atât numele de fişiere cât şi numele grupurilor de
fişiere.

PRIMARY specifică faptul că grupul de fişiere va fi primar

n indică faptul că pot fi indicate mai multe fişiere pentru baza de date

LOG ON defineşte în mod explicit fişierele de înregistrare a tranzacţiilor. În cazul în care


lipseşte opţiunea LOG ON se va crea doar un singur fişiere de înregistrare a tranzacţiilor.
Numele acestui fişier va fi generat automat, iar dimensiune lui va constitui 25% din dimensiune
bazei de date.
FOR LOAD este inclusă în MS SQL Server 7.0 pentru compatibilitate cu versiunile
anterioare, dar nu se recomandă de a fi utilizată.
FOR ATTACH se utilizează pentru a crea o bază de date nouă prin ataşarea unei baze de
date existente. Opţiune <filespec> indică fişierele care formau baza de date veche. Pentru a ataşa
o bază de date veche la MS SQL Server este necesar ca să coincidă codul de pagină şi ordinea de
sortare (parametrii Code Page şi Sort Order).
NAME logical_file_name specifică numele bazei de date. Numele bazei de date nu este
necesar dacă ea se creiază prin ataşarea unei de baze de date existente. Numele creat prezintă un
nume de referinţă al bazei de date şi va putea fi utilizat în orice comandă Tranzact-SQL. Numele
logical_file_name trebuie să fie unic pe server.
FILENAME 'os_file_name' specifică numele fizic al fişierului pe disc. Trebuie să
conţină numele discului şi calea de acces. Dacă fişierul a fost creat într-o partiţie RAW, atunci nu
este nevoie de a se specifica şi numele directorului, se specifică doar numele discului. De
asemenea nu se specifică nici parametrii MAXSIZE şi FILEGROWTH fiindcă fişierul va ocupa
întreaga partiţie.
SIZE size specifică dimensiunea iniţială a bazei de date. Dacă parametrul SIZE lipseşte,
dimensiunea fişierului primar al bazei de date ce se creează va fi egală cu dimensiunea fişierului
model. Dacă dimensiunea lipseşte în definiţia fişierului secundar sau în definiţia fişierului de
înregistrare a tranzacţiilor, dimensiunea predefinită va fi egală cu 1 MB. Dimensiunea implicit se
indică în MB, dar utilizatorul poate indica şi dimensiunea în KB. Valoarea minimală pentru
dimensiunea unei baze de date este de 512 KB.
MAXSIZE max_size [UNLIMITE] specifică dimensiune maximală a fişierului definit
în <filespec>. Această dimensiune de asemenea poate fi definită în KB sau MB. Dacă nu a fost
indicat parametrul MAXSIZE sau dac[ a fost specificat şi parametrul UNLIMITED, atunci
dimensiunea maximală a fişierului va fi egală cu dimensiunea discului.
FILEGROWTH growth_increment specifică mărimea de incrementare a fişierului. De
fiecare dată când dimensiunea curentă nu este suficientă pentru înregistrarea informaţiei sosite,
fişierul îşi va mări dimensiunile cu valoarea indicată în parametrul FILEGROWTH. Valoarea de
incrementare poate fi indicată în MB, KB sau % (în procente faţă dimensiunea fişierului la
momentul incrementării).Dacă acest parametru nu a fost indicat la momentul creării bazei de
date valoarea incrementului va fi de 10%. Valoarea calculată în procente va fi rotunjită până la
64 KB.

Remarcă

1. Crearea bazei de date cu ajutorul comenzii CREATE DATABASE are loc în două
etape:
Se copie structura bazei de date model cu caracteristicile iniţiale ale bazei de date.

Se completează baza de date cu celelalte caracteristici specificate în comanda CREATE


DATABASE.
Utilizatorul poate introduce diferite modificări în baza de date model cu ajutorul
procedurii sp_dboption. Toate aceste modificări vor fi în continuare utilizate la crearea bazelor
de date noi.
2. Numărul maximal de baze de date pe un server este de 32,767
3. Orice bază de poate utiliza 3 tipuri de fişiere:
 Fişiere primare, care conţin definiţia bazei de date şi posibil date. Fiecare bază de
date are un singur fişier primar.
 Fişiere secundare, în care se înscriu datele ce nu au încăput în fişierul primar.
Fişierul secundare pot fi mai multe dar poate să nu fie nici unul, dacă fişierul prima este suficient
de mare ca să încapă în el întreaga bază de date.
 Fişierul de înregistrare a tranzacţiilor de asemenea este un fişier obligatoriu. Ele
post fi mai multe. Dimensiunea minimală a uni fişier este de 512 KB.
 Fiecare bază de date trebuie să aibă cel puţin două fişiere.
 Fişierele bazei de date pot avea orice extensie dar pentru a reflecta mai bine
conţinutul lor se recomandă de a utiliza următoarele extensii:
- mdf pentru fişierul primar;
- ndf pentru fişierele secundare;
- ldf pentru fişierul de înregistrare a tranzacţiilor.

4.5. Permisiunea de acces.

Comanda CREATE DATABASE permite accesul asupra bazei de date utilizatorilor cu rol
de sysadmin şi dbcreator. Aceşti utilizatori pot permite şi altora utilizarea bazei de date
atribuindu-le rolul dbcreator. De regulă comanda CREATE DATABASE este permisă doar unui
număr restrâns de utilizatori.
În continuare vom examina o serie de exemple de utilizare a comenzii de creare a unei
baze de date.

5. Crearea unui tabel.

Tabele se numesc acele obiecte ale unei baze de date în care se conţin toate datele.
Definiţia unui tabel reprezintă un set de coloane. Tabelele sunt organizate în formă de linii
Elementele de date se află la intersecţia liniilor şi a coloanelor (similar cu tabelele electronice).
Fiecare linie în tabel reprezintă un singur articol, fiecare coloană reprezintă un câmp al
articolului. Liniile şi coloanele se mai numesc respectiv tupluri şi atribute.
Pentru a crea o bază de date, mai întâi de toate proiectantul trebuie să înţeleagă de ce
tabele are nevoie, ce tipuri de date va păstra în fiecare tabel, cine va putea accesa fiecare tabel,
etc. În timpul proiectării tabelelor vor apare şi alte detalii asupra acestor obiecte.
Un mod mai eficient de proiectare constă în crearea unui proiect iniţial al bazei de date,
introducerea datelor şi manipularea datelor. Acest mod ne permite de a determina mai uşor
diferite caracteristici ale tabelelor: tipuri de date vor fi stocate, restricţii se vor defini asupra
datelor, indecşi, valori predefinite, reguli de inserare, eliminare şi modificare a datelor. De
asemenea se vor vedea tranzacţiile ce se aplică asupra bazei de date.
În rezultatul proiectării unui tabel proiectantul trebuie să determine următoarele:
 Tipurile de date ce vor fi stocate în tabel.
 Coloanele tabelului şi tipul fiecărei coloane (pentru unele tipuri de date este
nevoie de a determina şi lăţimea coloanei).
 Determinarea coloanelor care acceptă valoare nulă.
 Determinarea restricţiilor asupra datelor şi a regulilor de aplicare a operaţiilor de
manipulare a datelor.
 Determinarea indecşilor, a cheilor primare şi a cheilor externe.

Aşa dar, pentru a proiecta un tabel este necesar de ştiut ce tipuri de date susţine Sistemul
Microsoft SQL Server. Pot fi folosite tipurile standard de date (tipuri de bază) sau tipuri definite
de utilizator. Atribuirea unui tip de date fiecărei coloane constituie primul pas în proiectarea
oricărei baze de date. Prin definirea tipului de date a unei coloane se defineşte mulţimea valorilor
admisibile pentru coloana respectivă.
De exemplu dacă o coloană conţine nume de persoane, atunci tipul acestei coloane va fi
“şir de caractere”, iar dacă o coloană va trebuie să conţine numai valori numerice, atunci tipul
coloanei respective va fi numeric. Utilizarea corectă atât a tipurilor de date predefinite cât şi a
tipurilor de date definite de utilizator va da o mai mare garanţie de integritate a datelor, deoarece
orice valoare introdusă în baza de date va corespunde tipului de date definit în comanda de
creare a tabelului.
Microsoft SQL Server conţine următoarele tipuri de date predefinite împărţite în mai
multe grupe:
Date de tip “Numere întregi”

bit – numere întregi care pot lua una din două valori: 0 sau 1.

int – număr întreg cu semn pe 4 octeţi, valori admisibile de la -2^31 (-2,147,483,648) până 2^31 -
1 (2,147,483,647).
smallint – număr întreg cu semn pe 2 octeţi, valori posibile de la 2^15 (-32,768) până la 2^15 - 1
(32,767).

tinyint – număr întreg fără semn pe 1 octet, valori posibile de la 0 la 255.

Date de tip “Numere zecimale cu virgula constantă”:

decimal – numere zecimale cu virgula fixată, valori posibila între -10^38 -1 şi 10^38 -1.

numeric – sinonim cu tipul decimal.

La definirea datelor de tip decimal se indică doi parametri


p (precizia) – numărul total de cifre zecimale în care se va înscrie numărul (inclusiv partea
întreagă şi partea zecimală). Precizia poate lua valori de la 1 la 28 în cazul în care SQL Serverul a fost
startat în mod standard, sau de la 1 la 38 în cazul în care serverul a fost startat cu parametrul /p.

s (scale) – numărul de cifre zecimale. Poate lua valori de la 0 la p.

Volumul de memorie ocupat de o variabilă de tip numeric depinde de precizie după cum urmează:

Precizia Volum de memorie

1-9 5

10-19 9

20-28 13

29-38 17

Date de tip “Unitate monetară”:

money – numerice zecimale cu 4 cifre după virgulă, poate lua valori în intervalul de la -2^63 (-
922,337,203,685,477.5808) până la 2^63 - 1 (+922,337,203,685,477.5807).

smallmoney – numere zecimal cu 4 cifre după virgulă, ia valori în intervalul de la

-214,748.3648 până la +214,748.3647.

Date de tip “Numere zecimale cu virgula mobilă”:

float – numere zecimale cu virgula flotantă în intervalul de la -1.79E + 308 până 1a.79E + 308.

real – numere zecimale cu virgula flotantă în intervalul de la -3.40E + 38 până la 3.40E + 38.

Date de tip “Date calendaristice şi timp”:


datetime – păstrează data şi ora. Data poate fi o valoarea în intervalul de la 1 ianuarie anul 1753
până la 31 decembrie anul 9999. Timpul se defineşte cu exactitate de sutimi de secunde.

smalldatetime – păstrează data şi ora. Data poate lua o valoare din intervalul de la 1 ianuarie
anul 1900 până la 6 iunie anul 2097. Timpul se păstrează cu exactitate de minute.

Date de tip “Şir de caractere”

char – şiruri de caractere non-Unicod de lungime fixată (maximum 8000 caractere)

varchar - şiruri de caractere non-Unicod de lungime variabilă (maximum 8000 caractere)

text - şiruri de caractere non-Unicod de lungime variabilă (lungimea maximală 2^31 sau 1
(2,147,483,647 caractere).

nchar - şiruri de caractere Unicod de lungime fixată (maxium 4000 caractere)

nvarchar - şiruri de caractere Unicod de lungime variabilă (maxium 8000 caractere)

ntext - şiruri de caractere non-Unicod de lungime variabilă (lungimea maximală 2^30 – 1, sau
1,073,741,823 caractere)

Date de tip “şiruri binare”:

binary – şir binar de lungime fixată (maximum 8,000 octeţi).

varbinary – şir binar de lungime variabilă (maximum 8,000 octeţi).

image – şir binar de lungime fixată (maximum 2^31 - 1 sau 2,147,483,647 octeţi).
Cuprins:

MICROSOFT SQL SERVER..........................................................................................................2


1. Istoria bazelor de date..............................................................................................................2
2. Descrierea generală a SGBD InterBase....................................................................................3
3. Suport extins pentru aplicaţiile de baze de date.......................................................................5
4. Limbajul SQL...........................................................................................................................6
4.1. Noţiuni generale..............................................................................................................6

4.2. Componenţa limbajului SQL.........................................................................................7

4.3. Operaţii relaţionale. Comenzile limbajului de manipulare cu datele........................8

4.4. Crearea bazelor de date în SQL Server.......................................................................11

4.5. Permisiunea de acces....................................................................................................13

5. Crearea unui tabel......................................................................................................................13

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