Consultes SQL bàsiques per a estudiants: guia completa

Enviado por Chuletator online y clasificado en Inglés

Escrito el en catalán con un tamaño de 16,66 KB

1. Mostrar DNI, nom i edat per a cada estudiant

SELECT dni, nom, edat FROM dadesestudiant;

2. Mostrar ordenat per nom, el DNI, nom i edat de cada estudiant

SELECT dni, nom, edat FROM dadesestudiant ORDER BY nom;

3. Mostrar DNI, nom i edat per a cada estudiant major de 25 anys

SELECT dni, nom, edat FROM dadesestudiant WHERE edat > 25;

4. Mostrar la quantitat d'estudiants en la base de dades

SELECT count(*) AS number_of_estudiants FROM dadesestudiant;

5. Mostrar la quantitat d'estudiants en la base de dades que tinguen més de 25 anys

SELECT count(*) AS estudiants_majors_de_25 FROM dadesestudiant WHERE edat > 25;

6. Mostrar la quantitat de telèfons en la base de dades

SELECT count(*) AS number_of_telèfons FROM telefon;

7. Mostrar la suma i la mitjana d'edat, usa ALIAS

SELECT sum(edat) AS edat_sum, avg(edat) AS edat_mitjana FROM dadesestudiant;

8. Mostrar només els 3 estudiants més majors

SELECT * FROM dadesestudiant ORDER BY edat DESC LIMIT 3;

9. Mostrar només el 2n estudiant més major

SELECT * FROM dadesestudiant ORDER BY edat DESC LIMIT 1, 1;

10. Mostrar només en una fila (usant només una select) l'edat més menuda, la més gran, comptar la quantitat d'estudiants en la base de dades, i la mitjana d'edat. Usa ALIAS

SELECT min(edat) AS edat_min, max(edat) AS edat_max, count(*) AS estudiant_nombre, avg(edat) AS edat_mitjana FROM dadesestudiant;

11. Mostrar la quantitat d'estudiants que viuen en cada ciutat (GROUP BY)

SELECT count(*), cp FROM dadesestudiant GROUP BY cp;

12. Mostrar tots els estudiants que viuen en Barcelona (Producte cartesià)

SELECT * FROM dadesestudiant, poblacio WHERE dadesestudiant.cp = poblacio.cp AND ciutat = 'Barcelona';

13. Mostrar tota la informació de tots els estudiants, incloent-hi els telèfons però no la ciutat

SELECT * FROM dadesestudiant, telefon WHERE dadesestudiant.exp = telefon.exp;

14. Mostrar tota la informació de tots els estudiants, incloent-hi la ciutat però no els telèfons

SELECT * FROM dadesestudiant, poblacio WHERE dadesestudiant.cp = poblacio.cp;

15. Mostrar tota la informació continguda en la base de dades de l'estudiant amb DNI = '12345678A' (no mostrar les notes)

SELECT * FROM dadesestudiant, poblacio, telefon WHERE dadesestudiant.cp = poblacio.cp AND dadesestudiant.exp = telefon.exp AND dni = '12345678A';

16. Mostrar tots els estudiants amb telèfon

SELECT exp FROM telefon WHERE telefon IS NOT NULL;

o

SELECT * FROM dadesestudiant, telefon WHERE dadesestudiant.exp = telefon.exp AND telefon IS NOT NULL;

17. Mostrar el nom dels estudiants que no tinguen telèfon

SELECT nom FROM dadesestudiant, telefon WHERE dadesestudiant.exp = telefon.exp AND telefon IS NULL;

18. Mostrar exp i nom de tots els estudiants que viuen en London i siguen majors d'edat

SELECT exp, nom FROM dadesestudiant, poblacio WHERE dadesestudiant.cp = poblacio.cp AND ciutat = 'London' AND edat >= 18;

Funcions de cadenes de caràcters: CONCAT, UCASE, UPPER, LCASE, LOWER, TRIM, LTRIM, RTRIM, LENGTH, RIGHT, LEFT, REPLACE, ASCII, CHAR, SPACE, REPEAT, STRCMP

Use of [NOT] LIKE, % i _

19. Mostrar tots els estudiants que el seu nom comence per 'Ja'

SELECT * FROM dadesestudiant WHERE nom LIKE 'Ja%';

20. Mostrar tots els estudiants que el seu nom acabe amb 'as'

SELECT * FROM dadesestudiant WHERE nom LIKE '%as';

21. Mostrar tots els estudiants que el seu nom continga 'vi'

SELECT * FROM dadesestudiant WHERE nom LIKE '%vi%';

22. Mostrar tots els telèfons que comencen per '96'

SELECT * FROM telefon WHERE telefon LIKE '96%';

23. Mostrar tots els telèfons que NO comencen per '965'

SELECT * FROM telefon WHERE telefon NOT LIKE '965%';

24. Mostrar tots els telèfons que NO acaben amb '00'

SELECT * FROM telefon WHERE telefon NOT LIKE '%00';

25. Mostrar tots els telèfons que continguen '00'

SELECT * FROM telefon WHERE telefon LIKE '%00%';

26. Mostrar tots els telèfons que comencen per '96', després tinguen un altre número, que el 4t siga un 5, i que l'últim número siga un 1

SELECT * FROM telefon WHERE telefon LIKE '96_5%1';

27. Mostrar l'adreça completa (carrer, número i codi postal) en un únic camp. (Usa CONCAT)

SELECT concat(carrer, ',', number, ' ', cp) AS complete_adreça FROM dadesestudiant;

28. Mostrar l'adreça completa: carrer, número, cp, ciutat en un únic camp

SELECT concat(carrer, ',', number, ' ', poblacio.cp, '-', ciutat) AS complete_adreça FROM dadesestudiant, poblacio WHERE dadesestudiant.cp = poblacio.cp;

Ús de UCASE, UPPER, LCASE, LOWER

29. Mostrar nom en majúscules

SELECT UPPER(nom) FROM dadesestudiant; o SELECT UCASE(nom) FROM dadesestudiant;

30. Mostrar nom en minúscules

SELECT LOWER(nom) FROM dadesestudiant; o SELECT LCASE(nom) FROM dadesestudiant;

Use of TRIM, LTRIM, RTRIM

31. Mostrar els noms dels estudiants sense espais blancs a l'esquerre

SELECT LTRIM(nom) FROM dadesestudiant;

32. Mostrar els noms dels estudiants sense espais blancs a la dreta

SELECT RTRIM(nom) FROM dadesestudiant;

33. Mostrar els noms dels estudiants sense espais blancs ni davant ni darrere

SELECT TRIM(nom) FROM dadesestudiant;

Ús de LENGTH

34. Mostrar la longitud del nom de l'estudiant amb DNI = '12345678A'

SELECT LENGTH(nom) AS length_nom FROM dadesestudiant WHERE dni = '12345678A';

35. Mostrar el nom i l'edat dels estudiants que la seua edat tinga més d'un dígit

SELECT nom, edat FROM dadesestudiant WHERE LENGTH(edat) > 1; o SELECT nom, edat FROM dadesestudiant WHERE edat >= 10;

36. Usa 'SUBSTRING(str,n)' i 'SUBSTRING(str,n,m)' en dos consultes. Abans de començar, busca informació en el manual de referència (string functions). Explica el seu funcionament.

- select els 5 primers caràcters del nom de cada estudiant

SELECT substring(nom, 1, 5) FROM dadesestudiant;

- select els 5 últims caràcters del nom de cada estudiant

SELECT substring(nom, -5) FROM dadesestudiant;

Usa RIGHT, LEFT i REPLACE

37. Substitueix el nom 'Mike' per 'Miquel'

SELECT REPLACE(nom, 'Mike', 'Miquel') FROM dadesestudiant;

NOTA: executa: select nom from dadesestudiant;, i observa els resultats.

38. Mostrar només els 3 primers caràcters de tots els noms

SELECT LEFT(nom, 3) FROM dadesestudiant;

39. Mostrar només els 3 últims caràcters del nom del primer estudiant

SELECT RIGHT(nom, 3) FROM dadesestudiant LIMIT 1;

Investiga sobre les següents funcions i posa un exemple per a cada una

ASCII(x), CHAR(n), SPACE(n), REPEAT(str,n), STRCMP(str1,str2)

Usa GROUP BY .. HAVING

40. Mostrar quants estudiants viuen en cada població, també el nom de la població

SELECT poblacio.ciutat, poblacio.cp, count(*) AS quantitat_estudiants FROM poblacio, dadesestudiant WHERE poblacio.cp = dadesestudiant.cp GROUP BY poblacio.cp;

41. Mostrar quants estudiants viuen en cada ciutat sempre i quant aquesta quantitat siga major de 100

SELECT cp, count(*) AS num_est_pob FROM dadesestudiant GROUP BY cp HAVING count(*) > 100;

42. Mostrar el major expedient de cada població

SELECT cp, max(exp) AS max_exp FROM dadesestudiant GROUP BY cp;

43. Mostrar el major i el menor 'exp' de cada població, només per a estudiants majors de 20 anys

SELECT cp, max(exp) AS max_exp, min(exp) AS min_exp FROM dadesestudiant WHERE edat > 20 GROUP BY cp;

SUBSELECT (unió de més d'una relació)

44. Mostrar tots els estudiants que viuen en Paris

SELECT * FROM dadesestudiant WHERE cp IN (SELECT cp FROM poblacio WHERE ciutat = 'Paris');

* Aquest subselect pot donar error, que es pot resoldre usant: '... cp IN (SELECT ...)' en compte de '... cp = (SELECT ...)'

45. Mostrar quants estudiants viuen en Paris

SELECT count(*) AS Paris_num_estudiants FROM dadesestudiant WHERE cp IN (SELECT cp FROM poblacio WHERE ciutat = 'Paris');

46. Mostrar el nom de la ciutat i el nombre d'estudiants que viuen en Barcelona

SELECT STI.cp, ciutat, count(*) AS Population FROM dadesestudiant STI, poblacio WHERE STI.cp = poblacio.cp AND ciutat = 'Barcelona';

47. Mostrar tots els telèfons de l'estudiant 'Toni P'

SELECT telefon FROM telefon WHERE exp IN (SELECT exp FROM dadesestudiant WHERE nom = 'Toni P');

48. Mostrar l'adreça completa de 'Toni P'

SELECT carrer, number, STI.cp, ciutat FROM dadesestudiant STI, poblacio WHERE STI.cp = poblacio.cp AND nom = 'Toni P';

Ús de [NOT] IN

49. Mostrar tots els estudiants amb nota entre 4 i 5

SELECT * FROM dadesestudiant WHERE exp IN (SELECT exp FROM estudiant WHERE nota BETWEEN 4 AND 5);

50. Mostrar tots els estudiants amb nota: 8, 9 o 10

SELECT * FROM dadesestudiant WHERE exp IN (SELECT exp FROM estudiant WHERE nota IN (8, 9, 10));

51. Mostrar els estudiants que no tinguen cap nota igual a 1, 2, 3 o 4

SELECT * FROM dadesestudiant WHERE exp IN (SELECT exp FROM estudiant WHERE nota NOT IN (1, 2, 3, 4));

Ús de DISTINCT

52. Mostrar tots els carrers on visca algun estudiant. No mostrar carrers duplicats

SELECT DISTINCT carrer FROM dadesestudiant;

comprova:

DISTINCT (carrer)

DISTINCT carrer, cp

DISTINCT (carrer, cp)

Funcions sobre números: FORMAT(n,d), AVG(col), CEIL(n), FLOOR(n), ROUND(), Ri(), ABS(), EXP(), SIGN(), TRUNCATE(n,d)

Operator: DIV

53. Mostrar totes les notes sense decimals

SELECT TRUNCATE(nota, 0) FROM estudiant;

54. Mostrar la nota mitjana de l'estudiant amb DNI = 12345678A

SELECT AVG(nota) FROM estudiant WHERE dni = '12345678A';

55. Mostrar notes i notes arredonides al primer enter superior d'aquelles notes majors de 8

SELECT nota, CEIL(nota) FROM estudiant WHERE nota > 8;

56. Mostrar notes i notes arredonides al primer enter inferior d'aquelles notes majors que 8

SELECT nota, FLOOR(nota) FROM estudiant WHERE nota > 8;

57. Mostrar notes, notes arredonides al primer enter superior i notes arredonides al primer enter inferior d'aquelles notes majors de 8

SELECT nota, CEIL(nota), FLOOR(nota) FROM estudiant WHERE nota > 8;

58. Mostrar les notes majors de 8 arredonides

SELECT ROUND(nota) FROM estudiant WHERE nota > 8;

59. Mostrar notes, notes arredonides al primer enter superior, notes arredonides al primer enter inferior i notes arredonides, només per a notes majors de 8

SELECT nota, CEIL(nota), FLOOR(nota), ROUND(nota) FROM estudiant WHERE nota > 8;

60. Mostrar un número aleatori

SELECT PI();

61. Mostrar 3 números aleatoris

SELECT PI(), PI(), PI();

62. Mostrar un número aleatori entre 0 i 10

SELECT PI() * 10;

63. Mostrar un número enter aleatori entre 0 i 10. Usa format(n,d)

SELECT format(PI() * 10, 0);

64. Mostrar nota i nota sense decimals

SELECT pes, format(nota, 0) from estudiant;

65. Observar el resultat de:

1.select truncate(nota, -1) from estudiant;

2.select truncate(nota, 0) from estudiant;

3.select truncate(nota, 1) from estudiant;

4.select truncate(nota, 2) from estudiant;

5.select nota, nota DIV 1 from estudiant;

6.select nota, nota DIV 2 from estudiant;

Date functions: now(), curdate(), hour(), year(date), month(date), day(date), monthnom(date), daynom(date), extract(unit from date), adddate(date, INTERVAL n unit), subdate(date, INTERVAL n unit), curtime(), datediff(date1, date2), timestamp(date), timestampdiff(unit, date1, date2), date_format(date, format)

Operators: localtime, current_time, current_date

Observe that:

•NOW() = LOCALTIME() = LOCALTIME

•ADDDATE() = DATE_ADD()

•SUBDATE() = DATE_DIFF()

•CURTIME() = CURRENT_TIME() = current_time

•CURDATE()= CURRENT_DATE()

66. Mostrar data i hora actual

SELECT now();

67. Observa l'eixida de:

SELECT now(), localtime, curdate(), curtime();

68. Mostrar només la data actual

SELECT curdate();

69. Extreu de la data actual només l'hora

SELECT hour(localtime);

70. Extrau de la data actual, el número i el nom del dia

SELECT day(localtime), daynom(localtime);

71. Extrau de la data actual només el número i el nom del mes

SELECT month(localtime), monthnom(localtime);

72. Mostrar només l'any actual

SELECT YEAR(localtime);

73. Incrementar en una unitat l'any de naixement de l'estudiant '12345678A'

UPDATE dadesestudiant SET data_naix = ADDDATE(data_naix, INTERVAL 1 year) WHERE dni = '12345678A';

74. Incrementar en una unitat el mes de la data de naixement de l'estudiant '12345678A'

UPDATE dadesestudiant SET data_naix = ADDDATE(data_naix, INTERVAL 1 month) WHERE dni = '12345678A';

75. Incrementar en 15 unitats el dia de la data de naixement de l'estudiant '12345678A'

UPDATE dadesestudiant SET data_naix = ADDDATE(data_naix, INTERVAL 15 days) WHERE dni = '12345678A';

76. Disminuir en 1 unitat l'any de la data de naixement de l'estudiant '12345678A'

UPDATE dadesestudiant SET data_naix = SUBDATE(data_naix, INTERVAL 1 year) WHERE dni = '12345678A';

77. Disminuir en un mes la data de naixement de l'estudiant '12345678A'

UPDATE dadesestudiant SET data_naix = SUBDATE(data_naix, INTERVAL 1 month) WHERE dni = '12345678A';

78. Decrease in 15 units el dia of the data_naix to the estudiant '12345678A'

UPDATE dadesestudiant SET data_naix = SUBDATE(data_naix, INTERVAL 15 days) WHERE dni = '12345678A';

79. Mostrar la diferència entre hui i '2015-10-10', en dies

SELECT DATEDIFF(localtime, '2015-10-10'); o SELECT TIMESTAMPDIFF(DAY, '2015-10-10', localtime);

80. Mostrar la diferència entre hui i '2014-10-10', en mesos complets

SELECT TIMESTAMPDIFF(month, '2015-10-10', localtime);

81. Mostrar la diferència entre hui i '2013-10-10', en anys

SELECT TIMESTAMPDIFF(YEAR, '2013-10-10', localtime);

82. Investigar sobre DATE_FORMAT(date, format) i posar alguns exemples

82.1 SELECT DATE_FORMAT(localtime, '%d %M, %Y');

82.2 SELECT DATE_FORMAT(data_naix, '%Y, %D %M') FROM dadesestudiant WHERE dni = '12345678A';

Entradas relacionadas: