QReferate - referate pentru educatia ta.
Cercetarile noastre - sursa ta de inspiratie! Te ajutam gratuit, documente cu imagini si grafice. Fiecare document sau comentariu il poti downloada rapid si il poti folosi pentru temele tale de acasa.



AdministratieAlimentatieArta culturaAsistenta socialaAstronomie
BiologieChimieComunicareConstructiiCosmetica
DesenDiverseDreptEconomieEngleza
FilozofieFizicaFrancezaGeografieGermana
InformaticaIstorieLatinaManagementMarketing
MatematicaMecanicaMedicinaPedagogiePsihologie
RomanaStiinte politiceTransporturiTurism
Esti aici: Qreferat » Documente informatica

Crearea bazelor de date sql server



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 DISK='g:salvari dbStudeti.bak'



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.


Nu se poate descarca referatul
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 }