Base d D
     B    de Datos:
     Lenguaje SQL
        guaj Q



Profesor:
MSC.
MSC Luis Serna Jherry
               Jherry.
Objetivos de Hoy
Introducción al SQL Basico
Sentencias DDL:
    CREATE TABLE
    ALTER TABLE
    DROP TABLE
Sentencia DML:
  SELECT
     Cláusulas SELECT, FROM, INTO, WHERE
     Cláusulas GROUP BY, HAVING
     Cláusula ORDER BY
       á
     Tipos de JOIN
     Subqueries
  Sentencias INSERT UPDATE y DELETE
             INSERT,
SENTENCIAS DDL
SENTENCIAS DDL


  CREATE TABLE
Las tablas se definen en tres pasos:
    Dar el nombre a la tabla
    Definir cada columna, posiblemente incluyendo
    restricciones de columna
    Definir las restricciones de la tabla
SENTENCIAS DDL


  CREATE TABLE
CREATE TABLE nombre-tabla
{campo1 (tipo ta a o / do
 ca po (t po tamaño dominio) [NOT NULL],
                          o) [ O U ],
 [campo2 (tipo tamaño / dominio) [NOT NULL]],
 [PRIMARY KEY (c1, c2, ..., cn)],
 [              (c , c , , c )
 [FOREIGN KEY (c1) REFERENCES tabla-x],
  [CHECK (P)]}
SENTENCIAS DDL


 CREATE TABLE
Nombre-tabla: Es el nombre de la tabla que se va a crear.
Campo i: son los nombres de los campos de la tabla.
   p                               p
Tipo: Es el tipo de datos del campo.
Tamaño:Es el tamaño del campo en caracteres
                           p
Dominio: es el nombre del dominio asignado al campo.
SENTENCIAS DDL


 CREATE TABLE
Primary Key: especifica las columnas que conforman la
clave primaria de la tabla.
Foreign key: indica las columnas que constituyen clave
externa en la tabla
References: indica la tabla que provee la clave foránea.
Check (P): especifica un predicado que debe satisfacer
cada fila de la tabla
SENTENCIAS DDL


Ejemplos: CREATE TABLE
CREATE TABLE Clientes
 (
 (id-cliente      char(5) not null,
                       ( )        ,
 nombre-cliente   char(20),
 ca e c e te
 calle-cliente    c a (30),
                  char(30),
 primary key      id-cliente)
SENTENCIAS DDL


 Ejemplos: CREATE TABLE
CREATE TABLE Cuenta
 (
 (id-cuenta      char(10) not null,
                      ( )         ,
 id-cliente      char(5),
 sa do
 saldo           integer
                   tege
         check   (saldo >= 0),
 primary key     id cuenta
                 id-cuenta
 foreign key     id-cliente references clientes)
SENTENCIAS DDL


 Uso de Constraints
Una restricción es similar a un índice, aunque también se
puede utilizar para establecer una relación con otra tabla.
Puede utilizar la cláusula CONSTRAINT en las instrucciones
ALTER TABLE y CREATE TABLE para crear o eliminar
restricciones.
restricciones
Hay dos tipos de cláusulas CONSTRAINT: una para crear
una restricciones en un único campo y otra para crear una
                                 p         p
restricción en más de un campo.
SENTENCIAS DDL


    Uso de Constraints
CONSTRAINT nombre
{
{PRIMARY KEY (p
              (principal1 [,principal2 [, ...]]) |
                     p    [,p     p          ]])
UNIQUE (único1 [,único2 [, ...]]) |
NOT NULL (negadonulo1 [,negadonulo2 [, ...]]) |
FOREIGN KEY (referencia1 [,referencia2 [, ...]])
  REFERENCES tabla_externa [(campo_externo1
  [,campo_externo2 [, ]])]}
  [ campo externo2 [ ...]])]}
SENTENCIAS DDL


 Uso de Constraints
Nombre: Es el nombre de la restricción que se va
a crear.
principal1, principal2: Son los nombres de los
campos que se van a designar como clave
principal.
p incipal
único1, único2: Son los nombres de los campos
que se van a designar como clave única
                                   única.
SENTENCIAS DDL


 Uso de Constraints
negadonulo1, negadonulo2: Son los nombres de
campos que se van a limitar a valores no Null.
    p q
referencia1, referencia2: Son los nombres de los
campos de la clave externa a los que se hace
referencia en otra tabla.
SENTENCIAS DDL


 Uso de Constraints
Tabla_externa: Es el nombre de la tabla externa que
contiene el campo o los campos especificados por
                 p           p    p            p
campo_externo.
Campo_externo1, campo_externo2: Son los nombres de
los
l campos en tabla_externa especificados por
                t bl    t         ifi d
referencia1, referencia2. Puede omitir esta cláusula si el
campo al que se hace referencia es la clave principal de
tabla_externa.
SENTENCIAS DDL


  ALTER TABLE
ALTER TABLE nombre-tabla
{
{ADD | MODIFY
[COLUMN campo tipo [(tamaño)] [NOT NULL]
  [CONSTRAINT nombre-constraint tipo-constraint]] |
[CONSTRAINT nombre-constraint tipo-constraint
  (campo,…)]}
SENTENCIAS DDL


ALTER TABLE
Tabla: Es el nombre de la tabla que se va a
modificar.
modificar
Campo: Es el nombre del campo que se va a
agregar o eliminar de tabla.
                       tabla
Tipo: Es el tipo de datos del campo.
Tamaño:Es el tamaño del campo en caracteres
SENTENCIAS DDL


Ejemplos: ALTER TABLE
Adicionar un campo:
  ALTER TABLE Empleados ADD COLUMN Salario
  number(15,2)


Quitar el campo Salario de la tabla
Empleados:
  ALTER TABLE Empleados DROP COLUMN
  Salario;
SENTENCIAS DDL


 Ejemplos: ALTER TABLE
Adicionar una clave foránea:
  ALTER TABLE Pedidos ADD CONSTRAINT
  PedidosEmpleados FOREIGN KEY (IdEmpleado)
  REFERENCES Empleados (IdEmpleado)
Quitar la clave externa existente de la tabla
Pedidos:
  ALTER TABLE Pedidos DROP CONSTRAINT
  PedidosEmpleados;
SENTENCIAS DDL


   DROP
DROP {TABLE tabla | INDEX índice ON tabla}

  tabla: Es el nombre de la tabla que se va a
  eliminar o la tabla de la cual se va a eliminar un
  índice.
  Índice: Es el nombre del índice que se va a
                                    q
  eliminar de tabla.
SENTENCIAS DDL


 Ejemplos: DROP
Ejemplo de como se elimina el índice Mi_Indice
de la tabla Empleados:
        DROP INDEX Mi_Indice ON Empleados;


Ejemplo de cómo se elimina una tabla:
               DROP TABLE Practicas;
                                   ;
SENTENCIAS DML
Introducción l
I t d ió al SQL - SQL DML

Sentencias de Manipulación de Datos

 SELECT              INSERT
 UPDATE              DELETE
Sentencia SELECT – Estructura
 Básica
SELECT ..... FROM .... WHERE
  SELECT corresponde a la operación Proyección (Π).
  Lista los atributos deseados en el resultado de la
  consulta.
  FROM corresponde a la operación Producto
  Cartesiano (X). Lista las relaciones que se deben
  analizar.
  WHERE corresponde al predicado S l ió ( ) y se
                      d l      di d Selección (σ),
  refiere a los atributos de las relaciones listadas en
  FROM.
Sentencia SELECT
      [SELECT ...]
         [INTO ...]
      [FROM ...]
      [WHERE ...]
      [GROUP BY …]
      [HAVING ...]
      [ORDER BY ...]]
         [UNION ...]
Cláusula SELECT

En la cláusula SELECT se especifican las
columnas que van a ser mostradas en
pantalla

SELECT [all | distinct]
{* |      tabla.* |     [
                        [tabla.]campo1 [
                               ]   p [encab1] ,
                                            ]
  [tabla.]campo2 [encab2] , ...}
Cláusula FROM
Específica la(s) fuente(s) de donde van a ser
tomadas las columnas mostradas y/o operadas en
                                  y/ p
la sentencia Select.

[SELECT…]
FROM expresión tabla [as] t_alias [, ...]
Cláusula INTO

La cláusula INTO, permite guardar los
resultados intermedios de una consulta

[SELECT ...] INTO tabla_into
           ]      tabla into
[FROM ...]
Cláusula WHERE
Donde se especifican las condiciones de
búsqueda y join para las filas que conforman el
conjunto resultado.
[SELECT ...]
[FROM ...]
WHERE condiciones_de_búsqueda

Tipos de condiciones
   Condiciones de comparación, de Join, o de Subquery.
Ejemplos de la Sentencia SELECT
SELECT     distinct emp_id, fecha_nac, direccion
FROM       EMPLEADO
WHERE      nombre = “Juan” AND apellido = “Perez”

 ∏fecha_nac, direccion (σnombre = “Juan” AND apellido = “Perez” (EMPLEADO))
Ejemplos de la Sentencia SELECT
‘Mostrar la relación de clientes que han obtenido un préstamo
en alguna sucursal de Miraflores’

    SELECT      DISTINCT nombre-cliente
    FROM        PRESTATARIO PRS, PRESTAMO PTR
    WHERE       PRS.idpréstamo = PRT.numpréstamo
                AND
                nombre-sucursal = “Miraflores”
                                   Miraflores
Condiciones de Búsqueda
Las condiciones de búsqueda pueden incluir:
  Operadores de Comparación (=, <>, < y >).
                              (= <>        >)
  Porciones de cadenas de caracteres (SUBSTR)
  Rangos (BETWEEN y NOT BETWEEN).
      g (                            )
  Listas (IN, NOT IN).
  Patrones de caracteres (LIKE y NOT LIKE).
  Valores desconocidos (IS NULL y IS NOT NULL).
  Combinaciones con conjunciones (AND, OR).
Condiciones de Búsqueda
Operadores de comparación:
  WHERE SueldoBásico > 1000
  WHERE SUBSTR(CodigoPostal, 1, 3)= “SAN”
Rangos (BETWEEN / NOT BETWEEN):
  WHERE SueldoBásico BETWEEN 1000 AND 5000
Listas (IN / NOT IN):
  WHERE Departamento NOT IN ('ADM', 'SIS')
Coincidencia de patrones o cadenas de caracteres (LIKE /
NOT LIKE))
  WHERE NombreCompleto LIKE “LET%”
Comodines (Wildcards) en la
  cláusula WHERE

Wildcard   Significado
             g
  *%       Cualquier cadena de cero o mas caracteres.
 ?, #, _   Cualquier carácter/ número único.
   [-]     Cualquier carácter único dentro de un rango.
   [!]     Cualquier carácter único que no está dentro de
           un rango.
Operadores y Wildcards en la
   cláusula WHERE
….WHERE Nombre

   LIKE “Ma%”    busca todos los nombres que comiencen con “Ma”
                 (Ej.: María, Mariana, Manuel, Martín)

   LIKE “%ía”    busca todos los nombres que terminen con “ía”.
                 (Ej.: Sofía, María, Estefanía).

   LIKE “%ar%”   busca todos los nombres que tengan las letras “ar”.
                 (Ej.:Carlos, Arturo Eleazar)
                 (Ej :Carlos Arturo, Eleazar).
Operadores y Wildcards en la
    cláusula WHERE
LIKE “_va”          busca todos los nombres de tres letras que
                    terminan en “va”. (Ej.: Eva, Iva, Ava).
                                        ( j       , ,    )
LIKE “[CM]arlo[ns]” busca todos los nombres:
                    Carlon, Marlon, Carlos y Marlos.
LIKE “[B D]elia”
       [B-D]elia    busca todos los nombres que terminan en
                    “elia” y que comiencen con las letras de la
                    B a la D. (Ej.: Delia, Celia).
LIKE “_ _ _”        busca todas las cadenas de exactamente 3
                    caracteres.
LIKE “_ _ _ %”      busca las cadenas de al menos 3 caracteres.
Operadores y Wildcards en la
      cláusula WHERE
CARACTERES DE ESCAPE:
Para que los patrones puedan contener los caracteres especiales
comodín, se especifica un caracter de escape.

 LIKE “%ab_cd” escape “” busca todas las cadenas que
      “% b d”             b     t d l       d
                      terminen con “ab_cd”.

 LIKE “ab_cd%” escape “” busca las cadenas que empiecen
                      con “ab_cd”.
Tablas Combinadas
Permite especificar la tabla resultante de una operación de
reunión natural en la cláusula FROM, en lugar de colocar las
                                      ,     g
condiciones de JOIN en el WHERE
 [SELECT]
 FROM     TABLA1 [INNER] JOIN TABLA2
          ON TABLA1.COLUMNA1 = TABLA2.COLUMNA1
 [WHERE]
Tablas Combinadas
SELECT   DISTINCT nombre-cliente
FROM     PRESTATARIO PRS [INNER] JOIN PRESTAMO PTR
         On PRS.idpréstamo = PRT.numpréstamo
WHERE    nombre-sucursal = “Miraflores”
Cláusula GROUP BY

Especifica las columnas por las que las filas
van a estar agrupadas o particionadas Los
                         particionadas.
resultados del query contienen un valor o
conjunto de valores para cada conjunto de
     j              p              j
valores indicado por las
funciones_de_agregación nombradas en la
lista del Select
Cláusula GROUP BY
   á

SELECT {{columnas_de_agrupación,…},
  {función_de_agregación,…}}
  {f   ió d          ió   }}
FROM …
[WHERE …]
GROUP BY {columnas_de_agrupación,…}
           {columnas de agrupación }
Funciones de Agregación más
                g g
  usadas
SUM([ALL|DISTINCT]     Calcula el total de una expresión numérica
expresión)             para todas las filas o sólo las distintas.
AVG([ALL|DISTINCT]     Calcula el promedio de una expresión
expresión)             numérica para las filas involucradas.
    ([   |       ]
MIN([ALL|DISTINCT]     Calcula el mínimo valor de una expresión
                                                         p
expresión)             numérica para las filas involucradas
MAX([ALL|DISTINCT]     Calcula el máximo valor de una expresión
expresión)             numérica para las filas involucradas.
COUNT([ALL|DISTINCT]   Número de veces que se repite el valor de la
expresión)             expresión.
COUNT(*)               Número
                       Núme o de filas seleccionadas
Cláusula GROUP BY
     á
 ‘Mostrar la suma de sueldo básico de los empleados
               activos, por Departamento’

SELECT     Nombre_Depto, SUM(SueldoBasico)
FROM       EMPLEADO EM, DEPARTAMENTO DE
                    EM
WHERE      EM.IDDepartamento = DE.IDDepartamento
           AND
           EstadoEmpleado= 'ACT’
GROUP BY Nombre_Depto
Cláusula GROUP BY
    á

“Obtener el número de titulares de cuenta de cada
  sucursal
  sucursal”

SELECT     nombre_sucursal,
           nombre sucursal, COUNT ( DISTINCT
           nombre-cliente)
FROM       TITULAR-CUENTA TC, CUENTA CUE
WHERE      TC.numero-cuenta = CUE. numero-cuenta
GROUP BY   nombre-sucursal
Cláusula HAVING
  á

Especifica una restricción que aplica a las
funciones de agregación de los grupos Esto
                                 grupos.
afecta a las filas que son devueltas como
resultado y no al cálculo de las funciones de
agregación.
La cláusula WHERE si condiciona el número de
filas que intervienen en el cálculo de las
funciones de agregación.
Cláusula HAVING
  á

SELECT {{columnas_de_agrupación,…},
  {función_de_agregación,…}}
  {función de agregación }}
FROM …
[WHERE …]  ]
GROUP BY {columnas_de_agrupación,…}
HAVING condiciones de búsqueda
         condiciones_de_búsqueda
GROUP BY y HAVING
“Mostrar el sueldo promedio de los Departamentos con
                promedio superior a 1000”
SELECT      Nombre_Depto, AVG(SueldoBasico)
FROM        EMPLEADO EM, DEPARTAMENTO DE
WHERE       EM.IDDepartamento
            EM IDDepartamento =
                   DE.IDDepartamento AND
            EstadoEmpleado= 'ACT'
                    p
GROUP BY    Nombre_Depto
HAVING      AVG(SueldoBasico) > 1000
GROUP BY y HAVING
“Saldo promedio de cada cliente de Surco que tiene como mínimo
                            3 cuentas”
SELECT      TC. Nombre-cliente, AVG (saldo)
FROM        TITULAR-CUENTA TC, CUENTA CUE, CLIENTE CLI
WHERE       TC.numero-cuenta = CUE
            TC               t   CUE.numero-cuenta
                                                t
            AND
            TC.nombre-cliente = C
              C o b e c e te CLI.nombre-cliente AND
                                     o b e c e te
            ciudad-cliente = “Surco”
GROUP BY    TC.nombre-cliente
HAVING      COUNT (DISTINCT TC.numero-cuenta) >= 3
GROUP BY - HAVING - WHERE
Procedimiento:
 Si en una misma consulta aparece una cláusula WHERE y una
 cláusula HAVING, se aplica primero el predicado de la cláusula
 WHERE.
 Las tuplas que satisfagan la condición, se colocan en grupos
 según la cláusula GROUP BY.
 La cláusula HAVING se aplica luego a cada grupo. Los grupos
                                             grupo
 que no la satisfagan se eliminan.
 La cláusula SELECT utiliza los grupos restantes para generar las
 tuplas resultado de la consulta.
Cláusula ORDER BY
Ordena el resultado de los querys por los valores de las
columnas mencionadas. Solamente se puede ordenar por
las columnas especificadas en el SELECT.
  ASC: Es el valor por defecto e indica que los resultados se van a
  p
  presentar ascendentemente.
  DESC: Debe especificarse al lado de la columna cuyo orden se
  desea ver en forma descendente.
Consideración: ordenar un gran número de tuplas puede
ser costoso. Es conveniente ordenar sólo cuando sea
estrictamente necesario.
Cláusula ORDER BY
  á

SELECT {columna 1, columna 2,…}
FROM …
[WHERE …]
[GROUP BY...]
[HAVING ...]
ORDER BY columna 1 [ASC|DESC],....
Cláusula ORDER BY
     á

SELECT   Nombre 'Departamento',
         AVG(SueldoBasico) 'Promedio Sueldos'
FROM     EMPLEADO EM, DEPARTAMENTO DE
WHERE    EM.Departamento = DE.Departamento
GROUP BY Nombre
ORDER BY AVG(SueldoBasico) DESC
Operador UNION

Permite manipular los resultados de dos o mas
querys,
querys combinándolos en un único conjunto de datos.
                                                 datos
Muestra las filas recuperadas por cualquiera de los
query
A diferencia del SELECT, que por omisión conserva los
duplicados, la operación de unión normalmente los
suprime.
A fin de evitar esto, es necesario colocar a
continuación del operador UNION la palabra clave ALL
Operador UNION
 Query1 [UNION [ALL]] QueryN
 [
 [ORDER BY…..]
             ]
 donde:
Query1:              y QueryN
SELECT select-list
         l    l      SELECT select-list
                              l t li t
     [INTO]               [FROM]
     [
     [FROM]]              [
                          [WHERE] ]
     [WHERE]              [GROUP BY]
     [GROUP BY]           [HAVING]
     [HAVING]
Operador UNION
Todas las select-list mencionadas con la sentencia
UNION, deben tener el mismo número de expresiones
(columnas, e p esiones aritméticas, funciones
(col mnas expresiones a itméticas f nciones de
agregación, etc.).
Las columnas que se corresponden, deben tener el
mismo tipo de dato, sino es así, debe existir una
                               í
conversión de datos implícita o explícita con una
función de conversión de por medio.
Operador UNION

“Todos los clientes que poseen una cuenta, un
  préstamo o ambos
               ambos”

     (SELECT    nombre-cliente
     FROM       TITULAR-CUENTA)
     UNION
     (SELECT    nombre-cliente
     FROM       PRESTATARIO)
OUTER JOINS
Los outer joins extienden los resultados de un join simple. Retornan las
filas coincidentes y también las filas de una de las tablas que no tiene
elementos en común con la otra.
  [Select]
  From tabla1, tabla2
  WHERE tabla1.columna1 = tabla2.columna1 (+)

 [Select]
 From tabla1 LEFT [OUTER] JOIN TABLA2
            ON tabla1.columna1 = tabla2.columna1

 …..devuelven todas las filas de la tabla1 aunque no tengan
                                                        g
   coincidencias con la tabla2 en la columna1.
OUTER JOINS
SELECT      IDPersona, NombreCompleto,
            IDDepartamento, SueldoBasico
   FROM     PERSONA,
            PERSONA EMPLEADO
   WHERE IDPersona = IDEmpleado (+)

SELECT         IDPersona, N b C
               IDP        NombreCompleto,
                                     l t
               IDDepartamento, SueldoBasico
   FROM        PERSONA LEFT JOIN EMPLEADO
               ON
               O IDPersona = IDEmpleado
                                    l d

   (Seleccionan todas las personas, aún las que no figuran en la tabla
     EMPLEADO)
OUTER JOINS
SELECT DE.Nombre_Dpto, IDEmpleado, SueldoBasico
FROM EMPLEADO RIGHT JOIN DEPARTAMENTO
     ON EMPLEADO.IDDepartamento =
     DEPARTAMENTO.IDDepartamento

(Selecciona todos los departamentos, aún los que no tienen
  empleados)
  Un join simple descarta las filas no coincidentes.
                                       coincidentes
  Un outer join preserva filas que de otra forma serían
  descartadas.
Uso de Subqueries
Un Subquery es una sentencia SELECT
anidada dentro de otras sentencias SQL
como SELECT, INSERT, UPDATE o DELETE,
o dentro de otro Subquery.
                    q y
A una sentencia SELECT, que contiene uno o
mas Subqueries, se la denomina Nested
        q
Query o SELECT anidado.
Uso de Subqueries
Subqueries con IN / NOT IN:
 El resultado, es una lista de cero o mas valores.
    resultado                             valores
 Una vez que el Subquery devuelve resultados, el
 Outer query los usa, por inclusión o negación.
 Con la palabra IN se puede resolver el operador
 relacional de Intersección
 Empleando NOT IN se resuelve el operador
 Diferencia
Uso de Subqueries
SELECT   NombreCompleto, SueldoBasico
FROM     PERSONA,
         PERSONA EMPLEADO
WHERE    IDPersona=IDEmpleado and
         IDEmpleado
         IDE l d NOT IN
         (SELECT IDEmpleado FROM
         SANCIONES_EMPLEADO)
Uso de Subqueries

Subqueries con Operadores de comparación.

 Son los subquerys que se introducen con algún
 operador de comparación como =, <>, <, <=, >,
 >=, etc.
 Estos subqueries retornan un solo valor.
Uso de Subqueries
Operadores de comparación modificados por ANY
o ALL. Estos subqueries retornan cero o
muchos valores.
  > ALL, significa que todos los valores retornados por
  el subquery son menores al valor de comparación del
  outer.
  > ANY, significa que por lo menos un valor retornado
     ANY
  por el subquery es menor al valor de comparación del
  outer.
Uso de Subqueries.
Mostrar ID, nombre y sueldo de todos los empleados cuyo
  sueldo es mayor a todos los sueldos de la tabla CARGO
               y
SELECT      IDEmpleado, NombreCompleto,
                 SueldoBasico
FROM        EMPLEADO, PERSONA
WHERE       IDEmpleado = IDPersona
            AND SueldoBasico > ALL
                 (SELECT Sueldo FROM CARGO)
Uso de Subqueries.
Mostrar ID, nombre y sueldo de todos los empleados cuyo sueldo
  es mayor a alguno de los sueldos de la tabla CARGO

SELECT      IDEmpleado, NombreCompleto, SueldoBasico
FROM        EMPLEADO, PERSONA
WHERE       IDEmpleado = IDPersona
            AND SueldoBasico > ANY
                 (SELECT Sueldo FROM CARGO)
Uso de Subqueries.
Subqueries con el uso de la palabra EXISTS:

  Funciona como un test de existencia. La cláusula
  WHERE,
  WHERE examina la existencia de filas devueltas
  por el Subquery. El Subquery devuelve los
  valores de TRUE o FALSE.
Uso de Subqueries.
“Muestra los códigos de los empleados que tienen
  alguna sanción”
    g
SELECT    IDEmpleado
FROM      EMPLEADO EM
WHERE     EXISTS
     (SELECT * FROM SANCIONES EMPLEADO SE
                    SANCIONES_EMPLEADO
     WHERE     EM.IDEmpleado = SE.IDEmpleado)
Subqueries correlativos

Aquellos queries anidados donde el Subquery
  depende del outer query para devolver sus
  valores.
Esto significa que el Subquery se ejecuta
  repetidamente, una vez por cada fila seleccionada
  por el Outer query.
Subqueries Correlativos
SELECT     a.IDEmpleado, a.SueldoBasico
FROM EMPLEADO a
WHERE      a.SueldoBasico >=
   (SELECT b.SueldoBasico FROM EMPLEADO b
      WHERE a.IDJefe = b.IDEmpleado )
Muestra código y sueldo de los empleados cuyos sueldos
  son mayores o iguales a los sueldos de sus respectivos
  jefes
Sentencia INSERT
  INSERT es otra sentencia DML base, usada para
  incorporar nuevas filas a una tabla de base de
  datos.

INSERT [INTO]
     {table name view-name} [(column-list)]
     {table-name | view name} [(column list)]
  {VALUES | (values-list) | select-statement }
Ejemplos de la Sentencia INSERT
Fabricantes (Nfabricante, país)
 INSERT INTO FABRICANTES (Nfabricante, País)
  VALUES (“Reynolds Tobacco CO.”, “EEUU”)


Marcas    (marca, Nfabricante, cartón, embalaje)
 INSERT INTO MARCAS
  VALUES (“Camel”, “Reynolds Tobacco CO.”, 10, 20)
Sentencia UPDATE
Modifica los datos existentes en filas de una
tabla de Base de Datos
UPDATE {table-name | view-name}
SET{column list
SET{column-list
   | variable-list
   | variable_and_column-list},…..
   [ WHERE { condition }]
Sentencia UPDATE
Cambiar aquellos cigarrillos de clase “Normal”, con filtro,
  fabricados por “Tabacalera Nacional”, de modo que
             p                          ,          q
  ahora no tengan filtro
UPDATE CIGARRILLOS
SET filtro = “N”
               N
WHERE marca in
  (
  (SELECT marca FROM MARCAS
   WHERE Nfabricante = “Tabacalera Nacional”
        And filtro = “S” and clase = “Normal”)
Sentencia DELETE
Elimina filas de una tabla de Base de Datos

DELETE FROM {table-name | view-name}
[WHERE {condition} ]
Sentencia DELETE
Eliminar todos los fabricantes que no manufacturen
   cigarrillos de clase “Ultra Light”
DELETE FROM FABRICANTES
WHERE Nfabricante NOT IN
  (SELECT DISTINCT Nfabricante
      FROM MARCAS
      WHERE marca IN
           (SELECT marca FROM CIGARRILLOS
           WHERE clase = “Ultra Light”))

Sql basico parte_i_

  • 1.
    Base d D B de Datos: Lenguaje SQL guaj Q Profesor: MSC. MSC Luis Serna Jherry Jherry.
  • 2.
    Objetivos de Hoy Introducciónal SQL Basico Sentencias DDL: CREATE TABLE ALTER TABLE DROP TABLE Sentencia DML: SELECT Cláusulas SELECT, FROM, INTO, WHERE Cláusulas GROUP BY, HAVING Cláusula ORDER BY á Tipos de JOIN Subqueries Sentencias INSERT UPDATE y DELETE INSERT,
  • 3.
  • 4.
    SENTENCIAS DDL CREATE TABLE Las tablas se definen en tres pasos: Dar el nombre a la tabla Definir cada columna, posiblemente incluyendo restricciones de columna Definir las restricciones de la tabla
  • 5.
    SENTENCIAS DDL CREATE TABLE CREATE TABLE nombre-tabla {campo1 (tipo ta a o / do ca po (t po tamaño dominio) [NOT NULL], o) [ O U ], [campo2 (tipo tamaño / dominio) [NOT NULL]], [PRIMARY KEY (c1, c2, ..., cn)], [ (c , c , , c ) [FOREIGN KEY (c1) REFERENCES tabla-x], [CHECK (P)]}
  • 6.
    SENTENCIAS DDL CREATETABLE Nombre-tabla: Es el nombre de la tabla que se va a crear. Campo i: son los nombres de los campos de la tabla. p p Tipo: Es el tipo de datos del campo. Tamaño:Es el tamaño del campo en caracteres p Dominio: es el nombre del dominio asignado al campo.
  • 7.
    SENTENCIAS DDL CREATETABLE Primary Key: especifica las columnas que conforman la clave primaria de la tabla. Foreign key: indica las columnas que constituyen clave externa en la tabla References: indica la tabla que provee la clave foránea. Check (P): especifica un predicado que debe satisfacer cada fila de la tabla
  • 8.
    SENTENCIAS DDL Ejemplos: CREATETABLE CREATE TABLE Clientes ( (id-cliente char(5) not null, ( ) , nombre-cliente char(20), ca e c e te calle-cliente c a (30), char(30), primary key id-cliente)
  • 9.
    SENTENCIAS DDL Ejemplos:CREATE TABLE CREATE TABLE Cuenta ( (id-cuenta char(10) not null, ( ) , id-cliente char(5), sa do saldo integer tege check (saldo >= 0), primary key id cuenta id-cuenta foreign key id-cliente references clientes)
  • 10.
    SENTENCIAS DDL Usode Constraints Una restricción es similar a un índice, aunque también se puede utilizar para establecer una relación con otra tabla. Puede utilizar la cláusula CONSTRAINT en las instrucciones ALTER TABLE y CREATE TABLE para crear o eliminar restricciones. restricciones Hay dos tipos de cláusulas CONSTRAINT: una para crear una restricciones en un único campo y otra para crear una p p restricción en más de un campo.
  • 11.
    SENTENCIAS DDL Uso de Constraints CONSTRAINT nombre { {PRIMARY KEY (p (principal1 [,principal2 [, ...]]) | p [,p p ]]) UNIQUE (único1 [,único2 [, ...]]) | NOT NULL (negadonulo1 [,negadonulo2 [, ...]]) | FOREIGN KEY (referencia1 [,referencia2 [, ...]]) REFERENCES tabla_externa [(campo_externo1 [,campo_externo2 [, ]])]} [ campo externo2 [ ...]])]}
  • 12.
    SENTENCIAS DDL Usode Constraints Nombre: Es el nombre de la restricción que se va a crear. principal1, principal2: Son los nombres de los campos que se van a designar como clave principal. p incipal único1, único2: Son los nombres de los campos que se van a designar como clave única única.
  • 13.
    SENTENCIAS DDL Usode Constraints negadonulo1, negadonulo2: Son los nombres de campos que se van a limitar a valores no Null. p q referencia1, referencia2: Son los nombres de los campos de la clave externa a los que se hace referencia en otra tabla.
  • 14.
    SENTENCIAS DDL Usode Constraints Tabla_externa: Es el nombre de la tabla externa que contiene el campo o los campos especificados por p p p p campo_externo. Campo_externo1, campo_externo2: Son los nombres de los l campos en tabla_externa especificados por t bl t ifi d referencia1, referencia2. Puede omitir esta cláusula si el campo al que se hace referencia es la clave principal de tabla_externa.
  • 15.
    SENTENCIAS DDL ALTER TABLE ALTER TABLE nombre-tabla { {ADD | MODIFY [COLUMN campo tipo [(tamaño)] [NOT NULL] [CONSTRAINT nombre-constraint tipo-constraint]] | [CONSTRAINT nombre-constraint tipo-constraint (campo,…)]}
  • 16.
    SENTENCIAS DDL ALTER TABLE Tabla:Es el nombre de la tabla que se va a modificar. modificar Campo: Es el nombre del campo que se va a agregar o eliminar de tabla. tabla Tipo: Es el tipo de datos del campo. Tamaño:Es el tamaño del campo en caracteres
  • 17.
    SENTENCIAS DDL Ejemplos: ALTERTABLE Adicionar un campo: ALTER TABLE Empleados ADD COLUMN Salario number(15,2) Quitar el campo Salario de la tabla Empleados: ALTER TABLE Empleados DROP COLUMN Salario;
  • 18.
    SENTENCIAS DDL Ejemplos:ALTER TABLE Adicionar una clave foránea: ALTER TABLE Pedidos ADD CONSTRAINT PedidosEmpleados FOREIGN KEY (IdEmpleado) REFERENCES Empleados (IdEmpleado) Quitar la clave externa existente de la tabla Pedidos: ALTER TABLE Pedidos DROP CONSTRAINT PedidosEmpleados;
  • 19.
    SENTENCIAS DDL DROP DROP {TABLE tabla | INDEX índice ON tabla} tabla: Es el nombre de la tabla que se va a eliminar o la tabla de la cual se va a eliminar un índice. Índice: Es el nombre del índice que se va a q eliminar de tabla.
  • 20.
    SENTENCIAS DDL Ejemplos:DROP Ejemplo de como se elimina el índice Mi_Indice de la tabla Empleados: DROP INDEX Mi_Indice ON Empleados; Ejemplo de cómo se elimina una tabla: DROP TABLE Practicas; ;
  • 21.
  • 22.
    Introducción l I td ió al SQL - SQL DML Sentencias de Manipulación de Datos SELECT INSERT UPDATE DELETE
  • 23.
    Sentencia SELECT –Estructura Básica SELECT ..... FROM .... WHERE SELECT corresponde a la operación Proyección (Π). Lista los atributos deseados en el resultado de la consulta. FROM corresponde a la operación Producto Cartesiano (X). Lista las relaciones que se deben analizar. WHERE corresponde al predicado S l ió ( ) y se d l di d Selección (σ), refiere a los atributos de las relaciones listadas en FROM.
  • 24.
    Sentencia SELECT [SELECT ...] [INTO ...] [FROM ...] [WHERE ...] [GROUP BY …] [HAVING ...] [ORDER BY ...]] [UNION ...]
  • 25.
    Cláusula SELECT En lacláusula SELECT se especifican las columnas que van a ser mostradas en pantalla SELECT [all | distinct] {* | tabla.* | [ [tabla.]campo1 [ ] p [encab1] , ] [tabla.]campo2 [encab2] , ...}
  • 26.
    Cláusula FROM Específica la(s)fuente(s) de donde van a ser tomadas las columnas mostradas y/o operadas en y/ p la sentencia Select. [SELECT…] FROM expresión tabla [as] t_alias [, ...]
  • 27.
    Cláusula INTO La cláusulaINTO, permite guardar los resultados intermedios de una consulta [SELECT ...] INTO tabla_into ] tabla into [FROM ...]
  • 28.
    Cláusula WHERE Donde seespecifican las condiciones de búsqueda y join para las filas que conforman el conjunto resultado. [SELECT ...] [FROM ...] WHERE condiciones_de_búsqueda Tipos de condiciones Condiciones de comparación, de Join, o de Subquery.
  • 29.
    Ejemplos de laSentencia SELECT SELECT distinct emp_id, fecha_nac, direccion FROM EMPLEADO WHERE nombre = “Juan” AND apellido = “Perez” ∏fecha_nac, direccion (σnombre = “Juan” AND apellido = “Perez” (EMPLEADO))
  • 30.
    Ejemplos de laSentencia SELECT ‘Mostrar la relación de clientes que han obtenido un préstamo en alguna sucursal de Miraflores’ SELECT DISTINCT nombre-cliente FROM PRESTATARIO PRS, PRESTAMO PTR WHERE PRS.idpréstamo = PRT.numpréstamo AND nombre-sucursal = “Miraflores” Miraflores
  • 31.
    Condiciones de Búsqueda Lascondiciones de búsqueda pueden incluir: Operadores de Comparación (=, <>, < y >). (= <> >) Porciones de cadenas de caracteres (SUBSTR) Rangos (BETWEEN y NOT BETWEEN). g ( ) Listas (IN, NOT IN). Patrones de caracteres (LIKE y NOT LIKE). Valores desconocidos (IS NULL y IS NOT NULL). Combinaciones con conjunciones (AND, OR).
  • 32.
    Condiciones de Búsqueda Operadoresde comparación: WHERE SueldoBásico > 1000 WHERE SUBSTR(CodigoPostal, 1, 3)= “SAN” Rangos (BETWEEN / NOT BETWEEN): WHERE SueldoBásico BETWEEN 1000 AND 5000 Listas (IN / NOT IN): WHERE Departamento NOT IN ('ADM', 'SIS') Coincidencia de patrones o cadenas de caracteres (LIKE / NOT LIKE)) WHERE NombreCompleto LIKE “LET%”
  • 33.
    Comodines (Wildcards) enla cláusula WHERE Wildcard Significado g *% Cualquier cadena de cero o mas caracteres. ?, #, _ Cualquier carácter/ número único. [-] Cualquier carácter único dentro de un rango. [!] Cualquier carácter único que no está dentro de un rango.
  • 34.
    Operadores y Wildcardsen la cláusula WHERE ….WHERE Nombre LIKE “Ma%” busca todos los nombres que comiencen con “Ma” (Ej.: María, Mariana, Manuel, Martín) LIKE “%ía” busca todos los nombres que terminen con “ía”. (Ej.: Sofía, María, Estefanía). LIKE “%ar%” busca todos los nombres que tengan las letras “ar”. (Ej.:Carlos, Arturo Eleazar) (Ej :Carlos Arturo, Eleazar).
  • 35.
    Operadores y Wildcardsen la cláusula WHERE LIKE “_va” busca todos los nombres de tres letras que terminan en “va”. (Ej.: Eva, Iva, Ava). ( j , , ) LIKE “[CM]arlo[ns]” busca todos los nombres: Carlon, Marlon, Carlos y Marlos. LIKE “[B D]elia” [B-D]elia busca todos los nombres que terminan en “elia” y que comiencen con las letras de la B a la D. (Ej.: Delia, Celia). LIKE “_ _ _” busca todas las cadenas de exactamente 3 caracteres. LIKE “_ _ _ %” busca las cadenas de al menos 3 caracteres.
  • 36.
    Operadores y Wildcardsen la cláusula WHERE CARACTERES DE ESCAPE: Para que los patrones puedan contener los caracteres especiales comodín, se especifica un caracter de escape. LIKE “%ab_cd” escape “” busca todas las cadenas que “% b d” b t d l d terminen con “ab_cd”. LIKE “ab_cd%” escape “” busca las cadenas que empiecen con “ab_cd”.
  • 37.
    Tablas Combinadas Permite especificarla tabla resultante de una operación de reunión natural en la cláusula FROM, en lugar de colocar las , g condiciones de JOIN en el WHERE [SELECT] FROM TABLA1 [INNER] JOIN TABLA2 ON TABLA1.COLUMNA1 = TABLA2.COLUMNA1 [WHERE]
  • 38.
    Tablas Combinadas SELECT DISTINCT nombre-cliente FROM PRESTATARIO PRS [INNER] JOIN PRESTAMO PTR On PRS.idpréstamo = PRT.numpréstamo WHERE nombre-sucursal = “Miraflores”
  • 39.
    Cláusula GROUP BY Especificalas columnas por las que las filas van a estar agrupadas o particionadas Los particionadas. resultados del query contienen un valor o conjunto de valores para cada conjunto de j p j valores indicado por las funciones_de_agregación nombradas en la lista del Select
  • 40.
    Cláusula GROUP BY á SELECT {{columnas_de_agrupación,…}, {función_de_agregación,…}} {f ió d ió }} FROM … [WHERE …] GROUP BY {columnas_de_agrupación,…} {columnas de agrupación }
  • 41.
    Funciones de Agregaciónmás g g usadas SUM([ALL|DISTINCT] Calcula el total de una expresión numérica expresión) para todas las filas o sólo las distintas. AVG([ALL|DISTINCT] Calcula el promedio de una expresión expresión) numérica para las filas involucradas. ([ | ] MIN([ALL|DISTINCT] Calcula el mínimo valor de una expresión p expresión) numérica para las filas involucradas MAX([ALL|DISTINCT] Calcula el máximo valor de una expresión expresión) numérica para las filas involucradas. COUNT([ALL|DISTINCT] Número de veces que se repite el valor de la expresión) expresión. COUNT(*) Número Núme o de filas seleccionadas
  • 42.
    Cláusula GROUP BY á ‘Mostrar la suma de sueldo básico de los empleados activos, por Departamento’ SELECT Nombre_Depto, SUM(SueldoBasico) FROM EMPLEADO EM, DEPARTAMENTO DE EM WHERE EM.IDDepartamento = DE.IDDepartamento AND EstadoEmpleado= 'ACT’ GROUP BY Nombre_Depto
  • 43.
    Cláusula GROUP BY á “Obtener el número de titulares de cuenta de cada sucursal sucursal” SELECT nombre_sucursal, nombre sucursal, COUNT ( DISTINCT nombre-cliente) FROM TITULAR-CUENTA TC, CUENTA CUE WHERE TC.numero-cuenta = CUE. numero-cuenta GROUP BY nombre-sucursal
  • 44.
    Cláusula HAVING á Especifica una restricción que aplica a las funciones de agregación de los grupos Esto grupos. afecta a las filas que son devueltas como resultado y no al cálculo de las funciones de agregación. La cláusula WHERE si condiciona el número de filas que intervienen en el cálculo de las funciones de agregación.
  • 45.
    Cláusula HAVING á SELECT {{columnas_de_agrupación,…}, {función_de_agregación,…}} {función de agregación }} FROM … [WHERE …] ] GROUP BY {columnas_de_agrupación,…} HAVING condiciones de búsqueda condiciones_de_búsqueda
  • 46.
    GROUP BY yHAVING “Mostrar el sueldo promedio de los Departamentos con promedio superior a 1000” SELECT Nombre_Depto, AVG(SueldoBasico) FROM EMPLEADO EM, DEPARTAMENTO DE WHERE EM.IDDepartamento EM IDDepartamento = DE.IDDepartamento AND EstadoEmpleado= 'ACT' p GROUP BY Nombre_Depto HAVING AVG(SueldoBasico) > 1000
  • 47.
    GROUP BY yHAVING “Saldo promedio de cada cliente de Surco que tiene como mínimo 3 cuentas” SELECT TC. Nombre-cliente, AVG (saldo) FROM TITULAR-CUENTA TC, CUENTA CUE, CLIENTE CLI WHERE TC.numero-cuenta = CUE TC t CUE.numero-cuenta t AND TC.nombre-cliente = C C o b e c e te CLI.nombre-cliente AND o b e c e te ciudad-cliente = “Surco” GROUP BY TC.nombre-cliente HAVING COUNT (DISTINCT TC.numero-cuenta) >= 3
  • 48.
    GROUP BY -HAVING - WHERE Procedimiento: Si en una misma consulta aparece una cláusula WHERE y una cláusula HAVING, se aplica primero el predicado de la cláusula WHERE. Las tuplas que satisfagan la condición, se colocan en grupos según la cláusula GROUP BY. La cláusula HAVING se aplica luego a cada grupo. Los grupos grupo que no la satisfagan se eliminan. La cláusula SELECT utiliza los grupos restantes para generar las tuplas resultado de la consulta.
  • 49.
    Cláusula ORDER BY Ordenael resultado de los querys por los valores de las columnas mencionadas. Solamente se puede ordenar por las columnas especificadas en el SELECT. ASC: Es el valor por defecto e indica que los resultados se van a p presentar ascendentemente. DESC: Debe especificarse al lado de la columna cuyo orden se desea ver en forma descendente. Consideración: ordenar un gran número de tuplas puede ser costoso. Es conveniente ordenar sólo cuando sea estrictamente necesario.
  • 50.
    Cláusula ORDER BY á SELECT {columna 1, columna 2,…} FROM … [WHERE …] [GROUP BY...] [HAVING ...] ORDER BY columna 1 [ASC|DESC],....
  • 51.
    Cláusula ORDER BY á SELECT Nombre 'Departamento', AVG(SueldoBasico) 'Promedio Sueldos' FROM EMPLEADO EM, DEPARTAMENTO DE WHERE EM.Departamento = DE.Departamento GROUP BY Nombre ORDER BY AVG(SueldoBasico) DESC
  • 52.
    Operador UNION Permite manipularlos resultados de dos o mas querys, querys combinándolos en un único conjunto de datos. datos Muestra las filas recuperadas por cualquiera de los query A diferencia del SELECT, que por omisión conserva los duplicados, la operación de unión normalmente los suprime. A fin de evitar esto, es necesario colocar a continuación del operador UNION la palabra clave ALL
  • 53.
    Operador UNION Query1[UNION [ALL]] QueryN [ [ORDER BY…..] ] donde: Query1: y QueryN SELECT select-list l l SELECT select-list l t li t [INTO] [FROM] [ [FROM]] [ [WHERE] ] [WHERE] [GROUP BY] [GROUP BY] [HAVING] [HAVING]
  • 54.
    Operador UNION Todas lasselect-list mencionadas con la sentencia UNION, deben tener el mismo número de expresiones (columnas, e p esiones aritméticas, funciones (col mnas expresiones a itméticas f nciones de agregación, etc.). Las columnas que se corresponden, deben tener el mismo tipo de dato, sino es así, debe existir una í conversión de datos implícita o explícita con una función de conversión de por medio.
  • 55.
    Operador UNION “Todos losclientes que poseen una cuenta, un préstamo o ambos ambos” (SELECT nombre-cliente FROM TITULAR-CUENTA) UNION (SELECT nombre-cliente FROM PRESTATARIO)
  • 56.
    OUTER JOINS Los outerjoins extienden los resultados de un join simple. Retornan las filas coincidentes y también las filas de una de las tablas que no tiene elementos en común con la otra. [Select] From tabla1, tabla2 WHERE tabla1.columna1 = tabla2.columna1 (+) [Select] From tabla1 LEFT [OUTER] JOIN TABLA2 ON tabla1.columna1 = tabla2.columna1 …..devuelven todas las filas de la tabla1 aunque no tengan g coincidencias con la tabla2 en la columna1.
  • 57.
    OUTER JOINS SELECT IDPersona, NombreCompleto, IDDepartamento, SueldoBasico FROM PERSONA, PERSONA EMPLEADO WHERE IDPersona = IDEmpleado (+) SELECT IDPersona, N b C IDP NombreCompleto, l t IDDepartamento, SueldoBasico FROM PERSONA LEFT JOIN EMPLEADO ON O IDPersona = IDEmpleado l d (Seleccionan todas las personas, aún las que no figuran en la tabla EMPLEADO)
  • 58.
    OUTER JOINS SELECT DE.Nombre_Dpto,IDEmpleado, SueldoBasico FROM EMPLEADO RIGHT JOIN DEPARTAMENTO ON EMPLEADO.IDDepartamento = DEPARTAMENTO.IDDepartamento (Selecciona todos los departamentos, aún los que no tienen empleados) Un join simple descarta las filas no coincidentes. coincidentes Un outer join preserva filas que de otra forma serían descartadas.
  • 59.
    Uso de Subqueries UnSubquery es una sentencia SELECT anidada dentro de otras sentencias SQL como SELECT, INSERT, UPDATE o DELETE, o dentro de otro Subquery. q y A una sentencia SELECT, que contiene uno o mas Subqueries, se la denomina Nested q Query o SELECT anidado.
  • 60.
    Uso de Subqueries Subqueriescon IN / NOT IN: El resultado, es una lista de cero o mas valores. resultado valores Una vez que el Subquery devuelve resultados, el Outer query los usa, por inclusión o negación. Con la palabra IN se puede resolver el operador relacional de Intersección Empleando NOT IN se resuelve el operador Diferencia
  • 61.
    Uso de Subqueries SELECT NombreCompleto, SueldoBasico FROM PERSONA, PERSONA EMPLEADO WHERE IDPersona=IDEmpleado and IDEmpleado IDE l d NOT IN (SELECT IDEmpleado FROM SANCIONES_EMPLEADO)
  • 62.
    Uso de Subqueries Subqueriescon Operadores de comparación. Son los subquerys que se introducen con algún operador de comparación como =, <>, <, <=, >, >=, etc. Estos subqueries retornan un solo valor.
  • 63.
    Uso de Subqueries Operadoresde comparación modificados por ANY o ALL. Estos subqueries retornan cero o muchos valores. > ALL, significa que todos los valores retornados por el subquery son menores al valor de comparación del outer. > ANY, significa que por lo menos un valor retornado ANY por el subquery es menor al valor de comparación del outer.
  • 64.
    Uso de Subqueries. MostrarID, nombre y sueldo de todos los empleados cuyo sueldo es mayor a todos los sueldos de la tabla CARGO y SELECT IDEmpleado, NombreCompleto, SueldoBasico FROM EMPLEADO, PERSONA WHERE IDEmpleado = IDPersona AND SueldoBasico > ALL (SELECT Sueldo FROM CARGO)
  • 65.
    Uso de Subqueries. MostrarID, nombre y sueldo de todos los empleados cuyo sueldo es mayor a alguno de los sueldos de la tabla CARGO SELECT IDEmpleado, NombreCompleto, SueldoBasico FROM EMPLEADO, PERSONA WHERE IDEmpleado = IDPersona AND SueldoBasico > ANY (SELECT Sueldo FROM CARGO)
  • 66.
    Uso de Subqueries. Subqueriescon el uso de la palabra EXISTS: Funciona como un test de existencia. La cláusula WHERE, WHERE examina la existencia de filas devueltas por el Subquery. El Subquery devuelve los valores de TRUE o FALSE.
  • 67.
    Uso de Subqueries. “Muestralos códigos de los empleados que tienen alguna sanción” g SELECT IDEmpleado FROM EMPLEADO EM WHERE EXISTS (SELECT * FROM SANCIONES EMPLEADO SE SANCIONES_EMPLEADO WHERE EM.IDEmpleado = SE.IDEmpleado)
  • 68.
    Subqueries correlativos Aquellos queriesanidados donde el Subquery depende del outer query para devolver sus valores. Esto significa que el Subquery se ejecuta repetidamente, una vez por cada fila seleccionada por el Outer query.
  • 69.
    Subqueries Correlativos SELECT a.IDEmpleado, a.SueldoBasico FROM EMPLEADO a WHERE a.SueldoBasico >= (SELECT b.SueldoBasico FROM EMPLEADO b WHERE a.IDJefe = b.IDEmpleado ) Muestra código y sueldo de los empleados cuyos sueldos son mayores o iguales a los sueldos de sus respectivos jefes
  • 70.
    Sentencia INSERT INSERT es otra sentencia DML base, usada para incorporar nuevas filas a una tabla de base de datos. INSERT [INTO] {table name view-name} [(column-list)] {table-name | view name} [(column list)] {VALUES | (values-list) | select-statement }
  • 71.
    Ejemplos de laSentencia INSERT Fabricantes (Nfabricante, país) INSERT INTO FABRICANTES (Nfabricante, País) VALUES (“Reynolds Tobacco CO.”, “EEUU”) Marcas (marca, Nfabricante, cartón, embalaje) INSERT INTO MARCAS VALUES (“Camel”, “Reynolds Tobacco CO.”, 10, 20)
  • 72.
    Sentencia UPDATE Modifica losdatos existentes en filas de una tabla de Base de Datos UPDATE {table-name | view-name} SET{column list SET{column-list | variable-list | variable_and_column-list},….. [ WHERE { condition }]
  • 73.
    Sentencia UPDATE Cambiar aquelloscigarrillos de clase “Normal”, con filtro, fabricados por “Tabacalera Nacional”, de modo que p , q ahora no tengan filtro UPDATE CIGARRILLOS SET filtro = “N” N WHERE marca in ( (SELECT marca FROM MARCAS WHERE Nfabricante = “Tabacalera Nacional” And filtro = “S” and clase = “Normal”)
  • 74.
    Sentencia DELETE Elimina filasde una tabla de Base de Datos DELETE FROM {table-name | view-name} [WHERE {condition} ]
  • 75.
    Sentencia DELETE Eliminar todoslos fabricantes que no manufacturen cigarrillos de clase “Ultra Light” DELETE FROM FABRICANTES WHERE Nfabricante NOT IN (SELECT DISTINCT Nfabricante FROM MARCAS WHERE marca IN (SELECT marca FROM CIGARRILLOS WHERE clase = “Ultra Light”))