marți, 2 iunie 2015

2.06-5.06.2015

Tehnici software de prelucrare a datelor:



Limbajul SQL pentru interogarea bazelor de date
  • Interogarea de selectie 
  • Interogarea total 
  • Interogari actiune

A. REACTUALIZARE CUNOSTINTE:



Sarcina de lucru:
1. Studiati urmatorul soft educational:


2. Prezentati lucrarea  Power Point realizata si postata pe grup pana la data de 19.05.2015




 1. Noţiuni introductive

Crearea şi exploatarea bazelor de date relaţionale reprezintă una dintre direcţiile principale de dezvoltare a informaticii.
Implementarea conceptelor matematice care stau la baza modelului relaţional s-a realizat prin definirea unui limbaj specializat, SQL (Structured Query Language).
Scrierea comenzilor în SQL fiind relativ dificilă, firmele care au creat sisteme de gestiune de baze de date s-au concentrat asupra realizării unei interfeţe prietenoase, apărând pe piaţă sisteme ca Access, FoxPro, Paradox etc..
Noţiunile de HTML prezentate permit realizarea de situri web a căror funcţie este aceea de comunicare de informaţii prin intermediul unui ansamblu de pagini păstrate pe un server accesibil prin Internet.


2. Noţiuni de SQL 


MySQL este un sistem de baze de date functional independent.
In PHP exista functii pentru toate operatiile executate asupra bazelor de date MySQL.
Administrarea MySQL se poate face din linie de comanda sau folosind browserul si accesand aplicatia numitaPHPMyAdmin scrisa in PHP.

In MySQL spatiul alocat pe discul serverului este functie de tipul de date. 

Tipul de date intregi incep de la valori negative la pozitive.

3. Comenzi pentru definirea datelor

B. PREDARE INVATARE:
Bazele de date sunt folosite pentru stocarea informatiilor in vederea furnizarii ulterioare in functie de solicitarea primita.
Cele mai uzuale operatii cu bazele de date sunt:
Comanda
Semnificatie
CREATE
creaza o baza de date sau un tabel
DROP
sterge o baza de date sau un tabel
INSERT
adauga inregistrari intr-un tabel
DELETE
sterge inregistrari dintr-un tabel
UPDATE
updateaza inregistrarile dintr-un tabel
SELECT
selecteaza un tabel
ALTER
alterarea unui tabel

Cateva din tipurile de date folosite in bazele de date MySQL sunt: 
Tip
Semnificatie

int()
numar intreg
32 biti
bigint()
numar intreg
64 biti
tinyint()
numar intreg (-128 la 127 sau 0 la 255)
8 biti
mediumint()
numar intreg
24 biti
smallint()
numar intreg
16 biti
char()
sectiune cu lungime fixa de la 0 la 255 caractere

varchar()
sectiune cu lungime variabila de la 0 la 255 caractere

float()
numar mic cu virgula flotanta

double
numar mare cu virgula flotanta

text
sir cu maximum 65535 caractere

date()
data in format YYYY-MM-DD

date
data in format YYYY-MM-DD HH:MM:SS

time
ora in format HH:MM:SS

Pentru ca baza de date sa fuctioneze mai bine coloanelor li s-au adaugat modificatori de coloana.
 Daca se adauga optiunea UNSIGNED, care este un modificator de coloana, nu vor mai fi valori negative ci vor incepe de la 0.
Alti modificatori sunt:
  • AUTO_INCREMENT functioneaza cu orice tip intreg. La fiecare rand nou adaugat in baza de date numarul asociat va fi incrementat.
  • NULL inseamna fara valoare (diferit de spatiu sau zero).
  • NOT NULL inseamna ca orice inregistrare va fi considerata ceva.
  • PRIMARY KEY este rolul primei coloane din tabel, totodata reprezentand elementul de referinta pentru fiecare linie.
Comenzi pentru definirea datelor:
Comandă
Sintaxă
Creare unei baze de date
Crearea unui tabel
CREATE DATABASE denumire_bază_de_date 
CREATE TABLE nume ( nume_coloana1 tip atribute, nume_coloana2 tipatribute, ..., primary key (nume_coloană), index nume_index(nume_coloană) )
Ştergerea unui tabel
DROP TABLE nume_tabel;
Crearea unui index
CREATE [UNIQUE] INDEX nume_index ON nume_tabel (nume_coloană [ASC/DESC]);
Eliminarea unui index
DROP INDEX nume_index;

Comanda CREATE DATABASE
Înaintea realizării ansamblului de tabelecare vor servi la păstrarea datelor, trebuie creatăo bază de date folosind comanda create database.
Exemplu : mysql> CREATE DATABASE proiect;

Comanda USE DATABASE
Pentru a lucra cu o bază de date, aceasta trebuie precizatăfolosind instrucţiunea use
Exemplu: mysql> USE DATABASE proiect

Comanda CREATE TABLE
După crearea bazei de date şi selectarea ei ca bază de date curentă se poate trece la crearea tabelelor (fişierelor) bazei.
 Instrucţiunea create tableare sintaxa:
CREATE TABLE nume ( nume_coloana1 tip atribute, nume_coloana2 tip atribute, ..., primary key (nume_coloană), index nume_index(nume_coloană) )

Comanda INSERT
Comanda are două forme, prima permite introducerea de înregistrări (rânduri) într-un tabel, cea de-a doua permite copierea mai multor rânduri dintr-unul sau mai multe tabele într-un alt tabel.
INSERT INTO denumire_tabel [(listă_coloane)] VALUES (listă_valori)
unde:
-                    denumire_tabel este numele tabelului în care se va face inserarea de rânduri
-                    listă_coloane reprezintă lista coloanelor supuse indroducerii de date
-                    listă_valori reprezintă datele efectiv ce vor fi introduse în tabel în coloanele specificate

Exemplu:  
Fie tabelul tabClase ce reţine date despre clasele unei şcoli. Dacă se doreşte introducerea unei înregistrări noi se va utiliza comanda:  
INSERT INTO tabClase (NumeClasa, Numespecializare, NumeForma, AnTerminal, IdAnStudiu)VALUES ('11As','Mate-info', 'seral', '5','27')


 Sintaxa pentru prima formă este:
Proprietatea SELECT poate fi utilizata intr-o comanda mysql_query pentru a alege anumite informatii din tabelul bazei de date.
 Sintaxa pentru preluarea datelor din tabelul bazei de date este:  
SELECT  expresii si coloane FROM nume tabela
  [WHERE conditie][ORDER BY lista coloane expresii] [ASC/DESC]]
Exemple:
SELECT * FROM tabel;afiseaza tot continutul tabelului
SELECT camp1 FROM tabel;afiseaza continutul campului 1
SELECT camp1, camp2 FROM tabelafiseaza continutul campului 1 si campului 2
SELECT * FROM tabel WHERE camp1 = 'valoare1';afiseaza toate randurile din camp1 a caror valoare este "valoare1"
SELECT camp1, camp2 FROM tabel WHERE camp2 LIKE 'valoare2';afiseaza continutul campului 1 si campului 2 acolo unde campul 2 este asemanator cu "valoare2"
SELECT * FROM tabel WHERE camp2 LIKE 'valoare2%';afiseaza toate inregistrarile acolo unde campul 2 incepe cu "valoare2"
SELECT * FROM tabel WHERE camp2 LIKE '%valoare2';afiseaza toate inregistrarile acolo unde campul 2 se termina cu "valoare2"
SELECT * FROM tabel WHERE campul2 LIKE '%valoare2%';afiseaza toate inregistrarile acolo unde campul 2 se aseamana cu "valoare2" oriunde in text
SELECT * FROM tabel WHERE camp1=valoare1 AND camp2 LIKE '%valoare2%';afiseaza inregistrarile acolo unde campul 1 este egal cu "valoare1" si campul 2 este asemanator cu "valoare2"
SELECT camp1, camp2 FROM tabel WHERE camp1 != valoare3;afiseaza camp 1 si camp 2 acolo unde camp 1 este diferit de "valoare3"
SELECT * FROM tabel WHERE camp3 NOT LIKE 'valoarea3%';afiseaza toate inregistrarile acolo unde campul 3 nu incepe cu "valoare3"
SELECT camp2 FROM tabel ORDER BY camp2 ASC;afiseaza campul 2 in ordine crescatoare
SELECT camp1, camp2 FROM tabel ORDER BY camp1 ASC, camp2 DESC;afiseaza continutul campului 1 in ordine crescatoare si continutul campului 2 in ordine descrescatoare
SELECT count(*) FROM tabel;afiseaza cate inregistrari sunt in total in tabel
SELECT count (*) FROM tabel WHERE camp1=valoare1;afiseaza cate inregistrari sunt in tabel al caror camp 1 este "valoare1"
SELECT SUM(coloana1) FROM tabel;afiseaza suma elementelor din campul"coloana1" din tabelul "tabel"
SELECT AVG(coloana1) FROM tabel;afiseaza media aritmetica a elementelor din campul"coloana1" din tabelul "tabel"
SELECT CONCAT(coloana1, coloana2) FROM TABEL;afiseaza valorile coloanei 1 si coloanei 2 concatenate
SELECT LENGTH(coloana1) FROM tabel;afiseaza cate caractere contine fiecare valoare din coloana 1
SELECT MAX(camp1) FROM tabel;afiseaza numarul cel mai mare din coloana "camp1"
SELECT MIN(camp1) FROM tabel;afiseaza numarul cel mai mic din coloana "camp1"
SELECT * FROM tabel LIMIT 0,5;afiseaza primele 6 inregistrari din tabel(0 = prima inregistrare, 1 = a doua etc)
SELECT * FROM tabel LIMIT 6,4;afiseaza incepand de la inregistrarea 6, inca 4



 SARCINA DE LUCRU:

1. Fie relaţia (tabelul) Angajat cu următoarele atribute: NumeAngajat, PrenumeAngajat, DataNasterii, CNP, Adresă, DataAngajarii, Functie. 
Executarea comenzii:
SELECT NumeAngajat, PrenumeAngajat, Funcţia
FROM Angajat
WHERE Salariu = 1000;
are drept rezultat?
SELECT Nume, Prenume, Funcţia
FROM Angajat ORDER BY Nume  ASC;
Are drept rezultat listarea tuturor angajaţilor cu toate atributele existente în relaţia Angajat ordonaţi alfabetic după nume.

Adevărat
 Fals



3. Identificaţi corespondenţele corecte care se pot stabili între elementele coloanei A şi cele ale coloanei B.

 Dată fiind relaţia Angajat cu atributele: Nume, Prenume, Funcţie, Salariu. Comanda: 
Coloana A
Coloana B
  1. Reguli de integritate
  2. Cheia primară
  3. Supercheie
  4. Domeniul


  1. Este obligatorie şi este unică
  2. Integritatea entităţilor, integritatea referenţială
  3. Numărul de rânduri ale unei relaţii.
  4. Poate conţine şi atribute care nusunt necesare pentru identificarea unică.
  5. Mulţime de valori permisă pentru unul sau mai multe atribute.
Descarcati fisierul de lucru:  
Rezolvati urmatoarele cerinte:
Dispuneţi de baza de date VANZARI cu tabelele CLIENTI(Codcl, Nume, Adresa, Zona), AGENTI(Codag, Nume, Salbaza, Zona) şi COMENZI(Nrcom, Data, Codcl, Codag, Valoare).
  1. Analizaţi atributele din fiecare tabel şi stabiliţi cheile primare corespunzătoare acestora.
  2. Definiţi legăturile dintre tabele şi aplicaţi restricţiile referenţiale.
  3. Să se afişeze pe ecran o listă a comenzilor din ziua de 9 mai 2010, în ordinea zonelor.
  4. Calculaţi totalul comenzilor pe zone.
  5. Dispuneţi de baza de date VANZARI. Să se realizeze un raport al comenzilor grupate după agentul care a preluat comanda (Nrcom, Data, Valoare). 
  6. În antetul de grup se va afişa numele agentului, iar la sfârşitul grupului valoarea totală a comenzilor fiecărui agent


Indicatii aplicatii practice