Monografias.com > Computación > Programación
Descargar Imprimir Comentar Ver trabajos relacionados

Select SQL Aplicado A Visual FOX PRO 6.0




Enviado por Carlos Izquierdo



     

    Indice
    1.
    Introducción

    2. Estructura de las tablas usadas en los
    ejemplos

    3. Select – SQL en visual FOX PRO
    6.0

    4. Componentes del
    SQL

    5. Criterios de
    selección

    6. Intervalos de
    valores

    7. El operador like
    8. Agrupamiento de
    registros

    9. Bibliografía

    1.
    Introducción

    La documentación acerca del uso de los
    comandos SQL
    en Visual Fox Pro
    es limitada. Tomando esto como referencia he aquí un
    primer material de trabajo que espero sirva de inicio a los
    estudiantes y programadores que trabajan con este manejador de
    bases de datos
    relaciónales.

    Se ha tomado como base bibliográfica la Ayuda
    HTML del MSDN
    Library y se ha enriquecido las explicaciones con gráficas de los resultados de las consultas
    que se exponen como ejemplos.

    Es importante destacar que trabajo presenta ejemplos del
    uso del comando SELECT – SQL en Visual Fox Pro 6.0 lo
    más sencillas posibles, buscando orientar a los ya
    conocedores pero también ayudar a aquellos que se
    están iniciando en el mundo de la programación.
    Sin duda luego del estudio de los ejemplos aquí citados se
    les ocurrirán unos cada vez más complejos y
    vistosos, espero que los hagan llegar a este servidor
    así como también sugerencias del acerca del trabajo
    a través del correo
    electrónico para aprender también yo de
    ustedes.
    Como recomendación final sería interesante que
    crearan las tablas que se utilizan en los ejemplos y fueran
    trabajando en forma paralela en la medida que van leyendo el
    material, considero que es la mejor manera de aprender.
    A todos mis saludos y Manos a la Obra….

    2. Estructura de
    las tablas usadas en los ejemplos

    3. Select – SQL en
    visual FOX PRO 6.0

    Visual FoxPro admite
    comandos de Lenguaje de
    consultas estructurado SQL. Los comandos SQL de Visual FoxPro
    utilizan la tecnología Rushmore
    para optimizar el rendimiento y puede utilizarse un sólo
    comando SQL para sustituir a varios comandos Visual
    FoxPro.

    Visual FoxPro admite los siguientes comandos SQL:
    SELECT – SQL: Especifica los criterios en los que se basa una
    consulta y ejecuta la consulta. Visual FoxPro interpreta la
    consulta y recupera los datos
    especificados de la tabla o tablas. El comando SELECT se
    construye dentro de Visual FoxPro como cualquier otro comando de
    Visual FoxPro. Puede crear una consulta con el comando
    SELECT

    • En la ventana Comandos.
    • En un programa Visual
      FoxPro (como cualquier otro comando de Visual
      FoxPro).
    • En el Diseñador de consultas.

    ALTER TABLE – SQ: Modifica una tabla existente.
    Puede modificar el nombre, el tipo, la precisión, la
    escala, la
    admisión de un valor nulo y
    las reglas de integridad referencial para cada campo de la
    tabla.
    CREATE CURSOR – SQL: Crea una tabla temporal. Cada campo de
    la tabla temporal se define con un nombre, tipo,
    precisión, escala, soporte de valor nulo y reglas de
    integridad referencial. Las definiciones pueden obtenerse del
    propio comando o de una matriz.
    CREATE TABLE – SQL: Crea una tabla. Cada campo de la tabla
    nueva se define con un nombre, tipo, precisión, escala,
    aceptación de valores nulos
    y reglas de integridad referencial. Estas definiciones pueden
    obtenerse del propio comando o de una matriz.
    DELETE – SQL: Marca para su
    eliminación los registros de una
    tabla mediante la sintaxis de SQL.
    INSERT – SQL: Anexa un registro al final
    de una tabla existente. El nuevo registro incluye los datos
    mostrados en el comando INSERT o incluidos en la matriz
    especificada.
    UPDATE – SQL: Actualiza los registros de una tabla. Los
    registros se pueden actualizar según los resultados de una
    instrucción SELECT – SQL
    El propósito de este material es brindar al estudiante
    ejemplos que le permitan utilizar SELECT – SQL en el
    diseño
    de consultas usando para ello una o más tablas
    diseñadas en Visual Fox Pro.

    4. Componentes del
    SQL

    El lenguaje SQL está compuesto por comandos,
    cláusulas, operadores y funciones de
    agregado. Estos elementos se combinan en las instrucciones para
    crear, actualizar y manipular las bases de datos.

    Comandos
    Existen dos tipos de comandos SQL:

    • los DLL que permiten crear y definir nuevas bases de
      datos, campos e índices.
    • los DML que permiten generar consultas para ordenar,
      filtrar y extraer datos de la base de
      datos.

     

    Comandos DLL

    Comando

    Descripción

    CREATE

    Utilizado para crear nuevas tablas, campos e
    índices

    DROP

    Empleado para eliminar tablas e
    índices

    ALTER

    Utilizado para modificar las tablas agregando
    campos o cambiando la definición de los
    campos.

     

    Comandos DML

    Comando

    Descripción

    SELECT

    Utilizado para consultar registros de la base de
    datos que satisfagan un criterio determinado

    INSERT

    Utilizado para cargar lotes de datos en la base de
    datos en una única operación.

    UPDATE

    Utilizado para modificar los
    valores de los campos y registros
    especificados

    DELETE

    Utilizado para eliminar registros de una tabla de
    una base de datos

    Cláusulas
    Las cláusulas son condiciones de modificación
    utilizadas para definir los datos que desea seleccionar o
    manipular.
     

    Cláusula

    Descripción

    FROM

    Utilizada para especificar la tabla de la cual se
    van a seleccionar los registros

    WHERE

    Utilizada para especificar las condiciones que
    deben reunir los registros que se van a
    seleccionar

    GROUP BY

    Utilizada para separar los registros seleccionados
    en grupos
    específicos

    HAVING

    Utilizada para expresar la condición que
    debe satisfacer cada grupo

    ORDER BY

    Utilizada para ordenar los registros seleccionados
    de acuerdo con un orden específico

    Operadores Lógicos
     

    Operador

    Uso

    AND

    Es el "y" lógico. Evalúa dos
    condiciones y devuelve un valor de verdad sólo si
    ambas son ciertas.

    OR

    Es el "o" lógico. Evalúa dos
    condiciones y devuelve un valor de verdadero si alguna de
    las dos es cierta.

    NOT

    Negación lógica. Devuelve el valor contrario
    de la expresión.

    Operadores de Comparación
     

    Operador

    Uso

    <

    Menor que

    >

    Mayor que

    <>

    Distinto de

    <=

    Menor ó Igual que

    >=

    Mayor ó Igual que

    =

    Igual que

    BETWEEN

    Utilizado para especificar un intervalo de
    valores.

    LIKE

    Utilizado en la comparación de un
    modelo

    In

    Utilizado para especificar registros de una base
    de datos 

    CONSULTAS BÁSICAS
    La sintaxis básica de una consulta de selección
    es la siguiente:
    SELECT Campos FROM Tabla
    En donde campos es la lista de campos que se deseen recuperar y
    tabla es el origen de los mismos, por ejemplo:
    SELECT Nombre, Telefono FROM Clientes

    Esta consulta devuelve una visualización de la
    tabla Clientes con el campo nombre y teléfono. Esta visualización en VFP
    es un browse pero no es necesario agregar esta orden, SQL lo
    invoca automáticamente. Vea el orden de los campos en el
    browse.

    Ordenar Los Registros
    Adicionalmente se puede especificar el orden en que se desean
    recuperar los registros de las tablas mediante la cláusula
    ORDER BY Lista de Campos. En donde Lista de campos representa los
    campos a ordenar.

    Ejemplo:
    SELECT Cod_Postal, Nombre, Telefono FROM Clientes ORDER BY
    Nombre

    Esta consulta devuelve los campos CodigoPostal, Nombre,
    Telefono de la tabla Clientes ordenados por el campo Nombre.
    Se pueden ordenar los registros por más de un campo, como
    por ejemplo:

    SELECT CodigoPostal, Nombre, Telefono FROM Clientes
    ORDER BY Cod_Postal, Nombre

    Incluso se puede especificar el orden de los registros:
    ascendente mediante la cláusula (ASC -se toma este valor
    por defecto) ó descendente (DESC)
    SELECT CodigoPostal, Nombre, Telefono FROM Clientes ORDER BY
    CodigoPostal, nombre ASC

    Consultas Con Predicado
    El predicado se incluye entre la cláusula y el primer
    nombre del campo a recuperar, los posibles predicados son:
     

    Predicado

    Descripción

    *

    Devuelve todos los campos de la tabla

    TOP

    Devuelve un determinado número de registros
    de la tabla

    DISTINCT

    Omite los registros cuyos campos seleccionados
    coincidan totalmente

    DISTINCTROW

    Omite los registros duplicados basándose en
    la totalidad del registro y no sólo en los campos
    seleccionados.

    * (ALL)

    Si no se incluye ninguno de los predicados se asume ALL.
    El Motor de base de
    datos  selecciona todos los registros que cumplen las
    condiciones de la instrucción SQL. No se conveniente
    abusar de este predicado ya que obligamos al motor de la base de
    datos a analizar la estructura de la tabla para averiguar los
    campos que contiene, es mucho más rápido indicar el
    listado de campos deseados.
    SELECT * FROM Clientes

    TOP
    Devuelve un cierto número de registros que entran entre al
    principio o al final de un rango especificado por una
    cláusula ORDER BY. Supongamos que queremos recuperar los
    nombres de los tres primeros clientes tomando como referencia un
    orden ASC para el campo cedula

    SELECT TOP 3 cedula, Nombre FROM clientes ORDER BY
    cedula DESC
    El resultado de la consulta mostrará en pantalla los tres
    primeros registros que correspondan al orden. Observe en la
    figura los números de cedula.

    Como la sentencia ORDER BY cedula DESC indica que se
    deben ordenar en orden descendente los registros, se muestran los
    tres primeros contando del último en adelante.
    Observe el cambio en el
    resultado de la consulta si ORDER BY cedula ASC
    SELECT TOP 3 cedula, Nombre FROM clientes ORDER BY cedula
    ASC

    El orden establecido para el campo cedula es ASC, por lo
    tanto toma los tres primeros registros en forma ascendente.
    Si no se incluye la cláusula ORDER BY, la consulta
    devolverá un conjunto arbitrario de 3registros de la tabla
    Clientes .El predicado TOP no elige entre valores iguales. Si se
    incluye la palabra clave PERCENT, se redondeará al
    número entero más alto el número de columnas
    devuelto en el resultado. Los valores permitidos para
    nExpr cuando se incluye la palabra clave PERCENT son 0.01
    a 99.99.

    Ejemplo: La tabla Clientes tiene un total de 10
    registros, si se quiere visualizar en pantalla un 20% ordenado
    por cedula en orden ascendente la línea de código
    será:
    SELECT TOP 20 PERCENT cedula, nombre FROM Clientes ORDER BY
    cedula ASC
    Y el resultado de la búsqueda como se puede apreciar son
    dos registros correspondientes al 20 % de 10 que hay en
    total

    El valor que va a continuación de TOP debe ser un
    Integer sin signo.

    DISTINCT
    Omite los registros que contienen datos duplicados en los campos
    seleccionados. Para que los valores de cada campo listado en la
    instrucción SELECT se incluyan en la consulta deben ser
    únicos.
    Por ejemplo, suponga que se desea saber los códigos de
    área de los números de teléfono de los
    clientes almacenados en la tabla. Es de supones que con que
    aparezca una sola vez 0274 o 0416 es suficiente así
    existan otros clientes con el mismo código de
    área.

    SELECT DISTINCT SUBSTR(telefono, 1, 4) from clientes
    En vista que el código de área y el número
    del teléfono están integrados en un atributo
    atómico, se debe extraer el dato que se necesita para la
    consulta usando la Función
    SUBSTR(), y así en la consulta se podrán observar
    los diferentes códigos de área que conforman los
    telefonos de los clientes.

    Vista de la consulta usando DISTINCT

    Con otras palabras el predicado DISTINCT devuelve
    aquellos registros cuyos campos indicados en la cláusula
    SELECT posean un contenido diferente. El resultado de una
    consulta que utiliza DISTINCT no es actualizable y no refleja los
    cambios subsiguientes realizados por otros usuarios.

    En el ejemplo anterior también se puede apreciar
    como se mezcla de forma eficiente código de SQL con el de
    VFP y se consiguen mejores resultados.

    5. Criterios de
    selección

    Se vio la forma de recuperar los registros de las
    tablas, las formas empleadas devolvían todos los registros
    de la mencionada tabla. A lo largo de este apartado se
    estudiarán las posibilidades de filtrar los registros con
    el fin de recuperar solamente aquellos que cumplan una o unas
    condiciones preestablecidas

    WHERE
    Indica a Visual FoxPro que incluya únicamente ciertos
    registros en el resultado de la consulta. WHERE es necesario para
    recuperar datos de varias tablas. Para las condiciones de filtro
    se puede utilizar cualquiera de los siguientes
    operadores:

    Operador

    Comparación

    =

    Igual

    ==

    Exactamente igual

    LIKE

    SQL LIKE

    <>

    Distinto de

    >

    Mayor que

    >=

    Mayor o igual que

    <

    Menor que

    <=

    Menor o igual que

    Cuando utiliza el operador = con cadenas, actúa
    de forma distinta dependiendo del ajuste de SET ANSI. Cuando SET
    ANSI está OFF, Visual FoxPro trata las comparaciones de
    cadenas en la forma habitual en Xbase. Cuando SET ANSI
    está a ON, Visual FoxPro sigue las normas ANSI para
    comparaciones de cadenas. Vea SET ANSI y SET EXACT para obtener
    información adicional sobre la forma en que
    Visual FoxPro realiza las comparaciones de cadenas.

    Ejemplo 1
    Suponga que deseamos conocer todos los clientes Movilnet
    (código 0416) de la tabla y además queremos
    enmascarar el titulo del campo. Para esto la línea de
    código SQL será:
    SELECT nombre AS Clientes_MovilNet FROM clientes WHERE substr
    (telefono,1,4) = '0416'
    SELECT nombre = selecciona el campo nombre de la tabla
    AS Clientes_Movilnet = crea la mascara para la consulta. Se debe
    tomar en cuenta que no pueden existir espacios en blanco en la
    cadena de caracteres.
    FROM clientes = establece el origen de los datos para la
    consulta.
    WHERE substr (telefono, 1,4) = '0416' => criterio de filtro
    para la consulta.

    Ejemplo 2
    Se necesita conocer el nombre y el teléfono de los
    clientes con crédito
    hasta Bs. 100.000,00
    SELECT nombre AS Credito_Hasta_100000, telefono FROM clientes
    WHERE credito <= 100000

    Ejemplo 3
    Diseñar una consulta SQL de todos los clientes foraneos
    (codigo postal
    diferente de 5101).
    Para resolver este problema usaremos la cláusula IN la
    cual indica que el campo debe contener uno de los valores antes
    de que el registro se incluya en los resultados de la consulta.
    Pero para este caso en particular la negaremos con NOT

    SELECT NOMBRE AS CLIENTES_FORANEOS, TELEFONO, COD_POSTAL
    FROM CLIENTES;
    WHERE COD_POSTAL NOT IN ('5101')

    Observe el resultado de la consulta, están todos
    los clientes a excepción de los que tienen como
    código postal 5101.

    6. Intervalos de
    valores

    El operador BETWEEN
    Para indicar que deseamos recuperar los registros según el
    intervalo de valores de un campo emplearemos el operador BETWEEN
    cuya sintaxis es:
    Campo [NOT] BETWEEN valor1 AND valor2 (la condición Not es
    opcional)
    En este caso la consulta devolvería los registros que
    contengan en "campo" un valor incluido en el intervalo valor1,
    valor2 (ambos inclusive). Si anteponemos la condición Not
    devolverá aquellos valores no incluidos en el
    intervalo.

     Ejemplo 1
    Se necesita conocer los datos de los clientes que tienen una
    carta de
    crédito entre dos y tres millones de Bolívares.
    La línea de código SQL será:
    SELECT NOMBRE AS CREDITO_ENTRE_200000_Y_3000000, TELEFONO,
    COD_POSTAL,; CREDITO FROM CLIENTES WHERE CREDITO BETWEEN 2000000
    AND 3000000

    7. El operador
    like

    Se utiliza para comparar una expresión de cadena
    con un modelo en una
    expresión SQL. Su sintaxis es:

    Expresión LIKE modelo
    En donde expresión es una cadena modelo o campo contra el
    que se compara expresión. Se puede utilizar el operador
    LIKE para encontrar valores en los campos que coincidan con el
    modelo especificado. Por modelo puede especificar un valor
    completo (Ana María), o se pueden utilizar caracteres
    comodín para encontrar un rango de valores (LIKE
    ‘An%’).
    El operador LIKE se puede utilizar en una expresión para
    comparar un valor de un campo con una expresión de cadena.
    Por ejemplo, si introduce LIKE ‘C%’ en una consulta
    SQL, la consulta devuelve todos los valores de campo que
    comiencen por la letra C. En una consulta con parámetros,
    puede hacer que el usuario escriba el modelo que se va a
    utilizar.
    Puede utilizar el signo de porcentaje (%) y subrayado
    ( _ ) como parte de la expresión. El signo de
    porcentaje representa a cualquier secuencia de caracteres
    desconocidos en la cadena. El subrayado representa un solo
    carácter desconocido en la
    cadena.

    Ejemplo
    Listar por pantalla todos los clientes cuyos nombres comiencen
    con la letra ‘I’
    La línea SQL será:
    SELECT NOMBRE AS CLIENTES_CUYOS_NOMBRES_EMPIEZAN_POR_I FROM
    CLIENTES; WHERE UPPER (NOMBRE) LIKE
    'I%'   

    Observe el resultado de la consulta, no importa que siga
    a la letra ‘I’ en el campo nombre, SQL lo muestra en
    pantalla.

    8. Agrupamiento de
    registros

    GROUP BY ColumnaGrupo [,
    ColumnaGrupo…]
    Agrupa las filas de la consulta basándose en los valores
    de una o más columnas. ColumnaGrupo puede ser el
    nombre de un campo normal de una tabla, o un campo que incluya
    una función de campo SQL, o una expresión
    numérica indicando la posición de la columna en la
    tabla resultado (la columna más a la izquierda tiene el
    número 1).

    Su sintaxis es:
    SELECT campos FROM tabla WHERE criterio GROUP BY campos del
    grupo HAVING
    condición

    Los valores Null en los campos GROUP BY se agrupan y no
    se omiten. No obstante, los valores Null no se evalúan en
    ninguna de las funciones SQL agregadas.
    Se utiliza la cláusula WHERE para excluir aquellas filas
    que no desea agrupar, y la cláusula HAVING para filtrar
    los registros una vez agrupados.
    A menos que contenga un dato Memo u Objeto OLE , un campo de la
    lista de campos GROUP BY puede referirse a cualquier campo de las
    tablas que aparecen en la cláusula FROM, incluso si el
    campo no esta incluido en la instrucción SELECT.
    Todos los campos de la lista de campos de SELECT deben o bien
    incluirse en la cláusula GROUP BY.
    HAVING es similar a WHERE, determina qué registros se
    seleccionan. Una vez que los registros se han agrupado utilizando
    GROUP BY, HAVING determina cuales de ellos se van a mostrar.
    Si tenemos una tabla llamada clientes con los siguientes
    registros:

    Se nos plantea la siguiente interrogante
    ¿Cuáles registros cumplen con la condición
    de poseer Código Postal 5101 y además son clientes
    Movilnet?
    Agrupamos los clientes con Cod_Postal 5101 y luego con HAVING
    seleccionamos los clientes Movilnet (0416)
    SELECT cedula, nombre, cod_postal FROM clientes WHERE cod_postal
    = '5101';
    GROUP BY cedula, nombre, cod_postal HAVING SUBSTR (TELEFONO,1,4)
    = '0416'

    AVG
    Calcula la media aritmética de un conjunto de valores
    contenidos en un campo especificado de una consulta. Su sintaxis
    es la siguiente

    AVG (expr)
    En donde expr representa  el campo que contiene los
    datos numéricos para los que se desea calcular la media o
    una expresión que realiza un cálculo
    utilizando los datos de dicho campo. La media calculada por AVG
    es la media aritmética (la suma de los valores dividido
    por el número de valores). La función AVG no
    incluye ningún campo Null en el cálculo.

    Ejemplo
    Usando la tabla CLIENTES se desea conocer el promedio de
    crédito de los clientes de la ciudad de Mérida
    (cod_postal = 5101)
    SELECT AVG (CREDITO) AS CLIENTES_MERIDA FROM CLIENTES;
    WHERE COD_POSTAL IN ('5101')
    El resultado de la consulta será:

    COUNT
    Calcula el número de registros devueltos por una consulta.
    Su sintaxis es la siguiente

    COUNT (expr)
    En donde expr contiene el nombre del campo que desea contar. Los
    operandos de expr pueden incluir el nombre de un campo de una
    tabla, una constante o una función. Aunque expr puede
    realizar un cálculo sobre un campo, COUNT simplemente
    cuenta el número de registros sin tener en cuenta
    qué valores se almacenan en los registros. La
    función COUNT no cuenta los registros que tienen campos
    NULL.
    SELECT COUNT (campo) AS nombre_máscara FROM tabla
    Ejemplo
    Se desea determinar ¿Cuántos Clientes tienen
    crédito entre Bs. 100.000,00 y Bs. 300.000,00?
    SELECT COUNT (CREDITO) AS CLIENTES_ENTRE_100000_y_300000 FROM
    CLIENTES;
    WHERE CREDITO BETWEEN 100000 AND 300000

    Como puede observar SQL proporciona el número de
    clientes que cumplen con la condición especificada en
    WHERE.

    Max y Min
    Devuelven el mínimo o el máximo de un conjunto de
    valores contenidos en un campo especifico una consulta. Su
    sintaxis es:
    Min (expr)
    Max (expr)
    En donde expr es el campo sobre el que se desea realizar
    el cálculo. Expr puede incluir el nombre de un
    campo de una tabla o una constante.

    Ejemplo
    Se desea conocer el monto en Bs. De la mayor carta de
    crédito de un cliente
    foráneo código postal 5102
    SELECT MAX (CREDITO) AS CLIENTE_CON_MAYOR_CRÉDITO_5102
    FROM CLIENTES;
    WHERE COD_POSTAL IN ('5102')

    SELECT MIN (CREDITO) AS
    CLIENTE_CON_MENOR_CRÉDITO_5102 FROM CLIENTES;
    WHERE COD_POSTAL IN ('5102')

    El código SQL anterior muestra el uso de MIN para
    ubicar el monto de la menor carta de crédito de la zona
    5102.
    SUM
    Devuelve la suma del conjunto de valores contenido en un campo
    específico de una consulta. Su sintaxis es:

    SUM (expr)
    En donde expr representa el nombre del campo que contiene los
    datos que desean sumarse o una expresión que realiza un
    cálculo utilizando los datos de dichos campos. Los
    operandos de expr pueden incluir el nombre de un campo de
    una tabla o una constante.

    Ejemplo
    Se desea conocer el monto total de las carteras de crédito
    de los clientes código de área 5102

    SELECT SUM (CREDITO) AS TOTAL_CRÉDITO_5102 FROM
    CLIENTES WHERE COD_POSTAL IN ('5102')
    Este ejemplo suma los resultados de las consultas anteriores con
    MAX Y MIN.

    Subconsultas
    Una subconsulta es una instrucción SELECT anidada dentro
    de una instrucción SELECT, SELECT…INTO, INSERT…INTO,
    DELETE, o UPDATE o dentro de otra subconsulta.
    Puede utilizar tres formas de sintaxis para crear una
    subconsulta:
    Comparación [ANY | ALL | SOME] (instrucción
    SQL)
    Expresión [NOT] IN (instrucción SQL)
    [NOT] EXISTS (instrucción SQL)
    En donde:
    Comparación: Es una expresión y un operador de
    comparación que compara la expresión con el
    resultado de la subconsulta.
    Expresión: Es una expresión por la que se busca el
    conjunto resultante de la subconsulta.
    Instrucción SQL: Es una instrucción SELECT, que
    sigue el mismo formato y reglas que cualquier otra
    instrucción SELECT. Debe ir entre paréntesis.
    Se puede utilizar una subconsulta en lugar de una
    expresión en la lista de campos de una instrucción
    SELECT o en una cláusula WHERE o HAVING. En una
    subconsulta, se utiliza una instrucción SELECT para
    proporcionar un conjunto de uno o más valores
    especificados para evaluar en la expresión de la
    cláusula WHERE o HAVING.
    Se puede utilizar el predicado ANY, ALL o SOME, los cuales son
    sinónimos, para recuperar registros de la consulta
    principal, que satisfagan la comparación con cualquier
    otro registro recuperado en la subconsulta.
    Cuando la condición de filtro incluye ANY o SOME, el campo
    debe cumplir la condición de comparación en al
    menos uno de los valores generados por la subconsulta.
    Cuando la condición de filtro incluye ALL, el campo debe
    cumplir la condición de comparación para todos los
    valores generados por la subconsulta antes de que se incluya el
    registro en el resultado de la consulta.

    Ejemplo
    Usando una subconsulta muestre una lista de clientes cuyo
    teléfono sea Movilnet (código de área
    0416)
    SELECT nombre, credito, TELEFONO FROM clientes WHERE SUBSTR
    (TELEFONO, 1, 4);
    IN (SELECT TELEFONO FROM CLIENTES WHERE SUBSTR (TELEFONO, 1, 4) =
    '0416')

    Ejemplo
    Suponga que se desea conocer los datos personales de los clientes
    con cartas de
    crédito por arriba de Bs. 2.500.000,00
    SELECT nombre, credito, TELEFONO FROM clientes WHERE credito =
    ALL ;
    (SELECT CREDITO FROM CLIENTES WHERE CREDITO >
    2500000)

    Ejemplo
    Encontrar los clientes con carteras de crédito entre Bs.
    2.300.000,00 Y Bs. 2.500.000
    SELECT nombre, credito, TELEFONO FROM clientes WHERE credito =
    ANY;
    (SELECT CREDITO FROM CLIENTES WHERE CREDITO BETWEEN 2300000 AND
    2500000)
    **** WHERE credito = ANY (subconsulta SQL) indica que se incluya
    en la consulta a cualquier registro que cumpla aunque sea una
    parte de la condición de la subconsulta.
    Ejemplo
    Liste a todos los clientes que tengan residencia en la ciudad de
    Mérida.
    SELECT NOMBRE, CREDITO, TELEFONO, CIUDAD FROM CLIENTES WHERE
    CIUDAD = ALL; (SELECT CIUDAD FROM CLIENTES WHERE UPPER (CIUDAD) =
    'MERIDA')

    Observe el efecto que se produce en la consulta cuando
    se cambia el operador = antes de ALL

    SELECT NOMBRE, CREDITO, TELEFONO, CIUDAD FROM CLIENTES
    WHERE CIUDAD > ALL; (SELECT CIUDAD FROM CLIENTES WHERE UPPER
    (CIUDAD) = 'MERIDA')

    SELECT NOMBRE, CREDITO, TELEFONO, CIUDAD FROM CLIENTES
    WHERE CIUDAD < ALL; (SELECT CIUDAD FROM CLIENTES WHERE UPPER
    (CIUDAD) = 'MERIDA')

    Se puede ver claramente que el resultado de la consulta
    varía sustancialmente cuando se cambia el operador = antes
    de ALL. Al utilizar > se muestran en la consulta todos
    aquellos registros que cumplen con la condición de
    comenzar con una letra mayor a ‘M’. Y al utilizar
    < se agregan a la consulta sólo aquellos cuya letra
    inicial en el campo ciudad está por debajo de
    ‘M’.

    Ejemplo
    Mostrar en pantalla los clientes con cartas de crédito
    menores a Bs. 200.000,00
    SELECT NOMBRE, CREDITO, TELEFONO FROM CLIENTES WHERE CREDITO <
    ALL;
    (SELECT CREDITO FROM CLIENTES WHERE CREDITO = 200000)
    Con la condición del WHERE de la consulta principal se
    establece que se deben mostrar todos aquellos registros menores a
    la condición establecida en la subconsulta (credito =
    200000)

    Consultas De Unión Internas
    Las vinculaciones entre tablas se realizan mediante la
    cláusula INNER que combina registros de dos tablas siempre
    que haya concordancia de valores en un campo común. Su
    sintaxis es:
    SELECT campos FROM tb1 INNER JOIN tb2 ON tb1.campo1 OPERADOR
    tb2.campo2

    En donde:
    tb1, tb2: Son los nombres de las tablas desde las que se combinan
    los registros.
    campo1, campo2: Son los nombres de los campos que se combinan. Si
    no son numéricos, los campos deben ser del mismo tipo de
    datos y contener el mismo tipo de datos, pero no tienen que tener
    el mismo nombre.
    OPERADOR: Es cualquier operador de comparación relacional:
    =, <, >, <=, >=, o <>.
    Se puede utilizar una operación INNER JOIN en cualquier
    cláusula FROM. Esto crea una combinación por
    equivalencia, conocida también como unión interna.
    Las combinaciones de equivalencia son las más comunes;
    éstas combinan los registros de dos tablas siempre que
    haya concordancia de valores en un campo común a ambas
    tablas. Se puede utilizar INNER JOIN con las tablas Clientes y
    Pedidos (ver ilustración más abajo) para
    seleccionar todos los pedidos de los clientes o los pedidos de un
    cliente en particular.
    Más formalmente INNER JOIN específica que el
    resultado de la consulta contenga sólo filas para una
    tabla con la que coincidan una o varias filas en otra
    tabla.

    Ejemplo

    Mostrar una consulta para determinar la fecha y el monto
    de los pedidos de un cliente X identificado por su número
    de cedula.

    SELECT fecha, monto from PEDIDOS INNER JOIN clientes
    ;

    ON clientes.cedula = 2 AND pedidos.cedula = 2

    Suponga que complementamos esta consulta
    añadiendo los campos nombre y teléfono de la tabla
    clientes, el resultado por pantalla sería:

    La línea de código SQL
    será:

    SELECT clientes.nombre, clientes.telefono, fecha, monto
    FROM PEDIDOS INNER JOIN clientes;

    ON clientes.cedula = 2 AND pedidos.cedula = 2

    Observe la sintaxis con que se escriben los campos de la
    tabla que no está activa (clientes). Se antecede el nombre
    del campo con el identificador de la tabla y un punto.

    Existen órdenes agregadas que cambiaran el
    resultado de la consulta dependiendo como las use. Estas
    son:

    LEFT [OUTER] JOIN: especifica que el resultado de la
    consulta contenga todas las filas de la tabla a la izquierda de
    la palabra clave JOIN y sólo las filas que concuerden
    procedentes de la tabla a la derecha de la palabra clave JOIN. La
    palabra clave OUTER es opcional; se puede incluir para resaltar
    que se ha creado una combinación externa.

    RIGHT [OUTER] JOIN especifica que el resultado de la
    consulta contenga todas las filas desde la tabla hasta la derecha
    de la palabra clave JOIN y sólo las filas que concuerden
    desde la tabla hasta la izquierda de la palabra clave JOIN. La
    palabra clave OUTER es opcional; puede incluirse para resaltar la
    creación de una combinación externa.
    FULL [OUTER] JOIN: especifica que el resultado de la consulta
    contenga todas las filas, concuerden o no, de ambas tablas. La
    palabra clave OUTER es opcional; se puede incluir para resaltar
    que se ha creado una combinación externa.

    Ejemplo:
    Observe como cambia el resultado de la consulta anterior
    agregando las órdenes LEFT, RIGHT, FULL.
    LEFT
    SELECT clientes.nombre, clientes.telefono, fecha, monto FROM
    PEDIDOS LEFT JOIN clientes;
    ON clientes.cedula = 2 AND pedidos.cedula = 2

    En este caso la condición del ON es
    específica el campo cedula en ambas tablas debe ser igual
    a 2; pero LEFT indica a SQL que ingrese los campos a la izquierda
    de la palabra JOIN los cuales se muestran como .NULL., en vista
    que no cumplen con la condición cedula = 2.
    RIGHT
    SELECT clientes.nombre, clientes.telefono, fecha, monto FROM
    PEDIDOS RIGHT JOIN; clientes ON clientes.cedula = 2 AND
    pedidos.cedula = 2
    El resultado será (ver siguiente página)

    Los campos a la derecha de JOIN se mostrarán como
    .NULL. en vista que no cumplen con la condición cedula =
    2.

    FULL

    SELECT clientes.nombre, clientes.telefono, fecha, monto
    FROM PEDIDOS FULL JOIN clientes; ON clientes.cedula = 2 AND
    pedidos.cedula = 2
    En este caso se muestran los campos de ambas tablas coincidan o
    no con la condición establecida.

    Consultas De Unión Externas
    Se utiliza la operación UNION para crear una consulta de
    unión, combinando los resultados de dos o más
    consultas o tablas independientes. Su sintaxis es:
    SELECT campos separados por comas FROM nombre tabla WHERE
    condición UNION; SELECT campos separados por comas FROM
    nombre tabla WHERE condición
    Los campos de ambos SELECT deben estar en igual número en
    ambas instrucciones y deben ser del mismo tipo.

    Ejemplo:
    Suponga que tenemos una tabla VENDEDORES junto con la ya conocida
    tabla CLIENTES con la que hemos trabajado
    anteriormente.

    Se le solicita que presente una vista por pantalla de
    todos los vendedores y clientes que se encuentran
    geográficamente ubicados en la zona 5101.

    La línea SQL será:
    SELECT CEDULA, NOMBRE, TELEFONO AS CLIENTES_Y_VENDEDORES FROM
    CLIENTES WHERE COD_POSTAL = '5101'; UNION SELECT CEDULA, NOMBRE,
    TELEFONO FROM VENDEDORES WHERE ZONA = '5101'

    Observe que el único vendedor que cumple con la
    condición aparece en la consulta en el último
    lugar.

    Ejemplo
    Suponga ahora que desea ver a todos los vendedores y clientes en
    una sola vista la línea de comando SQL será
    más sencilla como se puede apreciar:
    SELECT CEDULA, NOMBRE, TELEFONO AS CLIENTES_Y_VENDEDORES FROM
    CLIENTES UNION; SELECT CEDULA, NOMBRE, TELEFONO FROM
    VENDEDORES
    Como podrá observar (en la siguiente página) la
    vista de la consulta incluye a todos los registros de la tabla
    clientes y a los dos únicos vendedores
    registrados.

    Vista de la consulta de todos los clientes y vendedores
    usando UNION.

    9.
    Bibliografía

    MSDN LIBRARY
    1995 – 2000 Microsoft
    Corporation

     

     

     

     

     

    Autor:

    Carlos Roberto Izquierdo González

    T.S.U. En Informática

    Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

    Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

    Categorias
    Newsletter