SlideShare una empresa de Scribd logo
1 de 90
UF2 · SQL
ASIX – Gestión de bases de datos
DAM – Bases de datos




                                                                        1
                           Departamento de Informática - Carmen Soler
UD2.1. DDL
(Data Description Language)
1.    Creación de una tabla
     1.   Integridad de datos
     2.   Restricciones en CREATE TABLE

2.    Supresión de tablas
3.    Modificación de tablas
4.    Secuencias




                                                                                       2
                                          Departamento de Informática - Carmen Soler
1. Creación de una tabla
 A tener en cuenta antes de crear una tabla
   El nombre de la tabla
      Debe ser un nombre que identifique el contenido
      Ha de tener entre 1 y 30 caracteres de longitud y no puede ser una palabra reservada de Oracle
      Por ejemplo, llamaremos ALUMNOS a una tabla que contenga datos sobre alumnos
   El nombre de cada columna de la tabla
        Debe ser autodescriptivo
        Por ejemplo, DNI, NOMBRE o APELLIDOS
        El tipo de dato y tamaño que tendrá cada columna
        Las columnas que serán obligatorias, los valores por defecto, las restricciones, etc.




                                                                                                        3
                                                          Departamento de Informática - Carmen Soler
1. Creación de una tabla
CREATE TABLE NombreTabla
(
   Columna1 Tipo_dato [NOT NULL],
   Columna2 Tipo_dato [NOT NULL],
   …
)

                     CREATE TABLE ALUMNOS
                     (
                        NUMERO_MATRICULA NUMBER(6) NOT NULL,
                        NOMBRE            VARCHAR(2) NOT NULL,
                        FECHA_NACIMIENTO DATE,
                        DIRECCION         VARCHAR2(30),
                        LOCALIDAD         VARCHAR2(15)
                     )
                                                                            4
                               Departamento de Informática - Carmen Soler
1.1. Integridad de datos
 Una restricción de integridad es una regla que restringe el rango de valores
  para una o más columnas de la tabla.
     Una columna que no pueda almacenar números negativos
     Una cadena de caracteres que sólo pueda contener mayúsculas

 La integridad referencial es la que controla los valores de una columna de
  una tabla que dependen de otra.
     VENTAS y ARTICULOS
         Que no haya una venta con productos inexistentes




                                                                                                  5
                                                     Departamento de Informática - Carmen Soler
1.2. Restricciones en CREATE TABLE
 CREATE TABLE permite definir distintos valores de restricciones sobre una
  tabla:
     Claves primarias
     Claves foráneas
     Campos obligatorios
     Valores de los campos por defecto
     Verificación de condiciones

 Para definir restricciones usamos CONSTRAINT




                                                                                       6
                                          Departamento de Informática - Carmen Soler
1.2. Restricciones en CREATE TABLE
                                                           CREATE TABLE BLOQUES_PISOS (
                                                              CALLE VARCHAR2(30),
 Definir claves primarias                                    NUMERO NUMBER(3),
                                                              PISO NUMBER(2),
     Es una columna o conjunto de columnas
                                                              PUERTA CHAR(1),
     Debe ser un campo único, no nulo y obligatorio          CODIGO_POSTAL NUMBER(5),
                                                              COMENTARIOS VARCHAR2(60),
     Usamos la restricción PRIMARY KEY                       COD_ZONA NUMBER(2),
                                                              DNI VARCHAR2(10),
                                                              PRIMARY KEY (
  CREATE TABLE ZONAS(                                          CALLE, NUMERO, PISO, PUERTA)
     COD_ZONA NUMBER(3),                                   );
     NOMBREZONA VARCHAR2(15)
        NOT NULL,                                          CREATE TABLE ZONAS(
     MASDATOS VARCHAR2(60),                                   COD_ZONA NUMBER(3)
     CONSTRAINT PK_ZONAS                                         PRIMARY KEY,
        PRIMARY KEY(COD_ZONA)                                 NOMBREZONA VARCHAR2(15)
  );                                                             NOT NULL,
                                                              MASDATOS VARCHAR2(60)
                                                           );


                                                                                              7
                                               Departamento de Informática - Carmen Soler
1.2. Restricciones en CREATE TABLE
 Definir claves foráneas
     Es una o más columnas que están asociadas a una clave primaria de otra o de la misma
      tabla
     El valor de las columnas definidas como claves foráneas debe ser NULL o igual a un valore
      de la tabla referenciada (Integridad referencial)



                       PERSONAS                               PROVINCIAS
                        DNI                                    COD_PROV
                        NOMBRE                                 NOM_PROV
                        DIRECCION
                        COD_PROV



                                                                                                  8
                                                 Departamento de Informática - Carmen Soler
1.2. Restricciones en CREATE TABLE
 Definir claves foráneas            CREATE TABLE PERSONAS (
                                       DNI NUMBER(8) PRIMARY KEY,
   CREATE TABLE PROVINCIAS (
                                       NOMBRE VARCHAR2(15),
     COD_PROV NUMBER(2)
                                       DIRECCION VARCHAR2(25),
      PRIMARY KEY,
                                       COD_PROV NUMBER(2)
     NOM_PROV VARCHAR2(15)
                                        NOT NULL
   );
                                        REFERENCES PROVINCIAS
                                     );

   CREATE TABLE PERSONAS (           CREATE TABLE PERSONAS (
     DNI NUMBER(8) PRIMARY KEY,        DNI NUMBER(8) PRIMARY KEY,
     NOMBRE VARCHAR2(15),              NOMBRE VARCHAR2(15),
     DIRECCION VARCHAR2(25),           DIRECCION VARCHAR2(25),
     COD_PROV NUMBER(2) NOT NULL,      COD_PROV NUMBER(2) NOT NULL,
     FOREIGN KEY (COD_PROV)            CONSTRAINT FK_PER_PRO
      REFERENCES PROVINCIAS              FOREIGN KEY (COD_PROV)
   );                                    REFERENCES PROVINCIAS
                                     );


                                                                                 9
                                    Departamento de Informática - Carmen Soler
1.2. Restricciones en CREATE TABLE
 Definir claves foráneas
   Si se quiere que al borrar una provincia, las personas que tengan esa provincia también sean
    eliminadas:
                         CREATE TABLE PERSONAS (
                           DNI NUMBER(8) PRIMARY KEY,
                           NOMBRE VARCHAR2(15),
                           DIRECCION VARCHAR2(25),
                           COD_PROV NUMBER(2) NOT NULL,
                           FOREIGN KEY (COD_PROV)
                            REFERENCES PROVINCIAS
                            ON DELETE CASCADE
                         );


   Si no se define ONDELETE CASCADE, si la provincia pertenece a alguna persona, no podrá ser
    borrada



                                                                                                   10
                                                 Departamento de Informática - Carmen Soler
1.2. Restricciones en CREATE TABLE
 Obligatoriedad
    Obliga a que la columna no pueda tener valores nulos.


                     CREATE TABLE PERSONAS (
                       DNI NUMBER(8) PRIMARY KEY,
                       NOMBRE VARCHAR2(15),
                       DIRECCION VARCHAR2(25),
                       COD_PROV NUMBER(2) NOT NULL,
                       FOREIGN KEY (COD_PROV)
                        REFERENCES PROVINCIAS
                     );




                                                                                           11
                                              Departamento de Informática - Carmen Soler
1.2. Restricciones en CREATE TABLE
 Valores por defecto
     Obliga a que la columna no pueda tener valores nulos.

   CREATE TABLE EJEMPLO (
     DNI VARCHAR2(10) NOT NULL,
     NOMBRE VARCHAR2(30) NOT NULL DEFAULT „No definido‟,
     EDAD NUMBER(2),
     FECHA DATE DEFAULT SYSDATE
   );




                                                                                            12
                                               Departamento de Informática - Carmen Soler
1.2. Restricciones en CREATE TABLE
 Verificación de condiciones
     Limita los valores de los campos a un rango o a unas condiciones:



         CREATE TABLE EJEMPLO (
           DNI VARCHAR2(10) PRIMARY KEY,
           NOMBRE VARCHAR2(30) NOT NULL
            CHECK (NOMBRE=UPPER(NOMBRE)),
           EDAD NUMBER(2) CHECK (EDAD BETWEEN 5 AND 20),
           CURSO NUMBER(2) CHECK (CURSO IN(1,2,3)));




                                                                                              13
                                                 Departamento de Informática - Carmen Soler
1.2. Restricciones en CREATE TABLE
 Verificación de condiciones
     Limita los valores de los campos a un rango o a unas condiciones:

   CREATE TABLE EJEMPLO (
     DNI VARCHAR2(10) PRIMARY KEY,
     NOMBRE VARCHAR2(30) NOT NULL,
     EDAD NUMBER(2),
     CURSO NUMBER(2),
     CONSTRAINT COMP_EDAD
       CHECK (EDAD BETWEEN 5 AND 20),
     CONSTRAINT NOMBRE_MAY
       CHECK (NOMBRE=UPPER(NOMBRE)),
     CONSTRAINT COMP_CURSO
       CHECK (CURSO IN(1,2,3));


                                                                                              14
                                                 Departamento de Informática - Carmen Soler
1.2. Restricciones en CREATE TABLE
 La restricción UNIQUE
    Evita valores repetidos de la misma columna


   CREATE TABLE EJEMPLO (
     DNI VARCHAR2(10) PRIMARY KEY,
     NOMBRE VARCHAR2(30) UNIQUE,
     EDAD NUMBER(2)
   );




                                                                                           15
                                              Departamento de Informática - Carmen Soler
1.2. Restricciones en CREATE TABLE
 Las restricciones en tablas de sistema
     Existen una serie de vistas que contienen información general referente a las restricciones
      definidas en las tablas:
         USER_CONSTRAINTS
               Definiciones de restricciones de tablas propiedad del usuario
         ALL_CONSTRAINTS
               Definiciones de restricciones de tablas a las que puede acceder el usuario
         DBA_CONSTRAINTS
               Todas las definiciones de restricciones sobre todas las tablas




                                                                                                     16
                                                        Departamento de Informática - Carmen Soler
2. Supresión de tablas
 Con la orden DROP TABLE
 Cada usuario puede borrar sus propias tablas
 Sólo el administrador de la base de datos puede borrar las tablas de los
  demás.
 Ejemplo:
     DROP TABLE EMPLEADO;
     DROP TABLE PROVINCIAS;
     DROP TABLE PROVINCIAS CASCADE CONSTRAINT;




                                                                                      17
                                         Departamento de Informática - Carmen Soler
3. Modificación de tablas
 Con la orden ALTER TABLE
 Sintaxis general

   ALTER TABLE nombretabla
   {[ADD (columna [, columna] …)]
   [MODIFY (columna [, columna] …)]
   [ADD CONSTRAINT restricción]
   [DROP CONSTRAINT restricción]};




                                                                            18
                               Departamento de Informática - Carmen Soler
3. Modificación de tablas
 Ejemplos

  ALTER TABLE EJEMPLO ADD (SEXO CHAR(1), EDAD NUMBER(2));

  ALTER TABLE EJEMPLO MODIFY (SEXO CHAR(1) NOT NULL, EDAD
  NUMBER(4));

  ALTER TABLE EMPLEADO ADD CONSTRAINT APELLIDO_UQ
  UNIQUE(apellido);

  ALTER TABLE EMPLEADO DROP CONSTRAINT APELLIDO_UQ;




                                                                           19
                              Departamento de Informática - Carmen Soler
4. Secuencias
 Oracle proporciona objetos de secuencia para la generación de números
  autonuméricos.
 A la hora de generarlo, podemos utilizar todos los parámetros posibles
  (primer caso), o bien, simplificar la orden aceptando los valores por defecto
  (segundo caso).




                                                                                      20
                                         Departamento de Informática - Carmen Soler
4. Secuencias
 Para ir obteniendo los valores de esta secuencia tenemos dos formas:
     Que me dé el siguiente valor que corresponde (caso 1)
     Que me dé el último valor que se asignó (caso 2)




     Para eliminarlas, igual que con todos los objetos de la base de datos.




                                                                                               21
                                                  Departamento de Informática - Carmen Soler
4. Secuencias
 Las secuencias nos serán útiles en diferentes ocasiones:
     Cuando queramos obtener el último valor de primary key que se insertó en la tabla.
     Cuando hacemos un insert de un valor nuevo y queremos obtener qué valor es el siguiente
      de primary key.
     Las secuencias son muy útiles a la hora de programar con PL/SQL.




                                                                                                22
                                                Departamento de Informática - Carmen Soler
UD2.2. DML
(Data Manipulation Language)
1.   Inserción de datos: INSERT
2.   Modificación de datos: UPDATE
3.   Borrado de filas: DELETE
4.   Restricciones




                                                                                  23
                                     Departamento de Informática - Carmen Soler
1. Inserción de datos: INSERT
         INSERT INTO NombreTabla
         [
            (columna [, columna]…)
         ]
         VALUES
            (valor [, valor]);


 Las columnas que no estén en la lista recibirán un NULL
 Si la columna está definida como NOT NULL y además, la columna no
  aparece en la lista, el INSERT fallará.




                                                                                     24
                                        Departamento de Informática - Carmen Soler
1. Inserción de datos: INSERT
CREATE TABLE ALUMNOS
(
   NUMERO_MATRICULA NUMBER(6) NOT NULL,
   NOMBRE            VARCHAR(12) NOT NULL,
   FECHA_NACIMIENTO DATE,
   DIRECCION         VARCHAR2(30),
   LOCALIDAD         VARCHAR2(15)
)


            INSERT INTO ALUMNOS
               (NUMERO_MATRICULA, NOMBRE, FECHA_NACIMIENTO)
            VALUES
               (123456, „Pepito‟, SYSDATE);



                                                                             25
                                Departamento de Informática - Carmen Soler
2. Modificación de datos: UPDATE
         UPDATE NombreTabla
         SET columna1 = valor1, …, columnan = valorn
         WHERE
            condición;




 Con el WHERE seleccionamos las filas que se van a actualizar.
 Si no ponemos nada, la actualización afectará a todas las filas de la tabla.




                                                                                       26
                                          Departamento de Informática - Carmen Soler
2. Modificación de datos: UPDATE
CREATE TABLE ALUMNOS
(
   NUMERO_MATRICULA NUMBER(6) NOT NULL,
   NOMBRE            VARCHAR(12) NOT NULL,
   FECHA_NACIMIENTO DATE,
   DIRECCION         VARCHAR2(30),
   LOCALIDAD         VARCHAR2(15)
)


           UPDATE ALUMNOS
              SET NOMBRE = „Pepito2‟
           WHERE
              NUMERO_MATRICULA = „123456‟;


                                                                             27
                                Departamento de Informática - Carmen Soler
3. Borrado de filas: DELETE
         DELETE FROM NombreTabla WHERE condición;


 Con el WHERE seleccionamos las filas que se van a eliminar.
 Hay que ir con mucho cuidado porque si no ponemos WHERE, se eliminarán
  todas las filas de la tabla.




                                                                                      28
                                         Departamento de Informática - Carmen Soler
3. Borrado de datos: DELETE
CREATE TABLE ALUMNOS
(
   NUMERO_MATRICULA NUMBER(6) NOT NULL,
   NOMBRE            VARCHAR(12) NOT NULL,
   FECHA_NACIMIENTO DATE,
   DIRECCION         VARCHAR2(30),
   LOCALIDAD         VARCHAR2(15)
)


           DELETE FROM ALUMNOS
           WHERE
              NUMERO_MATRICULA = „123456‟;



                                                                             29
                                Departamento de Informática - Carmen Soler
4. Restricciones




                                                                30
                   Departamento de Informática - Carmen Soler
4. Restricciones
 Sobre el modelo anterior
     Si queremos dejar definidas las claves primarias y foráneas en su creación, ¿en qué orden
      deberíamos crear las tablas?
     ¿Y si definiéramos claves primarias y foráneas después de crear las tablas?
     Suponemos que la base de datos está vacía y todas las columnas son NOT NULL. Quiero
      insertar algo en la tabla de PERSONAS y no podré, ¿por qué? ¿cómo lo solucionaría?
     Si hay datos en todas las tablas y no quiero hacer un borrado en cascada, ¿en qué orden
      debo eliminarlos?




                                                                                                  31
                                                 Departamento de Informática - Carmen Soler
UD2.3. Consultas
1.        Estructura general de una consulta   8.        Valor NULL
2.        DESC / DESCRIBE                      9.        ORDER BY
3.        Tipos de datos. Características.     10. Tabla DUAL
4.        DISTINCT                             11. Funciones simples
5.        AS (alias)                                1.     De VARCHAR
                                                    2.     De NUMBER
6.        WHERE
                                                    3.     De DATE
     1.      AND y BETWEEN
     2.      OR e IN                           12. Funciones de grupo
     3.      NOT                               13. Subconsultas
     4.      LIKE                              14. Combinación de tablas
7.        Operaciones aritméticas


                                                                                             32
                                                Departamento de Informática - Carmen Soler
1. Estructura general de una consulta
SELECT [ALL | DISTINCT]
     [expre_column1, expre_column2, …, expre_column|*]
FROM [nombre_tabla1, nombre_tabla2, …, nombre_tablan]
[WHERE condicion]
[ORDER BY expre_column [DESC|ASC] [,expre_column [DESC|ASC]]]


 Ejemplos FROM:


        SELECT nom_alum, nota FROM ALUMNOS;

        SELECT A.nom_alum, A.nota FROM ALUMNOS A;




                                                                             33
                                Departamento de Informática - Carmen Soler
1. Estructura general de una consulta
 Selección por columnas (proyección) Selección por filas (selección)


   SELECT NOMBRE, DEPT_NO FROM DEPART;

   SELECT EMP_NO, APELLIDO, OFICIO, DEPT_NO
   FROM EMPLE
   WHERE DEPT_NO = 20 ORDER BY APELLIDO;

   SELECT * FROM EMPLE WHERE OFICIO=„ANALISTA‟;

   SELECT * FROM EMPLE WHERE DEPT_NO=10 AND
   OFICIO=„ANALISTA‟ ORDER BY APELLIDO DESC, EMP_NO
   DESC;




                                                                                     34
                                        Departamento de Informática - Carmen Soler
2. DESC / DESCRIBE
 Sirve para consultar la estructura de una tabla.



   DESCRIBE HR.REGIONS




                                                                                      35
                                         Departamento de Informática - Carmen Soler
3. Tipos de datos. Características.
 Resumen de los más importantes:
    VARCHAR2(n)
       Para almacenar texto.
       Es una evolución del antiguo CHAR(n)
       La ventaja que tiene VARCHAR2 es que, si no ocupa los n caracteres, el resto de espacio no queda
          asignado.

    NUMBER(n,d)
       Valores numéricos con o sin decimales
       No es obligatorio indicar las cifras n y d, pero si se hace:
             N es el número de dígitos total que tiene el número
             D es el número de decimales que tiene (va incluido en N)




                                                                                                          36
                                                         Departamento de Informática - Carmen Soler
3. Tipos de datos. Características.
 Resumen de los más importantes:
    DATE
        Guarda valores de fecha y hora.

    Otros tipos:
        Timestamp  guarda una fecha expresada en segundos.
        BLOB  Para almacenar contenido multimedia.




                                                                                              37
                                                 Departamento de Informática - Carmen Soler
4. DISTINCT
 Ejemplos DISTINCT:
    SELECT DEPT_NO FROM EMPLE; (1)
    SELECT DISTINCT DEPT_NO FROM EMPLE; (2)


                DEPT_NO (1)             DEPT_NO (2)
                     20                      10
                     30                      20
                     30                      30
                     20
                     10
                     10
                     30
                     20
                     10


                                                                            38
                               Departamento de Informática - Carmen Soler
5. AS (alias)

  SELECT FIRST_NAME as “Nombre”, LAST_NAME Apellido,
  SALARY “Salario actual”
  FROM EMPLOYEES




                                                                           39
                              Departamento de Informática - Carmen Soler
6. WHERE
 Ejemplos WHERE:
  -- La nota está entre 5 y 10 (incluidos)
  WHERE (NOTA <= 10) AND (NOTA >= 5)
  WHERE NOTA BETWEEN 5 AND 10

  -- La nota no está entre 5 y 10, debe ser una nota -
  --fuera de estos límites
  WHERE NOTA NOT BETWEEN 5 AND 10;

  -- La nota es ó 5 ó 10
  WHERE (NOTA = 10) OR (NOTA = 5)
  WHERE NOTA IN (5, 10)

  -- La nota no es ni 5 ni 10
  WHERE NOTA NOT IN (5, 10)


                                                                             40
                                Departamento de Informática - Carmen Soler
6. WHERE
 Más ejemplos de IN
    Para comprobar si una columna pertenece o no a un conjunto de valores
   SELECT APELLIDO FROM EMPLE WHERE DEPT_NO IN(10,30);

   SELECT APELLIDO FROM EMPLE WHERE DEPT_NO NOT IN(10, 30);

    Más ejemplos de BETWEEN

   SELECT APELLIDO, SALARIO
   FROM EMPLE
   WHERE SALARIO BETWEEN 1100 and 1200;

   SELECT APELLIDO, SALARIO
   FROM EMPLE
   WHERE NOT BETWEEN 1100 and 1200;

                                                                                          41
                                             Departamento de Informática - Carmen Soler
6. WHERE
 Combinación de AND y OR
 SELECT APELLIDO, SALARIO, DEPT_NO FROM EMPLE
 WHERE SALARIO>1500 AND (DEPT_NO=10 OR DEPT_NO=20);


     APELLIDO               SALARIO                 DEPT_NO
     JIMENEZ                   1800                      20
     CEREZO                    1600                      10
     GIL                       1700                      20
     REY                       2500                      10
     FERNANDEZ                 1900                      20


 SELECT APELLIDO, SALARIO, DEPT_NO FROM EMPLE
 WHERE SALARIO>1500 AND DEPT_NO IN(10,20);

                                                                               42
                                  Departamento de Informática - Carmen Soler
6. WHERE
 Combinación de AND y OR

  SELECT APELLIDO, SALARIO, DEPT_NO FROM EMPLE
  WHERE SALARIO>1500 AND DEPT_NO=10 OR DEPT_NO=20;


     APELLIDO               SALARIO                 DEPT_NO
     SANCHEZ                   1400                      20
     JIMENEZ                   1800                      20
     CEREZO                    1600                      10
     GIL                       1700                      20
     REY                       2500                      10
     ALONSO                    1350                      20
     FERNANDEZ                 1900                      20


                                                                               43
                                  Departamento de Informática - Carmen Soler
6. WHERE
 Hay una forma especial para comparar cadenas de caracteres
     Usamos el operador LIKE
     Tenemos caracteres especiales:
         ‘%’  es un comodín, representa una cadena de 0 o más caracteres
         ‘_’  Marcador de posición. Representa un carácter cualquiera.

 Ejemplos
     LIKE ‘Director’  Igual a la cadena ‘Director’
     LIKE ‘M%’  Que empiece por ‘M’
     LIKE ‘%X%’  Que contenga una ‘X’
     LIKE ‘__M’  Que tenga 3 caracteres y acabe en ‘M’
     LIKE ‘_R%’  Cualquier cadena que la segunda letra sea ‘R’




                                                                                                   44
                                                      Departamento de Informática - Carmen Soler
7. Operaciones aritméticas
 Sirven para formar expresiones con constantes, valores de columnas y
  funciones de valores de columnas

           SELECT col1*col2, col1-col2
           FROM tabla1
           WHERE col1+col2=34;



 Operadores aritméticos y operación asociada:
     +  Suma
     -  Resta
     *  Multiplicación
     /  División


                                                                                    45
                                       Departamento de Informática - Carmen Soler
7. Operaciones aritméticas
 Sirven para formar expresiones con constantes, valores de columnas y
  funciones de valores de columnas

        NOMBRE_ALUMNO            NOTA1 NOTA2 NOTA3
        Luís Benito                 5     5     5
        Manuel Casas                7     6     8
        Ana Sánchez                 3     5     5
        Antonio García              6     4     5
 Sacar la nota media de cada alumno

        SELECT NOMBRE_ALUMNO, (NOTA1+NOTA2+NOTA3)/3
        FROM NOTAS_ALUMNOS;




                                                                                    46
                                       Departamento de Informática - Carmen Soler
7. Operaciones aritméticas
 Ejemplo        NOMBRE_ALUMNO              NOTA1            NOTA2           NOTA3
                 Luís Benito                   5                5               5
                 Manuel Casas                  7                6               8
                 Ana Sánchez                   3                5               5
                 Antonio García                8                4               5


 Obtener aquellos nombres de alumnos que tengan un 7 en NOTA1 y cuya
  media sea mayor que 6

        SELECT NOMBRE_ALUMNO
        FROM NOTAS_ALUMNOS
        WHERE NOTA1=7 AND (NOTA1+NOTA2+NOTA3)/3>6;




                                                                                     47
                                     Departamento de Informática - Carmen Soler
8. Valor NULL
 Consideramos que una columna es NULL si no tiene ningún valor asignado.
 No es null un número que sea cero y, no es null un varchar2 vacío.
 Para comprobar si es NULL o no empleamos:
     Columna IS NULL
     Columna IS NOT NULL



  SELECT APELLIDO FROM EMPLE WHERE COMISION IS NULL;

  SELECT APELLIDO FROM EMPLE WHERE COMISION IS NOT NULL;




                                                                                      48
                                         Departamento de Informática - Carmen Soler
8. Valor NULL
 Al ser un valor especial, se comporta de manera especial en estos casos:
     En operaciones aritméticas con un valor null, el resultado es null;
     En concatenaciones con un valor null, no tiene efecto. Ni siquiera aparece ‘null’ en el
      resultado, es como si no estuviera.


    -- El resultado es NULL
    SELECT SALARIO*1.25+NULL FROM EMPLE

    -- El resultado es el valor del Apellido
    SELECT APELLIDO||NULL FROM EMPLE




                                                                                                49
                                                   Departamento de Informática - Carmen Soler
9. ORDER BY
 Ejemplo:


   SELECT *
   FROM ALUMNOS
   ORDER BY NOM_ALUM, CURSO DESC;


    El primer criterio de ordenación es el principal, si hay varios iguales, se ordenarán según el
     secundario.
    Se ordena por nom_alum ascendente y por curso descendente.
    Por defecto es ordenación ascendente. Si se quiere descendente se debe indicar
     explícitamente.




                                                                                                      50
                                                   Departamento de Informática - Carmen Soler
10. Tabla DUAL
 La tabla DUAL es una tabla de sistema que sirve para hacer pruebas.
 Si yo escribo: SELECT 1*2 FROM REGIONS, porque quiero probar cómo
  funciona una operación de *, me saldrá la * 4 veces, una por cada fila de
  regions.
 Si sólo se quiere hacer pruebas, DUAL es muy útil porque tiene sólo una
  columna y una fila creadas:




                                                                                     51
                                        Departamento de Informática - Carmen Soler
11. Funciones simples
 Se llaman simples porque se aplican por cada uno de los resultados del
  select.
 DE VARCHAR2:

SELECT INITCAP(first_name||' '|| last_name) as "Nombre
completo",
LENGTH(first_name||' '|| last_name) as "Longitud",
FROM EMPLOYEES
WHERE (LOWER(last_name) like '%a%' or UPPER(first_name) like
'%E%')

     Además de las del ejemplo tenemos:
        SUBSTR, INSTR, RPAD, LPAD, TRIM y REPLACE



                                                                                                 52
                                                    Departamento de Informática - Carmen Soler
11. Funciones simples
 DE NUMBER:
    ROUND(12.62)  Da 13
    ROUND(12.37)  Da 12
    ROUND(12.37,1)  Redondea a 1 decimal  12.4
    ROUND(12.62,1)  Redondea a 1 decimal  12.6
    TRUNC(12.62)  Elimina los decimales  12
    TRUNC(12.37,1)  Deja sólo 1 decimal  12.3




                                                                                         53
                                            Departamento de Informática - Carmen Soler
11. Funciones simples
 DE DATE:
    MONTHS_BETWEEN(fecha2, fecha1)
       Da el número de meses que hay entre las dos fechas.
       Puede retornar un valor decimal

    ADD_MONTHS(fecha, numMeses)
       Añade a una fecha el número de meses que se indique.

    LAST_DAY(fecha)
       Nos da el último día de mes de la fecha indicada

    NEXT_DAY(fecha, ‘día semana’)
       Si dia semana es Lunes, nos da la fecha del próximo lunes partiendo de la fecha que se indica.




                                                                                                        54
                                                     Departamento de Informática - Carmen Soler
12. Funciones de grupo
 A diferencia de las funciones simples, se aplican sobre un conjunto de filas
  de la tabla.
 Las que utilizaremos son: COUNT, SUM, AVG, MAX, MIN

     -- Cuenta los empleados que hay
     -- Retorna un único número.
     SELECT COUNT(*) FROM EMPLE

     -- Cuenta los salarios que hay
     -- si hay un valor null, no lo cuenta
     SELECT COUNT(SALARY) FROM EMPLE

     -- Cuentas los trabajos diferentes que hay
     SELECT COUNT(DISTINCT SALARY) FROM EMPLE



                                                                                       55
                                          Departamento de Informática - Carmen Soler
12. Funciones de grupo
     -- Calcula la media de sueldo de los empleados
     -- de un departamento concreto
     SELECT AVG(salary) FROM EMPLE WHERE DEP_ID=30

     -- Salario más alto de la empresa
     -- podemos utilizar 2 funciones de grupo
     -- en la misma consulta
     SELECT MAX(SALARY), MIN(SALARY) FROM EMPLE


 ¿Es lo mismo?




                                                                             56
                                Departamento de Informática - Carmen Soler
12. Funciones de grupo
   Visualizar el número de empleados que hay en cada departamento.
   Tenemos que agrupar las filas de la tabla EMPLE por departamento (GROUP BY DEPT_NO) y
    contarlas (COUNT(*))

    SELECT DEPT_NO, COUNT(*)
    FROM EMPLE
    GROUP BY DEPT_NO;

   COUNT es una función de grupo y da información sobre un grupo de filas, no sobre filas
    individuales de cada tabla.
   GROUP BY obliga a COUNT a contar las filas que se han agrupado por cada departamento.




                                                                                             57
                                               Departamento de Informática - Carmen Soler
12. Funciones de grupo
 Ejemplo de HAVING:
    Visualizar los departamentos con más de 4 empleados.

    SELECT DEPT_NO, COUNT(*)
    FROM EMPLE
    GROUP BY DEPT_NO HAVING COUNT(*)>4

    HAVING es similar al WHERE, pero trabaja con grupos de filas. Puede preguntar por el
     resultado de funciones de grupo, como es este caso.
    Además, podemos ordenar la salida:

    SELECT DEPT_NO, COUNT(*)
    FROM EMPLE GROUP BY DEPT_NO HAVING COUNT(*)>4
    ORDER BY COUNT(*) DESC;




                                                                                             58
                                                Departamento de Informática - Carmen Soler
12. Funciones de grupo
 En tiempo de ejecución de la query, las cláusulas siguen este orden:
     WHERE  Para seleccionar las filas
     GROUP BY  Agrupa estas filas
     HAVING  Filtra los grupos
     ORDER BY  Clasifica la salida. Ordena los grupos.




                                                                                              59
                                                 Departamento de Informática - Carmen Soler
13. Subconsultas
 Seguimos haciendo consultas de una sola tabla, pero ahora vamos a
  combinar varias consultas en una sola.
 Esta es una consulta con subconsultas en la que podemos saber, a día de
  hoy, cuántos empleados y departamentos tenemos:


   SELECT SYSDATE HOY,
   (SELECT COUNT(*) FROM DEPARTMENTS) NUM_DEPT,
   (SELECT COUNT(*) FROM EMPLOYEES) EMP_COUNT FROM DUAL;




                                                                                     60
                                        Departamento de Informática - Carmen Soler
13. Subconsultas
 A veces para realizar consultas, necesitamos los datos devueltos por otras
  consultas.
     Queremos saber los apellidos de aquellas personas que tienen el mismo oficio que el que
      se apellida ‘Bates’ (suponemos que sólo hay un ‘Bates’).
     PASO 1
         Averiguar el oficio de Bates:
               SELECT JOB_ID FROM EMPLOYEES WHERE LAST_NAME = ‘Bates’

     PASO 2
         El JOB_ID es ‘SA_REP’
               SELECT APELLIDO FROM EMPLE WHERE JOB_ID = ‘SA_REP’ AND LAST_NAME <> ‘Bates’




                                                                                                61
                                                  Departamento de Informática - Carmen Soler
13. Subconsultas
 Esto se puede resumir en una única consulta

  SELECT LAST_NAME
  FROM EMPLOYEES
  WHERE JOB_ID =
         (SELECT JOB_ID
                FROM EMPLOYEES
                WHERE LAST_NAME = ‘Bates’
         )
  AND LAST_NAME <> ‘Bates’;




                                                                                    62
                                       Departamento de Informática - Carmen Soler
13. Subconsultas
 Subconsultas con valores simples
     Devuelven una fila o un valor de la fila
     El ejemplo anterior devuelve un solo valor que puedo igualar a oficio con ‘=‘.


   SELECT LAST_NAME
   FROM EMPLOYEES
   WHERE JOB_ID =
          (SELECT JOB_ID
                 FROM EMPLOYEES
                 WHERE LAST_NAME = ‘Bates’
          )
   AND LAST_NAME <> ‘Bates’;



                                                                                                63
                                                   Departamento de Informática - Carmen Soler
13. Subconsultas
 Subconsultas con valores simples
     Pero si digo lo siguiente:

  SELECT LAST_NAME
  FROM EMPLOYEES
  WHERE JOB_ID =
         (SELECT JOB_ID
                FROM EMPLOYEES
                WHERE DEPTARTMENT_ID = 20
         )


         Esto devuelve más de un oficio y, por lo tanto, dará un error.




                                                                                                      64
                                                         Departamento de Informática - Carmen Soler
13. Subconsultas
 Subconsultas que generan listas de valores
     Si devuelve más de un valor, debemos usar el operador IN.


  SELECT LAST_NAME
  FROM EMPLOYEES
  WHERE JOB_ID IN
         (SELECT JOB_ID
                FROM EMPLOYEES
                WHERE DEPTARTMENT_ID = 20
         )




                                                                                             65
                                                Departamento de Informática - Carmen Soler
13. Subconsultas
 Ejercicio
       Obtén los departamentos que estén situados en Seattle


  (1)   SELECT LOCATION_ID FROM LOCATIONS
    WHERE CITY = ‘Seattle’
     LOCATION_ID = 1700

  (2) SELECT DEPARTMENT_NAME FROM DEPARTMENTS WHERE
    LOCATION_ID = 1700

  (2) Cómo juntamos (1) y (2)???




                                                                                             66
                                                Departamento de Informática - Carmen Soler
13. Subconsultas

 Ejercicio
     Obtener el apellido de los empleados con el mismo oficio que ‘Bates’ y un salario inferior
      (comparación doble)




                                                                                                   67
                                                  Departamento de Informática - Carmen Soler
13. Subconsultas
 Sacar el apellido de los empleados que cobren menos que el salario medio
  de todos los empleados:
  SELECT LAST_NAME FROM EMPLOYEES WHERE SALARY <
         (SELECT AVG(SALARY) FROM EMPLOYEES)

 Sacar el apellido de los empleados que cobren menos que el salario medio
  dentro de su mismo departamento:
  SELECT LAST_NAME FROM EMPLOYEES Q WHERE SALARY <
         (SELECT AVG(SALARY) FROM EMPLOYEES S
          WHERE S.DEPARTMENT_ID = Q.DEPARTMENT_ID)




                                                                                    68
                                       Departamento de Informática - Carmen Soler
13. Subconsultas
 Sacar el apellido del empleado que más cobra de la empresa:
   SELECT LAST_NAME FROM EMPLOYEES WHERE SALARY =
          (SELECT MAX(SALARY) FROM EMPLOYEES)



 Sacar el apellido de los empleados que sean jefe de algún otro empleado:
   SELECT LAST_NAME FROM EMPLOYEES WHERE EMPLOYEE_ID IN
          (SELECT MANAGER_ID FROM EMPLOYEES)




                                                                                    69
                                       Departamento de Informática - Carmen Soler
14. Combinación de tablas
 Para consultas que necesiten varias tablas.
 Reglas a tener en cuenta:
     Es posible hacer la consulta de tantas tablas como queramos
     Desde SELECT podemos referirnos a columnas de cualquier tabla
     Si hay columnas de diferentes tablas con el mismo nombre, las distinguiremos así:
      NombreTabla.NombreColumna
     La forma de combinar las tablas se especifica en WHERE. Si no se indica nada, se hará un
      producto cartesiano




                                                                                                 70
                                                 Departamento de Informática - Carmen Soler
14. Combinación de tablas
 Ejemplos

  SELECT LAST_NAME, JOB_ID, EMPLOYEE_ID, DEPARTMENT_NAME,
     LOCATION_ID
  FROM EMPLOYEES E, DEPARTMENTS D
  WHERE E.DEPARTMENT_ID = D.DEPTARTMENT_ID

  SELECT LAST_NAME, JOB_ID, EMPLOYEE_ID, DEPARTMENT_NAME,
     LOCATION_ID
  FROM EMPLOYEES E, DEPARTMENTS D




                                                                            71
                               Departamento de Informática - Carmen Soler
14. Combinación de tablas
 Ejemplo join




                                                                  72
                     Departamento de Informática - Carmen Soler
14. Combinación de tablas
 Para hacer joins, tenemos 2 formas:
     Poner todas las condiciones en el WHERE como acabamos de ver.
     Utilizar un INNER JOIN.

 A efectos de resultados, el INNER JOIN es exactamente lo mismo.
 Lo que cambia es el nivel de eficiencia. Si los campos de unión de tablas
  tienen definidos índices, el INNER JOIN es capaz de aprovechar estos índices
  para hacer la consulta más rápidamente.




                                                                                           73
                                              Departamento de Informática - Carmen Soler
14. Combinación de tablas
 Explicamos brevemente cómo crear un índice:

(1)CREATE INDEX I_DEPT_NAME ON DEPARTMENTS(DEPARTMENT_NAME)
(2)CREATE UNIQUE INDEX UI_DEPARTMENT_NAME ON
   DEPARTMENTS(DEPARTMENT_NAME)
(3)DROP INDEX I_DEPT_NAME

 El caso (1), permite que en esa columna haya repetidos
 El caso (2) no permite repetidos, podría usarse como índice de una clave
  primaria
 El caso (3) es para eliminar un índice.
     Si el índice se está usando junto con una PK, primero habrá que eliminar la PK y luego el
      índice.


                                                                                                  74
                                                  Departamento de Informática - Carmen Soler
14. Combinación de tablas
 Inner Join
     Poniendo condiciones en el WHERE

         SELECT tCoches.matricula, tMarcas.marca, tCoches.modelo,
         tCoches.color, tCoches.numero_kilometros, tCoches.num_plazas
         FROM tCoches, tMarcas
         WHERE tCoches.marca = tMarcas.codigo


     Utilizando INNER JOIN

       SELECT tCoches.matricula, tMarcas.marca, tCoches.modelo,
       tCoches.color, tCoches.numero_kilometros, tCoches.num_plazas
       FROM tCoches
       INNER JOIN tMarcas ON tCoches.marca = tMarcas.codigo




                                                                                      75
                                         Departamento de Informática - Carmen Soler
14. Combinación de tablas
 En la diapo 42, vemos que, en el listado de resultados que aparecerá sólo
  veremos aquellas marcas que tengan asignadas algún coche. Las marcas 2, 4
  y 5 no aparecerán en el listado.
 Si quiero ver cada coche y su marca y también quiero que aparezcan en el
  listado las marcas que no tienen coche, con lo que sabemos hasta ahora no
  es posible hacerlo.
     Una posible solución que veremos ahora será el left y el right join.




                                                                                               76
                                                  Departamento de Informática - Carmen Soler
14. Combinación de tablas
 Left Join

     SELECT tCoches.matricula, tMarcas.marca, tCoches.modelo,
     tCoches.color, tCoches.numero_kilometros, tCoches.num_plazas
     FROM tCoches
     LEFT JOIN tMarcas ON tCoches.marca = tMarcas.codigo




                                                                                    77
                                       Departamento de Informática - Carmen Soler
14. Combinación de tablas
 Right Join

    SELECT tCoches.matricula, tMarcas.marca, tCoches.modelo,
    tCoches.color, tCoches.numero_kilometros, tCoches.num_plazas
    FROM tCoches
    RIGHT JOIN tMarcas ON tCoches.marca = tMarcas.codigo




                                                                                    78
                                       Departamento de Informática - Carmen Soler
14. Combinación de tablas
 Sobre la base de datos del ejercicio 4, haz estas consultas:
   1.   Obtén un listado en el que aparezca en nombre y ciudad del comercio y el nombre y
        versión de los programas que ha distribuido. Si un comercio no ha distribuido ningún
        programa también tiene que aparecer.
   2.   Sacar un listado con el nombre de los clientes y los medios que han utilizado para registrar
        programas. Si un cliente no ha hecho nunca un registro también tiene que aparecer. Que
        no aparezcan repetidos.
   3.   Obtén una lista de los programas que ha desarrollado cada fabricante. Si un fabricante no
        ha desarrollado ningún programa también tiene que aparecer.
   4.   Obtén una lista de todos los programas que no se hayan registrado.




                                                                                                       79
                                                   Departamento de Informática - Carmen Soler
UD2.4. Varios
1.   UNION, INTERSECT
2.   Crear una tabla a partir de una consulta
3.   Creación y uso de vistas
4.   Inserción utilizando select
5.   Actualización utilizando select
6.   Borrado utilizando select




                                                                                       80
                                          Departamento de Informática - Carmen Soler
1. Union, intersect
 Ejemplo de UNION
    Tenemos dos tablas: ALUMNOS y NUEVOS que tienen la misma estructura y queremos
     juntarlas:

    SELECT NOMBRE FROM ALUMNOS UNION
    SELECT NOMBRE FROM NUEVOS;


    El UNION combina el resultado de las dos consultas. Si hay filas duplicadas, las reduce a
     una. UNION ALL no compacta, mantiene todos los resultados aunque hayan repetidos.

    SELECT NOMBRE FROM ALUMNOS UNION ALL
    SELECT NOMBRE FROM NUEVOS;




                                                                                                 81
                                                  Departamento de Informática - Carmen Soler
1. Union, intersect
 Ejemplo de INTERSECT
    Tenemos dos tablas: ALUMNOS y ANTIGUOS que tienen la misma estructura y queremos
     ver las tuplas comunes:


    SELECT NOMBRE FROM ALUMNOS INTERSECT
    SELECT NOMBRE FROM ANTIGUOS;

    El INTERSECT es equivalente a esto:

    SELECT NOMBRE FROM ALUMNOS WHERE NOMBRE IN
           (SELECT NOMBRE FROM ANTIGUOS);




                                                                                         82
                                            Departamento de Informática - Carmen Soler
2. Crear una tabla a partir de una consulta
 Ejemplos

     CREATE TABLE EJEMPLO_COPY AS SELECT * FROM EJEMPLO;

     CREATE TABLE EJEMPLO_COPY(COL1, COL2, COL3, COL4) AS
     SELECT * FROM EJEMPLO;

     CREATE TABLE EMPLEYDEPART AS SELECT E.APELLIDO,
     D.NOMBRE FROM EMPLE E, DEPART D WHERE
     E.DEPT_NO=D.DEPT_NO




                                                                            83
                               Departamento de Informática - Carmen Soler
3. Creación y uso de vistas
 Para obtener datos, a veces hay que hacer
  consultas complejas:
   Podemos crear vistas que contengan el resultado de
    esta consulta.
   Así en lugar de hacer la consulta compleja, siempre
    tenemos el resultado en esa vista.
   La vista es una tabla lógica, no tiene información en sí
    misma, sino que depende de lo que contienen otras
    tablas (tablas base)
   A las vistas se accede igual que lo haríamos a una tabla.

                                                                            84
                               Departamento de Informática - Carmen Soler
3. Creación y uso de vistas
 Ejemplos
    Mostrar apellidos y salario de los empleados del departamento 30:

      CREATE VIEW DEP30 AS SELECT APELLIDO,SALARIO FROM
      EMPLE WHERE DEPT_NO=30;



    También puedo seleccionar las columnas que se mostrarán y cambiar su nombre:


      CREATE VIEW DEP30 (APE, OFI, SAL) AS SELECT APELLIDO,
      OFICIO, SALARIO FROM EMPLE WHERE DEPT_NO=30




                                                                                            85
                                               Departamento de Informática - Carmen Soler
3. Creación y uso de vistas
 Si borro la tabla de la que depende la vista, cuando consultemos la vista, se
  lanzará un error, pero la vista continuará existiendo


 Para eliminar una vista:

                             DROP VIEW DEP30;




                                                                                       86
                                          Departamento de Informática - Carmen Soler
3. Creación y uso de vistas
 Actualización/borrado de filas a través de una vista:
     Para poder hacerlo, la vista se ha de crear:
         Con las filas de una sola tabla
         Sin usar GROUP BY ni DISTINCT
         Sin utilizar funciones SQL
 Insertar filas a través de una vista:
     Se han de tener en cuenta las restricciones anteriores y además:
         TODAS las columnas obligatorias de la tabla deben estar incluidas en la vista.
           Sino será como si estuviéramos insertando un valor NULL para esa columna
           y dará error.



                                                                                          87
                                             Departamento de Informática - Carmen Soler
4. Inserción utilizando Select
 Hasta ahora podíamos insertar una tupla cada vez.
 Combinándolo con un select, podemos añadir tantas filas como devuelva la
  consulta:
 Ejemplo:
      INSERT INTO EMPLE30(EMP_NO, APELLIDO, OFICIO,
      SALARIO, COMISION, DEPT_NO) (
      SELECT EMP_NO, APELLIDO, OFICIO, SALARIO, COMISION,
      DEPT_NO
      FROM EMPLE
      WHERE DEPT_NO = 30);




                                                                                    88
                                       Departamento de Informática - Carmen Soler
5. Actualización utilizando Select
 Ejemplo:

    UPDATE CENTROS SET (DIRECCION, NUMPLAZAS) =
    (SELECT DIRECCION, NUMPLAZAS FROM CENTROS WHERE
    COD_CENTRO=50)
    WHERE COD_CENTRO=10;




                                                                            89
                               Departamento de Informática - Carmen Soler
6. Borrado utilizando Select
 Ejemplo:

    DELETE FROM DEPART WHERE DEPT_NO IN
           (SELECT DEPT_NO FROM EMPLE GROUP BY DEPT_NO
             HAVING COUNT(*)<4);




                                                                            90
                               Departamento de Informática - Carmen Soler

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Presentation slides of Sequence Query Language (SQL)
Presentation slides of Sequence Query Language (SQL)Presentation slides of Sequence Query Language (SQL)
Presentation slides of Sequence Query Language (SQL)
 
introdution to SQL and SQL functions
introdution to SQL and SQL functionsintrodution to SQL and SQL functions
introdution to SQL and SQL functions
 
Comandos ddl y dml
Comandos ddl y dmlComandos ddl y dml
Comandos ddl y dml
 
SQL
SQLSQL
SQL
 
Sql tutorial
Sql tutorialSql tutorial
Sql tutorial
 
06.01 sql select distinct
06.01 sql select distinct06.01 sql select distinct
06.01 sql select distinct
 
NORMALIZACIÓN
NORMALIZACIÓN  NORMALIZACIÓN
NORMALIZACIÓN
 
Consultas básicas en sql server
Consultas básicas en sql serverConsultas básicas en sql server
Consultas básicas en sql server
 
Comandos utilizados en sql
Comandos utilizados en sqlComandos utilizados en sql
Comandos utilizados en sql
 
Database Management - Lecture 2 - SQL select, insert, update and delete
Database Management - Lecture 2 - SQL select, insert, update and deleteDatabase Management - Lecture 2 - SQL select, insert, update and delete
Database Management - Lecture 2 - SQL select, insert, update and delete
 
Create table
Create tableCreate table
Create table
 
Lenguaje estructurado de consultas sql
Lenguaje estructurado de consultas sqlLenguaje estructurado de consultas sql
Lenguaje estructurado de consultas sql
 
Guia de ejercicio sql
Guia de ejercicio sqlGuia de ejercicio sql
Guia de ejercicio sql
 
SQL Overview
SQL OverviewSQL Overview
SQL Overview
 
Sql commands
Sql commandsSql commands
Sql commands
 
oracle Sql constraint
oracle  Sql constraint oracle  Sql constraint
oracle Sql constraint
 
SQL Constraints
SQL ConstraintsSQL Constraints
SQL Constraints
 
Comandos básicos mysql
Comandos básicos mysqlComandos básicos mysql
Comandos básicos mysql
 
Sql commands
Sql commandsSql commands
Sql commands
 
Sql(structured query language)
Sql(structured query language)Sql(structured query language)
Sql(structured query language)
 

Destacado

Lenguaje de Manipulación de Datos
Lenguaje de Manipulación de DatosLenguaje de Manipulación de Datos
Lenguaje de Manipulación de DatosEduardo Rosas Garcia
 
Sql DDL Lenguaje de definición de datos
Sql DDL Lenguaje de definición de datosSql DDL Lenguaje de definición de datos
Sql DDL Lenguaje de definición de datosjosecuartas
 
DDL - Lenguaje de definición de datos
DDL - Lenguaje de definición de datosDDL - Lenguaje de definición de datos
DDL - Lenguaje de definición de datosvargasaldanajohanna
 
SQL-DDL
SQL-DDLSQL-DDL
SQL-DDLbdatos
 
Sentencias dml y ddl
Sentencias dml y ddlSentencias dml y ddl
Sentencias dml y ddlkleberyauti
 
Diapositivas del ddl de definicion de datos
Diapositivas del ddl de definicion de datosDiapositivas del ddl de definicion de datos
Diapositivas del ddl de definicion de datosrosamelosa
 
"Uso de comandos INSERT, UPDATE y DELETE en bases de datos de SQL Server"
"Uso de comandos INSERT, UPDATE y DELETE en bases de datos de SQL Server" "Uso de comandos INSERT, UPDATE y DELETE en bases de datos de SQL Server"
"Uso de comandos INSERT, UPDATE y DELETE en bases de datos de SQL Server" Neyda Rubi Magallanes Lamas
 
CREACION DE DLL Y USO (Ejemplo desarrollado)
CREACION DE DLL Y USO (Ejemplo desarrollado)CREACION DE DLL Y USO (Ejemplo desarrollado)
CREACION DE DLL Y USO (Ejemplo desarrollado)Darwin Durand
 
Tabla de frecuencias e histograma
Tabla de frecuencias e histogramaTabla de frecuencias e histograma
Tabla de frecuencias e histogramaLaksmi Rodriguez
 
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datosBases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datosVideoconferencias UTPL
 
Vistas En Sql Y My Sql
Vistas En Sql Y My SqlVistas En Sql Y My Sql
Vistas En Sql Y My SqlZiscko
 
Lenguaje de manipulación de datos (DML)
Lenguaje de manipulación de datos (DML)Lenguaje de manipulación de datos (DML)
Lenguaje de manipulación de datos (DML)Minerva136
 
Diapositivas base de datos
Diapositivas base de datosDiapositivas base de datos
Diapositivas base de datoscatherine4ad
 
Tabulación y distribución de frecuencia. histograma, polígono de frecuencia e...
Tabulación y distribución de frecuencia. histograma, polígono de frecuencia e...Tabulación y distribución de frecuencia. histograma, polígono de frecuencia e...
Tabulación y distribución de frecuencia. histograma, polígono de frecuencia e...CrespoC
 
Oracle Multitenant meets Oracle RAC - IOUG 2014 Version
Oracle Multitenant meets Oracle RAC - IOUG 2014 VersionOracle Multitenant meets Oracle RAC - IOUG 2014 Version
Oracle Multitenant meets Oracle RAC - IOUG 2014 VersionMarkus Michalewicz
 

Destacado (20)

Ejemplo ddl dml
Ejemplo ddl dmlEjemplo ddl dml
Ejemplo ddl dml
 
Lenguaje de Manipulación de Datos
Lenguaje de Manipulación de DatosLenguaje de Manipulación de Datos
Lenguaje de Manipulación de Datos
 
Sql DDL Lenguaje de definición de datos
Sql DDL Lenguaje de definición de datosSql DDL Lenguaje de definición de datos
Sql DDL Lenguaje de definición de datos
 
DDL - Lenguaje de definición de datos
DDL - Lenguaje de definición de datosDDL - Lenguaje de definición de datos
DDL - Lenguaje de definición de datos
 
SQL-DDL
SQL-DDLSQL-DDL
SQL-DDL
 
Sentencias dml y ddl
Sentencias dml y ddlSentencias dml y ddl
Sentencias dml y ddl
 
Diapositivas del ddl de definicion de datos
Diapositivas del ddl de definicion de datosDiapositivas del ddl de definicion de datos
Diapositivas del ddl de definicion de datos
 
"Uso de comandos INSERT, UPDATE y DELETE en bases de datos de SQL Server"
"Uso de comandos INSERT, UPDATE y DELETE en bases de datos de SQL Server" "Uso de comandos INSERT, UPDATE y DELETE en bases de datos de SQL Server"
"Uso de comandos INSERT, UPDATE y DELETE en bases de datos de SQL Server"
 
CREACION DE DLL Y USO (Ejemplo desarrollado)
CREACION DE DLL Y USO (Ejemplo desarrollado)CREACION DE DLL Y USO (Ejemplo desarrollado)
CREACION DE DLL Y USO (Ejemplo desarrollado)
 
Sql
SqlSql
Sql
 
Tabla de frecuencias e histograma
Tabla de frecuencias e histogramaTabla de frecuencias e histograma
Tabla de frecuencias e histograma
 
Bases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datosBases de Datos Cap-V SQL: Manipulación de datos
Bases de Datos Cap-V SQL: Manipulación de datos
 
Manipulacion de Datos SQL cap10
Manipulacion de Datos SQL cap10Manipulacion de Datos SQL cap10
Manipulacion de Datos SQL cap10
 
Manejo de bases de datos. Unidad 1
Manejo de bases de datos. Unidad 1Manejo de bases de datos. Unidad 1
Manejo de bases de datos. Unidad 1
 
Vistas En Sql Y My Sql
Vistas En Sql Y My SqlVistas En Sql Y My Sql
Vistas En Sql Y My Sql
 
Lenguaje de manipulación de datos (DML)
Lenguaje de manipulación de datos (DML)Lenguaje de manipulación de datos (DML)
Lenguaje de manipulación de datos (DML)
 
Diapositivas base de datos
Diapositivas base de datosDiapositivas base de datos
Diapositivas base de datos
 
Tabulación y distribución de frecuencia. histograma, polígono de frecuencia e...
Tabulación y distribución de frecuencia. histograma, polígono de frecuencia e...Tabulación y distribución de frecuencia. histograma, polígono de frecuencia e...
Tabulación y distribución de frecuencia. histograma, polígono de frecuencia e...
 
Oracle Multitenant meets Oracle RAC - IOUG 2014 Version
Oracle Multitenant meets Oracle RAC - IOUG 2014 VersionOracle Multitenant meets Oracle RAC - IOUG 2014 Version
Oracle Multitenant meets Oracle RAC - IOUG 2014 Version
 
Como crear una base de datos en access
Como crear una base de datos en accessComo crear una base de datos en access
Como crear una base de datos en access
 

Similar a SQL: DDL, DML y SQL

Similar a SQL: DDL, DML y SQL (20)

Restricciones bd
Restricciones bdRestricciones bd
Restricciones bd
 
Tm13 introduccion al_sql
Tm13 introduccion al_sqlTm13 introduccion al_sql
Tm13 introduccion al_sql
 
Bdii 09 ddl_new
Bdii 09 ddl_newBdii 09 ddl_new
Bdii 09 ddl_new
 
Introduccion al sql query
Introduccion al sql queryIntroduccion al sql query
Introduccion al sql query
 
1 lab-2 -tablas-y-restricciones
1 lab-2 -tablas-y-restricciones1 lab-2 -tablas-y-restricciones
1 lab-2 -tablas-y-restricciones
 
Proyecto de Base de Datos (Parte II)
Proyecto de Base de Datos (Parte II)Proyecto de Base de Datos (Parte II)
Proyecto de Base de Datos (Parte II)
 
04-SQL.pdf
04-SQL.pdf04-SQL.pdf
04-SQL.pdf
 
04-SQLBuenaPresentaciónyConceptos.pdf
04-SQLBuenaPresentaciónyConceptos.pdf04-SQLBuenaPresentaciónyConceptos.pdf
04-SQLBuenaPresentaciónyConceptos.pdf
 
Practicassql
PracticassqlPracticassql
Practicassql
 
Sesión03 - Creación de objetos (Oracle)
Sesión03 - Creación de objetos (Oracle)Sesión03 - Creación de objetos (Oracle)
Sesión03 - Creación de objetos (Oracle)
 
Administracion sql
Administracion sqlAdministracion sql
Administracion sql
 
Bd sql
Bd sqlBd sql
Bd sql
 
Tema 3.2 SQL.ppt
Tema 3.2 SQL.pptTema 3.2 SQL.ppt
Tema 3.2 SQL.ppt
 
Tema 3.2 SQL.ppt
Tema 3.2 SQL.pptTema 3.2 SQL.ppt
Tema 3.2 SQL.ppt
 
Sentencias sql
Sentencias sql Sentencias sql
Sentencias sql
 
Sentencias Sql
Sentencias SqlSentencias Sql
Sentencias Sql
 
MANUAL COMPLETO DE SQL
MANUAL COMPLETO DE SQLMANUAL COMPLETO DE SQL
MANUAL COMPLETO DE SQL
 
SQL
SQLSQL
SQL
 
Modificaciones De Ansi Sql
Modificaciones De Ansi SqlModificaciones De Ansi Sql
Modificaciones De Ansi Sql
 
Modificaciones De Ansi Sql
Modificaciones De Ansi SqlModificaciones De Ansi Sql
Modificaciones De Ansi Sql
 

Más de Carmen Soler

Transferencia de datos en Oracle
Transferencia de datos en OracleTransferencia de datos en Oracle
Transferencia de datos en OracleCarmen Soler
 
Mantenimiento de la base de datos Oracle 11g
Mantenimiento de la base de datos Oracle 11gMantenimiento de la base de datos Oracle 11g
Mantenimiento de la base de datos Oracle 11gCarmen Soler
 
Datos UNDO en Oracle
Datos UNDO en OracleDatos UNDO en Oracle
Datos UNDO en OracleCarmen Soler
 
Recuperación de la base de datos en Oracle
Recuperación de la base de datos en OracleRecuperación de la base de datos en Oracle
Recuperación de la base de datos en OracleCarmen Soler
 
Copias de seguridad y recuperación en Oracle
Copias de seguridad y recuperación en OracleCopias de seguridad y recuperación en Oracle
Copias de seguridad y recuperación en OracleCarmen Soler
 
Seguridad Oracle 11g R2
Seguridad Oracle 11g R2Seguridad Oracle 11g R2
Seguridad Oracle 11g R2Carmen Soler
 
Estructuras de almacenamiento de Oracle 11g R2
Estructuras de almacenamiento de Oracle 11g R2Estructuras de almacenamiento de Oracle 11g R2
Estructuras de almacenamiento de Oracle 11g R2Carmen Soler
 
Gestión de la instancia de Oracle 11g R2
Gestión de la instancia de Oracle 11g R2Gestión de la instancia de Oracle 11g R2
Gestión de la instancia de Oracle 11g R2Carmen Soler
 
Arquitectura de Oracle 11g r2
Arquitectura de Oracle 11g r2Arquitectura de Oracle 11g r2
Arquitectura de Oracle 11g r2Carmen Soler
 

Más de Carmen Soler (11)

Transferencia de datos en Oracle
Transferencia de datos en OracleTransferencia de datos en Oracle
Transferencia de datos en Oracle
 
Mantenimiento de la base de datos Oracle 11g
Mantenimiento de la base de datos Oracle 11gMantenimiento de la base de datos Oracle 11g
Mantenimiento de la base de datos Oracle 11g
 
Datos UNDO en Oracle
Datos UNDO en OracleDatos UNDO en Oracle
Datos UNDO en Oracle
 
Recuperación de la base de datos en Oracle
Recuperación de la base de datos en OracleRecuperación de la base de datos en Oracle
Recuperación de la base de datos en Oracle
 
Backups en Oracle
Backups en OracleBackups en Oracle
Backups en Oracle
 
Copias de seguridad y recuperación en Oracle
Copias de seguridad y recuperación en OracleCopias de seguridad y recuperación en Oracle
Copias de seguridad y recuperación en Oracle
 
Seguridad Oracle 11g R2
Seguridad Oracle 11g R2Seguridad Oracle 11g R2
Seguridad Oracle 11g R2
 
Estructuras de almacenamiento de Oracle 11g R2
Estructuras de almacenamiento de Oracle 11g R2Estructuras de almacenamiento de Oracle 11g R2
Estructuras de almacenamiento de Oracle 11g R2
 
Gestión de la instancia de Oracle 11g R2
Gestión de la instancia de Oracle 11g R2Gestión de la instancia de Oracle 11g R2
Gestión de la instancia de Oracle 11g R2
 
Arquitectura de Oracle 11g r2
Arquitectura de Oracle 11g r2Arquitectura de Oracle 11g r2
Arquitectura de Oracle 11g r2
 
HTML (parte 1)
HTML (parte 1)HTML (parte 1)
HTML (parte 1)
 

Último

TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOTUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOweislaco
 
libro para colorear de Peppa pig, ideal para educación inicial
libro para colorear de Peppa pig, ideal para educación iniciallibro para colorear de Peppa pig, ideal para educación inicial
libro para colorear de Peppa pig, ideal para educación inicialLorenaSanchez350426
 
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxOscarEduardoSanchezC
 
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMALVOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMALEDUCCUniversidadCatl
 
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdfBIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdfCESARMALAGA4
 
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdfFisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdfcoloncopias5
 
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdfEstrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdfAlfredoRamirez953210
 
Estrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfEstrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfromanmillans
 
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...fcastellanos3
 
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdfOswaldoGonzalezCruz
 
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxPresentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxYeseniaRivera50
 
Monitoreo a los coordinadores de las IIEE JEC_28.02.2024.vf.pptx
Monitoreo a los coordinadores de las IIEE JEC_28.02.2024.vf.pptxMonitoreo a los coordinadores de las IIEE JEC_28.02.2024.vf.pptx
Monitoreo a los coordinadores de las IIEE JEC_28.02.2024.vf.pptxJUANCARLOSAPARCANARE
 
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...YobanaZevallosSantil1
 
PROGRAMACION ANUAL DE MATEMATICA 2024.docx
PROGRAMACION ANUAL DE MATEMATICA 2024.docxPROGRAMACION ANUAL DE MATEMATICA 2024.docx
PROGRAMACION ANUAL DE MATEMATICA 2024.docxEribertoPerezRamirez
 
Los Nueve Principios del Desempeño de la Sostenibilidad
Los Nueve Principios del Desempeño de la SostenibilidadLos Nueve Principios del Desempeño de la Sostenibilidad
Los Nueve Principios del Desempeño de la SostenibilidadJonathanCovena1
 
Instrucciones para la aplicacion de la PAA-2024b - (Mayo 2024)
Instrucciones para la aplicacion de la PAA-2024b - (Mayo 2024)Instrucciones para la aplicacion de la PAA-2024b - (Mayo 2024)
Instrucciones para la aplicacion de la PAA-2024b - (Mayo 2024)veganet
 

Último (20)

Sesión La luz brilla en la oscuridad.pdf
Sesión  La luz brilla en la oscuridad.pdfSesión  La luz brilla en la oscuridad.pdf
Sesión La luz brilla en la oscuridad.pdf
 
PPTX: La luz brilla en la oscuridad.pptx
PPTX: La luz brilla en la oscuridad.pptxPPTX: La luz brilla en la oscuridad.pptx
PPTX: La luz brilla en la oscuridad.pptx
 
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOTUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
 
libro para colorear de Peppa pig, ideal para educación inicial
libro para colorear de Peppa pig, ideal para educación iniciallibro para colorear de Peppa pig, ideal para educación inicial
libro para colorear de Peppa pig, ideal para educación inicial
 
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
 
DIA INTERNACIONAL DAS FLORESTAS .
DIA INTERNACIONAL DAS FLORESTAS         .DIA INTERNACIONAL DAS FLORESTAS         .
DIA INTERNACIONAL DAS FLORESTAS .
 
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMALVOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
 
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdfBIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
 
La luz brilla en la oscuridad. Necesitamos luz
La luz brilla en la oscuridad. Necesitamos luzLa luz brilla en la oscuridad. Necesitamos luz
La luz brilla en la oscuridad. Necesitamos luz
 
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdfFisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdf
 
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdfEstrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
 
Estrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfEstrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdf
 
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
 
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
 
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxPresentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
 
Monitoreo a los coordinadores de las IIEE JEC_28.02.2024.vf.pptx
Monitoreo a los coordinadores de las IIEE JEC_28.02.2024.vf.pptxMonitoreo a los coordinadores de las IIEE JEC_28.02.2024.vf.pptx
Monitoreo a los coordinadores de las IIEE JEC_28.02.2024.vf.pptx
 
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...
 
PROGRAMACION ANUAL DE MATEMATICA 2024.docx
PROGRAMACION ANUAL DE MATEMATICA 2024.docxPROGRAMACION ANUAL DE MATEMATICA 2024.docx
PROGRAMACION ANUAL DE MATEMATICA 2024.docx
 
Los Nueve Principios del Desempeño de la Sostenibilidad
Los Nueve Principios del Desempeño de la SostenibilidadLos Nueve Principios del Desempeño de la Sostenibilidad
Los Nueve Principios del Desempeño de la Sostenibilidad
 
Instrucciones para la aplicacion de la PAA-2024b - (Mayo 2024)
Instrucciones para la aplicacion de la PAA-2024b - (Mayo 2024)Instrucciones para la aplicacion de la PAA-2024b - (Mayo 2024)
Instrucciones para la aplicacion de la PAA-2024b - (Mayo 2024)
 

SQL: DDL, DML y SQL

  • 1. UF2 · SQL ASIX – Gestión de bases de datos DAM – Bases de datos 1 Departamento de Informática - Carmen Soler
  • 2. UD2.1. DDL (Data Description Language) 1. Creación de una tabla 1. Integridad de datos 2. Restricciones en CREATE TABLE 2. Supresión de tablas 3. Modificación de tablas 4. Secuencias 2 Departamento de Informática - Carmen Soler
  • 3. 1. Creación de una tabla  A tener en cuenta antes de crear una tabla  El nombre de la tabla  Debe ser un nombre que identifique el contenido  Ha de tener entre 1 y 30 caracteres de longitud y no puede ser una palabra reservada de Oracle  Por ejemplo, llamaremos ALUMNOS a una tabla que contenga datos sobre alumnos  El nombre de cada columna de la tabla  Debe ser autodescriptivo  Por ejemplo, DNI, NOMBRE o APELLIDOS  El tipo de dato y tamaño que tendrá cada columna  Las columnas que serán obligatorias, los valores por defecto, las restricciones, etc. 3 Departamento de Informática - Carmen Soler
  • 4. 1. Creación de una tabla CREATE TABLE NombreTabla ( Columna1 Tipo_dato [NOT NULL], Columna2 Tipo_dato [NOT NULL], … ) CREATE TABLE ALUMNOS ( NUMERO_MATRICULA NUMBER(6) NOT NULL, NOMBRE VARCHAR(2) NOT NULL, FECHA_NACIMIENTO DATE, DIRECCION VARCHAR2(30), LOCALIDAD VARCHAR2(15) ) 4 Departamento de Informática - Carmen Soler
  • 5. 1.1. Integridad de datos  Una restricción de integridad es una regla que restringe el rango de valores para una o más columnas de la tabla.  Una columna que no pueda almacenar números negativos  Una cadena de caracteres que sólo pueda contener mayúsculas  La integridad referencial es la que controla los valores de una columna de una tabla que dependen de otra.  VENTAS y ARTICULOS Que no haya una venta con productos inexistentes 5 Departamento de Informática - Carmen Soler
  • 6. 1.2. Restricciones en CREATE TABLE  CREATE TABLE permite definir distintos valores de restricciones sobre una tabla:  Claves primarias  Claves foráneas  Campos obligatorios  Valores de los campos por defecto  Verificación de condiciones  Para definir restricciones usamos CONSTRAINT 6 Departamento de Informática - Carmen Soler
  • 7. 1.2. Restricciones en CREATE TABLE CREATE TABLE BLOQUES_PISOS ( CALLE VARCHAR2(30),  Definir claves primarias NUMERO NUMBER(3), PISO NUMBER(2),  Es una columna o conjunto de columnas PUERTA CHAR(1),  Debe ser un campo único, no nulo y obligatorio CODIGO_POSTAL NUMBER(5), COMENTARIOS VARCHAR2(60),  Usamos la restricción PRIMARY KEY COD_ZONA NUMBER(2), DNI VARCHAR2(10), PRIMARY KEY ( CREATE TABLE ZONAS( CALLE, NUMERO, PISO, PUERTA) COD_ZONA NUMBER(3), ); NOMBREZONA VARCHAR2(15) NOT NULL, CREATE TABLE ZONAS( MASDATOS VARCHAR2(60), COD_ZONA NUMBER(3) CONSTRAINT PK_ZONAS PRIMARY KEY, PRIMARY KEY(COD_ZONA) NOMBREZONA VARCHAR2(15) ); NOT NULL, MASDATOS VARCHAR2(60) ); 7 Departamento de Informática - Carmen Soler
  • 8. 1.2. Restricciones en CREATE TABLE  Definir claves foráneas  Es una o más columnas que están asociadas a una clave primaria de otra o de la misma tabla  El valor de las columnas definidas como claves foráneas debe ser NULL o igual a un valore de la tabla referenciada (Integridad referencial) PERSONAS PROVINCIAS DNI COD_PROV NOMBRE NOM_PROV DIRECCION COD_PROV 8 Departamento de Informática - Carmen Soler
  • 9. 1.2. Restricciones en CREATE TABLE  Definir claves foráneas CREATE TABLE PERSONAS ( DNI NUMBER(8) PRIMARY KEY, CREATE TABLE PROVINCIAS ( NOMBRE VARCHAR2(15), COD_PROV NUMBER(2) DIRECCION VARCHAR2(25), PRIMARY KEY, COD_PROV NUMBER(2) NOM_PROV VARCHAR2(15) NOT NULL ); REFERENCES PROVINCIAS ); CREATE TABLE PERSONAS ( CREATE TABLE PERSONAS ( DNI NUMBER(8) PRIMARY KEY, DNI NUMBER(8) PRIMARY KEY, NOMBRE VARCHAR2(15), NOMBRE VARCHAR2(15), DIRECCION VARCHAR2(25), DIRECCION VARCHAR2(25), COD_PROV NUMBER(2) NOT NULL, COD_PROV NUMBER(2) NOT NULL, FOREIGN KEY (COD_PROV) CONSTRAINT FK_PER_PRO REFERENCES PROVINCIAS FOREIGN KEY (COD_PROV) ); REFERENCES PROVINCIAS ); 9 Departamento de Informática - Carmen Soler
  • 10. 1.2. Restricciones en CREATE TABLE  Definir claves foráneas  Si se quiere que al borrar una provincia, las personas que tengan esa provincia también sean eliminadas: CREATE TABLE PERSONAS ( DNI NUMBER(8) PRIMARY KEY, NOMBRE VARCHAR2(15), DIRECCION VARCHAR2(25), COD_PROV NUMBER(2) NOT NULL, FOREIGN KEY (COD_PROV) REFERENCES PROVINCIAS ON DELETE CASCADE );  Si no se define ONDELETE CASCADE, si la provincia pertenece a alguna persona, no podrá ser borrada 10 Departamento de Informática - Carmen Soler
  • 11. 1.2. Restricciones en CREATE TABLE  Obligatoriedad  Obliga a que la columna no pueda tener valores nulos. CREATE TABLE PERSONAS ( DNI NUMBER(8) PRIMARY KEY, NOMBRE VARCHAR2(15), DIRECCION VARCHAR2(25), COD_PROV NUMBER(2) NOT NULL, FOREIGN KEY (COD_PROV) REFERENCES PROVINCIAS ); 11 Departamento de Informática - Carmen Soler
  • 12. 1.2. Restricciones en CREATE TABLE  Valores por defecto  Obliga a que la columna no pueda tener valores nulos. CREATE TABLE EJEMPLO ( DNI VARCHAR2(10) NOT NULL, NOMBRE VARCHAR2(30) NOT NULL DEFAULT „No definido‟, EDAD NUMBER(2), FECHA DATE DEFAULT SYSDATE ); 12 Departamento de Informática - Carmen Soler
  • 13. 1.2. Restricciones en CREATE TABLE  Verificación de condiciones  Limita los valores de los campos a un rango o a unas condiciones: CREATE TABLE EJEMPLO ( DNI VARCHAR2(10) PRIMARY KEY, NOMBRE VARCHAR2(30) NOT NULL CHECK (NOMBRE=UPPER(NOMBRE)), EDAD NUMBER(2) CHECK (EDAD BETWEEN 5 AND 20), CURSO NUMBER(2) CHECK (CURSO IN(1,2,3))); 13 Departamento de Informática - Carmen Soler
  • 14. 1.2. Restricciones en CREATE TABLE  Verificación de condiciones  Limita los valores de los campos a un rango o a unas condiciones: CREATE TABLE EJEMPLO ( DNI VARCHAR2(10) PRIMARY KEY, NOMBRE VARCHAR2(30) NOT NULL, EDAD NUMBER(2), CURSO NUMBER(2), CONSTRAINT COMP_EDAD CHECK (EDAD BETWEEN 5 AND 20), CONSTRAINT NOMBRE_MAY CHECK (NOMBRE=UPPER(NOMBRE)), CONSTRAINT COMP_CURSO CHECK (CURSO IN(1,2,3)); 14 Departamento de Informática - Carmen Soler
  • 15. 1.2. Restricciones en CREATE TABLE  La restricción UNIQUE  Evita valores repetidos de la misma columna CREATE TABLE EJEMPLO ( DNI VARCHAR2(10) PRIMARY KEY, NOMBRE VARCHAR2(30) UNIQUE, EDAD NUMBER(2) ); 15 Departamento de Informática - Carmen Soler
  • 16. 1.2. Restricciones en CREATE TABLE  Las restricciones en tablas de sistema  Existen una serie de vistas que contienen información general referente a las restricciones definidas en las tablas: USER_CONSTRAINTS Definiciones de restricciones de tablas propiedad del usuario ALL_CONSTRAINTS Definiciones de restricciones de tablas a las que puede acceder el usuario DBA_CONSTRAINTS Todas las definiciones de restricciones sobre todas las tablas 16 Departamento de Informática - Carmen Soler
  • 17. 2. Supresión de tablas  Con la orden DROP TABLE  Cada usuario puede borrar sus propias tablas  Sólo el administrador de la base de datos puede borrar las tablas de los demás.  Ejemplo:  DROP TABLE EMPLEADO;  DROP TABLE PROVINCIAS;  DROP TABLE PROVINCIAS CASCADE CONSTRAINT; 17 Departamento de Informática - Carmen Soler
  • 18. 3. Modificación de tablas  Con la orden ALTER TABLE  Sintaxis general ALTER TABLE nombretabla {[ADD (columna [, columna] …)] [MODIFY (columna [, columna] …)] [ADD CONSTRAINT restricción] [DROP CONSTRAINT restricción]}; 18 Departamento de Informática - Carmen Soler
  • 19. 3. Modificación de tablas  Ejemplos ALTER TABLE EJEMPLO ADD (SEXO CHAR(1), EDAD NUMBER(2)); ALTER TABLE EJEMPLO MODIFY (SEXO CHAR(1) NOT NULL, EDAD NUMBER(4)); ALTER TABLE EMPLEADO ADD CONSTRAINT APELLIDO_UQ UNIQUE(apellido); ALTER TABLE EMPLEADO DROP CONSTRAINT APELLIDO_UQ; 19 Departamento de Informática - Carmen Soler
  • 20. 4. Secuencias  Oracle proporciona objetos de secuencia para la generación de números autonuméricos.  A la hora de generarlo, podemos utilizar todos los parámetros posibles (primer caso), o bien, simplificar la orden aceptando los valores por defecto (segundo caso). 20 Departamento de Informática - Carmen Soler
  • 21. 4. Secuencias  Para ir obteniendo los valores de esta secuencia tenemos dos formas:  Que me dé el siguiente valor que corresponde (caso 1)  Que me dé el último valor que se asignó (caso 2)  Para eliminarlas, igual que con todos los objetos de la base de datos. 21 Departamento de Informática - Carmen Soler
  • 22. 4. Secuencias  Las secuencias nos serán útiles en diferentes ocasiones:  Cuando queramos obtener el último valor de primary key que se insertó en la tabla.  Cuando hacemos un insert de un valor nuevo y queremos obtener qué valor es el siguiente de primary key.  Las secuencias son muy útiles a la hora de programar con PL/SQL. 22 Departamento de Informática - Carmen Soler
  • 23. UD2.2. DML (Data Manipulation Language) 1. Inserción de datos: INSERT 2. Modificación de datos: UPDATE 3. Borrado de filas: DELETE 4. Restricciones 23 Departamento de Informática - Carmen Soler
  • 24. 1. Inserción de datos: INSERT INSERT INTO NombreTabla [ (columna [, columna]…) ] VALUES (valor [, valor]);  Las columnas que no estén en la lista recibirán un NULL  Si la columna está definida como NOT NULL y además, la columna no aparece en la lista, el INSERT fallará. 24 Departamento de Informática - Carmen Soler
  • 25. 1. Inserción de datos: INSERT CREATE TABLE ALUMNOS ( NUMERO_MATRICULA NUMBER(6) NOT NULL, NOMBRE VARCHAR(12) NOT NULL, FECHA_NACIMIENTO DATE, DIRECCION VARCHAR2(30), LOCALIDAD VARCHAR2(15) ) INSERT INTO ALUMNOS (NUMERO_MATRICULA, NOMBRE, FECHA_NACIMIENTO) VALUES (123456, „Pepito‟, SYSDATE); 25 Departamento de Informática - Carmen Soler
  • 26. 2. Modificación de datos: UPDATE UPDATE NombreTabla SET columna1 = valor1, …, columnan = valorn WHERE condición;  Con el WHERE seleccionamos las filas que se van a actualizar.  Si no ponemos nada, la actualización afectará a todas las filas de la tabla. 26 Departamento de Informática - Carmen Soler
  • 27. 2. Modificación de datos: UPDATE CREATE TABLE ALUMNOS ( NUMERO_MATRICULA NUMBER(6) NOT NULL, NOMBRE VARCHAR(12) NOT NULL, FECHA_NACIMIENTO DATE, DIRECCION VARCHAR2(30), LOCALIDAD VARCHAR2(15) ) UPDATE ALUMNOS SET NOMBRE = „Pepito2‟ WHERE NUMERO_MATRICULA = „123456‟; 27 Departamento de Informática - Carmen Soler
  • 28. 3. Borrado de filas: DELETE DELETE FROM NombreTabla WHERE condición;  Con el WHERE seleccionamos las filas que se van a eliminar.  Hay que ir con mucho cuidado porque si no ponemos WHERE, se eliminarán todas las filas de la tabla. 28 Departamento de Informática - Carmen Soler
  • 29. 3. Borrado de datos: DELETE CREATE TABLE ALUMNOS ( NUMERO_MATRICULA NUMBER(6) NOT NULL, NOMBRE VARCHAR(12) NOT NULL, FECHA_NACIMIENTO DATE, DIRECCION VARCHAR2(30), LOCALIDAD VARCHAR2(15) ) DELETE FROM ALUMNOS WHERE NUMERO_MATRICULA = „123456‟; 29 Departamento de Informática - Carmen Soler
  • 30. 4. Restricciones 30 Departamento de Informática - Carmen Soler
  • 31. 4. Restricciones  Sobre el modelo anterior  Si queremos dejar definidas las claves primarias y foráneas en su creación, ¿en qué orden deberíamos crear las tablas?  ¿Y si definiéramos claves primarias y foráneas después de crear las tablas?  Suponemos que la base de datos está vacía y todas las columnas son NOT NULL. Quiero insertar algo en la tabla de PERSONAS y no podré, ¿por qué? ¿cómo lo solucionaría?  Si hay datos en todas las tablas y no quiero hacer un borrado en cascada, ¿en qué orden debo eliminarlos? 31 Departamento de Informática - Carmen Soler
  • 32. UD2.3. Consultas 1. Estructura general de una consulta 8. Valor NULL 2. DESC / DESCRIBE 9. ORDER BY 3. Tipos de datos. Características. 10. Tabla DUAL 4. DISTINCT 11. Funciones simples 5. AS (alias) 1. De VARCHAR 2. De NUMBER 6. WHERE 3. De DATE 1. AND y BETWEEN 2. OR e IN 12. Funciones de grupo 3. NOT 13. Subconsultas 4. LIKE 14. Combinación de tablas 7. Operaciones aritméticas 32 Departamento de Informática - Carmen Soler
  • 33. 1. Estructura general de una consulta SELECT [ALL | DISTINCT] [expre_column1, expre_column2, …, expre_column|*] FROM [nombre_tabla1, nombre_tabla2, …, nombre_tablan] [WHERE condicion] [ORDER BY expre_column [DESC|ASC] [,expre_column [DESC|ASC]]]  Ejemplos FROM: SELECT nom_alum, nota FROM ALUMNOS; SELECT A.nom_alum, A.nota FROM ALUMNOS A; 33 Departamento de Informática - Carmen Soler
  • 34. 1. Estructura general de una consulta  Selección por columnas (proyección) Selección por filas (selección) SELECT NOMBRE, DEPT_NO FROM DEPART; SELECT EMP_NO, APELLIDO, OFICIO, DEPT_NO FROM EMPLE WHERE DEPT_NO = 20 ORDER BY APELLIDO; SELECT * FROM EMPLE WHERE OFICIO=„ANALISTA‟; SELECT * FROM EMPLE WHERE DEPT_NO=10 AND OFICIO=„ANALISTA‟ ORDER BY APELLIDO DESC, EMP_NO DESC; 34 Departamento de Informática - Carmen Soler
  • 35. 2. DESC / DESCRIBE  Sirve para consultar la estructura de una tabla. DESCRIBE HR.REGIONS 35 Departamento de Informática - Carmen Soler
  • 36. 3. Tipos de datos. Características.  Resumen de los más importantes:  VARCHAR2(n) Para almacenar texto. Es una evolución del antiguo CHAR(n) La ventaja que tiene VARCHAR2 es que, si no ocupa los n caracteres, el resto de espacio no queda asignado.  NUMBER(n,d) Valores numéricos con o sin decimales No es obligatorio indicar las cifras n y d, pero si se hace: N es el número de dígitos total que tiene el número D es el número de decimales que tiene (va incluido en N) 36 Departamento de Informática - Carmen Soler
  • 37. 3. Tipos de datos. Características.  Resumen de los más importantes:  DATE Guarda valores de fecha y hora.  Otros tipos: Timestamp  guarda una fecha expresada en segundos. BLOB  Para almacenar contenido multimedia. 37 Departamento de Informática - Carmen Soler
  • 38. 4. DISTINCT  Ejemplos DISTINCT: SELECT DEPT_NO FROM EMPLE; (1) SELECT DISTINCT DEPT_NO FROM EMPLE; (2) DEPT_NO (1) DEPT_NO (2) 20 10 30 20 30 30 20 10 10 30 20 10 38 Departamento de Informática - Carmen Soler
  • 39. 5. AS (alias) SELECT FIRST_NAME as “Nombre”, LAST_NAME Apellido, SALARY “Salario actual” FROM EMPLOYEES 39 Departamento de Informática - Carmen Soler
  • 40. 6. WHERE  Ejemplos WHERE: -- La nota está entre 5 y 10 (incluidos) WHERE (NOTA <= 10) AND (NOTA >= 5) WHERE NOTA BETWEEN 5 AND 10 -- La nota no está entre 5 y 10, debe ser una nota - --fuera de estos límites WHERE NOTA NOT BETWEEN 5 AND 10; -- La nota es ó 5 ó 10 WHERE (NOTA = 10) OR (NOTA = 5) WHERE NOTA IN (5, 10) -- La nota no es ni 5 ni 10 WHERE NOTA NOT IN (5, 10) 40 Departamento de Informática - Carmen Soler
  • 41. 6. WHERE  Más ejemplos de IN  Para comprobar si una columna pertenece o no a un conjunto de valores SELECT APELLIDO FROM EMPLE WHERE DEPT_NO IN(10,30); SELECT APELLIDO FROM EMPLE WHERE DEPT_NO NOT IN(10, 30);  Más ejemplos de BETWEEN SELECT APELLIDO, SALARIO FROM EMPLE WHERE SALARIO BETWEEN 1100 and 1200; SELECT APELLIDO, SALARIO FROM EMPLE WHERE NOT BETWEEN 1100 and 1200; 41 Departamento de Informática - Carmen Soler
  • 42. 6. WHERE  Combinación de AND y OR SELECT APELLIDO, SALARIO, DEPT_NO FROM EMPLE WHERE SALARIO>1500 AND (DEPT_NO=10 OR DEPT_NO=20); APELLIDO SALARIO DEPT_NO JIMENEZ 1800 20 CEREZO 1600 10 GIL 1700 20 REY 2500 10 FERNANDEZ 1900 20 SELECT APELLIDO, SALARIO, DEPT_NO FROM EMPLE WHERE SALARIO>1500 AND DEPT_NO IN(10,20); 42 Departamento de Informática - Carmen Soler
  • 43. 6. WHERE  Combinación de AND y OR SELECT APELLIDO, SALARIO, DEPT_NO FROM EMPLE WHERE SALARIO>1500 AND DEPT_NO=10 OR DEPT_NO=20; APELLIDO SALARIO DEPT_NO SANCHEZ 1400 20 JIMENEZ 1800 20 CEREZO 1600 10 GIL 1700 20 REY 2500 10 ALONSO 1350 20 FERNANDEZ 1900 20 43 Departamento de Informática - Carmen Soler
  • 44. 6. WHERE  Hay una forma especial para comparar cadenas de caracteres  Usamos el operador LIKE  Tenemos caracteres especiales: ‘%’  es un comodín, representa una cadena de 0 o más caracteres ‘_’  Marcador de posición. Representa un carácter cualquiera.  Ejemplos  LIKE ‘Director’  Igual a la cadena ‘Director’  LIKE ‘M%’  Que empiece por ‘M’  LIKE ‘%X%’  Que contenga una ‘X’  LIKE ‘__M’  Que tenga 3 caracteres y acabe en ‘M’  LIKE ‘_R%’  Cualquier cadena que la segunda letra sea ‘R’ 44 Departamento de Informática - Carmen Soler
  • 45. 7. Operaciones aritméticas  Sirven para formar expresiones con constantes, valores de columnas y funciones de valores de columnas SELECT col1*col2, col1-col2 FROM tabla1 WHERE col1+col2=34;  Operadores aritméticos y operación asociada:  +  Suma  -  Resta  *  Multiplicación  /  División 45 Departamento de Informática - Carmen Soler
  • 46. 7. Operaciones aritméticas  Sirven para formar expresiones con constantes, valores de columnas y funciones de valores de columnas NOMBRE_ALUMNO NOTA1 NOTA2 NOTA3 Luís Benito 5 5 5 Manuel Casas 7 6 8 Ana Sánchez 3 5 5 Antonio García 6 4 5  Sacar la nota media de cada alumno SELECT NOMBRE_ALUMNO, (NOTA1+NOTA2+NOTA3)/3 FROM NOTAS_ALUMNOS; 46 Departamento de Informática - Carmen Soler
  • 47. 7. Operaciones aritméticas  Ejemplo NOMBRE_ALUMNO NOTA1 NOTA2 NOTA3 Luís Benito 5 5 5 Manuel Casas 7 6 8 Ana Sánchez 3 5 5 Antonio García 8 4 5  Obtener aquellos nombres de alumnos que tengan un 7 en NOTA1 y cuya media sea mayor que 6 SELECT NOMBRE_ALUMNO FROM NOTAS_ALUMNOS WHERE NOTA1=7 AND (NOTA1+NOTA2+NOTA3)/3>6; 47 Departamento de Informática - Carmen Soler
  • 48. 8. Valor NULL  Consideramos que una columna es NULL si no tiene ningún valor asignado.  No es null un número que sea cero y, no es null un varchar2 vacío.  Para comprobar si es NULL o no empleamos:  Columna IS NULL  Columna IS NOT NULL SELECT APELLIDO FROM EMPLE WHERE COMISION IS NULL; SELECT APELLIDO FROM EMPLE WHERE COMISION IS NOT NULL; 48 Departamento de Informática - Carmen Soler
  • 49. 8. Valor NULL  Al ser un valor especial, se comporta de manera especial en estos casos:  En operaciones aritméticas con un valor null, el resultado es null;  En concatenaciones con un valor null, no tiene efecto. Ni siquiera aparece ‘null’ en el resultado, es como si no estuviera. -- El resultado es NULL SELECT SALARIO*1.25+NULL FROM EMPLE -- El resultado es el valor del Apellido SELECT APELLIDO||NULL FROM EMPLE 49 Departamento de Informática - Carmen Soler
  • 50. 9. ORDER BY  Ejemplo: SELECT * FROM ALUMNOS ORDER BY NOM_ALUM, CURSO DESC;  El primer criterio de ordenación es el principal, si hay varios iguales, se ordenarán según el secundario.  Se ordena por nom_alum ascendente y por curso descendente.  Por defecto es ordenación ascendente. Si se quiere descendente se debe indicar explícitamente. 50 Departamento de Informática - Carmen Soler
  • 51. 10. Tabla DUAL  La tabla DUAL es una tabla de sistema que sirve para hacer pruebas.  Si yo escribo: SELECT 1*2 FROM REGIONS, porque quiero probar cómo funciona una operación de *, me saldrá la * 4 veces, una por cada fila de regions.  Si sólo se quiere hacer pruebas, DUAL es muy útil porque tiene sólo una columna y una fila creadas: 51 Departamento de Informática - Carmen Soler
  • 52. 11. Funciones simples  Se llaman simples porque se aplican por cada uno de los resultados del select.  DE VARCHAR2: SELECT INITCAP(first_name||' '|| last_name) as "Nombre completo", LENGTH(first_name||' '|| last_name) as "Longitud", FROM EMPLOYEES WHERE (LOWER(last_name) like '%a%' or UPPER(first_name) like '%E%')  Además de las del ejemplo tenemos: SUBSTR, INSTR, RPAD, LPAD, TRIM y REPLACE 52 Departamento de Informática - Carmen Soler
  • 53. 11. Funciones simples  DE NUMBER:  ROUND(12.62)  Da 13  ROUND(12.37)  Da 12  ROUND(12.37,1)  Redondea a 1 decimal  12.4  ROUND(12.62,1)  Redondea a 1 decimal  12.6  TRUNC(12.62)  Elimina los decimales  12  TRUNC(12.37,1)  Deja sólo 1 decimal  12.3 53 Departamento de Informática - Carmen Soler
  • 54. 11. Funciones simples  DE DATE:  MONTHS_BETWEEN(fecha2, fecha1) Da el número de meses que hay entre las dos fechas. Puede retornar un valor decimal  ADD_MONTHS(fecha, numMeses) Añade a una fecha el número de meses que se indique.  LAST_DAY(fecha) Nos da el último día de mes de la fecha indicada  NEXT_DAY(fecha, ‘día semana’) Si dia semana es Lunes, nos da la fecha del próximo lunes partiendo de la fecha que se indica. 54 Departamento de Informática - Carmen Soler
  • 55. 12. Funciones de grupo  A diferencia de las funciones simples, se aplican sobre un conjunto de filas de la tabla.  Las que utilizaremos son: COUNT, SUM, AVG, MAX, MIN -- Cuenta los empleados que hay -- Retorna un único número. SELECT COUNT(*) FROM EMPLE -- Cuenta los salarios que hay -- si hay un valor null, no lo cuenta SELECT COUNT(SALARY) FROM EMPLE -- Cuentas los trabajos diferentes que hay SELECT COUNT(DISTINCT SALARY) FROM EMPLE 55 Departamento de Informática - Carmen Soler
  • 56. 12. Funciones de grupo -- Calcula la media de sueldo de los empleados -- de un departamento concreto SELECT AVG(salary) FROM EMPLE WHERE DEP_ID=30 -- Salario más alto de la empresa -- podemos utilizar 2 funciones de grupo -- en la misma consulta SELECT MAX(SALARY), MIN(SALARY) FROM EMPLE  ¿Es lo mismo? 56 Departamento de Informática - Carmen Soler
  • 57. 12. Funciones de grupo  Visualizar el número de empleados que hay en cada departamento.  Tenemos que agrupar las filas de la tabla EMPLE por departamento (GROUP BY DEPT_NO) y contarlas (COUNT(*)) SELECT DEPT_NO, COUNT(*) FROM EMPLE GROUP BY DEPT_NO;  COUNT es una función de grupo y da información sobre un grupo de filas, no sobre filas individuales de cada tabla.  GROUP BY obliga a COUNT a contar las filas que se han agrupado por cada departamento. 57 Departamento de Informática - Carmen Soler
  • 58. 12. Funciones de grupo  Ejemplo de HAVING:  Visualizar los departamentos con más de 4 empleados. SELECT DEPT_NO, COUNT(*) FROM EMPLE GROUP BY DEPT_NO HAVING COUNT(*)>4  HAVING es similar al WHERE, pero trabaja con grupos de filas. Puede preguntar por el resultado de funciones de grupo, como es este caso.  Además, podemos ordenar la salida: SELECT DEPT_NO, COUNT(*) FROM EMPLE GROUP BY DEPT_NO HAVING COUNT(*)>4 ORDER BY COUNT(*) DESC; 58 Departamento de Informática - Carmen Soler
  • 59. 12. Funciones de grupo  En tiempo de ejecución de la query, las cláusulas siguen este orden:  WHERE  Para seleccionar las filas  GROUP BY  Agrupa estas filas  HAVING  Filtra los grupos  ORDER BY  Clasifica la salida. Ordena los grupos. 59 Departamento de Informática - Carmen Soler
  • 60. 13. Subconsultas  Seguimos haciendo consultas de una sola tabla, pero ahora vamos a combinar varias consultas en una sola.  Esta es una consulta con subconsultas en la que podemos saber, a día de hoy, cuántos empleados y departamentos tenemos: SELECT SYSDATE HOY, (SELECT COUNT(*) FROM DEPARTMENTS) NUM_DEPT, (SELECT COUNT(*) FROM EMPLOYEES) EMP_COUNT FROM DUAL; 60 Departamento de Informática - Carmen Soler
  • 61. 13. Subconsultas  A veces para realizar consultas, necesitamos los datos devueltos por otras consultas.  Queremos saber los apellidos de aquellas personas que tienen el mismo oficio que el que se apellida ‘Bates’ (suponemos que sólo hay un ‘Bates’).  PASO 1 Averiguar el oficio de Bates: SELECT JOB_ID FROM EMPLOYEES WHERE LAST_NAME = ‘Bates’  PASO 2 El JOB_ID es ‘SA_REP’ SELECT APELLIDO FROM EMPLE WHERE JOB_ID = ‘SA_REP’ AND LAST_NAME <> ‘Bates’ 61 Departamento de Informática - Carmen Soler
  • 62. 13. Subconsultas  Esto se puede resumir en una única consulta SELECT LAST_NAME FROM EMPLOYEES WHERE JOB_ID = (SELECT JOB_ID FROM EMPLOYEES WHERE LAST_NAME = ‘Bates’ ) AND LAST_NAME <> ‘Bates’; 62 Departamento de Informática - Carmen Soler
  • 63. 13. Subconsultas  Subconsultas con valores simples  Devuelven una fila o un valor de la fila  El ejemplo anterior devuelve un solo valor que puedo igualar a oficio con ‘=‘. SELECT LAST_NAME FROM EMPLOYEES WHERE JOB_ID = (SELECT JOB_ID FROM EMPLOYEES WHERE LAST_NAME = ‘Bates’ ) AND LAST_NAME <> ‘Bates’; 63 Departamento de Informática - Carmen Soler
  • 64. 13. Subconsultas  Subconsultas con valores simples  Pero si digo lo siguiente: SELECT LAST_NAME FROM EMPLOYEES WHERE JOB_ID = (SELECT JOB_ID FROM EMPLOYEES WHERE DEPTARTMENT_ID = 20 ) Esto devuelve más de un oficio y, por lo tanto, dará un error. 64 Departamento de Informática - Carmen Soler
  • 65. 13. Subconsultas  Subconsultas que generan listas de valores  Si devuelve más de un valor, debemos usar el operador IN. SELECT LAST_NAME FROM EMPLOYEES WHERE JOB_ID IN (SELECT JOB_ID FROM EMPLOYEES WHERE DEPTARTMENT_ID = 20 ) 65 Departamento de Informática - Carmen Soler
  • 66. 13. Subconsultas  Ejercicio  Obtén los departamentos que estén situados en Seattle (1) SELECT LOCATION_ID FROM LOCATIONS WHERE CITY = ‘Seattle’  LOCATION_ID = 1700 (2) SELECT DEPARTMENT_NAME FROM DEPARTMENTS WHERE LOCATION_ID = 1700 (2) Cómo juntamos (1) y (2)??? 66 Departamento de Informática - Carmen Soler
  • 67. 13. Subconsultas  Ejercicio  Obtener el apellido de los empleados con el mismo oficio que ‘Bates’ y un salario inferior (comparación doble) 67 Departamento de Informática - Carmen Soler
  • 68. 13. Subconsultas  Sacar el apellido de los empleados que cobren menos que el salario medio de todos los empleados: SELECT LAST_NAME FROM EMPLOYEES WHERE SALARY < (SELECT AVG(SALARY) FROM EMPLOYEES)  Sacar el apellido de los empleados que cobren menos que el salario medio dentro de su mismo departamento: SELECT LAST_NAME FROM EMPLOYEES Q WHERE SALARY < (SELECT AVG(SALARY) FROM EMPLOYEES S WHERE S.DEPARTMENT_ID = Q.DEPARTMENT_ID) 68 Departamento de Informática - Carmen Soler
  • 69. 13. Subconsultas  Sacar el apellido del empleado que más cobra de la empresa: SELECT LAST_NAME FROM EMPLOYEES WHERE SALARY = (SELECT MAX(SALARY) FROM EMPLOYEES)  Sacar el apellido de los empleados que sean jefe de algún otro empleado: SELECT LAST_NAME FROM EMPLOYEES WHERE EMPLOYEE_ID IN (SELECT MANAGER_ID FROM EMPLOYEES) 69 Departamento de Informática - Carmen Soler
  • 70. 14. Combinación de tablas  Para consultas que necesiten varias tablas.  Reglas a tener en cuenta:  Es posible hacer la consulta de tantas tablas como queramos  Desde SELECT podemos referirnos a columnas de cualquier tabla  Si hay columnas de diferentes tablas con el mismo nombre, las distinguiremos así: NombreTabla.NombreColumna  La forma de combinar las tablas se especifica en WHERE. Si no se indica nada, se hará un producto cartesiano 70 Departamento de Informática - Carmen Soler
  • 71. 14. Combinación de tablas  Ejemplos SELECT LAST_NAME, JOB_ID, EMPLOYEE_ID, DEPARTMENT_NAME, LOCATION_ID FROM EMPLOYEES E, DEPARTMENTS D WHERE E.DEPARTMENT_ID = D.DEPTARTMENT_ID SELECT LAST_NAME, JOB_ID, EMPLOYEE_ID, DEPARTMENT_NAME, LOCATION_ID FROM EMPLOYEES E, DEPARTMENTS D 71 Departamento de Informática - Carmen Soler
  • 72. 14. Combinación de tablas  Ejemplo join 72 Departamento de Informática - Carmen Soler
  • 73. 14. Combinación de tablas  Para hacer joins, tenemos 2 formas:  Poner todas las condiciones en el WHERE como acabamos de ver.  Utilizar un INNER JOIN.  A efectos de resultados, el INNER JOIN es exactamente lo mismo.  Lo que cambia es el nivel de eficiencia. Si los campos de unión de tablas tienen definidos índices, el INNER JOIN es capaz de aprovechar estos índices para hacer la consulta más rápidamente. 73 Departamento de Informática - Carmen Soler
  • 74. 14. Combinación de tablas  Explicamos brevemente cómo crear un índice: (1)CREATE INDEX I_DEPT_NAME ON DEPARTMENTS(DEPARTMENT_NAME) (2)CREATE UNIQUE INDEX UI_DEPARTMENT_NAME ON DEPARTMENTS(DEPARTMENT_NAME) (3)DROP INDEX I_DEPT_NAME  El caso (1), permite que en esa columna haya repetidos  El caso (2) no permite repetidos, podría usarse como índice de una clave primaria  El caso (3) es para eliminar un índice.  Si el índice se está usando junto con una PK, primero habrá que eliminar la PK y luego el índice. 74 Departamento de Informática - Carmen Soler
  • 75. 14. Combinación de tablas  Inner Join  Poniendo condiciones en el WHERE SELECT tCoches.matricula, tMarcas.marca, tCoches.modelo, tCoches.color, tCoches.numero_kilometros, tCoches.num_plazas FROM tCoches, tMarcas WHERE tCoches.marca = tMarcas.codigo  Utilizando INNER JOIN SELECT tCoches.matricula, tMarcas.marca, tCoches.modelo, tCoches.color, tCoches.numero_kilometros, tCoches.num_plazas FROM tCoches INNER JOIN tMarcas ON tCoches.marca = tMarcas.codigo 75 Departamento de Informática - Carmen Soler
  • 76. 14. Combinación de tablas  En la diapo 42, vemos que, en el listado de resultados que aparecerá sólo veremos aquellas marcas que tengan asignadas algún coche. Las marcas 2, 4 y 5 no aparecerán en el listado.  Si quiero ver cada coche y su marca y también quiero que aparezcan en el listado las marcas que no tienen coche, con lo que sabemos hasta ahora no es posible hacerlo.  Una posible solución que veremos ahora será el left y el right join. 76 Departamento de Informática - Carmen Soler
  • 77. 14. Combinación de tablas  Left Join SELECT tCoches.matricula, tMarcas.marca, tCoches.modelo, tCoches.color, tCoches.numero_kilometros, tCoches.num_plazas FROM tCoches LEFT JOIN tMarcas ON tCoches.marca = tMarcas.codigo 77 Departamento de Informática - Carmen Soler
  • 78. 14. Combinación de tablas  Right Join SELECT tCoches.matricula, tMarcas.marca, tCoches.modelo, tCoches.color, tCoches.numero_kilometros, tCoches.num_plazas FROM tCoches RIGHT JOIN tMarcas ON tCoches.marca = tMarcas.codigo 78 Departamento de Informática - Carmen Soler
  • 79. 14. Combinación de tablas  Sobre la base de datos del ejercicio 4, haz estas consultas: 1. Obtén un listado en el que aparezca en nombre y ciudad del comercio y el nombre y versión de los programas que ha distribuido. Si un comercio no ha distribuido ningún programa también tiene que aparecer. 2. Sacar un listado con el nombre de los clientes y los medios que han utilizado para registrar programas. Si un cliente no ha hecho nunca un registro también tiene que aparecer. Que no aparezcan repetidos. 3. Obtén una lista de los programas que ha desarrollado cada fabricante. Si un fabricante no ha desarrollado ningún programa también tiene que aparecer. 4. Obtén una lista de todos los programas que no se hayan registrado. 79 Departamento de Informática - Carmen Soler
  • 80. UD2.4. Varios 1. UNION, INTERSECT 2. Crear una tabla a partir de una consulta 3. Creación y uso de vistas 4. Inserción utilizando select 5. Actualización utilizando select 6. Borrado utilizando select 80 Departamento de Informática - Carmen Soler
  • 81. 1. Union, intersect  Ejemplo de UNION  Tenemos dos tablas: ALUMNOS y NUEVOS que tienen la misma estructura y queremos juntarlas: SELECT NOMBRE FROM ALUMNOS UNION SELECT NOMBRE FROM NUEVOS;  El UNION combina el resultado de las dos consultas. Si hay filas duplicadas, las reduce a una. UNION ALL no compacta, mantiene todos los resultados aunque hayan repetidos. SELECT NOMBRE FROM ALUMNOS UNION ALL SELECT NOMBRE FROM NUEVOS; 81 Departamento de Informática - Carmen Soler
  • 82. 1. Union, intersect  Ejemplo de INTERSECT  Tenemos dos tablas: ALUMNOS y ANTIGUOS que tienen la misma estructura y queremos ver las tuplas comunes: SELECT NOMBRE FROM ALUMNOS INTERSECT SELECT NOMBRE FROM ANTIGUOS;  El INTERSECT es equivalente a esto: SELECT NOMBRE FROM ALUMNOS WHERE NOMBRE IN (SELECT NOMBRE FROM ANTIGUOS); 82 Departamento de Informática - Carmen Soler
  • 83. 2. Crear una tabla a partir de una consulta  Ejemplos CREATE TABLE EJEMPLO_COPY AS SELECT * FROM EJEMPLO; CREATE TABLE EJEMPLO_COPY(COL1, COL2, COL3, COL4) AS SELECT * FROM EJEMPLO; CREATE TABLE EMPLEYDEPART AS SELECT E.APELLIDO, D.NOMBRE FROM EMPLE E, DEPART D WHERE E.DEPT_NO=D.DEPT_NO 83 Departamento de Informática - Carmen Soler
  • 84. 3. Creación y uso de vistas  Para obtener datos, a veces hay que hacer consultas complejas:  Podemos crear vistas que contengan el resultado de esta consulta.  Así en lugar de hacer la consulta compleja, siempre tenemos el resultado en esa vista.  La vista es una tabla lógica, no tiene información en sí misma, sino que depende de lo que contienen otras tablas (tablas base)  A las vistas se accede igual que lo haríamos a una tabla. 84 Departamento de Informática - Carmen Soler
  • 85. 3. Creación y uso de vistas  Ejemplos  Mostrar apellidos y salario de los empleados del departamento 30: CREATE VIEW DEP30 AS SELECT APELLIDO,SALARIO FROM EMPLE WHERE DEPT_NO=30;  También puedo seleccionar las columnas que se mostrarán y cambiar su nombre: CREATE VIEW DEP30 (APE, OFI, SAL) AS SELECT APELLIDO, OFICIO, SALARIO FROM EMPLE WHERE DEPT_NO=30 85 Departamento de Informática - Carmen Soler
  • 86. 3. Creación y uso de vistas  Si borro la tabla de la que depende la vista, cuando consultemos la vista, se lanzará un error, pero la vista continuará existiendo  Para eliminar una vista: DROP VIEW DEP30; 86 Departamento de Informática - Carmen Soler
  • 87. 3. Creación y uso de vistas  Actualización/borrado de filas a través de una vista:  Para poder hacerlo, la vista se ha de crear: Con las filas de una sola tabla Sin usar GROUP BY ni DISTINCT Sin utilizar funciones SQL  Insertar filas a través de una vista:  Se han de tener en cuenta las restricciones anteriores y además: TODAS las columnas obligatorias de la tabla deben estar incluidas en la vista. Sino será como si estuviéramos insertando un valor NULL para esa columna y dará error. 87 Departamento de Informática - Carmen Soler
  • 88. 4. Inserción utilizando Select  Hasta ahora podíamos insertar una tupla cada vez.  Combinándolo con un select, podemos añadir tantas filas como devuelva la consulta:  Ejemplo: INSERT INTO EMPLE30(EMP_NO, APELLIDO, OFICIO, SALARIO, COMISION, DEPT_NO) ( SELECT EMP_NO, APELLIDO, OFICIO, SALARIO, COMISION, DEPT_NO FROM EMPLE WHERE DEPT_NO = 30); 88 Departamento de Informática - Carmen Soler
  • 89. 5. Actualización utilizando Select  Ejemplo: UPDATE CENTROS SET (DIRECCION, NUMPLAZAS) = (SELECT DIRECCION, NUMPLAZAS FROM CENTROS WHERE COD_CENTRO=50) WHERE COD_CENTRO=10; 89 Departamento de Informática - Carmen Soler
  • 90. 6. Borrado utilizando Select  Ejemplo: DELETE FROM DEPART WHERE DEPT_NO IN (SELECT DEPT_NO FROM EMPLE GROUP BY DEPT_NO HAVING COUNT(*)<4); 90 Departamento de Informática - Carmen Soler