Sunteți pe pagina 1din 6

Vizualizarea bazelor de date existente

Show databases; #se afiseaza toate bazele de date indiferent de denumirea lor

Show databases like ’text%’; #se afiseaza doar bazele de date care incep cu textul cerut

Show databases like ’%text%’; #se afiseaza doar bazele de date care incep cu orice litere contin cuvantul
text si se termina cu orice litere

Information_schema  BD care contine meta informatie, ea este creata in mod implicit si contine
informatii despre celelalte BD aflate pe server. Prin interogarea ei se pot afla detalii despre parametrii si
structura tabelelor componente. Reprezinta sumarul tuturor BD dupa server

MySQL  este BD in care serverul memoreaza privilegiile diferitilor clienti asupra informatiilor
memorate in bazele de date. Reprezinta sumarul drepturilor pe care le are fiecare user in bazele de date

Tema 1: Descoperiti rolurile bazelor de date numite performance_schema si sys.

Motoare de stocare/cautare in baze de date


(reprezinta modul de administrare al unei baze de date- unde stocam informatia,
pentru cat timp stocam informatia, ce facilitati permite motorul de stocare)

a. Facilitatile oferite pot sa fie: tranzactii si integritate referentiala.

Tranzactii = posibilitatea de a define succesiuni de “ operatii atomice “.

Operatiile atomice, fie reusesc in integralitatea lor, fie dau erori ( cel putin o eroare ), in acest caz nu se
produce nici o modificare.

Daca avem un script de 10 comenzi si la comanda nr. 5 am primit eroare cu rosu inseamna ca nici un
rezultat din cele 10 comenzi nu va fi pastrat, chiar daca in primele 4 comenzi nu am avut nici o eroare !

Operatia atomica se executa la modul totul sau nimic.

Integritate referentiala = este o modalitate de a impune ca atunci cand o informatie este referita de catre
o alta, prima din ele sa nu poata fi stearsa sau modificata pana nu a fost actualizata/stearsa si cealalta
informatie.
1 Mihai 20 ani
2 Georgeta 25 ani

1 Orange Mobil 15 15 euro


1 Televiziune 12 20 euro
2 Orange Mobile 17 17 euro
1 Internet 25 30 euro
2 Internet 35 40 euro

Nu vom putea sterge datele despre clientul nr. 1 din prima tabela pana cand nu stergem toate
abonamentele clientului 1 din a 2a tabela.

Nu vom putea modifica nr. clientului 1 ( 1 devine 5 ) pana cand nu modificam in a 2a tabela nr. clientului
din 1 in 5.

Integritatea referentiala ne asigura ca inregistrarile din tabela a doua au un correspondent intotdeauna in


prima tabela, adica niciodata nu vom putea avea inregistrari din tabela 2 care nu au correspondent in
tabela 1, adica nu putem avea inregistrari orfane in tabela 2

b. Performante – fiecare motor de stocare se comporta optim doar in anumite scenario de utilizare. Unele
motoare de stocare sunt recomandabile atunci cand majoritatea operatiunilor sunt de introducere de
informatie pe cand alte motoare de stocare sunt optimizate/recomandate atunci cand majoritatea
operatiunilor sunt de cautare sau de extragere de informatie.

c. Felul in care serverul mysql stocheaza datele in sistemul de fisiere sau in memoria RAM. In functie de
motorul ales, datele pot fi memorate intr-un singur fisier pentru toate tabelele sau in mai multe fisiere
( cate 1 fisier pentru fiecare tabela ) sau toate tabelele sa fie stocate integral in memoria RAM ( memoria
RAM este volatile adica se sterge cand oprim pc ).

Ex: daca dorim sa cream 10 BD cu cate 10 tabele fiecare, unele motoare de stocare pot sa genereze un
singur fisier pentru toate bazele de date sau 10 fisiere pentru fiecare baza de date sau pot sa genereze 100
fisiere adica pentru fiecare din cele 100 tabele ( 10 tabele * 10 baze de date ).

Ex: daca in mod frecvent dorim sa exportam pe un stick de memorie doar o anume tabela dintr-o anume
baza de date atunci vom folosi un motor de stocare care creaza cate un fisier pentru fiecare tabela.

1. Exemple de motoare de cautare/stocare


a. My ISAM
- Este cel traditional din MySQL, este urmas al motorului ISAM si este un motor de stocare simplu
si rapid, dar nu suporta tranzactii si integritate referentiala.
b. INNODB
- Este motorul de stocare implicit incepand cu varianta de MySQL 5.5.5. Este un motor de cautare
care suporta tranzactii si integritate referentiala ( rezolva problema lui My ISAM )
- Se comporta foarte bine in scenarii de access multiplu ( mai multi utilizatori folosesc simultan
aceeasi baza de date )

Ex: daca utilizatorul 5 si utilizatorul 8 vor sa modifice tipul de data al unei coloane simultan, acest
lucru nu va fi posibil in motorul INNODB, primului dintre cei 2 i se va permite sa modifice si pana
nu termina de executat comanda primul utilizator, celui de al doilea nu i se permite modificarea. Al
doilea utilizator va putea modifica doar dupa terminarea executiei comenzii primului utilizator.

Ex: INNODB ne permite ca utilizatorul 5 sa modifice linia X simultan cu utilizatorul 8 care modifica
linia Y, adica daca cei 2 utilizatori vor sa modifice simultan 2 linii diferite, acest lucru poate fi
permis.

- Se comporta foarte bine la operatii preponderent de introducere de date ( scriere de date ), nu


neaparat are viteza foarte buna la operatiile de afisare de date.
- Consuma memorie RAM sau pe Hard Disk destul de multa.

c. MEMORY
- Neutilizabil in real life pentru ca presupune stocarea datelor integral in RAM.
- Continutul unei tabele stocat cu MEMORY se pierde la restartarea serverului, dar structura
tabelei este pastrata.
- Partea de instructiuni DDL le memoreaza pe Hard Disk, adica sunt nevolatile, iar partea de
instructiuni DML le memoreaza in memoria RAM adica sunt volatile.
- Din moment ce memoria RAM are o viteza mult mai mare de lucru decat Hard Disk ul inseamna
ca viteza cu care manipulam datele va fi mult mai mare decat la alte motoare de stocare ( viteza
maxima ).
- In schimb, nu suporta tranzactii si integritate referentiala ( asemanator cu My ISAM ).

- TEMA : Sa se aleaga alte 3 motoare de stocare din lista afisata si sa se prezinte


caracteristicile acestora.
Valoarea NULL
“ Valoarea NULL ” este diferita de textul N U L L. Valoarea NULL indica absenta oricarei valori pe o
anumita linie sau coloana

! ! ! Valoarea NULL nu este tot una cu 0 pentru datele de tip numeric ! ! !

! ! ! Valoarea NULL nu poate fi identificata cu sirul VID ! ! ! Sirul VID este “” ( nici macar un spatiu ).

Pe o anumita inregistrare, la o anumita coloana putem sa permitem sa existe valoarea NULL sau sa nu
existe valoarea NULL. In cazul in care nu dorim sa existe valoarea NULL, vom preciza ca si modificator
al coloanei “ NOT NULL ”.

Valori DEFAULT
- Este o valoare stabilita implicit pentru o coloanal atunci cand utilizatorul a declarat ca pe acea coloana
trebuie sa existe neaparat o valoare ( a pus NOT NULL ),
- Se foloseste atunci cand nu vrem sa primim eroare daca la inserarea valorilor pe un rand acea celula de
tabela nu contine nimic.

- Daca serverul este configurat in modul non-strict inseamna ca va insera o valoare din oficiu pe acea
coloana aleasa in functie de tipul de data al coloanei. Daca coloanal este de tip numeric, in modul non-
strict se va introduce automat de la server valoarea 0. Daca coloanal este de tip sir de caractere atunci in
modul non-strict se va introduce automat de la server sirul VID. Daca avem tip de data ENUM si lucram
in modul non-strict, serverul va insera automat prima valoare din multimea de valori premise, Acest mod
non-strict este folosit atunci cand am precizat ca coloanal trebuie sa fie NOT NULL, dar nici nu i-am pus
valoare DEFAULT si dorim ca serverul sa ne introduca totusi o valoare pe acea coloana.

Daca lucram in modul strict, se va genera eroare.

Modurile de lucru strict si non strict ale unui server MYSQL


Valoarea default pentru o coloana poate fi:

-stabilita explicit prin precizarea definitiei de coloana de catre administrator,folosind clauza default(linia
2)

-stabilita automat de catre server atunci cand in definitia coloanei nu este prezenta clauza default(linia
4)

-absenta,caz in care la introducerea unei inregistrari la care nu se specifica valoarea pentru coloana in
cauza(de la tastatura) serverul va actiona in functie de modul in care a fost configurata(linia 7)

a)Daca serverul a fost configurat in modul non strict,se va insera automat o valoare din oficiu pe acea
coloana aleasa de catre server in functie de tipul de data al coloanei;ex:daca coloana este de tip
numeric,atunci serverul va introduce cifra 0, daca coloana este de tip sir de caractere serverul va
introduce sirul vid “”,daca avem tip de data enumeratie se va introduce automat de catre server prima
valoare din multimea de valori permise.

b)Daca serverul a fost configurat in modul strict,vom primi eroare si nici o valoare de pe acea linie nu a
fost introdusa din cauza faptului ca in modul strict utilizatorul trebuie sa introduca intotdeauna de la
tastatura o valoare explicita pe acea coloana.

Comenzi utilizate:

SHOW databases;
SHOW TABLES FROM information_schema;

SHOW TABLES FROM mysql;

SHOW databases like 's%';

SHOW CREATE DATABASE information_schema;

CREATE DATABASE IF NOT EXISTS test15;

SHOW engines;

USE test15;

SHOW TABLES;

CREATE TABLE IF NOT EXISTS t1(Nume_copil varchar(25) NOT NULL, Varsta int(3)
NULL, Data_nastere date NOT NULL);

CREATE TABLE IF NOT EXISTS t2(CNP int(13) NOT NULL, Prenume char(20) NOT
NULL, Nr_telefon int(10) NULL);

CREATE TABLE IF NOT EXISTS t3(Nr_sesizare int(25) NOT NULL, data_sesizare


datetime NOT NULL, Adresa varchar(30) NOT NULL DEFAULT 'adresa urmeaza a fi
precizata');

CREATE TABLE IF NOT EXISTS t4(CNP int(13) NOT NULL DEFAULT


'0000000000000');

CREATE TABLE IF NOT EXISTS t5(CNP varchar(50) NOT NULL DEFAULT 'clientul
nu doreste sa se afiseze CNP ul');

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