Guia SQL
Guia SQL
Mayo-Agosto
GUIA BASICA SQL FECHA : 07/2020
Las instrucciones DML (Data Manipulation Language – Lenguaje de Manipulación de Datos) trabajan sobre los
datos almacenados en nuestro SGBD, permitiendo consultarlos o modificarlos.
Consulta de datos
Para realizar consultas sobre las tablas de las bases de datos disponemos de la instrucción SELECT. Con
ella podemos consultar una o varias tablas. Es sin duda el comando más versátil del lenguaje SQL.
Existen muchas cláusulas asociadas a la sentencia SELECT (GROUP BY, ORDER, HAVING, UNION).
También es una de las instrucciones en la que con más frecuencia los motores de bases de datos
incorporan cláusulas adicionales al estándar, que es el que veremos aquí.
Las consultas simples, basadas en una sola tabla. Ejemplos de cómo obtener filas y columnas de una tabla
en el orden en que nos haga falta.
El resultado de una consulta SELECT nos devuelve una tabla lógica. Es decir, los resultados son una
relación de datos, que tiene filas/registros, con una serie de campos/columnas. Igual que cualquier tabla
de la base de datos. Sin embargo esta tabla está en memoria mientras la utilicemos, y luego se descarta.
Cada vez que ejecutamos la consulta se vuelve a calcular el resultado.
La sintaxis básica de una consulta SELECT es la siguiente (los valores opcionales van entre corchetes):
SELECT Permite seleccionar las columnas que se van a mostrar y en el orden en que lo van a hacer.
Simplemente es la instrucción que la base de datos interpreta como que vamos a solicitar información.
ALL / DISTINCT
ALL es el valor predeterminado, especifica que el conjunto de resultados puede incluir filas
duplicadas. Por regla general nunca se utiliza.
DISTINCT especifica que el conjunto de resultados sólo puede incluir filas únicas. Es decir, si al
realizar una consulta hay registros exactamente iguales que aparecen más de una vez, éstos se
eliminan. Muy útil en muchas ocasiones.
NOMBRES DE CAMPOS Se debe especificar una lista de nombres de campos de la tabla que nos interesan
y que por tanto queremos devolver. Normalmente habrá más de uno, en cuyo caso separamos cada
nombre de los demás mediante comas.
Se puede anteponer el nombre de la tabla al nombre de las columnas, utilizando el formato
Tabla.Columna. Además de nombres de columnas, en esta lista se pueden poner constantes, expresiones
aritméticas, y funciones, para obtener campos calculados de manera dinámica.
Si queremos que nos devuelva todos los campos de la tabla utilizamos el comodín “*” (asterisco).
Los nombres indicados deben coincidir exactamente con los nombre de los campos de la tabla, pero si
queremos que en nuestra tabla lógica de resultados tengan un nombre diferente podemos utilizar:
FROM Esta cláusula permite indicar las tablas o vistas de las cuales vamos a obtener la información. De
momento veremos ejemplos para obtener información de una sola tabla.
WHERE Especifica la condición de filtro de las filas devueltas. Se utiliza cuando no se desea que se
devuelvan todas las filas de una tabla, sino sólo las que cumplen ciertas condiciones. Lo habitual es
utilizar esta cláusula en la mayoría de las consultas.
CONDICIONES Son expresiones lógicas a comprobar para la condición de filtro, que tras su resolución
devuelven para cada fila TRUE o FALSE, en función de que se cumplan o no. Se puede utilizar cualquier
expresión lógica y en ella utilizar diversos operadores como:
(Mayor)
>= (Mayor o igual)
< (Menor)
<= (Menor o igual)
= (Igual) o != (Distinto)
IS [NOT] NULL (para comprobar si el valor de una columna es o no es nula, es decir, si contiene
o no contiene algún valor)
Se dice que una columna de una fila es NULL si está completamente vacía. Hay que tener en cuenta que si
se ha introducido cualquier dato, incluso en un campo alfanumérico si se introduce una cadena en blanco
o un cero en un campo numérico, deja de ser NULL.
LIKE: para la comparación de un modelo. Para ello utiliza los caracteres comodín especial: “%” y
“_”. Con el primero indicamos que en su lugar puede ir cualquier cadena de caracteres, y con el
segundo que puede ir cualquier carácter individual (un solo carácter). Con la combinación de estos
caracteres podremos obtener múltiples patrones de búsqueda. Por ejemplo:
Ventas de los Clientes 10, 15, 30 y 75: CodCliente IN(10, 15, 30, 75)
Por supuesto es posible combinar varias condiciones simples de los operadores anteriores utilizando los
operadores lógicos OR, AND y NOT, así como el uso de paréntesis para controlar la prioridad de los
operadores (como en matemáticas). Por ejemplo: … (Cliente = 100 AND Provincia = 30) OR Ventas > 1000
… que sería para los clientes de las provincias 100 y 30 o cualquier cliente cuyas ventas superen 1000.
ORDER BY Define el orden de las filas del conjunto de resultados. Se especifica el campo o campos
(separados por comas) por los cuales queremos ordenar los resultados.
ASC / DESC ASC es el valor predeterminado, especifica que la columna indicad en la cláusula ORDER BY
se ordenará de forma ascendente, o sea, de menor a mayor. Si por el contrario se especifica DESC se
ordenará de forma descendente (de mayor a menor).
Por ejemplo, para ordenar los resultados de forma ascendente por ciudad, y los que sean de la misma
ciudad de forma descendente por nombre, utilizaríamos esta cláusula de ordenación:
NOTA: Aunque al principio si aún no se está habituado, pueda dar la impresión de que se ordena por
ambas columnas en orden descendente. Si es eso lo que queremos deberemos escribir … ORDER BY
Ciudad DESC, Nombre DESC …
- Mostrar los clientes que no sabemos a qué región pertenecen (o sea, que no tienen asociada ninguna
región) :
- Mostrar las distintas regiones de las que tenemos algún cliente, accediendo sólo a la tabla de clientes:
- Mostrar los clientes que pertenecen a las regiones CA, MT o WA, ordenados por región
ascendentemente y por nombre descendentemente.
- Mostrar las Ventas del producto 65 con cantidades entre 5 y 10, o que no tengan descuento:
SELECT * FROM [Order Details] WHERE (ProductID = 65 AND Quantity BETWEEN 5 AND 10)
OR Discount = 0
Nota: En SQL Server, para utilizar nombres de objetos con caracteres especiales se deben poner entre
corchetes. Por ejemplo en la consulta anterior [Order Details] se escribe entre corchetes porque lleva un
espacio en blanco en su nombre. En otros SGBDR se utilizan comillas dobles (Oracle, por ejemplo: “Order
Details”) y en otros se usan comillas simples (por ejemplo en MySQL).
FUNCIONES SQL
SQL tiene funciones predefinidas para realizar ciertos cálculos con un mayor rendimiento.
FUNCIONES DESCRIPCION
AVG Devuelve el valor medio de una columna.
COUNT Devuelve el número de filas de la consulta.
FIRST Devuelve el primer valor de la consulta.
LAST Devuelve el último valor de la consulta.
MAX Devuelve el mayor valor de una columna.
MIN Devuelve el menor valor de una columna.
SUM Devuelve la suma de los valores de una columna.
GROUP BY Agrupar filas con el mismo valor de una columna.
HAVING Incluir condiciones con funciones SQL.
UCASE Convierte un valor a mayúsculas.
LCASE Convierte un valor a minúsculas.
MID Extrae caracteres de un campo de texto.
LEN Devuelve la longitud de un campo de texto.
ROUND Redondea un campo numérico a un número de decimales especificado.
NOW Devuelve la fecha y hora actuales del sistema.
FORMAT Formatea un campo según se quiera mostrar.
SUM O SUMA: La función SUM permite obtener la suma total de los valores de una columna de tipo
numérico.