2.9 LENGUAJES COMERCIALES DE CONSULTA.




    En forma comercila existen diversos paquetes y/o lenguajes mediante los cuales se puede construir un modelo relacional. El lenguaje que se considera estandar para este tipo de aplicaciones es el SQL(structured query languaje), este lenguaje de consulta estructurado proporciona formatos y sintaxis para la manipulación y definición de los datos.

 FORMATOS SQL

DDL

Crear Tablas

CREATE TABLE<nombre de la tabla>
(
<campo1> (<tipo>[,NO NULL]),
<campo2> (<tipo>[,NO NULL]),...
)


Tipos Validos

Crear Indices
CREATE [UNIQUE] INDEX <nom.indice> ON < nom>tabla>
(
<nomcampo1> [ASC/DES],
<nomcampo2> [ASC/DES],...
)


Modificar Tablas (expandirlas)


Eliminar Tablas


Borrar Indices


Tablas

CREATE TABLE persona
(
nombre(CHAR(40) VAR, NO NULL),
edad(SMALLINT, NONULL),
estatura(FLOAT, NO NULL),
telefono(CHAR(7))
)


Indices

Por nombre

CREATE INDEX ind_nom ON persona
(
nombre
)
Por estatura sin llaves repetidas, descendente
CREATE UNIQUE INDEX ind_est ON persona
(
estatura desc
)
Por edad(primero mas jovenes); edades repetidas, poe estatura(primero la mas alta)
CREATE INDEX ind_ed_est ON persona
(
edad,estatura desc
)
Modificaciones


DML

Insertar datos

INSERT INTO <nom.tabla>
[(<campo1>,<campo2>...):]
< <valor1>,<valor2>...>
Modificar datos
UPDATE <nom.tabla>
SET <campo1> = <campo1>,
<campo2> = <campo2>,...
[WHERE <condicion>]
Eliminar datos
DELETE<nom.tabla>
[WHERE <condicion>]
CONSULTAS

En una tabla

SELECT [UNIQUE] <lista de campos/*>
FROM <nom>tabla>
[WHERE <condicion>]
[ORDER BY <campo> [asc/des]]
Funciones integradas en select/where
COUNT(*) conteo
SUM(<campo>) total(acumulador)
AVG(<campo>) promedio
MAX(<campo>) maximo
MIN(<campo>) minimo


Ejemplo:

Insert into persona

< 'juan',15,1,75,'2-15-15','forjadores'>

Update persona
Set edad=edad+1
Update persona
Set estatura = estatura+0.10
Where edad<20

Consulta por coincidencia parcial en cadenas

Select <nombre_tabla>
where<campo char>LIKE <cadena de coincidencia>

caracteres validos en <cadena de coincidencia>

"-" un carácter cualquiera.
"%" una secuencia de caracteres cualquiera.


Create table clientes
(
nc(integer,NO NULL),
nombre(char(20)VAR,NO NULL)
domicilio(char(40)VAR,NO NULL)
estado(char(15)VAR,NO NULL)
)

insert into clientes
<320,'juan','forjadores','infantil'>
<145,'pedro','catolica','adulto'>

create tabla videos
(
clave(char(4),NO NULL),
titulo(char(20)VAR,NO NULL),
clasificacion(char(1)VAR,NO NULL),
costo(float,NO NULL)
)

insert into videos
<'A320','la roca','b',12.00>
<'b415','tornado','b',12.00>
 

Create table renta
(
nc(integer,NO NULL),
clave(char(4),NO NULL),
fecha(char(8),NO NULL),
dias(smallint,NO NULL)
)

Insert into renta
<320,'A716','7/10/97',3>
<320','b716','7/10/97'.3>

Ejemplos:

  1. Muestre el nombre y estado de los clientes cuyo numero de credencial es mayor a 100
     

    select nombre estado
    form clientes
    where nc>100

  2. Se desea conocer la cantidad de clientes de cada estado
     

    select estado, count(*)
    from clientes
    grop by estado

  3. Se desea consultar los nombres de las peliculas que cuestan menos de 15.00 que no son infantiles.
Select titulo
From videos
Where (costo < 15.00 and clasificacion ù = "a'')
 
Consultas en varias tablas select [unique] <lista campos /*>
from <lista de tablas>
where <condicion>

    Este tipo de consultas se realiza sobre un atabla global que resulta de todas las combinaciones posibles entre las tuplas de las tablas involucradas.

    La condicion en el formato debe aprovecharse para colocar un filtro que permita que solo tas tuplas o combinaciones de estas que sean requeridas, se muestren; esto se logra por medio de las columnas con valor semejante o de las relaciones establecidas.

    Si un campo se encuentra en mas de una tabla, su referencia puede formarse con el formato tabla campo.

Ejemplo:

    Se desea conocer la lista de los distintos titulos rentados el 8 oct 97

Select unique video.tiulo
From renta,videos
Where (renta.fecha = '8/oct/97' and renta.clave = video.clave)

    Los discriminadores any/all son opcionales y se pueden combinar con un operador relacional o con in/not in en este tipo de consultas se procesa primeramente la tabla mas interna(tabla2) de la cual obtiene una salida determinada; los datos que se obtienen en esta salida se relacionan mediante el descriminador con los datos de la tabla externa, produciendo asi la salida final.

Ejemplo:

Select videos.titulo
From videos,renta
Where (videos.clave=renta.clave) and (renta.dias>2)
En subconsultas select videos.titulo
form videos
where clave in ( select clave
                        from rentas
                        where renta.dias >2)


    El formato puede extenderse creando subconsultas en multinivel. Se asume el mismo criterio de resolver a partir de la tabla mas interna e ir relacionando los resultados con la tabla externa inmediata sucesivamente.

Ejemplo:

Select clientes.domicilio
Form clientes
Where nc in (select nc
                    From renta
                    Where clave in (select clave
                                            From videos
                                            Where clasificacion='b' ))
    Una union permite consultar los resultados de dos o mas tablas en una sola salida; cuando los resultados de las tablas son semejantes (muestran la misma informacion) se suprimen las salidas redundantes, operando asi como una union de conjuntos.
 
 
Select <lista de campos/*>
From <tabla1>
Where<condicin1>
Union
Select <lista campos2/*>
From<tabla2>
Where<condicion2>

Ejemplo:

 
Select nombre
From clientes
Where estado='infantil'
Union Select titulo
From videos
Where clasificacion = 'a'

RetornoPágina Anterior
Página SiguienteSiguiente