Sunteți pe pagina 1din 27

PROIECT

GESTIUNEA UNUI MAGAZIN GSM


Student: Necula Radu Adrian
Anul 1, Informatica
Universitatea din Pitesti

Introducere SQL:
SQL este limbajul standard pentru accesarea i modificarea bazelor de date.
ntrebuinri SQL:
SQL poate executa interogri la baza de date
SQL poate extrage date din baza de date
SQL poate insera nregistrri n baza de date
SQL poate actualiza nregistrri n baza de date
SQL poate crea noi baze de date
SQL poate crea noi tabele n baza de date
SQL poate crea proceduri stocate, funcii, triggere
SQL poate crea vizualizri n baza de date
SQL poate stabili permisiuni asupra entitilor din baza de date
SQL este un standard DAR
Cu toate c SQL este standard ANSI, exist mai multe versiuni ale
limbajului SQL
Totui, cel puin comenzile principale (SELECT, UPDATE, INSERT,
DELETE) sunt permise ntr-un mod aproape unitar de toate implementrile,
pentru compatibilitate.

Introducere baze de date:


Prin baz de date nelegem o colecie de date elementare i
interdependente, structurate i organizate astfel nct s fie accesibile unei
comuniti de utilizatori.

Bazele de date sunt concepute pentru a prelucra volume mari de


informaii. Organizarea datelor n unul sau mai multe fiiere stocate n memoria
extern este n concordan cu aceast definiie.
Conceptul de baz de date a aprut n 1964 n cadrul primului raport
CODASYL prezentat la lucrrile unei conferine pe probleme de limbaje de
gestiune a datelor Development and Management of Computer centered datebase. La aceast conferin a fost lansat ideea organizrii datelor prin
intermediul unui fiier de descriere global, numit dicionar de date care are
menirea de a asigura independena programelor fa de date i a datelor fa de
programe .
Baza de date conine nu numai datele operaionale ale organizaiei, ci i o
descriere a acestora. De aceea ea este definit i ca o colecie autodescris de
nregistrri integrate. Aceast descriere a datelor este cunoscut sub denumirea
de catalog de sistem sau dicionar de date sau meta-date (date despre date).
Natura autodescriptiv a bazelor de date este cea care determin independena
program-date.
Accesul utilizatorilor la informaiile despre structura unei baze de date se
realizeaz prin intermediul dicionarului de date.
O 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, indecii, 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.
Incepnd cu versiunea SQL 7.0, a fost introdus conceptul de nume logic.
Exist cte un nume logic pentru fiecare fisier .mdf, .ndf, .ldf. Implicit, pentru

fisierul .mdf, numele logic coincide cu numele fiierului fizic(fr extensie) iar
pentru fisierul .ldf numele logic coincide cu numele fiierului fizic(fr extensie)
completat cu _log.
Numele logice sunt utilizate de funciile de administrare ale sistemului
SQL Server pentru identificarea fiierelor i nu trebuie neaprat schimbate cnd
se schimb denumirea bazei de date.
Tema aleas pentru proiect:
Am creat o baz de date referitoare la gestiunea unui magazin GSM. Proiectul
este realizat n Microsoft SQL Server 2012 Express/86 biti. Baza de date
conine informaii referitoare la produsele aflate n magazin ( tProduse ), la
angajaii din magazin ( tAngajai ), la clieni ( tClieni ), la bonurile eliberate
( tBonuri ) i la detalii bonuri eliberate ( tDetaliiBon ).

Structura tabelelor:
Reguli de gestiune:
-

Un bon emis pentru un singur client.


Unui client i pot fi emise mai multe bonuri.
Un bon face referire la mai multe produse.
Un produs este obiectul mai multor bonuri.

Create table tAngajai

(
CodAngajat char(10) primary key,
Nume varchar(25) not null,
Prenume varchar(30) not null,
CNP char(13) not null unique,
DataNasterii as convert (smalldatetime,substring(cnp,2,6),12),
CodDepartament char(10) not null,
CodFunctie char(6) not null,
DataAngajarii smalldatetime not null,
Salariu int not null
)

create table tClienti

CodClient char(10) primary key,


NumeClient varchar(25) not null,
CodJudet char(2) not null,
Localitate varchar(10) not null,
Strada varchar(10) not null,
RestAdresa varchar(25) not null
)

create table tBonuri

(
NrBon char(10) primary key,
DataBon smalldatetime default getdate(),
CodClient char(10) not null foreign key references
tClienti(CodClient),
CodAngajat char(10) not null foreign key references
tAngajati(CodAngajat)
)
create table tProduse

(
CodProd char(10) primary key,
DenProd char(25) not null,
UM char(6) not null,
pret decimal(7,2) not null
)
create table tDetaliiBon

NrBon char(10) constraint fk_NrFact foreign key references


tBonuri(NrBon),
CodProd char(10) constraint fk_CodProd foreign key
tProduse(CodProd),
Cantitate decimal(8,3) not null,
constraint pk_DetFact primary key(NrBon,CodProd)
)

Crearea bazei de date

Utilizarea bazei de date

Crearea tabelelor

Inserarea datelor n tabel

Extragerea de date

Filtrarea datelor

Actualizarea datelor n tabel

tergerea datelor din tabel

Regsirea datelor dintr-o baz de date

Sortarea datelor dup un anumit criteriu

Combinarea instruciunilor SELECT

Determinarea celei mai mari valori dintr-o coloan

Determinarea celei mai mici valori dintr-o coloan

Calculul valorii medii pe coloan numeric

Gruparea datelor

Constrngeri
Se folosesc pentru a limita tipul datelor care pot ajunge n tabel
Se pot specifica la crearea tabelei (n instruciunea CREATE TABLE) sau
dup ce a fost creat tabela (cu instruciunea ALTER TABLE)
NOT NULL
UNIQUE
PRIMARY KEY
FOREIGN KEY
CHECK
DEFAULT
Constrngerea NOT NULL
Implicit o tabel poate conine n cmpurile sale valori NULL
NOT NULL va determina ca aceast valoare s nu fie acceptat n coloana
asupra creia se aplic constrngerea

Cu aceast constrngere nu se vor putea aduga nregistrri sau nu se vor


putea actualiza fr a specifica o valoarea pentru cmpul respectiv
CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
Constrngerea UNIQUE
Folosit asupra unei coloane n care nu se vor permite date duplicate
UNIQUE i PRIMARY KEY ofer garania de unicitate pentru o coloan sau
mulime de coloane
O constrngere de tip PRIMARY KEY are ntotdeauna definit i o
constrngere UNIQUE
Putem avea mai multe constrngeri UNIQUE dar o singur constrngere
PRIMARY KEY
Constrngerea UNIQUE - exemplu
CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),

Address varchar(255), City varchar(255),


UNIQUE (P_Id)
)
Constrngerea UNIQUE cu ALTER TABLE
Definirea unei constrngeri de unicitate dup ce tabela a fost creat
MySQL / SQL Server / Oracle / MS Access
ALTER TABLE Persons
ADD UNIQUE (P_Id)
ALTER TABLE Persons
ADD CONSTRAINT uc_PersonID UNIQUE
(P_Id,LastName)
Eliminarea unei constrngeri
MySQL
ALTER TABLE Persons
DROP INDEX uc_PersonID

Constrngerea PRIMARY KEY


Identific n mod unic fiecare nregistrare din tabel
Cheia primar trebuie s conin valori unice
Nu poate conine valoarea NULL
Fiecare tabel trebuie s aib o cheie primar i numai una
Crearea unei constrngeri de cheie primar dup crearea tabelei

ALTER TABLE Persons


ADD PRIMARY KEY (P_Id)
n acest caz coloanele ce fac parte din cheia primar trebuie s fi fost definite
anterior astfel nct s nu accepte valoarea NULL

Instruciunea ALTER TABLE


Folosit pentru a aduga, modifica, terge, coloane dintr-o tabel
Adugarea unei coloane
ALTER TABLE table_name
ADD column_name datatype
tergerea unei coloane
ALTER TABLE table_name
DROP COLUMN column_name
Schimbarea tipului de date pentru o coloan
ALTER TABLE table_name
ALTER COLUMN column_name datatype
Eliminarea coloanei adugate anterior
ALTER TABLE Persons
DROP COLUMN DateOfBirth

Date calendaristice
Forma datei pe care ncercm s o inserm trebuie s se potriveasc cu
formatul coloanei de tip dat din tabel

Atunci cnd apare i partea de timp/or lucrurile se complic


Exist o serie de funcii predefinite pentru procesarea informaiile legate de
dat/or

NULL
Reprezint date lips/necunoscute/inaplicabile
Implicit o coloan poate conine valoarea NULL
Operatori pentru NULL:
IS NULL
IS NOT NULL
Cnd valoarea unei coloane este opional putem aduga o nregistrare sau o
putem actualiza fr a specifica o valoare pentru coloana respectiv
n acest caz se va salva valoarea NULL
Valoarea NULL este tratat diferit fa de restul valorilor
Se folosete ca un marcator pentru date necunoscute/inaplicabile
NULL i 0 (zero) nu sunt echivalente sau comparabile

Extragem nregistrrile cu adresa NULL


SELECT LastName, FirstName, Address FROM
Persons
WHERE Address IS NULL

Extragem nregistrrile cu adresa completat

SELECT LastName, FirstName, Address FROM


Persons
WHERE Address IS NOT NULL

Subinterogarea
n SQL, subinterogrile ne permit s aflm o informaie care ne este
necesar pentru a obine informaia pe care o vrem.
O subinterogare (subquery) este o instruciune SELECT care este inclus n
clauza unei alte instruciuni SELEC
Subinterogarea poate fi plasata n una din urmtoarele clauze:
WHERE
HAVING
FROM
Subinterogarea se execut prima dat, iar rezultatul este folosit pentru
obinerea rezultatului de ctre interogarea principal (outer query).
Reguli de folosire a subinterogarilor
O subinterogare se pune ntre paranteze rotunde
O subinterogare este plasata n partea dreapt a unei condiii de comparare
Interogarea exterioar i subinterogarea-ul pot prelua date din tabele diferite
ntr-o instruciune SELECT se poate folosi o singur clauz ORDER BY i,
dac se folosete, trebuie s fie ultima clauza a interogrii principale.
Un subquery nu poate avea propria clauz ORDER BY.
Singura limit a numrului de interogri este dimensiunea buffer-ului folosit
de interogare.

Dac subinterogarea returneaz null sau nu returneaza nici o linie, atunci


interogarea exterioar nu va returna nimic.
Sunt dou tipuri de subinterogri(subqueries):
1) single-row subqueries care folosesc operatorii single-row: >,=,>=,<,<= i
dau ca rezultat o singur linie.
2) multiple-row subqueries care folosesc operatorii multiple-row: IN, ANY,
ALL i dau ca rezultat mai multe linii.