luni, 13 iunie 2016

13.06.2016 Limbajul SQL

LIMBAJUL SQL 5.1 Prezentare generală SQL 



Sarcina de lucru:
1. Studiati urmatorul soft educational:
2. Alegeti  subiectele tratate si aprofundati-le prin studiu.
3. Realizati o prezentare Power Point cu notiunile studiate.
4. Postati pe grup pana la data de
20.06.2016

<<descarca>> MATERIAL DIDACTIC

Tehnici software de prelucrare a datelor:
Limbajul SQL pentru interogarea bazelor de date
  • Interogarea de selectie 
  • Interogarea total 
  • Interogari actiune


A. Activitate de predare invatare :

 1. Noţiuni generale
SQL (de la numele englez Structured Query Language - limbaj de interogare structurat - este un limbaj de programare specific pentru manipularea datelor în sistemele de manipulare a bazelor de date relaționale (RDBMS), iar la origine este un limbaj bazat pe algebra relațională.
 Acesta are ca scop inserarea datelor, interogații, actualizare și ștergere, modificarea și crearea schemelor, precum și controlul accesului la date.
A devenit un standard în domeniu (standardizatANSI-ISO), fiind cel mai popular limbaj utilizat pentru creearea, modificarea, regăsirea și manipularea datelor de către SGBD-urile (Sistemele de Gestiune a Bazelor de Date) relaționale.

De exemplu, o instrucțiune SQL simplă care regăsește o listă cu numele de familie al persoanelor cu prenumele Maria poate arăta astfel:
SELECT Last_Name
FROM Contacts
WHERE First_Name = 'Mary';

2.Comenzi pentru definirea datelor

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

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ă) )




 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:

 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.
a. adevarat
b. fals



Pentru corigenti:
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