SQL (Structured Query Language) es un lenguaje declarativo de comandos que se utiliza para crear y gestionar bases de datos relacionales. Permite definir la estructura de las bases de datos, tablas, registros (datos), consultas y más. En SQL, se especifica la acción a realizar mediante verbos que indican la operación deseada.
En este documento, se resumen las características más utilizadas de SQL.
Existe un buen tutorial o manual gratuito de SQL, más extenso que este documento, en la siguiente web:
http://www.desarrolloweb.com/manuales/9/
Debido a la diversidad de lenguajes y de bases de datos existentes, la comunicación entre ellos sería realmente complicada de no ser por la existencia de estándares que permiten realizar las operaciones básicas de una forma universal.
De eso se trata el Structured Query Language, un lenguaje estándar de comunicación con bases de datos. Hablamos, por tanto, de un lenguaje normalizado que permite trabajar con cualquier tipo de lenguaje de programación de aplicaciones (ASP o PHP, C++, Java, etc.) en combinación con cualquier tipo de base de datos (MS Access, SQL Server, MySQL, etc.).
El hecho de que sea estándar no quiere decir que sea idéntico para cada base de datos. En efecto, determinadas bases de datos implementan funciones específicas que no tienen necesariamente que funcionar en otras.
Aparte de esta universalidad, SQL posee otras dos características muy apreciadas. Por una parte, presenta una potencia y versatilidad notables que contrastan, por otra, con su facilidad de aprendizaje.
Existen dos tipos de comandos en SQL: los de definición de datos y los de manipulación de datos. Los comandos de definición permiten crear una base de datos, crear tablas, modificar su estructura de campos y eliminar tablas. Los comandos de manipulación de datos permiten gestionar los datos, pero no la estructura de las tablas; permiten insertar datos en una tabla ya existente, modificarlos y eliminarlos.
Comandos para Gestionar los Datos de una Tabla
Lectura de Datos de una Tabla
Se usa el comando SELECT, que significa “seleccionar”, seguido de la lista de campos de la tabla que deseamos leer, más la palabra FROM, que significa “desde”, seguido del nombre de la tabla. Opcionalmente, se indican condiciones de búsqueda en la cláusula WHERE, que significa “donde”, y de ordenación de campos devueltos en la cláusula ORDER BY, que significa “ordenar por”.
Sintaxis:
SELECT campo1, campo2, ...
FROM Tabla
[WHERE Campo2 = “valor”]
[ORDER BY Campo1 ASC;]
Las cláusulas WHERE y ORDER BY son opcionales e independientes, por esto se encierran por separado entre corchetes [].
Ejemplo: Para leer todos los clientes de un código postal ordenados por nombre y, en segundo lugar, por apellidos:
SELECT Nombre, Apellidos
FROM Clientes
WHERE CPostal = “33201”
ORDER BY Nombre ASC, Apellidos ASC;
La ordenación por apellidos solo se efectúa cuando hay valores repetidos de Nombre; es entonces cuando se ordena ascendentemente por Apellidos.
Algunos ejemplos de condiciones:
- CampoAlfaNum = “valor”
- (También se puede usar >, >=, <, <=, <>, !=)
- CampoNum = numero
- (También se puede usar >, >=, <, <=, <>, !=)
- CampoX IS NULL
Esta última devolverá los registros en los que el CampoX tiene valor nulo (vacío). Importante: no es lo mismo la cadena vacía “” que el valor NULL. NULL quiere decir que no tiene valor, mientras que la cadena vacía ya es un tipo de valor. Si queremos incluir una selección con “” y NULL, debemos escribir:
WHERE campoX IS NULL OR campoX = “”
Al seleccionar datos de una tabla, se pueden efectuar operaciones matemáticas sobre ellos: +, -, *, /, etc. Por ejemplo:
SELECT Nombre, Precio * 166.386
FROM Articulos;
Devuelve el nombre de cada artículo y su precio expresado en pesetas. En SQL, la coma decimal debemos escribirla con el carácter “.” (por lo menos en Access).
A veces, interesa buscar un texto que comience por una palabra, que finalice o que contenga una palabra. Esto podemos hacerlo usando el operador LIKE y los caracteres comodín. Por ejemplo:
Columna LIKE ‘Gij*’ / Columna LIKE ‘Gij?n’
Columna LIKE ‘Gij%’ / Columna LIKE ‘Gij_n’
Columna STARTING WITH(‘Gij’)
- El carácter comodín * ó % significa: cualquier número de caracteres.
- El carácter comodín ? ó _ significa: cualquier carácter, pero solo uno.
- El patrón ‘Gij*’ es cierto para Gijón, Gijona, etc.
- Mientras que el patrón ‘Gij?n’ sería cierto para Gijón, Gijon, Gijan, etc. El ? sustituye únicamente a un único carácter cualquiera.
A veces, interesa eliminar los valores repetidos en la consulta; esto puede hacerse aplicando el modificador DISTINCT. Ejemplo:
SELECT DISTINCT(Nombre) FROM Clientes WHERE Oficina=4567;
Devuelve todos los nombres distintos de los clientes de la oficina 4567, es decir, elimina los nombres duplicados que solo se muestran una sola vez.
También se pueden usar funciones de agrupamiento (o acumulación) sobre los campos que se leen, por ejemplo:
- MAX(precio): devuelve el precio máximo.
- MIN(precio): devuelve el precio mínimo.
- AVG(precio): devuelve el precio medio (AVERAGE es promedio en inglés).
- COUNT(campo) o COUNT(*): cuenta cuántos registros devuelve la SELECT.
- SUM(): realiza la suma de los valores numéricos del campo.
Estas cinco funciones se llaman de agrupamiento o acumulación, pues devuelven un solo valor numérico a partir de un conjunto de números sobre los que se aplican. Ejemplo:
SELECT AVG(nota)
FROM Notas
WHERE curso = “SMR1” AND modulo = “IAO” AND evaluacion = “2”