Sunteți pe pagina 1din 32

BAZE DE DATE

4. LIMBAJUL SQL. INTRODUCERE

lect. univ. Tîrșu Valentina


Conținut

1. SQL – Structured Query Language


2. Instrucțiuni DDL (Data Definition Language) – operații cu BD
3. Instrucțiuni DDL (Data Definition Language) – operații cu tabele
4. Operații de manipulare cu datele
5. Constrângeri de integritate
6. Exemplu BD: organizația de propiectare
7. Adăugarea datelor

2
Obiective

 Să descrie istoria linbajului SQL


 Să distingă categoriile de instrucțiuni SQL
 Să cunoască tipurile de date SQL
 Să aplice corect operatorii destinați prelucrării bazelor de date și tabele
 Să aplice operatorii limbajului SQL în mediul MySQL
 Să stabilească constrângeri de integritate la proiectarea BD

3
1. SQL – Structured Query Language

 SQL este un limbaj structurat de interogare a bazelor de date relaționate.


 SQL este un limbaj declarativ bazat pe operațiuni de algebră relațională.
 Standardele SQL definite de American National Standards Institute (ANSI):
 SQL-1 (SQL / 89) este primul draft al standardului.
 SQL-2 (SQL / 92) este principalul standard extins.
 SQL-3 (SQL / 1999, 2003, ..., 2016) - se referă la modelul de date obiect-relațional:
 1999: suport pentru expresii regulate, interogări recursive, declanșatoare, extensii
procedurale de bază, tipuri de date non-scalare și anumite capacități orientate pe
obiect
 2003: extensii pentru lucrul cu date XML, funcții ferestre (utilizate pentru lucru cu
OLAP-BD), generatoare de secvență și tipuri de date pe baza acestora.
 2006: extinderea funcționalității lucrului cu datele XML, posibilitatea de utilizare în
comun în interogările SQL și XQuery.
 2011: baze de date istorice (PERIOD FOR), suport pentru FETCH.
 2016: Securitate la nivel de înregistrare, funcții de tabel polimorf, JSON.

4
1. SQL – Structured Query Language(continuare)

Clasificarea instrucțiunilor SQL

5
2. Instrucțiuni DDL (Data Definition Language) – operații cu BD

1. Crearea de BD
CREATE DATABASE nume_BD;
sau
CREATE SCHEMA nume_BD;

CREATE DATABASE IF NOT EXISTS nume_BD


CHARACTER SET latin1
COLLATE latin1_general_ci;

Sintaxa generală pentru instrucțiunile DDL:


CREATE
ALTER tip_obiect nume_obiect;
DROP

6
2. Instrucțiuni DDL (Data Definition Language) – operații cu BD

2. Stabilirea BD curente
SELECT * FROM nume_BD.nume_tabel;
sau
USE nume_BD;
SELECT * FROM nume_tabel;

- toate referințele ulterioare la nume de tabele, dacă nu conțin numele bazei de date vor
fi considerate că aparțin acestei baze de date;

- unele instrucțiuni operează automat pe aceasta baza de date.

Exemplu:
SHOW TABLES; - va afișa tabelele bazei de date curente.

7
2. Instrucțiuni DDL (Data Definition Language) – operații cu BD

3. Lichidarea BD
DROP DATABASE IF EXISTS nume_BD; -- operație ireversibilă
sau
DROP SCHEMA IF EXISTS nume_BD;

4. Vizualizarea BD existente
SHOW DATABASES;
SHOW DATABASES LIKE m%;

- returneaza toate BD care incep cu m;


- % inlocuieste zero sau mai multe caractere;
- “_” inlocuieste un singur caracter. Ex: produ_.

8
2. Instrucțiuni DDL (Data Definition Language) – operații cu BD

5. Vizualizarea parametrilor unei BD

SHOW CREATE DATABASE nume_BD;

6. Modificarea parametrilor unei BD

ALTER DATABASE nume_BD CHARACTER SET utf8;


ALTER DATABASE nume_BD COLLATE utf8_romanian_ci;
ALTER DATABASE nume_BD CHARACTER SET utf8 COLLATE utf8_romanian_ci.

9
3. Instrucțiuni DDL (Data Definition Language) – operații cu tabele

1. Storage engine (motoare de stocare)


Se refera la:
- modalitatea de stocare a datelor (HDD / RAM);
- facilitatile oferite;
- performanțe.

Sunt utilizate frecvent în MySQL:

- InnoDB (default) HDD viteza mica, siguranta mare;


- MyISAM HDD viteza mica, siguranta mare;
- MEMORY RAM viteza mare, siguranta mica;

SHOW ENGINES; - lista cu storage engine acceptate

10
3. Instrucțiuni DDL (Data Definition Language) – operații cu tabele

2. Tipuri de date MySQL


- Numerice
- Întregi – TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT
- în virgula fixa – DECIMAL
- în virgulă mobilă - FLOAT și DOUBLE

- Data/timp - DATE, TIME, DATETIME, YEAR si TIMESTAMP


- Șir de octeţi - BINARY, VARBINARY, TINYBLOB, BLOB, MEDIUMBLOB și
LONGBLOB
- Șir de caractere – CHAR(), VARCHAR(), TINYTEXT, TEXT, MEDIUMTEXT și
LONGTEXT
- Seturi de valori discrete - ENUM și SET

11
3. Instrucțiuni DDL (Data Definition Language) – operații cu tabele

3. Definiții de coloane

- numele coloanei - regulile enunţate la capitolul privind denumirea;

- tipul de date al coloanei - unul dintre tipurile de date enumerate anterior;

- eventuale detalii suplimentare - asociate tipului de date al coloanei (ex: număr de


zecimale pentru DECIMAL, lungime maxima pentru VARCHAR, valori posibile pentru
ENUM etc.);

- eventuali modificatori ai coloanei - ex: NULL, DEFAULT, UNSIGNED;

NULL - indica absenta unei valori, nu reprezinta valoare propriu zisa.

12
3. Instrucțiuni DDL (Data Definition Language) – operații cu tabele

4. Clauza DEFAULT

- stabilită explicit
Ex: Culoare VARCHAR(50) NOT NULL DEFAULT 'roşu‘

- stabilita automat, de către server, atunci când în definiţia coloanei nu este prezentă
clauza DEFAULT. Dacă definiţia coloanei permite NULL, valoarea implicită va fi automat
NULL;

- absența - în modul non-strict, serverul va însera automat o valoare din oficiu pe acea
coloană, aleasă în funcţie de tipul de date al coloanei (coloanele de tip numeric vor primi
valoarea zero, cele de tip șir de caractere - şirul vid "", cele de tip ENUM prima valoare din
mulţimea de valori permise etc). În modul strict va fi generata o eroare.

13
3. Instrucțiuni DDL (Data Definition Language) – operații cu tabele

5. Crearea de tabele

I. - specificând explicit proprietăţile tabelului și lista definiţiilor de coloane;


II. - copiind structura unei tabel deja existente;
III - pornind de la rezultatul unei interogări.

I. CREATE TABLE nume_tabel (definitie_coloana_l, definitie_coloana2,...)

CREATE TABLE Magazie(


Produs VARCHAR(50),
Categorie VARCHAR(20),
U/M VARCHAR(10),
Pret DECIMAL (5,2)
)
ENGINE InnoDB;

14
3. Instrucțiuni DDL (Data Definition Language) – operații cu tabele

II. CREATE TABLE tabel_nou LIKE nume_tabel_veche

CREATE TABLE Depozit_Chis LIKE Magazie;


Sunt copiate structura și indecșii tabelului, NU și cheile externe și inregistrarile.

III. CREATE TABLE nume_tabel SELECT coloane FR0M alte_tabele

CREATE TABLE Lactate SELECT produs, U/M, pret FROM magazie WHERE
categorie='lactate‘

Poate extrage coloane și înregistrări din mai multe tabele, nu sunt copiaţi indecşii și alți
parametri ai tabelului. În toate situațiile este recomandabil să folosim clauza: IF NOT EXIST

15
3. Instrucțiuni DDL (Data Definition Language) – operații cu tabele

6. Vizualizarea listei de tabele

SHOW TABLES;
SHOW TABLES FROM nume_BD;
SHOW TABLES FROM nume_BD LIKE '%agazi%';

16
3. Instrucțiuni DDL (Data Definition Language) – operații cu tabele

7. Vizualizarea caracteristicilor tabelului

Exista diferite instrucţiuni ce pot fi folosite pentru a determina structura și caracteristicile unui tabel:

SHOW TABLE - afişează informaţii despre tabelele din baza de date curentă. Cu clauza
suplimentara LIKE se pot filtra numele tabelelor listate.

DESCRIBE nume_tabel sau SHOW COLUMNS FROM nume_tabel


Instrucţiunea afişează lista coloanelor tabelului împreuna cu caracteristicile lor (nume, tip de date,
indecşi, acceptare NULL, valoare default).

SHOW CREATE TABLE nume_tabel. Afişează instrucţiunea exactă ce poate fi folosita pentru a
crea un tabel identic cu cea curentă.

17
3. Instrucțiuni DDL (Data Definition Language) – operații cu tabele

8. Ștergerea sau golirea unui tabel

DROP TABLE IF EXISTS nume_tabel;


DELETE FROM nume_tabel; de regula selectiv (clauza WHERE)
TRUNCATE nume_tabel; șterge toate înregistrarile

18
3. Instrucțiuni DDL (Data Definition Language) – operații cu tabele

9. Modificare de tabele

a) - Redenumire
ALTER TABLE nume_tabel RENAME nume_nou;
RENAME TABLE tab_1 TO tab_x [, tab_2 TO tab_y, ... ] ;
- permite mai multe redenumiri într-o singura instrucțiune;
b) - Schimbarea de caracteristici
ALTER TABLE nume_tabel ENGINE MyISAM;
c) - Stergerea de coloane
ALTER TABLE nume_tabel DROP COLUMN denumire;

19
3. Instrucțiuni DDL (Data Definition Language) – operații cu tabele

d) - Modificarea definițiilor de coloane


ALTER TABLE nume_tabel ALTER COLUMN definitie_coloana tip;

ALTER TABLE student ALTER COLUMN an_nastere INT;

ALTER TABLE nume_tabel CHANGE nume_coloană DefinitieNouaColoana;


* definiție nouă coloana include și numele, chiar dacă nu se schimbă

Ex: ALTER TABLE student CHANGE email mail VARCHAR(200); - schimbă denumirea

ALTER TABLE student CHANGE email email VARCHAR(250); - păstrează denumirea,


schimbă doar dimensiunea pentru tipul de date.

20
3. Instrucțiuni DDL (Data Definition Language) – operații cu tabele

e) - Adăugare de coloane

O coloana poate fi adăugată:


ALTER TABLE nume_tabel ADD COLUMN definitie_coloana tip;

21
5. Constrângeri de integritate

- specifică o coloană (o combinaţie de coloane) a cărei valoare (combinaţie de valori) trebuie să fie unică pentru
toate înregistrările din tabel):
UNIQUE [ ( camp1 [, camp2,…])

- specifică faptul că o coloană nu poate conţine o valoare NULL/ poate conține o valoare NULL:
NOT NULL / NULL

Exemplu:
CREATE TABLE Student (
contract INT NOT NULL,
nume VARCHAR(255) NOT NULL,
prenume VARCHAR(255),
ani INT,
UNIQUE (contract)
);

22
5. Constrângeri de integritate
- identifică unic fiecare înregistrare;
PRIMARY KEY [ ( camp1 [camp2,… ]) ] |

- stabileşte o legătură pe baza unei chei externe între o coloană din tabel şi o coloană din tabelul referit;
FOREIGN KEY (camp1 [camp2,.. ]) REFERENCES nume_tabel [(camp1[,camp2,…])

Exemplu:
CREATE TABLE evidenta_note (
id INT NOT NULL,
contract INT,
nota DECIMAL,
PRIMARY KEY (id),
FOREIGN KEY (contract) REFERENCES Student(contract)
);

23
5. Constrângeri de integritate

- specifică o condiţie ce trebuie satisfăcută de fiecare înregistrare:


CHECK ( expresie)

Exemplu:
CREATE TABLE Student (
contract INT NOT NULL,
nume VARCHAR(255) NOT NULL,
prenume VARCHAR(255),
ani INT,
CHECK (ani >= 18)
);

24
6. Exemplu BD: organizația de propiectare

departs –
departamente
employees –
angajați
projects – proiecte
job – participare în
proiecte

25
6. Exemplu BD: organizația de propiectare (continuare)

 employees - angajați:
e_id - numărul personalului angajaților, cheia primară;
e_fname - numele complet al angajatului, câmpul obligatoriu;
e_lname - numele complet al angajatului, câmpul obligatoriu;
e_born - data nașterii angajatului, câmpul obligatoriu;
e_sex - sexul angajatului, domeniu obligatoriu;
e_pasp - seria și numărul pașaportului, un atribut obligatoriu unic;
e_date - data eliberării pașaportului, câmp obligatoriu;
e_given - pașaport emis de, câmp obligatoriu;
e_inn – numărul de identificare, câmp obligatoriu;
e_pens - CPAS, câmp obligatoriu;
e_depart - număr departament, câmp obligatoriu, cheie străină;
e_post – funcția angajatului;
e_room – numărul încăperii;
e_phone - telefoane angajați;
e_loghin - adresa angajatului;

26
6. Exemplu BD: organizația de propiectare (continuare)

Departs - departamente:
d_name - nume departament, cheia primară;
Proiect - proiecte:
p_abbr – abrevierea denumirii proiectului, cheia primară;
p_title - numele proiectului, câmpul obligatoriu;
p_company - client, câmp obligatoriu;
p_chief – persoan de contact
p_begin - data începerii proiectului, câmpul obligatoriu;
p_end - data finalizării proiectului, câmpul obligatoriu;
p_finish – data finală de facto;
p_cost - cost de proiect, câmp obligatoriu.
Job - participare la proiecte:
j_id – enumerarea înregistrărilor, cheia primară;
j_pro - nume scurt al proiectului, cheie străină;
j_emp - numărul angajatului participant la proiect, cheie străină;
j_rol - rolul angajatului în proiect; poate lua una dintre cele trei valori: 'executant', ‘manager', 'consultant'.
j_bonus – salariu.

27
6. Exemplu BD: organizația de propiectare (continuare)

28
6. Exemplu BD: organizația de propiectare (continuare)

Relația Projects (Proiecte):

29
6. Exemplu BD: organizația de propiectare (continuare)

Relația Job (Participare în proiecte):

30
7. Adăugarea datelor

INSERT – adăugarea datelor în tabel:


INSERT INTO nume_tabel [(lista_camp_tabel)]
{ VALUES (lista_expresiilor) | interogare };

Exemple:
-- Se adaugă o înregistrări în entitatea “departs”:
INSERT INTO departs(d_name)
VALUES ('Design exterior’);

-- Sunt adăugate înregistrări în entitate “projects" (pentru campuri selective):


INSERT INTO projects (p_abbr, p_title, P_depart, p_company, p_chief, p_begin, p_end, p_cost)
VALUES
('CON3', 'Constructie 3', 'Proiectare', 'LIDL SRL', 'Zubco', '2018-01-14', '2021-01-14', 70000000),
('SC1', 'Spatiu comercial 1', 'Design interior', 'LIDL SRL', 'Onucu', '2020-05-12', '2020-12-23', 25000),
('SC2', 'Spatiu comercial 2', 'Design interior', 'ALRO SA', 'Onucu', '2019-10-18', '2020-10-18', 17000),
('SC3', 'Spatiu comercial 3', 'Design interior', 'MIDO SA', 'Onucu', '2019-06-22', '2019-12-17', 14000);

Nota: valorile implicite sunt utilizate doar atunci, când valoarea cîmpului nu este definit în codul programului.

31
Recapitulare

1. Enumerați instrucțiunile destinate prelucrării BD;


2. Identificați instrucțiunile ce permit:
a) modificarea parametrilor BD;
b) lichidarea BD;
c) vizualizarea listei cu BD existente pe server;
3. Argumentați necesitatea alegerii STORAGE ENGINE.
4. Descrieți cele trei moduri de creare a tebelelor.
5. Propuneți instrucțiuni de golire a tabelelor.
6. Propuneți instrucțiuni de aflare a numelui de tabel când nu-l știm exact.
7. Identificați instrucțiunile ce permit adăugarea unei coloane la un tabel existent.
8. Identificați instrucțiunile ce permit modificarea coloanei existente.
9. Precizați instrucțiunile de creare și lichidare a BD.
10. Descrieți tipurile de constrângeri ce pot fi aplicate la proiectarea BD.

36

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