Está en la página 1de 10

Manual de Visual Basic 6.

4.- Structured Query Languge (SQL)


Las aplicaciones en red son cada da ms numerosas y verstiles. En muchos casos, el esquema bsico de operacin es una serie de scripts que rigen el comportamiento de una base de datos. Debido a la diversidad de lenguajes y de bases de datos existentes, la manera de comunicar entre unos y otras sera realmente complicada a gestionar de no ser por la existencia de estndares que nos permiten el realizar las operaciones bsicas de una forma universal. Es de eso de lo que trata el Structured Query Language que no es ms que un lenguaje estndar de comunicacin con bases de datos. Hablamos por tanto de un lenguaje normalizado que nos permite trabajar con cualquier tipo de lenguaje (ASP o PHP) en combinacin con cualquier tipo de base de datos (MS Access, SQL Server, MySQL...). El hecho de que sea estndar no quiere decir que sea idntico para cada base de datos. En efecto, determinadas bases de datos implementan funciones especficas que no tienen necesariamente que funcionar en otras. Aparte de esta universalidad, el SQL posee otras dos caractersticas muy preciadas. Por una parte, presenta una potencia y versatilidad notables que contrasta, por otra, con su accesibilidad de aprendizaje. SELECT (Seleccin de registros) La seleccin total o parcial de una tabla se lleva a cabo mediante la instruccin Select. En dicha seleccin hay que especificar: -Los campos que queremos seleccionar -La tabla en la que hacemos la seleccin Por ejemplo una seleccin del nombre y direccin de los clientes con una instruccin de este tipo: Select nombre, direccin From clientes Si quisisemos seleccionar todos los campos, es decir, toda la tabla, podramos utilizar el comodn * del siguiente modo: Select * From clientes

M. en C. Martha Elizabeth Evangelista Salazar

Manual de Visual Basic 6.0

Resulta tambin muy til el filtrar los registros mediante condiciones que vienen expresadas despus de la clusula Where. Si quisisemos mostrar los clientes de una determinada ciudad usaramos una expresin como esta: Select * From clientes Where poblacion = 'Colima' Adems, podramos ordenar los resultados en funcin de uno o varios de sus campos. Para este ultimo ejemplo los podramos ordenar por nombre as: Select * From clientes Where poblacion = Colima Order By nombre Teniendo en cuenta que puede haber ms de un cliente con el mismo nombre, podramos dar un segundo criterio que podra ser el apellido: Select * From clientes Where poblacin = 'Madrid' Order By nombre, apellido Si invirtisemos el orden nombre,apellido por apellido, nombre , el resultado sera distinto. Tendramos los clientes ordenados por apellido y aquellos que tuviesen apellidos idnticos se subclasificaran por el nombre. Es posible tambin clasificar por orden inverso. Si por ejemplo quisisemos ver nuestros clientes por orden de pedidos realizados teniendo a los mayores en primer lugar escribiramos algo as: Select * From clientes Order By pedidos Desc Una opcin interesante es la de efectuar selecciones sin coincidencia. Si por ejemplo buscsemos el saber en qu ciudades se encuentran nuestros clientes sin necesidad de que para ello aparezca varias veces la misma ciudad usaramos una sentencia de esta clase: Select Distinct poblacion From clientes Order By poblacion As evitaramos ver repetido el nombre de la poblacin tantas veces como clientes tengamos en esa poblacin. INSERT (Agregar un nuevo registro) Los registros pueden ser introducidos a partir de sentencias que emplean la instruccin Insert.

M. en C. Martha Elizabeth Evangelista Salazar

Manual de Visual Basic 6.0

La sintaxis utilizada es la siguiente: Insert Into nombre_tabla (nombre_campo1, (valor_campo1,valor_campo2...) nombre_campo2,...) Values

Un ejemplo sencillo es la introduccin de un nuevo cliente lo cual se hara con una instruccin de este tipo: Insert Into clientes (nombre, apellidos, direccion, poblacin, codigopostal, email, pedidos) Values ('Pablo', 'Galindo', 'Av. Universidad', 'Colima', '123456', 'correo@ucol.mx', 30) Como puede verse, los campos no numricos o booleanos van delimitados por apostrofes: '. DELETE (Borrar un registro) Para borrar un registro nos servimos de la instruccin Delete. En este caso debemos especificar cual o cuales son los registros que queremos borrar. Es por ello necesario establecer una seleccin que se llevara a cabo mediante la clusula Where. La sintaxis utilizada para efectuar estas supresiones es : Delete From nombre_tabla Where condiciones_de_seleccin Si queremos por ejemplo borrar todos los registros de los clientes que se llamen Pablo lo haramos del siguiente modo: Delete From clientes Where nombre='Pablo' Hay que tener cuidado con esta instruccin ya que si no especificamos una condicin con Where, lo que estamos haciendo es borrar toda la tabla: Delete From clientes UPDATE (Actualizar un registro) Update es la instruccin que nos sirve para modificar nuestros registros. Como para el caso de Delete, necesitamos especificar por medio de Where cules son los registros en los que queremos hacer efectivas nuestras modificaciones. Adems,

M. en C. Martha Elizabeth Evangelista Salazar

Manual de Visual Basic 6.0

obviamente, tendremos que especificar cules son los nuevos valores de los campos que deseamos actualizar. La sintaxis es de este tipo: Update nombre_tabla Set nombre_campo1 = valor_campo1, nombre_campo2= valor_campo2,... Where condiciones_de_seleccin Un ejemplo aplicado: Update clientes Set nombre=Pablo Where nombre='Pepe' Mediante esta sentencia cambiamos el nombre Pablo por el de Pepe en todos los registros cuyo nombre sea Pablo. Aqu tambin hay que ser cuidadoso de no olvidarse de usar Where, de lo contrario, modificaramos todos los registros de nuestra tabla. INNER JOIN (Consultas SQL de Unin Internas) Las vinculaciones entre tablas se realizan mediante la clusula INNER que combina registros de dos tablas siempre que haya concordancia de valores en un campo comn. Su sintaxis es: SELECT campos FROM tb1 INNER JOIN tb2 ON tb1.campo1 comp tb2.campo2 El ejemplo siguiente muestra cmo podra combinar las tablas Categoras y Productos basndose en el campo IDCategoria: SELECT NombreCategoria, NombreProducto FROM Categorias INNER JOIN Productos ON Categorias.IDCategoria = Productos.IDCategoria En el ejemplo anterior, IDCategoria es el campo combinado, pero no est incluido en la salida de la consulta ya que no est incluido en la instruccin SELECT. Para incluir el campo combinado, incluir el nombre del campo en la instruccin SELECT, en este caso, Categorias.IDCategoria. Tambin se pueden enlazar varias clusulas ON en una instruccin JOIN, utilizando la sintaxis siguiente:

M. en C. Martha Elizabeth Evangelista Salazar

Manual de Visual Basic 6.0

SELECT campos FROM tabla1 INNER JOIN tabla2 ON (tb1.campo1 comp tb2.campo1 AND ON tb1.campo2 comp tb2.campo2) OR ON (tb1.campo3 comp tb2.campo3) Tambin puede anidar instrucciones JOIN utilizando la siguiente sintaxis: SELECT campos FROM tb1 INNER JOIN (tb2 INNER JOIN [( ]tb3 [INNER JOIN [( ]tablax [INNER JOIN ...)] ON tb3.campo3 comp tbx.campox)] ON tb2.campo2 comp tb3.campo3) ON tb1.campo1 comp tb2.campo2 OTRAS SENTENCIAS Adems de los criterios hasta ahora explicados para realizar las consultas en tablas, SQL permite tambin aplicar un conjunto de funciones predefinidas. Estas funciones, aunque bsicas, pueden ayudarnos en algunos momentos a expresar nuestra seleccin de una manera ms simple sin tener que recurrir a operaciones adicionales por parte del script que estemos ejecutando. Algunas de estas funciones son representadas en la tabla siguiente: Funcin Sum(campo) Avg(Campo) Count(*) Descripcin Calcula la suma de los registros del campo especificado Calcula la media de los registros del campo especificado Nos proporciona el valor del numero de registros que han sido seleccionados Max(Campo) Nos indica cual es el valor mximo del campo Min(Campo) Nos indica cual es el valor mnimo del campo Dado que el campo de la funcin no existe en la base de datos, sino que lo estamos generando virtualmente, esto puede crear inconvenientes cuando estamos trabajando con nuestros scripts a la hora de tratar su valor y su nombre de campo. Es por ello que el valor de la funcin ha de ser recuperada a partir de un alias que nosotros especificaremos en la sentencia SQL a partir de la instruccin AS. La cosa podra quedar as: Select Sum(total) As suma_pedidos From pedidos A partir de esta sentencia calculamos la suma de los valores de todos los pedidos realizados y almacenamos ese valor en un campo virtual llamado suma_pedidos que podr ser utilizado como cualquier otro campo por nuestras paginas dinmicas.

M. en C. Martha Elizabeth Evangelista Salazar

Manual de Visual Basic 6.0

Por supuesto, todo lo visto hasta ahora puede ser aplicado en este tipo de funciones de modo que, por ejemplo, podemos establecer condiciones con la clusula Where construyendo sentencias como esta: Select Sum(cantidad) as suma_articulos From pedidos Where id_articulo=6 Esto nos proporcionara la cantidad de ejemplares de un determinado libro que han sido vendidos. Otra propiedad interesante de estas funciones es que permiten realizar operaciones con varios campos dentro de un mismo parntesis: Select Avg(total/cantidad) From pedidos Esta sentencia da como resultado el precio medio al que se estn vendiendo los libros. Este resultado no tiene por qu coincidir con el del precio medio de los libros presentes en el inventario, ya que, puede ser que la gente tenga tendencia a comprar los libros caros o los baratos: Select Avg(precio) as precio_venta From articulos Una clusula interesante en el uso de funciones es Group By. Esta clusula nos permite agrupar registros a los cuales vamos a aplicar la funcin. Podemos por ejemplo calcular el dinero gastado por cada cliente: Select id_cliente, Sum(total) as suma_pedidos From pedidos Group By id_cliente O saber el numero de pedidos que han realizado: Select id_cliente, Count(*) as numero_pedidos From pedidos Group By id_cliente

BASES DE DATOS Un Base de Datos (BD), es un conjunto de informacin relacionada que se encuentra agrupada estructurada. Visual Basic nos permite trabajar directamente con distintas bases de datos (ACCESS, dBaseIII, dBaseIV , dBase 5, Excel3, Excel4, Excel5, Excel7, FoxPro2.x, Foxpro3.0, LotusWK1, LotusWK3, LotusWk4, Paradox3.x, Paradox4.x y Paradox5.x Esto lo logra mediante el Motor de Bases de Datos Jet (un conjunto de programas

M. en C. Martha Elizabeth Evangelista Salazar

Manual de Visual Basic 6.0

que se cargan en el disco duro cuando instala Access o Visual Basic) , herramienta de Microsoft para administrar los datos en bases de datos Access. Esta forma de acceder a las bases de datos se le llama Acceso mediante objetos DAO. Lo de DAO viene de Data Access Objet. Y es la forma ms sencilla y rpida de acceder a una base de datos Access instalada en el propio disco duro o en un disco de red de rea local rpida. (Lo de facilidad de acceso a una base de datos Access viene implcito en la poltica de Microsoft de facilitar la compatibilidad entre sus aplicaciones) ODBC (Open Data Base Conectivity) es un mecanismo de conexin entre bases de datos abiertas. Lo de abiertas significa que tienen esa interface de acceso comn, interface a travs de la cual puede acceder a sus datos cualquier aplicacin. Esta interface utiliza el lenguaje SQL, y es necesario establecer una conexin ODBC en Windows. ADO. La gran ventaja de ADO es que en aquellas aplicaciones que leen una base situada en un servidor, ocupa menos la red de rea local, ya que trabaja una aplicacin Cliente Servidor.

M. en C. Martha Elizabeth Evangelista Salazar

Manual de Visual Basic 6.0

4.1 EL CONTROL DATA


Para acceder a estas Bases de Datos basta con introducir un control Data en el formulario, y fijarle las propiedades apropiadas para que trabaje sobre uno u otro tipo de base de datos. El control Data nos permite acceder de una forma sencilla a cualquier base de datos de estos tipos, y sirve de enlace entre la base de datos y los controles que son habilitados para presentar los datos de esa base. Utiliza el motor de bases de datos Jet para el acceso a los datos. El control Data puede tomarse directamente de la caja de herramientas. Este est siempre en la caja de herramientas. En el formulario tiene el aspecto de una barra deslizante:

El control Data se utiliza con el motor de base de datos Microsoft Jet para acceder a base de datos de diferentes formatos como por ejemplo: Microsoft Access, Dbase, Excel, FoxPro, Lotus y Paradox, aunque en los ejemplos solo se utilizar Microsoft Access como base de datos. El control Data permite trabajar con controles enlazados, por ejemplo con controles Label, TextBox, ComboBox, controles Image etc.. para presentar los datos. Esto quiere decir que al colocar un control Data y enlazarlo a una base de datos y luego enlazar dichos controles con el control Data, los cambios que se realicen en los controles enlazados se reflejarn en la base de datos. Para enlazar la base de datos con un control Data ubicado en el formulario, se utiliza la propiedad DataBaseName y Connect. En la propiedad Connect se especifica el tipo de base de datos, por ejemplo: Access. Luego, ya se puede seleccionar la base de datos. Para indicar con que tabla se encontrar unida al control se utiliza la propiedad RecordSource. Nota: Antes de especificar la tabla en la propiedad RecordSource hay que indicar la propiedad DataBaseName y Connect, de lo contrario se producir un error " Debe rellenar las propiedades DataBaseName y Connect para llevar a cabo la operacin" Ya tenemos enlazado el control Data a la base de datos. Falta ahora enlazar una

M. en C. Martha Elizabeth Evangelista Salazar

Manual de Visual Basic 6.0

etiqueta y un TextBox al control Data para tener el enlace completo. Eso es an ms sencillo. Si desplegamos las propiedades del TextBox por ejemplo, veremos que tiene unas propiedades que cuando lo estudiamos, las habamos pasado un poco por alto: DataSource y DataField. En la figura puede ver que la propiedad DataSource puede desplegarse, mostrando en este caso el nombre del nico control Data que tenemos en el formulario: Data1 Si tuvisemos mas controles Data, apareceran los nombres de todos ellos. Se elige uno.

A continuacin debemos sealarle qu campo queremos que nos presente. Podemos desplegar la lista, donde podemos ver los campos de la tabla elegida para la propiedad RecordSource del control Data. Elegimos uno y ejecutamos la aplicacin.

OPERACIONES CON REGISTROS


MoveFirst, MovePrevious, MoveNext, MoveLast AddNew Update Delete CancelUpdate Data1.Recordset.FindFirst ("CAMPO = '" & Variable & "'")

M. en C. Martha Elizabeth Evangelista Salazar

Manual de Visual Basic 6.0

PRACTICA 5.- El control DATA Realizar una agenda de alumnos con las funciones bsicas de un sistema (nuevo, modificar, eliminar, modificar, buscar). Adems incluir las funciones con cadenas y mensajes con salida formateada.

M. en C. Martha Elizabeth Evangelista Salazar

También podría gustarte