crearea bd si a tabelelor sql server

21
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 sau mai multe fişiere 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' ) 1

Upload: paul-gabriel-grosu

Post on 08-Nov-2015

78 views

Category:

Documents


0 download

DESCRIPTION

Creare baza de date

TRANSCRIPT

Crearea bazelor de date SQL Server

CREAREA BAZELOR DE DATE SQL SERVERO 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 sau mai multe fiiere 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)CREATE DATABASE dbStudenti

2)CREATE DATABASE dbStudentiON

( 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 = 3MB,

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. Vor fi create fiiereledbStudenti.mdf

dbStudenti_log.ldfIn 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).Pentru exemplul 2) fiierul dbStudenti_log.ldf va fi creat tot n folderul DB al unitii L.ON semnific utilizarea unui grup de fiiereNAME -furnizeaz numele logic al fiierului datelor, respectiv al jurnalului. Numele logice ale fiierelor sunt utilizate de functiile administrative ale SQL Server. Ele sunt unice la nivelul fisierelor.4 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 discFILEGROWTH 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.MODIFICAREA BAZELOR DE DATEComanda ALTER DATABASE permite modificarea unei baze de date prin adugarea sau eliminarea fiierelor asociate precum i modificarea atributelor fiierelor asociate.

Clauzele uzuale ale comenzii ALTER DATABASE sunt

ALTER DATABASE database { ADD FILE < filespec > [ ,...n ] --Specific faptul c un fiier este adugat. | ADD LOG FILE < filespec > [ ,...n ] -- Specific faptul c se adaug la baza de date un fiier de log | REMOVE FILE logical_file_name -- se folosete pentru eliminarea fiierelor asociate. -- Nu pot fi eliminate fiierele nevide.| MODIFY FILE < filespec > -- se folosete pentru modificarea atributelor fiierelor asociate. | MODIFY NAME = new_dbname -- se folosete pentru modificarea denumirii bazei de date. }Clauza REMOVE FILE se folosete pentru eliminarea fiierelor asociate. Nu pot fi eliminate fiierele nevide.< filespec > ::= ( NAME = logical_file_name [ , NEWNAME = new_logical_name ] [ , SIZE = size ] [ , MAXSIZE = { max_size | UNLIMITED } ] [ , FILEGROWTH = growth_increment ] )

Pentru a modifica numele logic al unui fiier de date sau un fiier jurnal, se specific n NAME numele fiierului logic care urmeaz a fi redenumit, i se precizeaz n NEWNAME noul nume logic pentru fiier.Use master

Go

Alter database dbTest

Add file

(name=fd3,

Filename=d:\db\fisier3.ndf, Size=5mb,

Maxsize=unlimited,

Filegrowth=5mb

)

GoAlter database dbtest

Remove file fd3

TERGEREA BAZELOR DE DATESintaxa:

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 comandaBACKUP la care se adauga clauza WITH COMPRESSION.Exemplu:

BACKUP DATABASE dbStudeti

TO DISK='g:\dbSalvari\dbStudenti.bak' WITH COMPRESSION

RESTAURAREA BAZELOR DE DATERESTORE 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 formaexecute 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 dbStdon

(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:

Execute 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 ntr-un 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 fixDecimal[(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 5

10-19 9

20-28 13

29-38 17Tipuri de date pentru uniti monetaremoney numerice zecimale cu 4 cifre dup virgul reprezentate pe 8 octei, 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 reprezentate pe 4 octei, ia valori n intervalul [-214,748.3648 , +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 numericPentru 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 timpdatetime 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(1/300 dintr-o secund).

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 caracterechar[(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 fiecarenchar - 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 binarebinary [(n)] ir binar de lungime fixat (maximum 8000 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 8000 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. Un 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 tabelelorComanda CREATE TABLE permite crearea unui nou tabel. Sintaxa sa este urmtoarea:CREATE TABLE denumire_tabel

( { < definiie_coloan >

| denumire_coloan AS expresie_coloan_calculat | < constrngere_tabel > } [ ,... ] )

< definiie_coloan > ::= denumire_coloan tip_dat

[ [ DEFAULT expresie_constant ] | [ IDENTITY [ ( valoare_iniial, pas )] ] ] [ < constrngere_coloan > ] [ ... ]

< constrngere_coloan > ::= [ CONSTRAINT denumire_constrngere] { [ NULL | NOT NULL ] | [ { PRIMARY KEY | UNIQUE } [ CLUSTERED | NONCLUSTERED ] ] ] | [ [ FOREIGN KEY ] REFERENCES tabel_referit[ ( coloana_referit ) ] [ ON DELETE { CASCADE | NO ACTION } ] [ ON UPDATE { CASCADE | NO ACTION } ] ] | CHECK(expresie_logic ) }

< constrngere_tabel > ::= [ CONSTRAINT denumire_constrngere] { [ { PRIMARY KEY | UNIQUE } [ CLUSTERED | NONCLUSTERED ] { ( coloan [ ASC | DESC ] [ ,... ] ) } ] | FOREIGN KEY [ (coloan [ ,... ] ) ] REFERENCES tabel_referit[ (coloan_referit [ ,... ] ) ] [ ON DELETE { CASCADE | NO ACTION } ] [ ON UPDATE { CASCADE | NO ACTION } ] [ NOT FOR REPLICATION ] | CHECK (expresie_logic)

}

nainte de crearea unui nou tabel, trebuie s activm baza de date n care tabelul va fi creat: USE denumire_baz_de_datentr-o comand CREATE TABLE cuvntul cheie AS permite crearea unei coloane calculate pe baza valorilor din celelalte coloane.Clauza CONSTRAINT permite implementarea constrngerilor de integritate. 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. Constrngerile se pot defini la nivel de coloan sau la nivel de tabel, dup cum ele se refer la datele unei singure coloane sau la datele mai multor coloane. Exist mai multe categorii de integritate a datelor: Integritatea domeniului: definete un interval sau o list de valori posibile pentru o coloan;

Integritatea entitii: n cadrul unei entiti nu pot exista dou realizri (instane) identice; Integritatea referenial: valorile unei chei strine pot fi ori null, ori printre valorile cheii primare referite.Constrngeri de domeniuConstrngerea 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 pentru coloan. Aceast valoare este utilizat de fiecare dat cnd se adaug o nou nregistrare i nu se specific nicio valoare pentru coloana n cauz.Exemple:

Data SmallDateTime default getdate(),

CodJudet char(2) default 'AG',

Cantitate numeric(8,3) default 0Constrngerea CHECK

Definete o restricie de domeniu pe care trebuie s o satisfac datele din coloana respectiv. Expresia logic ataat unei constrngeri Check la nivel de tabel poate face referire la orice coloan a tabelului curent.Sintaxa:

CHECK (expresie_logic)

Exemple:Salariu int CHECK (Salariu >= 600 AND Salariu =pretAprovizionare) Observatie:

Coloanele supuse unor reguli check pot primi valoarea null dac nu se impune constrngerea not null.Constrngeri pentru integritatea entitii Constrngerea PRIMARY KEY

Impune valori unice i nenule pentru coloana (grupul de coloane) n cauz, coloana (grupul de coloane) va reprezenta cheia primar a tabelului.Exemplu:

CodFurnizor char(10) primary key

Constrngerea UNIQUE

Impune valori unice pentru coloana (grupul de coloane) n cauz, coloana (grupul de coloane) reprezint o cheie candidat a tabelului.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 tabelului coincide cu ordinea logic(tabelul este sortat dup cheia indexului clustered), sau NONCLUSTERED. Evident c o singur cheie poate fi de tip clustered. Opiunea implicit pentru PRIMARY KEY este CLUSTERED, iar pentru UNIQUE este NONCLUSTERED, dar pot fi schimbate ca n exemplul urmtor:Create table tCandidati( CodCandidat int primary key nonclustered, NumeCandidat varchar(30) not null, CNP char(13)constraint ix_cnp unique clustered -- ...

)

Constrngerea IDENTITY

Indic o coloan asociat unui tip de dat ntreg, pentru care SQL Server genereaz n mod automat valori incrementale, 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 pasul de incrementare. Parametrii pot lipsi, ei au valoarea implicit 1.

Constrngerea integritii referenialeConstrngerea Foreign key se folosete, uzual mpreun cu Primary key, pentru a rezolva problema integritii refereniale.

Exemplu:

Create table tRezultateExamene

( Id_Nota int identity primary key, CodStudent char(10) not null

FOREIGN KEY REFERENCES tStudenti(CodStudent)

ON DELETE CASCADE ON UPDATE CASCADE , CodCurs char(13) not null

FOREIGN KEY REFERENCES tCursuri(CodCurs)

ON DELETE CASCADE ON UPDATE CASCADE, DataExaminare datetime,

Nota tinyint chech (Nota between(1 and 10)))Coloana_referit (grupul de coloane) trebuie s fie definit ca Primary key, Unique sau index unic n tabelul referit.

ON DELETE CASCADE menine integritatea referenial n cazul tergerii unui rnd din tabel_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 tabelul asociat (care conine cheia primar sau unic), prin propagarea modificrii tuturor rndurilor ce conin cheia strin dependent.

Valoarea implicit este ON UPDATE NO ACTION.

MODIFICAREA STRUCTURII TABELELOR

Comanda ALTER TABLE permite modificarea structurii unui tabel. Se pot efectua urmtoarele tipuri de modificri:

Modificare tipului de dat al unei coloane:

ALTER TABLE denumire_tabel

ALTER COLUMN denumire_coloan tip_nou_de_dat [ ( precizia [ , scala ] ) ] [ NULL | NOT NULL ] Exemplu:Alter table tCandidati

alter column LocalitateDomiciliu varchar(30) not null Adugarea unor noi coloane (mpreun cu eventuale constrngeri pentru aceste coloane):

ALTER TABLE denumire_tabel ADD < definiie_coloan > [,...] < definiie_coloan > are aceeai semnificaie ca la CREATE TABLE.

Exemplu

Alter table tCandidati

add codJudetDomiciliu char(2) default AG Adugarea unor coloane calculate:

ALTER TABLE denumire_tabel ADD denumire_coloan AS expresie_coloan_calculat [,...] Exemplu:

Alter table tCandidati

ADD media as (nota1+nota2)/2

tergerea unor coloane:

ALTER TABLE denumire_tabelDROP COLUMN denumire_coloan [ ,... ]

Exemplu:

Alter table tCandidati

Drop column media

Adugarea unor noi constrngeri :

ALTER TABLE denumire_tabel [WITH CHECK | WITH NOCHECK ] ADD < constrngere_tabel > [ ,... ] WITH CHECK | WITH NOCHECK specific dac datele existente sunt sau nu validate n raport cu constrngerea nou adugat. Opiunea implicit este WITH CHECK.

< constrngere_tabel > are aceeai semnificaie ca la CREATE TABLE

Exemplu:

Alter table tSalarii with nocheck add constraint ck_cifra_unit_este_zero check(salariu%10=0)

Adugarea unei valori implicite pentru o coloan:

ALTER TABLE denumire_tabel ADD [constraint denumire_constrngere] DEFAULT expresie_constant FOR coloanAlter table tChitante

add constraint df_dataChitanta default getdate() for dataChitanta

Alter table tChitante

add default 0 for suma tergerea unor constrngeri :

ALTER TABLE denumire_tabel DROP CONSTRAINT denumire_constrngere [ ,... ]

Exemplu: Alter table tSalarii drop constraint constraint ck_cifra_unit_este_zero

Activarea(CHECK) sau dezactivarea(NOCHECK) constrngerilor de tip CHECK i FOREIGN KEY:

ALTER TABLE denumire_tabel {CHECK | NOCHECK } CONSTRAINT { ALL | denumire_constrngere [ ,... ] }ALL specific faptul c toate constrngerile sunt activate sau dezactivate.

denumire_constrngere denumirile constrngerilor care sunt activate sau dezactivate

TERGEREA UNEI TABELEComanda DROP TABLE terge din baza de date definiia unui tabel mpreun cu indecii, triggerii i constrngerile asociate. Sintaxa:

DROP TABLE denumire_tabel

Un tabel poate fiters dac nu este referit printr-o constrngere de tip FOREIGN KEY.APLICAIEIn exemplul de mai jos sunt create tabelele tSpecializari, tStudenti, tRezExamene, tCursuri fiind impuse diverse constrngeri. Ulterior crerii, se vor folosi comenzi alter table pentru adugarea de noi coloane i pentru impunerea de noi constrngeri.

create database dbStudenti

go

use dbStudenti

Create table tSpecializari

( codSpecializare char(10) primary key,

denumireSpecializare varchar(30) not null

)

Create table tStudenti(

codStd char(10) primary key,

nume varchar (20),

prenume varchar(25),

sex char check (sex in ('m' ,'f')),

CNP char(13),

dataNasterii as substring(CNP,6,2)+'/'+substring(CNP,4,2)+'/'+substring(CNP,2,2),

codSpecializare char(10) foreign key references tSpecializari(codSpecializare)

)

create table tCursuri(

codCurs char(10),

denCurs char(30),

nrCredite numeric(2,0),

)

create table tRezExamene(

codStd char(10) not null,

codCurs char(10) not null,

dataExamen datetime not null,

nota

numeric(2,0) not null

)

MODIFICAREA TABELELOR

Alter table tStudenti

add codJud char(2) default 'AG',

localitate varchar(20)

Alter table tCursuri

add tipCurs char default 'B' check (tipCurs in ('B','O','F'))

/*

B=din modulul de baza(obligatoriu)

O=optional

F=facultativ

*/

Alter table tRezExamene

add constraint ck_nota check (nota between 1 and 10)

Alter table tRezExamene

add constraint pk_ex primary key(codStd,codCurs)

Alter table tCursuri

alter column codCurs char(10) not null

Alter table tStudenti

alter column codStd char(10) not null

Alter table tCursuri

add constraint pk_curs primary key (codCurs);

Alter table tStudenti

add constraint pk_CodStd primary key(codStd)

Alter table tRezExamene

add constraint fk_std foreign key (codStd) references tStudenti(codStd)

on delete cascade on update cascadeAlter table tRezExamene

add constraint fk_curs foreign key (codCurs) references tCursuri(codCurs)

STERGEREA TABELELOR BAZEI DE DATE Drop table tRezExamene

Drop table tStudenti Drop table tCursuri Drop table tSpecializariBibliografie

http://msdn.microsoft.com/en-us/library/aa258256(SQL.80).aspxhttp://www.dotnet-france.com

PAGE 3