Lenguajes comerciales de consulta

En forma comercial existen diversos paquetes y/o lenguajes mediante los cuales se puede construir un modelo relacional. El lenguaje que se considera estándar 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.
Lenguajes Comerciales de Consulta

FORMATOS SQL

DDL

Crear Tablas

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

Tipos Validos

  • CHAR (<LONG>)[VAR]
  • FLOAT
  • INTEGER
  • SMALLINT

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

  • EXPAND TABLE <nom.tabla>
  • ADD FIELD <nom.campo> (<TIPO>[NO NULL])

Eliminar Tablas

  • DROP TABLE <nom.tabla>

Borrar Indices

  • DROP <nom>indice>

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

  • EXPAND TABLE persona
  • ADD FIELD direccion(CHAR(30), VAR, NO NULL)

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/whereCOUNT(*) 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’>

  • Íncrementar edad de todas las tuplas

Update persona
Set edad=edad+1

  • Personas menores a 20 años crecieron 10 centimetros

Update persona
Set estatura = estatura+0.10
Where edad<20
Operadores validos 

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.
Consulta por coincidencia parcial en cadenas

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:

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

select nombre estado
form clientes
where nc>100

Se desea conocer la cantidad de clientes de cada estado

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

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 En tabla global

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:

Se desea mostrar los titulos de las peliculas que han sido rentadas por lo mas de dos dias

Select videos.titulo
From videos,renta
Where (videos.clave=renta.clave) and (renta.dias>2)En subconsultasselect 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:

  • se desea conocer el domicilio de los clientes que han rentado peliculas para adolescentes.

Select clientes.domicilio
Form clientes
Where nc in (select nc
From renta
Where clave in (select clave
From videos
Where clasificacion=’b’ )) En uniones

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:

  • se desea obtener una lista de clientes y de peliculas se desea incorporar solo alos clientes infantiles y a las peliculas que pueden ser rentadas por estos.

 

Select nombre
From clientes
Where estado=’infantil’
UnionSelect titulo
From videos
Where clasificacion = ‘a’