Objetivos
• Enumerar las capacidades de las sentencias SELECT de SQL.
• Ejecutar una sentencia SELECT básica.
NOTA: Usamos como ejemplo la base de datos: ORCL, la cual viene por defecto en cualquier versión de ORACLE.
Sintaxis
SELECT *|{[DISTINCT] column|expression [alias],...}
FROM table;
En la Sintaxis
- SELECT: Selecciona la lista de columnas a consultar.
- *: Se usa para que en la consulta se muestren todos los campos/columnas de la tabla.
- DISTINCT : suprime los duplicados(omite registros duplicado).
- column|expression: Columnas o expresiones a mostrar en la consulta.
- alias: Nombre personalizado que se le quiere asignar al campo o columna.
- FROM: Especifica la o las tablas que contienen las columnas a mostrar en la consulta.
- table: Es la tabla que se esta consultando.
- |: Es equivalente a ‘o‘, eje: esto o aquello = esto | aquello.
- {}: Agrupa objetos similares.
- []: Todo lo que esta entre corchetes es Opcional.
SELECT *
FROM departments;
El anterior ejemplo muestra todos los campos o columnas de la tabla en cuestión(departments).
SELECT department_id,
department_name,
manager_id,
location_id
FROM departments;
Este Query muestra el mismo resultado que el anterior, la diferencia es que aquí yo enumeré todas las columnas de la tabla.
SELECT department_id,
department_name
FROM departments;
Aquí solo enumeré 2 columnas de la tabla.
Directrices de las Sentencias SQL
Siguiendo los lineamientos a continuación, puede crear sentencias válidas que resulten fáciles de leer y de editar:
• Las sentencias SQL no son sensibles a mayúsculas/minúsculas. (a menos que se indique que lo sean).
• Las sentencias SQL se pueden introducir en una o en varias líneas.
• Las palabras clave no se pueden dividir en líneas ni se pueden abreviar.
• Las cláusulas se suelen colocar en líneas aparte para facilitar su lectura y su edición.
• Se deben utilizar sangrados para facilitar la lectura del código.
• Las palabras claves se suelen introducir en mayúsculas; el resto de palabras, como nombres y columnas, se introduce en minúsculas.
Expresiones Aritméticas
| Operador | Descripción |
| + | Suma |
| – | Resta |
| * | Multiplicación |
| / | División |
Operadores Aritméticos: El cuadro muestra los operadores aritméticos disponibles en SQL. Puede utilizar operadores aritméticos en cualquier cláusula de una sentencia SQL (excepto en la cláusula FROM).
Nota: Con los tipos de datos DATE y TIMESTAMP, puede utilizar únicamente los operadores de suma y de resta.
SELECT last_name, salary, salary+ 300
FROM employees;
La anterior consulta muestra el apellido, salario y el salario más 300.
SELECT last_name, salary, 12*salary+100
FROM employees;
La anterior muestra el apellido, salario y el salario por 12 más 100.
SELECT last_name, salary, 12*(salary+100)
FROM employees;
El anterior muestra el apellido, salario y el salario más 300 por 12.
Nota: Me limité a hacer ejemplos con estos Operadores pero cualquiera de los ya mencionados puede ser usado siempre y cuando la situación lo requiera.
OJO: El uso de paréntesis es muy importante, este Query lo muestra claramente:
SELECT last_name, salary, 12*salary+100, 12*(salary+100)
FROM employees;
Descripción del Valor Nulo (NULL)
• Un valor nulo es aquel que no está disponible, no está asignado, es desconocido o no es aplicable.
• Un valor nulo no es lo mismo que un cero, tampoco es igual a un espacio en blanco.
• Si faltan valores en una fila para una columna, se dice que el valor es nulo.
• Las columnas de cualquier tipo de datos pueden contener valores nulos. A menos que tengan restricciones (NOT NULL o PRIMARY KEY) los cuales impiden el uso de valores nulos en las columnas.
• Las expresiones aritméticas que contienen un valor nulo se evalúan como nulas.
Nota: usaremos como ejemplo la columna: commission_pct ya que la misma contiene valores nulos debido a que solo las posiciones de directores de ventas o representantes de ventas reciben comisiones.
SELECT last_name, salary, commission_pct
FROM employees;
Muestra registros con valores nulos y no nulos en la columna: commission_pct.
SELECT last_name, 12*salary*commission_pct
FROM employees;
En este ejemplo el cálculo no se realiza correctamente en los registros con el campo commission_pct nulo.
Alias de la Columna
• Cambia el nombre de una cabecera de columna.
• Es útil para hacer legible columnas donde se realizan los cálculos complejos.
• Sigue inmediatamente al nombre de columna o puede usarse la palabra clave AS (opcional) entre el nombre de la columna y el alias para más claridad.
• Requiere comillas dobles: “” si contiene espacios o caracteres especiales, o si es sensible a mayúsculas/minúsculas.
SELECT last_name as Nombre, salary salario,
phone_number "Numero de Telefono"
FROM employees;
SELECT last_name apellido, salary as "Sal", phone_number as "telefono"
FROM employees;
Como muestra el ejemplo, cualquier forma que se use es válida, pero si se quiere mostrar el nombre de columna con un formato especifico o con espacios entonces dicho alias debe estar entre comillas dobles: “”.
Operador de Concatenación
• Enlaza columnas o cadenas de caracteres con otras columnas, expresiones aritméticas o valores constantes.
• Se representa mediante dos barras verticales (||).
• Las columnas o expresiones enlazadas se combinan y crean una única columna de salida.
• Si se concatena una columna no nula con una nula el resultado sería la columna no nula.
SELECT first_name,last_name, first_name||last_name
FROM employees;
SELECT last_name||'hola', first_name||360
FROM employees;
SELECT hire_Date||commission_pct
FROM employees;
Cadenas de Literales
• Un literal es un carácter, un número o una fecha que se ha incluido en la sentencia SELECT.
• Un literal no es un nombre de columna ni un alias de columna.
• Los valores de literales de caracteres y fecha deben ir entre comillas simples (‘ ‘); los literales de números no es necesario que las tengas.
• Las cadenas de literales se incluyen en cada fila devuelta.
SELECT last_name ||' is a '||job_id
AS "Employee Details"
FROM employees;
SELECT first_name ||' gana '||salary
AS "Salary by Employee"
FROM employees;
SELECT 'El Empleado numero: '||employee_id||' fue contratado el '||hire_date
AS "Fecha de Contratación por Emp"
FROM employees;
Filas Duplicadas
• Si consultas una tabla que tiene registros con columnas con el mismo valor(campos sin restricciones como UNIQUE o PRIMARY KEY) dichos registros se mostraran duplicados. Para evitar esto debes incluir la palabra clave DISTINCT después de SELECT pero antes de las columnas a mostrar.
SELECT department_id
FROM employees;
SELECT department_id, job_id
FROM employees;
En las dos consultas anteriores se muestran algunos valores duplicados.
SELECT DISTINCT department_id
FROM employees;
SELECT DISTINCT department_id, job_id
FROM employees;
En las dos últimas consultas vemos registros únicos por cada fila.

