You are on page 1of 54

Cap 1.

Fundamente ale
bazelor de date relationale
Elemente generale de limbaj SQL
Administrative

1. Contact: paul@infoacademy.net ; 0721 259 520

2. Prezenta, confirmare informatii personale, acces, fumat;

3. Structura cursului;

4. Examenele, activare; www.infoacademy.net

5. Sustine performanta;

6. Instalare server MySQL http://dev.mysql.com/downloads


http://dev.mysql.com/doc/index-other.html - BD exemple
InfoAcademy - SQL 2015 2
Structura cursului

1. Notiuni fundamentale de baze de date


2. Instructiuni de manipulare a structurii unei baze de date
3. Instructiuni de manipulare a datelor
4. Tipuri de date MySQL
5. Expresii SQL
6. Folosirea indecsilor in baze de date
Elemente de design al bazelor de date
Interogari multi-tabela (join)
Subinterogari
7. View-uri , Tranzactii, Variabile, Interogari precompilate (prepared
statements)
8. Rutine stocate in baza de date (proceduri, functii, trigere, etc)
InfoAcademy - SQL 2015 3
De ce MySQL

1. Este printre cele mai rapide SGBD;


2. Usor de utilizat. Performante inalte, administrare relativ simpla;
3. Utilizeaza standardul SQL cel mai modern in domeniul DB;
4. Multi client, multibaze de date;
5. Acces GUI, WEB, comand line;
6. Portabilitate: Win, Lin, Unix, de la un mic PC/laptop --> servere;
7. Interfata in mai multe limbaje: C, Pearl, Java, Python,Ruby, PHP;
8. Conectivitate si securitate. Suporta SSL (Secure Sockets Layer);
9. Disponibilitate: open source GPL sau licentiere comerciala;
10.Codul MySQL este open source si poate fi testat.

InfoAcademy - SQL 2015 4


De ce MySQL

1. Este printre cele mai rapide SGBD;


2. Usor de utilizat. Performante inalte, administrare relativ simpla;
3. Utilizeaza standardul SQL cel mai modern in domeniul DB;
4. Multi client, multibaze de date;
5. Acces GUI, WEB, comand line;
6. Portabilitate: Win, Lin, Unix, de la un mic PC/laptop --> servere;
7. Interfata in mai multe limbaje: C, Pearl, Java, Python,Ruby, PHP;
8. Conectivitate si securitate. Suporta SSL (Secure Sockets Layer);
9. Disponibilitate: open source GPL sau licentiere comerciala;
10.Codul MySQL este open source si poate fi testat.

InfoAcademy - SQL 2015 5


InfoAcademy - SQL 2015 6
InfoAcademy - SQL 2015 7
InfoAcademy - SQL 2015 8
InfoAcademy - SQL 2015 9
InfoAcademy - SQL 2015 10
InfoAcademy - SQL 2015 11
InfoAcademy - SQL 2015 12
InfoAcademy - SQL 2015 13
InfoAcademy - SQL 2015 14
InfoAcademy - SQL 2015 15
De ce MySQL

1. Este printre cele mai rapide SGBD;


2. Usor de utilizat. Performante inalte, administrare relativ simpla;
3. Utilizeaza standardul SQL cel mai modern in domeniul DB;
4. Multi client, multibaze de date;
5. Acces GUI, WEB, comand line;
6. Portabilitate: Win, Lin, Unix, de la un mic PC/laptop --> servere;
7. Interfata in mai multe limbaje: C, Pearl, Java, Python,Ruby, PHP;
8. Conectivitate si securitate. Suporta SSL (Secure Sockets Layer);
9. Disponibilitate: open source GPL sau licentiere comerciala;
10.Codul MySQL este open source si poate fi testat.

InfoAcademy - SQL 2015 16


Fundamente ale bazelor de date relationale

1. Notiuni generale

2. Structura informatiei intr-un DBMS relational

3. Pachetul MySQL serverul MySQL

4. Utilizarea clientului mysql

5. Elemente generale de limbaj SQL

InfoAcademy - SQL 2015 17


Noiuni generale

Ce este o baza de date

O baza de date reprezint o colecie structurata de informaie stocata


intr-un sistem de calcul.

Structura ei este specificata inaintea introducerii datelor si are in


vedere:

- tipul si compoziia datelor memorate;

- felul in care datele se afla in relaie unele cu altele;

InfoAcademy - SQL 2015 18


Noiuni generale (continuare)

Necesitatea existentei bazelor de date

- Existenta - memorare, stocare De la nisip, piatra, pergament,


hartie la computer;

- Consultare - cautare, comparare --> criterii pentru gasirea


informatiilor cat mai rapid posibil si cu un efort cat mai mic, om si
masina. Pentru a face aceest lucru avem nevoie de optimizarea
bazelor de date.

InfoAcademy - SQL 2015 19


Ce este o baza de date relaionala?

O baza de date relaionala este una in care organizarea informaiei respecta modelul
relaional.

Se cunosc diferite modele de organizare a informaiei intr-o baza de date:


- modelul flat-file - cea mai simpla modalitate de a memora date. Informaia este
plasata intr-un fiier text sau binar, fiecare inregistrare ocupa o linie, valorile
componente ale fiecrei inregistrari fiind separate prin delimitatori prestabilii;
- modelul ierarhic - informaia este structurata sub forma unui arbore in care fiecare
inregistrare are un printe si mai multe sub-inregistrari posibile;
- modelul reea - o extensie a modelului ierarhic, in care fiecare inregistrare poate avea
mai multe sub-inregistrari dar si mai multe inregistrari printe;
- modelul relaional - este un model bazat pe teoria mulimilor si pe logica
predicatelor, in care informaia este grupata in mulimi de inregistrari numite tabele.
Intre tabele pot fi definite relaii in mod flexibil, de asa natura incat datele sa poat fi
stocate si manipulate eficient. InfoAcademy - SQL 2015 20
Sisteme de gestiune a bazelor de date relaionale

Baza de date ~ notiune abstracta.

Este nevoie de un software care sa realizeze toate functiile acesteia -> SGBD sau DBMS.

Un DBMS implementeaz funciile necesare pentru diferitele aspecte ale lucrului cu


bazele de date si anume:
- memorarea fizica a datelor, intr-un format optimizat in vederea operaiunilor viitoare;
- definirea si modificarea structurii bazelor de date;
- introducerea informaiilor noi si manipularea celor existente (update, delete, select);
- filtrarea accesului la datele memorate (ex: un sistem de privilegii, care sa faca
distincie intre diveri utilizatori/clienti/aplicatii);
- implementarea unei modaliti de acces la toate aceste facilitai (client / server /
local / remote).

InfoAcademy - SQL 2015 21


Cine poate sa introduc si sa manipuleze informaia?

Aparent, exista doua scenarii posibile:

1 - informaia este introdusa, accesata, manipulata de ctre un utilizator (

2 - informaia este introdusa, accesata, manipulata de ctre o aplicaie .

Putem unifica cele doua cazuri vorbind - la modul general - despre aplicaii client sau,
mai scurt, clieni.

InfoAcademy - SQL 2015 22


Cum interactionam cu un DBMS?

- Avnd in vedere ca DBMS ofer servicii clienilor in baza cererilor formulate de


ctre acetia, el conine un modul care acioneaz ca server de baze de date;
- Clientul acceseaz datele independent de aspectele fizice ale stocrii lor pe
HDD sau in RAM;
- Clientul NU poate avea intotdeauna acces direct la date (client/server);
- Clienii unui DBMS sunt aplicaii diverse care se pot afla pe aceeasi masina cu
serverul sau pe o alta masina, din retea sau din afara retelei;
- Modalitile de interfatare a clienilor cu DBMS sunt si ele diverse:
a) - cea mai comuna este cea care folosete TCP/IP, ceea ce permite conectarea
la DBMS atat pentru clienii aflai pe aceeai maina cat si pentru cei din reea
(remote).
b) - atunci cand clientul si serverul se afla pe aceeai staie, in funcie de sistemul
de operare gazda sunt disponibile si alte modaliti de conectare la server
(socket in Linux/Unix, shared memory sau named pipe in Windows etc.).
InfoAcademy - SQL 2015 23
Cum interactionam cu un DBMS? (continuare)

Clienii unui DBMS pot fi:

- utilitare dedicate pentru administrarea serverului sau manipularea structurii


bazelor de date si a informaiilor coninute
- fie aplicaii grafice,
- fie programe care ofer utilizatorului posibilitatea de a trimite comenzi
SQL ctre server
- programe care se folosesc de datele memorate in bazele de date gestionate de
ctre DBMS (ex: un soft bancar prin intermediul cruia se creeaz noi conturi sau
le vizualizeaz cele deja existente. Informaiile despre conturi sunt stocate intr-o
baza de date).

Cererile trimise de ctre clieni serverului de baze de date poarta denumirea de


interogri (query, in denumirea originala din limba engleza).
InfoAcademy - SQL 2015 24
Limbajul SQL

Utilizatorul unui DBMS nu stie si nici nu doreste sa stie sistemul de fisiere al acestuia.
El este interest sa aiba o viziune logica asupra datelor memorate, care sa-i permita
definirea structurii BD, introducerea, extragerea si prelucrarea de date.

Acest scop este realizat prin intermediul unui limbaj, in cazul nostru SQL (Structured
Query Language).

- Creat in 1970 la IBM;


- In1979 Oracle isi creaza propriul SQL;
- In 1986 este standardizat de catre ANSI si de catre ISO;
- Apar mai multe versiuni, printer care: 86, 89, 92, 99, 2003, 2008

Toate softurile majore de tip DBMS actuale inglobeaza o forma de SQL. Printre
acestea Oracle, DB2, Microsoft SQL, Postgresql, MySQL, SQLite fiecare cu dialetul sau.
InfoAcademy - SQL 2015 25
Notiuni generale recapitulare

Principalele responsabilitati ale DBMS sunt urmatoarele:


- stocarea si managementul datelor;
- interactiunea cu clientii DBMS;
- controlul accesului la date (metode de acces, privilegii);

Care sunt principalele modele de baze de date?

Prin ce protocol se conecteaza clientul la un server aflat intr-o alta retea?

Care sunt principalele softuri de gestiune a bazelor de date?

Instructiunile SQL ajuta la:


- Definirea si modificarea structurii BD;
- Introducerea, extragerea, modificarea, prelucrarea si stergerea datelor.
InfoAcademy - SQL 2015 26
Fundamente ale bazelor de date relationale

1. Notiuni generale

2. Structura informatiei intr-un DBMS relational

3. Pachetul MySQL serverul MySQL

4. Utilizarea clientului mysql

5. Elemente generale de limbaj SQL

InfoAcademy - SQL 2015 27


Structura informatiei intr-un DBMS relational

Baza de date relationala notiune logica, un ansamblu de informatie aflata intr-


una sau mai multe tabele. O BD fara tabele NU contine informatie.
Modalitatea de stocare a datelor tine de softul DBMS si nu influenteaza
manipularea datelor.

Tabela un ansamblu de inregistrari cu structura impusa, organizata tabelar.


Structura unei tabele este specificata la crearea acesteia (definirea coloanelor si a
tipului de informatie din fiecare coloana).
Numarul de coloane este fix, definit, numarul de randuri este infinit.

Coloana pozitie, nume, tip de date, diferite proprietati suplimentare

Randul un ansamblu de valori,cate una pentru fiecare coloana a unei tabele.


(adresa, rand/coloana, tip de date)
NULL absenta unei valori,InfoAcademy
nedefinita - SQL 2015 28
Fundamente ale bazelor de date relationale

1. Notiuni generale

2. Structura informatiei intr-un DBMS relational

3. Pachetul MySQL serverul MySQL

4. Utilizarea clientului mysql

5. Elemente generale de limbaj SQL

InfoAcademy - SQL 2015 29


Pachetul MySQL serverul MySQL

Serverul MySQL software de gestionare a bazelor de date, stocate pe HDD sau


in memorie. Faciliteaza conectarea clientilor. Executabilul mysqld. Port. Platforma.

Clientii MySQL - software care ajuta la conectarea la server si efecturarea de


cereri catre acesta. Avem doua categorii de utilitare client:
- pentru manipularea structurii BD si a datelor continute:
- mysql - ofera utilizatorului o linie de comanda la serverul SQL;
- mysqldump - backup al unei tabele;
- mysqlimport - importa date dintr-un fisier intr-o tabela a BD.
- pentru administrarea serverului:
- mysqladmin - monitorizare si administrare a serverului MySQL

Programe utilitare non-client de exemplu software de verificare si refacere a


integritatii BD.
InfoAcademy - SQL 2015 30
Aplicatii ajutatoare neincluse in pachetul MySQL

phpMyAdmin aplicatie web pentru interactiunea cu serverul. Necesita


instalarea de server Web si interpretor PHP. Ruleaza pe orice sistem de operare.

MySQL Wokbench utilitar grafic care ajuta la conectarea clientilor la server;

InfoAcademy - SQL 2015 31


Fundamente ale bazelor de date relationale

1. Notiuni generale

2. Structura informatiei intr-un DBMS relational

3. Pachetul MySQL serverul MySQL

4. Utilizarea clientului mysql

5. Elemente generale de limbaj SQL

InfoAcademy - SQL 2015 32


Utilizarea clientului mysql

Moduri de lucru:

- modul interactiv --> ENTER;

- modul non-interactiv batch mode --> SCRIPT fisier .

Lansarea in executie a mysql se poate face din linia de comanda a sistemului


de operare sau cu ajutorul unui utilitar.

Calea catre executabilul mysql : cd c:\Program Files\MySQL\MySQL Server 5.7\bin

Comanda: mysql [-h 1.2.3.4] [-P 3306] -u user -p[password] [--safe-updates] [BD]

executabil host port user parola optiuni bd


InfoAcademy - SQL 2015 33
Utilizarea mysql in modul interactiv

Comenzile si instructiunile se introduc una cate una, se incheie cu unul dintre


terminatori si se apasa ENTER (show databases; select version(); select now(); )

Instructiunile SQL sunt transmise catre server si prelucrate de catre acesta.

Comenzile sunt ale clientului mysql, care nu fac parte din standardul SQL.

Terminatorii liniei de comanda:


-; - executa comanda scrisa pana in acel moment
- \g - executa comanda scrisa pana in acel moment
- \G - executa comanda scrisa pana in acel moment cu valori una sub alta

Ex: mysql> SELECT CURDATE(), CURTIME()\g si ...\G

Exemplul 1.01 InfoAcademy - SQL 2015 34


Help in linia de comanda mysql

- Help local comenzi mysql help sau \? sau ? sau \h

COMANDA ALIAS EXPLICATII


- Delimiter \d - inlocuieste terminatorul cu altceva (Ex: $)
- Exit \q - deconectarea de la server
- Source \. - executarea unui script SQL
- Status \s - server status
- Use \u - pentru selectarea bazei de date curente
- Clear \c - sterge instructiunea in curs de scriere

- Help de la server instructiuni SQL help contents

Exemplul 1.02
InfoAcademy - SQL 2015 35
Utilizarea mysql in modul non-interactiv (batch mode)

Script-uri SQL

Un script SQL este un fisier de tip text ce contine o succesiune de instructiuni.

Instructiunile respecta aceleasi reguli ca si in modul interactiv. Acestea vor fi


executate una cate una, in ordinea in care apar, pana la final sau pana la aparitia
primei erori. Rezultatul executiei va fi afisat.

Un script SQL seamana cu un program scris intr-un limbaj de programare. Singura


diferenta este ca nu exista structuri de control al executiei. Instructiunile se
executa secvential. Alte elemente comune: variabile, functii, etc.

Nu confundati un script SQL care construieste o tabela si introduce date in ea cu


un fisier care contine date.
InfoAcademy - SQL 2015 36
Utilizarea mysql in modul non-interactiv din linie de comanda

mysql> source cale/Nume_fisier.sql; - executare script SQL


/* sau */
mysql> \. cale/Nume_fisier.sql;

mysqldump -u root -p database_name > cal_fisier/backup.sql - backup

mysql -u root -p database_name < cale_fisier/nume_fisier.sql restaurare

mysql> CREATE USER 'username'@'localhost' IDENTIFIED BY 'secret'; - username

GRANT ALL ON database_name.* TO 'username'@'localhost'; - drepturi user

SET PASSWORD FOR 'paul'@'localhost' = PASSWORD('parola_noua');


Exemplul 1.03
InfoAcademy - SQL 2015 37
Comentarii in scripturi si instructiuni SQL

- Comentarii care se intind pe o linie sau pe o portiune a liniei incep cu # sau --


si se incheie la sfarsitul liniei;

- Comentarii care se intind pe mai multe linii incep cu /*, se termina cu */;

- Comentarii de compatibilitate incep cu /*!, se termina cu */. Servesc la


executia de extensii MySQL ale limbajului SQL, care nu vor fi executate de alte
softuri DBMS. Daca este mentionata o versiune vor fi executate doar de
versiunile egale sau superioare.

InfoAcademy - SQL 2015 38


Utilizarea clientului mysql recapitulare

Care sunt terminatorii unei linii de comanda mysql?

Cum adaugati comentarii in scripturi si instructiuni SQL?

Ce este un script SQL?

Ce inseamna interactiv/non-interactiv?

Ce informatii sunt necesare pentru conectarea la un server intr-o alta retea


(remote)?

InfoAcademy - SQL 2015 39


Fundamente ale bazelor de date relationale

1. Notiuni generale

2. Structura informatiei intr-un DBMS relational

3. Pachetul MySQL serverul MySQL

4. Utilizarea clientului mysql

5. Elemente generale de limbaj SQL

InfoAcademy - SQL 2015 40


Elemente generale de limbaj SQL

Categorii de instructiuni/operatii

Distingem 3 categorii de instructiuni ale limbajului SQL, ce formeaza 3 portiuni ale


limbajului:
DDL (Data Definition Language)
- creare, stergere, vizualizare de baze de date;
- creare/modificare de tabele cu specificarea structurii acestora, etc.

DML (Data Manipulation Language) - introducere, extragere, modificare,


stergere de informatii (INSERT, UPDATE, SELECT, DELETE) .

DCL (Data Control Language) - gestionarea accesului la date (definirea de


conturi, stabilirea de privilegii ale conturilor pe diversele baze de
date/tabele/coloane).
InfoAcademy - SQL 2015 41
Nume de baze de date, tabele si coloane
Tipuri de nume si conditii de validitate

Fiecare entitate informationala de pe un server de baze de date


(o baza de date, tabela, coloana, etc) este identificata printr-un nume.
Numele poate fi scris ca atare sau plasat intre caractere delimitatoare `.
A nu se confunda caracterul ` (back quote) cu ' (apostroful).
Pentru numele ce nu folosesc delimitatori, regulile sunt urmatoarele:

InfoAcademy - SQL 2015 42


Tipuri de nume si conditii de validitate (continuare)

- pot contine litere, cifre, _ sau $;


- nu pot fi formate numai din cifre (deoarece pot fi confundate de
catre interpretor cu o reprezentare valida a unei valori intregi);
- pot incepe cu orice caracter admis, inclusiv cifra, insa unele nume
care incep cu cifre pot fi gresit interpretate ca valori intregi (ex: 2e3
(care inseamna 2000), 0x1a (care inseamna 26 in hexazecimal) etc).

InfoAcademy - SQL 2015 43


Atunci cand dorim ca numele sa contina exclusiv cifre sau si alte
caractere decat cele de mai sus (ex: spatiu), va trebui sa includem numele intre
delimitatori back quote:

SELECT * FROM `clase inchise`

Cand serverul lucreaza in modul ANSI_SQL delimitatorii pot fi si ghilimele ().

Includerea intre delimitatori elimina aproape toate restrictiile asupra numelui,


cu urmatoarele exceptii:
- nu sunt permise caracterele cu codul 0 sau 255 (adrese de retea si
broadcast);
- numele de baze de date si tabele nu pot contine punct (.), slash (/) sau
backslash (\). Punctul este folosit in construirea numelor absolute (vezi mai jos),
iar / si \ sunt folosite ca separator de directoare pentru caile in sistemul de
fisiere.
InfoAcademy - SQL 2015 44
Conteaza daca folosim litere mici sau mari?

De obicei, in sistemul de operare Windows sistemele de fisiere sunt case


insensitive, iar in Linux/Unix sunt case sensitive.

Aceasta proprietate a sistemului de fisiere afecteaza DOAR numele de


baze de date si tabele.

Numele coloanelor si ale altor elemente din bazele de date MySQL


(indecsi, proceduri stocate) NU Sunt case sensitive.

InfoAcademy - SQL 2015 45


Nume absolute si relative

Intr-o baza de date relationala ne putem referi la tabele sau coloane folosind
nume complete sau relative:

- un nume complet este de forma bazadedate.tabela (in cazul referirii la o


tabela) sau bazadedate.tabela.coloana daca dorim sa ne referim la o coloana.

SELECT * FROM academie.clase;

- un nume relativ reprezinta numele simplu al tabelei sau coloanei. El va fi


automat considerat relativ la baza de date sau tabela curenta.

USE academie;
SELECT * FROM clase;
InfoAcademy - SQL 2015 46
RECAPITULARE

Ce presupune modul interactiv/non-interactiv?

De ce informatii avem nevoie pentru a ne conecta la un server DBMS remote?

Care sunt terminatorii unei linii de comanda?

Care sunt principalele caracteristici la definitia unei coloane?

La ce ajuta instructiunile SQL?

Care sunt cele trei tipuri de instructiuni SQL?

Cum putem introduce comentarii in instructiunile si scripturile SQL?

Dati exemple de adresa complete pentru o coloana.


InfoAcademy - SQL 2015 47
MySQL Workbench

- Pornire din start / all programs / MySQL /MySQL Workbench;

- Click local instance MySQL user / parola sau automat;

- Partitionare, Short cut - uri in bara de meniu;

- Ctrl+Shift+O, Ctrl+O, Ctrl+Shift+S, Ctrl+S , Ctrl+Enter, Ctrl+N;

- Executare instructiuni fulgere;

- Edit / Preferences;

- Server / Data export/import;


InfoAcademy - SQL 2015
,

49
Refresh baze de date si tabele, daca
Limiteaza numarul de
le-am adaugat recent
inregistrari afisate de
un raport

Butoane pentru
ascunderea / afisarea
Switch la pagina de
benzilor din stanga,
administrare
dreapta, jos

Executa toate Executa instructiunea pe


instructiunile din foaia de care am plasat mousul
lucru (scriptul) sau am selectat-o
Ctrl + Shift + Enter Ctrl + Enter

Detalii nume coloana, tip


de date, alte informatii
din tabele

InfoAcademy - SQL 2015 50


- New model Ctrl + N - deschide o noua foie de lucru
- Open SQL Scrip - deschide un script intr-o foaie de lucru noua
- Save script - salveaza scriptul din foia de lucru curenta
- Vezii si shot cut uri - sub bara de meniu

InfoAcademy - SQL 2015 51


- Aceasta fereastra se deschide din
Edit / Preferencies

Setata o valoare
mai mare decat
cea default

Trebuie debifat Safe updates,


daca e bifat (va restrictioneaza
daca e bifat)

InfoAcademy - SQL 2015 52


InfoAcademy - SQL 2015 53
Selecteaza baza de date Selecteaza tabelele

Ce exportam? Doar
structura, doar datele,
ambele?

Optiuni de selectat, director, nume


fisier, etc

InfoAcademy - SQL 2015 54

You might also like