Documente Academic
Documente Profesional
Documente Cultură
BAZE DE DATE
LIMBAJUL SQL
BUCUREŞTI
2022-2023
Limbajul SQL
2
Noțiuni fundamentale
3
Tipuri de date SQL
TIP Caracteristici
CHAR(dim) Șir de caractere de lungime fixă
VARCHAR2(dim)
Șir de caractere de lungime variabilă
NUMBER(p,s) Numeric: p (precizie) = 1..38, s (scală) =-84..127
DATE Dată calendaristică (date-time)
TIMESTAMP Dată calendaristică (date-time în format extins)
5
Operatori SQL
Operator Caracteristici
+, -, *, / operatori aritmetici
<, >, =, >=, <=, <>, != operatori de comparație
AND, OR, NOT operatori logici
BETWEEN ... AND ... între două valori (inclusiv)
IN (listă) egal cu oricare valoare din listă
LIKE similar cu un şablon
% - oricâte caractere; _ - un caracter;
6
Comenzi SQL
1. Comenzi LDD (Limbaj de Definire a Datelor - Data Definition Language)
2. Comenzi LMD (Limbaj de Manipulare a Datelor - Data Manipulation
Language)
3. Comenzi LPT (Limbaj pentru Procesarea Tranzactiilor – Transaction
Processing Language)
4. Comenzi LCD (Limbaj de Control al Datelor - Data Control Language)
7
Comenzi SQL.
Comenzi LDD
8
Comenzi SQL.
Comenzi LMD
9
Comenzi SQL.
Comenzi LPT
10
Comenzi SQL.
Comenzi LCD
11
ABONAȚI
NrAbonat CNP Nume Prenume Adresa Localitate
123 234567.. Ionescu Ioana Str.Sforii Brasov
654 123456... Popescu George Calea Mosilor Bucuresti
890 256789... Pop Ana Bld.Magheru Bucuresti
FIȘE_ÎMPRUMUTURI
NrFisa DataImprumut NrAbonat
1:n
1 16.08.2020 123
2 01.09.2020 654
3 10.09.2020 123
DETALII_FIȘE
ISBN NrFisa DataRetur
1:n
123-123 1 26.08.2020
123-124 1 06.09.2020
123-125 1
CĂRȚI
214-111 2 16.09.2020
ISBN Carte Autor 214-111 1
123-123 O calatorie spre centrul Pamantului Jules Verne
123-124 Ocolul Pamantului in 80 de zile Jules Verne
123-125 SQL pentru incepatori A, B, C
1:n
214-111 Programare in Python A, B, C
Atenție! Schema de mai sus este construită pentru exemplificarea noțiunilor de bază (precum tabele, legături, chei), însă nu este normalizată
12
corespunzător!
Comanda CREATE TABLE
13
Comanda CREATE TABLE
Restricțiile de integritate pot fi specificate:
➢in-line (la nivel de coloană – imediat după indicarea tipului de dată al
coloanei):
✓sumar: direct prin tipul lor
(ex: id_abonat NUMBER PRIMARY KEY,...)
✓complet: de forma CONSTRAINT denumire_restrictie TIP_RESTRICTIE
(ex: id_abonat NUMBER CONSTRAINT pk_abonati PRIMARY KEY,...)
➢out-of-line (la nivel de tabelă – după indicarea întregii liste a coloanelor):
necesită indicarea coloanei care va avea atașată restricția:
✓sumar: direct prin tipul lor TIP_RESTRICTIE (coloana)
(ex: PRIMARY KEY(id_abonat))
✓complet: de forma CONSTRAINT denumire_restrictie TIP_RESTRICTIE
(coloana)
(ex: CONSTRAINT pk_abonati PRIMARY KEY (id_abonat))
14
Comanda CREATE TABLE
Restricția de integritate de tip NOT NULL poate fi specificată astfel:
➢in-line (la nivel de coloană – imediat după indicarea tipului de dată al
coloanei):
✓sumar (ex: nume VARCHAR2(20) NOT NULL)
✓complet: de forma CONSTRAINT denumire_restrictie NOT NULL
(ex: nume VARCHAR2(20) CONSTRAINT nn_nume NOT NULL)
➢out-of-line (la nivel de tabelă – după indicarea întregii liste a coloanelor):
NU se pot defini prin tipul NOT NULL, ci doar prin CHECK
✓sumar (ex: CHECK (nume IS NOT NULL))
✓complet: de forma CONSTRAINT denumire_restrictie CHECK (coloana IS
NOT NULL)
(ex: CONSTRAINT nn_nume CHECK (nume IS NOT NULL))
15
Comanda CREATE TABLE
Restricția de integritate de tip FOREIGN KEY poate fi specificată astfel (exemplul poate fi
utilizat la crearea tabelei Fișe_împrumuturi):
➢in-line (la nivel de coloană – imediat după indicarea tipului de dată al coloanei; în acest caz
lipsește sintagma cheie FOREIGN KEY și se va indica direct legătura către tabela părinte):
✓sumar (ex: id_abonat NUMBER REFERENCES abonati (id_abonat))
✓complet: de forma CONSTRAINT denumire_restrictie REFERENCES
tabela_parinte(coloana_cheie_primara_din_parinte)
(ex: id_abonat NUMBER CONSTRAINT fk_abonati
REFERENCES abonati (id_abonat),...)
➢out-of-line (la nivel de tabelă – după indicarea întregii liste a coloanelor):
✓sumar (ex: FOREIGN KEY(id_abonat) REFERENCES abonati (id_abonat))
✓complet: de forma CONSTRAINT denumire_restrictie FOREIGN KEY (coloana)
REFERENCES tabela_parinte(coloana_cheie_primara_din_parinte)
(ex: CONSTRAINT fk_abonati FOREIGN KEY (id_abonat) REFERENCES abonati
(id_abonat),...)
16
TEMĂ
Creați și restul tabelelor din schema BD anterioară:
- Cărți
- Fișe_împrumuturi
- Detalii_fișe
17