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.
Ejemplos:
SELECT *
FROM departments;
/*se muestran 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
Mediante las sencillas reglas que se detallan 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 clave se suelen introducir en mayúsculas; el resto de palabras, como nombres y columnas, se introduce en minúsculas.
Expresiones Aritméticas
Todo esto es posible mediante expresiones aritméticas. Una expresión aritmética puede contener nombres de columna, valores numéricos constantes e los operadores aritméticos y son de gran ayuda para modificar la manera en la que se muestran los datos.
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.
Ejemplos:
SELECT last_name, salary, salary+ 300
FROM employees;
/*muestra el apellido, salario y el salario más 300*/
SELECT last_name, salary, 12*salary+100
FROM employees;
/*muestra el apellido, salario y el salario por 12 más 100*/
SELECT last_name, salary, 12*(salary+300)
FROM employees;
/*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, el siguiente Query lo muestra claramente:
SELECT last_name, salary, 12*salary+100, 12*(salary+100)
FROM employees;
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 o 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 NULLo 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.
Ejemplos:
SELECT last_name, salary, commission_pct
FROM employees;
/*muestra registros con valores nulos en la columna: commission_pct*/
SELECT last_name, 12*salary*commission_pct
FROM employees;
/*el cálculo no se realiza en los registros con este campo nulos*/
Alias de la Columna
- Cambia el nombre de una cabecera de columna.
- Es útil para los cálculos.
- 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.
Ejemplos:
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 oexpresiones enlazadasse combinan y crean una única columna de salida.
- Si se concatena una columna no nula con una nula es resultado seria la columna no nula.
Ejemplos:
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.
Ejemplos:
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 consultasuna tabla que tiene registros con columnas con el mismo valor(campos sin restriccionescomo 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.
Ejemplos:
SELECT department_id
FROM employees;
SELECT department_id, job_id
FROM employees;
/*En los dos ejemplos anteriores se muestran algunos valores duplicados.*/
SELECT DISTINCT department_id
FROM employees;
SELECT DISTINCT department_id, job_id
FROM employees;
/*En los dos últimos ejemplos vemos registros únicos por pila.*/
Link con un Archivo de ejercicios de práctica!!!
Fuente: Base de Datos Oracle 10g: Conceptos Fundamentales de SQL 1