Sunteți pe pagina 1din 7

create database

Aceasta comanda creeaza o baza de date . Exemplu.


CREATE DATABASE produse

Comenzi pentru definirea datelor


Principalele comenzi SQL pentru definirea datelor sunt urmtoarele:

CREATE DATABASE,
DROP DATABASE,

CREATE TABLE,

ALTER TABLE,

DROP TABLE.

Comanda CREATE DATABASE are urmtoarea sintax:


CREATE DATABASE nume_baza_de_date
fiind utilizat pentru crearea unei noi baze de date.
Comanda DROP DATABASE nume_baza_de_date
este utilizat pentru stergerea bazei de date.
Pentru crearea unei tabele se utilizeaz comanda
CREATE TABLE nume_tabela (cmp1 tip_data [NOT NULL], cmp2 tip_data [NOT
NULL], cmp3 tip_data [NOT NULL]...).
Numele tabelei trebuie sa fie unic n cadrul bazei de date, neputnd fi unul din cuvintele
rezervate. Totodata, acesta poate avea si anumite restrictii privind: numarul de caractere din care
este format, utilizarea anumitor simboluri, folosirea literelor mari sau mici, natura caracterului de
nceput etc. Aceleasi cerinte apar si pentru numele cmpurilor; n plus exista posibilitatea
duplicarii lor n cadrul bazei de date, dar se pastreaza unicitatea n tabela. Clauza NOT NULL
arata ca n cmpul respectiv nu se memoreaza valori de tip NULL.
Exemplu: Se creeaza tabela Vnzari cu urmatoarea structura a nregistrarii:
numar (tip numeric), cod marfa (tip numeric), data vnzarii (tip data calendaristica), localitatea
(tip caracter).
n cmpul data vnzarii nu se vor memora valori de tip NULL.

CREATE TABLE VANZARI(Nr Number, Cod_m Number, Data_v Date NOT NULL, Localit
Char)
Pentru modificarea structurii unui tabel se utilizeaz comanda ALTER TABLE cu urmtoarea
sintax (simplificat):
ALTER TABLE nume_tabela ADD nume_cmp tip_data.
n aceast variant se adaug n structura tabelei cmpul specificat n comanda.
Exemplu: Se adaug n tabela Personal_Vnzare un nou cmp numit Telefon:
ALTER TABLE PERSONAL_VANZARE ADD Telefon Integer.
Comanda
DROP TABLE nume_tabela
este folosita pentru a sterge complet o tabela dintr-o baza de date (structura i valorile asociate).
INCARCAREA SI ACTUALIZAREA DATELOR CU COMENZI SQL
Actualizarea datelor se refer la adugarea unor noi rnduri ntr-o tabel (cu comanda
INSERT), la modificarea valorilor uneia sau mai multor valori dintr-un rnd (cu comanda
UPDATE) i la tergerea unui rnd dintr-o tabel (cu comanda DELETE).
n vederea adugarii unor rnduri noi ntr-o tabel sau ntr-o viziune se utilizeaz
comanda:
INSERT INTO nume-tabel [(nume-col1,nume-col2,...)] {VALUES (valoare
1,valoare2,...)};
Pentru nume-col1,nume-col2... precizate n paranteze vor fi furnizate valorile
corespunztoare, iar coloanelor nespecificate le sunt ataate valori nule. Coloanele pot fi
precizate n orice ordine, ns trebuie asigurat corespondena ntre numele coloanelor i valorile
furnizate.
n cazul n care anumite coloane nu sunt specificate explicit se impune ca ordinea n care
apar valorile n comanda INSERT s coincid cu cea n care coloanele au fost definite la crearea
tabelei.
Dac nu se mai cunoate ordinea de declarare a coloanelor se folosete comanda
DESCRIBE care va afia lista coloanelor definite pentru tabela respectiv, tipul i lungimea lor.
Prin forma INSERT...VALUES se introduce n tabel un singur rnd. Cu ajutorul valorii
NULL se pot introduce valori nule. Pentru a furniza valori pentru o coloan de tip dat
calendaristic se poate folosi funcia TO_DATE sau cuvntul cheie SYSDATE.
Funcia TO_DATE permite furnizarea valorilor ntr-un format diferit de cel standard.
Specificarea cererii din comanda INSERT determin copierea unor date dintr-o tabel n
alta pe attea rnduri cte au rezultat din cererea SQL.
Exemple:
2

1) S se adauge un nou rnd n tabela PRODUSE.


SQL> INSERT INTO PRODUSE VALUES (100000,11111,'MESE 15/20',7,'27-JUN92,BUC')
1 record created.
2) S se creeze o nou tabel, EXEMPLU, cu un singur cmp numeric, identic cu coloana CODP
a tabelei PRODUSE. S se introduc n aceast nou tabel codul produselor din tabela
PRODUSE.
SQL> CREATE TABLE EXEMPLU (CODP NUMBER(6) NOT NULL);
Table created.
SQL> INSERT INTO EXEMPLU SELECT CODP FROM PRODUSE;
5 records created.
3)Urmatoarea instructiune exemplifica introducerea unei noi inregistrari in tabela profesor:
SQL>INSERT INTO profesor (cod, nume, prenume, data_nast, sef, salariu, cod_catedra)
VALUES (107, 'POPESCU', 'SERGIU',' 09-DEC-71', 100, 1200, 20);
Se poate obsera ca valorile coloanelor grad si prima, care nu au fost specificate, vor fi Null.
In cazul in care nu se specifica implicit numele coloanelor, valorile trebuie introduse in ordinea
in care au fost definite si nu se poate omite valoarea nici unei coloane. Urmatoarea instructiune
va produce acelasi efect ca cea de mai sus:
SQL> INSERT INTO profesor VALUES (107, 'POPESCU', 'SERGIU', '09-DEC-71', NULL,
100, 1200, NULL, 20);

Pentru a insera in tabela nou_profesor, avand coloanele cod, nume, prenume si data_nastere,
inregistrarile din tabela profesor care au gradul didactic de asistent se poate folosi urmatoarea
instructiune:
SQL> INSERT INTO nou_profesor(cod, nume, prenume, data_nastere)
prenume, data nast FROM profesor WHERE grad='ASIST';

SELECT cod, nume,

MODIFICAREA TUPLURILOR DIN TABELE


n funcie de momentul n care se dorete realizarea modificrilor asupra bazei de date,
utilizatorul poate folosi una din urmtoarele comenzi: SET AUTOCOMMIT IMM[EDIATE]
(schimbrile se efectueaz imediat); SET AUTOCOMMIT OFF (schimbrile sunt pstrate ntrun buffer).La execuia comenzii COMMIT se permanentizeaz schimbrile efectuate, iar la
execuia comenzii ROLLBACK se renun la schimbrile realizate.
n scopul modificrii datelor dintr-o tabel se utilizeaz una din
3

formele sintactice ale comenzii UPDATE:


UPDATE nume-tabel [sinonim]
SET nume-crt=expresie,nume -expresie,...
[WHERE condiie];
UPDATE nume-tabel [sinonim]
SET (nume-col, nume-col,...)=(subcerere)
[WHERE condiie];
Sunt dou posibilitati de modificare. Una const n furnizarea n mod explicit a fiecarei
valori pentru cmpurile care trebuie modificate iar cealalt posibilitate const n obinerea
valorilor n urma unei cereri SQL.
Dac nu este specificat clauza WHERE se vor modifica toate rndurile tabelei.
(nume-col,nume-col,...)=(subeercre) impune ca cererea s conin pentru fiecare rnd un numr
de valori corespunztor numrului de coloane din paranteza care precede caracterul =. n cazul n
care se modifse o singur coloan, parantezele pot fi omise.
Exemple:
1) S se modifice cmpul NRSAL din tabela SALARIAI, pentru
depozitul cu codul 130000, atribuindu-i valoarea 11.
SQL> UPDATE DEPOZITE SET NRSAL=11 WHERE CODD= 130000;
1 record updated.
2) S se modifice data de livrare, cantitatea solicitat i preul de livrare pentru produsul cu codul
13333 din comanda cu numrul 211111.
SQL> UPDATE COMENZI
SET DATAL=SYSDATE,CANT=50, PRET=42000
WHERE CODP=13333 AND NRCOM=211111;
1 record updated.
3) S se modifice data de livrare cu data actual pentru toate produsele cu codul egal cu 13333,
din toate comenzile.
SQL> UPDATE COMENZI SET DATAL=SYSDATE WHERE CODP=13333;
1 record updated.
4) S se mreasc salariul cu 15% pentru salariaii care au o funcie identic cu CARMEN ANA.
SQL> UPDATE SALARIAI SET SALA=SALA*1.15 WHERE FUNCT IN
(SELECT FUNCT FROM SALARIAI WHERE NUME='CARMEN ANA');
11 records updated.
tergerea unor rnduri dintr-o tabel se realizeaz cu urmtoarea
comand:
DELETE FROM nume tabela [WHERE condiie];
Folosirea clauzei WHERE determin tergerea acelor rnduri care ndeplinesc condiia
impus. n aceast clauz pot fi folosite i subcereri. Dac nu este specificat nici o condiie, se
terg toate rndurile tabelei. tergerile accidentale pot fi omise, restaurndu-se valorile iniiale
prin comanda AUTOCOMMIT OFF.
Exemple:
1) S se tearg datele din tabela DEPOZITE.
SQL> DELETE FROM DEPOZITE;
5 records deleted.
2) S se tearg datele pentru depozitele care au codul mai mare sau egal cu 100000.
SQL> DELETE FROM DEPOZITE WHERE CODD>=100000;
4

2 records deleted.
3) S se scrie comanda pentru tergerea datelor despre salariatul VLAD VASILE. tergerile s nu
fie efectuate imediat ci ulterior.
SQL> SET AUTOCOMMIT OFF
SQL> DELETE FROM SALARIAI WHERE NUME='VLAD VASILE';
1 record deleted.
SQL> COMMIT ;
4) S se tearg datele salariailor care au aceeai funcie cu a lui PAUL TEFAN. tergerile s
nu fie realizate imediat. Ulterior s se renune la aceste tergeri.
SQL> SET AUTOCOMMIT OFF
SQL> DELETE FROM SALARIAI WHERE FUNCT IN (SELECT FUNCT
FROM SALARIAI WHERE NUME='PAUL TEFAN');
5 records deleted.

Instructiunile de selectie a datelor


Instruciunile de selecie reprezint una dintre categoriile cele mai importante ale limbajului de
interogare SQL. Indiferent daca sunt simple sau complexe, punctul de plecare l constituie fraza
SELECT, prin care se regasesc si se afiseaza informatiile dorite de utilizator.
Pentru definirea interogarilor de selectie simple se utilizeaza urmatoarea sintaxa a instructiunii
SELECT:
SELECT [domeniu] lista_selectie FROM nume_tabela1, nume_tabela2,...
[WHERE criteriul_de_selectie]
[ORDER BY cmpuri_criteriu [ASC|DESC]]
[GROUP BY cmp_de_grupare
[HAVING criteriul_de_ grupare]]
.
Domeniu permite stabilirearea modalitaii de manipulare a nregistrarilor din baza de date asupra
careia se efectueaza selectia si poate fi:

ALL : permite includerea tuturor nregistrarilor ce ndeplinesc conditiile impuse. Cum


frazele SELECT tabela si SELECT ALL tabela au practic acelasi rezultat, calificativul
ALL este destul de rar utilizat;
DISTINCT : are ca efect eliminarea nregistrarilor care contin duplicate n cmpurile
selectate astfel se va afisa doar o aparitie a datei multiple;
DISTINCTROW are n vedere nregistrarile duplicate n ansamblul lor, nu numai pe cele
care au cmpuri duplicate.

Lista_selectie cuprinde toate cmpurile care vor aparea n tabela cu rezultatele interogarii.
Cmpurile adaugate n rndul Field din grila Query a machetei grafice QBE, care au marcata
caseta de validare Show, sunt aceleasi cu cele mentionate n lista de selectie.n scrierea
5

interogarilor de selectie simple SQL ACCESS este posibila si folosirea functiilor totalizatoare.
Cele mai importante functii din aceasta categorie sunt:

COUNT : returneaza numarul de nregistrari care respecta conditiile stabilite prin clauza
WHERE,
SUM : reda suma tuturor valorilor dintr-un cmp; opereaza numai cu valori numerice,

AVG : calculeaza valoarea medie a unui cmp numeric,

MAX : permite determinarea celei mai mari valori dintr-un cmp,

MIN : duce la obtinerea celei mai mici valori a unui cmp ramne valabila si aici
restrictia privind clauza WHERE.

n cadrul listei de selecie se pot defini i alias-uri. Acestea reprezint un pseudonim (nume)
asociat unui cmp astfel : cmp AS alias. functiei agregat
Clauza FROM Specifica numele tabelei sau tabelelor care vor forma suportul interogarii. Daca n
lista_selectie se includ cmpuri din mai multe tabele, n fata numelui acestora trebuie precizata
tabela din care fac parte. Asa cum aratam la regulile de sintaxa, pentru separarea numelor de
tabele, se utilizeaza semnul , (virgula). Trebuie sa precizam faptul ca n cadrul acestei clauze se
pot mentiona pe lnga tabele, ca surse de informatii pentru interogarile SQL, si interogari care au
fost deja create.
Clauza WHERE Face interogarile mai selective, specificnd faptul ca vor fi afisate numai
nregistrarile care ndeplinesc criteriul descris. Parametrul criteriul de selectie este o expresie
care contine un operator de tip text (sir) sau numeric, n functie de tipul cmpului. Clauza
WHERE este optionala si nu opereaza cu functii totalizatoare. n cadrul condiiei din clauza
WHERE apar pot fi utilizai operatorii : AND, OR, NOT, IN, BETWEEN, LIKE. Apelnd la
acestia, este posibil construirea unor condiii mai complexe.
Clauza ORDER BY Utilizata atunci cnd se doreste ca rezultatele interogarii sa fie ordonate n
mod crescator (ASC) sau descrescator (DESC). Sortarea este optionala si se poate realiza dupa
unul sau mai multe cmpuri_criteriu (definite drept chei de sortare). Componenta BY a clauzei
nu poate sa lipseasca atunci cnd se doreste sortarea rezultatelor interogarii SQL ACCESS !
Clauza GROUP BY Precizeaza cmpul sau cmpurile pe baza carora se va efectua gruparea
nregistrarilor. n acelasi timp, prin intermediul acestei clauze, se pot executa functiile agregate
descrise n lista de selectie pentru fiecare dintre grupari (constituite pe baza cmpurilor de
grupare). Echivalentul acestei clauze n macheta grafica QBE de constructie a interogarii l
reprezinta rndul Total.
Clauza HAVING Se refera la criteriul care va fi aplicat cmpului-definit ca argument al functiei
agregat. Altfel spus, cnd se foloseste clauza GROUP BY si este necesara si o conditie, se va
utiliza clauza HAVING. Spre deosebire de WHERE, care actioneaza nainte de a se efectua
gruparea nregistrarilor, HAVING va opera dupa definirea acesteia. De remarcat faptul ca se
6

admite utilizarea unei functii agregat care nu apare n lista de selectie, precum si apelarea la mai
multe criterii de grupare.
Cereri de interogare imbricate
Scrierea unei interogari n cadrul alteia duce la aparitia unei subinterogari; setul de rezultate
obtinut de la o interogare va constitui argument pentru o alta. Utilizatorul poate astfel sa creeze
legaturi ntre mai multe interogari SQL ACCESS, pe baza unor cmpuri unice, cu rol de cautare
n structura tabelelor. Subinterogarile nlocuiesc interogarile imbricate din versiunile precedente,
cu performante mult mbunatatite. Pot fi construite si prin varianta de lucru a machetei grafice
QBE Access.
Cea mai simpla subinterogare are sintaxa urmatoare:
SELECT * FROM Tabela1
WHERE Tabela1.nume_ cmp =
(SELECT nume_cmp FROM Tabela2 WHERE criteriul_de_selectie);
Tabela1 si Tabela2 vor avea un cmp comun (nume_cmp) care va reprezenta de fapt cmpul de
legatura ce sta la baza construirii subinterogarii. Clauza SELECT din subinterogare va avea
acelasi numar de cmpuri si de natura similara cu cele din clauza WHERE a interogarii
externe.

S-ar putea să vă placă și