Sunteți pe pagina 1din 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 CURRENCY Longitud 1 byte 1 byte 4 byte 8 byte 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

DATETIME DOUBLE

8 byte 8 byte

SHORT LONG TEXT

2 byte 4 byte 1 byte por carcter

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 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

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

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

Elaborado por: Ing. Yelmin Prez

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

S-ar putea să vă placă și