SlideShare una empresa de Scribd logo
1 de 10
Descargar para leer sin conexión
Structured Query Language (SQL): Introducción

                                                                                               Originalmente era el lenguaje de interrogación del DBMS
                                                                                               relacional System R (IBM) en la segunda mitad de los años
                                                                                               ’70.
                                                                                               Posteriormente adoptado por otros sistemas
                   Bases de Datos: Structured Query                                            Luego transformado en estándar:
                           Language (SQL)                                                            1986    –   Primera versión ANSI
                                                                                                     1989    –   Llamado SQL-89
                                                                                                     1992    –   Llamado alternativamente SQL-92 o SQL-2
                                Franco Guidi Polanco                                                 1999    –   Llamado alternativamente SQL-99 o SQL-3
                                   Escuela de Ingeniería Industrial                            SQL contiene la funcionalidad tanto de un DDL (Data
                        Pontificia Universidad Católica de Valparaíso, Chile                   Definition Language), como de un DML (Data Manipulation
                                            fguidi@ucv.cl                                      Language).



                                                   Revisión: 15 de Mayo de 2005
                                                                                      Franco Guidi Polanco                                                 2




              Dominios de datos más comúnmente utilizados en SQL                                    Instrucciones en SQL

         Caracteres: tipo CHAR                                                                 SQL como DDL:
                    CHAR(largo)                                                                      Crear tablas (CREATE TABLE)
         Tipos numéricos exactos:                                                                    Modificar estructura de tablas (ALTER TABLE)
               SMALLINT                                                                              Eliminar tablas (DROP TABLE)
               INTEGER
               NUMERIC
                 NUMERIC [(Precisión [, escala ] ) ]                                           SQL como DML:
         Números en punto flotante                                                                   Insertar nuevas tuplas (INSERT)
               FLOAT                                                                                 Actualizar contenidos de tuplas (UPDATE)
         Fecha: tipo DATE                                                                            Eliminar tuplas (DELETE)
                                                                                                     Seleccionar tuplas (SELECT)



Franco Guidi Polanco                                                              3   Franco Guidi Polanco                                                 4
CREATE TABLE                                                                       CREATE TABLE

          Permite crear una nueva tabla                                                 Algunas restricciones son:
                                                                                             NULL o NOT NULL
   CREATE TABLE <nombre de tabla>
   (<nombre de campo> <tipo> [(<tamaño>)] <restricción>,                                     UNIQUE. Indica que no pueden existir dos filas con el mismo
                                                                                             valor para este campo.
   ...otros campos)
                                                                                             PRIMARY KEY. Indica que el campo es clave primaria. Solo se
          Los valores posibles para <tipo> dependen del                                      usa si la clave se compone de 1 campo, si no, se usa PRIMARY
                                                                                             KEY (campo, campo, ...) después de las definiciones de campos.
          DBMS utilizado (ej.: integer, char, date).
                                                                                             DEFAULT. Inserta un valor por omisión cuando el registro se
          El <tamaño> es usado solo en ciertos tipos de                                      crea sin un valor para el campo (ej.: COSTO INTEGER DEFAULT
          datos (ej.: char).                                                                 = 1).
                                                                                             FOREIGN KEY. Indica que el campo es clave foránea.
   Ej.:        CREATE TABLE PEDIDO                     PEDIDO                                Funciona igual que PRIMARY KEY, pero va seguido de:
               NRO_PED INTEGER NOT NULL,               NRO_PED      RUT_PROV                 REFERENCES <nombre de tabla> (<nombre de campo>), que
               RUT_PROV CHAR(10) NOT NULL)                                                   indica la tabla y campos referenciados.



Franco Guidi Polanco                                                           5   Franco Guidi Polanco                                                         6




              ALTER TABLE                                                                        DROP TABLE

          Permite modificar la estructura de un tabla.                                      Permite eliminar una tabla.
          ALTER TABLE <nombre de tabla> ADD|DROP|MODIFY                                     DROP TABLE <nombre de tabla>
          (especificación de campo(s)...)


          La especificación de campos se hace igual que en
          el caso de CREATE TABLE
                                                                                            Ej.:
          Ej.: ALTER TABLE PEDIDO ADD                                                       DROP TABLE PEDIDO
                                                                        FECHA
               (FECHA DATE NOT NULL)                                                                                            PEDIDO
                                             PEDIDO                                                                             NRO_PED    RUT_PROV     FECHA
                                             NRO_PED     RUT_PROV




Franco Guidi Polanco                                                           7   Franco Guidi Polanco                                                         8
INSERT                                                                                UPDATE

         Agrega nuevos registros a una tabla.                                                  Modifica los valores de uno o más campos
                                                                                               de un conjunto de registros de una tabla.
    INSERT INTO <tabla>
    [(<lista de campos>)]                                                                      UPDATE <tabla>
    VALUES (<lista de valores>|<expresión select>)                                             SET <lista de asignaciones>
                                                                                               [WHERE <condiciones lógicas>]
                                             PEDIDO
     INSERT INTO PEDIDO                       NRO_PED          RUT_PROV                    UPDATE PEDIDO
     (NRO_PED, RUT_PROV)                         100           15.333.222-1                SET RUT_PROV=’60.155.842-K’             PEDIDO
                                                                                                                                   NRO_PED   RUT_PROV
     VALUES (130, ’50.155.842-K’)                115           50.251.366-9                WHERE NRO_PED = 115
                                                                                                                                     100     15.333.222-1
                                                 120           17.322.568-2
                                                                                                             115    60.155.842-K     115     50.251.366-9

                                    130   50.155.842-K                                                                               120     17.322.568-2



Franco Guidi Polanco                                                              9   Franco Guidi Polanco                                                  10




              DELETE                                                                                SELECT

         Elimina uno o más registros de una tabla.                                             Permite efectuar consultas sobre la BD
                                                                                          SELECT [DISTINCT] <lista de campos>
    DELETE FROM <tabla>                                                                   FROM <lista de tablas>
                                                                                          [WHERE <condiciones lógicas>]
    [WHERE <condiciones lógicas>]                                                         [ORDER BY <lista de campos>]
                                                                                          [GROUP BY <lista de campos>]

                                                                                          Se pueden usar ciertas funciones “agregadas”:
     UPDATE PEDIDO                                PEDIDO                                  SUM
     WHERE NRO_PED = 115                           NRO_PED          RUT_PROV              AVG
                                                                                          MIN
                                                         100       15.333.222-1
                                                                                          MAX
                                                         115       60.155.842-K           COUNT
                                                         120       17.322.568-2




Franco Guidi Polanco                                                           11     Franco Guidi Polanco                                                  12
Ejemplo                                                                                             Ejemplos SELECT (1): SELECT … FROM …


       Pedidos                                           Proveedores                                          Obtener todos los datos de todos los
                   Fecha_
                                                                                                              proveedores:
        Ped#                   Prov#                         Prov#       Nombre      Ciudad
                   pedido

           1     10/03/1999 5645462-8                       5645462-8     YTF        Santiago
           2     11/03/1999 6353134-4                       6353134-4     ZYZ         Arica
           3     11/03/1999 8545432-8                       8545432-8     MNO        Santiago
                                                                                                                            SELECT * FROM PROVEEDORES
       Detalles                                              Artículos
                                                                         Nombre_                                                 Prov#        Nombre     Ciudad
        Ped#           Art#   Cantidad                          Art#
                                                                          articulo

                                                              685431-4    Lápiz                                                 5645462-8          ABC   Santiago
           1       685431-4     50
                                                              878795-7    Tijeras                                               6353134-4          XYZ    Arica
           1       878795-7     48
                                                              468624-8   Agenda                                                 8545432-8          MNO   Santiago
           2       468624-8     500
           3       556546-3     10                            556546-3   CD-ROM
           3       878795-7     12                            996589-0    Lápiz


Franco Guidi Polanco                                                                            13   Franco Guidi Polanco                                           14




               Ejemplos SELECT (2): proyección                                                                     Ejemplos SELECT (3)

         Obtener Prov# y Nombre de todos los                                                                  Obtener los códigos de todos los artículos:
         proveedores:

                                 SELECT Prov#, Nombre
                                                                                                                                  SELECT ART#
                                 FROM PROVEEDORES
                                                                                                                                  FROM ARTICULO
                                                                                                                                            Art#
                                          Prov#      Nombre
                                                                                                                                         685431-4
                                         5645462-8    ABC
                                                                                                                                         878795-7
                                         6353134-4    XYZ
                                                                                                                                         468624-8
                                         8545432-8    MNO
                                                                                                                                         556546-3
                                                                                                                                         996589-0



Franco Guidi Polanco                                                                            15   Franco Guidi Polanco                                           16
Ejemplos SELECT (4): cláusula DISTINCT                                  Ejemplos SELECT (5): selección de tuplas

         Obtener los códigos de los artículos                                    Obtener toda la información de los proveedores de
                                                                                 Santiago:
         solicitados:
                                                  Art#
                                                                                 SELECT *
                 SELECT ART#                     685431-4
                                                 878795-7
                                                                                 FROM PROVEEDORES
                                                                                 WHERE PROVEEDORES.CIUDAD =‘Santiago’
                 FROM DETALLES                   468624-8
                                                 556546-3
                                                 878795-7
                                                                                 SELECT *
                 SELECT DISTINCT ART#             Art#
                                                                                 FROM PROVEEDORES
                                                                                 WHERE CIUDAD =‘Santiago’
                 FROM DETALLES                  685431-4                                                              Prov#      Nombre   Ciudad
                                                878795-7
                                                                                                                     5645462-8    ABC     Santiago
                                                468624-8
                                                                                                                     8545432-8    MNO     Santiago
                                                556546-3


Franco Guidi Polanco                                               17   Franco Guidi Polanco                                                         18




              Ejemplos SELECT (6)                                                     Ejemplos SELECT (7): ordenamiento

         Obtener los códigos de pedidos por cantidades                           Obtener los nombres de los proveedores en orden
         comprendidas entre 10 y 48:                                             alfabético:
                                                                                               SELECT NOMBRE
                 SELECT DISTINCT PED#
                                                                                               FROM PROVEEDORES
                 FROM DETALLES
                                                                                               ORDER BY NOMBRE
                 WHERE CANTIDAD >= 10
                          AND CANTIDAD <= 48

                                                                                                                                 Nombre
                                                            Ped#
                                                                                                                                  MNO
                                                             1                                                                    YTF
                                                             3                                                                    ZYZ




Franco Guidi Polanco                                               19   Franco Guidi Polanco                                                         20
Ejemplos SELECT (8): join                                                                Ejemplos SELECT (9)

         Obtener los códigos de pedidos con los datos de                                          Obtener las ciudades de los proveedores que han
         los proveedores a los que estos van dirigidos:                                           entregado lápices:
         SELECT PED#, PROV#, NOMBRE, CIUDAD                                                       SELECT DISTINCT CIUDAD
                                                                                                                                                                Ciudad
         FROM PEDIDOS, PROVEEDORES                                                                FROM ARTICULOS, DETALLES,
         WHERE PEDIDOS.PROV# = PROVEEDORES.PROV#                                                        PEDIDOS, PROVEEDORES                                    Santiago

                                                                                                  WHERE ARTICULOS.ART# = DETALLES.ART#
                                                                                                      AND DETALLES.PED# = PEDIDOS.PED#
                                                                                                      AND PEDIDOS.PROV# = PROVEEDORES.PROV#
                                                                                                      AND ARTICULOS.NOMBREARTICULO = ‘Lápiz’
                       Ped#    Prov#      Nombre   Ciudad

                        1     5645462-8    YTF     Santiago
                        2     6353134-4    ZYZ      Arica
                        3     8545432-8    MNO     Santiago




Franco Guidi Polanco                                                                21   Franco Guidi Polanco                                                              22




              Ejemplos SELECT (10): redenominación                                                     SELECT y funciones agregadas

         Encontrar todos las parejas distintas de códigos                                         Si en la instrucción SELECT no hay un GROUP BY (visto
         artículos :                                                                              más adelante), las funciones agregadas operan sobre todas
                                                                                                  las tuplas
                                                                                                  Funciones agregadas:
                 SELECT A.ART#, B.ART#                                                                 COUNT(): cuenta tuplas
                 FROM ARTICULOS A, ARTICULOS B                                                         MIN(): obtiene el menor valor para un campo
                                                              A.Art#     B.Art#
                 WHERE A.ART# < B.ART#                                                                 MAX(): obtiene el mayor valor para un campo
                                                              685431-4   878795-7                      SUM(): suma los valores de un campo
                                                              685431-4   996589-0
                                                                                                       AVG(): calcula el promedio de valores de un campo
                                                              468624-8   556546-3
                                                              468624-8   685431-4                      STDEV(): calcula la d.e. de valores de un campo
                                                              468624-8   878795-7                      VARIANCE(): calcula la varianza de valores de un campo
                                                              468624-8   996589-0
                                                              556546-3   685431-4
                                                              556546-3   996589-0



Franco Guidi Polanco                                                                23   Franco Guidi Polanco                                                              24
SELECT y funciones agregadas                                          SELECT y funciones agregadas: regla

         Contar los proveedores:                                               Regla para el uso de funciones agregadas:
         SELECT COUNT(*)
         FROM PROVEEDORES                             Count(*)             Si una instrucción SELECT no contiene la cláusula GROUP BY,
                                                         3                      y si la cláusula SELECT contiene una o más funciones
                                                                                   agregadas, todos los identificadores de columna
         Sumar                                                                     especificados en la cláusula SELECT deben estar
         SELECT SUM( Cantidad )                                                           contenidos en una función agregada.

         FROM DETALLES
         WHERE ART#=‘878795-7’                   Sum(Cantidad)

                                                        60
                                                                                                       !
Franco Guidi Polanco                                             25   Franco Guidi Polanco                                           26




              SELECT y funciones agregadas: regla                                   Interrogaciones anidadas

         Ejemplo                                                               Se utiliza una expresión SELECT como parte de la
                                                                               cláusula where.
               Situación válida:                                               Por ejemplo: obtener el código de los artículos que
                       SELECT SUM( Cantidad )
                                                                               hayan sido pedidos en la mayor cantidad:
                            FROM DETALLES
                            WHERE ART#=‘878795-7’                              SELECT ART#
               Situación NO valida:                                            FROM DETALLES                                Art#


                                                                               WHERE CANTIDAD =                           468624-8

                       SELECT Art#, SUM( Cantidad )                                      (SELECT MAX(CANTIDAD)
                            FROM DETALLES
                                                                                         FROM DETALLES)
                            WHERE ART#=‘878795-7’


Franco Guidi Polanco                                             27   Franco Guidi Polanco                                           28
Interrogaciones anidadas: cláusula EXISTS / NOT EXISTS                          Interrogaciones anidadas: cláusula EXISTS / NOT EXISTS

         Permite generar condiciones basadas en la                                       Mostrar los datos de los artículos que no han sido
         existencia o inexistencia de tuplas.                                            pedidos:
         Ejemplo: encontrar los artículos que tienen el
         mismo nombre (pero código diferente) :
                                                                                         SELECT *
         SELECT *
                                                                                         FROM ARTICULOS
         FROM ARTICULOS A1
                                                                                         WHERE NOT EXISTS
         WHERE EXISTS                                                                                                                        Art#
                                                                                                                                                      Nombre_

                   (SELECT *                          Artículos                                    (SELECT *                                           articulo


                   FROM ARTICULOS A2                     Art#
                                                                  Nombre_                          FROM DETALLES                        996589-0           Lápiz

                                                                   articulo
                   WHERE A1.NOMBRE_ARTICULO =                                                      WHERE ARTICULOS.ART# =
                                                       685431-4    Lápiz
                   A2.NOMBRE_ARTICULO AND              996589-0    Lápiz                           DETALLES.ART# )
                   A1.ART# <> A2.ART# )


Franco Guidi Polanco                                                       29   Franco Guidi Polanco                                                               30




                                                                                              Interrogaciones con agrupamiento: SELECT … GROUP
             Interrogaciones con agrupamiento: SELECT … GROUP BY
                                                                                              BY

         GROUP BY: permite agrupar tuplas sobre la base                                  GROUP BY es útil con funciones agregadas.
         de similitudes.                                                                 Ejemplo: encontrar la cantidad de proveedores de
         Ejemplo: Encontrar las ciudades de los                                          cada ciudad:
         proveedores
                                                                                         SELECT CIUDAD, COUNT(*)
                 SELECT CIUDAD                                                           FROM PROVEEDORES                           Ciudad          Count(*)

                 FROM PROVEEDORES                    Ciudad
                                                                                         GROUP BY CIUDAD                           Santiago            2
                                                                                                                                     Arica             1
                 GROUP BY CIUDAD                     Santiago
                                                      Arica


                                                                                         La función COUNT(*) es aplicada a cada línea agrupada.


Franco Guidi Polanco                                                       31   Franco Guidi Polanco                                                               32
Regla para el uso de SELECT … GROUP BY…                                       Regla para el uso de SELECT … GROUP BY… (cont.)

         Regla para el uso de la cláusula GROUP BY:                                    Ejemplos:
                                                                                             Situación válida:
        Si una instrucción SELECT contiene la cláusula GROUP BY,
           todos los identificadores de columna especificados en la                                    SELECT Art#, SUM(Cantidad)
           cláusula SELECT deben estar contenidos en una función                                            FROM Detalles
         agregada o en la lista de columnas presentes en la cláusula                                        GROUP BY Art#
                           GROUP BY (o en ambas).
                                                                                             Situación no válida:

                                   !                                                                 SELECT Art#, Ped#, SUM(Cantidad)
                                                                                                          FROM Detalles
                                                                                                          GROUP BY Art#



Franco Guidi Polanco                                                     33   Franco Guidi Polanco                                            34




              Interrogaciones con agrupamiento: SELECT … GROUP BY
                                                                                            Regla para el uso de SELECT … GROUP BY … HAVING
              … HAVING …

         HAVING se usa con GROUP BY, para establecer                                   Regla para el uso de la cáusula HAVING:
         una condición de filtro sobre tuplas agregadas.
         Ejemplo: Encontrar los códigos de artículo y las
         cantidades para los cuales se haya pedido en total
         50 o más unidades.                                                               Todos los identificadores de columnas
                                                                                        especificados en la cláusula HAVING deben
         SELECT Art#, SUM(Cantidad)                                                     estar contenidos en una función agregada o
         FROM Detalles
         GROUP BY Art#
                                                    Art#

                                                   685431-4
                                                   878795-7
                                                              Sum(Cantidad)

                                                                   50
                                                                   60
                                                                                                                    !
                                                                                         en la lista de columnas especificadas en la
                                                                                                      cláusula GROUP BY.
         HAVING SUM(Cantidad)>=50                  468624-8        500




Franco Guidi Polanco                                                     35   Franco Guidi Polanco                                            36
Regla para el uso de SELECT … GROUP BY … HAVING
              (cont.)

         Ejemplos:
               Situación válida:
     SELECT Art#, SUM(Cantidad)
          FROM Detalles
          GROUP BY Art#
          HAVING ART#=‘878795-7’ AND SUM(Cantidad)>=50

               Situación no válida:
                       SELECT Art#, SUM(Cantidad)
                            FROM Detalles
                            GROUP BY Art#
                            HAVING PED#=‘1’

Franco Guidi Polanco                                            37

Más contenido relacionado

La actualidad más candente

DDL oracle - base de datos
DDL oracle - base de datosDDL oracle - base de datos
DDL oracle - base de datosLuis Bando
 
Comandos dll en sql server
Comandos dll en sql serverComandos dll en sql server
Comandos dll en sql serverVicente Alberca
 
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
 
Modificaciones De Ansi Sql
Modificaciones De Ansi SqlModificaciones De Ansi Sql
Modificaciones De Ansi Sqlguest0c9485
 
4. sql (autoguardado)
4. sql (autoguardado)4. sql (autoguardado)
4. sql (autoguardado)felpe33
 
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
 

La actualidad más candente (8)

DDL oracle - base de datos
DDL oracle - base de datosDDL oracle - base de datos
DDL oracle - base de datos
 
Sql presentacion
Sql presentacionSql presentacion
Sql presentacion
 
Comandos dll en sql server
Comandos dll en sql serverComandos dll en sql server
Comandos dll en sql server
 
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
 
Modificaciones De Ansi Sql
Modificaciones De Ansi SqlModificaciones De Ansi Sql
Modificaciones De Ansi Sql
 
4. sql (autoguardado)
4. sql (autoguardado)4. sql (autoguardado)
4. sql (autoguardado)
 
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
 
Curso my sql
Curso my sqlCurso my sql
Curso my sql
 

Destacado

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 ServerUso 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 ServerEder López
 
Creación de bases de datos en SQL Server
Creación de bases de datos en SQL ServerCreación de bases de datos en SQL Server
Creación de bases de datos en SQL ServerEder López
 
Creacion de indices y constraints en sql server
Creacion de indices y constraints en sql serverCreacion de indices y constraints en sql server
Creacion de indices y constraints en sql serverZeleneMorita
 
INDICES EN SQL SERVER
INDICES EN SQL SERVERINDICES EN SQL SERVER
INDICES EN SQL SERVERDarwin Durand
 
Administración y programación en sql server
Administración y programación en sql serverAdministración y programación en sql server
Administración y programación en sql serverIsabel_Samir
 
Ejercicios resueltos de sql
Ejercicios resueltos de sqlEjercicios resueltos de sql
Ejercicios resueltos de sqlJulian Benavidez
 
MANUAL COMPLETO DE SQL
MANUAL COMPLETO DE SQLMANUAL COMPLETO DE SQL
MANUAL COMPLETO DE SQLEdgar Sandoval
 

Destacado (9)

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 ServerUso 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
 
Creación de bases de datos en SQL Server
Creación de bases de datos en SQL ServerCreación de bases de datos en SQL Server
Creación de bases de datos en SQL Server
 
Varios codigos sql
Varios codigos sqlVarios codigos sql
Varios codigos sql
 
Creacion de indices y constraints en sql server
Creacion de indices y constraints en sql serverCreacion de indices y constraints en sql server
Creacion de indices y constraints en sql server
 
INDICES EN SQL SERVER
INDICES EN SQL SERVERINDICES EN SQL SERVER
INDICES EN SQL SERVER
 
Administración y programación en sql server
Administración y programación en sql serverAdministración y programación en sql server
Administración y programación en sql server
 
Caracteristicas Microsoft SQL Server
Caracteristicas Microsoft SQL ServerCaracteristicas Microsoft SQL Server
Caracteristicas Microsoft SQL Server
 
Ejercicios resueltos de sql
Ejercicios resueltos de sqlEjercicios resueltos de sql
Ejercicios resueltos de sql
 
MANUAL COMPLETO DE SQL
MANUAL COMPLETO DE SQLMANUAL COMPLETO DE SQL
MANUAL COMPLETO DE SQL
 

Similar a Bd sql (20)

DDL
DDLDDL
DDL
 
Modificaciones De Ansi Sql
Modificaciones De Ansi SqlModificaciones De Ansi Sql
Modificaciones De Ansi Sql
 
Tm13 introduccion al_sql
Tm13 introduccion al_sqlTm13 introduccion al_sql
Tm13 introduccion al_sql
 
Sql
SqlSql
Sql
 
Lenguaje estructurado sql
Lenguaje estructurado sqlLenguaje estructurado sql
Lenguaje estructurado sql
 
TEMA3-SQL-(PARTE 1).pdf
TEMA3-SQL-(PARTE 1).pdfTEMA3-SQL-(PARTE 1).pdf
TEMA3-SQL-(PARTE 1).pdf
 
Lenguaje transact sql
Lenguaje transact sqlLenguaje transact sql
Lenguaje transact sql
 
Unidad iv ddl
Unidad iv ddlUnidad iv ddl
Unidad iv ddl
 
LENGUAJE TRANSACT SQL
 LENGUAJE TRANSACT SQL LENGUAJE TRANSACT SQL
LENGUAJE TRANSACT SQL
 
Transac sql
Transac sqlTransac sql
Transac sql
 
Lenguaje transact-sql
Lenguaje transact-sqlLenguaje transact-sql
Lenguaje transact-sql
 
SQL
SQLSQL
SQL
 
Portafolio 1 sql
Portafolio 1 sqlPortafolio 1 sql
Portafolio 1 sql
 
Tema IV elementos de SQL
Tema IV elementos de SQLTema IV elementos de SQL
Tema IV elementos de SQL
 
Presentacion Sql
Presentacion SqlPresentacion Sql
Presentacion Sql
 
Unidad 2-lenguaje-sql
Unidad 2-lenguaje-sqlUnidad 2-lenguaje-sql
Unidad 2-lenguaje-sql
 
04 Primeros pasos con my sql
04 Primeros pasos con my sql04 Primeros pasos con my sql
04 Primeros pasos con my sql
 
Comandos mysql
Comandos mysqlComandos mysql
Comandos mysql
 
Sql
SqlSql
Sql
 
Sentencias Sql
Sentencias SqlSentencias Sql
Sentencias Sql
 

Último

SIMULACROS Y SIMULACIONES DE SISMO 2024.docx
SIMULACROS Y SIMULACIONES DE SISMO 2024.docxSIMULACROS Y SIMULACIONES DE SISMO 2024.docx
SIMULACROS Y SIMULACIONES DE SISMO 2024.docxLudy Ventocilla Napanga
 
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
 
sesión de aprendizaje 4 E1 Exposición oral.pdf
sesión de aprendizaje 4 E1 Exposición oral.pdfsesión de aprendizaje 4 E1 Exposición oral.pdf
sesión de aprendizaje 4 E1 Exposición oral.pdfpatriciavsquezbecerr
 
PLAN DE TUTORIA- PARA NIVEL PRIMARIA CUARTO GRADO
PLAN DE TUTORIA- PARA NIVEL PRIMARIA CUARTO GRADOPLAN DE TUTORIA- PARA NIVEL PRIMARIA CUARTO GRADO
PLAN DE TUTORIA- PARA NIVEL PRIMARIA CUARTO GRADOMARIBEL DIAZ
 
3. Pedagogía de la Educación: Como objeto de la didáctica.ppsx
3. Pedagogía de la Educación: Como objeto de la didáctica.ppsx3. Pedagogía de la Educación: Como objeto de la didáctica.ppsx
3. Pedagogía de la Educación: Como objeto de la didáctica.ppsxJuanpm27
 
EDUCACION FISICA 1° PROGRAMACIÓN ANUAL 2023.docx
EDUCACION FISICA 1°  PROGRAMACIÓN ANUAL 2023.docxEDUCACION FISICA 1°  PROGRAMACIÓN ANUAL 2023.docx
EDUCACION FISICA 1° PROGRAMACIÓN ANUAL 2023.docxLuisAndersonPachasto
 
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfTarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfManuel Molina
 
Fichas de matemática DE PRIMERO DE SECUNDARIA.pdf
Fichas de matemática DE PRIMERO DE SECUNDARIA.pdfFichas de matemática DE PRIMERO DE SECUNDARIA.pdf
Fichas de matemática DE PRIMERO DE SECUNDARIA.pdfssuser50d1252
 
05 Fenomenos fisicos y quimicos de la materia.pdf
05 Fenomenos fisicos y quimicos de la materia.pdf05 Fenomenos fisicos y quimicos de la materia.pdf
05 Fenomenos fisicos y quimicos de la materia.pdfRAMON EUSTAQUIO CARO BAYONA
 
MODELO DE INFORME DE INDAGACION CIENTIFICA .docx
MODELO DE INFORME DE INDAGACION CIENTIFICA .docxMODELO DE INFORME DE INDAGACION CIENTIFICA .docx
MODELO DE INFORME DE INDAGACION CIENTIFICA .docxRAMON EUSTAQUIO CARO BAYONA
 
Técnicas de grabado y estampación : procesos y materiales
Técnicas de grabado y estampación : procesos y materialesTécnicas de grabado y estampación : procesos y materiales
Técnicas de grabado y estampación : procesos y materialesRaquel Martín Contreras
 
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
 
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
 
Actividad transversal 2-bloque 2. Actualización 2024
Actividad transversal 2-bloque 2. Actualización 2024Actividad transversal 2-bloque 2. Actualización 2024
Actividad transversal 2-bloque 2. Actualización 2024Rosabel UA
 
FICHA PL PACO YUNQUE.docx PRIMARIA CUARTO GRADO
FICHA  PL PACO YUNQUE.docx PRIMARIA CUARTO GRADOFICHA  PL PACO YUNQUE.docx PRIMARIA CUARTO GRADO
FICHA PL PACO YUNQUE.docx PRIMARIA CUARTO GRADOMARIBEL DIAZ
 
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
 
CUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADO
CUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADOCUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADO
CUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADOEveliaHernandez8
 
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptxc3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptxMartín Ramírez
 

Último (20)

SIMULACROS Y SIMULACIONES DE SISMO 2024.docx
SIMULACROS Y SIMULACIONES DE SISMO 2024.docxSIMULACROS Y SIMULACIONES DE SISMO 2024.docx
SIMULACROS Y SIMULACIONES DE SISMO 2024.docx
 
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
 
sesión de aprendizaje 4 E1 Exposición oral.pdf
sesión de aprendizaje 4 E1 Exposición oral.pdfsesión de aprendizaje 4 E1 Exposición oral.pdf
sesión de aprendizaje 4 E1 Exposición oral.pdf
 
PLAN DE TUTORIA- PARA NIVEL PRIMARIA CUARTO GRADO
PLAN DE TUTORIA- PARA NIVEL PRIMARIA CUARTO GRADOPLAN DE TUTORIA- PARA NIVEL PRIMARIA CUARTO GRADO
PLAN DE TUTORIA- PARA NIVEL PRIMARIA CUARTO GRADO
 
3. Pedagogía de la Educación: Como objeto de la didáctica.ppsx
3. Pedagogía de la Educación: Como objeto de la didáctica.ppsx3. Pedagogía de la Educación: Como objeto de la didáctica.ppsx
3. Pedagogía de la Educación: Como objeto de la didáctica.ppsx
 
EDUCACION FISICA 1° PROGRAMACIÓN ANUAL 2023.docx
EDUCACION FISICA 1°  PROGRAMACIÓN ANUAL 2023.docxEDUCACION FISICA 1°  PROGRAMACIÓN ANUAL 2023.docx
EDUCACION FISICA 1° PROGRAMACIÓN ANUAL 2023.docx
 
Aedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptxAedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptx
 
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfTarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
 
Fichas de matemática DE PRIMERO DE SECUNDARIA.pdf
Fichas de matemática DE PRIMERO DE SECUNDARIA.pdfFichas de matemática DE PRIMERO DE SECUNDARIA.pdf
Fichas de matemática DE PRIMERO DE SECUNDARIA.pdf
 
05 Fenomenos fisicos y quimicos de la materia.pdf
05 Fenomenos fisicos y quimicos de la materia.pdf05 Fenomenos fisicos y quimicos de la materia.pdf
05 Fenomenos fisicos y quimicos de la materia.pdf
 
MODELO DE INFORME DE INDAGACION CIENTIFICA .docx
MODELO DE INFORME DE INDAGACION CIENTIFICA .docxMODELO DE INFORME DE INDAGACION CIENTIFICA .docx
MODELO DE INFORME DE INDAGACION CIENTIFICA .docx
 
Técnicas de grabado y estampación : procesos y materiales
Técnicas de grabado y estampación : procesos y materialesTécnicas de grabado y estampación : procesos y materiales
Técnicas de grabado y estampación : procesos y materiales
 
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...
 
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
 
Actividad transversal 2-bloque 2. Actualización 2024
Actividad transversal 2-bloque 2. Actualización 2024Actividad transversal 2-bloque 2. Actualización 2024
Actividad transversal 2-bloque 2. Actualización 2024
 
FICHA PL PACO YUNQUE.docx PRIMARIA CUARTO GRADO
FICHA  PL PACO YUNQUE.docx PRIMARIA CUARTO GRADOFICHA  PL PACO YUNQUE.docx PRIMARIA CUARTO GRADO
FICHA PL PACO YUNQUE.docx PRIMARIA CUARTO GRADO
 
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
 
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
 
CUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADO
CUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADOCUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADO
CUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADO
 
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptxc3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
 

Bd sql

  • 1. Structured Query Language (SQL): Introducción Originalmente era el lenguaje de interrogación del DBMS relacional System R (IBM) en la segunda mitad de los años ’70. Posteriormente adoptado por otros sistemas Bases de Datos: Structured Query Luego transformado en estándar: Language (SQL) 1986 – Primera versión ANSI 1989 – Llamado SQL-89 1992 – Llamado alternativamente SQL-92 o SQL-2 Franco Guidi Polanco 1999 – Llamado alternativamente SQL-99 o SQL-3 Escuela de Ingeniería Industrial SQL contiene la funcionalidad tanto de un DDL (Data Pontificia Universidad Católica de Valparaíso, Chile Definition Language), como de un DML (Data Manipulation fguidi@ucv.cl Language). Revisión: 15 de Mayo de 2005 Franco Guidi Polanco 2 Dominios de datos más comúnmente utilizados en SQL Instrucciones en SQL Caracteres: tipo CHAR SQL como DDL: CHAR(largo) Crear tablas (CREATE TABLE) Tipos numéricos exactos: Modificar estructura de tablas (ALTER TABLE) SMALLINT Eliminar tablas (DROP TABLE) INTEGER NUMERIC NUMERIC [(Precisión [, escala ] ) ] SQL como DML: Números en punto flotante Insertar nuevas tuplas (INSERT) FLOAT Actualizar contenidos de tuplas (UPDATE) Fecha: tipo DATE Eliminar tuplas (DELETE) Seleccionar tuplas (SELECT) Franco Guidi Polanco 3 Franco Guidi Polanco 4
  • 2. CREATE TABLE CREATE TABLE Permite crear una nueva tabla Algunas restricciones son: NULL o NOT NULL CREATE TABLE <nombre de tabla> (<nombre de campo> <tipo> [(<tamaño>)] <restricción>, UNIQUE. Indica que no pueden existir dos filas con el mismo valor para este campo. ...otros campos) PRIMARY KEY. Indica que el campo es clave primaria. Solo se Los valores posibles para <tipo> dependen del usa si la clave se compone de 1 campo, si no, se usa PRIMARY KEY (campo, campo, ...) después de las definiciones de campos. DBMS utilizado (ej.: integer, char, date). DEFAULT. Inserta un valor por omisión cuando el registro se El <tamaño> es usado solo en ciertos tipos de crea sin un valor para el campo (ej.: COSTO INTEGER DEFAULT datos (ej.: char). = 1). FOREIGN KEY. Indica que el campo es clave foránea. Ej.: CREATE TABLE PEDIDO PEDIDO Funciona igual que PRIMARY KEY, pero va seguido de: NRO_PED INTEGER NOT NULL, NRO_PED RUT_PROV REFERENCES <nombre de tabla> (<nombre de campo>), que RUT_PROV CHAR(10) NOT NULL) indica la tabla y campos referenciados. Franco Guidi Polanco 5 Franco Guidi Polanco 6 ALTER TABLE DROP TABLE Permite modificar la estructura de un tabla. Permite eliminar una tabla. ALTER TABLE <nombre de tabla> ADD|DROP|MODIFY DROP TABLE <nombre de tabla> (especificación de campo(s)...) La especificación de campos se hace igual que en el caso de CREATE TABLE Ej.: Ej.: ALTER TABLE PEDIDO ADD DROP TABLE PEDIDO FECHA (FECHA DATE NOT NULL) PEDIDO PEDIDO NRO_PED RUT_PROV FECHA NRO_PED RUT_PROV Franco Guidi Polanco 7 Franco Guidi Polanco 8
  • 3. INSERT UPDATE Agrega nuevos registros a una tabla. Modifica los valores de uno o más campos de un conjunto de registros de una tabla. INSERT INTO <tabla> [(<lista de campos>)] UPDATE <tabla> VALUES (<lista de valores>|<expresión select>) SET <lista de asignaciones> [WHERE <condiciones lógicas>] PEDIDO INSERT INTO PEDIDO NRO_PED RUT_PROV UPDATE PEDIDO (NRO_PED, RUT_PROV) 100 15.333.222-1 SET RUT_PROV=’60.155.842-K’ PEDIDO NRO_PED RUT_PROV VALUES (130, ’50.155.842-K’) 115 50.251.366-9 WHERE NRO_PED = 115 100 15.333.222-1 120 17.322.568-2 115 60.155.842-K 115 50.251.366-9 130 50.155.842-K 120 17.322.568-2 Franco Guidi Polanco 9 Franco Guidi Polanco 10 DELETE SELECT Elimina uno o más registros de una tabla. Permite efectuar consultas sobre la BD SELECT [DISTINCT] <lista de campos> DELETE FROM <tabla> FROM <lista de tablas> [WHERE <condiciones lógicas>] [WHERE <condiciones lógicas>] [ORDER BY <lista de campos>] [GROUP BY <lista de campos>] Se pueden usar ciertas funciones “agregadas”: UPDATE PEDIDO PEDIDO SUM WHERE NRO_PED = 115 NRO_PED RUT_PROV AVG MIN 100 15.333.222-1 MAX 115 60.155.842-K COUNT 120 17.322.568-2 Franco Guidi Polanco 11 Franco Guidi Polanco 12
  • 4. Ejemplo Ejemplos SELECT (1): SELECT … FROM … Pedidos Proveedores Obtener todos los datos de todos los Fecha_ proveedores: Ped# Prov# Prov# Nombre Ciudad pedido 1 10/03/1999 5645462-8 5645462-8 YTF Santiago 2 11/03/1999 6353134-4 6353134-4 ZYZ Arica 3 11/03/1999 8545432-8 8545432-8 MNO Santiago SELECT * FROM PROVEEDORES Detalles Artículos Nombre_ Prov# Nombre Ciudad Ped# Art# Cantidad Art# articulo 685431-4 Lápiz 5645462-8 ABC Santiago 1 685431-4 50 878795-7 Tijeras 6353134-4 XYZ Arica 1 878795-7 48 468624-8 Agenda 8545432-8 MNO Santiago 2 468624-8 500 3 556546-3 10 556546-3 CD-ROM 3 878795-7 12 996589-0 Lápiz Franco Guidi Polanco 13 Franco Guidi Polanco 14 Ejemplos SELECT (2): proyección Ejemplos SELECT (3) Obtener Prov# y Nombre de todos los Obtener los códigos de todos los artículos: proveedores: SELECT Prov#, Nombre SELECT ART# FROM PROVEEDORES FROM ARTICULO Art# Prov# Nombre 685431-4 5645462-8 ABC 878795-7 6353134-4 XYZ 468624-8 8545432-8 MNO 556546-3 996589-0 Franco Guidi Polanco 15 Franco Guidi Polanco 16
  • 5. Ejemplos SELECT (4): cláusula DISTINCT Ejemplos SELECT (5): selección de tuplas Obtener los códigos de los artículos Obtener toda la información de los proveedores de Santiago: solicitados: Art# SELECT * SELECT ART# 685431-4 878795-7 FROM PROVEEDORES WHERE PROVEEDORES.CIUDAD =‘Santiago’ FROM DETALLES 468624-8 556546-3 878795-7 SELECT * SELECT DISTINCT ART# Art# FROM PROVEEDORES WHERE CIUDAD =‘Santiago’ FROM DETALLES 685431-4 Prov# Nombre Ciudad 878795-7 5645462-8 ABC Santiago 468624-8 8545432-8 MNO Santiago 556546-3 Franco Guidi Polanco 17 Franco Guidi Polanco 18 Ejemplos SELECT (6) Ejemplos SELECT (7): ordenamiento Obtener los códigos de pedidos por cantidades Obtener los nombres de los proveedores en orden comprendidas entre 10 y 48: alfabético: SELECT NOMBRE SELECT DISTINCT PED# FROM PROVEEDORES FROM DETALLES ORDER BY NOMBRE WHERE CANTIDAD >= 10 AND CANTIDAD <= 48 Nombre Ped# MNO 1 YTF 3 ZYZ Franco Guidi Polanco 19 Franco Guidi Polanco 20
  • 6. Ejemplos SELECT (8): join Ejemplos SELECT (9) Obtener los códigos de pedidos con los datos de Obtener las ciudades de los proveedores que han los proveedores a los que estos van dirigidos: entregado lápices: SELECT PED#, PROV#, NOMBRE, CIUDAD SELECT DISTINCT CIUDAD Ciudad FROM PEDIDOS, PROVEEDORES FROM ARTICULOS, DETALLES, WHERE PEDIDOS.PROV# = PROVEEDORES.PROV# PEDIDOS, PROVEEDORES Santiago WHERE ARTICULOS.ART# = DETALLES.ART# AND DETALLES.PED# = PEDIDOS.PED# AND PEDIDOS.PROV# = PROVEEDORES.PROV# AND ARTICULOS.NOMBREARTICULO = ‘Lápiz’ Ped# Prov# Nombre Ciudad 1 5645462-8 YTF Santiago 2 6353134-4 ZYZ Arica 3 8545432-8 MNO Santiago Franco Guidi Polanco 21 Franco Guidi Polanco 22 Ejemplos SELECT (10): redenominación SELECT y funciones agregadas Encontrar todos las parejas distintas de códigos Si en la instrucción SELECT no hay un GROUP BY (visto artículos : más adelante), las funciones agregadas operan sobre todas las tuplas Funciones agregadas: SELECT A.ART#, B.ART# COUNT(): cuenta tuplas FROM ARTICULOS A, ARTICULOS B MIN(): obtiene el menor valor para un campo A.Art# B.Art# WHERE A.ART# < B.ART# MAX(): obtiene el mayor valor para un campo 685431-4 878795-7 SUM(): suma los valores de un campo 685431-4 996589-0 AVG(): calcula el promedio de valores de un campo 468624-8 556546-3 468624-8 685431-4 STDEV(): calcula la d.e. de valores de un campo 468624-8 878795-7 VARIANCE(): calcula la varianza de valores de un campo 468624-8 996589-0 556546-3 685431-4 556546-3 996589-0 Franco Guidi Polanco 23 Franco Guidi Polanco 24
  • 7. SELECT y funciones agregadas SELECT y funciones agregadas: regla Contar los proveedores: Regla para el uso de funciones agregadas: SELECT COUNT(*) FROM PROVEEDORES Count(*) Si una instrucción SELECT no contiene la cláusula GROUP BY, 3 y si la cláusula SELECT contiene una o más funciones agregadas, todos los identificadores de columna Sumar especificados en la cláusula SELECT deben estar SELECT SUM( Cantidad ) contenidos en una función agregada. FROM DETALLES WHERE ART#=‘878795-7’ Sum(Cantidad) 60 ! Franco Guidi Polanco 25 Franco Guidi Polanco 26 SELECT y funciones agregadas: regla Interrogaciones anidadas Ejemplo Se utiliza una expresión SELECT como parte de la cláusula where. Situación válida: Por ejemplo: obtener el código de los artículos que SELECT SUM( Cantidad ) hayan sido pedidos en la mayor cantidad: FROM DETALLES WHERE ART#=‘878795-7’ SELECT ART# Situación NO valida: FROM DETALLES Art# WHERE CANTIDAD = 468624-8 SELECT Art#, SUM( Cantidad ) (SELECT MAX(CANTIDAD) FROM DETALLES FROM DETALLES) WHERE ART#=‘878795-7’ Franco Guidi Polanco 27 Franco Guidi Polanco 28
  • 8. Interrogaciones anidadas: cláusula EXISTS / NOT EXISTS Interrogaciones anidadas: cláusula EXISTS / NOT EXISTS Permite generar condiciones basadas en la Mostrar los datos de los artículos que no han sido existencia o inexistencia de tuplas. pedidos: Ejemplo: encontrar los artículos que tienen el mismo nombre (pero código diferente) : SELECT * SELECT * FROM ARTICULOS FROM ARTICULOS A1 WHERE NOT EXISTS WHERE EXISTS Art# Nombre_ (SELECT * Artículos (SELECT * articulo FROM ARTICULOS A2 Art# Nombre_ FROM DETALLES 996589-0 Lápiz articulo WHERE A1.NOMBRE_ARTICULO = WHERE ARTICULOS.ART# = 685431-4 Lápiz A2.NOMBRE_ARTICULO AND 996589-0 Lápiz DETALLES.ART# ) A1.ART# <> A2.ART# ) Franco Guidi Polanco 29 Franco Guidi Polanco 30 Interrogaciones con agrupamiento: SELECT … GROUP Interrogaciones con agrupamiento: SELECT … GROUP BY BY GROUP BY: permite agrupar tuplas sobre la base GROUP BY es útil con funciones agregadas. de similitudes. Ejemplo: encontrar la cantidad de proveedores de Ejemplo: Encontrar las ciudades de los cada ciudad: proveedores SELECT CIUDAD, COUNT(*) SELECT CIUDAD FROM PROVEEDORES Ciudad Count(*) FROM PROVEEDORES Ciudad GROUP BY CIUDAD Santiago 2 Arica 1 GROUP BY CIUDAD Santiago Arica La función COUNT(*) es aplicada a cada línea agrupada. Franco Guidi Polanco 31 Franco Guidi Polanco 32
  • 9. Regla para el uso de SELECT … GROUP BY… Regla para el uso de SELECT … GROUP BY… (cont.) Regla para el uso de la cláusula GROUP BY: Ejemplos: Situación válida: Si una instrucción SELECT contiene la cláusula GROUP BY, todos los identificadores de columna especificados en la SELECT Art#, SUM(Cantidad) cláusula SELECT deben estar contenidos en una función FROM Detalles agregada o en la lista de columnas presentes en la cláusula GROUP BY Art# GROUP BY (o en ambas). Situación no válida: ! SELECT Art#, Ped#, SUM(Cantidad) FROM Detalles GROUP BY Art# Franco Guidi Polanco 33 Franco Guidi Polanco 34 Interrogaciones con agrupamiento: SELECT … GROUP BY Regla para el uso de SELECT … GROUP BY … HAVING … HAVING … HAVING se usa con GROUP BY, para establecer Regla para el uso de la cáusula HAVING: una condición de filtro sobre tuplas agregadas. Ejemplo: Encontrar los códigos de artículo y las cantidades para los cuales se haya pedido en total 50 o más unidades. Todos los identificadores de columnas especificados en la cláusula HAVING deben SELECT Art#, SUM(Cantidad) estar contenidos en una función agregada o FROM Detalles GROUP BY Art# Art# 685431-4 878795-7 Sum(Cantidad) 50 60 ! en la lista de columnas especificadas en la cláusula GROUP BY. HAVING SUM(Cantidad)>=50 468624-8 500 Franco Guidi Polanco 35 Franco Guidi Polanco 36
  • 10. Regla para el uso de SELECT … GROUP BY … HAVING (cont.) Ejemplos: Situación válida: SELECT Art#, SUM(Cantidad) FROM Detalles GROUP BY Art# HAVING ART#=‘878795-7’ AND SUM(Cantidad)>=50 Situación no válida: SELECT Art#, SUM(Cantidad) FROM Detalles GROUP BY Art# HAVING PED#=‘1’ Franco Guidi Polanco 37