Sunteți pe pagina 1din 9

CREAREA BAZELOR DE DATE SQL SERVER O baz de date SQL Server este compus din trei tipuri de fiiere:

un fiier cu extensia .mdf zero sau mai multe fiiere cu extensia .ndf i unul cu extensia .ldf n fiierul cu extensia .mdf sunt stocate obiectele bazei de date precum tabelele, indexii, vederile etc. mpreun cu definiiile lor, fiierele cu extensia .ndf sunt fiiere secundare ce conin numai date, iar fiierul cu extensia .ldf conine jurnalul de tranzacii. Orice baz de date are asociat un jurnal de tranzacii. Actualizarea unei nregistrri a bazei de date presupune memorarea n jurnalul de tranzacii a coninutului nregistrrii dinainte i dup actualizare. Jurnalul de tranzacii este folosit pentru restaurarea bazei de date n situaia n care apare o eroare ce necesit anularea sau reluarea unor operaii nregistrate. Pentru crearea unei baze de date se folosete comanda Create database care n form simplificat se prezint conform urmtoarelor exemple:
1) 2)

CREATE DATABASE dbStudenti CREATE DATABASE dbStudenti ON ( NAME = dbStd, FILENAME = 'L:\DB\Studenti.mdf' )
3)

CREATE DATABASE dbStudenti ON ( NAME = dbStd, FILENAME = 'L:\DB\Studenti.mdf' ) LOG ON ( NAME = dbStd_log, FILENAME = 'L:\DB\Studenti.ldf' )

4)
CREATE DATABASE dbMultiFisier ON PRIMARY ( NAME = F1, FILENAME = 'L:\db\Fisier1.mdf', SIZE = 2MB, MAXSIZE = 10MB, FILEGROWTH = 10%), ( NAME = F2, FILENAME = 'L:\db\Fisier2.ndf', SIZE = 1MB, MAXSIZE = 10MB, FILEGROWTH = 10%), ( NAME = F3,

FILENAME = 'L:\db\Fisier3.ndf', SIZE = 1MB, MAXSIZE = 10MB, FILEGROWTH = 10%) LOG ON ( NAME = F_Log1, FILENAME = 'L:\DB\Fisier_Log1.ldf', SIZE = 512KB, MAXSIZE = 10MB, FILEGROWTH = 10%), ( NAME = F_Log2, FILENAME = 'L:\db\Fisier_Log2.ldf', SIZE = 512KB, MAXSIZE = 10MB, FILEGROWTH = 10%)

In exemplul 1) baza de date dbStudenti va fi creat n folderul implicit C:\Program Files\Microsoft SQL Server\MSSQL\Data, precizat n timpul instalrii sistemului SQL Server In exemplele 2), 3) i 4) baza de date va fi creat n folderul DB al unitii L (care poate fi, de exemplu, un stick usb) ON semnific utilizarea unui grup de fiiere NAME -furnizeaz numele logic al fiierului datelor, respectiv al jurnalului FILENAME -furnizeaz numele fizic al fiierului datelor, respectiv al jurnalului SIZE parametru opional, specific dimensiunea iniial a fiierului msurat n KB, MB sau GB, valoare implicit 1MB pentru fiierul de date i 512KB pentru fiierul jurnal. Unitatea de msur implicit este MB. MAXSIZE -parametru opional, specific dimensiunea maxim la care poate ajunge fiierul. Dac se specific MAXSIZE sau i se atribuie UNLIMITED atunci fiierul crete ct i permite spaiul liber de pe disc FILEGROWTH parametru opional, precizeaz pasul cu care crete dimensiunea fiierului, n valoare absolut sau n procente raportat la fiierul asociat. Valoarea implicit este de 256KB cu valoarea minim 64KB. Valoarea 0 impiedic creterea fiierului. TERGEREA BAZELOR DE DATE Sintaxa:
DROP DATABASE denumire_baz_date

SALVAREA BAZELOR DE DATE


BACKUP DATABASE dbStudeti TO DISK='g:\dbSalvari\dbStudenti.bak'

In SQL Server 2008 a fost introdus backup-ul compresat. Acesta se realizeaza cu comanda BACKUP la care se adauga clauza WITH COMPRESSION. 2

Exemplu:
BACKUP DATABASE dbStudeti TO DISK='g:\dbSalvari\dbStudenti.bak' WITH COMPRESSION

RESTAURAREA BAZELOR DE DATE


RESTORE DATABASE dbStudeti FROM DISK='g:\salvari\ dbStudeti.bak'

INSTALAREA BAZELOR DE DATE Procedura de sistem sp_attach_db este folosit pentru a face o baz de date portabil, accesibil de pe un server nou. Astfel, dac o baz de date este stocat pe un support amovibil(nu neaprat), ea poate fi instalat printr-un appel de forma
sp_attach_db dbStd, 'L:\DB\Studenti.mdf' Numele bazei de date nu este necesar s coincid cu cel iniial

Instalarea unei baze de date se poate face i cu ajutorul comenzii create database cu folosirea clauzei for attach ca mai jos:
create database dbStd on (filename='L:\db\Studenti.mdf') for attach

DEZINSTALAREA BAZELOR DE DATE Procedura de sistem sp_detach_db este folosit pentru dezinstalarea bazelor de date prin apeluri de forma:
sp_detach_db dbStd Observaie

SQL Server Management Studio ofera faciliti grafice pentru instalarea i dezinstalarea bazelor de date

TIPURI DE DATE MICROSOFT SQL SERVER


Microsoft SQL Server conine urmtoarele tipuri de date predefinite, mprite n grupe:

Tipuri de date pentru numere ntregi


bit numere ntregi care pot lua una din dou valori: 0 sau 1 sau NULL. tinyint numr ntreg fr semn pe 1 octet, valori posibile de la 0 la 255. smallint numr ntreg cu semn pe 2 octei, valori posibile de la 2^15 (32,768) pn la 2^15 - 1 (32,767). int sau integer numr ntreg cu semn pe 4 octei, valori admisibile de la -2^31 (-2,147,483,648) pn 2^31 - 1 (2,147,483,647). Bigint numr ntreg cu semn pe 8 octei, valori admisibile de la -2^63 pn 2^63 1. Observii: - SQL Server ntoarce un mesaj de eroare dac se incearc inserarea unei valori care nu se ncadreaz n domeniul de valori corespunztor tipului de date. -Tipul bit are o reprezentare optimizat, astfel dac intr-o tabel exist mai multe atribute de tip bit, acestea vor fi mpachetate la nivel de octet: 1 octet pan la 8 atribute, 2 octei 9-16 atribute etc.

Tipuri de date pentru numere zecimale cu virgula fix


Decimal[(p[,s])] numere zecimale cu virgula fixat, valori posibila ntre -10^38 -1 i 10^38 -1. numeric[(p[,s])] echivalent cu tipul decimal. p (precizia) numrul total de cifre care pot fi stocate, inclusiv partea ntreag i partea zecimal. Precizia poate lua valori de la 1 la 38. Valoarea implicit a lui p este 18. s (scale) numrul de cifre zecimale. Poate lua valori de la 0 la p. Valoare implicit 0. Numrul de octei alocai tipului decimal/numeric depinde de precizie dup cum urmeaz: Precizia Nr octei 1-9 10-19 20-28 29-38 5 9 13 17

Tipuri de date pentru uniti monetare


money numerice zecimale cu 4 cifre dup virgul, poate lua valori n intervalul de la -2^63 (-922,337,203,685,477.5808) pn 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 pn la +214,748.3647. Obs. Toate tipurile numerice de date cu excepia money i smallmoney sunt convertite implicit din iruri de caractere n timpul executrii instruciunilor Insert i Update. De exemplu
insert into tabelTest(c1) values('45')

va genera un mesaj de eroare dac c1 este de tip money si va funciona corect pentru orice alt tip numeric Pentru rezolvarea problemei, putem face o transformare explicit astfel:
insert into tabelTest(c1) values(cast('45' as money))

Tipuri de date pentru numere zecimale cu virgula mobil


real Poate s rein numere zecimale numere pozitive i negative n virgula flotant din intervalul de la 3.4E -38 pn la 3.4E + 38 cu o precizie de 7 cifre. Este reprezentat pe 4 octei. float[(n)] Dac se specific o valoare ntre 1 i 7 pentru n, tipul definit este similar cu tipul real, iar dac nu se specific nicio valoare pentru n sau se specific o valoare ntre 8 i 15, numerele stocate se pot afla n intervalul de la -1.79E -308 pn 1a.79E + 308(pozitive i negative). Observaie: Valorile n virgul mobil sunt supuse erorilor de rotunjire. Ele asigur acuratee numai pn la numrul de cifre specificat ca precizie. De exemplu, n cazul unei precizii de 7 cifre este posibil stocarea unui numr cu mai mult de 7 cifre, dar nu se garanteaz c cifrele ncepnd cu a 8-a mai reprezint exact numrul stocat. De exemplu
insert into tabelTest (c1) values(123456789123)

va stoca o valoare aproximativ daca c1 este de tip real, dup cum se observa i din rezultatul furnizat de urmtoarea fraz select:
select c, cast(c as bigint) from t1
1.234568E+11 123456790528

Tipuri de date pentru date calendaristice i timp


datetime Este reprezentat pe 8 octei i pstreaz data i ora. Data poate fi o valoarea n intervalul de la 1 ianuarie anul 1753 pn la 31 decembrie anul 9999. Timpul se definete cu exactitate de sutimi de secunde. smalldatetime Este reprezentat pe 4 octei i pstreaz data i ora. Data poate lua o valoare din intervalul de la 1 ianuarie anul 1900 pn la 6 iunie anul 2097. Timpul se pstreaz cu o acuratee de1 minut.

Tipuri de date pentru iruri de caractere


char[(n)] iruri de caractere ASCII de lungime fixat de n caractere, dac n lipsete lungimea este de 1 caracter. Parametrul n poate lua valori intre 1 i 8000. irul de caractere se va completa cu caractere spaiu dac mrimea curent a irului este mai mic dect n. varchar(n) - iruri de caractere ASCII de lungime variabil (maximum 8000 caractere), se folosete cnd datele au lungimi ce variaz in plaje largi. Spaiul de stocare folosit se adapteaz la numrul curent de caractere al irului. text - iruri de caractere ASCII de lungime variabil, (lungimea maximal 2^31-1 caractere, 2,147,483,647 caractere). irul de caractere este memorat n pagini de 8ko fiecare nchar - iruri de caractere UNICODE de lungime fixat (maxium 4000 caractere) nvarchar - iruri de caractere UNICODE de lungime variabil (maxium 4000 caractere) ntext - iruri de caractere UNICODE de lungime variabil (lungimea maximal 2^30 1, sau 1,073,741,823 caractere)

Tipuri de date pentru iruri binare


Binary[(n)] ir binar de lungime fixat (maximum 8,000 octei). Se folosete pentru stocarea unor secvene de bii. Valorile de tip binar sunt reprezentate n sistem hexazecimal i se introduc uzual tot n hexazecimal(precedate de 0x ). varbinary[(n)] ir binar de lungime variabil (maximum 8,000 octei). image ir binar de lungime fixat (maximum 2^31 - 1 sau 2,147,483,647 octei). timestamp O valoare de tip timestamp este o valoare special de tip binary(8). Tipul timestamp garanteaz unicitatea valorilor coloanei asociate. O tabel poate avea o singur coloan de tip timestamp. Valoarea coloanei de tip timestamp este modificat automat dup ficare modificare a tuplei. Ea ne arat ordinea operaiilor efectuate de SQL Server. Marcile de timp(timestamp) se pot folosi pentru a impiedica doi utilizatori s modifice aceeai tupl. Tipul timestamp nu reprezint data i or. Valoarea timestamp ce va fi nscris ca marc la urmtoarea modificare sau inserare de linie poate fi accesat prin intermediul variabilei globale @@DBTS. uniqueidentifier reprezint un identificator unic global(GUID) pe 16 octei i asigur unicitatea valorilor la nivelul bazei de date. Generarea n Transact SQL a unui nou uniqueidentifier se face cu NEWID()

Crearea tabelelor
Comanda CREATE TABLE permite crearea unei noi tabele. Sintaxa sa este urmtoarea: CREATE TABLE denumire_tabel ( denumire_coloan1 tip_de_dat [ constrngere_la_nivel_de_coloan] [, denumire_coloan2 tip_de_dat [ constrngere_la_nivel_de_coloan] ] [, constrngere1_la_nivel_de_rand] [, constrngere2_la_nivel_de_rand ] ) O constrngere este un mecanism care ne asigur c valorile unei coloane sau ale unei mulimi de coloane satisfac o condiie dat. Dac nu se specific un nume explicit pentru constrngere atunci sistemul i atribuie unul nume. Constrngeri la nivel de coloan Sintaxa [Constraint denumire_constrngere] constrngere1 [constrangere2 ] Constrngerea NULL Specific faptul c sunt permise valori Null pentru coloana respectiv. Constrngerea NULL este implicit. Exemplu:
Telefon char(10) NULL

Constrngerea NOT NULL Specific faptul c sunt interzise valorile Null pentru coloana respectiv Exemplu:
Nume char(30) NOT NULL

Constrngerea DEFAULT Specific o valoare implicit care este atribuit cnd nu se specific o valoare explicit pentru coloana respectiv Sintaxa: DEFAULT expresie_constanta Exemple:
Data SmallDateTime default getdate(), CodJudet char(2) default 'AG', Cantitate numeric(8,3) default 0

Constrngerea IDENTITY

Indic o coloan pentru care SQL Server genereaz n mod automat valori incremental, unice la nivel de tabel Exemplu
id_detaliu id bigint int identity(101,1) identity

Primul parametru reprezint valoarea atribuit primei tuple, iar al doilea parametru reprezint valoarea de incrementare. Parametrii pot lipsi, ei au valoarea implicit 1. Constrngerea PRIMARY KEY Impune valori unice i nenule pentru coloana n cauz, coloana reprezint cheia primar a tabelei Exemplu:
CodFurnizor char(10) primary key

Constrngerea UNIQUE Impune valori unice pentru coloana n cauz, coloana reprezint o cheie candidat a tabelei Exemple:
marca int unique CNP char(13) constraint ix_cnp unique

Constrngerile PRIMARY KEY i UNIQUE genereaz implicit chei de indexare. Un index poate fi de tip CLUSTERED, caz n care ordinea fizic a rndurilor tabelei coincide cu ordinea logic(tabela este sortat dup cheia indexului clustered), sau NONCLUSTERED. Evident c o singur cheie poate fi de tip clustered. Opiunea implicit pentru PRIMARY KEY est CLUSTERED, iar pentru UNIQUE este NONCLUSTERED, dar pot fi schimbate ca in exemplul urmtor:
marca int primary key nonclustered, CNP char(13)constraint ix_cnp unique clustered

Constrngerea FOREIGN KEY Constrngerea Foreign key se folosete uzual mpreun cu Primary key pentru a rezolva problema integritii refereniale. Sintaxa:
[FOREIGN KEY] REFERENCES tabela_referit(coloana_referit) [ON DELETE {CASCADE | NO ACTION}] [ON UPDATE {CASCADE | NO ACTION}]

Coloana_referit trebuie s fie definit ca Primary key sau Unique. ON DELETE CASCADE menine integritatea referenial n cazul tergerii unui rnd din tabela_referit (care conine cheia primar sau unic), prin tergerea tuturor rndurilor ce conin cheii strine dependente. Valoarea implicit este ON DELETE NO ACTION. ON UPDATE CASCADE -menine integritatea referenial n cazul modificrii valorii coloanei referite din tabela asociat (care conine cheia primar sau unic), prin propagarea modificrii tuturor rndurilor ce conin cheia strin dependent. 8

Valoarea implicit este ON UPDATE NO ACTION. Constrngerea CHECK Definete o restricie de domeniu pecare trebuie s o satisfac datele din coloana respectiv Sintaxa:
CHECK (expresie_logic) Salariu int CHECK (Salariu >= 600 AND Salariu <= 8000) Nota INT CHECK (Nota BETWEEN 1 AND 10) DenumireZi char(10) check(DenumireZi in (luni, marti, miercuri))

Observatie: Coloanele supuse unor reguli check pot primi valoarea null dac nu se impune constrngerea not null.

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