Documente Academic
Documente Profesional
Documente Cultură
Ion DamaskIn
Microsoft SQL Server
Baze de date
O baza de date e un ansamblu structurat de
date, inregistrat pe suporturi accesibile
calculatorului pentru a satisface simultan
cerintele mai multor utilizatori intr-un mod
selectiv si in timp util.`
PA! SQL SERVER invatat!
cum se cereaza si se acceseaza o baza de date.
PA!
Tema :BD relationare
1)fisiere si baza de date
2)dictionarul datelor
3)termenii-BD si sistemul de gestiune a BD
4)indipendenta a datelor
5)modelele de date:ierarhic,retea si relational...
6)functii unui SGBD
7)arhitectura unui SGBD
8)LDD libbaj de definire a datelor
9)limbaj de manipulare a datelor
10)Rolul persoanelor in elaborarea a BD
11)schema LGBD
12)clasificarea SGBD
tabelul
are nume
este creat din coloane ce au nume
valorile coloanelor formeaza inregsistrarea
fiecare tabel nu depinde ordinea coloanelor
tabelul trebuie sa aiba 1+ campuri cu valori unice
defineste in mod unic o inregistrare cu chei
primare
independenta datelor:
pentru a asigura independenta
nivelul extern sa nu depinda de nivelul fizic
sunt multe modele de bd
1 model ierarhic
2 model retea
3 model relational
instructiuni:
create- creaza
alter - modifica
drop - sterge
limbaj de manipulare a datelor
Insert
Update
delete-
- introducerea datelor
-
limbaj de control
LC
revoke (rewoke) restrictioneaza accesul
Grant
permite accesul
Schema sgbd
lista de module
lista de actiuni
PA!
de adus cate o pagina de informatie la fiecare
intrebare de la lectie 1..12
FN3
daca satisface FN2 si nu exista atribute tranzitive
(care depinde de lol1 prin lol2)
pretul depinde de cheie da reducerea depinde de
pret (reducerea depinde tranzitiv de ID)
Pentru descompunerea tabelelor (normalizare)
exista algoritmi speciali de descompunere a
tabelelor pentru formele normale 2, forma
normala BScod , forma normala 4 si 5
la fel exista si algoritmi de verificare daca la
descompunere nu a avut loc pierderea de date.
pasi:
1 inventarierea
2 normalizarea
3 discompunerea atributelor (adaugarea
coloanelor pentru campuri (telefon fix, domestic,
lucru)
determinam cheile si vedem ca toate atributele
sa depinda de intreaga cheie
pasii de proiectare:
pentru ce noua baza de date?
domeniul de aplicare a bazei de date.
ce date trebuie introduse in baza de date?
informatia reprezinta cand sunt mai multe date
care au o legatura intre ele, cand exista legatura
- datele devin informatii.
tipuri de date
avem tipuri de date numerice care coincid.
timestamp
PA! descrierea tuturor tipurilor de date (lungimea
si pentru ce sunt prevazute) din SQL Server.
| denumirea datelor
| nume_student
| prenume student
| sursa datelor
| catalog
| catalog
Firma comerciala
1 | produs
| document de instire |
2 | cantitate |
3 | producator|
4 | pret
|
5 |adresa pr. |
6 |nm.client | Liste
7 |pers.contct |
8 |adresa clientului|
Produse
Producatori
Clienti
Produse
| Produsul nm Producator
produse
nume_produs char(50),
id_producator int,
pret decimal(10,2),
descriere_produs text)
In baza faptului c nu a fost indicata
constrangerea Not NULL si nici NULL, implicit se
considera NULL
char(200), NULL.
Stergerea unui camp se efectueaza
DROP COLUMN InfoClient;
sa se scrie instructiunea care elimina
constrangerea cheii primare la tabelul Comenzi,
campul DataComenzi
ALTER TABLE Comenzi DROP CONSTRAINT
PKComenzi;
instructiunea va fi corecta doar in cazul cand
cheia primara a campului nrComanda va avea
numele PKComenzi.
pentru atribuirea de nume a cheii primare
constrangerea trebuie sa fie declarata fie la
sfarsitul declararii campurilor in instructiunea
CREATE TABLE, fie cu instructiunea alterTable,
dupa cuvantul cheie Constraint.
s se scrie instruciunea de dezactivare a unei
constrangeri (de dezactivare a constrangerii cheii
primare a tabelului Comenzi)
-- DISABLE PRIMARY KEY
ALTER INDEX PKComenzi DISABLE
redenumirea tabelelor sau a campurilor, daca
sunt acceptate, se efectueaza fie prin
instructiunea RENAME dar majoritatea sgbdurilor utilizeaza procedura SP_RENAME
unele sgbd-uri pot cere numele vechi si numele
nou.
exemplu SP_RENAME 'COMENZI ','ComenziNou';
sa se schimbe numele campului nrComanda in
numele numarComanda, din tabelul comenzi.
SP_Rename
'Comenzi.NrComanda','NumarComanda'
Column...
este de dorit ca la crearea structurii tabelelor sa
se utilizeze la maximum constrangerile, dar, sata
poate duce la cresterea timpului de executie a
modificarilor bazei de date, ceea ce ne impune sa
alegem varianta optimala, sa gasim un
compromis intre timpul de exeutie i numarul de
constrangeri pentru verificare
un exemplu de instructiune cu verificari la
maximum a corectitudinii datelor.
create table raionul(
nrai char(2)
primary key;
check (nrai = LTRIM(UPPER(nrai))),
ERROR 'Indicativul judetului se scrie cu
majuscule'
raion char(25);
not null
check (raion= LTRIM(PROPER(raion)));
ERROR 'prima litera din fiecare cuvint
al'+chr(13)+;
FROM Produs
WHERE PretProdus BETWEEN 5 AND 10;
SELECT NumeProdus, PretProdus
FROM Produse
WHERE NumeProdus LIKE 'R%'
SELECT PretProdus
FROM Produse
WHERE PretProdus IN (5.99, 4.99, 8.99);
SELECT idProdus, PretArticol * Cantitate AS Cost
FROM ArticolComandat;
SELECt idProdus, PretProdus * 0.01
FROM ArticolComandat;
SELECT RTRIM (NumeClienti) + '(' +
RTRIM(taraClient)+')' AS numeformatat
FROM Clienti
WHERE idclient = '1000000001';
suma tuturor costurilor produselor comandate
SELECT SUM(Pretunitar * Cantitate) AS CumCost
FROM ArticolComandat;
nume Alias
Laborator
sa se scrie instructiunile pentru baza de date din
proiectul nostru:
extragerea unei coloane, extragerea mai multor
coloane, extragerea tuturor coloanelor.
ORDER BY.
dupa SELECT se permite de a specifica coloanele
ce vor fi extrase sau coloanele ce vor fi calculate,
precum si atribuirea de denumiri "clare" =
aliasuri.
Clauza from permite de a specifica, indica
tabelele in care se contin campurile specificate in
select. Precum si indicarea/stabilirea tipului de
uniri a tabelului.
Clauza WHERE este optionala - in caz de nu este
indicata/utilizata/specificata, vor fi prelucrate
toate inregistrarile tabelului. O deosebita atentie
acestei clauze este in instructiunea DELETE si
UPDATE.
Daca nu se utilizeaza clauza - vor fi
sterse/modificate toate randurile.
Pentru instructiunea SELECT de a specifica
conditii simple sau sofisticate (complicate) de
selectare a randurilor tabelelor specificate in
FROM care contin coloane specificate in SELECT.
4.1 Extragerea datelor dintr-un singur tabel.
Lista cu puncte ....
selectarea datelor unei singuri coloane:
SELECT nume from Stari, posesori WHERE
(posesori.id = stari.id_p and stari.stare =
'nesat');
extragerea mai multor coloane
SELECT nume, denumire_manual from Stari,
posesori,manual WHERE (posesori.id = stari.id_p
and stari.stare = 'nesat' and manual.ID_manual
= stari.id_m);
* extragerea tuturor coloanelor
SELECT * FROM Posesori;
* instructiuni cu operatori de relatie <
SELECT denumire_manual FROM Manual WHERE
(anul < '2014');
* instructiuni cu operatori de relatie >
SELECT denumire_manual FROM Manual WHERE
(anul > '2014');
* instructiuni cu operatori de relatie =
SELECT denumire_manual FROM Manual WHERE
(pret = '50');
* instructiuni cu operatori de relatie !=
SELECT denumire_manual FROM Manual WHERE
(anul != '2014');
* instructiuni cu operatori logici
SELECT denumire_manual FROM Manual WHERE
NOT (anul != '2014');
* instructiuni cu operatori logici OR
SELECT denumire_manual FROM Manual WHERE
(ID_editura LIKE '01' OR ID_editura LIKE '04');
* instructiuni cu operatori logici AND
SELECT denumire_manual FROM Manual WHERE
((ID_editura LIKE '03' OR ID_editura LIKE '04')
AND (anul = '2013' OR anul = '2014');
* operator IS NULL
data de astazi
interogari de modificare a datelor
interogari cu actiuni
import, export.
modificarea datelor intr-o baza de date se
efectueaza cu comanda update (interogari cu
aciuni)
in comanda update specificam numele tabelului,
comanda SET, numele campului(coloanei) semnul
"Egal" i valoarea nou a cmpului.
s se scrie instruciunea ce modific valoarea
cmpului email_client, atribuindu-i o adres de
email a clientului ce nu dispune ce nu dispune de
email.
In comanda UPDATE poatefi utilizata clauza
WHERE i se recomand mai mult ca att ca
condiie de filtrare e recomandat s se utilizeze
cheia primar a rndului
dac clauza WHERE nu persist, atunci cu
valoarea specificat n SET vor fi modificate
vaorile tuturor rndurilor.
Sa se scrie instructiunea ce modifica din tabelul
Clienti campul email_client a clientilor ce nu
dispun de email.
UPDATE Clienti
SET email_client = 'mail1@mail.ru'
WHERE email_client IS NULL;
UPDATE Comenzi
SET DataComanda = GETDATE, ID_Client=
'1000005'
WHERE NumarComanda = 20008
PA!
Comanda DELETE.
referat la tema import, export;
Update Produse
SET Pret_Produs = 15
WHERE IDprodus = 'BR03';
Sa se modifice pretul producatorului id_prod din
3.49 in valoarea 5
UPDATE Produse
SET Pret_Produs = 5
WHERE ID_prod = 'DLL01';
Sa se modifice la producatorul cu codul 'JTS01'
numele producatorului si statul producatorului;
Update Producatori
SET nume_prod = 'Garuta',
stat_prod = 'Cahul'
Where id_prod = 'JTS01';
Stergerea
Pentru a sgerge o coloana
DELETE FROM Comenzi
WHERE Numar_Comanda = 20005
AND Numar comanda = 20008;
Indexes
An index can be created in a table to find data
more quickly and efficiently.
The users cannot see the indexes, they are just
used to speed up searches/queries.
Laborator
sa se execute instructiunile de modificare a
datelor:
1
sa se modifice in baza de date produse campul
stat_client in valoarea ch a clientului cu codul
100..3
UPDATE Clienti
SET stat_client = "Ch"
WHERE id_client = "1000000003";
in tabelul ArticolComandat sa se modifice
pret_articol a articolelor codul carora incepe cu
RGA
UPDATE ArticolComandat
SET Pret_articol = 10
WHERE id_produs LIKE "RGA%";
In tabelul comenzi sa se stearga randurile la care
anul din data_comanda este 2004
DELETE FROM Comenzi
WHERE '2014'
IN(SELECT EXTRACT(YEAR FROM
DataComanda));
EXTRACT(YEAR FROM DataComanda) = '2004';
UPDATE Produse
SET nume_produs
=REPLACE(nume_produs,RTRIM(nume_produs),'
% ', '')
WHERE nume_produs
UPDATE Clienti