Está en la página 1de 11

El lenguaje SQL

Lenguaje de consulta estructurado


SQL.
El SQL (Lenguaje de Consulta Estructurado), es un lenguaje creado para el acceso y
manipulacin a base de datos.
Caractersticas:
Es un lenguaje similar al Ingles.
No incluye referencias ni caminos explcitos.
Es una forma de manipular datos en una base de datos.
Puede ser usado en lnea desde un terminal.
Puede ser usado en forma inmersa en una aplicacin.
Tiene un amplio rango de operaciones.
El SQL proporciona dos tipos de comandos, los que pertenecen al:
Lenguaje de Definicin de Datos (DDL): que permiten crear y definir nuevas tablas,
campos, ndices, usuarios, grupos de trabajo, etc.
Lenguaje de Manipulacin de Datos (DML): que permite crear consultas para
ordenar, filtrar y extraer datos de la base de datos.

Lenguaje de Definicin de Datos (DDL).


Crear una Tabla.
Con este comando podemos crear una tabla en Access mediante cdigo e indicarle
las caractersticas que van a tener sus campos.
Sintaxis:
CREATE TABLEnombre_tabla (campo1 tipo_dato, campo2 tipo_dato, campo3
tipo_dato, PRIMARY KEY (nombre_campo))

Restricciones.
Los tipos comunes de restricciones son:
NO NULL: en forma predeterminada, una columna puede ser NULL. Si no desea
permitir un valor NULL en una columna, querr colocar una restriccin en esta
columna especificando que NULL no es ahora un valor permitido.

Elaborado por: Ing. Yelmin Prez

Pgina 1

Clave primaria: la clave primaria se utiliza para identificar en forma nica cada
lnea en la tabla. Puede ser parte de un registro real, o puede ser un campo artificial
(uno que no tiene nada que ver con el registro real). Para indicar que un campo es
clave primaria se lo identificamos con la palabra PRIMARY KEY
(nombre_campo).
Uso de claves forneas: CREATE TABLE nombre_tabla (campo1 tipo_dato,
campo2 tipo_dato, campo3 tipo_dato,,CONSTRAINT nombre_enlace FOREIGN
KEY (campoclave) REFERENCES nombre_tabla(campoclave));
Ejemplo con camposforaneos:
CREATE TABLE autorlibro(codautvarchar(3) NOT NULL,codlibvarchar(3) not
null,edicilibvarchar(100),fecpubllibvarchar(10), PRIMARY KEY (codaut), KEY
libro_autor(codlib),CONSTRAINT libro_autor FOREIGN KEY (codlib)
REFERENCES libro (codlib))
Tipos de Datos
Tipo de Datos
BIT
BYTE
COUNTER

Longitud
1 byte
1 byte
4 byte

CURRENCY

8 byte

DATETIME
DOUBLE

8 byte
8 byte

SHORT
LONG
TEXT

2 byte
4 byte
1 byte por
carcter

Descripcin
Valores Si/No o True/False
Un valor entero entre 0 y 255.
Un numero incrementado automticamente (de tipo
Long)
Un nmero escalable entre
922.337.203.685.477,5808 y
922.337.203.685.477,5807.
Un valor de fecha u hora entre los aos 100 y 9999.
Un valor en punto flotante de doble precisin con un
rango de -1.79769313486232*10308 a 4.94065645841247*10-324 para valores negativos,
4.94065645841247*10-324 a
1.79769313486232*10308 para los positivos y 0
Un entero como entre -32,768 y 32,767.
Un entero largo entre -2,147,483,648 y 2,147,483,647
De cero a 255 caracteres

Agregar, Eliminar, Modificar un campo de una tabla.


Una vez que se crea la tabla en la base de datos, hay muchas ocasiones donde se
puede desear cambiar la estructura de la tabla. Los casos tpicos incluyen lo siguiente:
Agregar una columna
Eliminar una columna
Cambiar el tipo de dato para una columna

Elaborado por: Ing. Yelmin Prez

Pgina 2

Con ALTER TABLE, se puede realizar todas las acciones anteriores, la sintaxis en:
Agregar una columna:
ALTER TABLEnombre_tablaADDnombre_campotipo_dato.
Eliminar columna:
ALTER TABLEnombre_tablaDROPnombre_campo.
Cambiar el tipo de datos para una columna
ALTER TABLEnombre_tablaALTER COLUMNnombre_campotipo_dato
Insertar registro en una tabla.
Para insertar registros se utiliza el comando INSERT INTO. Ente comando puede
ser utilizado para agregar un nico registro o agregar en una tabla los registros contenidos
en otras.
Agregar un registro
Sintaxis:
INSERT INTOnombre_tabla (campo1, campo2, campo3,)
VALES (valor1, valor2, valor3,)
Despus del nombre de la tabla se especifican los campos a los cuales se le va a
agregar los valores indicados por VALU, si no se especifican Access asume por
defecto que llena todos los campos de la tabla.
Los valores agregados deben de corresponder con el tipo de dato del campo (se
deben de cerrar entre comillas simples para valores tipo texto, entre # # para
valores de fecha, etc.), la asignacin de valores se realizan posicin, el primer valor
lo asigna a la primera columna, el segundo valor a la segunda columna, y as
sucesivamente

Agregar registros de otra tabla


Sintaxis:
INSERT INTOtabla_destino (campo1, campo2, campo3,)
SELECT (campo1, campo2, campo3,)
FROM tabla1, tabla2, tabla3
WHERE condiciones
Despus del nombre de la tabla, a la que se agregan los registros, se listan los
campos que almacenan los valores de la consulta SELECT.
En el SELECT se deben de colocar los nombres de los campos que se desean
consultar, estos nombres deben de ir en el mismo orden en que fueron colocados los
nombres de los campos a llenar.
Elaborado por: Ing. Yelmin Prez

Pgina 3

Para que Access no de errores, los campos de la tabla destino deben de coincidir en
el tipo de dato.
Eliminar registro de una tabla.
Para borrar un registro nos servimos de la instruccin DELETE. En este caso
debemos especificar cul o cules son los registros que queremos borrar. Es por ello
necesario establecer una seleccin que se llevara a cabo mediante la clausula WHERE.
Sintaxis:
DELETE FROMnombre_tablaWHERE condiciones_ de _seleccin
Si queremos por ejemplo borrar todos los registros de los clientes que se llamen
Perico lo haramos del siguiente modo:
DELETE FROM clientes WHERE nombre=Perico
Hay que tener cuidado con esta instruccin ya que si no especificamos una
condicin con WHERE, lo que estamos haciendo es borrar toda de tabla:
DELETE FROM clientes
Modificar el valor de un campo.
Para modificar el valor de uno o varios campos, se utiliza la palabra UNDATE, este
cambia los valores de todos los registros que cumplan con una determinada condicin que
se especifica en la clausula WHERE.
Sintaxis:
UNDATEnombre_tablaSET campo1=valor, campo2=valor,
WHERE criterio;
Lenguaje de Manipulacin de Datos (DML)
Estructura de una consulta.
SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY

listas de modificadores lista de campos a mostrar


Tablas en donde estn los campos a mostrar
Condicin filtro para los campos del SELECT
Listas de campos por los que hay que agrupar los datos
Condicin que deben cumplir los grupos
Ordena los datos de forma ascendiente o descendiente

La clausula SELECT.
Permite listar los campos que se desean como resultado de una consulta, los
nombres de los campos se deben separar por comas, si hay un campo que se encuentre en
Elaborado por: Ing. Yelmin Prez

Pgina 4

ms de una tabla se debe indicar de que tabla hay que tomar el campo, para eso se coloca el
nombre de la tabla punto el nombre del campo. Ejemplo: venta.cod_venta
Ejemplo:
SELECT campo1, campo2, campo3
Dentro del SELECT y antes de los campos a consultar pueden indicarse una lista de
Modificadores, tales como:
DISTINCT: Omite los registros que contienen datos duplicados en los campos
seleccionado.
ALL o Asteriscos (*): estos comandos se utilizan ms que todo para mostrar todos
los campos de la consulta, es decir, no es necesario indicar los campos a consultar.
TOP num: es un comando que revuelve el nmero de registro que se le indican en
num, este nmero debe ser menor o igual al total de registros de la consulta. Si
queremos devolver un cierto porcentaje de registro le colocamos despus del
numero la palabra PORCENT.

La Clausula FROM.
Permite especificar los nombres de las tablas de las cuales se van a obtener los
campos seleccionados.
Ejemplo:
FROM tabla1, tabla2, tabla3

La Clausula WHERE.
Empleada para especificar las condiciones que deben reunir los registros que se van
a seleccionar. Para formar la condicin se emplean nombres de campos, operadores de
comparacin y los operadores lgicos.

Operadores relacionales.
<
>
<>
<=
>=
=
BERTWEEN AND

Menor que
Mayor que
Diferente
Menor o igual que
Mayor o igual que
Igual que
Utilizado para especificar un intervalo de valores

Elaborado por: Ing. Yelmin Prez

Pgina 5

LIKE
In y Not In

Seleccionar los registros cuyo valor de campo se asemeje, no


teniendo en cuenta las maysculas y minsculas.
Da un conjunto de valores para un campo para los cuales la
condicin de seleccin es o no valida

Operadores Lgicos.
AND: es el y lgico. Evala dos condiciones y devuelve un valor de verdad solo si
ambas son ciertas.
OR: es el o lgico. Evala dos condiciones y devuelve un valor de verdad si
alguna de las dos es cierta
NOT:Negacin lgica. Devuelve el valor contrario de la expresin.

La clausula GROUP BY.


Especifica la agrupacin que se da a los datos, es decir, separa los registros
seleccionados en grupos especficos, estos grupos se determinan por los campos que se
listan despus del comando GROUP BY. Se usa siempre en combinacin con funciones
agregadas.
Las funciones de agregado se usan dentro de una clausula SELECT, HAVING o
ORDER BY, su funcin principal es la de devolver un nico valor que se aplica a un grupo
de registros.
Funciones de Agregados.
AVG: Utilizada para calcular el promedio de los valores de un campo determinado
Sintaxis:
AVG(nombre_campo)
COUNT: Utilizado para devolver el numero de registros de la seleccin
Sintaxis:
COUNT (nombre_campo), cuenta la cantidad de registro en las que el valor
nombre_campo NO ESTA VACIO.
COUNT (*), cuenta todos los registros de la seleccin.
SUM: Utilizada para devolver la suma de todos los valores de un campos
determinado
Sintaxis:
SUM (nombre_campo)
MAX y MIN: Utilizadas para devolver el valor ms alto y ms bajo de un campo
especifico respectivamente.
Sintaxis:
MAX (nombre_campo)
MIN (nombre_campo)
Elaborado por: Ing. Yelmin Prez

Pgina 6

La clausula HAVING.
Especifica una condicin que deben cumplir los grupos. Su funcionamiento es
similar al de WHERE pero aplicado al conjunto de resultados devueltos por la consulta.
Debe aplicarse siempre junto alGROUP BY y la condicin debe estar referida a los campos
contenidos en ella.
Al igual que el WHERE, se pueden emplear los operadores de comparacin y los
lgicos para construir la condicin. Como las funciones de agregado se utilizan por lo
general los grupos de datos, estas tambin pueden aparecer en esta clausula.
La clausula ORDER BY.
Presenta el resultado ordenado por las columnas indicadas. El orden puede
expresarse con ASC (orden ascendente) y DESC (orden descendente). El valor
predeterminado es ASC.

CONSULTA SOBRE UNA SOLA RELACIN


Son consultas en la que los registros se obtienen en una sola tabla.
Ejemplo 1: Obtener los nombres de los proveedores y su localidad.
SELECTnombrecompaia, pas
FROMproveedores
Ejemplo 2: Obtener todos los datos de los pedidos
SELECT *
FROMpedidos
Ejemplo 3: Obtener los nombres de los proveedores que vivan en un pas que comience por
la letra A.
SELECTidproveedor, nombrecompaia, pas
FROM proveedores
WHEREpas like A*
o
A%
ORDER BYidproveedorASC
Ejemplo 4: Obtener el numero de proveedores que hay por localidad.
SELECTpas, COUNT (*) AS cantidad
FROMproveedores
GROUP BYpas
Elaborado por: Ing. Yelmin Prez

Pgina 7

ORDER BY COUNT (*) DESC

CONSULTAS SOBRE MAS DE UNA RELACIN


Son consultas en las que los registros se obtienen de dos o ms tablas. Cuando en
una consulta se utilizan dos o ms tablas, se debe de indicar mediante la clausula WHERE
como estn relacionadas las tablas.
Ejemplo 1: Consultar el nombre y el cdigo de los proveedores que suministran artculos.
SELECT DISTINCTproveedores.idproveedor, proveedores.nombrecompaia
FROM proveedores, productos
WHEREproveedores.idproveedor = productos.idproveedor
Como el campo cod_prov, es un campo que se encuentra en la tabla proveedores y
compras, se especifica cul de los dos campos se va a utilizar mediante la siguiente
estructura: nombre_tabla.campo
Ejemplo 2: Consultar el nombre del cliente y la cantidad total de artculos que ah
comprado, ordenados por cantidad de artculos.
SELECTnombrecompaia, SUM (cantidad) AS total de productos
FROM clientes, pedidos, [detalles de pedidos]
WHEREcliente.idcliente = pedidos.idclienteAND
pedidos.idpedidos = [detalles de pedido].idpedido
GROUP BYclientes.nombrecompaia
ORDER BY SUM (cantidad) ASC
Ejemplo 3: Consultar los nombres de los empleados que han atendido los pedidos del
cliente de cdigo ALFKI.
SELECT DISTINCT apellidos+ +nombre AS nombre de los empleados
FROM empleados, pedidos, clientes
WHEREcliente.idcliente = pedidos.idclienteAND
pedidos.idempleado = empleados.edempleado
GROUP BYclientes.idcliente, apellidos+ +nombre
HAVINGclients.idcliente =ALFKI
Ejemplo 4: Consultar por categora la cantidad de productos que se han pedidos i
ordenarlos por la cantidad de forma ascendente.
Elaborado por: Ing. Yelmin Prez

Pgina 8

SELECTnombrecategoria, SUM (cantidad) AS total pedido


FROM categoras, productos, [detalles de pedidos]
WHEREcategora.idcategoria = productos.idcategoriaAND
productos.idproducto = [detalles de pedido] .idproducto
GROUP BYnombrecategoria
ORDER BY SUM (cantidad) ASC
CONSULTAS ANIDADAS (Subconsultas)
En muchas ocasiones es necesario anidar instrucciones SELECT FROM
WHERE, para obtener los resultados deseados, las subconsultas (consultas anidadas) no
son ms que consultas dentro de consultas que se unen mediante clausula WHERE.
Algunos predicados para anidar consultas son:
IN (en): Se emplea para recuperar nicamente aquellos registros de la consulta
principal que tengan igual valores a los registros de la subconsulta, este predicado
tiene la normativa para funcionar de que la subconsulta debe de devolver un nico
campo. Otra forma de emplearlo es NOT IN, de esta forma devolver los registros
de la consulta primaria que no estn en la subconsulta.
Sintaxis:
SELECT campo1, campo2,
FROM tabla1, tabla2,
WHERE campo IN/ NOT IN (SELECT.FROM)
ANY (algn) ALL (todo): Se emplean con los operadores relacionales (<,>,>=, <=,
<>,=), recuperan los registros de la consulta principal que cumplan con la condicin
de comparacin con los registros de la subconsulta secundaria, al igual que en el IN
la subconsulta debe de devolver un solo campo.
Sintaxis:
SELECT campo1, campo2,
FROM tabla1, tabla2,
WHERE campo operador_relacionalANY/ALL (SELECT.FROM)
NOTA: Si en la subconsulta principal se utiliza ms de una tabla, de deben de
indicar como estn relacionadas antes de usar el predicado.
Ejemplo 1: Mostrar el cdigo y el nombre de los proveedores que suministran ms de tres
productos.
SELECTidproveedor, nombrecompaia
FROM proveedores
WHEREidproveedoresIN (SELECTidproveedor
FROMproductos
GROUP BYidproveedor
HAVING COUNT(idproducto)>3)

Elaborado por: Ing. Yelmin Prez

Pgina 9

Esta consulta tambin se puede hacer de forma simple, es decir sin utilizar
subconsultas, y quedara:
SELECTproveedores.idproveedor, nombrecompaia
FROM proveedores, productos
WHEREproveedores.idproveedor= productos.idproveedor
GROUP BYproveedores.idproveedor, nombrecompaia
HAVING COUNT (productos.idproducto)>3
Ejemplo 2: Mostrar el cdigo y el nombre de los proveedores que suministran hasta 3
productos.
SELECTidproveedor, nombrecompaia
FROM proveedores
WHEREidproveedoresNOT IN (SELECTidproveedor
FROMproductos
GROUP BYidproveedor
HAVING COUNT(idproducto)>3)
Ejemplo 3: Obtener los nombres de los clientes que compraron frutas o verduras.
SELECT nombrecompaia
FROM clientes
WHEREidclientes = ANY (SELECTidcliente
FROM pedidos, [detalles de pedidos], productos,categoras
WHEREclients.idcliente = pedidos.idclienteAND Pedidos.idpedidos= [detalles de
pedido].idpedidoAND [detalle de pedido].idproducto=
productos.idproductoANDproductos.idcategoria=categoras.idcategoriaANDcategoras.i
dcategoria=7)
Otra forma de realizar la misma consulta seria:
SELECT DISTINCTclientes.nombrecompaia
FROM clientes, pedidos, [detalles de pedidos], productos, categoras
WHERE clients.idcliente=pedidos.idcliente AND
Pedidos.idpedidos= [detalles de pedido].idpedidoAND
[detalle de pedido].idproducto=
productos.idproductoANDproductos.idcategoria=categoras.idcategoriaANDcategoras.id
categoria=7)
Ejemplo 4: Crear una tabla que almacene el cdigo y nombre de los clientes cuya ciudad
comience por M.
Primero creamos la tabla:
CREATE TABLEcliente_ciudad(idcliente text(5) NOT NULL,nombrecontacto
text(30), PRIMARY KEY (idcliente))
Luego le agregamos los registros:
Elaborado por: Ing. Yelmin Prez

Pgina 10

INSERT INTO clientes_ciudad (idcliente, nombrecontrato)


SELECTidcliente, nombrecompaia
FROMclientes
WHEREciudad LIKE M*;

Ejercicios:
Consultar por empleado la cantidad de pedidos que ha tenido.
Mostrar el nombre del empleado que ha despachado mas pedidos.
Consultar los nombres de los clientes cuyos pedidos los han despachado los 5
empleados con mayores pedidos.
Mostrar por categora la cantidad de proveedores que suministran los artculos
correspondientes a cada categora.
Mostrar por cliente el total cancelado por todos los pedidos realizados.
Mostrar el nombre de la compaa que ha enviado mas pedidos.
Mostrar por pases la cantidad de pedidos enviados.
El almacn de la empresa XXX necesita enviar una orden de compra a los
proveedores que le suministran los artculos que se encuentran agotados. Disee la
consulta que resuelva la problemtica planteada.
Crear una tabla que contenga el cdigo y nombre de los productos que no estn
agotados.
Mostrar por categora el monto total vendido.
Mostrar la cantidad de veces que la empresa de envos Federal Shipping, le ha
llevado pedidos a clientes que sean representante de ventas.

Elaborado por: Ing. Yelmin Prez

Pgina 11

También podría gustarte