Documente Academic
Documente Profesional
Documente Cultură
Crearea Bazelor de Date SQL Server
Crearea Bazelor de Date SQL Server
O bază de date SQL Server este compusă din trei tipuri de fişiere: un fişier cu
extensia .mdf zero sau mai multe fişiere cu extensia .ndf şi unul cu extensia .ldf
În fişierul cu extensia .mdf sunt stocate obiectele bazei de date precum tabelele,
indexii, vederile etc. împreună cu definiţiile lor, fişierele cu extensia .ndf sunt fişiere
secundare ce conţin numai date, iar fişierul cu extensia .ldf conţine jurnalul de tranzacţii.
Orice bază de date are asociat un jurnal de tranzacţii. Actualizarea unei înregistrări a
bazei de date presupune memorarea în jurnalul de tranzacţii a conţinutului înregistrării
dinainte şi după actualizare. Jurnalul de tranzacţii este folosit pentru restaurarea bazei de
date în situaţia în care apare o eroare ce necesită anularea sau reluarea unor operaţii
înregistrate.
Pentru crearea unei baze de date se foloseşte comanda Create database care în
formă simplificată se prezintă conform următoarelor exemple:
1)
CREATE DATABASE dbStudenti
2)
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,
1
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%)
2
Exemplu:
Instalarea unei baze de date se poate face şi cu ajutorul comenzii create database
cu folosirea clauzei for attach ca mai jos:
sp_detach_db dbStd
Observaţie
SQL Server Management Studio ofera facilităţi grafice pentru instalarea şi
dezinstalarea bazelor de date
3
TIPURI DE DATE MICROSOFT SQL SERVER
Microsoft SQL Server conţine următoarele tipuri de date predefinite, împărţite în
grupe:
Tipuri de date pentru numere întregi
bit – numere întregi care pot lua una din două valori: 0 sau 1 sau NULL.
tinyint – număr întreg fără semn pe 1 octet, valori posibile de la 0 la 255.
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).
int sau integer – 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).
Bigint – număr întreg cu semn pe 8 octeţi, valori admisibile de la -2^63 până
2^63 – 1.
Observţii:
- SQL Server întoarce un mesaj de eroare dacă se incearcă inserarea unei
valori care nu se încadrează în domeniul de valori corespunzător 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 octeţi 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) – numărul 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) – numărul de cifre zecimale. Poate lua valori de la 0 la p. Valoare
implicită 0.
Numărul de octeţi alocaţi tipului decimal/numeric depinde de precizie după cum
urmează:
Precizia Nr octeţi
1-9 5
10-19 9
20-28 13
29-38 17
4
-214,748.3648 până la +214,748.3647.
Obs. Toate tipurile numerice de date cu excepţia money şi smallmoney sunt
convertite implicit din şiruri de caractere în timpul executării instrucţiunilor Insert şi
Update.
De exemplu
insert into tabelTest(c1) values('45')
va stoca o valoare aproximativă daca c1 este de tip real, după cum se observa şi
din rezultatul furnizat de următoarea frază select:
select c, cast(c as bigint) from t1
1.234568E+11 123456790528
5
Tipuri de date pentru şiruri de caractere
char[(n)] – şiruri de caractere ASCII de lungime fixată de n caractere, dacă n
lipseşte lungimea este de 1 caracter. Parametrul n poate lua valori intre 1 şi 8000. Şirul de
caractere se va completa cu caractere spaţiu dacă mărimea curentă a şirului este mai mică
decât n.
varchar(n) - şiruri de caractere ASCII de lungime variabilă (maximum 8000
caractere), se foloseşte când datele au lungimi ce variază in plaje largi. Spaţiul de stocare
folosit se adaptează la numărul 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
6
Crearea tabelelor
Comanda CREATE TABLE permite crearea unei noi tabele. Sintaxa sa este
următoarea:
CREATE TABLE denumire_tabel
( denumire_coloană1 tip_de_dată [ constrângere_la_nivel_de_coloană]
[, denumire_coloană2 tip_de_dată [ constrângere_la_nivel_de_coloană] … ]
[, constrângere1_la_nivel_de_rand]
[, constrângere2_la_nivel_de_rand …]
)
O constrângere este un mecanism care ne asigură că valorile unei coloane sau ale
unei mulţimi de coloane satisfac o condiţie dată. Dacă nu se specifică un nume explicit
pentru constrângere atunci sistemul îi atribuie unul nume.
Constrângerea NULL
Exemplu:
Telefon char(10) NULL
Constrângerea DEFAULT
Constrângerea IDENTITY
7
Indică o coloană pentru care SQL Server generează în mod automat valori
incremental, unice la nivel de tabelă
Exemplu
id_detaliu int identity(101,1)
id bigint identity
Primul parametru reprezintă valoarea atribuită primei tuple, iar al doilea parametru
reprezintă valoarea de incrementare. Parametrii pot lipsi, ei au valoarea implicită 1.
Constrângerea UNIQUE
Impune valori unice pentru coloana în cauză, coloana reprezintă o cheie candidat a
tabelei
Exemple:
marca int unique
8
Valoarea implicită este ON UPDATE NO ACTION.
Constrângerea CHECK
Defineşte o restricţie 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
constrîngerea not null.