Documentos de Académico
Documentos de Profesional
Documentos de Cultura
El Lenguaje SQL
El Lenguaje SQL
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.
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
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
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
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
Pgina 5
LIKE
In y Not In
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.
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.
Pgina 7
Pgina 8
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
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.
Pgina 11