Sunteți pe pagina 1din 79

Octavian G.

Mustafa

Elemente de MySQL
Programarea bazelor de date ı̂n mysql

Publicaţiile DAL
Craiova
Fişier prelucrat ı̂n data de [September 14, 2015]
Avertisment

Acest eseu nu a fost raportat vreunui referent. În consecinţă, conţinutul său trebuie
considerat “ca atare.”
Autorul vă aşteaptă comentariile la adresa lui de e-mail1 şi vă mulţumeşte anti-
cipat pentru efortul depus.
Fiecare proiect de la Publicaţiile DAL trebuie considerat “şantier” dacă nu este
declarat altfel. Versiunea sa este cea a datei de pe pagina cu titlul.

Craiova, Mai 18, 2015 O.G.M.

1 octawian@yahoo.com

v
Prefaţă

În materialul de faţă prezentăm o serie de chestiuni introductive privind programarea


bazelor de date ı̂n sistemul MySQL (pe scurt, mysql).
Sistemul mysql este un ansamblu client-server iar versiunea (de server) ı̂n care
lucrăm este MySQL Community Server 5.6.26.
Presupun că sunteţi deja familiarizat(ă) cu programarea bazelor de date folosind
T-SQL şi că aţi răsfoit tutorialul meu despre acest subiect, care este disponibil on-
line la adresa [16].
Utilizarea lui mysql ı̂n sistemul LAMP [12], de către siturile WEB bazate pe
platforma WordPress [39] etc face din cunoaşterea sa o necesitate pentru oricine
studiază tehnologiile de baze de date.

Craiova, [September 14, 2015] O.G.M.

vii
Cuprins

1 Instalarea SGBD-ului . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1 Poze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2 Primele manevre cu mysql . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31


2.1 Alte poze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.2 Injecţii de date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.3 Poze (din nou. . . ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

3 Diverse proiecte mysql . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53


3.1 O bază wp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

Referinţe Bibliografice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

ix
Lista de Figuri

1.1 Directoare pentru instalarea Custom . . . . . . . . . . . . . . . . . . . . . . . . . . . 2


1.2 Contractul de licenţă . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3 Tipul de instalare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4 Componentele ce urmează a fi instalate . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.5 Instalarea componentei MySQL Server 5.6.26 . . . . . . . . . . . . . . 7
1.6 Elementele componentei MySQL Server 5.6.26 . . . . . . . . . . . . . 8
1.7 Selectarea numelui componentei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.8 Fereastra Advanced Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.9 Selectarea directorului . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.10 Fereastra Advanced Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.11 Selectarea directorului . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.12 Avertisment la recapitulare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.13 Instalarea componentei MySQL Workbench 6.3.4 . . . . . . . . . . . . 11
1.14 Butonul Advanced Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.15 Selectarea directorului . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.16 Fereastră de avertisment: Warning . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.17 Instalarea componentei MySQL Notifier 1.1.6 . . . . . . . . . . . . . 13
1.18 Instalarea componentei MySQL for Visual Studio 1.2.3 . 14
1.19 Instalarea componentei ODBC 5.3.4 . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.20 Instalarea componentei NET 6.9.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.21 Instalarea componentei Python (3.4) 2.0.4 . . . . . . . . . . . . . . . 15
1.22 Instalarea componentei C 6.1.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.23 Instalarea componentei MySQL Documentation 5.6.26 . . . . . 16
1.24 Elementele componentei Samples and Examples 5.6.26 . . . 17
1.25 Recapitulare, avertismente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.26 Începem execuţia! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.27 Butonul Show/Hide Details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.28 Jurnalul execuţiei/instalării . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.29 Execuţia s-a ı̂ncheiat! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.30 Configurarea componentelor instalate . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.31 Butonul Show Advanced Options . . . . . . . . . . . . . . . . . . . . . . . . 20

xi
xii Lista de Figuri

1.32 Parola utilizatorului root . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21


1.33 Stabilirea parolei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.34 Serviciul Windows MySQL56 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.35 Alegerea fişierelor de jurnal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.36 Căile fişierelor de jurnal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.37 Începem execuţia! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.38 În timpul execuţiei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.39 Jurnalul execuţiei/configurării . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.40 S-a ı̂ncheiat execuţia! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.41 Verificarea parolei utilizatorului root . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.42 Începem execuţia! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.43 În timpul execuţiei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.44 Execuţia/configurarea s-a ı̂ncheiat! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.45 Mai departe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.46 Instalarea lui mysql s-a ı̂ncheiat! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
1.47 Fereastra principală a programului MySQL Workbench . . . . . . . . . . 28
1.48 Prima formă a ferestrei de conectare la server . . . . . . . . . . . . . . . . . . . . 29
1.49 A doua formă a ferestrei de conectare la server . . . . . . . . . . . . . . . . . . . 29

2.1 Fereastra clientului workbench . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31


2.2 Butonul de vizualizare a ferestrelor din panoul stâng . . . . . . . . . . . . . . 34
2.3 Butonul de execuţie a interogării . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.4 Rezultatul interogării . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.5 Ştergerea rândurilor din fereastra Output . . . . . . . . . . . . . . . . . . . . . . 35
2.6 Butonul de minimizare a panoului inferior . . . . . . . . . . . . . . . . . . . . . . . 36
2.7 Directorul bazei de date intro_carti . . . . . . . . . . . . . . . . . . . . . . . . 36
2.8 Butonul de actualizare/sincronizare a conţinutului ferestrei din
panoul stâng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.9 Butonul Data Export . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.10 Fereastra de export a datelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.11 Jurnalul exportului de date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.12 Rezultatul exportului: fişierele dump . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.13 Închiderea ferestrei de lucru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.14 Butonul ferestrei Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.15 Butonul componentei MySQL for Excel . . . . . . . . . . . . . . . . . . . . . 46
2.16 Panoul componentei atunci când fereastra principală nu este
maximalizată . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2.17 Panoul componentei atunci când fereastra principală este
maximalizată . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.18 Alegerea unui obiect conexiune . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.19 Alegerea bazei de date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.20 Alegerea tabelului . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.21 Selectarea datelor din foaia de lucru . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.22 Maparea coloanelor de date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.23 Acceptăm noua mapare! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Lista de Figuri xiii

2.24 Butonul de inserare a datelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50


2.25 Rezultatul execuţiei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Acronime

JDBC Java Database Connectivity


LAMP Linux – Apache – MySQL – PHP/Perl/Python
ODBC Open Database Connectivity
SQL Structured Query Language
SGBD Sistem de Gestiune a Bazelor de Date
SGBDR Sistem de Gestiune a Bazelor de Date Relaţionale
T-SQL Transact-SQL
VS Microsoft Visual Studio

xv
Capitolul 1
Instalarea SGBD-ului

MySQL (sau, ca ı̂n linie de comandă, mysql) este un sistem de gestiune a


bazelor de date relaţionale (SGBD, SGBDR) inventat de Michael Widenius şi
David Axmark de la MySQL AB şi denumit astfel după My, fiica lui Widenius
[17]. În prezent, mysql este dezvoltat de Oracle [21].
mysql, ı̂n versiunea Community Edition, poate fi descărcat de la adresa
[18]. Descrierea care urmează presupune că aţi optat pentru programul complet,
adică mysql-installer-community-5.6.26.0.msi.
Tutorialul oficial, cuprinzător, cu o mulţime de ilustraţii high-definition, pentru
instalarea lui mysql este disponibil on-line la adresa [20].
Lucrăm pe un calculator x86 [33] cu sistemul de operare Windows 8.1 Profes-
sional, asupra căruia avem drepturi de administrator.
Pentru a putea interacţiona programatic cu bazele de date mysql, presupun că aţi
instalat deja ı̂n calculator versiuni de Microsoft Visual Studio (VS) [15], Microsoft
Excel [14], respectiv Python1 (py) [27].
Înaintea instalării propriu-zise, construim un director (folder) de lucru, C:\...
\instalare_MySQL, vezi elipsa albastră din Figura 1.1. Dacă aveţi ı̂n calculator
şi alte SGBD-uri, atunci este bine să nu amestecaţi fişierele *.sql respective. În
acest director, pregătim sub-directoarele

date_mysql
de_citit
instalat
jurnal
restul
workbench

Mai departe, directorul restul va fi populat — de către noi! — cu sub-directoarele

connectors
1py este folosit pentru script-uri de către multe sisteme open-source, d.ex. de Blender. În cadrul
MySQL, programul MySQL Workbench foloseşte asemenea script-uri, vezi elipsa albastră din
Figura 1.47.

1
2 1 Instalarea SGBD-ului

documentation
excel
notifier
samples
utilities
visual_studio

La rândul său, directorul connectors va fi populat cu sub-directoarele

c
cpp
j
net
odbc
python

Fig. 1.1 Directoare pentru instalarea Custom

Directorul de_citit este opţional. În el aţi putea stoca fişiere cu notiţele dvs.
privind instalarea şi utilizarea lui mysql.
Putem ı̂ncepe instalarea. Lansăm ı̂n execuţie, printr-un dublu click, instalatorul
Windows [37] descărcat, mysql-installer-community-5.6.26.0.msi.
După ce bifăm faptul că am citit şi acceptat contractul de licenţă (elipsa albastră
din Figura 1.2), apăsăm butonul Next din fereastra curentă a instalatorului.
Optăm pentru tipul de instalare Custom, vezi Figura 1.3, ceea ce ne permite să
decidem care dintre componentele lui mysql vor fi instalate şi unde vor fi instalate.
Pentru a selecta componentele respective, folosim butoanele din elipsa roşie din
1 Instalarea SGBD-ului 3

Figura 1.4. Există şi o scurtătură pentru ceea ce avem de făcut, vezi elipsa verde din
Figura 1.4. Ea este discutată ı̂n tutorialul oficial [20].
Prima componentă este MySQL Server 5.6.26, vezi elipsa albastră din
Figura 1.5. Ignoraţi şirul X86 din titulatura componentei, pe care ı̂l vedeţi ı̂n poză:
el se datorează arhitecturii calculatorului meu şi poate fi diferit2 de ceea ce se
va afişa pe ecranul calculatorului dvs. Odată selectată componenta dorită din lista
Available Products, apăsaţi săgeata verde din elipsa roşie — ı̂n Figura 1.5
— pentru a trece componenta ı̂n lista din dreapta, Products/Features To Be
Installed. Bifaţi toate3 elementele din lista situată ı̂n elipsa albastră din Figura
1.6, apoi selectaţi titlul componentei din elipsa roşie din Figura 1.7. Apăsaţi bu-
tonul Advanced Options, din elipsa albastră — tot ı̂n Figura 1.7 —. Ni se va
cere să stabilim directorul de instalare, respectiv pe cel de date. Începem cu direc-
torul de instalare, apăsând butonul · · · din elipsa roşie din Figura 1.8. Directorul de
instalare, deja construit de noi, este C:\...\instalare_MySQL\instalat,
vezi Figura 1.9. Dacă instalatorul emite un avertisment — vezi elipsa albastră din
Figura 1.10 —, ı̂l ignorăm şi apăsăm butonul · · · din elipsa roşie pentru a alege di-
rectorul de date, ca ı̂n Figura 1.11. Odată inserate căile complete către directoarele
instalat, date_mysql, este posibil ca sistemul să emită un nou avertisment,
vezi Figura 1.12. Îl ignorăm şi pe acesta, apăsând butonul OK din elipsa roşie. În
acest moment, tot conţinutul care trebuie instalat pentru prima componentă a fost
transmis către instalator.
Pentru componenta MySQL Workbench 6.3.4 procedăm identic, vezi Fig-
urile 1.13 – 1.16.
Următoarele componente se instalează ı̂n sub-directoare ale directorului res-
tul.
Componenta MySQL Notifier 1.1.6:
directorul restul\notifier, Figura 1.17.
Componenta MySQL for Excel 1.3.4:
directorul restul\excel.
Componenta MySQL Fabric 1.5.4 & MySQL Utilities 1.5.4:
directorul restul\utilities.
Componenta MySQL for Visual Studio 1.2.3:
directorul restul\visual_studio, Figura 1.18.
Urmează componente — conectori — care se instalează ı̂n sub-directorul con-
nectors al directorului restul.
Componenta ODBC 5.3.4 — vezi [23] —:
directorul restul\connectors\odbc, Figura 1.19.
Componenta NET 6.9.6 — .NET, vezi [22] —:
directorul restul\connectors\net, Figura 1.20.
Componenta Python (3.4) 2.0.4:
directorul restul\connectors\python, Figura 1.21.

2 Conform [18], instalatorul Windows conţine şi mysql-ul pentru calculatoarele x64 [32].
3 Deşi instalăm ı̂ntreg mysql-ul, aceste bifări ne permit să vedem. . . ce anume instalăm!
4 1 Instalarea SGBD-ului

Componenta C 6.1.6:
directorul restul\connectors\c, Figura 1.22.
Componenta C++ 1.1.6 se instalează ı̂n directorul
restul\connectors\cpp.
Componenta J 5.1.36 — JDBC, vezi [11] — se instalează ı̂n directorul
restul\connectors\j.
Revenim la directorul restul.
Componenta MySQL Documentation 5.6.26:
directorul restul\documentation, Figura 1.23.
Aici se găsesc manualele lui mysql, ı̂n limba engleză.
Componenta Samples and Examples 5.6.26:
directorul restul\samples, Figura 1.24.
Aici se află două baze de date importante, şi anume Sakila şi World. În di-
rectorul restul\samples\Sample Databases\Sakila se găseşte fişierul
sakila.mwb. Dacă executaţi un dublu click cu butonul stâng al mouse-ului având
cursorul poziţionat pe iconiţa acestui fişier, el se va deschide ı̂n workbench —
vezi Figura 1.47 — sub forma unei model entitate – relaţie4 . De asemeni, apăsând
butonul din elipsa verde — tot ı̂n Figura 1.47 —, putem căuta ı̂n calculator orice
fişier *.mwb.
După ce am stabilit care sunt elementele sistemului mysql pe care dorim să le
instalăm — şi ne-am convins că mesajele de avertizare, vezi elipsele roşii din partea
superioară a Figurii 1.25, nu dezvăluie probleme nerezolvate! — putem comanda
execuţia instalării, ca ı̂n Figura 1.26.
Dacă totul este ı̂n regulă (Figurile 1.27, 1.28), ajungem la Figura 1.29: instalarea
sistemului mysql a fost finalizată!
Configurarea sistemului mysql — Figura 1.30 — ne impune să bifăm căsuţa
Show Advanced Options din Figura 1.31 şi să reţinem numărul portului [26]
de conectare la server: 3306.
Fereastra din Figura 1.32 ne cere o parolă pentru utilizatorul5 root. Lucrând pe
calculatorul personal, am folosit o parolă “slabă” — Figura 1.33—.
Serverul de baze de date va funcţiona ca un serviciu Windows [38], cu numele
MySQL56, vezi Figura 1.34. Bifând, dacă nu este bifată automat, căsuţa Start
the MySQL Server at System Startup, ne asigurăm că serverul por-
neşte odată cu calculatorul. În caz că dorim să pornim/oprim serverul ı̂n mod pro-
gramatic, putem utiliza un script asemănător celui folosit la sistemul tsql [16, p.
19].
Mai departe, alegem tipurile de jurnal6 care ne interesează — elipsele roşii din
Figura 1.35 — şi NU apăsăm butoanele din elipsele albastre din aceeaşi figură. În
câmpurile din elipsele albastre din Figura 1.36 scriem

C:\...\instalare_MySQL\jurnal\NumeDorit.err

4 În limba engleză, Entity-Relationship Model [9, 8].


5 În limba română, rădăcină. Terminologia este specifică sistemului de operare UNIX, unde root
ı̂l desemnează pe administratorul sistemului [29, p. 29].
6 În limba engleză, log.
1.1 Poze 5

C:\...\instalare_MySQL\jurnal\NumeDorit.log
C:\...\instalare_MySQL\jurnal\NumeDorit-slow.log
C:\...\instalare_MySQL\jurnal\NumeDorit.bin

Dacă totul este ı̂n regulă — Figurile 1.37 – 1.39 —, configurarea serverului de
baze de date s-a ı̂ncheiat, vezi Figura 1.40, şi acesta funcţionează. Testăm conectarea
la server apăsând butonul Check din Figura 1.41.
După configurarea bazelor de date “şcoală” — Figurile 1.42 – 1.45 —, bifând
căsuţa din elipsa albastră din Figura 1.46, ne asigurăm că va fi lansat ı̂n execuţie
clientul workbench de ı̂ndată ce apăsăm butonul Finish — elipsa roşie din
Figura 1.46 —.
Există două metode de a ne conecta la server via clientul7 MySQL Workbench
(pe scurt, workbench): fie clickând cu mouse-ul pe zona din elipsa roşie din Figura
1.48, fie clickând pe zona din elipsa roşie din Figura 1.49 — această din urmă
metodă ne permite să facem modificări ı̂n instanţa conexiunii, vezi elipsa albastră
din stânga figurii —.
Un fişier important al sistemului mysql este fişierul de configurare my.ini —
elipsa din mijlocul Figurii 1.49 —. Calea către el este
C:\...\instalare_MySQL\date_mysql.

1.1 Poze

7 Alt client pentru serverul MySQL este phpMyAdmin [25], folosit ı̂n sistemul XAMPP [34, 35].
6 1 Instalarea SGBD-ului

Fig. 1.2 Contractul de licenţă

Fig. 1.3 Tipul de instalare


1.1 Poze 7

Fig. 1.4 Componentele ce urmează a fi instalate

Fig. 1.5 Instalarea componentei MySQL Server 5.6.26


8 1 Instalarea SGBD-ului

Fig. 1.6 Elementele componentei MySQL Server 5.6.26

Fig. 1.7 Selectarea numelui componentei


1.1 Poze 9

Fig. 1.8 Fereastra Advanced Options

Fig. 1.9 Selectarea directorului


10 1 Instalarea SGBD-ului

Fig. 1.10 Fereastra Advanced Options

Fig. 1.11 Selectarea directorului


1.1 Poze 11

Fig. 1.12 Avertisment la recapitulare

Fig. 1.13 Instalarea componentei MySQL Workbench 6.3.4


12 1 Instalarea SGBD-ului

Fig. 1.14 Butonul Advanced Options

Fig. 1.15 Selectarea directorului


1.1 Poze 13

Fig. 1.16 Fereastră de avertisment: Warning

Fig. 1.17 Instalarea componentei MySQL Notifier 1.1.6


14 1 Instalarea SGBD-ului

Fig. 1.18 Instalarea componentei MySQL for Visual Studio 1.2.3

Fig. 1.19 Instalarea componentei ODBC 5.3.4


1.1 Poze 15

Fig. 1.20 Instalarea componentei NET 6.9.6

Fig. 1.21 Instalarea componentei Python (3.4) 2.0.4


16 1 Instalarea SGBD-ului

Fig. 1.22 Instalarea componentei C 6.1.6

Fig. 1.23 Instalarea componentei MySQL Documentation 5.6.26


1.1 Poze 17

Fig. 1.24 Elementele componentei Samples and Examples 5.6.26

Fig. 1.25 Recapitulare, avertismente


18 1 Instalarea SGBD-ului

Fig. 1.26 Începem execuţia!

Fig. 1.27 Butonul Show/Hide Details


1.1 Poze 19

Fig. 1.28 Jurnalul execuţiei/instalării

Fig. 1.29 Execuţia s-a ı̂ncheiat!


20 1 Instalarea SGBD-ului

Fig. 1.30 Configurarea componentelor instalate

Fig. 1.31 Butonul Show Advanced Options


1.1 Poze 21

Fig. 1.32 Parola utilizatorului root

Fig. 1.33 Stabilirea parolei


22 1 Instalarea SGBD-ului

Fig. 1.34 Serviciul Windows MySQL56

Fig. 1.35 Alegerea fişierelor de jurnal


1.1 Poze 23

Fig. 1.36 Căile fişierelor de jurnal

Fig. 1.37 Începem execuţia!


24 1 Instalarea SGBD-ului

Fig. 1.38 În timpul execuţiei

Fig. 1.39 Jurnalul execuţiei/configurării


1.1 Poze 25

Fig. 1.40 S-a ı̂ncheiat execuţia!

Fig. 1.41 Verificarea parolei utilizatorului root


26 1 Instalarea SGBD-ului

Fig. 1.42 Începem execuţia!

Fig. 1.43 În timpul execuţiei


1.1 Poze 27

Fig. 1.44 Execuţia/configurarea s-a ı̂ncheiat!

Fig. 1.45 Mai departe


28 1 Instalarea SGBD-ului

Fig. 1.46 Instalarea lui mysql s-a ı̂ncheiat!

Fig. 1.47 Fereastra principală a programului MySQL Workbench


1.1 Poze 29

Fig. 1.48 Prima formă a ferestrei de conectare la server

Fig. 1.49 A doua formă a ferestrei de conectare la server


Capitolul 2
Primele manevre cu mysql

Construim un director (folder) destinat viitoarelor programe SQL, C:\Pro


iecteleMele_MySQL. Acestea vor fi elaborate cu ajutorul SGBD-ului1 mysql
— Figura 2.1 —.

Fig. 2.1 Fereastra clientului workbench

Butonul din elipsa roşie situată ı̂n partea dreaptă a Figurii 2.1 ne permite să mo-
dificăm setările editorului de text (culori, font-uri, etc). Panourile2 Navigator,
Output şi SQLAdditions pot fi activate/dezactivate prin meniul View din

1 Folosim, ı̂n mod liber, termenul SGBD pentru a ne referi la oricare dintre părţile sistemului client-
server [31].
2 În limba engleză, panel (sing.).

31
32 2 Primele manevre cu mysql

elipsa albastră. Altă metodă de a opera cu panourile este să apelaţi la butoanele
grupate ı̂n jurul elipsei roşii din Figura 2.6.
Folosind butonul din elipsa roşie din partea stânga a Figurii 2.1, deschidem fe-
reastra unei interogări — Figura 2.3 —.
diverse_comenzi_1.sql
1 SELECT v e r s i o n () AS ‘versiune‘, -- versiunea serverului
2 c u r r e n t d a t e () AS ‘data curenta‘,
3 now() AS ‘momentul curent‘,
4 u s e r () AS ‘utilizator‘;
5 SHOW DATABASES;
6 SELECT h o s t ,
7 u s e r FROM mysql. u s e r ; /* numele calificat: numele-bazei.ց
(cont.) numele-tabelului*/

8 SELECT d a t a b a s e ();/* la ce baza sunt conectat */

Manualul on-line al sistemului mysql, ce include comenzile SQL disponibile,


poate fi consultat la adresa [19].
Comentariile, esenţiale ı̂ntr-un program complicat, se fac fie pe câte un rând,
folosind simbolul “--” — vezi rândul 1 al script-ului —, fie ı̂ntr-un paragraf, cu
ajutorul delimitatorilor /*, */.
Spre deosebire de tsql [16, p. 18], nu folosim comanda GO. Pentru finalul
instrucţiunilor trebuie utilizat simbolul “;”.
Codul poate fi selectat şi apoi executat pe porţiuni. Execuţia se comandă cu bu-
tonul din elipsa roşie din Figura 2.3. Rezultatul unei asemenea execuţii se poate ob-
serva ı̂n Figura 2.4. Execuţia este jurnalizată ı̂n fereastra din panoul Output. Pen-
tru a şterge conţinutul acesteia, ne poziţionăm cu cursorul pe oricare din rândurile
ferestrei, ı̂l selectăm şi, apăsând butonul drept al mouse-ului, alegem din meniul
(contextual) care se formează elementul Clear, vezi elipsa roşie din Figura 2.5.
Ferestrele panoului stâng al workbench-ului pot fi maximizate/minimizate cu
butonul din elipsele albastre din Figura 2.2.
În continuare, construiesc o bază de date — sau schemă ı̂n mysql, vezi [36, p.
630], [30] — ı̂n care să stochez numărul cărţilor pe care le inserez ı̂ntr-o anumită zi
ı̂n programul Biblioteca [2]. Aceste informaţii ne permit să construim serii cronolo-
gice [28, p. 337 şi urm.] interesante.
inserare_de_carti.sql
1 /*****************************
2 stochez datele cand inserez carti
3 ******************************/
4 CREATE DATABASE IF NOT EXISTS ‘intro_carti‘;
5 USE ‘intro_carti‘;
6 /* testez folosirea bazei corecte */
7 SELECT d a t a b a s e ();
8

9 USE ‘intro_carti‘;
10 CREATE TABLE IF NOT EXISTS
11 ‘insertii‘(‘contor‘ INT NOT NULL AUTO INCREMENT PRIMARY KEY,
12 ‘momentul‘ DATETIME NOT NULL,
13 ‘numarul_de_carti‘ INT NULL)
2.1 Alte poze 33

14 ENGINE = InnoDB; -- motorul este optional (InnoDB e default...)


15 /* verificam numele coloanelor, tipul datelor, etc */
16 DESCRIBE ‘intro_carti‘.‘insertii‘;
17

18 USE ‘intro_carti‘;
19 INSERT INTO ‘insertii‘(‘momentul‘,‘numarul_de_carti‘)
20 VALUES(now(),2);
21 INSERT INTO ‘insertii‘(‘momentul‘,‘numarul_de_carti‘)
22 VALUES(now(),12);
23 /*
24 putem evita scrierea numelor de coloane punand
25 NULL la valorile cu auto-increment
26 (vezi http://dev.mysql.com/doc/refman/5.6/en/example-ց
(cont.) foreign-keys.html)

27 */
28 INSERT INTO ‘insertii‘ VALUES(NULL,now(),4);
29 SELECT * FROM ‘insertii‘;
30 SELECT LAST INSERT ID(); /* sa vedem ultima valoare a auto-ց
(cont.) incrementului */

31 INSERT INTO ‘insertii‘ VALUES(NULL,now(),25);

Fişierele noii baze de date vor fi stocate ı̂n directorul — construit de mysql —
instalare_MySQL\date_mysql\data,
vezi Figura 2.7. Folosind butonul de actualizare/sincronizare a conţinutului ferestre-
lor din panoul stâng al workbench-ului — elipsa roşie din Figura 2.8 —, facem
vizibile detaliile bazei de date intro_carti, vezi elipsa albastră din aceeaşi ima-
gine.
Să presupunem că avem deja ı̂n SGBD o bază de date cu numeroase informaţii
importante. Dorim să o exportăm3 pentru a o putea folosi indepedent de mysql.
Vom folosi, ı̂n acest scop, butonul Data Export din meniul Server — elipsa
roşie din Figura 2.9 —. În fereastra de export a datelor, vezi Figura 2.10, căsuţele,
respectiv butonul din elipsele albastre reprezintă diverse opţiuni de export pen-
tru această bază de date. Odată hotărâte aceste variante, apăsăm butonul Start
Export din elipsa roşie din josul figurii. Jurnalul de execuţie, respectiv fişierele
rezultate ı̂n urma exportului pot fi observate ı̂n Figurile 2.11, 2.12.
Fereastra de lucru a workbench-ului se poate ı̂nchide — vom reveni la Figura
1.47 — fie apăsând butonul Close Connection Tab din meniul File din
Figura 2.13, fie utilizând butonul x din elipsa albastră situată ı̂n aceeaşi figură.

2.1 Alte poze

3 În limba engleză, database dump [10].


34 2 Primele manevre cu mysql

Fig. 2.2 Butonul de vizualizare a ferestrelor din panoul stâng

Fig. 2.3 Butonul de execuţie a interogării


2.1 Alte poze 35

Fig. 2.4 Rezultatul interogării

Fig. 2.5 Ştergerea rândurilor din fereastra Output


36 2 Primele manevre cu mysql

Fig. 2.6 Butonul de minimizare a panoului inferior

Fig. 2.7 Directorul bazei de date intro_carti


2.1 Alte poze 37

Fig. 2.8 Butonul de actualizare/sincronizare a conţinutului ferestrei din panoul stâng

Fig. 2.9 Butonul Data Export


38 2 Primele manevre cu mysql

Fig. 2.10 Fereastra de export a datelor

Fig. 2.11 Jurnalul exportului de date


2.2 Injecţii de date 39

Fig. 2.12 Rezultatul exportului: fişierele dump

Fig. 2.13 Închiderea ferestrei de lucru

2.2 Injecţii de date

Revenim la programul Biblioteca [2], cu ajutorul căruia am catalogat peste 500


de cărţi ı̂n format electronic — tratate de matematică, informatică etc —. Un fişier
*.txt cu datele ı̂n cauză poate fi descărcat de la adresa [4].
40 2 Primele manevre cu mysql

Codurile listate ı̂n continuare ı̂mi permit să inserez aceste informaţii ı̂ntr-o bază
de date mysql . Încep cu construcţia bazei de date.
baza_biblioteca.sql
1 /**********************
2 Lista cartilor din programul Biblioteca_2012
3 ***********************/
4 CREATE DATABASE IF NOT EXISTS ‘biblioteca_mea‘;
5 USE ‘biblioteca_mea‘;
6 CREATE TABLE IF NOT EXISTS
7 ‘cartile‘(‘contor‘ INT NOT NULL AUTO INCREMENT PRIMARY KEY,
8 ‘fisierul_sursa‘ CHAR(10) NOT NULL DEFAULT ’000000.txt’,
9 ‘domeniul‘ ENUM(’0’,’1’,’2’) NOT NULL DEFAULT ’0’,
10 ‘numele‘ VARCHAR(100) NOT NULL,
11 ‘prenumele‘ CHAR(1) NOT NULL,
12 ‘titlul‘ VARCHAR(300) NOT NULL,
13 ‘editura‘ VARCHAR(100),
14 ‘orasul‘ VARCHAR(100),
15 ‘anul‘ CHAR(4) DEFAULT ’1900’,
16 ‘comentarii‘ VARCHAR(400) NOT NULL)
17 ENGINE = InnoDB;
18 /* verificam numele coloanelor, tipul datelor, etc */
19 DESCRIBE ‘biblioteca_mea‘.‘cartile‘;

Deşi folosirea valorii NULL este permisă la coloana cu AUTO_INCREMENT, vezi


[1], sistemul va emite avertismente ı̂n fereastra din panoul Output la executarea
codului următor — datele vor fi ı̂nsă ı̂ncărcate fără probleme —.
incarcarea_datelor.sql
1 USE biblioteca_mea;
2 /*********************
3 Vezi postarea lui "John Best"
4 de pe "http://dev.mysql.com/doc/refman/5.6/en/loading-tables.ց
(cont.) html"

5 si informatia despre utilizarea lui NULL la AUTO_INCREMENT din


6 "http://dev.mysql.com/doc/refman/5.6/en/example-auto-increment.ց
(cont.) html"

7 **********************/
8 LOAD DATA LOCAL INFILE ’C:/Users/Octavian/Desktop/biblioteca_bd.ց
(cont.) txt’

9 INTO TABLE ‘biblioteca_mea‘.‘cartile‘


10 FIELDS TERMINATED BY ’,’
11 LINES TERMINATED BY ’\r\n’;
12

13 /* Am carti de la editura Springer? */


14 SELECT * FROM ‘biblioteca_mea‘.‘cartile‘
15 WHERE ‘editura‘ LIKE ’Springe%’;

În cazul de faţă, avertismentele pot fi evitate căci nu avem neapărat nevoie
de introducerea unui contor ı̂n tabelul cartile. Aceasta pentru că programul
Biblioteca asigură unicitatea rândurilor de date4 cu ajutorul valorilor din coloana

4 În limba engleză, data rows.


2.2 Injecţii de date 41

fisierul_sursa. Totuşi, trebuie adesea să introducem volume mari de date


fără rânduri unice ı̂n mysql iar utilizarea lui NULL ne scuteşte de generarea ı̂n
afara SGBD-ului a valorilor “automate”.
Pentru a colecta datele [4] din catalogul programului Biblioteca, am utilizat un
script Perl (pl) [24].
preparator_biblioteca.pl
1 ################################
2 # Programul biblioteca_2012 salveaza intrarile in fisiere cu ց
(cont.) urmatorul continut:
3 # (rand gol)
4 # ++++++++++++++++++++++++++++++++++++++++
5 # O noua inregistrare
6 # ++++++++++++++++++++++++++++++++++++++++
7 # --> Domeniu: 0
8 # --> Nume: Bass
9 # --> Prenume: M
10 # --> Titlul: Handbook of Optics Volume III Classical ց
(cont.) Optics, Vision...

11 # --> Editura: McGraw-Hill, INC.


12 # --> Orasul: New York
13 # --> Anul: 2000
14 # --> Comentarii: setul_de_carti_2015, 2015_Bass_M_3.pdf
15 # ++++++++++++++++++++++++++++++++++++++++
16 # Finalul inregistrarii
17 # ++++++++++++++++++++++++++++++++++++++++
18 # Script-ul urmator citeste toate aceste fisiere si extrage ց
(cont.) datele.

19 # Datele sunt separate prin virgule.


20 # Pentru a nu se produce deformari ale datelor (daca, d.ex., ց
(cont.) titlul unei carti are virgule...),

21 # in fiecare atom de date vor fi cautate virgulele si inlocuite ց

(cont.) cu ";", respectiv "NUMELE FISIERULUI "

22 # (pentru virgula de la "-->Comentarii").


23 # Rezultatul va fi salvat in "biblioteca_bd.txt", pe Desktop,
24 # in care fiecare rand este un sir de date (continutul unui ց
(cont.) fisier).

25 ################################
26 # Fisierul obtinut va fi inserat intr-o baza de date MySQL.
27 ################################
28

29 u s e 5.010;
30 use s t r i c t ;
31 u s e warnings;
32

33 my $fisierul_cu_indexul_fisierelor = ’C:/Biblioteca_mea_2012/ց
(cont.) Catalog/catalog_sortat.txt’;

34 my $director_fisiere = ’C:/Biblioteca_mea_2012/’;
35 my $numar_de_fisiere = 0; #contorizam randurile din fisierul-cu-ց
(cont.) indexul-fisierelor

36 my @indexul_fisierelor = (); #randurile din fisierul-cu-indexul-ց


(cont.) fisierelor

37 my $nume_fisier_curent = undef;
42 2 Primele manevre cu mysql

38

39 ###citirea indexului:
40 my $fisier_index = undef;
41 open($fisier_index,’<: e n c o d i n g (UTF-8)’,ց
(cont.) $fisierul_cu_indexul_fisierelor) or d i e ("Eroare la ց
(cont.) index: $!");

42 w h i l e (my $randul_curent_index = <$fisier_index>){


43 chomp $randul_curent_index;
44 $indexul_fisierelor[$numar_de_fisiere++] = $randul_curent_indexց
(cont.) ;

45 #forma intrarilor in fisierul-index este: 0HG234.txt (10 litereց


(cont.) )

46 i f (10!= l e n g t h ($randul_curent_index)){
47 d i e ("Probleme cu randurile din fisierul-de-index! Eroare ց
(cont.) la randul: $numar_de_fisiere");

48 }
49 }
50 c l o s e ($fisier_index);
51

52 ###prelucrarea fisierelor din index:


53 my $continutul_bazei_de_date = ’’;
54 my @continut_fisier_curent = ();
55 my $numarul_de_randuri = 0;
56 my $fisier = undef;
57 my $randul_curent = undef;
58 f o r (my $i = 0; $i <= $#indexul_fisierelor; $i++){
59 #construim calea absoluta la fisierul curent:
60 $nume_fisier_curent = $director_fisiere . $indexul_fisierelorց
(cont.) [$i];

61
62 #preluarea fisierului curent:
63 @continut_fisier_curent = ();
64 $numarul_de_randuri = 0;
65 $fisier = undef;
66 open($fisier,’<: e n c o d i n g (UTF-8)’,$nume_fisier_curent) or d i e (ց
(cont.) "Eroare la deschiderea fisierului $indexul_fisierelor[$iց

(cont.) ]");

67 w h i l e ($randul_curent = <$fisier>){
68 chomp $randul_curent;
69 $continut_fisier_curent[$numarul_de_randuri++] = ց
(cont.) $randul_curent;

70 }
71 #fisierele incep cu un rand gol si au 15 randuri (1 gol + 14 ց
(cont.) scrise)

72 i f (15 != $numarul_de_randuri){
73 d i e ("Probleme cu randurile din fisierul curent! Eroare la ց
(cont.) fisierul $indexul_fisierelor[$i]");

74 }
75 c l o s e ($fisier);
76

77 #preluarea datelor din fisierul curent:


78 my @obtinerea_domeniului = s p l i t ("--> Domeniu: ",ց
(cont.) $continut_fisier_curent[4]);
2.2 Injecţii de date 43

79 my @obtinerea_numelui = s p l i t ("--> Nume: ",ց


(cont.) $continut_fisier_curent[5]);

80 my @obtinerea_prenumelui = s p l i t ("--> Prenume: ",ց


(cont.) $continut_fisier_curent[6]);

81 my @obtinerea_titlului = s p l i t ("--> Titlul: ",ց


(cont.) $continut_fisier_curent[7]);

82 my @obtinerea_editurii = s p l i t ("--> Editura: ",ց


(cont.) $continut_fisier_curent[8]);

83 my @obtinerea_orasului = s p l i t ("--> Orasul: ",ց


(cont.) $continut_fisier_curent[9]);

84 my @obtinerea_anului = s p l i t ("--> Anul: ",ց


(cont.) $continut_fisier_curent[10]);

85 my @obtinerea_comentariilor = s p l i t ("--> Comentarii: ",ց


(cont.) $continut_fisier_curent[11]);

86

87 #prelucrarea datelor:
88 #primele doua coloane se folosesc pentru a putea insera ց
(cont.) rezultatul intr-o baza de date mysql:

89 $continutul_bazei_de_date .= ’NULL,’.$indexul_fisierelor[$i].’ց
(cont.) ,’;

90 #domeniul: (adaug o virgula la final)


91 $continutul_bazei_de_date .= curatare_date(ց
(cont.) $obtinerea_domeniului[1],";").’,’;

92 #numele: (adaug o virgula la final)


93 $continutul_bazei_de_date .= curatare_date($obtinerea_numeluiց
(cont.) [1],";").’,’;

94 #prenumele: (adaug o virgula la final)


95 $continutul_bazei_de_date .= curatare_date(ց
(cont.) $obtinerea_prenumelui[1],";").’,’;

96 #titlul: (adaug o virgula la final)


97 $continutul_bazei_de_date .= curatare_date($obtinerea_titluluiց
(cont.) [1],";").’,’;

98 #editura: (adaug o virgula la final)


99 $continutul_bazei_de_date .= curatare_date($obtinerea_edituriiց
(cont.) [1],";").’,’;

100 #orasul: (adaug o virgula la final)


101 $continutul_bazei_de_date .= curatare_date($obtinerea_orasuluiց
(cont.) [1],";").’,’;

102 #anul: (adaug o virgula la final)


103 $continutul_bazei_de_date .= curatare_date($obtinerea_anuluiց
(cont.) [1],";").’,’;

104 #comentariile: (NU adaug o virgula la final)


105 $continutul_bazei_de_date .= curatare_date(ց
(cont.) $obtinerea_comentariilor[1],"NUMELE FISIERULUI ");

106

107 #randul nou:


108 $continutul_bazei_de_date .= "\n";
109 }#final pt. for my $i...
110

111 #salvarea bazei de date, in format CSV:


112 my $fisierul_bazei_de_date = ’C:/Users/Octavian/Desktop/ց
(cont.) biblioteca_bd.txt’;

113 $fisier = undef;


44 2 Primele manevre cu mysql

114 open($fisier,’>: e n c o d i n g (UTF-8)’,$fisierul_bazei_de_date) or d i e ց


(cont.) ("Eroare la deschiderea fisierului \[ց

(cont.) $fisierul_bazei_de_date\]");

115 p r i n t $fisier ($continutul_bazei_de_date);


116 c l o s e ($fisier);
117

118 sub curatare_date {


119 ###############################
120 # -- muncitor : aici preluam expresia de prelucrat;
121 # -- expresie : aici preluam expresia ce va inlocui, in ց

(cont.) muncitor,

122 # semnele ",";


123 ###############################
124 my $muncitor = $_[0];
125 my $expresie = $_[1];
126 chomp $muncitor;
127 $muncitor =∼ s/,/$expresie/g;
128 r e t u r n $muncitor;
129 }
Mai departe, vom folosi componenta [6] mysql – excel pentru inserarea
aceloraşi informaţii ı̂n baza de date biblioteca_mea. Utilizez Microsoft
Office Excel 2007 (pe scurt, excel). Chestiunea cu datele5 NULL necesită
modificarea definiţiei tabelului cartile.
tabelul_cartile2.sql
1 USE ‘biblioteca_mea‘;
2 CREATE TABLE IF NOT EXISTS
3 ‘cartile2‘(‘contor‘ VARCHAR(4) DEFAULT ’0’, -- date nullabile!
4 ‘fisierul_sursa‘ CHAR(10) NOT NULL DEFAULT ’000000.txt’,
5 ‘domeniul‘ CHAR(1) NOT NULL DEFAULT ’0’,
6 ‘numele‘ VARCHAR(100) NOT NULL,
7 ‘prenumele‘ CHAR(1) NOT NULL,
8 ‘titlul‘ VARCHAR(300) NOT NULL,
9 ‘editura‘ VARCHAR(100),
10 ‘orasul‘ VARCHAR(100),
11 ‘anul‘ CHAR(4) DEFAULT ’1900’,
12 ‘comentarii‘ VARCHAR(400) NOT NULL)
13 ENGINE = InnoDB;
14 /* verificam numele coloanelor, tipul datelor, etc */
15 DESCRIBE ‘biblioteca_mea‘.‘cartile2‘;
Folosim datele [3], ı̂n format CSV6 [7].
Deschidem ı̂n excel fişierul CSV descărcat şi, utilizând butonul din elipsa roşie
din Figura 2.14, trecem ı̂n fereastra Data. Cu ajutorul butonului pentru componen-
tă, vezi elipsa roşie din Figura 2.15, afişăm panoul componentei. Din acesta, alegem
secţiunea Open a MySQL Connection — elipsele roşii din Figurile 2.16, 2.17
—. Clickăm obiectul din elipsa roşie din Figura 2.18 după care selectăm schema
biblioteca_mea din Figura 2.19 şi apăsăm butonul Next, situat ı̂n elipsa roşie
din aceeaşi imagine.
5 Vezi discuţia de la pagina 40.
6 Un fişier *.txt bine organizat poate fi salvat ca *.csv fără pierderea structurii datelor.
2.3 Poze (din nou. . . ) 45

Mai departe, optăm pentru tabelul carti2, vezi Figura 2.20, şi, din foaia de lu-
cru, selectăm rândurile cu date pe care dorim să le inserăm ı̂n sistemul mysql.
Apoi, apăsăm butonul Append Excel Data to Table — elipsa roşie din
colţul dreapta-jos al Figurii 2.21 —.
Am ajuns la Figura 2.22 care conţine fereastra pop-up pentru maparea7 coloanelor
de date. Ne poziţionăm cu cursorul pe titlul (verde) al uneia dintre coloanele din
rândul de sus — aici se găsesc coloanele selectate de noi din foaia de lucru;
numărul lor trebuie să ı̂i corespundă celui al coloanelor tabelului din mysql! —
şi, ţinând apăsat butonul stâng al mouse-ului, urmăm săgeţile roşii din imagine.
Folosim bara de derulare8 orizontală — din elipsa albastră — pentru a ajunge la
toate coloanele selectate din foaia de lucru. Deoarece excel-ul a făcut, ı̂n mod
automat, nişte mapări, mapările noastre trebuie confirmate prin apăsarea butonului
Yes din Figura 2.23 — la fiecare mapare! —. După ce ne asigurăm că mapările sunt
corecte, apăsăm butonul Append, vezi Figura 2.24. Finalul execuţiei este anunţat
de fereastra pop-up din Figura 2.25. Folosind butonul Show Details din elipsa
albastră din Figura 2.25 putem afla, d.ex., câte rânduri de date au fost inserate ı̂n
tabelul cartile2. Injecţia de date s-a ı̂ncheiat.

2.3 Poze (din nou. . . )

Fig. 2.14 Butonul ferestrei Data

7 În limba engleză, mapping. Vezi [13].


8 În limba engleză, scrollbar.
46 2 Primele manevre cu mysql

Fig. 2.15 Butonul componentei MySQL for Excel

Fig. 2.16 Panoul componentei atunci când fereastra principală nu este maximalizată
2.3 Poze (din nou. . . ) 47

Fig. 2.17 Panoul componentei atunci când fereastra principală este maximalizată

Fig. 2.18 Alegerea unui obiect conexiune


48 2 Primele manevre cu mysql

Fig. 2.19 Alegerea bazei de date

Fig. 2.20 Alegerea tabelului


2.3 Poze (din nou. . . ) 49

Fig. 2.21 Selectarea datelor din foaia de lucru

Fig. 2.22 Maparea coloanelor de date


50 2 Primele manevre cu mysql

Fig. 2.23 Acceptăm noua mapare!

Fig. 2.24 Butonul de inserare a datelor


2.3 Poze (din nou. . . ) 51

Fig. 2.25 Rezultatul execuţiei


Capitolul 3
Diverse proiecte mysql

3.1 O bază wp

Program:> Să presupunem că ne-am instalat un blog [5], folosind soluţia WordPress1 (pe
scurt, wp). Acesta utilizează o bază de date mysql ı̂n care ı̂şi stochează conţinu-
tul: paginile meniului principal, postările, comentariile, etc. Chiar de la instalarea
blogului, baza de date — numită, de obicei, wp_NumeDorit — conţine mode-
le de pagini, de postări şi de mesaje. Folosind SGBD-ul phpMyAdmin, facem un
dump al acestei baze de date şi obţinem codul următor, care ı̂i defineşte structura.
Codul bazei de date wp poate fi descărcat de la adresa [40].
baza_wp_1.sql
1 /*******************************
2 Copyright 2015: contributors to WordPress
3 ********************************/
4

5 CREATE DATABASE IF NOT EXISTS ‘baza_de_date_wordpress_studiu‘


6 DEFAULT CHARACTER SET=latin1
7 COLLATE=latin1_swedish_ci;
8

9 USE ‘baza_de_date_wordpress_studiu‘;
10

11 --
12 -- Table structure for table ‘wp_commentmeta‘
13 --
14 CREATE TABLE IF NOT EXISTS ‘wp_commentmeta‘ (
15 ‘meta_id‘ b i g i n t (20) u n s i g n e d NOT NULL AUTO INCREMENT,
16 ‘comment_id‘ b i g i n t (20) u n s i g n e d NOT NULL DEFAULT ’0’,
17 ‘meta_key‘ v a r c h a r(255) COLLATE utf8mb4_unicode_ci DEFAULT ց
(cont.) NULL,

18 ‘meta_value‘ l o n g t e x t COLLATE utf8mb4_unicode_ci,


19 PRIMARY KEY (‘meta_id‘),

1 Varianta 4.3, revizia 33553, din trunk.

53
54 3 Diverse proiecte mysql

20 KEY ‘comment_id‘ (‘comment_id‘),


21 KEY ‘meta_key‘ (‘meta_key‘(191))
22 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=ց
(cont.) utf8mb4_unicode_ci AUTO INCREMENT=1;

23
24 --
25 -- Table structure for table ‘wp_comments‘
26 --
27 CREATE TABLE IF NOT EXISTS ‘wp_comments‘ (
28 ‘comment_ID‘ b i g i n t (20) u n s i g n e d NOT NULL AUTO INCREMENT,
29 ‘comment_post_ID‘ b i g i n t (20) u n s i g n e d NOT NULL DEFAULT ’0’,
30 ‘comment_author‘ t i n y t e x t COLLATE utf8mb4_unicode_ci NOT NULL,
31 ‘comment_author_email‘ v a r c h a r(100) COLLATE utf8mb4_unicode_ciց
(cont.) NOT NULL DEFAULT ’’,

32 ‘comment_author_url‘ v a r c h a r(200) COLLATE utf8mb4_unicode_ci ց


(cont.)NOT NULL DEFAULT ’’,

33 ‘comment_author_IP‘ v a r c h a r(100) COLLATE utf8mb4_unicode_ci ց


(cont.)NOT NULL DEFAULT ’’,

34 ‘comment_date‘ d a t e t i m e NOT NULL DEFAULT ’0000-00-00 00:00:00’ց


(cont.) ,

35 ‘comment_date_gmt‘ d a t e t i m e NOT NULL DEFAULT ’0000-00-00 ց


(cont.) 00:00:00’,

36 ‘comment_content‘ t e x t COLLATE utf8mb4_unicode_ci NOT NULL,


37 ‘comment_karma‘ i n t (11) NOT NULL DEFAULT ’0’,
38 ‘comment_approved‘ v a r c h a r(20) COLLATE utf8mb4_unicode_ci NOT ց
(cont.) NULL DEFAULT ’1’,

39 ‘comment_agent‘ v a r c h a r(255) COLLATE utf8mb4_unicode_ci NOT ց


(cont.) NULL DEFAULT ’’,

40 ‘comment_type‘ v a r c h a r(20) COLLATE utf8mb4_unicode_ci NOT NULLց


(cont.) DEFAULT ’’,
41 ‘comment_parent‘ b i g i n t (20) u n s i g n e d NOT NULL DEFAULT ’0’,
42 ‘user_id‘ b i g i n t (20) u n s i g n e d NOT NULL DEFAULT ’0’,
43 PRIMARY KEY (‘comment_ID‘),
44 KEY ‘comment_post_ID‘ (‘comment_post_ID‘),
45 KEY ‘comment_approved_date_gmt‘ (‘comment_approved‘,‘ց
(cont.) comment_date_gmt‘),

46 KEY ‘comment_date_gmt‘ (‘comment_date_gmt‘),


47 KEY ‘comment_parent‘ (‘comment_parent‘),
48 KEY ‘comment_author_email‘ (‘comment_author_email‘(10))
49 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=ց
(cont.) utf8mb4_unicode_ci AUTO INCREMENT=2;

50

51 --
52 -- Table structure for table ‘wp_links‘
53 --
54 CREATE TABLE IF NOT EXISTS ‘wp_links‘ (
55 ‘link_id‘ b i g i n t (20) u n s i g n e d NOT NULL AUTO INCREMENT,
56 ‘link_url‘ v a r c h a r(255) COLLATE utf8mb4_unicode_ci NOT NULL ց
(cont.) DEFAULT ’’,

57 ‘link_name‘ v a r c h a r(255) COLLATE utf8mb4_unicode_ci NOT NULL ց


(cont.) DEFAULT ’’,

58 ‘link_image‘ v a r c h a r(255) COLLATE utf8mb4_unicode_ci NOT NULL ց


(cont.) DEFAULT ’’,
3.1 O bază wp 55

59 ‘link_target‘ v a r c h a r(25) COLLATE utf8mb4_unicode_ci NOT NULL ց


(cont.) DEFAULT ’’,

60 ‘link_description‘ v a r c h a r(255) COLLATE utf8mb4_unicode_ci NOTց


(cont.) NULL DEFAULT ’’,

61 ‘link_visible‘ v a r c h a r(20) COLLATE utf8mb4_unicode_ci NOT NULLց


(cont.) DEFAULT ’Y’,

62 ‘link_owner‘ b i g i n t (20) u n s i g n e d NOT NULL DEFAULT ’1’,


63 ‘link_rating‘ i n t (11) NOT NULL DEFAULT ’0’,
64 ‘link_updated‘ d a t e t i m e NOT NULL DEFAULT ’0000-00-00 00:00:00’ց
(cont.) ,

65 ‘link_rel‘ v a r c h a r(255) COLLATE utf8mb4_unicode_ci NOT NULL ց


(cont.) DEFAULT ’’,

66 ‘link_notes‘ mediumtext COLLATE utf8mb4_unicode_ci NOT NULL,


67 ‘link_rss‘ v a r c h a r(255) COLLATE utf8mb4_unicode_ci NOT NULL ց
(cont.) DEFAULT ’’,

68 PRIMARY KEY (‘link_id‘),


69 KEY ‘link_visible‘ (‘link_visible‘)
70 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=ց
(cont.) utf8mb4_unicode_ci AUTO INCREMENT=1;

71

72 --
73 -- Table structure for table ‘wp_options‘
74 --
75 CREATE TABLE IF NOT EXISTS ‘wp_options‘ (
76 ‘option_id‘ b i g i n t (20) u n s i g n e d NOT NULL AUTO INCREMENT,
77 ‘option_name‘ v a r c h a r(64) COLLATE utf8mb4_unicode_ci NOT NULL ց

(cont.) DEFAULT ’’,

78 ‘option_value‘ l o n g t e x t COLLATE utf8mb4_unicode_ci NOT NULL,


79 ‘autoload‘ v a r c h a r(20) COLLATE utf8mb4_unicode_ci NOT NULL ց
(cont.) DEFAULT ’yes’,
80 PRIMARY KEY (‘option_id‘),
81 UNIQUE KEY ‘option_name‘ (‘option_name‘)
82 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=ց
(cont.) utf8mb4_unicode_ci AUTO INCREMENT=141;

83

84 --
85 -- Table structure for table ‘wp_postmeta‘
86 --
87 CREATE TABLE IF NOT EXISTS ‘wp_postmeta‘ (
88 ‘meta_id‘ b i g i n t (20) u n s i g n e d NOT NULL AUTO INCREMENT,
89 ‘post_id‘ b i g i n t (20) u n s i g n e d NOT NULL DEFAULT ’0’,
90 ‘meta_key‘ v a r c h a r(255) COLLATE utf8mb4_unicode_ci DEFAULT ց

(cont.) NULL,

91 ‘meta_value‘ l o n g t e x t COLLATE utf8mb4_unicode_ci,


92 PRIMARY KEY (‘meta_id‘),
93 KEY ‘post_id‘ (‘post_id‘),
94 KEY ‘meta_key‘ (‘meta_key‘(191))
95 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=ց
(cont.) utf8mb4_unicode_ci AUTO INCREMENT=22;

96

97 --
98 -- Table structure for table ‘wp_posts‘
99 --
100 CREATE TABLE IF NOT EXISTS ‘wp_posts‘ (
56 3 Diverse proiecte mysql

101 ‘ID‘ b i g i n t (20) u n s i g n e d NOT NULL AUTO INCREMENT,


102 ‘post_author‘ b i g i n t (20) u n s i g n e d NOT NULL DEFAULT ’0’,
103 ‘post_date‘ d a t e t i m e NOT NULL DEFAULT ’0000-00-00 00:00:00’,
104 ‘post_date_gmt‘ d a t e t i m e NOT NULL DEFAULT ’0000-00-00 00:00:00ց
(cont.) ’,
105 ‘post_content‘ l o n g t e x t COLLATE utf8mb4_unicode_ci NOT NULL,
106 ‘post_title‘ t e x t COLLATE utf8mb4_unicode_ci NOT NULL,
107 ‘post_excerpt‘ t e x t COLLATE utf8mb4_unicode_ci NOT NULL,
108 ‘post_status‘ v a r c h a r(20) COLLATE utf8mb4_unicode_ci NOT NULL ց
(cont.) DEFAULT ’publish’,

109 ‘comment_status‘ v a r c h a r(20) COLLATE utf8mb4_unicode_ci NOT ց


(cont.) NULL DEFAULT ’open’,

110 ‘ping_status‘ v a r c h a r(20) COLLATE utf8mb4_unicode_ci NOT NULL ց


(cont.) DEFAULT ’open’,

111 ‘post_password‘ v a r c h a r(20) COLLATE utf8mb4_unicode_ci NOT ց


(cont.) NULL DEFAULT ’’,

112 ‘post_name‘ v a r c h a r(200) COLLATE utf8mb4_unicode_ci NOT NULL ց


(cont.) DEFAULT ’’,

113 ‘to_ping‘ t e x t COLLATE utf8mb4_unicode_ci NOT NULL,


114 ‘pinged‘ t e x t COLLATE utf8mb4_unicode_ci NOT NULL,
115 ‘post_modified‘ d a t e t i m e NOT NULL DEFAULT ’0000-00-00 00:00:00ց
(cont.) ’,

116 ‘post_modified_gmt‘ d a t e t i m e NOT NULL DEFAULT ’0000-00-00 ց


(cont.) 00:00:00’,

117 ‘post_content_filtered‘ l o n g t e x t COLLATE utf8mb4_unicode_ci ց


(cont.)NOT NULL,

118 ‘post_parent‘ b i g i n t (20) u n s i g n e d NOT NULL DEFAULT ’0’,


119 ‘guid‘ v a r c h a r(255) COLLATE utf8mb4_unicode_ci NOT NULL ց
(cont.) DEFAULT ’’,

120 ‘menu_order‘ i n t (11) NOT NULL DEFAULT ’0’,


121 ‘post_type‘ v a r c h a r(20) COLLATE utf8mb4_unicode_ci NOT NULL ց
(cont.) DEFAULT ’post’,

122 ‘post_mime_type‘ v a r c h a r(100) COLLATE utf8mb4_unicode_ci NOT ց


(cont.) NULL DEFAULT ’’,

123 ‘comment_count‘ b i g i n t (20) NOT NULL DEFAULT ’0’,


124 PRIMARY KEY (‘ID‘),
125 KEY ‘post_name‘ (‘post_name‘(191)),
126 KEY ‘type_status_date‘ (‘post_type‘,‘post_status‘,‘post_dateց
(cont.) ‘,‘ID‘),

127 KEY ‘post_parent‘ (‘post_parent‘),


128 KEY ‘post_author‘ (‘post_author‘)
129 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=ց
(cont.) utf8mb4_unicode_ci AUTO INCREMENT=8;

130

131 --
132 -- Table structure for table ‘wp_term_relationships‘
133 --
134 CREATE TABLE IF NOT EXISTS ‘wp_term_relationships‘ (
135 ‘object_id‘ b i g i n t (20) u n s i g n e d NOT NULL DEFAULT ’0’,
136 ‘term_taxonomy_id‘ b i g i n t (20) u n s i g n e d NOT NULL DEFAULT ’0’,
137 ‘term_order‘ i n t (11) NOT NULL DEFAULT ’0’,
138 PRIMARY KEY (‘object_id‘,‘term_taxonomy_id‘),
139 KEY ‘term_taxonomy_id‘ (‘term_taxonomy_id‘)
3.1 O bază wp 57

140 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=ց


(cont.) utf8mb4_unicode_ci;

141

142 --
143 -- Table structure for table ‘wp_term_taxonomy‘
144 --
145 CREATE TABLE IF NOT EXISTS ‘wp_term_taxonomy‘ (
146 ‘term_taxonomy_id‘ b i g i n t (20) u n s i g n e d NOT NULL AUTO INCREMENTց
(cont.) ,

147 ‘term_id‘ b i g i n t (20) u n s i g n e d NOT NULL DEFAULT ’0’,


148 ‘taxonomy‘ v a r c h a r(32) COLLATE utf8mb4_unicode_ci NOT NULL ց
(cont.) DEFAULT ’’,

149 ‘description‘ l o n g t e x t COLLATE utf8mb4_unicode_ci NOT NULL,


150 ‘parent‘ b i g i n t (20) u n s i g n e d NOT NULL DEFAULT ’0’,
151 ‘count‘ b i g i n t (20) NOT NULL DEFAULT ’0’,
152 PRIMARY KEY (‘term_taxonomy_id‘),
153 UNIQUE KEY ‘term_id_taxonomy‘ (‘term_id‘,‘taxonomy‘),
154 KEY ‘taxonomy‘ (‘taxonomy‘)
155 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=ց
(cont.) utf8mb4_unicode_ci AUTO INCREMENT=3;

156

157 --
158 -- Table structure for table ‘wp_terms‘
159 --
160 CREATE TABLE IF NOT EXISTS ‘wp_terms‘ (
161 ‘term_id‘ b i g i n t (20) u n s i g n e d NOT NULL AUTO INCREMENT,
162 ‘name‘ v a r c h a r(200) COLLATE utf8mb4_unicode_ci NOT NULL ց

(cont.) DEFAULT ’’,

163 ‘slug‘ v a r c h a r(200) COLLATE utf8mb4_unicode_ci NOT NULL ց

(cont.) DEFAULT ’’,


164 ‘term_group‘ b i g i n t (10) NOT NULL DEFAULT ’0’,
165 PRIMARY KEY (‘term_id‘),
166 KEY ‘slug‘ (‘slug‘(191)),
167 KEY ‘name‘ (‘name‘(191))
168 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=ց
(cont.) utf8mb4_unicode_ci AUTO INCREMENT=3;

169

170 --
171 -- Table structure for table ‘wp_usermeta‘
172 --
173 CREATE TABLE IF NOT EXISTS ‘wp_usermeta‘ (
174 ‘umeta_id‘ b i g i n t (20) u n s i g n e d NOT NULL AUTO INCREMENT,
175 ‘user_id‘ b i g i n t (20) u n s i g n e d NOT NULL DEFAULT ’0’,
176 ‘meta_key‘ v a r c h a r(255) COLLATE utf8mb4_unicode_ci DEFAULT ց

(cont.) NULL,

177 ‘meta_value‘ l o n g t e x t COLLATE utf8mb4_unicode_ci,


178 PRIMARY KEY (‘umeta_id‘),
179 KEY ‘user_id‘ (‘user_id‘),
180 KEY ‘meta_key‘ (‘meta_key‘(191))
181 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=ց
(cont.) utf8mb4_unicode_ci AUTO INCREMENT=21;

182

183 --
184 -- Table structure for table ‘wp_users‘
58 3 Diverse proiecte mysql

185 --
186 CREATE TABLE IF NOT EXISTS ‘wp_users‘ (
187 ‘ID‘ b i g i n t (20) u n s i g n e d NOT NULL AUTO INCREMENT,
188 ‘user_login‘ v a r c h a r(60) COLLATE utf8mb4_unicode_ci NOT NULL ց
(cont.) DEFAULT ’’,
189 ‘user_pass‘ v a r c h a r(64) COLLATE utf8mb4_unicode_ci NOT NULL ց
(cont.) DEFAULT ’’,

190 ‘user_nicename‘ v a r c h a r(50) COLLATE utf8mb4_unicode_ci NOT ց


(cont.) NULL DEFAULT ’’,

191 ‘user_email‘ v a r c h a r(100) COLLATE utf8mb4_unicode_ci NOT NULL ց


(cont.) DEFAULT ’’,

192 ‘user_url‘ v a r c h a r(100) COLLATE utf8mb4_unicode_ci NOT NULL ց


(cont.) DEFAULT ’’,

193 ‘user_registered‘ d a t e t i m e NOT NULL DEFAULT ’0000-00-00 ց


(cont.) 00:00:00’,

194 ‘user_activation_key‘ v a r c h a r(60) COLLATE utf8mb4_unicode_ci ց


(cont.)NOT NULL DEFAULT ’’,

195 ‘user_status‘ i n t (11) NOT NULL DEFAULT ’0’,


196 ‘display_name‘ v a r c h a r(250) COLLATE utf8mb4_unicode_ci NOT ց
(cont.) NULL DEFAULT ’’,

197 PRIMARY KEY (‘ID‘),


198 KEY ‘user_login_key‘ (‘user_login‘),
199 KEY ‘user_nicename‘ (‘user_nicename‘)
200 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=ց
(cont.) utf8mb4_unicode_ci AUTO INCREMENT=2;

201

202 --
203 -- Table structure for table ‘cds‘
204 --
205 CREATE TABLE IF NOT EXISTS ‘cds‘ (
206 ‘titel‘ v a r c h a r(200) COLLATE latin1_general_ci DEFAULT NULL,
207 ‘interpret‘ v a r c h a r(200) COLLATE latin1_general_ci DEFAULT ց
(cont.) NULL,

208 ‘jahr‘ i n t (11) DEFAULT NULL,


209 ‘id‘ b i g i n t (20) u n s i g n e d NOT NULL AUTO INCREMENT,
210 PRIMARY KEY (‘id‘)
211 ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=ց
(cont.) latin1_general_ci AUTO INCREMENT=7;

212

213 --
214 -- Table structure for table ‘pma_bookmark‘
215 --
216 CREATE TABLE IF NOT EXISTS ‘pma_bookmark‘ (
217 ‘id‘ i n t (11) NOT NULL AUTO INCREMENT,
218 ‘dbase‘ v a r c h a r(255) COLLATE utf8_bin NOT NULL DEFAULT ’’,
219 ‘user‘ v a r c h a r(255) COLLATE utf8_bin NOT NULL DEFAULT ’’,
220 ‘label‘ v a r c h a r(255) CHARACTER SET utf8 NOT NULL DEFAULT ’’,
221 ‘query‘ t e x t COLLATE utf8_bin NOT NULL,
222 PRIMARY KEY (‘id‘)
223 ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT=’ց
(cont.) Bookmarks’ AUTO INCREMENT=1;

224

225 --
226 -- Table structure for table ‘pma_column_info‘
3.1 O bază wp 59

227 --
228 CREATE TABLE IF NOT EXISTS ‘pma_column_info‘ (
229 ‘id‘ i n t (5) u n s i g n e d NOT NULL AUTO INCREMENT,
230 ‘db_name‘ v a r c h a r(64) COLLATE utf8_bin NOT NULL DEFAULT ’’,
231 ‘table_name‘ v a r c h a r(64) COLLATE utf8_bin NOT NULL DEFAULT ’’,
232 ‘column_name‘ v a r c h a r(64) COLLATE utf8_bin NOT NULL DEFAULT ’’ց
(cont.) ,

233 ‘comment‘ v a r c h a r(255) CHARACTER SET utf8 NOT NULL DEFAULT ’’,
234 ‘mimetype‘ v a r c h a r(255) CHARACTER SET utf8 NOT NULL DEFAULT ’’ց
(cont.) ,

235 ‘transformation‘ v a r c h a r(255) COLLATE utf8_bin NOT NULL ց


(cont.) DEFAULT ’’,

236 ‘transformation_options‘ v a r c h a r(255) COLLATE utf8_bin NOT ց


(cont.) NULL DEFAULT ’’,

237 PRIMARY KEY (‘id‘),


238 UNIQUE KEY ‘db_name‘ (‘db_name‘,‘table_name‘,‘column_name‘)
239 ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT=’ց
(cont.) Column information for phpMyAdmin’ AUTO INCREMENT=1;

240

241 --
242 -- Table structure for table ‘pma_designer_coords‘
243 --
244 CREATE TABLE IF NOT EXISTS ‘pma_designer_coords‘ (
245 ‘db_name‘ v a r c h a r(64) COLLATE utf8_bin NOT NULL DEFAULT ’’,
246 ‘table_name‘ v a r c h a r(64) COLLATE utf8_bin NOT NULL DEFAULT ’’,
247 ‘x‘ i n t (11) DEFAULT NULL,
248 ‘y‘ i n t (11) DEFAULT NULL,
249 ‘v‘ tinyint(4) DEFAULT NULL,
250 ‘h‘ tinyint(4) DEFAULT NULL,
251 PRIMARY KEY (‘db_name‘,‘table_name‘)
252 ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT=’ց
(cont.) Table coordinates for Designer’;

253

254 --
255 -- Table structure for table ‘pma_history‘
256 --
257 CREATE TABLE IF NOT EXISTS ‘pma_history‘ (
258 ‘id‘ b i g i n t (20) u n s i g n e d NOT NULL AUTO INCREMENT,
259 ‘username‘ v a r c h a r(64) COLLATE utf8_bin NOT NULL DEFAULT ’’,
260 ‘db‘ v a r c h a r(64) COLLATE utf8_bin NOT NULL DEFAULT ’’,
261 ‘table‘ v a r c h a r(64) COLLATE utf8_bin NOT NULL DEFAULT ’’,
262 ‘timevalue‘ timestamp NOT NULL DEFAULT CURRENT TIMESTAMP ON ց
(cont.) UPDATE CURRENT TIMESTAMP,

263 ‘sqlquery‘ t e x t COLLATE utf8_bin NOT NULL,


264 PRIMARY KEY (‘id‘),
265 KEY ‘username‘ (‘username‘,‘db‘,‘table‘,‘timevalue‘)
266 ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT=’ց
(cont.) SQL history for phpMyAdmin’ AUTO INCREMENT=1;

267

268 --
269 -- Table structure for table ‘pma_pdf_pages‘
270 --
271 CREATE TABLE IF NOT EXISTS ‘pma_pdf_pages‘ (
272 ‘db_name‘ v a r c h a r(64) COLLATE utf8_bin NOT NULL DEFAULT ’’,
60 3 Diverse proiecte mysql

273 ‘page_nr‘ i n t (10) u n s i g n e d NOT NULL AUTO INCREMENT,


274 ‘page_descr‘ v a r c h a r(50) CHARACTER SET utf8 NOT NULL DEFAULT ’ց
(cont.) ’,

275 PRIMARY KEY (‘page_nr‘),


276 KEY ‘db_name‘ (‘db_name‘)
277 ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT=’ց
(cont.) PDF relation pages for phpMyAdmin’ AUTO INCREMENT=1;

278

279 --
280 -- Table structure for table ‘pma_recent‘
281 --
282 CREATE TABLE IF NOT EXISTS ‘pma_recent‘ (
283 ‘username‘ v a r c h a r(64) COLLATE utf8_bin NOT NULL,
284 ‘tables‘ t e x t COLLATE utf8_bin NOT NULL,
285 PRIMARY KEY (‘username‘)
286 ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT=’ց
(cont.) Recently accessed tables’;

287

288 --
289 -- Table structure for table ‘pma_relation‘
290 --
291 CREATE TABLE IF NOT EXISTS ‘pma_relation‘ (
292 ‘master_db‘ v a r c h a r(64) COLLATE utf8_bin NOT NULL DEFAULT ’’,
293 ‘master_table‘ v a r c h a r(64) COLLATE utf8_bin NOT NULL DEFAULT ’ց
(cont.) ’,

294 ‘master_field‘ v a r c h a r(64) COLLATE utf8_bin NOT NULL DEFAULT ’ց


(cont.) ’,

295 ‘foreign_db‘ v a r c h a r(64) COLLATE utf8_bin NOT NULL DEFAULT ’’,


296 ‘foreign_table‘ v a r c h a r(64) COLLATE utf8_bin NOT NULL DEFAULT ց
(cont.) ’’,
297 ‘foreign_field‘ v a r c h a r(64) COLLATE utf8_bin NOT NULL DEFAULT ց
(cont.) ’’,

298 PRIMARY KEY (‘master_db‘,‘master_table‘,‘master_field‘),


299 KEY ‘foreign_field‘ (‘foreign_db‘,‘foreign_table‘)
300 ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT=’ց
(cont.) Relation table’;

301

302 --
303 -- Table structure for table ‘pma_table_coords‘
304 --
305 CREATE TABLE IF NOT EXISTS ‘pma_table_coords‘ (
306 ‘db_name‘ v a r c h a r(64) COLLATE utf8_bin NOT NULL DEFAULT ’’,
307 ‘table_name‘ v a r c h a r(64) COLLATE utf8_bin NOT NULL DEFAULT ’’,
308 ‘pdf_page_number‘ i n t (11) NOT NULL DEFAULT ’0’,
309 ‘x‘ f l o a t u n s i g n e d NOT NULL DEFAULT ’0’,
310 ‘y‘ f l o a t u n s i g n e d NOT NULL DEFAULT ’0’,
311 PRIMARY KEY (‘db_name‘,‘table_name‘,‘pdf_page_number‘)
312 ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT=’ց
(cont.) Table coordinates for phpMyAdmin PDF output’;

313

314 --
315 -- Table structure for table ‘pma_table_info‘
316 --
317 CREATE TABLE IF NOT EXISTS ‘pma_table_info‘ (
3.1 O bază wp 61

318 ‘db_name‘ v a r c h a r(64) COLLATE utf8_bin NOT NULL DEFAULT ’’,


319 ‘table_name‘ v a r c h a r(64) COLLATE utf8_bin NOT NULL DEFAULT ’’,
320 ‘display_field‘ v a r c h a r(64) COLLATE utf8_bin NOT NULL DEFAULT ց
(cont.) ’’,

321 PRIMARY KEY (‘db_name‘,‘table_name‘)


322 ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT=’ց
(cont.) Table information for phpMyAdmin’;

323

324 --
325 -- Table structure for table ‘pma_table_uiprefs‘
326 --
327 CREATE TABLE IF NOT EXISTS ‘pma_table_uiprefs‘ (
328 ‘username‘ v a r c h a r(64) COLLATE utf8_bin NOT NULL,
329 ‘db_name‘ v a r c h a r(64) COLLATE utf8_bin NOT NULL,
330 ‘table_name‘ v a r c h a r(64) COLLATE utf8_bin NOT NULL,
331 ‘prefs‘ t e x t COLLATE utf8_bin NOT NULL,
332 ‘last_update‘ timestamp NOT NULL DEFAULT CURRENT TIMESTAMP ON ց
(cont.) UPDATE CURRENT TIMESTAMP,

333 PRIMARY KEY (‘username‘,‘db_name‘,‘table_name‘)


334 ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT=’ց
(cont.) Tables’’ UI preferences’;

335

336 --
337 -- Table structure for table ‘pma_tracking‘
338 --
339 CREATE TABLE IF NOT EXISTS ‘pma_tracking‘ (
340 ‘db_name‘ v a r c h a r(64) COLLATE utf8_bin NOT NULL,
341 ‘table_name‘ v a r c h a r(64) COLLATE utf8_bin NOT NULL,
342 ‘version‘ i n t (10) u n s i g n e d NOT NULL,
343 ‘date_created‘ d a t e t i m e NOT NULL,
344 ‘date_updated‘ d a t e t i m e NOT NULL,
345 ‘schema_snapshot‘ t e x t COLLATE utf8_bin NOT NULL,
346 ‘schema_sql‘ t e x t COLLATE utf8_bin,
347 ‘data_sql‘ l o n g t e x t COLLATE utf8_bin,
348 ‘tracking‘ s e t (’UPDATE’,’REPLACE’,’INSERT’,’DELETE’,’TRUNCATE’ց
(cont.) ,’CREATE DATABASE’,’ALTER DATABASE’,’DROP DATABASE’,’ց

(cont.) CREATE TABLE’,’ALTER TABLE’,’RENAME TABLE’,’DROP TABLE’,ց

(cont.) ’CREATE INDEX’,’DROP INDEX’,’CREATE VIEW’,’ALTER VIEW’,’ց

(cont.) DROP VIEW’) COLLATE utf8_bin DEFAULT NULL,

349 ‘tracking_active‘ i n t (1) u n s i g n e d NOT NULL DEFAULT ’1’,


350 PRIMARY KEY (‘db_name‘,‘table_name‘,‘ v e r s i o n ‘)
351 ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin ROW FORMATց
(cont.) =COMPACT COMMENT=’Database changes tracking for ց

(cont.) phpMyAdmin’;

352

353 --
354 -- Table structure for table ‘pma_userconfig‘
355 --
356 CREATE TABLE IF NOT EXISTS ‘pma_userconfig‘ (
357 ‘username‘ v a r c h a r(64) COLLATE utf8_bin NOT NULL,
358 ‘timevalue‘ timestamp NOT NULL DEFAULT CURRENT TIMESTAMP ON ց

(cont.) UPDATE CURRENT TIMESTAMP,


359 ‘config_data‘ t e x t COLLATE utf8_bin NOT NULL,
360 PRIMARY KEY (‘username‘)
62 3 Diverse proiecte mysql

361 ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT=’ց


(cont.) User preferences storage for phpMyAdmin’;

362

363 --
364 -- Table structure for table ‘user_pwd‘
365 --
366 CREATE TABLE IF NOT EXISTS ‘user_pwd‘ (
367 ‘name‘ char(30) COLLATE latin1_general_ci NOT NULL DEFAULT ’’,
368 ‘pass‘ char(32) COLLATE latin1_general_ci NOT NULL DEFAULT ’’,
369 PRIMARY KEY (‘name‘)
370 ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ciց
(cont.) ;

Datele pentru popularea bazei wp sunt disponibile on-line la adresa [41].

VA URMA
Referinţe Bibliografice

1. AUTO_INCREMENT, folosirea lui NULL,


http://dev.mysql.com/doc/refman/5.6/en/example-auto
-increment.html
2. Biblioteca (How to query a list of books),
http://www.octag.ro/pag/pages/software.php
3. Biblioteca, baza de date (csv),
http://www.octag.ro/pag/files/biblioteca_bd.csv
4. Biblioteca, baza de date (txt),
http://www.octag.ro/pag/files/biblioteca_bd.txt
5. Blog,
http://codex.wordpress.org/Introduction_to_Blogging
6. Componentă, software,
https://en.wikipedia.org/wiki/Plug-in_%28computing%29
7. CSV, format de fişiere,
https://en.wikipedia.org/wiki/Comma-separated_values
8. EER, model,
https://en.wikipedia.org/wiki/Enhanced_entity%E2%80%93
relationship_model
9. ER, model,
https://en.wikipedia.org/wiki/Entity%E2%80%93
relationship_model
10. Exportul datelor,
https://en.wikipedia.org/wiki/Database_dump
11. JDBC,
https://en.wikipedia.org/wiki/Java_Database_Connectivity
12. LAMP,
https://en.wikipedia.org/wiki/LAMP_%28software_bundle%29
13. Mapare, date,
https://en.wikipedia.org/wiki/Data_mapping
14. Microsoft Excel,
https://en.wikipedia.org/wiki/Microsoft_Excel
15. Mustafa, O.G.: Note de laborator: C++, Vers. 2.0. DAL, Craiova (2012) On-line la adresa:
under construction
16. Mustafa, O.G.: Elemente de Transact-SQL, Programarea bazelor de date ı̂n tsql. DAL,
Craiova (2012) On-line la adresa: http://www.octag.ro/pag/files/tsql.pdf
17. MySQL,
https://en.wikipedia.org/wiki/MySQL

63
64 Referinţe Bibliografice

18. MySQL, descărcarea sistemului,


http://dev.mysql.com/downloads/windows/installer/5.6.html
19. MySQL, manualul oficial (versiunea 5.6) on-line,
http://dev.mysql.com/doc/refman/5.6/en/index.html
20. MySQL, tutorial de instalare,
http://dev.mysql.com/doc/refman/5.7/en/mysql-installer
-gui.html
21. MySQL, Oracle,
http://www.oracle.com/us/products/mysql/overview/index.html
22. .NET,
https://en.wikipedia.org/wiki/.NET_Framework
23. ODBC,
https://en.wikipedia.org/wiki/Open_Database_Connectivity
24. Perl,
https://en.wikipedia.org/wiki/Perl
25. phpMyAdmin,
https://en.wikipedia.org/wiki/PhpMyAdmin
26. Port, conectare la server,
https://en.wikipedia.org/wiki/Port_%28computer_networking%29
27. Python, descărcare,
https://www.python.org/downloads/
28. Radu, C., Ionaşcu, C.M., Murăriţa, I.: Statistică teoretică, Ediţia a II-a revizuită. Ed. Univer-
sitaria, Craiova (2013)
29. Ray, D.S., Ray, E.J.: UNIX ı̂n imagini. Teora, Bucureşti (2004)
30. SCHEMA,
http://dev.mysql.com/doc/refman/5.6/en/create-database.html
31. SGBD,
https://en.wikipedia.org/wiki/Database
32. x64, arhitectura,
https://en.wikipedia.org/wiki/X86-64
33. x86, arhitectura,
https://en.wikipedia.org/wiki/X86
34. XAMPP,
https://en.wikipedia.org/wiki/XAMPP
35. XAMPP, descărcare,
https://www.apachefriends.org/index.html
36. Widenius, M., Axmark, D.: MySQL reference manual, Documentation from the source.
O’Reilly, Beijing (2003)
37. Windows, instalator,
https://en.wikipedia.org/wiki/Windows_Installer
38. Windows, serviciu,
https://en.wikipedia.org/wiki/Windows_service
39. WordPress,
https://wordpress.org
40. WP, baza, structură,
http://www.octag.ro/pag/files/baza_wp.sql
41. WP, baza, populare,
http://www.octag.ro/pag/files/baza_wp_date.sql
Index

Axmark, David, 1 pl, 41


port, 4
client, vii py, 1
comentariu, 32 Python, 1, 3
componentă, 44
conector, 3 root, 4
CSV, 44
Sakila, 4
excel, 44, 45 server, vii
SGBD, 31, 53
JDBC, 4
SQL, 32
manualele MySQL, 4
model entitate-relaţie, 4 tehnologii de baze de date, vii
MySQL, vii tsql, 4, 32
mysql, vii, 1–5, 31–33, 40, 44, 45, 53
Widenius, Michael, 1
.NET, 3 WordPress, vii, 53
workbench, 4, 5, 31
ODBC, 3 Workbench, 3
World, 4
Perl, 41 wp, 53

65

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