Está usted en Indice > Construcción > Lenguajes > SQL > Lecciones y Paso a Paso > SQL en Breve
Construcción
Maletín
Utilidades
Cursos
Promoción
Rentabilidad
Zona Novatos
Foros
Acceso a tu cuenta

SQL en Breve

SQL en Breve

Esta es una breve introducción al lenguaje SQL. Este lenguaje es bastante más amplio, permitiendo realizar cualquier tipo de interacción con una base de datos. Con esta pequeña referencia tan solo queremos llegar a ver las acciones más usuales en el entorno del desarrollo web general.

El lenguaje SQL (Structured Query Language) es una de las pocas cosas dentro del mundo de la informática que se puede decir que tiene historia. Desarrollado por IBM, provee una manera sencilla de comunicarse con el motor de una base de datos desde hace muchos años. Es casi un estandar, de manera que funciona igual independientemente del tipo de base con la que tratamos. Siempre que la base soporte SQL.

Su formato es bastante sencillo, casi una traducción al inglés de lo que queremos realizar. Se basa en sentencias que vamos a llamar consultas. Cada consulta comienza con una palabra clave que indica lo que queremos de la base. Las sentencias más usuales son:

- SELECT: Para recuperar datos.
- UPDATE: Para modificar los datos de la base.
- DELETE: Para borrar registros.
- INSERT: Para añadir registros.

No son las únicas. Podemos modificar la estructura de una tabla con ALTER o incluso crear tablas con CREATE. Todas ellas se aplican a una o más tablas de la base, y a todas ellas se les especifica los criterios con los que debe realizar su acción. Un esquema general de la claúsula SELECT podría ser:

SELECT campos FROM tablas WHERE criterios ORDER BY tipo_de_orden

Y una típica sentencia podría ser:

SELECT nombre, apellido FROM empleados WHERE edad>25 AND edad<45 ORDER BY apellido DESC

Los criterios y el tipo de orden y cualquier otra precisión que queramos hacer son opcionales. Una sentencia como la que sigue devuleve el contenido de una tabla completa.

SELECT * FROM tabla

Vamos a ver un poco más de cerca cada tipo de claúsula.

SELECT

Una sentencia SELECT devuelve una tabla conteniendo los campos de los registros de la/s tabla/s especificada/s que cumplan con los criterios. Cada lenguaje de programación recupera esa tabla a su manera. En CF ya sabemos que se recupera en una consulta.

En su forma más sencilla hemos visto un esquema general un poco más arriba. En la zona campos pondremos los campos que van a formar la tabla resultante. Éstos deben ser campos de las tablas sobre las que vamos a hacer la consulta. Para especificar que se quieren incluir todos los campos de la/s tabla/s se emplea el asterísco '*'. El caso más sencillo es hacer una consulta sobre una sola tabla. Más complicado es consultar a más de una tabla en las que haya campos que se llamen igual. Vamos a suponer dos tablas de un foro. Una tabla 'temas' que contiene los campos 'nombre,fecha,foro y titulo', y la tabla 'foros' que tiene tres campos 'nombre,codigo y descripción'. Queremos recuperar una tabla que contenga todos los temas de un determinado foro, con el nombre del foro y su descripción. Ambas tablas están relacionadas por el campo 'foro' y 'codigo'. En cada tema guardamos en el campo foro el código del foro al que pertenece.

Realizaremos una consulta que abarque las dos tablas. Dado que hay nombres que coinciden, para poder distinguir cuál es cuál, indicaremos la tabla a la que pertenece, por ejemplo temas.nombre o foros.nombre. En la tabla resultante uno de ellos no podrá llamarse nombre, para ello emplearemos un alias para ese campo. La consulta sería en CF, habiendo guardado en la variable 'cual' el código del foro a recuperar...

SELECT temas.nombre, temas.fecha, temas título, foros.nombre ALIAS fonombre, foros.descripción FROM temas,foros WHERE temas.foro=#cual# AND foro.codigo=temas.foro

He marcado en negrita el criterio que se encarga de relacionar las tablas. Una vez ejecutada la consulta obtenemos una tabla con los 5 campos solicitados: 'nombre,fecha,titulo,fonombre y descripción'.

La zona de criterios es muy personalizable. Disponemos de muchas opciones, giros y funciones para aplicar en esta zona a fin de poder recuperar exactamente lo que necesitamos. Hemos visto los operadores más sencillos: igual, mayor y menor. SQL dispone de 'predicados' más elaborados. Por ejemplo IN. El predicado IN nos permite seleccionar campos segun estén o no en una lista dada. Por ejemplo, para obtener todos los clientes que vieven en Barcelona, Madrid, Bilbao o Burgos empleamos IN de esta manera:

SELECT * FROM clientes WHERE ciudad IN ("BArcelona","Bilbao","Madrid","burgos")

Esta sentencia devuelve los clientes que residen en una de las ciudades especificadas en la lista. Tambien tenemos el predicado LIKE. LIKE nos permite emplear ciertos caracteres especiales (wildcards) para buscar cadenas poco concretas. Estos wildcards son

- _ (El subguión): Su significado es cualquier caracter, pero uno solo. LIKE "as_" significa cualquier campo que empieze por as y tenga tres letras. LIKE "a_pe_o" encajaría para buscar palabras como aspero o alpelo. Las letras que caen en el lugar del '_' pueden ser cualquier caracter, pero solo uno. allpelo no encajaría ya que entre a y pe hay dos caracteres, no uno.
- % (Tanto por ciento): Su significado es como el asterísco del sistema operativo. Sustituye a cualquier caracter y en cualquier cantidad. LIKE "a%" significa cualquier cadena que empieze por a. Ojo, porque 'Alicia' no encaja ya que empieza por "A" y no por "a".

Los Wilcards se pueden mezclar a tu gusto para crear el patrón que necesites. Vamos a buscar cualquier registro cuyo campo 'descripcion' contenga la palabra 'panda' o 'Panda':

SELECT * FROM tabla WHERE descripcion LIKE "% panda %" OR descripcion LIKE "% Panda %"

Puedes emplear todo lo anterior en la misma sentecia, construyendo una solicitud a medida todo lo complicada que necesites. Hay más predicados y opciones para los vistos que puedes emplear si éstos se te quedan cortos.

Puedes emplear el modificador ORDER BY para recibir la tabla ya ordenada segun un campo determinado. Admite dos opciones 'ASC' y 'DESC' que se refieren a ordenar ascendentemente o descendentemente. La ordenación se hace por patrones de texto: Los números primero, el 100 antes del 2, las mayúsculas antes de las minúsculas.

UPDATE

Esta sentencia se emplea para modificar el contenido de los campos de una tabla de la base. Su sintaxis general es:

UPDATE tabla SET campo=nuevo_valor WHERE criterios

El resultado es la asignación del nuevo valor al campo especificado de los registros que sumplan con los criterios. Un pequeño ejemplo. Vamos a subir un 10% el precio de todos los juguetes...

UPDATE productos SET precio=precio*1.1 WHERE seccion="Juguetes"

Todo lo dicho para los criterios de la claúsula SELECT es aplicable a ésta.

DELETE

Empleada para borrar registros de una base. Hay que puntualizar que, salvo que emplees CFTRANSACTION, una vez borrados son irrecuperables. Su sintaxis es:

DELETE FROM tabla WHERE criterios

Puedes hacer un SELECT con los mismos criterios antes de borrar para ver qué registros vas a borrar. Para quitar de la base todos los afiliados que se han dado de baja...

DELETE FROM afiliados WHERE baja=1

En la zona de criterios puedes emplear todos los que hemos visto para el SELECT.

INSERT

Con esta claúsula podemos añadir registros a una tabla de nuestra base. Debemos especificar qué campos vamos a llenar del nuevo registro creado ya que no estamos obligados a llenarlos todos. Los que no reciban valor, obtendrán el valor por defecto del campo, si lo tiene, y si no quedarán vacíos. Su sintaxis:

INSERT INTO tabla (campo1,campo2,campo3,campo4) VALUES (valor1,valor2,valor3,valor4)

Los valores son asignados por orden, es decir, al campo1 se le asigna el valor1, al campo2 el valor2 etc. Los valores deben ser del mismo tipo que el campo que los va a recibir. Un ejemplillo. Para añadir un nuevo contacto a nuestra agenda...

INSERT INTO amigos (nombre,apellido,email,edad) VALUES ("Pepe","Ruiz","pepe@pepemail.com",25)

Autor: Kelpie
http://www.talleresdelweb.com/cf/



Usuarios que han visto este tema también han visto...

- Borrar un registro SQL
- Bases de Datos Externas en SQL
- Buscar registros duplicados en SQL
- Supresión y modificación de tablas con SQL
- Cómo manejar fechas en SQL Server


Versión imprimible - Versión imprimible de este documento
Enviar e-mail - Enviar por e-mail este documento
Publicidad

Información legal | Política de Privacidad | Contacte con nosotros

Otro proyecto de Factoría de Internet. Copyright© 2003-2008 Factoría de Internet S.L.. Todos los derechos reservados.


Página generada el 22-11-2008 a las 16:44:52