mysql> CREATE DATABASE anunturi_online; ALTER TABLE Cumparatori ADD PRIMARY
KEY (cump_id); ALTER TABLE ComanziArticole ADD PRIMARY KEY (comanda_nr, comanda_articol); ALTER TABLE Produse ADD PRIMARY KEY (prod_id); ALTER TABLE Vanzatori ADD PRIMARY KEY (vanz_id); Folosirea bazei de date: Modalitate de a defini cheia externa: mysql> USE anunturi_online; ALTER TABLE Cumparatori CONSTRAINT FOREIGN KEY (cump_id) REFERENCES Cumparatori (cump_id) Stergerea bazei de date: Regasirea coloanelor individuale: mysql> DROP DATABASE SELECT prod_nume nume_baza_de_date; FROM Produse; Crearea unui tabel: Regasirea mai multor coloane: mysql> CREATE TABLE anunturi ( SELECT prod_id, prod_nume, prod_pret -> id INT NOT NULL AUTO_INCREMENT FROM Produse; PRIMARY KEY, -> text_anunt TEXT, -> data_anunt DATE NOT NULL -> ); Afisarea tabelelor: Regasirea tuturor coloanelor: mysql> SHOW TABLES; SELECT * FROM Produse; Stergerea unui tabel: Sortarea datelor: mysql> DROP TABLE nume_tabel; SELECT prod_nume FROM Produse ORDER BY prod_nume; Introducerea de date intr-un tabel: Sortarea dupa mai multe coloane: mysql> INSERT INTO anunturi SET SELECT prod_id, -> text_anunt = "vand notebook HP Pavilion Prod_pret zd8000. Tel. 0721-525161", FROM Produse -> data_anunt = "2005-07-20"; ORDER BY prod_pret, Prod_nume; Vizualizarea datelor stocate: Sortarea dupa pozitia coloanei: mysql> SELECT * FROM anunturi; ( * - SELECT prod_id, TOATE) Prod_pret FROM Produse mysql> SELECT text_anunt FROM anunturi; ORDER BY 2, 3;
mysql> SELECT text_anunt, data_anunt FROM
anunturi; Dar dacă vrem să aflăm câte anunţuri au fost Sortarea directiei de sortare: publicate: SELECT prod_id, mysql> SELECT COUNT(*) FROM anunturi Prod_pret WHERE data_anunt="2005-03-04"; FROM Produse ORDER BY prod_pret DESC; Filtrarea datelor: SELECT prod_nume, prod_pret FROM produse WHERE prod_pret = 199.49; Dar dacă vrem să aflăm toate anunţurile despre notebook-uri? mysql> SELECT text_anunt, data_anunt FROM anunturi WHERE text_anunt LIKE '%notebook%';
Modificarea datelor stocate: Testarea cu o singura valoare:
mysql> UPDATE anunturi SET text_anunt = " SELECT prod_nume, prod_pret vand notebook HP Pavilion zd8000. Pret 1000 FROM produse RON. Tel.0721-525161" WHERE id = 1; WHERE prod_pret <200; Adaugarea unui camp nou: Testarea pentru non-corespondente: mysql> ALTER TABLE anunturi ADD SELECT vanz_id, prod_nume COLUMN data_exp_anunt DATE NOT NULL; FROM Produse WHERE vanz_id <> `TORBUL01`; Verificarea campului nou: Testarea pentru domeniu de valori: mysql> show columns from anunturi; SELECT prod_nume, prod_pret FROM Produse WHERE prod_pret BETWEEN 20 AND 300; Stergerea datelor stocate: Testarea pentru nicio valoare: mysql> DELETE FROM anunturi WHERE id = SELECT cump_nume 1; FROM Cumparatori WHERE cump_email IS NULL; Stergerea unui tabel: Pentru a filtra mai multe coloane: AND mysql> DROP TABLE anunturi; SELECT prod_id, prod_pret, prod_nume FROM Produse WHERE vanz_id = `TORBUL01` AND prod_pret<= 20; Stergerea unei baze de date: Operatorul OR: mysql> DROP DATABASE anunturi_online; SELECT prod_nume, prod_pret FROM Produse WHERE vanz_id = `TORBUL01` OR vanz_id = `TORCRO01`; Ordinea de evaluare: SELECT prod_nume, prod_pret FROM Produse WHERE vanz_id = `TORBUL01` OR vanz_id=`TORCRO01` AND prod_pret >= 100; Operatorun IN: SELECT prod_nume, prod_pret FROM Produse WHERE vanz_id IN (`TORBUL01`,`TORCRO01`) ORDER BY prod_nume; Folosirea operatorului NOT: SELECT prod_nume, prod_pret FROM Produse WHERE NOT (vanz_id = `TORBUL01`) ORDER BY prod_nume Operatorul LIKE: SELECT prod_id, prod_nume FROM Produse WHERE prod_nume LIKE `Priza%`; Caracterul de inlocuire liniuta de subliniere: SELECT prod_id, prod_nume FROM Produse WHERE prod_nume LIKE `%_TP%`; Conectarea campurilor calculate: SELECT CONCAT(vanz_nume, vanz_adresa, `(`,vanz_tara, `)`) AS info_vanz FROM Vanzatori ORDER BY vanz_nume; Efectuarea de calcule aritmetice: SELECT prod_id, cantitate, articol_pret FROM ComenziArticole WHERE comanda_nr = 20008; Functii pentru manipularea textului: SELECT vanz_nume, UPPER(vanz_nume) AS vanz_nume_majuscule FROM Vanzatori ORDER BY vanz_nume;
Functii pentru manipularea datei si orei:
SELECT comanda_nr FROM Comenzi WHERE YEAR(comanda_data) = 2005; Functia AVG(): Inserarea datelor: SELECT AVG(prod_pret) AS pret_mediu INSERT INTO Cumparaturi FROM Produse; VALUES(`10000006`, `Flamingo Computers Holland`, `TRAWLERWEG 22 3133 KS`, `VLAARDINGEN`, `1111`, `olanda`, NULL, NULL); Functia COUNT(): Inserarea de linii complete SELECTIA COUNT(*) AS nr_cumparatori INSERT INTO Cumparatori FROM Cumparatori; VALUES(`1000006`, `Flamingo Computers Holland`, `TRAWLERWEG 22 3133 KS`, `VLAARDINGEN`, `1111`, `Olanda`, NULL, NULL); Functia MAX(): Inserarea datelor regasite: SELECT MAX(prod_pret) AS pret_max INSERT INTRO Cumparatori(cump_id, FROM Produse; Cump_contact, Cump_email, Cump_nume) SELECT cump_id, Cump_contact Cump_email, Cump_nume) FROM CumpNoi; Functia MIN(): Copierea dintr-un tabel in altul: SELECT MIN(prod_pret) AS pret_min CREATE TABLE CumpCopie AS FROM Produse; SELECT * FROM Cumparatori; Funtia SUM(); Actualizarea datelor: SELECT SUM(cantitate) AS UPDATE Cumparatori articole_comandate SET cump_email=`office@flamingo.md` FROM ComnenziArticole WHERE cump_id=`10000005`; WHERE comanda_nr = 2005; Functii agregat pe valori distincte: Folosirea subselectiilor intr-o instructiune: SELECT COUNT(DISTINCT prod_pret) AS UPDATE Cumparatori prod_pret_diferit SET cump_email = NULL FROM Produse WHERE cump_id = `100000005`; WHERE vanz_id = `TORBUL01`; Combinarea functiilor agregat: Stergerea datelor: SELECT COUNT(*) AS nr_articole DELET FROM Cumparatori MIN(prod_pret) AS pret_min. WHERE cump_id = `10000006`; MAX(prod_pret) AS pret_max. AVG(prod_pret) AS pret_mediu FROM Produse; Crearea grupurilor: Actualizarea tabelelor: SELECT vanz_id. COUNT(*) AS nr_produse ALTER TABLE Vanzatori ADD FROM Produse Vanz_telefon CHAR(20); GROUP BY vanz_id; Filtrarea grupurilor: Stergerea tabelelor: SELECT cump_id. COUNT(*) AS comenzi DROP TABLE CumpCopiel FROM Comenzi GROUP BY cump_id HAVING COUNT (*) >=2; Grupare si sortare: Folosirea Vederilor: SELECT comanda_nr, COUNT(*) AS articole SELECT cump_nume, cump_contact FROM ComenziArticole FROM Cumparatori, Comenzi, ComenziArticole GROUP BY comanda_nr WHERE Cumparatori.cump_id = HAVING COUNT(*) >=3; Comenzi.cump_id AND ComenziArticole.comanda_nr = Comenzi.comanda_nr AND prod_id = `QPTRLSADG`; Filtrarea prin folosirea subselectiilor: Folosirea vederilor pentru simplificarea unirilor SELECT comanda_nr complexe: FROM ComenziArticole CREATE VIEW ProdusCump AS SELECT WHERE prod_id=`QPTCLS8P8P`; cump_nume,cump_contact AND ComenziArticole.comanda_nr = Comenzi.comanda_nr Crearea lui Join: Folosirea vederilor pentru reformatarea datelor SELECT vanz_nume, prod_nume, prod_pret regasite: FROM Vanzatori, Produse SELECT cump_nume, THERE Vanzatori.vanz_id=Produse.vanz_id; Cump_adresa, Cump_oras, Cump_cod, Cump_tara FROM Cumparatori; Jonctiuni interioare Folosirea vederilor pentru filtrarea datelor SELECT vanz_nume, prod_nume, prod_pret nedorite: FROM Vanzatori INNER JOIN Produse CREATE VIEW CumpEtichetaPosta AS ON Vanzari.vanz_id = Produse.vanz_id; SELECT cump_nume, cump_adresa AS cump_adresa1, CONTACT((cump_oras), (cump_cod)) AS cump_adresa2, cump_tara AS cump_adresa3 FROM Cumparatori WHERE NOT Cump_adresa IS NULL AND NOT cump_oras IS NULL AND NOT cump_cod IS NULL AND NOT cump_tara IS NULL; Jonctiunea mai multor tabele: Folosirea vederilor cu campuri calculate: SELECT SELECT prod_id, prod_nume,vanz_nume,prod_pret,cantitate Cantitate, FROM ComenziArticole, Produse, Vanzatori Articol_pret, WHERE Produse.vanz_id=Vanzatori.vanz_id Cantitate*articol_pret AS pret_global AND FROM ComenziArticole ComenziArticole.prod_id=Produse.prod_id WHERE comanda_nr = 200008; AND comanda_nr = 20007; Lucru cu subselectii: Crearea procedurilor stocate: SELECT cump_nume. Cump_contact CALL produspret((@pret_max, FROM Cumparatori @pret_mediu, WHERE cump_id IN (SELECT cump_id @pret_min); FROM Comenzi Where comanda_nr IN (SELECT comanda_nr FROM ComenziArticole WHERE prod_id = `QTPDSADJ`)); Crearea jonctiunilor avansate: Apelarea procedurilor stocate: SELECT CALL produspret(); RTRIM(vanz_oras)+`.`_RTRIM(vanz_tara)+` RTRIM(vanz_cod) AS Adresa2 FROM vanzatori ORDER BY vanz_nume; Tipuri de autojonctiuni: Stergerea procedurilor stocate SELECT cump_id,cump_nume, cump_contact DROP PROCEDURE produspretl; FROM Cumparatori WHERE cump_nume=(select cump _nume FROM Cumparatori WHERE cump_contact = `Marco Pancev`); Jonctiuni naturale: Lucru cu parametrii in procedurile stocate: Select C.*, C0.comanda_nr, DELIMITER // C0.comanda_data,Caprod_id, CA.cantitate CREATE PROCEDURE prodspret( WHERE C.cump_id=C0.comanda_nr OUT pmax DECILAM(8,2), AND CA.comanda_nr=CO.comanda_nr OUT pmed DECIMAL(8,2), AND prod_id=`QPTRLSADO`; OUT pmin DECIMAL(8,2) ) BEGIN SELECT Max(prod_pret) INTO pmax FROM Produsel SELECT Avg(prod_pret) INTO pmed FROM Produse; SELECT Min(prod_pret) INTO pmin FROM Produsel END // DELIMITER; Jonctiuni exterioare: SELECT Cumparatori.cump_id. Comenzi.comanda_nr FROAM Cumparatori INNER JOIN Comenzi WHERE Cumparatori.cump_id=Comenzi.cump_id; Folosirea jonctiunilor cu funtii de agent: SELECT Cumparatori.cump_id. COUNT(Comenzi.comanda_nr) AS nr_comenzi FROM Cumparatori INNER JOIN Comenzi ON Cumparatori.cump_id = Comenzi.cump_id GROUP BY Cumparatori.cump_id; Folosirea operatorului UNION: SELECT cump_nume, cump_contact, cump_email FROM Cumparatori WHERE cum_tara IN (`Romania`,`Croatia`,`Moldova`); Includerea sau eliminarea liniilor duplicate: SELECT cump_nume, cump_contact, cump_email FROM Cumparatori WHERE cump_tara IN (`Romania`,`Croatia`,`Moldova`) UNION ALL SELECT cump_nume, cump_contact, cump_email FROM Cumparatori WHERE cump_nume = `Flamingo Digitalini Ducan d.o.o`; Sortarea rezultatelor interogarii compuse: SELECT cump_nume, cump_contact, cump_email FROM Cumparatori WHERE cump_tara IN (`Romania`,`Croatia`,`Moldova`) UNION SELECT cump_nume, cump_contact, cump_email FROM Cumparatori WHERE cump_nume= `Flamingo Digitalini` ORDER BY cump_nume, cump_contact;