Diferència entre revisions de la pàgina «M2 - Bases de dades / Exercicis UF2: Llenguatges SQL»

De wikiserver
Dreceres ràpides: navegació, cerca
m
(T3: Funcions a nivell de fila)
Línia 351: Línia 351:
 
---------------------- ------------------------- ------------------------------------------
 
---------------------- ------------------------- ------------------------------------------
 
7369                  17/12/80                  Lunes, the Twenty-Second of Junio, 1981                                                                   
 
7369                  17/12/80                  Lunes, the Twenty-Second of Junio, 1981                                                                   
 +
7499                  20/02/81                  Lunes, the Twenty-Fourth of Agosto, 1981                                                                 
 +
7521                  22/02/81                  Lunes, the Twenty-Fourth of Agosto, 1981                                                                 
 +
7566                  02/04/81                  Lunes, the Fifth of Octubre, 1981                                                                         
 +
7654                  28/09/81                  Lunes, the Twenty-Ninth of Marzo, 1982                                                                   
 +
7698                  01/05/81                  Lunes, the Second of Noviembre, 1981                                                                     
 +
7782                  09/06/81                  Lunes, the Fourteenth of Diciembre, 1981                                                                 
 +
7788                  19/04/87                  Lunes, the Twenty-Sixth of Octubre, 1987                                                                 
 +
7839                  17/11/81                  Lunes, the Twenty-Fourth of Mayo, 1982                                                                   
 +
7844                  08/09/81                  Lunes, the Fifteenth of Marzo, 1982                                                                       
 +
7876                  23/05/87                  Lunes, the Thirtieth of Noviembre, 1987                                                                   
 +
7900                  03/12/81                  Lunes, the Seventh of Junio, 1982                                                                         
 +
7902                  03/12/81                  Lunes, the Seventh of Junio, 1982                                                                         
 +
7934                  23/01/82                  Lunes, the Twenty-Sixth of Julio, 1982                                                                   
  
 
</pre>
 
</pre>

Revisió del 18:52, 10 des 2013

Presentació Taules Usuari SCOTT

     Nom Usuari: scott
     contrassenya: tiger

SQL>DESC emp

                           
Nombre                         Nulo     Tipo 
------------------------------ -------- ----------------
EMPNO                          NOT NULL NUMBER(4)       Codi d'empleat.
ENAME                                   VARCHAR2(10)    Cognom. 
JOB                                     VARCHAR2(9)     Ofici.
MGR                                     NUMBER(4)       Codi del cap de l'empleat.
HIREDATE                                DATE            Data de contractació.
SAL                                     NUMBER(7,2)     Salari.
COMM                                    NUMBER(7,2)     Comissió del empleats comercials (SALESMAN).
DEPTNO                                  NUMBER(2)       Codi del departament de l'empleat.

SQL>SELECT * FROM emp

EMPNO   ENAME   JOB         MGR   HIREDATE   SAL    COMM  DEPTNO 
------  ------  ---------  -----  ---------  ----  -----  ------
7369	SMITH	CLERK	   7902	  17/12/80    800  (null)     20
7499 	ALLEN	SALESMAN   7698	  20/02/81   1600    300      30
7521 	WARD	SALESMAN   7698	  22/02/81   1250    500      30
7566	JONES	MANAGER	   7839	  02/04/81   2975  (null)     20
7654 	MARTIN	SALESMAN   7698	  28/09/81   1250   1400      30
7698	BLAKE	MANAGER	   7839	  01/05/81   2850  (null)     30
7782	CLARK	MANAGER	   7839	  09/06/81   2450  (null)     10
7788	SCOTT	ANALYST	   7566	  19/04/87   3000  (null)     20
7839	KING	PRESIDENT (null)  17/11/81   5000  (null)     10
7844	TURNER	SALESMAN   7698	  08/09/81   1500      0      30
7876	ADAMS	CLERK	   7788	  23/05/87   1100  (null)     20
7900	JAMES	CLERK	   7698	  03/12/81    950  (null)     30
7902	FORD	ANALYST	   7566	  03/12/81   3000  (null)     20
7934	MILLER	CLERK	   7782	  23/01/82   1300  (null)     10

SQL>DESC dept

                           
Nombre                         Nulo     Tipo 
------------------------------ -------- ----------------
DEPTNO                          NOT NULL NUMBER(2)       Codi departament
DNAME                                    VARCHAR2(14)    Nom departament.  
LOC                                      VARCHAR2(13)    Localització. 

SQL>SELECT * FROM dept

DEPTNO      DNAME      LOC         
------  -----------   ----------
    10	ACCOUNTING    NEW YORK
    20	RESEARCH      DALLAS
    30	SALES	      CHICAGO
    40	OPERATIONS    BOSTON

SQL>DESC salgrade

                           
Nombre                         Nulo     Tipo 
------------------------------ -------- ------------
GRADE                                   NUMBER      Nivell salarial. Cada empleat pertany a un nivell en funció del seu salari.
LOSAL                                   NUMBER      Salari mínim del nivell.  
HISAL                                   NUMBER      Salari màxim del nivell. 

SQL>SELECT * FROM salgrade

GRADE  LOSAL   HISAL         
-----  -----   -----   
1	 700	1200
2	1201	1400
3	1401	2000
4	2001	3000
5	3001	9999

Disseny de la BD SCOTT simple

BD SCOTT SIMPLE.png


La taula SALGRADE presenta un cas especial en el que una taula queda "connectada" a la resta mitjançant un non equi join (en aquest cas mitjançant un rang de valors de salaris).

T1: Escriptura bàsica de sentències

1. Inicii una sessió de SQL*Plus utilitzant l'ID d'usuari i password facilitat pel professor.

2. Les comandes SQL*PLUS accedeixen a la base de dades.

Cert / Fals

3. S'executarà correctament la sentència SELECT?

Cert / Fals
      SQL> SELECT rownum, ename, job, sal Salary
        2  FROM   emp;

4. S'executarà correctament la sentència SELECT?

Cert / Fals
      SQL> SELECT *
        2  FROM   salgrade;

5. Hi ha tres errors de codi en aquesta sentència. Pots identificar-los?

      SQL> SELECT empno, ename, salary x 12 ANNUAL SALARY
        2  FROM   emp;

6. Mostra l'estructura de la taula DEPT. Selecciona totes les dades de la taula DEPT.

7. Mostra l'estructura de la taula EMP. Fes una consulta per visualitzar el número d'empleat, cognom, ofici i data d'alta. Guarda la sentència SQL en un fitxer anomenat plq7.sql.

8. Executeu la consulta del fitxer plq7.sql.

9. Fes una consulta per visualitzar només els oficis de la taula EMP.

            JOB
            -----------
            ANALYST
            CLERK
            MANAGER
            PRESIDENT
            SALESMAN

10. Carrega plq7.sql en el búfer SQL. Posa-li nom als encapçalaments: Emp #, Employee, Job i Hire Date.

            Emp # Employee  Job        Hire Date
            ----- --------- ---------- ---------------
             7839 KING      PRESIDENT  17-NOV-81
             7698 BLAKE     MANAGER    01-MAY-81
             ...

11. Visualitza el nom concatenat amb l'ofici, separat per una coma i i un espai i etiquete la columna amb Employee and Title.

            Employee and Title
            -------------------
            KING, PRESIDENT 
            BLAKE, MANAGER   
            ...

12. Fes una consulta per visualitzar totes les dades de la taula EMP. Separa cada columna amb una coma. Etiqueta la columna com THE_OUTPUT.

            THE_OUTPUT
            ---------------------------------------------
            7839,KING,PRESIDENT,,17-NOV-81,5000,,10
            7698,BLAKE,MANAGER,7839,01-MAY-81,2850,,30  
            ...

T2: Restricció i classificació de les dades

1. Fes una consulta per visualitzar el nom i el salari dels empleats que guanyen més de 2850$. Guarda la sentència SQL en un fitxer anomenat p2q1.sql. Executa la consulta.

             ENAME      SAL
             -----      ---- 
             JONES  	2975 
             SCOTT      3000
             KING	5000
             FORD	3000             

2. Fes una consulta per visualitzar el nom del empleat i el codi del departament per l'empleat amb codi 7566.

             ENAME      DEPTNO
             ------     ------
             JONES	    20 
            

3. Modifica p2q1.sql per visualitzar el nom i el salari de tots els empleats que tinguin un salari entre 1500$ i 2850$. Guarda a questa sentència SQL en un fitxer anomenat p2q3.sql. Executa la consulta.

             ENAME       SAL
             ------     ----
             ALLEN	1600
             BLAKE	2850
             CLARK	2450
             TURNER	1500

4. Mostra el nom del empleat, ofici i data d'alta, dels empleats contractats entre el 20 de febrer del 1981 i el 1 de maig del 1981. Ordena la consulta en ordre ascendent per data d'alta.

             ENAME      JOB             HIREDATE
             ------     --------        --------  
             ALLEN	SALESMAN	20/02/81
             WARD	SALESMAN	22/02/81
             JONES	MANAGER	        02/04/81
             BLAKE	MANAGER	        01/05/81

5. Mostra el cognom i número de departament de tots els empleats dels departaments 10 i 30. Ordena'ls de forma descendent per cognom.

             ENAME      DEPTNO
             ------     ------
             ALLEN	    30
             BLAKE	    30
             CLARK	    10
             JAMES	    30
             KING	    10
             MARTIN	    30
             MILLER	    10
             TURNER	    30
             WARD	    30

6. Modifica p2q3.sql per treure un llistat del cognom i salari dels empleats que guanyen més de 1500$ dels departaments 10 o 30. Etiqueta les columnes "Employee" i "Monthly Salary", respectivament. Tornar a guardar la sentència en un fitxer anomenat p2q6.sql. Executa la consulta.

             Employee   Monthly Salary
             --------   --------------
             ALLEN	          1600
             BLAKE	          2850
             CLARK	          2450
             KING	          5000 

7. Mostra el nom i la data d'alta de cada empleat contractat durant l'any 1982.

             ENAME      HIREDATE
             ------     --------
             MILLER	23/01/82

8. Mostra el nom i l'ofici de tots els empleats que no tenen un cap assignat.

             ENAME      JOB           
             ------     --------
             KING       PRESIDENT 

9. Mostra el nom, salari i comissió de tots els empleats que guanyen comissions. Ordeneu per salari i comissió en ordre descendent.

             ENAME      SAL      COMM                   
             -------    ----     ---- 
             ALLEN      1600      300                    
             TURNER     1500        0                      
             MARTIN     1250     1400                   
             WARD       1250      500    

10. Mostra els noms de tots els empleats que tinguin una A en la tercera lletra del seu nom.

             ENAME      
             ------- 
             BLAKE      
             CLARK      
             ADAMS 

11. Mostra el nom de tots els empleats que tinguin dos L en el seu nom i que siguin del departament 30 o que el seu cap sigui el 7782.

             ENAME      
             -------
             ALLEN      
             MILLER    

12. Mostra el nom, ofici i salari de tots els empleats que tinguin com ofici Clerk o Analyst i el seu salari no sigui igual a 1000, 3000 o 5000 dòlars.

             ENAME      JOB       SAL                    
             -------    -----     ----
             SMITH      CLERK      800                    
             ADAMS      CLERK     1100                   
             JAMES      CLERK      950                    
             MILLER     CLERK     1300

13. Modifica p2q6.sql per mostrar el nom, salari i comissió de tots els empleats que tinguin una comissió superior al seu salari incrementat un 10%. Executa la consulta. Guarda-la com p2q13.sql.

             Employee   Monthly Salary    COMM                   
             ---------- --------------    ---- 
             MARTIN               1250    1400         

T3: Funcions a nivell de fila

1. Fes una consulta que mostri la data actual. Etiqueta la columna com a Date.

             Date                     
             --------
             10/12/13                

2. Mostra el número de l'empleat, nom, salari i increment del salari del 15% sense decimals. Etiqueta la columna com a New Salary. Guarda la sentència SQL en un fitxer anomenat p3q2.sql.


3. Executa la consulta del fitxer p3q2.sql.

             EMPNO                  ENAME      SAL                    New Salary             
             ---------------------- ---------- ---------------------- ---------------------- 
             7369                   SMITH      800                    920                    
             7499                   ALLEN      1600                   1840                   
             7521                   WARD       1250                   1438                   
             7566                   JONES      2975                   3421                   
             7654                   MARTIN     1250                   1438                   
             7698                   BLAKE      2850                   3278                   
             7782                   CLARK      2450                   2818                   
             7788                   SCOTT      3000                   3450                   
             7839                   KING       5000                   5750                   
             7844                   TURNER     1500                   1725                   
             7876                   ADAMS      1100                   1265                   
             7900                   JAMES      950                    1093                   
             7902                   FORD       3000                   3450                   
             7934                   MILLER     1300                   1495                   

4. Modifica la consulta p3q2.sql per afegir una columna que resti el antic salari del nou. Etiqueteu la columna com Increase. Torna a executar la consulta.

             EMPNO                  ENAME      SAL                    New Salary             Increase               
             ---------------------- ---------- ---------------------- ---------------------- ---------------------- 
             7369                   SMITH      800                    920                    120                    
             7499                   ALLEN      1600                   1840                   240                    
             7521                   WARD       1250                   1438                   188                    
             7566                   JONES      2975                   3421                   446                    
             7654                   MARTIN     1250                   1438                   188                    
             7698                   BLAKE      2850                   3278                   428                    
             7782                   CLARK      2450                   2818                   368                    
             7788                   SCOTT      3000                   3450                   450                    
             7839                   KING       5000                   5750                   750                    
             7844                   TURNER     1500                   1725                   225                    
             7876                   ADAMS      1100                   1265                   165                    
             7900                   JAMES      950                    1093                   143                    
             7902                   FORD       3000                   3450                   450                    
             7934                   MILLER     1300                   1495                   195  

5. Mostra el nom de l'empleat, data de contractació i data de revisió del salari, la cual és el primer Dilluns desprès de sis mesos de servei. Etiqueu la columna com REVIEW. Formata les dates per a que apareixin similars a "Sunday, the Seventh of September, 1981".

EMPNO                  HIREDATE                  REVIEW
---------------------- ------------------------- ------------------------------------------
7369                   17/12/80                  Lunes, the Twenty-Second of Junio, 1981                                                                   
7499                   20/02/81                  Lunes, the Twenty-Fourth of Agosto, 1981                                                                   
7521                   22/02/81                  Lunes, the Twenty-Fourth of Agosto, 1981                                                                   
7566                   02/04/81                  Lunes, the Fifth of Octubre, 1981                                                                          
7654                   28/09/81                  Lunes, the Twenty-Ninth of Marzo, 1982                                                                     
7698                   01/05/81                  Lunes, the Second of Noviembre, 1981                                                                       
7782                   09/06/81                  Lunes, the Fourteenth of Diciembre, 1981                                                                   
7788                   19/04/87                  Lunes, the Twenty-Sixth of Octubre, 1987                                                                   
7839                   17/11/81                  Lunes, the Twenty-Fourth of Mayo, 1982                                                                     
7844                   08/09/81                  Lunes, the Fifteenth of Marzo, 1982                                                                        
7876                   23/05/87                  Lunes, the Thirtieth of Noviembre, 1987                                                                    
7900                   03/12/81                  Lunes, the Seventh of Junio, 1982                                                                          
7902                   03/12/81                  Lunes, the Seventh of Junio, 1982                                                                          
7934                   23/01/82                  Lunes, the Twenty-Sixth of Julio, 1982                                                                     


6. Per a cada empleat mostra el nom de l'empleat i calcula el nombre de mesos entre avui i la data de contractació. Etiqueta la consulta com MONTHS_WORKED. Ordena els resultats per el nombre de mesos treballats. Arrodoneix el nombre de mesos cap amunt fins al proper nombre enter.


7. Escriu una consulta que mostri la següent informació de cada empleat: <nom empleat> earns <salari> monthly but wants <3 vegades més>. Etiqueta la columna com Dream Salaries.


8. Fes una consulta per mostrar el nom i salari de tots els empleats. Formata el salari per a que tingui una longitud de 15 caràcters i ompli el costat esquerra amb $. Etiqueta la columna com SALARY.


9. Escriu una consulta que visualitzi el nom de l'empleat amb la primera lletra en majúscules, la resta en minúscules i la longitud dels seus noms, para tots els empleats que comencin per J, A o M. Doneu a les columnes una etiqueta apropiada.


10. Mostra el nom, la data de contractació i dia de la setmana que va començar l'empleat. Etiqueta la columna com DAY. Ordena els resultats per el dia de la setmana començant per Dilluns.



11. Fes una consulta que mostri el nom de l'empleat i importi de la comissió. Si el empleat no té comissió mostreu el literal "No Commission". Etiqueta la columna com COMM.




T4: Visualització de dades a partir de varies taules

T5: Dades agregades. Funcions de grup

T6: Subconsultes

T7: Subconsultes multicolumna

T8: Generació d'informes

T9: Manipulació de dades

T10: Creació i gestió de taules

T11: Restriccions

T12: Creació de vistes

T13: Altres objectes de la base de dades

T14: Exercici Resum