Sunteți pe pagina 1din 14

CAPITOLUL 5.

LIMBAJUL DE INTEROGARE RELAŢIONAL SQL

5.1. Prezentare generală

În prezent SQL (Structured Query Language) este unul dintre cele mai puternice limbaje structurate
pentru interogarea bazelor de date relaţionale. Literele S de la Structured (structurat) şi L de la Language
(limbaj) sunt destul de sugestive, în schimb, litera Q de la Query (interogare), dacă este analizată din
punct de vedere literal, poate provoca unele confuzii în sensul că se limitează doar la a pune întrebări
bazei de date. Din fericire, SQL face mult mai mult decât atât: se pot crea tabele, se adaugă, se modifică
sau se şterg date, se combină şi se memorează interogările în cadrul bazei de date.
Istoria SQL începe în laboratoarele firmei IBM, unde limbajul a fost dezvoltat în ultimii ani ai
deceniului 8, odată cu lansarea proiectului System/R. Deşi este uşor accesibil utilizatorilor începători, el
nu rămâne dator nici programatorilor experimentaţi, punându-le la dispoziţie facilităţi deosebite.
Datorită puterii sale relaţionale, a uşurinţei în înţelegere şi utilizare, SQL a fost ales de ANSI
(American National Standards Organization – Organizaţia pentru Standarde Naţionale Americane) şi apoi
de către ISO (International Standards Organization – Organizaţia pentru Standarde Internaţionale) drept
limbaj standard pentru lucru cu baze de date relaţionale.
Pe parcursul cărţii standardul pentru SQL avut în vedere este standardul ANSI-92. Standardul SQL-
92 propune 3 niveluri de conformitate: nivelul de intrare (entry level), nivelul intermediar (intermediate
level) şi nivelul maximal (full level). Fiecare firmă îşi declară nivelul de conformitate al propriului SGBD
în raport de SQL-92.
Limbajul SQL este un limbaj neprocedural (sau declarativ), termenul de neprocedural fiind văzut mai
degrabă prin ce decât prin cum, în sensul că nu se specifică decât ce informaţie este solicitată şi nu cum
este obţinută această informaţie.
SQL poate fi utilizat autonom (manipularea interactivă a bazei de date) sau poate fi utilizat prin
inserare de comenzi SQL într-un limbaj de programare.
Instrucţiunile SQL în funcţie de rolul avut în manipularea datelor şi a tranzacţiilor se pot grupa astfel:
 instrucţiuni pentru definirea datelor care asigura descrierea structurii bazei de date;
 instrucţiuni de manipulare a datelor ce au ca scop adăugarea, modificarea şi ştergerea
înregistrărilor;
 instrucţiuni de selecţie a datelor care permit consultarea bazei de date;
 instrucţiuni de procesare a tranzacţiilor ce reprezintă operaţii multiple de manipulare a datelor;
 instrucţiuni de control al cursorului;
 instrucţiuni privind controlul accesului la date.
Există trei metode de bază privind implementarea limbajului SQL:
 prin apelare directă (Direct Invocation) care presupune introducerea instrucţiunilor SQL direct
de la prompter;
 metoda modulară (Modul Language) care foloseşte proceduri apelate de programele aplicaţiei;
 metoda de tip încapsulat (Embedded SQL) care permite încapsularea instrucţiunilor în codul
de program.

5.2. Crearea bazelor de date prin comenzi SQL

5.2.1. Crearea, modificarea şi ştergerea tabelelor


Definirea unei tabele (relaţii) se face prin comanda CREATE TABLE (structura tabelei). Relaţiile
definite prin această comandă sunt numite relaţii de bază. Definiţia acestor relaţii este automat memorată
într-un dicţionar de dat, numit şi catalogul sistem.
Sintaxa comenzii pentru definirea relaţiilor este:

Soluţia SQL ’92:


CREATE TABLE nume_tabelă (nume_atribut1 tip_data1 [NOT NULL]
[,nume_atribut2 tip_dată2 [NOT NULL]] , …)

Soluţia ACCESS 2007:


CREATE [TEMPORARY] TABLE table (field1 type [(size)] [NOT NULL] [WITH
COMPRESSION | WITH COMP] [index1] [, field2 type [(size)] [NOT NULL] [index2] [,
…]] [, CONSTRAINT multifieldindex [, …]])

Comanda specifică numele relaţii care va fi creată precum şi una sau mai multe descrieri de atribute.
Descrierea fiecărui atribut specifică numele atributul şi tipul de dată corespunzător, împreună cu
dimensiunea asociată.
Clauza opţională NOT NULL, asociată unui atribut indică faptul că în coloana corespunzătoare
acestuia nu pot să apară valori nedefinite (NULL). Această opţiune este utilă în special la definirea
atributelor care compun cheia primară a relaţiei.
Comenzile SQL pentru crearea tabelelor (relaţiilor) bazei de date UNIVERSITATE, care constituie
suportul tuturor exemplificărilor efectuate pe parcursul acestei cărţi, sunt următoarele:
• pentru tabela STUDENT

Soluţia SQL ’92:


CREATE TABLE STUDENT (numar matricol N(4) NOT NULL,
nume C(30), facultate C(25), sectia C(3), data_nasterii D, cod_localitate C(4))

Soluţia ACCESS 2007:


CREATE TABLE STUDENT
(
[numar matricol] INTEGER PRIMARY KEY NOT NULL,
nume CHAR(30),
facultate CHAR(25),
sectia CHAR(3),
[data nasterii] DATETIME,
[cod localitate] INTEGER
)

Observaţie: Pentru toate soluţiile în Access 2007 vom folosi parantezele drepte pentru a specifica un
câmp în a cărui denumire sunt cel puţin două cuvinte.

• pentru tabela BURSA

Soluţia SQL ’92:


CREATE TABLE BURSA (numar matricol N(4) NOT NULL, data_incasarii D, tip
bursa C(15), suma incasata N(7))
Soluţia ACCESS 2007:
CREATE TABLE BURSA
(
[numar matricol] INTEGER PRIMARY KEY NOT NULL,
[data incasarii] DATETIME,
[tip bursa] CHAR(15),
[suma incasata] INTEGER
):

• pentru tabela STUDCAMIN

Soluţia SQL ’92:


CREATE TABLE STUDCAMIN (numar matricol N(4) NOT NULL, nume camin
C(15), camera N(2), strada C(20))

Soluţia ACCESS 2007:


CREATE TABLE STUDCAMIN
(
[numar matricol] INTEGER PRIMARY KEY NOT NULL,
[nume camin] CHAR(15),
camera INTEGER,
strada CHAR(20)
):

• pentru tabela LOCALITATE

Soluţia SQL ’92:


CREATE TABLE LOCALITATE (cod_localitate C(4) NOT NULL, nume_localitate
C(20), cod_judet C(2), judet C(15), regiune C(15))

Soluţia ACCESS 2007:


CREATE TABLE LOCALITATE
(
[cod localitate] INTEGER PRIMARY KEY NOT NULL,
[nume localitate] CHAR(20),
[cod judet] CHAR(2),
[judet] CHAR(15),
[regiune] CHAR(15)
)

• pentru tabela STUDCARTE

Soluţia SQL ’92:


CREATE TABLE STUDCARTE (numar matricol N(4) NOT NULL, cota carte N(4)
NOT NULL, data_imprumut D)

Soluţia ACCESS 2007:


CREATE TABLE STUDCARTE
(
[numar matricol] INTEGER PRIMARY KEY NOT NULL,
[cota carte] INTEGER NOT NULL,
[data imprumut] DATETIME
)

• pentru tabela CARTE

Soluţia SQL ’92:


CREATE TABLE CARTE (cota carte N(4) NOT NULL, titlu C(30), editura C(20),
domeniu C(20), data_ap D, an_aparitie N(4), numar exemplare N(3), pret_unitar
N(7))

Soluţia ACCESS 2007:


CREATE TABLE CARTE
(
[cota carte] INTEGER PRIMARY KEY NOT NULL,
titlu CHAR(30),
editura CHAR(20),
domeniu CHAR(20),
[data aparitie] DATETIME,
[an aparitie] INTEGER,
[numar exemplare] INTEGER,
[pret unitar] INTEGER
)

• pentru tabela AUTORCARTE

Soluţia SQL ’92:


CREATE TABLE AUTORCARTE (cod autor N(2) NOT NULL, cota carte N(4) NOT
NULL)

Soluţia ACCESS 2007:


CREATE TABLE AUTORCARTE
(
cod autor INTEGER PRIMARY KEY NOT NULL,
cota carte INTEGER NOT NULL
)

• pentru tabela AUTOR

Soluţia SQL ’92:


CREATE TABLE AUTOR (cod autor N(2) NOT NULL, nume autor C(30),
nationalitate C(12), an_nastere N(4))

Soluţia ACCESS 2007:


CREATE TABLE AUTOR (
[cod autor] INTEGER PRIMARY KEY NOT NULL,
[nume autor] CHAR(30),
nationalitate CHAR(12),
[an nastere] INTEGER
)

Pentru a modifica definiţia unei relaţia prin adăugarea sau ştergerea de coloane (atribute) şi restricţii
se foloseşte comanda ALTER TABLE cu următoarea sintaxă:

ALTER TABLE nume_tabelă acţiune_modificatoare_a_tabelei

nume_tabelă - reprezintă numele tabelei ce trebuie modificată.


acţiune_modificatoare_a_tabelei – este clauza care specifică acţiunea care trebuie efectuată şi care
conţine unul din cuvintele cheie ADD, ALTER sau DROP.
În pofida standardului SQL, implementarea comenzii ALTER TABLE variază în funcţie de SGBD.

Adăugarea unui nou atribut


Adăugarea atributului e_mail (de tip caracter cu lungimea de 30) în tabela STUDENT se realizează
prin următoarea comandă:

Soluţia SQL ’92:


ALTER TABLE STUDENT ADD e_mail C(30)

Soluţia ACCESS 2007:


ALTER TABLE STUDENT ADD COLUMN e_mail TEXT(30)

Ştergerea unui atribut


Ştergerea atributului e_mail adăugat anterior se face prin comanda

ALTER TABLE STUDENT DROP COLUMN e_mail

Modificarea lungimii unui atribut


În ce priveşte modificarea lungimii atributelor, acestea pot fi şi mărite şi micşorate, dar la micşorare
trebuie avută în vedere trunchierea care operează inevitabil.

ALTER TABLE STUDENT ALTER COLUMN nume C(31)

ALTER TABLE STUDENT ALTER COLUMN nume C(29)

Comanda simetrică celei de creare a unei relaţii este DROP TABLE care are ca efect eliminarea din
catalogul sistem a relaţiei specificate. După executarea acestei comenzi nu se mai pot face nici un fel de
referiri la relaţia în cauză, descrierea acesteia împreună cu informaţiile conţinute fiind şterse. Sintaxa
comenzii este:

DROP TABLE nume_tabelă

5.2.2. Inserarea, modificarea şi ştergerea liniilor

SQL prezintă comenzi dedicate modificării conţinutului unei tabele. Sunt avute aici în vedere cele
trei acţiuni prin care se actualizează o bază de date: adăugarea de noi linii la cele existente în tabelă,
ştergerea unor linii precum şi modificarea valorii unui atribut.
Adăugarea unei linii
Comanda SQL de adăugare de noi linii este INSERT, cu următoarea sintaxă:

INSERT INTO nume_tabelă (nume_atribut1, nume_atribut2, ….)


VALUES (valoare_atribut1, valoare_atribut2, …)

În continuare sunt prezentate comenzile INSERT efectuate pentru popularea tabelelor bazei de date
UNIVERSITATE, în forma în care acestea sunt prezentate în Anexa 2.

• pentru tabela STUDENT

INSERT INTO STUDENT


VALUES (1000, „Iancu Loredana”, „Stiinte Economice”, „MG”, #12/10/1974#,
130000)
INSERT INTO STUDENT
VALUES (1001, „Sitaru Ionut”, „Stiinte Economice”, „MG”, #5/5/1995#, 130000)
INSERT INTO STUDENT
VALUES (1002, „Bojianu Mirela”, „Stiinte Economice”, „FB”, #6/5/1996#, 135200)
INSERT INTO STUDENT
VALUES (1003, „Balasa Mihai”, „Stiinte Economice”, „ECTS”, #10/11/1996#,
200000)
INSERT INTO STUDENT
VALUES (1004, „Tudorache Ionelia”, „Stiinte Economice”, „FB”, #4/5/1991#,
300000)
INSERT INTO STUDENT
VALUES (1005, „Neacsu Florin”, „Stiinte Juridice”, „MG”, #12/8/1990#, 700000)
INSERT INTO STUDENT
VALUES (1006, „Zamfir Octavian”, „Stiinte Economice”, „ECTS”, #8/23/1986#,
720000)
INSERT INTO STUDENT
VALUES (1007, „Stanciu Mirela”, „Stiinte Economice”, „MK”, #7/31/1992#,
900000)
INSERT INTO STUDENT
VALUES (1008, „Popescu Liviu”, „Stiinte Economice”, „CIG”, #11/28/1985#,
730000)
INSERT INTO STUDENT
VALUES (1009, „Ionescu Octavian”, „Stiinte Umaniste”, „ISTORIE”,
#10/19/1996#, 210100)
INSERT INTO STUDENT
VALUES (1010, „Vasilescu Ada”, „Stiinte Umaniste”, „ISTORIE”, #5/10/1996#,
135200)
INSERT INTO STUDENT
VALUES (1011, „Danciu Daria”, „Stiinte Economice”, „CIG”, #2/16/1991#, 130000)
INSERT INTO STUDENT
VALUES (2000, „Musat Florin”, „Stiinte Economice”, „MK”, #3/23/1995#, 135300)
INSERT INTO STUDENT
VALUES (2001, „Stanciu Andreea”, „Stiinte Juridice”, „DREPT”, #2/24/1984#,
135300)
INSERT INTO STUDENT
VALUES (2002, „Bobeica Lidia”, „Stiinte Economice”, „MG”, #4/15/1995#, 135200)
INSERT INTO STUDENT
VALUES (2003, „Butu Ion”, „Stiinte Juridice”, „JURNALISM”, #8/30/1995#,
135300)
INSERT INTO STUDENT
VALUES (3000, „Soare Paul”, „Stiinte Umaniste”, „GEOGRAFIE”, #9/21/1996#,
130000)
INSERT INTO STUDENT
VALUES (3001, „Radu Marta”, „Stiinte Economice”, „MK”, #11/15/1998#, 730000)
INSERT INTO STUDENT
VALUES (3002, „Buciumeanu Olivia”, „Stiinte Economice”, „CIG”, #1/1/1989#,
130000)
INSERT INTO STUDENT
VALUES (3003, „Sandu Georgeta”, „Stiinte Juridice”, „DREPT”, #2/9/1995#,
111000)

• pentru tabela BURSA

INSERT INTO BURSA


VALUES (3001, #3/1/2017#, „Exceptionala”, 500)
INSERT INTO BURSA
VALUES (2003, #3/2/2017#, „Exceptionala”, 500)
INSERT INTO BURSA
VALUES (2000, #3/5/2017#, „Exceptionala”, 500)
INSERT INTO BURSA
VALUES (1009, #3/6/2017#, „Exceptionala”, 500)
INSERT INTO BURSA
VALUES (1005, #3/5/2017#, „Exceptionala”, 500)
INSERT INTO BURSA
VALUES (3003, #3/15/2017#, „Merit”, 400)
INSERT INTO BURSA
VALUES (2002, #3/19/2017#, „Merit”, 400)
INSERT INTO BURSA
VALUES (1003, #3/16/2017#, „Merit”, 400)
INSERT INTO BURSA
VALUES (3000, #3/16/2017#, „Studiu”, 270)
INSERT INTO BURSA
VALUES (1001, #3/9/2017#, „Studiu, 270)
INSERT INTO BURSA
VALUES (1000, #3/23/2017#, „Studiu, 270)

• pentru tabela STUDCAMIN

INSERT INTO STUDCAMIN


VALUES (1000, „Caminul nr. 3, 5, „Aleea Sinaia, nr. 13”)
INSERT INTO STUDCAMIN
VALUES (1001, „Caminul nr. 3, 6, „Aleea Sinaia, nr. 13” )
INSERT INTO STUDCAMIN
VALUES (1003, „Caminul nr. 2, 2, „Aleea Sinaia, nr. 13” )
INSERT INTO STUDCAMIN
VALUES (1005, „Caminul nr. 2, 5, „Aleea Sinaia, nr. 13” )
INSERT INTO STUDCAMIN
VALUES (1007, „Caminul nr. 1, 10, „Aleea Sinaia, nr. 13” )
INSERT INTO STUDCAMIN
VALUES (1008, „Caminul nr. 1, 1, „Aleea Sinaia, nr. 13” )
INSERT INTO STUDCAMIN
VALUES (1010, „Caminul nr. 2, 6, „Aleea Sinaia, nr. 13” )
INSERT INTO STUDCAMIN
VALUES (1011, „Caminul nr. 2, 10, „Aleea Sinaia, nr. 13” )
INSERT INTO STUDCAMIN
VALUES (2000, „Caminul nr. 1, 1, „Aleea Sinaia, nr. 13” )
INSERT INTO STUDCAMIN
VALUES (2001, „Caminul Sportiv, 1, „Ana Ipatescu” )
INSERT INTO STUDCAMIN
VALUES (2002, „Caminul nr. 2, 2, „Aleea Sinaia, nr. 13” )
INSERT INTO STUDCAMIN
VALUES (3002, „Caminul Sportiv, 2, „Ana Ipatescu” )
INSERT INTO STUDCAMIN
VALUES (3003, „Caminul nr. 2, 2, „Aleea Sinaia, nr. 13” )

• pentru tabela LOCALITATE

INSERT INTO LOCALITATE


VALUES (111000, „Pitesti”, „AG”, Arges”, „Muntenia”)
INSERT INTO LOCALITATE
VALUES (900000, „Constanta”, „CT”, „Constanta”, „Dobrogea” )
INSERT INTO LOCALITATE
VALUES (907090, „Costinesti”, „CT”, „Constanta”, „Dobrogea” )
INSERT INTO LOCALITATE
VALUES (135200, „Gaesti”, „DB”, „Dambovita”, „Muntenia” )
INSERT INTO LOCALITATE
VALUES (135500, „Titu”, „DB”, „Dambovita”, „Muntenia” )
INSERT INTO LOCALITATE
VALUES (130000, „Targoviste”, „DB”, „Dambovita”, „Muntenia” )
INSERT INTO LOCALITATE
VALUES (135300, „Moreni”, „DB”, „Dambovita”, „Muntenia” )
INSERT INTO LOCALITATE
VALUES (137070, „Bucsani”, „DB”, „Dambovita”, „Muntenia” )
INSERT INTO LOCALITATE
VALUES (137241, „Adanca”, „DB”, „Dambovita”, „Muntenia” )
INSERT INTO LOCALITATE
VALUES (137265, „Lucieni”, „DB”, „Dambovita”, „Muntenia” )
INSERT INTO LOCALITATE
VALUES (200000, „Craiova”, „DJ”, „Dolj”, „Oltenia” )
INSERT INTO LOCALITATE
VALUES (210100, „Targu-Jiu”, „GJ”, „Gorj”, „Oltenia” )
INSERT INTO LOCALITATE
VALUES (700000, „Iasi”, „IS”, „Iasi”, „Moldova” )
INSERT INTO LOCALITATE
VALUES (100000, „Ploiesti”, „PH”, „Prahova”, „Muntenia” )
INSERT INTO LOCALITATE
VALUES (720000, „Suceava”, „SV”, „Suceava”, „Moldova” )
INSERT INTO LOCALITATE
VALUES (300000, „Timisoara”, „TM”, „Timisoara”, „Transilvania” )
INSERT INTO LOCALITATE
VALUES (730000, „Vaslui”, „VS”, „Vaslui”, „Moldova” )

• pentru tabela STUDCARTE

INSERT INTO STUDCARTE VALUES (1000, 1110, #3/1/2017#)


INSERT INTO STUDCARTE VALUES (1000, 1111, #3/8/2017#)
INSERT INTO STUDCARTE VALUES (1001, 1136, #3/16/2016#)
INSERT INTO STUDCARTE VALUES (1002, 1110, #3/7/2017#)
INSERT INTO STUDCARTE VALUES (1003, 1113, #3/21/2017#)
INSERT INTO STUDCARTE VALUES (1004, 1114, #3/19/2017#)
INSERT INTO STUDCARTE VALUES (1004, 1115, #2/6/2017#)
INSERT INTO STUDCARTE VALUES (1004, 1125, #3/15/2016#)
INSERT INTO STUDCARTE VALUES (1004, 1131, #3/21/2016#)
INSERT INTO STUDCARTE VALUES (1005, 1123, #1/2/2017#)
INSERT INTO STUDCARTE VALUES (1006, 1123, #3/14/2016#)
INSERT INTO STUDCARTE VALUES (1007, 1124, #12/4/2016#)
INSERT INTO STUDCARTE VALUES (1009, 1116, #3/15/2016#)
INSERT INTO STUDCARTE VALUES (1009, 1138, #3/8/2016#)
INSERT INTO STUDCARTE VALUES (1010, 1125, #3/8/2016#)
INSERT INTO STUDCARTE VALUES (1010, 1139, #3/8/2016#)
INSERT INTO STUDCARTE VALUES (1011, 1118, #3/15/2016#)
INSERT INTO STUDCARTE VALUES (1011, 1130, #3/15/2017#)
INSERT INTO STUDCARTE VALUES (2001, 1134, #3/19/2017#)
INSERT INTO STUDCARTE VALUES (2001, 1139, #3/23/2017#)
INSERT INTO STUDCARTE VALUES (2001, 1140, #3/20/2017#)
INSERT INTO STUDCARTE VALUES (2002, 1120, #3/21/2017#)
INSERT INTO STUDCARTE VALUES (3002, 1138, #3/22/2016#)
INSERT INTO STUDCARTE VALUES (3003, 1139, #3/14/2016#)

• pentru tabela CARTE

INSERT INTO CARTE


VALUES (1110, „Baze de date”, „ProUnivesitaria”, „Informatica”, 1999, 55, 30)
INSERT INTO CARTE
VALUES (1111, „Baze de date”, „Bibliotheca”, „Informatica”, 1998, 42, 31)
INSERT INTO CARTE
VALUES (1130, „Baze de date”, „Teora”, „Informatica”, 2013, 21, 40)
INSERT INTO CARTE
VALUES (1122, „Baze de date orientate obiect”, „Nemira”, „Informatica”, 2017, 20,
25)
INSERT INTO CARTE
VALUES (1123, „Baze de date relationale”, „Nemira”, „Informatica”, 2016, 35, 26)
INSERT INTO CARTE
VALUES (1132, „Bazele contabilitatii”, „Teora”, „Contabilitate”, 2008, 32, 20)
INSERT INTO CARTE
VALUES (1112, „Birotica”, „ProUnivesitaria”, „Informatica”, 2000, 12, 26)
INSERT INTO CARTE
VALUES (1124, „Birotica”, Teora”, „Informatica”, 2017, 36, 30)
INSERT INTO CARTE
VALUES (1131, „Contabilitate generala”, „Bibliotheca”, „Contabilitate”, 2010, 21,
24)
INSERT INTO CARTE
VALUES (1133, „Contabilitatea institutiilor publice”, „Teora”, „Contabilitate”,
2009, 10, 50)
INSERT INTO CARTE
VALUES (1128, „Database Transaction Models”, „ProUnivesitaria”, „Informatica”,
2014, 25, 100)
INSERT INTO CARTE
VALUES (1135, „Drept adminstrativ”, „Nemira”, „Drept”, 2008, 47, 60)
INSERT INTO CARTE
VALUES (1134, „Drept comercial”, „Nemira”, „Drept”, 2004, 45, 32)
INSERT INTO CARTE
VALUES (1136, „Drept penal”, „Nemira”, „Drept”, 2015, 58, 42)
INSERT INTO CARTE
VALUES (1113, „Informatica Economica”, „ProUnivesitaria”, „Informatica”, 2002,
32, 38)
INSERT INTO CARTE
VALUES (1138, „Macroeconomie”, „Bibliotheca”, „Economie”, 2013, 25, 30)
INSERT INTO CARTE
VALUES (1139, „Managementul resurselor umane”, „ProUnivesitaria”,
„Management”, 2015, 15, 40)
INSERT INTO CARTE
VALUES (1140, „Marketing. De la practica la teorie”, „Bibliotheca”, Marketing”,
2016, 45, 50)
INSERT INTO CARTE
VALUES (1137, „Microeconomie”, ProUnivesitaria”, „Economie”, 2014, 63, 35)
INSERT INTO CARTE
VALUES (1117, „Microfost Office - Access”, „ProUnivesitaria”, „Informatica”,
2010, 85, 45)
INSERT INTO CARTE
VALUES (1116, „Microfost Office - Excel”, „ProUnivesitaria”, „Informatica”, 2004,
47, 48)
INSERT INTO CARTE
VALUES (1118, „Microfost Office - PowerPoint”, „ProUnivesitaria”, „Informatica”,
2015, 21, 49)
INSERT INTO CARTE
VALUES (1115, „Microfost Office - Word”, „ProUnivesitaria”, „Informatica”, 2002,
58, 50)
INSERT INTO CARTE
VALUES (1126, „Modele de aplicaţii practice în Microsoft Excel”,
„ProUnivesitaria”, „Informatica”, 2010, 59, 52)
INSERT INTO CARTE
VALUES (1129, „Object Oriented Modeling”, „Bibliotheca”, „Informatica”, 2016,
32, 51)
INSERT INTO CARTE
VALUES (1127, „Proiectarea bazelor de date”, „Bibliotheca”, „Informatica”, 2014,
78, 56)
INSERT INTO CARTE
VALUES (1121, „Proiectarea sistemelor informaticev, „Bibliotheca”, „Informatica”,
2016, 10, 40)
INSERT INTO CARTE
VALUES (1120, „Sisteme expert”, „ProUnivesitaria”, „Informatica”, 2016, 32, 43
INSERT INTO CARTE
VALUES (1119, „Sisteme informatice de asistare a deciziei”, „Bibliotheca”,
„Informatica”, 2016, 45, 50)
INSERT INTO CARTE
VALUES (1114, „Sisteme informatice de gestiune”, „Teora”, Informatica”, 2003,
14, 56)
INSERT INTO CARTE
VALUES (1125, „SQL pentru incepatori”, Teora”, „Informatica”, 2016, 48, 50)

• pentru tabela AUTORCARTE

INSERT INTO AUTORCARTE VALUES (1110, 999900)


INSERT INTO AUTORCARTE VALUES (1111, 999901)
INSERT INTO AUTORCARTE VALUES (1112, 999902)
INSERT INTO AUTORCARTE VALUES (1113, 999903)
INSERT INTO AUTORCARTE VALUES (1114, 999904)
INSERT INTO AUTORCARTE VALUES (1115, 999905)
INSERT INTO AUTORCARTE VALUES (1136, 999905)
INSERT INTO AUTORCARTE VALUES (1116, 999906)
INSERT INTO AUTORCARTE VALUES (1117, 999907)
INSERT INTO AUTORCARTE VALUES (1120, 999908)
INSERT INTO AUTORCARTE VALUES (1134, 999908)
INSERT INTO AUTORCARTE VALUES (1140, 999908)
INSERT INTO AUTORCARTE VALUES (1135, 999909)
INSERT INTO AUTORCARTE VALUES (1139, 999909)
INSERT INTO AUTORCARTE VALUES (1118, 999910)
INSERT INTO AUTORCARTE VALUES (1119, 999911)
INSERT INTO AUTORCARTE VALUES (1123, 999912)
INSERT INTO AUTORCARTE VALUES (1128, 999912)
INSERT INTO AUTORCARTE VALUES (1137, 999913)
INSERT INTO AUTORCARTE VALUES (1121, 999915)
INSERT INTO AUTORCARTE VALUES (1125, 999916)
INSERT INTO AUTORCARTE VALUES (1126, 999916)
INSERT INTO AUTORCARTE VALUES (1127, 999916)
INSERT INTO AUTORCARTE VALUES (1130, 999916)
INSERT INTO AUTORCARTE VALUES (1122, 999918)
INSERT INTO AUTORCARTE VALUES (1131, 999918)
INSERT INTO AUTORCARTE VALUES (1132, 999919)
INSERT INTO AUTORCARTE VALUES (1133, 999919)
INSERT INTO AUTORCARTE VALUES (1138, 999919)
INSERT INTO AUTORCARTE VALUES (1124, 999920)
INSERT INTO AUTORCARTE VALUES (1129, 999920)

• pentru tabela AUTOR

INSERT INTO AUTOR


VALUES (999900, „Alexandrescu Vlad”, „Roman”, 1960)
INSERT INTO AUTOR
VALUES (999901, „Anistoroaie Diana”, „Roman”, 1950)
INSERT INTO AUTOR
VALUES (999902, „Vancea Florin”, „Roman”, 1954)
INSERT INTO AUTOR
VALUES (999903, „Obrien James”, „Canadian”, 1955)
INSERT INTO AUTOR
VALUES (999904, „Gabay Julien”, „Francez”, 1970)
INSERT INTO AUTOR
VALUES (999905, „Elamgarmid Karl”, „Suedez”, 1960)
INSERT INTO AUTOR
VALUES (999906, „Ionescu Gina”, „Roman”, 1980)
INSERT INTO AUTOR
VALUES (999907, „Popescu Vasilica”, „Roman”, 1974)
INSERT INTO AUTOR
VALUES (999908, „Radu Irina”, „Roman”, 1976)
INSERT INTO AUTOR
VALUES (999909, „Istrate Vasile”, „Roman”, 1975)
INSERT INTO AUTOR
VALUES (999910, „Delobel Claude”, „Francez”, 1975)
INSERT INTO AUTOR
VALUES (999911, „Booch Gary”, „Englez”, 1976)
INSERT INTO AUTOR
VALUES (999912, „Sima Cosmin”, „Roman”, 1976)
INSERT INTO AUTOR
VALUES (999913, „Soare Ioana”, „Roman”, 1972)
INSERT INTO AUTOR
VALUES (999914, „Schultz Klaus”, „German”, 1973)
INSERT INTO AUTOR
VALUES (999915, „Hofman Dieter”, „German”, 1973)
INSERT INTO AUTOR
VALUES (999916, „Popa Panait”, „Roman”, 1980)
INSERT INTO AUTOR
VALUES (999917, „Dinitia Claudia”, „Roman”, 1968)
INSERT INTO AUTOR
VALUES (999918, „Kunst Olivia”, „German”, 1970)
INSERT INTO AUTOR
VALUES (999919, „Maria Loire”, „Francez”, 1978)
INSERT INTO AUTOR
VALUES (999920, Honciu Octavian”, „Roman”, 1970)

Ştergerea liniilor

Comanda SQL pentru ştergerea uneia sau mai multor linii dintr-o tabelă este DELETE. Formatul
general al comenzii este următorul:

DELETE FROM nume_tabelă


WHERE predicat

Din tabelă vor şi şterse toate tuplurile care îndeplinesc condiţia specificată în predicatul din clauza
WHERE.

Exemplu:
Să se şteargă din tabela STUDENT studentul care are numărul matricol 2002.

Soluţia SQL ’92:


DELETE FROM STUDENT
WHERE numar matricol=2002

Soluţia ACCESS 2007:


DELETE FROM STUDENT
WHERE [numar matricol]=2002

Exemplu:
Să se şteargă din tabela BURSA toate bursele încasate înainte de 23 martie 2019.

Soluţia SQL ’92:


DELETE FROM BURSA
WHERE data_incasarii < 03/23/2019

Soluţia ACCESS 2007:


DELETE FROM BURSA
WHERE [data_incasarii] < #03/23/2019#

Exemplu:
Să se şteargă din tabela CARTE toate cărţile care nu aparţin domeniul Economie.

DELETE FROM CARTE


WHERE domeniu<>”Economie”

Modificarea valorilor unor atribute


Comanda SQL pentru actualizarea tuplurilor este UPDATE care are următoarea sintaxă:
UPDATE nume_tabela
SET nume_atribut1=expresie1 [,nume_atribut2=expresie2 …]
WHERE predicat
Comanda de actualizare îndeplineşte două funcţii:
• selectează prin condiţia de căutare specificată în predicatul din clauza WHERE tuplurile ce urmează
a fi actualizate (în lipsa clauzei WHERE se actualizează implicit toate tuplurile relaţiei specificate);
• în tuplurile selectate modifică valorile atributelor specificare. Expresiile de actualizare pot conţine:
constante, nume de atribute sau expresii aritmetice construite cu acestea. SQL permite chiar şi
actualizarea atributelor care fac parte din cheia primară.

Exemplu:
Preţul cărţilor care au apărut înainte de 1999 a fost redus cu 25%. Să se opereze modificarea în baza de
date.

UPDATE CARTE
SET pret_unitar = pret_unitar – pret_unitar*0.25
WHERE an_aparitie < 1999

Exemplu:
Se realizează o majorare a burselor după cum urmează:
- socială cu 200 lei
- studiu cu 150 lei
- merit cu 230 lei
- excepţională cu 120 lei.
Să se actualizeze baza de date.

UPDATE CARTE
SET suma incasata = suma incasata + 200
WHERE tip_bursă = „sociala”

UPDATE CARTE
SET suma incasata = suma incasata + 150
WHERE tip_bursă = „studiu”

UPDATE CARTE
SET suma incasata = suma incasata + 230
WHERE tip_bursă = „merit”

UPDATE CARTE
SET suma incasata = suma incasata + 120
WHERE tip_bursă = „excepţionala”

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