Baze de Date 2011-2012 Anca Ion Baze de Date -Limbajul SQL-Introducere- Universitatea din Craiova,...

41
Baze de Date 2011-2012 Anca Ion Baze de Date -Limbajul SQL-Introducere- Universitatea din Craiova, Facultatea de Automatica, Calculatoare si Electronica
  • date post

    19-Dec-2015
  • Category

    Documents

  • view

    261
  • download

    3

Transcript of Baze de Date 2011-2012 Anca Ion Baze de Date -Limbajul SQL-Introducere- Universitatea din Craiova,...

Page 1: Baze de Date 2011-2012 Anca Ion Baze de Date -Limbajul SQL-Introducere- Universitatea din Craiova, Facultatea de Automatica, Calculatoare si Electronica.

Baze de Date

2011-2012Anca Ion

Baze de Date-Limbajul SQL-Introducere-

Universitatea din Craiova,Facultatea de Automatica, Calculatoare si Electronica

Page 2: Baze de Date 2011-2012 Anca Ion Baze de Date -Limbajul SQL-Introducere- Universitatea din Craiova, Facultatea de Automatica, Calculatoare si Electronica.

Baze de Date

2011-2012Anca Ion

Introducere• Limbajul SQL poate fi considerat unul dintre motivele pentru care modelul relațional a devenit atât de utilizat de SGBD-urile comerciale.

•Deoarece SQL a devenit un standard pentru bazele de date relaționale, utilizatorii nu trebuie sa mai migreze aplicatiile cu baze de date pentru alte tipuri de SGBD-uri.

•In practica, există diferențe între SQL SGBD-urilor comerciale. Totuși, dacă utilizatorul a folosit doar acele parți care aparțin standardului, și dacă ambele sisteme sunt relaționale, conversia între 2 SGBD devine mult mai simplificată.

• Un alt avantaj al existenței unui standard este acela al posibilității de a scrie comenzi în aplicațiile cu baze de date care să acceseze date stocate pe 2 sau mai multe SGBD-uri, fără a mai schimba limbajul bazei de date, dacă SGBD-urile relaționale suportă standardul SQL.

Page 3: Baze de Date 2011-2012 Anca Ion Baze de Date -Limbajul SQL-Introducere- Universitatea din Craiova, Facultatea de Automatica, Calculatoare si Electronica.

Baze de Date

2011-2012Anca Ion

Introducere

• În acest capitol se vor prezenta caracteristicile principale ale standardului SQL pentru bazele de date comerciale.

• In algebra relațională (capitolul 3), operațiile sunt considerate prea tehnice pentru SGBD-urile relaționale, deoarece utilizatorii trebuie sa descrie șirul de operații care trebuie executate pentru a produce rezultatul dorit. Utilizatorul trebuie sa specifice cum se ajunge la rezultat, in ce ordine se execută operațiile pentru a obține rezultatul dorit.

• Pe de altă parte, limbajul SQL oferă o interfață pentru un limbaj declarativ de nivel mai înalt, în care se specifică care va fi rezultatul, lăsând optimizările și deciziile pentru executarea interogărilor pentru SGBD.

Page 4: Baze de Date 2011-2012 Anca Ion Baze de Date -Limbajul SQL-Introducere- Universitatea din Craiova, Facultatea de Automatica, Calculatoare si Electronica.

Baze de Date

2011-2012Anca Ion

Introducere

• Deși SQL include câteva caracteristici din algebra relațională, el se bazează mai mult pe calculul relațional bazat pe tuplu.

• Sintaxa SQL este mai apropiată de utilizator decât cele 2 limbaje formale, algebra relațională și calculul relațional.

• Denumirea SQL provine de la Structured Query Language.

• La început SQL a fost numit SEQUEL (Structured English QUEry Language) și a fost implementat și proiectat de IBM Research ca și interfață pentru sistemele experimentale de baze de date relaționale numite SYSTEM R.

Page 5: Baze de Date 2011-2012 Anca Ion Baze de Date -Limbajul SQL-Introducere- Universitatea din Craiova, Facultatea de Automatica, Calculatoare si Electronica.

Baze de Date

2011-2012Anca Ion

Introducere• În prezent, SQL este limbajul standard pentru SGBD-urile

relaționale comerciale. • Organizațiile ANSI (the American National Standards Institute)

și ISO (the International Standards Organization) au creat versiunea standard de SQL (ANSI 1986),numit SQL-86 sau SQL 1.

• O versiune mult mai reviziută a stadardului numită SQL2 (SQL-92) a fost dezvoltată. Următorele versiuni ale standardului sunt SQL3 sau SQL-99 si SQL-2003. La acest curs va fi discutată ultima versiune a limbajului SQL (SQL-2003).

• Limbajul SQL oferă comenzi pentru definirea datelor, interogărilor, modificarea datelor, definirea vederilor, specificarea securității si autorizării utilizatorilor, definirea constrângerilor de integritate, specificarea controlului tranzacțiilor.

• Limbajul oferă reguli pentru a încorpora comenzi SQL în limbajele de programare, cum ar fi Java, C, C++.

• Nu toate exemplele din curs vor functiona pe SGBD-ul vostru particular.

Page 6: Baze de Date 2011-2012 Anca Ion Baze de Date -Limbajul SQL-Introducere- Universitatea din Craiova, Facultatea de Automatica, Calculatoare si Electronica.

Baze de Date

2011-2012Anca Ion

Definirea datelor în SQL. Tipurile de date în SQL

• SQL folosește termenii tabelă, rând, coloană echivalenți cu termenii din modelul relațional formal relație, tuplu, atribut. Termenii corespondenți pot fi inteschimbați.

• Comanda SQL pentru definirea datelor este CREATE care poate fi folosită pentru crearea• schemelor, • tabelelor și • domeniilor.

Page 7: Baze de Date 2011-2012 Anca Ion Baze de Date -Limbajul SQL-Introducere- Universitatea din Craiova, Facultatea de Automatica, Calculatoare si Electronica.

Baze de Date

2011-2012Anca Ion

Conceptele de schemă și catalog în SQL

•Versiunile mai vechi de SQL nu includ conceptul de scheme de baze de date relaționale.

•Toate tabelele erau considerate ca făcând parte din aceeași schemă.

•Conceptul de schemă SQL a fost introdus în standardul SQL2 pentru a grupa împreună tabele și alte structuri care aparțin aceleași baze de date.

•Schema SQL este identificată de nume, identificator de autorizare care indică utilizatorul sau contul care este proprietarul schemei, descriptorii pentru fiecare element al schemei bazei de date.

•Elementele schemei bazei de date includ tabele, constrângeri, vederi, domenii.

Page 8: Baze de Date 2011-2012 Anca Ion Baze de Date -Limbajul SQL-Introducere- Universitatea din Craiova, Facultatea de Automatica, Calculatoare si Electronica.

Baze de Date

2011-2012Anca Ion•O schemă este creată cu comanda CREATE SCHEMA care

poate să includă toate definițiile elementelor.

• Alternativ, schemei ii poate fi asociat doar numele și identificatorul de autorizare, iar elementele pot fi definite ulterior.

CREATE SCHEMA COMPANIE AUTHORIZATION GEORGE;

•În general, nu toți utilizatorii sunt autorizați sa creeze scheme sau elemente în schemă.

•Privilegiile pentru a crea scheme, tabele sau alte structuri trebuie explicit acordate utilizatorilor sau conturilor de către DBA sau administratorul de sistem.

•În SQL2 a fost introdus conceptul de catalog – care reprezintă o colecție de scheme într-un sistem de gestiune a bazelor de date.

Conceptele de schemă și catalog în SQL

Page 9: Baze de Date 2011-2012 Anca Ion Baze de Date -Limbajul SQL-Introducere- Universitatea din Craiova, Facultatea de Automatica, Calculatoare si Electronica.

Baze de Date

2011-2012Anca Ion•Comanda CREATE TABLE este folosită pentru a specifica

o nouă relație sau tabelă cu un nume, o listă de atribute și constrângeri.

•Atributele sunt specificate prin numele lor , tipul de date și constrângeri, cum ar fi NOT NULL, PRIMARY KEY, etc.

•Constrangerile asupra atributelor (cheie primara, cheile externe, check, default, not null) pot fi specificate fie

• la crearea tabelului, dupa ce atributele sunt declarate, • sau pot fi adăugate mai târziu folosind comanda

ALTER TABLE.

Comanda ”CREATE TABLE” în SQL

Page 10: Baze de Date 2011-2012 Anca Ion Baze de Date -Limbajul SQL-Introducere- Universitatea din Craiova, Facultatea de Automatica, Calculatoare si Electronica.

Baze de Date

2011-2012Anca Ion

Comanda ”CREATE TABLE” în SQL

•Schema tabelei poate fi specificată și în comanda de crearea a tabelei (CREATE TABLE).

CREATE TABLE COMPANIE.Angajat ...

În loc de:

CREATE TABLE Angajat . . .

•Relațiile declarate cu comanda CREATE TABLE sunt numite tabele de bază sau relații de bază.

•Aceasta înseamnă că relația și tuplurile sunt create și stocate fizic în SGBD.

Page 11: Baze de Date 2011-2012 Anca Ion Baze de Date -Limbajul SQL-Introducere- Universitatea din Craiova, Facultatea de Automatica, Calculatoare si Electronica.

Baze de Date

2011-2012Anca Ioncreate table Departament

( DenumireDep varchar(15) not null, NrDep int not null, ManagerDep char(13), ManagerData date); -----------------------------------------------------------------------------------------------------------create table Angajat ( Nume varchar (15) not null, Prenume varchar(15) not null, CNP char(13) not null, DataNastere date, Gen char, Salariu real, Adresa varchar(25), ADep int not null, SCNP char(13) );

Exemplu

Page 12: Baze de Date 2011-2012 Anca Ion Baze de Date -Limbajul SQL-Introducere- Universitatea din Craiova, Facultatea de Automatica, Calculatoare si Electronica.

Baze de Date

2011-2012Anca Ioncreate table Locatii

( NrDep int, Locatie varchar(15));-------------------------------------------------------------------------------------------------create table Proiecte ( NrProiect int not null, DenProiect varchar(30) not null, Locatie varchar(15) not null, PDep int not null);

Exemplu

Page 13: Baze de Date 2011-2012 Anca Ion Baze de Date -Limbajul SQL-Introducere- Universitatea din Craiova, Facultatea de Automatica, Calculatoare si Electronica.

Baze de Date

2011-2012Anca Ioncreate table AngajatiProiecte

( PCNP char(13), NrProiect int, NrOre int); -------------------------------------------------------------------------------------------------create table PersoaneIntretinere(CNP char(13) not null,NumePersoana varchar(25) not null,Gen char,DataNastere date,Legatura varchar(25));

Fig. 1. Baza de date bdCompanie

Exemplu

Page 14: Baze de Date 2011-2012 Anca Ion Baze de Date -Limbajul SQL-Introducere- Universitatea din Craiova, Facultatea de Automatica, Calculatoare si Electronica.

Baze de Date

2011-2012Anca Ion•Tipurile de bază :

• Tipurile de date de bază disponibile includ: • tipurile numerice, • șiruri de caractere, • șiruri de biți, • boolean, • dată și timp.

Tipurile de date ale atributelor și domeniile în SQL

Page 15: Baze de Date 2011-2012 Anca Ion Baze de Date -Limbajul SQL-Introducere- Universitatea din Craiova, Facultatea de Automatica, Calculatoare si Electronica.

Baze de Date

2011-2012Anca Ion•Tipurile de date numerice cuprind numere

întregi de diferite dimensiuni (INTEGER sau INT și SMALLINT), numere reale cu diferite precizii (FLOAT sau REAL, și DOUBLE).

•Pentru formatarea numerelor se folosește DECIMAL(i,j) sau DEC(i,j) sau NUMERIC(i,j), unde i este precizia care reprezintă numărul total de cifre, iar j este scala și reprezintă numărul de cifre după virgulă.

•Valoarea implicita pentru scală este zero, iar pentru precizie este lungimea tipului de date definit.

Tipurile de date ale atributelor și domeniile în SQL

Page 16: Baze de Date 2011-2012 Anca Ion Baze de Date -Limbajul SQL-Introducere- Universitatea din Craiova, Facultatea de Automatica, Calculatoare si Electronica.

Baze de Date

2011-2012Anca Ion• Tipurile de date șiruri de caractere sunt fie de dimensiune fixă-

CHAR(n), CHARACTER(n), unde n este numărul de caractere - sau de dimensiune variabilă VARCHAR(n) sau CHAR VARYING(n) sau CHARACTER VARYING(n), unde n este numărul maxim de caractere.

• O valoare string se specifică folosind ghilimele simple.

• Pentru comparare, sirurile de caractere se ordonează alfabetic.

• Dacă stringul str1 apare înainte de str2 în ordine alfabetică, atunci str1 este considerat mai mic decât str2. Pentru caracterele care nu apar în alfabet, există o ordine definită.

• Operatorul de concatenare a șirurilor de caractere este notat || și concatenează 2 șiruri de caractere în SQL. De exemplu, în urma concatenării 'abc' || 'XYZ' rezultă un singur șir de caractere 'abcXYZ'.

Tipurile de date ale atributelor și domeniile în SQL

Page 17: Baze de Date 2011-2012 Anca Ion Baze de Date -Limbajul SQL-Introducere- Universitatea din Craiova, Facultatea de Automatica, Calculatoare si Electronica.

Baze de Date

2011-2012Anca Ion•Tipurile de date bit sunt fie de lungime fixă n – BIT(n) sau de

lungime variabilă BIT VARYING(n), unde n este numărul maxim de biți.

•Șirurile de biți sunt plasate între ghilimele simple, dar precedate de B pentru a le distinge de șirurile de caractere; de exemplu B'10101'.

•Șirurile de biți de lungime multiplu de 4 pot fi reprezentate în hexadecimal, precedate de X și fiecare caracter hexadecimal reprezentând 4 biți.

•Tipul de date boolean are valorile TRUE sau FALSE. În SQL, datorită existenței valorilor NULL, o a treia valoare este folosită pentru tipurile booleene - UNKNOWN.

Tipurile de date ale atributelor și domeniile în SQL

Page 18: Baze de Date 2011-2012 Anca Ion Baze de Date -Limbajul SQL-Introducere- Universitatea din Craiova, Facultatea de Automatica, Calculatoare si Electronica.

Baze de Date

2011-2012Anca Ion Tipurile de date date and time au fost adăugate în SQL2.

Tipul de date DATE are 10 poziții pentru componentele YEAR, MONTH și DAY în forma YYYY-MM-DD. Tipul de date TIME are 8 poziții, cu componentele HOUR, MINUTE și SECOND în formatul HH:MM:SS. Numai valorile valide de timp și dată sunt admise în SQL.

Operatorii de comparație ” < (mai mic), >(mai mare)”pot fi folosiți pentru DATE și TIME.

Valorile de tipul DATE și TIME se reprezintă folosind ghilimele simple DATE '2002-09-27' și TIME'09: 12:47'.

Tipul de date TIME cu TIME ZONE include poziții adiționale care specifică deplasarea de la standardul universal de timp, care este între +13:00 : -12:59(HOURS:MINUTES).Daca Time Zone nu este specificat, timpul implicit este timpul local al zonei.

Tipurile de date ale atributelor și domeniile în SQL

Page 19: Baze de Date 2011-2012 Anca Ion Baze de Date -Limbajul SQL-Introducere- Universitatea din Craiova, Facultatea de Automatica, Calculatoare si Electronica.

Baze de Date

2011-2012Anca Ion•Tipul de date ”TIMESTAMP” include ambele câmpuri DATE și

TIME, plus minimum 6 poziții pentru fracțiuni de secundă și o valoare opțională pentru TIME ZONE.

•Exemplu: TIMESTAMP'2002-09-2709:12:47648302'.

Tipurile de date ale atributelor și domeniile în SQL

Page 20: Baze de Date 2011-2012 Anca Ion Baze de Date -Limbajul SQL-Introducere- Universitatea din Craiova, Facultatea de Automatica, Calculatoare si Electronica.

Baze de Date

2011-2012Anca Ion

Tipurile de date ale atributelor și domeniile în SQL

•Un alt tip de date legat de DATE, TIME și TIMESTAMP este INTERVAL. Intervalele sunt YEAR/MONTH sau DAY/TIME;

• INTERVAL YEAR[(years_precision)] TO MONTH – indică un interval de timp specificat în ani și luni; se poate specifica opțional precizia pentru an.

• INTERVAL DAY[(days_precision)]TO SECOND[(seconds_precision)]- indică un interval de timp specificat în zile și secunde; se poate specifica opțional precizia pentru zile.

• Exemplu de intervale de timp: 2 ani și 3 luni ; 5 luni; 5 ore și 16 minute.

CREATE TABLE TabelaTest (   id INTEGER,  duration INTERVAL YEAR(3) TO MONTH );--interval 11 luniINSERT INTO TabelaTest(id, duration)VALUES (2, INTERVAL '11' MONTH);--interval 1 an și 3 luniINSERT INTO TabelaTest(id, duration)VALUES (4, INTERVAL '1-3' YEAR TO MONTH);

• Formatele DATE, TIME și TIMESTAMP pot fi considerate tipuri speciale de șiruri de caractere.

Page 21: Baze de Date 2011-2012 Anca Ion Baze de Date -Limbajul SQL-Introducere- Universitatea din Craiova, Facultatea de Automatica, Calculatoare si Electronica.

Baze de Date

2011-2012Anca Ion•Este posibilă specificarea directă a unui tip de dată pentru fiecare

atribut ca în figura 1 sau unui atribuit i se poate specifica numele unui domeniu definit.

• De exemplu, se creează domeniul CNP_tip, astfel:

CREATE DOMAIN CNP_tip AS CHAR(13);

•Se va folosi tipul CNP_tip în loc de CHAR(13) în fig.1 pentru atributul CNP.create table Angajat ( Nume varchar (15) not null, Prenume varchar(15) not null, CNP CNP_tip, DataNastere date, Gen char, Salariu real, Adresa varchar(25), ADep int not null, SCNP char(13) );

Tipurile de date ale atributelor și domeniile în SQL

Page 22: Baze de Date 2011-2012 Anca Ion Baze de Date -Limbajul SQL-Introducere- Universitatea din Craiova, Facultatea de Automatica, Calculatoare si Electronica.

Baze de Date

2011-2012Anca Ion•Constrângerile de bază în SQL pot fi descrise ca și parte a

definiției tabelelor.

•Acestea includ: • constrângeri de cheie primară, • constrângeri de cheie externă, • resctricții pe domeniile atributelor și NULL, • Constrângeri DEFAULT, UNIQUE, CHECK,• constrângeri pe tupurile unei relații.

Specificarea constrâgerilor de bază în SQL

Page 23: Baze de Date 2011-2012 Anca Ion Baze de Date -Limbajul SQL-Introducere- Universitatea din Craiova, Facultatea de Automatica, Calculatoare si Electronica.

Baze de Date

2011-2012Anca Ion•Deoarece SQL permite NULL ca si valoare pentru atribute,

constrângerea NOT NULL poate fi specificată dacă valorea NULL nu este permisă pentru un anumit atribut.

•Această constrângere este întotdeauna specificată implicit pentru atributele care sunt parte a cheii primare dintr-o relație.

•Exemplu:

create table departament ( DenumireDep varchar(15) not null, NrDep int not null, . . . );

Constrângerile atributelor-NOT NULL

Page 24: Baze de Date 2011-2012 Anca Ion Baze de Date -Limbajul SQL-Introducere- Universitatea din Craiova, Facultatea de Automatica, Calculatoare si Electronica.

Baze de Date

2011-2012Anca Ion•Este de asemenea posibilă definirea unei valori implicite (default value)

pentru un atribut, prin adăugarea clauzei DEFAULT <valoare> la definirea unui atribut.

•Valoarea implicită este adăugată în fiecare nou tuplu, dacă o altă valoare explicită nu este dată acelui atribut.

•În următorul exemplu se ilustrează specificarea valorii implicite pentru managerul unui departament și departamentul pentru un nou anagajat.

•Dacă nu se specifică nici o clauză DEFAULT, valoarea implicită pentru un atribut este NULL dacă acestuia nu i-a fost adăugată constrângerea NOT NULL.

create table departament ( DenumireDep varchar(15) not null, NrDep int not null, ManagerDep char(13) not null DEFAULT '2790907161246' . . . );

Constrângerile atributelor - DEFAULT

Page 25: Baze de Date 2011-2012 Anca Ion Baze de Date -Limbajul SQL-Introducere- Universitatea din Craiova, Facultatea de Automatica, Calculatoare si Electronica.

Baze de Date

2011-2012Anca Ion•Valorile atributului care are constrangerea UNIQUE trebuie

sa fie unice.

•Atributul poate avea si valori NULE.

•Exemplu:

create table Departament ( DenumireDep varchar(15) UNIQUE, NrDep int not null, ...);

Constrângerile atributelor - UNIQUE

Page 26: Baze de Date 2011-2012 Anca Ion Baze de Date -Limbajul SQL-Introducere- Universitatea din Craiova, Facultatea de Automatica, Calculatoare si Electronica.

Baze de Date

2011-2012Anca Ion•Un alt tip de constrângere poate restricționa atributul sau

valorile domeniului, folosind clauza CHECK urmată de un atribut sau definiția unui domeniu. •De exemplu, să presupunem ca numerele departamentelor sunt restricționate între 1 și 20. •Atunci declarația atributului NrDep din tabela DEPARTAMENT este:

NrDep INT NOT NULL CHECK (NrDep > 0 AND NrDep < 21);

•Clauza CHECK poate fi folosită împreună cu comanda CREATE DOMAIN. De exemplu:

CREATE DOMAIN DEP_NUM AS INTEGER CHECK (value > 0 AND value < 21);

•Domeniul creat DEP_NUM se poate folosi ca tip pentru atributele care se referă la numărul departament din tabela Departament, din tabela Proiecte, din tabela Angajat.

Constrângerile atributelor - CHECK

Page 27: Baze de Date 2011-2012 Anca Ion Baze de Date -Limbajul SQL-Introducere- Universitatea din Craiova, Facultatea de Automatica, Calculatoare si Electronica.

Baze de Date

2011-2012Anca Ion•Deoarece cheile și integritatea referențială (cheile externe)

sunt foarte importante, există clauze speciale în cadrul comenzii CREATE TABLE pentru a le putea a specifica.

•Exemplu în figura 2.

•Clauza PRIMARY KEY specifică unul sau mai multe atribute care alcătuiesc cheia primară a unei relații.

•Dacă cheia primară este alcătuită dintr-un singur atribut, atunci clauza poate urma imediat după atribut.

•De exemplu, cheia primară a tabelei Departament poate fi specificată astfel:

NrDep INT PRIMARY KEY;

Constrângrile de cheie primara

Page 28: Baze de Date 2011-2012 Anca Ion Baze de Date -Limbajul SQL-Introducere- Universitatea din Craiova, Facultatea de Automatica, Calculatoare si Electronica.

Baze de Date

2011-2012Anca Ion•Integritatea referențială este specificată prin clauza FOREIGN

KEY, ca în fig. 2. •Regulile de integritate referențială pot fi încălcate când se inserează tupluri noi sau când sunt șterse tupluri, sau când valorile cheilor primare sau externe sunt modificate.• Acțiunea implicită pe care SQL o ia la încălcarea integrității referențiale este de a rejecta operația care a cauzat încălcarea integrității. Proiectantul bazei de date poate specifica explicit acțiunea alternativă pe care o poate lua SQL când integritatea referențială este încălcată:

ON DELETE or ON UPDATE SET NULLON DELETE or ON UPDATE CASCADEON DELETE or ON UPDATE SET DEFAULT

•In fig. 2 se poate observa cum constrângerile primesc nume (tabela Proiecte), dupa cuvântul cheie CONSTRAINT. Numele constrângerile din aceeași schemă trebuie să fie unice și ele identifică o anumită constrângere în cazul ca aceasta trebuie ștearsă mai târziu sau înlocuită cu alta.

Constrângrile de cheie externă

Page 29: Baze de Date 2011-2012 Anca Ion Baze de Date -Limbajul SQL-Introducere- Universitatea din Craiova, Facultatea de Automatica, Calculatoare si Electronica.

Baze de Date

2011-2012Anca Ioncreate table Departament

( DenumireDep varchar(15) not null, NrDep int not null, ManagerDep char(13), ManagerData date, primary key(NrDep), unique (DenumireDep), foreign key (ManagerDep) references Angajat(CNP));

Deoarece avem o legatura circulara intre tabelul Departament si Angajat (ManagerDep cheie externa in tabela Departament, definita peste cheia primara Cnp din tabela Angajat; si ADep cheie externa in tabela Angajat definita peste cheia primata NrDep din tabela Departament ), atunci una dintre constrangeri va trebuie sa o definim ulterior crearii tabelelor.

Exemplu

Page 30: Baze de Date 2011-2012 Anca Ion Baze de Date -Limbajul SQL-Introducere- Universitatea din Craiova, Facultatea de Automatica, Calculatoare si Electronica.

Baze de Date

2011-2012Anca Ioncreate table Angajat (

Nume varchar (15) not null, Prenume varchar(15) not null, CNP char(13) not null, DataNastere date, Gen char, Salariu real, Adresa varchar(25), ADep int not null, SCNP char(13), primary key(CNP), foreign key(ADep) references departament(NrDep) on delete cascade on update cascade, foreign key(SCNP) references angajat(CNP) );

Exemplu

Page 31: Baze de Date 2011-2012 Anca Ion Baze de Date -Limbajul SQL-Introducere- Universitatea din Craiova, Facultatea de Automatica, Calculatoare si Electronica.

Baze de Date

2011-2012Anca Ioncreate table Locatii

( NrDep int, Locatie varchar(15), primary key (NrDep, Locatie), foreign key (NrDep) references departament(NrDep) );--------------------------------------------------------------------------------------------------create table Proiecte ( NrProiect int not null, DenProiect varchar(30) not null, Locatie varchar(15) not null, PDep int not null, constraint pk_nr_proiect primary key(NrProiect), constraint unique_nume unique(DenProiect), constraint fk2_nr_departament foreign key(PDep) references departament(NrDep) );

Exemplu

Page 32: Baze de Date 2011-2012 Anca Ion Baze de Date -Limbajul SQL-Introducere- Universitatea din Craiova, Facultatea de Automatica, Calculatoare si Electronica.

Baze de Date

2011-2012Anca Ioncreate table AngajatiProiecte

( PCNP char(13), NrProiect int, NrOre int, constraint pk_cnp_nr_proiect primary key (PCNP, NrProiect), constraint fk_nr_proiect foreign key(NrProiect) references Proiecte(NrProiect), constraint fk2_cnp foreign key(PCNP) references angajat(CNP)); ----------------------------------------------------------------------------------------------------create table PersoaneIntretinere(CNP char(13) not null,NumePersoana varchar(25) not null,Gen char,DataNastere date,Legatura varchar(25),primary key (CNP, NumePersoana), foreign key(cnp) references Angajat(cnp));

Fig. 2. Baza de date bdCompanie

Exemplu

Page 33: Baze de Date 2011-2012 Anca Ion Baze de Date -Limbajul SQL-Introducere- Universitatea din Craiova, Facultatea de Automatica, Calculatoare si Electronica.

Baze de Date

2011-2012Anca Ion•Alte tipuri de constrângeri care se pot defini pe o tabela sunt

cele specificate prin clauza CHECK la sfârșitul comenzii CREATE TABLE.

• Acestea se numesc constrângeri bazate pe tuplu deoarece ele se aplică pe fiecare tuplu în parte și sunt verificate ori de câte ori un tuplu este adăugat sau modificat.

•De exemplu, să presupunem că în tabela Departament mai trebuie adăugat atributul DataCreareDep care reprezintă data când a fost creat departamentul.

•Astfel trebuie să adăugăm constrângerea CHECK ca DataCreareDep sa fie înainte de data în care departamentul a avut manager (ManagerData).

Specificarea constrângerilor pe tupluri folosind CHECK

Page 34: Baze de Date 2011-2012 Anca Ion Baze de Date -Limbajul SQL-Introducere- Universitatea din Craiova, Facultatea de Automatica, Calculatoare si Electronica.

Baze de Date

2011-2012Anca Ioncreate table Departament

( DenumireDep varchar(15) not null, NrDep int not null, ManagerDep char(13) not null DEFAULT '2790907161246', ManagerData date, DataCreareDep date, primary key(NrDep), unique (DenumireDep), foreign key (ManagerDep) references Angajat(CNP), CHECK (DataCreareDep < ManagerData));

Specificarea constrângerilor pe tupluri folosind CHECK

Page 35: Baze de Date 2011-2012 Anca Ion Baze de Date -Limbajul SQL-Introducere- Universitatea din Craiova, Facultatea de Automatica, Calculatoare si Electronica.

Baze de Date

2011-2012Anca Ion•Comanda DROP poate fi folosită pentru a șterge elemente din schemă: tabele,

domenii, constrângeri sau chiar schema. •Dacă schema nu mai este utilizată se poate șterge cu comanda DROP SCHEMA. Există 2 opțiuni la ștergere: CASCADE și RESTRICT. •De exemplu pentru a șterge schema COMPANIE cu toate tabelele, domeniile, constrângerile și alte elemente definite în schemă se foloseste opțiunea CASCADE:

DROP SCHEMA COMPANIE CASCADE;

•Dacă opțiunea RESTRICT este folosită atunci schema poate fi ștearsă doar dacă nu are nici un element în ea, altfel comanda DROP nu va fi executată.

•Dacă o relație dintr-o schemă nu mai este folositoare, relația și definiția ei pot fi șterse cu comanda DROP TABLE. De exemplu putem șterge relația PersoaneÎntreținere:

DROP TABLE PersoaneÎntreținere CASCADE;

•Cu opțiunea CASCADE, toate constrângerile și vederile care fac referire la tabelă sunt automat șterse împreună cu tabela.•Comanda DROP poate fi folosită și pentru a șterge constrângeri definite pe tabele sau domenii.

Modificarea bazei de date în SQL

Page 36: Baze de Date 2011-2012 Anca Ion Baze de Date -Limbajul SQL-Introducere- Universitatea din Craiova, Facultatea de Automatica, Calculatoare si Electronica.

Baze de Date

2011-2012Anca Ion•Definiția unei tabele sau a elementelor din schemă pot fi

schimbate folosind comanda ALTER.

•Pentru o tabelă, modificările care se pot face sunt: adăugarea sau ștergerea unei coloane (atribut), schimbarea definiției unei coloane, adăugarea sau ștergerea de constrângeri pe tabelă.

•De exemplu, adăugarea unei coloane ”Serviciu” în tabelul Angajat

ALTER TABLE Angajat ADD Serviciu VARCHAR(12);

•Pentru a șterge o coloană se folosesc opțiunile DROP CASCADE sau DROP RESTRICT.

•Dacă se alege opțiunea CASCADE, toate constrângerile sau vederile care fac referire la coloană sunt automat șterse împreună cu coloana.

Modificarea schemei bazei de date în SQL

Page 37: Baze de Date 2011-2012 Anca Ion Baze de Date -Limbajul SQL-Introducere- Universitatea din Craiova, Facultatea de Automatica, Calculatoare si Electronica.

Baze de Date

2011-2012Anca Ion•De exemplu:

ALTER TABLE Angajat DROP Adresa CASCADE;

•Este posibilă modificarea definiției unei coloane prin ștergerea unei clauze DEFAULT sau prin definirea unei noi clauze DEFAULT. Exemplu:

ALTER TABLE DEPARTAMENT ALTER ManagerDep DROP DEFAULT;ALTER TABLE DEPARTAMENT ALTER ManagerDep SET DEFAULT '1031378555512';

•Pentru a șterge o constrângere:

ALTER TABLE AngajatProiecte DROP CONSTRAINT fk2_cnp CASCADE;

•Pentru adăugarea unei constrângeri la o tabelă se foloșeste cuvântul cheie ADD în comanda ALTER TABLE, urmat de noua constrângere.

ALTER TABLE Departament ADD CONSTRAINT fk_manager_departament FOREIGN KEY (ManagerDep) REFERENCES Angajat(CNP)

Modificarea schemei bazei de date în SQL

Page 38: Baze de Date 2011-2012 Anca Ion Baze de Date -Limbajul SQL-Introducere- Universitatea din Craiova, Facultatea de Automatica, Calculatoare si Electronica.

Baze de Date

2011-2012Anca Ion•În forma cea mai simplă, comanda INSERT este folosită

pentru a adăuga un singur tuplu unei relații.

• Trebuie specificat numele relației și lista de valori pentru tuplu.

• Valorile trebuie date în aceeași ordine în care au fost specificate atributele în comanda CREATE TABLE.

•O altă formă a comenzii INSERT permite utilizatorului să specifice explicit numele atributelor care corespund valorilor din comanda INSERT.

• Aceasta este utilă dacă o relație are mai multe attribute, dar în numai câteva se inserează valori noi.

• Valorile trebuie să includă toate atributele cu constrângerea NOT NULL.

Inserarea şi modificarea datelor. Comanda INSERT

Page 39: Baze de Date 2011-2012 Anca Ion Baze de Date -Limbajul SQL-Introducere- Universitatea din Craiova, Facultatea de Automatica, Calculatoare si Electronica.

Baze de Date

2011-2012Anca Ion•Exemplu de adăugare a unui nou tuplu în tabela Angajat:

insert into Departament values( 'proiectare', 1, '2566788999334‘, ‘11/11/2000‘);

insert into Angajat(Nume,Prenume,CNP,Salariu) values( 'popa', 'camelia', '2356789000776', 5500000 );

Inserarea şi modificarea datelor. Comanda INSERT

Page 40: Baze de Date 2011-2012 Anca Ion Baze de Date -Limbajul SQL-Introducere- Universitatea din Craiova, Facultatea de Automatica, Calculatoare si Electronica.

Baze de Date

2011-2012Anca Ion•Comanda DELETE șterge tuplurile unei relații. Aceasta

include clauza WHERE pentru a indica care tupluri trebuie șterse. Tuplurile sunt explicit șterse dintr-o singura tabelă la un anumit moment.

•În funcție de numărul de tupluri selectate de condiția din clauza WHERE, o comandă DELETE poate șterge zero, unul sau mai multe tupluri dintr-o tabelă. Dacă clauza WHERE lipsește, atunci se vor șterge toate tuplurile din relația specificată. Tabela ramâne în baza de date, dar fără înregstrări.

•Exemple:

DELETE from Angajat where CNP = '2365333424343'

DELETE from Angajat where Nume= 'Popescu'

DELETE from Angajat;

Inserarea şi modificarea datelor. Comanda DELETE

Page 41: Baze de Date 2011-2012 Anca Ion Baze de Date -Limbajul SQL-Introducere- Universitatea din Craiova, Facultatea de Automatica, Calculatoare si Electronica.

Baze de Date

2011-2012Anca Ion•Comanda UPDATE este utilizată pentru a modifica valorile

atributelor ale unuia sau mai multor tupluri dintr-o tabelă.

•Ca și pentru comanda DELETE, clauza WHERE este folosită și în comanda UPDATE pentru a selecta tuplurile care trebuie modificate într-o singură relație. Comanda include o clauză adițională SET care specifică atributele care trebuie modificate și noile lor valori.

UPDATE Angajat set NrDep = 1 where CNP in (2356789000789,1267899999998,2566788999334)

UPDATE Angajat set NrDep = 2 where CNP in (2356789000776,1346788945678,2365333424343)

UPDATE Angajat set NrDep = 4 where CNP =1764343434343

UPDATE Angajat set NrDep = 3 where CNP =2299866464646

Inserarea şi modificarea datelor. Comanda UPDATE