Está en la página 1de 8

Selección de Datos: Sentencia SELECT

Para extraer datos de una base de datos se usa la sentencia SELECT. DQL es la
abreviatura del Data Query Language (lenguaje de consulta de datos) de SQL. El
único comando que pertenece a este lenguaje es el versátil comando SELECT
Este comando permite:

• Obtener datos de ciertas columnas de una tabla (proyección).


• Obtener registros (filas) de una tabla de acuerdo con ciertos criterios
(selección).
• Mezclar datos de tablas diferentes (asociación, join).
• Realizar cálculos sobre los datos.
• Agrupar datos.

Sintaxis:
SELECT [ALL | DISTINCT | DISTINCTROW]
{ * | columna1 [ , columna2 ] } [[AS] alias ]

FROM referencias_de_tablas
WHERE condiciones
[GROUP BY {nombre_col | expresion | posicion}
[ASC | DESC], ... [WITH ROLLUP]]
[HAVING condiciones]
[ORDER BY {nombre_col | expresion | posicion}
[ASC | DESC] ,...]
[LIMIT {[desplazamiento,] contador | contador OFFSET desplazamiento}]

El orden en que se tienen en cuenta las distintas cláusulas durante la ejecución y la


función de cada una de ellas es la siguiente:
- SELECT: aquí se especificar las columnas a mostrar en el resultado; para
mostrar todas las columnas se utiliza * (asterisco).
- DISTINCT: es un modificador que se utiliza tras la cláusula SELECT para que
no se muestren filas repetidas en el resultado (esto puede ocurrir sólo cuando
en la cláusula SELECT se prescinde de la clave primaria de la tabla o de parte
de ella, si es compuesta).
- FROM: especifica la tabla sobre la que se va a realizar la consulta.
- WHERE: si sólo se debe mostrar un subconjunto de las filas de la tabla, aquí se
especifica la condición que deben cumplir las filas a mostrar; esta condición
será un predicado booleano con comparaciones unidas por AND/OR.

1
- ORDER BY: se utiliza para ordenar el resultado de la consulta. La cláusula
ORDER BY, si se incluye, es siempre la última en la sentencia SELECT. La
ordenación puede ser ascendente o descendente y puede basarse en una sola
columna o en varias.
Ejemplo:
En este ejemplo, en el cual se utiliza la sentencia SELECT en su forma más básica,
obtenemos todos los registros de la tabla cliente en la base de datos que se ha
creado y de la que se han ingresado registros en la anterior guía (Guía 12).
SELECT * FROM clientes;

Al ejecutar la consulta anterior desde la línea de comandos, mysql nos devuelve


todos los registros que contiene la tabla clientes, los muestra en forma de tablas
(obsérvese también que muestra el número de columnas que se obtuvieron):

Ejemplo:
La sentencia del siguiente ejemplo muestra los datos de todos los clientes,
ordenados por el código postal, descendentemente. Además, todos los clientes de
un mismo código postal aparecerán ordenados por el nombre, ascendentemente
SELECT * FROM clientes ORDER BY cod_postal DESC, nombre;

2
1. Expresiones en SELECT y WHERE
En las cláusulas SELECT y WHERE, además de columnas, también se pueden incluir
expresiones que contengan columnas y constantes, así como funciones.

Las columnas y expresiones especificadas en la cláusula SELECT se pueden


renombrar al mostrarlas en el resultado mediante AS.
Las condiciones en el WHERE pueden contener:
Operadores de comparación:
Operador Significado
> Mayor que
< Menor que
>= Mayor o igual que
<= Menor o igual que
= Igual
<> Distinto
!= Distinto

Se pueden utilizar tanto para comparar números como para comparar textos y
fechas. En el caso de los textos, las comparaciones se hacen en orden alfabético. Sólo
que es un orden alfabético estricto. Es decir, el orden de los caracteres en la tabla de
códigos.
Ejemplo:
En este ejemplo se obtienen todos los registros de los pacientes cuya fecha de
nacimiento se posterior al primero de enero de 1980:
SELECT * FROM paciente where Fecha_Nac > '1980/01/01';

Operadores lógicos
Operador Significado
AND Devuelve verdadero si las expresiones
a su izquierda y derecha son ambas
verdaderas

3
OR Devuelve verdadero si cualquiera de
las dos expresiones a izquierda y
derecha del OR, son verdaderas
NOT Invierte la lógica de la expresión que
está a su derecha. Si era verdadera,
mediante NOT pasa a ser falso.

Ejemplo:
En este ejemplo se obtienen los registros de los pacientes cuyo año de nacimiento
sea entre 1942 y 1960
SELECT * FROM paciente where Fecha_Nac > '1940/01/01'
AND Fecha_Nac < '1960/01/01';

El resultado que nos devuelve mysql es:

Ejemplo:
Obtener los pacientes cuyo año de nacimiento sea anterior a 1945 o superior a 1980
SELECT * FROM paciente where Fecha_Nac < '1945/01/01' OR Fecha_Nac >
'1980/01/01';

Ejemplo:
En este siguiente ejemplo se obtienen los campos Inscripcion, Apellido y Direccion
de los pacientes cuyo sexo sea femenino (F):
SELECT inscripcion, apellido, direccion FROM paciente where sexo='F';
4
Operadores matemáticos
Operador Significado
+ Suma.
- Resta.
* Multiplicación.
/ División (si es entre enteros, trunca el
resultado).
% Resto de la división entera.
ˆ Potencia (3ˆ2 = 9).
|/ Raíz cuadrada (|/25 = 5).
||/ Raíz cúbica (||/27 = 3).
! Factorial (5! = 120).
!! Factorial como operador prefijo (!!5 = 120).
@ Valor absoluto.

Ejemplo
En el siguiente ejemplo, que se realiza sobre la base de datos Tienda. Se desea
obtener el código, descripción, precio y cantidad en stock de los artículos cuya
cantidad en stock sea menor que 4 en la base de datos tienda. Se debe sumar 4 a la
cantidad disponible.
SELECT cod_articulo, descripcion, precio, (stock +4) from articulos where
stock< 4;

5
El resultado que nos muestra
Mysql es:

Ejemplo:
Obtener el código, descripción, precio y precio con 5% de descuento para todos los
artículos cuya cantidad en stock sea mayor que 10. Debe renombrar las columnas al
proyectar la consulta.
SELECT cod_articulo AS 'Codigo ',
descripcion AS 'Descripcion',
precio AS 'Precio Original',
(precio * 0.95) AS 'Precio con descuento'
FROM articulos
WHERE stock > 10;

El resultado es el siguiente:

Operadores y funciones de cadenas de caracteres


Operadores Uso
Concat(cadena, cadena) Concatena dos cadenas.
cadena LIKE expr Devuelve TRUE si la cadena sigue el patrón de
expr
LENGTH(cadena) Número de caracteres que tiene la cadena.
CHAR_LENGTH(cadena) Es la función del estándar equivalente a
LENGTH.

6
POSITION(subcadena IN cadena) Posición de inicio de la subcadena en la
cadena.
SUBSTR(cadena, n [, long]) Devuelve la subcadena de la cadena que
empieza
en la posición n (long fija el tamaño máximo de
la subcadena; si no se especifica, devuelve
hasta el final).

Entre otras funciones que incluye SQL.


Ejemplo:
Encuentre y muestre toda la información de todos los miembros del personal cuyo
nombre empiece por 'H'.
SELECT * FROM plantilla WHERE UPPER(apellido) LIKE 'H%';

Ejemplo
Mostrar, para todos los hospitales, el código de hospital, el nombre completo del
hospital y su nombre abreviado de tres letras (a esto podemos llamarlo ABR)..
SELECT substr(nombre, 1, 3) AS 'ABR', cod_hospital, nombre
FROM hospital;

Ejemplo
Hacer un listado de los nombres de los pacientes y la posición de la primera letra 'A'
que aparezca en su apellido, tomando como referencia la primera letra del mismo.
Para este ejemplo se utilizará la función POSITIO
SELECT apellido, POSITION('A' in apellido) "Posicion primera letra A"
FROM paciente;

7
El resultado de la consulta es:

También podría gustarte