Laborator4 Problema1. Să se creeze in linie comandă tabela mailing_list astfel: CREATE DATABASE lista; USE lista; CREATE TABLE mailing_list (Nume VARCHAR(100) NOT NULL, email VARCHAR(100) PRIMARY KEY) Problema 2. Să se creeze in linie comandă tabela studenti astfel: CREATE TABLE studenti (stud_id INT PRIMARY KEY AUTO_INCREMENT, nume VARCHAR(50) NOT NULL, varsta INT NOT NULL) Problema3: Să se populeze tabela mailing_list cu date din linie comandă astfel: INSERT INTO mailing_list (Nume, email) VALUES ('Claudiu', claudiu@itu.ro') ; INSERT INTO mailing_list (Nume, email) VALUES ('Bianca', bianca@hotmail.co') ; INSERT INTO mailing_list (Nume, email)values ( Ion', Ion@hotmail.com') ; Problema4. Să se afișeze toate înregistrările din tabela mailing_list din linie comandă astfel: Select * from mailing_list; Problema 5: Să se populeze tabela studenți astfel încât să rezulte tabela: stud_id nume varsta 1 claudiu 14 2 Maria 12 Problema6: Să se extragă din tabela studenți valorile câmpurilor nume și vârstă astfel: SELECT nume, varsta FROM studenti; Problema7: Să se extragă din tabela studenți valorile câmpului nume pentru care toate valorile campului id mai mari ca 1.
SELECT nume FROM studenti WHERE id > 1; Problema8: Să se extragă din tabela studenți, studentul cu numele claudiu SELECT stud_id, nume FROM studenti WHERE nume = claudiu' ; Problema9. Să se extragă din tabela studenți acele inregistrări pentru care în campul vârsta există valoarea 12. SELECT * FROM studenti WHERE varsta = '12' ; Problema 10: Să se afișeze înregistrările din tabelul studenți ordonate crescător după câmpul vârstă. SELECT * FROM studenti ORDER BY varsta ; Problema 11: Să se afișeze înregistrările din tabelul studenți ordonate descrescător după câmpul vârstă. SELECT * FROM studenti ORDER BY varsta DESC ; Problema 12. Se afișeze înregistrările din tabelul studenți care conțin litera a în câmpul nume. SELECT * FROM student WHERE nume LIKE '%a%'; Problema 13. Se afișeze înregistrările din tabelul studenți care conțin litera r în câmpul nume. Problema 14. Să se afişaze cel mai tanar student folosind clauza LIMIt SELECT * FROM studenti ORDER BY varsta LIMIT 1; Problema 15. Să se afişaze ultimii doi studenți ai tabelei studenți ordonați descrescător după nume. SELECT * FROM studenti ORDER BY nume DESC LIMIT 3 ; Problema 16. Să se afișeze în variabila Numar_cursanti numărul total de înregistrări din tabela studenți. SELECT COUNT(*) AS numar_cursanti FROM studenti ; Problema 17: Să se afișeze în variabila min vârsta minimă a studenților din tabelul studenți.
SELECT MIN(varsta) as min FROM studenti; Problema 18: Să se afișeze în variabila max vârsta maximă a studenților din tabelul studenți. SELECT MAX(varsta) as max FROM studenti; Problema 19. Să se afișeze vârsta medie a studenților din tabelul studenți. SELECT AVG(varsta) FROM studenti; Problema 20. Să se afișeze vârsta totală a studenților din tabelul studenți. SELECT SUM(varsta) FROM studenti; Problema 21: Să se determine studentul care contine cea mai mare vârstă. Select nume,varsta from studenti where varsta=(select max(varsta) from studenti) ; Problema 22: Să se creeze tabela numere_telefon cu câmpurile telefon și email unde email este cheie străină. Să se introducă inregistrările astfel încât să avem următoarea tabelă: Telefon email 121212121 claudiu@itu.ro 747474747 Maria@itu.ro 454545454 Bianca@itu.ro 888383833 Ion@hotmail.com CREATE TABLE numere_telefon (telefon VARCHAR(50) NOT NULL, email VARCHAR(100) NOT NULL); ALTER TABLE numere_telefon ADD FOREIGN KEY (email) REFERENCES mailing_list(email);
Problema 23: Să afișeze toate înregistrările din tabele mailing_list și numere_telefon: SELECT * FROM lista_email, numbere_telefon ; Problema 24: Să afișeze toate nume, telefon și email pt fiecare student. SELECT * FROM lista_email, numbere_telefon WHERE lista_email.email = numbere_telefon.email ; Problema 25: Să se creeze tabela Suspecti și scenacrimei a căror structură și conținut să fie: Problema 26: Să se creeze o interogare care să afișeze pe ecran numele criminalului si caracteristicile lui: SELECT Nume, Loc_crima, obiect FROM Suspecti, scenacrimei WHERE adn_profil = adn_profil ; Problema 27: Să se creeze o interogare care să afișeze pe ecran numele criminalilor si caracteristicile lor: SELECT Nume, Loc_crima, obiect FROM Suspecti, scenacrimei WHERE adn_profil = adn_profil ; Problema 28. Exemplificare LEFT JOIN și vizualizare effect. SELECT Loc_crima, obiect, nume FROM scenacrimei LEFT JOIN Suspecti ON suspecti.adn_profil = scenacrimei.adn_profil ; Problema 29. Exemplificare RIGHT JOIN și vizualizare effect. SELECT Loc_crima, obiect, nume FROM Suspecti RIGHT JOIN scenacrimei ON suspecti.adn_profil = scenacrimei.adn_profil ; Probelma 30. Să se modifice conținutul tabelei mailing_list astfel încât adresa de email a studentului Maria să fie Maria@yahoo.ro' UPDATE mailing_list SET email= Maria@yahoo.ro' WHERE nume= Maria' ; Probelma 31. Să se șteargă din tabela mailing_list datele despre Bianca.
DELETE FROM mailing_list WHERE nume= Bianca' ; Problema 32. Creați o tabelă expenses cu structura și conținutul următor a. Să se calculeze total cheltuieli per departament SELECT dept, SUM(amount) FROM expenses GROUP BY dept ; b. Suma cheltuielilor se grupează după cheltuieli şi departament: SELECT expense, dept, SUM(amount) AS total FROM expenses GROUP BY expense, dept ; c. Să se calculeze total cheltuieli per cheltuieli și departament pt perioada [2002,2003] SELECT expense, dept, SUM(amount) AS total FROM expenses WHERE 2002 <= year AND year <= 2003 GROUP BY expense, dept ; d. Care este suma totală cheltuită pe cheltuiala? SELECT expense, SUM(amount) FROM expenses GROUP BY expense ; e. Care este media cheltuită pe cheltuiala? SELECT expense, AVG(amount) FROM expenses GROUP BY expense ; f. Care este suma total cheltuită per an? SELECT year, SUM(amount) FROM expenses GROUP BY year ; g. Care este suma total cheltuită per an per departament? SELECT year, dept, SUM(amount) AS total FROM expenses GROUP BY year, dept ; h. Care este suma total cheltuită per an în 2003-2002? SELECT year, SUM(amount) FROM expenses WHERE 2002 <= year AND year <= 2003 GROUP BY year ; i. Care este cea mai mare cheltuială per fiecare departament? SELECT dept, MAX(amount) FROM expenses GROUP BY dept ; j. Care este cea mai mare cheltuială per fiecare departament per an?
SELECT dept, year, MAX(amount) FROM expenses GROUP BY dept, year ; k. Care este cea mai mare cheltuială per fiecare departament per an? SELECT dept, year, MAX(amount) FROM expenses HAVING MAX(amount) > 500000; Probleme nerezolvate-muncă individuală predare Probelma1. Să se creeze o bază de date tema care să conţină tabelele: Tabela1. Profesori: Idprofesor int unsigned not null auto_increment primary key idstudent int unsigned not null idmaterie int unsigned not null Nume_Profesor varchar(30) Materie varchar(30) Tabela 2: Materii idmateria int unsigned not null auto_increment primary key idprofesor int unsigned not null idstudent int unsigned not null Numematerie varchar(20) anstudiu tinyint(1) Tabela3. Studenti idstudent int unsigned not null auto_increment primary key idmateria int unsigned not null idprofesor int unsigned not null Numestudent varchar(30) Adresa varchar(40) anstudiu tinyint(1) Tabela4. Note
idnota int unsigned not null auto_increment primary key idmateria int unsigned not null idstudent int unsigned not null note_sesiune_vara double(10,2) note_sesiune_restanta double(10,2) note_reexaminare double(10,2) Cerințe: 1. Să se introducă în tabela Studenti valori doar în 3 câmpuri neconsecutive se va proceda astfel: 2. Să se introducă în tabela Studenti în câmpul Numestudent o valoare nulă. 3. Afişarea pe rând a datelor existente în toate tabele 4. Afişarea valorilor câmpului Numestudent din tabela Studenti 5. Afişarea valorilor câmpurilor anstudiu, Numematerie din tabela Materii în această ordine 6. Afişarea din tabela Note a a înregistrărilor care au în câmpul note_sesiune_vara valoare 9 7. Afişarea valorilor câmpului Numestudent din tabela Studenti care au numele POP 8. Afişarea valorilor câmpului Numestudent din tabela Studenti care au anul de studiu 1 9. Afişa pe ecran a tutror profesorilor al căror nume conţin litera a. 10. Afişa pe ecran a tutror materilor din tabela Profesori al căror denumire conţine litera i. 11. Să se afişeze numele profesorilor în ordine descrescătoare. 12. Să se afişeze numele studenţilor în ordine crescătoare. 13. Afişaţi numărului de studenţi existente în tabela Studenti 14. Afişaţi doar primele 2 înregistrări din tabela Studenti 15. Calculaţi nota maximă din câmpul note_sesiune_vara a tabelei Note 16. Să se modifice valorile ultimei înregistrări din tabela Studenţi 17. Să se modifice valorilor tuturor câmpurilor pentru înregistrările din tabela Studenti care sunt în anul 2
18. Să se modifice valorilor tuturor câmpurilor pentru înregistrările din tabela Studenti care sunt în anul de studiu 2 şi care conţin litera a în câmpul Numestudent Problema 2.Creaţi o baza de date magazin care să conţină tabela produse a cărei structură este 1. Să se adăuge o nouă coloană la sfârşitul tabelului Produse cu caracteristicile : produs_unitatemasura varchar(10); 2. Să se adăuge coloana exemplu int(3) unsigned după câmpul produs_pret în cadrul tabelului Produse 3. Să se modifice numelui câmpui exemplu în produs_exemplu 4. Să se modifice tipului de date al câmpului produs_exemplu din int(3) unsigned în mediumint unsigned; 5. Să se şteargă coloana produs_exemplu din cadrul tabelei Produse 6. Să se redenumească tabela Produse în Produs. 7. Să se şteargă din tabela Produse înregistrările care au pret_produs mai mare egal cu 400 8. Să se şteargă din tabela Produse înregistrările care au pret_produs mai mare egal cu 400 şi conţin litera a în numele produselor 9. Să se populeze toate tabele cu minim 5 înregistrări Exemple adăugarea unei noi coloane la sfârşitul tabelului Produse se face astfel: mysql>alter TABLE produse ADD produs_unitatemasura varchar(10);
2.adăugarea unei noi coloane după câmpul produs_pret în cadrul tabelului Produse se face astfel: mysql>alter TABLE produse ADD exemplu int(3) unsigned AFTER produs_pret; 3.modificarea numelui unui câmp exemplu în produs_exemplu din cadrul tabelei Produse se face: mysql>alter TABLE produse CHANGE exemplu produs_exemplu int(3) unsigned; 4.modificarea tipului de date pentru câmpul produs_exemplu se face: mysql>alter TABLE produse CHANGE produs_exemplu produs_exemplu mediumint unsigned; 5. ştergerea unei coloane din cadrul tabelei Produse se face astfel: mysql> ALTER TABLE produse DROP produs_exemplu; mysql> ALTER TABLE produse DROP produs_unitatedemasurare; 6.redenumirea unei tabele se face cu comanda RENAME astfel: mysql> ALTER TABLE produse RENAME produs;