Administratie | Alimentatie | Arta cultura | Asistenta sociala | Astronomie |
Biologie | Chimie | Comunicare | Constructii | Cosmetica |
Desen | Diverse | Drept | Economie | Engleza |
Filozofie | Fizica | Franceza | Geografie | Germana |
Informatica | Istorie | Latina | Management | Marketing |
Matematica | Mecanica | Medicina | Pedagogie | Psihologie |
Romana | Stiinte politice | Transporturi | Turism |
CREAREA BAZELOR DE DATE SQL SERVER
O baza de date SQL Server este compusa din trei tipuri de fisiere un fisier cu extensia .mdf zero sau mai multe fisiere cu extensia .ndf si unul cu extensia .ldf
In fisierul cu extensia .mdf sunt stocate obiectele bazei de date precum tabelele, indexii, vederile etc. impreuna cu definitiile lor, fisierele cu extensia .ndf sunt fisiere secundare ce contin numai date, iar fisierul cu extensia .ldf contine jurnalul de tranzactii. Orice baza de date are asociat un jurnal de tranzactii. Actualizarea unei inregistrari a bazei de date presupune memorarea in jurnalul de tranzactii a continutului inregistrarii dinainte si dupa actualizare. Jurnalul de tranzactii este folosit pentru restaurarea bazei de date in situatia in care apare o eroare ce necesita anularea sau reluarea unor operatii inregistrate.
Pentru crearea unei baze de date se foloseste comanda Create database care in forma simplificata se prezinta conform urmatoarelor exemple:
CREATE DATABASE dbStudenti
CREATE DATABASE dbStudenti
ON
( NAME = dbStd,
FILENAME = 'L:DBStudenti.mdf'
CREATE DATABASE dbStudenti
ON
( NAME = dbStd,
FILENAME = 'L:DBStudenti.mdf'
LOG ON
( NAME = dbStd_log,
FILENAME = 'L:DBStudenti.ldf'
CREATE DATABASE dbMultiFisier
ON PRIMARY
( NAME = F1,
FILENAME = 'L:dbFisier1.mdf',
SIZE = 2MB,
MAXSIZE = 10MB,
FILEGROWTH = 10%),
( NAME = F2,
FILENAME = 'L:dbFisier2.ndf',
SIZE = 1MB,
MAXSIZE = 10MB,
FILEGROWTH = 10%),
( NAME = F3,
FILENAME = 'L:dbFisier3.ndf',
SIZE = 1MB,
MAXSIZE = 10MB,
FILEGROWTH = 10%)
LOG ON
( NAME = F_Log1,
FILENAME = 'L:DBFisier_Log1.ldf',
SIZE = 512KB,
MAXSIZE = 10MB,
FILEGROWTH = 10%),
( NAME = F_Log2,
FILENAME = 'L:dbFisier_Log2.ldf',
SIZE = 512KB,
MAXSIZE = 10MB,
FILEGROWTH = 10%)
In exemplul 1) baza de date dbStudenti va fi creata in folderul implicit "C:Program FilesMicrosoft SQL ServerMSSQLData", precizat in timpul instalarii sistemului SQL Server
In exemplele 2), 3) si 4) baza de date va fi creata in folderul DB al unitatii L (care poate fi, de exemplu, un stick usb)
ON - semnifica utilizarea unui grup de fisiere
NAME -furnizeaza numele logic al fisierului datelor, respectiv al jurnalului
FILENAME -furnizeaza numele fizic al fisierului datelor, respectiv al jurnalului
SIZE -parametru optional, specifica dimensiunea initiala a fisierului masurata in KB, MB sau GB, valoare implicita 1MB pentru fisierul de date si 512KB pentru fisierul jurnal. Unitatea de masura implicita este MB.
MAXSIZE -parametru optional, specifica dimensiunea maxima la care poate ajunge fisierul. Daca se specifica MAXSIZE sau i se atribuie UNLIMITED atunci fisierul creste cat ii permite spatiul liber de pe disc
FILEGROWTH - parametru optional, precizeaza pasul cu care creste dimensiunea fisierului, in valoare absoluta sau in procente raportat la fisierul asociat. Valoarea implicita este de 256KB cu valoarea minima 64KB. Valoarea 0 impiedica cresterea fisierului.
STERGEREA BAZELOR DE DATE
Sintaxa:
DROP DATABASE denumire_baza_date
SALVAREA BAZELOR DE DATE
BACKUP DATABASE dbStudeti
TO DISK='g:dbSalvaridbStudenti.bak'
In SQL Server 2008 a fost introdus backup-ul compresat. Acesta se realizeaza cu comanda BACKUP la care se adauga clauza WITH COMPRESSION.
Exemplu:
BACKUP DATABASE dbStudeti
TO DISK='g:dbSalvaridbStudenti.bak' WITH COMPRESSION
RESTAURAREA BAZELOR DE DATE
RESTORE DATABASE dbStudeti
FROM
INSTALAREA BAZELOR DE DATE
Procedura de sistem sp_attach_db este folosita pentru a face o baza de date portabila, accesibila de pe un server nou. Astfel, daca o baza de date este stocata pe un support amovibil(nu neaparat), ea poate fi instalata printr-un appel de forma
sp_attach_db dbStd, 'L:DBStudenti.mdf'
Numele bazei de date nu este necesar sa coincida cu cel initial
Instalarea unei baze de date se poate face si cu ajutorul comenzii create database cu folosirea clauzei for attach ca mai jos:
create database dbStd
on
(filename='L:dbStudenti.mdf')
for attach
DEZINSTALAREA BAZELOR DE DATE
Procedura de sistem sp_detach_db este folosita pentru dezinstalarea bazelor de date prin apeluri de forma:
sp_detach_db dbStd
Observatie
SQL Server Management Studio ofera facilitati grafice pentru instalarea si dezinstalarea bazelor de date
TIPURI DE DATE MICROSOFT SQL SERVER
Microsoft SQL Server contine urmatoarele tipuri de date predefinite, impartite in grupe:
Tipuri de date pentru numere intregi
bit numere intregi care pot lua una din doua valori: 0 sau 1 sau NULL.
tinyint - numar intreg fara semn pe 1 octet, valori posibile de la 0 la 255.
smallint - numar intreg cu semn pe 2 octeti, valori posibile de la 2^15 (-32,768) pana la 2^15 - 1 (32,767).
int sau integer - numar intreg cu semn pe 4 octeti, valori admisibile de la
-2^31 (-2,147,483,648) pana 2^31 - 1 (2,147,483,647).
Bigint - numar intreg cu semn pe 8 octeti, valori admisibile de la -2^63 pana 2^63 - 1.
Observtii
- SQL Server intoarce un mesaj de eroare daca se incearca inserarea unei valori care nu se incadreaza in domeniul de valori corespunzator tipului de date.
-Tipul bit are o reprezentare optimizata, astfel daca intr-o tabela exista mai multe atribute de tip bit, acestea vor fi impachetate la nivel de octet: 1 octet - pana la 8 atribute, 2 octeti 9-16 atribute etc.
Tipuri de date pentru numere zecimale cu virgula fixa
Decimal[(p[,s])] - numere zecimale cu virgula fixata, valori posibila intre -10^38 -1 si 10^38 -1.
numeric[(p[,s])] - echivalent cu tipul decimal.
p (precizia) - numarul total de cifre care pot fi stocate, inclusiv partea intreaga si partea zecimala. Precizia poate lua valori de la 1 la 38. Valoarea implicita a lui p este 18.
s (scale) - numarul de cifre zecimale. Poate lua valori de la 0 la p. Valoare implicita 0.
Numarul de octeti alocati tipului decimal numeric depinde de precizie dupa cum urmeaza:
Precizia Nr octeti
5
9
13
17
Tipuri de date pentru unitati monetare
money numerice zecimale cu 4 cifre dupa virgula, poate lua valori in intervalul de la -2^63 (-922,337,203,685,477.5808) pana la 2^63 - 1 (+922,337,203,685,477.5807).
smallmoney numere zecimal cu 4 cifre dupa virgula, ia valori in intervalul de la
-214,748.3648 pana la +214,748.3647.
Obs. Toate tipurile numerice de date cu exceptia money si smallmoney sunt convertite implicit din siruri de caractere in timpul executarii instructiunilor Insert si Update.
De exemplu
insert into tabelTest(c1) values('45')
va genera un mesaj de eroare daca c1 este de tip money si va functiona corect pentru orice alt tip numeric
Pentru rezolvarea problemei, putem face o transformare explicita astfel
insert into tabelTest(c1) values(cast('45' as money))
Tipuri de date pentru numere zecimale cu virgula mobila
real - Poate sa retina numere zecimale numere pozitive si negative in virgula flotanta din intervalul de la 3.4E -38 pana la 3.4E + 38 cu o precizie de 7 cifre. Este reprezentat pe 4 octeti.
float[(n)] - Daca se specifica o valoare intre 1 si 7 pentru n, tipul definit este similar cu tipul real, iar daca nu se specifica nicio valoare pentru n sau se specifica o valoare intre 8 si 15, numerele stocate se pot afla in intervalul de la -1.79E -308 pana 1a.79E + 308(pozitive si negative).
Observatie: Valorile in virgula mobila sunt supuse erorilor de rotunjire. Ele asigura acuratete numai pana la numarul de cifre specificat ca precizie. De exemplu, in cazul unei precizii de 7 cifre este posibila stocarea unui numar cu mai mult de 7 cifre, dar nu se garanteaza ca cifrele incepand cu a 8-a mai reprezinta exact numarul stocat.
De exemplu
insert into tabelTest (c1) values(123456789123)
va stoca o valoare aproximativa daca c1 este de tip real, dupa cum se observa si din rezultatul furnizat de urmatoarea fraza select:
select c, cast(c as bigint) from t1
1.234568E+11 123456790528
Tipuri de date pentru date calendaristice si timp
datetime - Este reprezentat pe 8 octeti si pastreaza data si ora. Data poate fi o valoarea in intervalul de la 1 ianuarie anul 1753 pana la 31 decembrie anul 9999. Timpul se defineste cu exactitate de sutimi de secunde.
smalldatetime - Este reprezentat pe 4 octeti si pastreaza data si ora. Data poate lua o valoare din intervalul de la 1 ianuarie anul 1900 pana la 6 iunie anul 2097. Timpul se pastreaza cu o acuratete de1 minut.
Tipuri de date pentru siruri de caractere
char[(n)] - siruri de caractere ASCII de lungime fixata de n caractere, daca n lipseste lungimea este de 1 caracter. Parametrul n poate lua valori intre 1 si 8000. Sirul de caractere se va completa cu caractere spatiu daca marimea curenta a sirului este mai mica decat n.
varchar(n) - siruri de caractere ASCII de lungime variabila (maximum 8000 caractere), se foloseste cand datele au lungimi ce variaza in plaje largi. Spatiul de stocare folosit se adapteaza la numarul curent de caractere al sirului.
text - siruri de caractere ASCII de lungime variabila, (lungimea maximala 2^31-1 caractere, 2,147,483,647 caractere). Sirul de caractere este memorat in pagini de 8ko fiecare
nchar - siruri de caractere UNICODE de lungime fixata (maxium 4000 caractere)
nvarchar - siruri de caractere UNICODE de lungime variabila (maxium 4000 caractere)
ntext - siruri de caractere UNICODE de lungime variabila (lungimea maximala 2^30 - 1, sau 1,073,741,823 caractere)
Tipuri de date pentru siruri binare
binary - sir binar de lungime fixata (maximum 8,000 octeti). Se foloseste pentru stocarea unor secvente de biti. Valorile de tip binar sunt reprezentate in sistem hexazecimal si se introduc uzual tot in hexazecimal(precedate de 0x ).
varbinary - sir binar de lungime variabila (maximum 8,000 octeti).
image - sir binar de lungime fixata (maximum 2^31 - 1 sau 2,147,483,647 octeti).
timestamp -O valoare de tip timestamp este o valoare speciala de tip binary(8). Tipul timestamp garanteaza unicitatea valorilor coloanei asociate. O tabela poate avea o singura coloana de tip timestamp. Valoarea coloanei de tip timestamp este modificata automat dupa ficare modificare a tuplei. Ea ne arata ordinea operatiilor efectuate de SQL Server. Marcile de timp(timestamp) se pot folosi pentru a impiedica doi utilizatori sa modifice aceeasi tupla. Tipul timestamp nu reprezinta data si ora. Valoarea timestamp ce va fi inscrisa ca marca la urmatoarea modificare sau inserare de linie poate fi accesata prin intermediul variabilei globale @@DBTS.
uniqueidentifier -reprezinta un identificator unic global(GUID) pe 16 octeti si asigura unicitatea valorilor la nivelul bazei de date. Generarea in Transact SQL a unui nou uniqueidentifier se face cu NEWID()
Crearea tabelelor
Comanda CREATE TABLE permite crearea unei noi tabele. Sintaxa sa este urmatoarea:
CREATE TABLE denumire_tabel
denumire_coloana1 tip_de_data [ constrangere_la_nivel_de_coloana
[, denumire_coloana2 tip_de_data [ constrangere_la_nivel_de_coloana
constrangere1_la_nivel_de_rand]
constrangere2_la_nivel_de_rand . ]
O constrangere este un mecanism care ne asigura ca valorile unei coloane sau ale unei multimi de coloane satisfac o conditie data. Daca nu se specifica un nume explicit pentru constrangere atunci sistemul ii atribuie unul nume.
Constrangeri la nivel de coloana
Sintaxa
[Constraint denumire_constrangere] constrangere1 [constrangere2 . ]
Constrangerea NULL
Specifica faptul ca sunt permise valori Null pentru coloana respectiva.
Constrangerea NULL este implicita.
Exemplu
Telefon char(10) NULL
Constrangerea NOT NULL
Specifica faptul ca sunt interzise valorile Null pentru coloana respectiva
Exemplu
Nume char(30) NOT NULL
Constrangerea DEFAULT
Specifica o valoare implicita care este atribuita cand nu se specifica o valoare explicita pentru coloana respectiva
Sintaxa:
DEFAULT expresie_constanta
Exemple
Data SmallDateTime default getdate(),
CodJudet char(2) default 'AG',
Cantitate numeric(8,3) default 0
Constrangerea IDENTITY
Indica o coloana pentru care SQL Server genereaza in mod automat valori incremental, unice la nivel de tabela
Exemplu
id_detaliu int identity(101,1)
id bigint identity
Primul parametru reprezinta valoarea atribuita primei tuple, iar al doilea parametru reprezinta valoarea de incrementare. Parametrii pot lipsi, ei au valoarea implicita 1.
Constrangerea PRIMARY KEY
Impune valori unice si nenule pentru coloana in cauza, coloana reprezinta cheia primara a tabelei
Exemplu:
CodFurnizor char(10) primary key
Constrangerea UNIQUE
Impune valori unice pentru coloana in cauza, coloana reprezinta o cheie candidat a tabelei
Exemple
marca int unique
CNP char(13) constraint ix_cnp unique
Constrangerile PRIMARY KEY si UNIQUE genereaza implicit chei de indexare. Un index poate fi de tip CLUSTERED, caz in care ordinea fizica a randurilor tabelei coincide cu ordinea logica(tabela este sortata dupa cheia indexului clustered), sau NONCLUSTERED. Evident ca o singura cheie poate fi de tip clustered. Optiunea implicita pentru PRIMARY KEY est CLUSTERED, iar pentru UNIQUE este NONCLUSTERED, dar pot fi schimbate ca in exemplul urmator:
marca int primary key nonclustered,
CNP char(13)constraint ix_cnp unique clustered
Constrangerea FOREIGN KEY
Constrangerea Foreign key se foloseste uzual impreuna cu Primary key pentru a rezolva problema integritatii referentiale.
Sintaxa:
[FOREIGN KEY] REFERENCES tabela_referita(coloana_referita)
[ON DELETE ]
[ON UPDATE ]
Coloana_referita trebuie sa fie definita ca Primary key sau Unique.
ON DELETE CASCADE - mentine integritatea referentiala in cazul stergerii unui rand din tabela_referita (care contine cheia primara sau unica), prin stergerea tuturor randurilor ce contin cheii straine dependente.
Valoarea implicita este ON DELETE NO ACTION.
ON UPDATE CASCADE -mentine integritatea referentiala in cazul modificarii valorii coloanei referite din tabela asociata (care contine cheia primara sau unica), prin propagarea modificarii tuturor randurilor ce contin cheia straina dependenta.
Valoarea implicita este ON UPDATE NO ACTION.
Constrangerea CHECK
Defineste o restrictie de domeniu pecare trebuie sa o satisfaca datele din coloana respectiva
Sintaxa:
CHECK (expresie_logica)
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 daca nu se impune constringerea not null.
Acest document nu se poate descarca
E posibil sa te intereseze alte documente despre:
|
Copyright © 2024 - Toate drepturile rezervate QReferat.com | Folositi documentele afisate ca sursa de inspiratie. Va recomandam sa nu copiati textul, ci sa compuneti propriul document pe baza informatiilor de pe site. { Home } { Contact } { Termeni si conditii } |
Documente similare:
|
ComentariiCaracterizari
|
Cauta document |