Recuperando Datos SQL Select

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 11

Para extraer datos de la base de datos, debe usar la instrucción SQL SELECT.

Sin embargo, es
posible que deba restringir las columnas que se muestran. Esta lección describe la instrucción
SELECT que se necesita para realizar estas acciones. Además, es posible que desee crear
sentencias SELECT que se puedan usar más de una vez.

Capacidades de las declaraciones SQL SELECT

Una instrucción SELECT recupera información de la base de datos. Con una instrucción SELECT,
puede hacer lo siguiente:

 Proyección: selecciona las columnas de una tabla que devuelve una consulta. Selecciona
algunas o tantas de las columnas como sea necesario.
 Selección: selecciona las filas de una tabla que devuelve una consulta. Se pueden utilizar varios
criterios para restringir las filas que se recuperan.
 Uniones: Reúne los datos que se almacenan en diferentes tablas especificando el enlace entre
ellos.

Declaración SELECT básica

En su forma más simple, una instrucción SELECT debe incluir lo siguiente:

 Una cláusula SELECT, que especifica las columnas que se mostrarán


 Una cláusula FROM, que identifica la tabla que contiene las columnas que se enumeran en la
cláusula SELECT
En la sintaxis:

 SELECT Es una lista de una o más columnas


 * Selecciona todas las columnas
 DISTINCT Suprime los valores duplicados
 columna|expresión Selecciona la columna nombrada o la expresión
 alias Da diferentes encabezados a las columnas seleccionadas
 FROM table Especifica la tabla que contiene las columnas

Nota: A lo largo de este curso, las palabras palabra clave, cláusula y declaración se utilizan de la
siguiente manera:

Una palabra clave hace referencia a un elemento SQL individual; por ejemplo, SELECT y FROM son
palabras clave.

Una cláusula es parte de una instrucción SQL, por ejemplo, SELECT employee_id, last_name, etc.

Una declaración es una combinación de dos o más cláusulas, por ejemplo, SELECT * FROM
employees

Seleccionar todas las columnas

SELECT *
FROM employees;

Puede mostrar todas las columnas de datos en una tabla siguiendo la palabra clave SELECT con un
asterisco (*).

También puede mostrar todas las columnas de la tabla enumerándolas después de la palabra clave
SELECT. Por ejemplo, la siguiente instrucción SQL muestra todas las columnas y todas las filas de la
tabla DEPARTMENTS:

SELECT department_id, department_name, manager_id , location_id


FROM departments;

Selección de columnas específicas

SELECT department_id, location_id


FROM departments;

Puede usar la declaración SELECT para mostrar columnas específicas de la tabla especificando los
nombres de las columnas separados por comas. El ejemplo de la consulta anterior muestra todos
los números de departamento y de ubicación de la tabla DEPARTMENTS.
En la cláusula SELECT, especifique las columnas que desea en el orden en que desea que aparezcan
en la salida. Por ejemplo, para mostrar la ubicación antes del número de departamento (de
izquierda a derecha), utilice la siguiente instrucción:

SELECT location_id, department_id


FROM departments;

Escribir sentencias SQL

 Las sentencias SQL no distinguen entre mayúsculas y minúsculas.


 Las sentencias SQL se pueden ingresar en una o más líneas.
 Las palabras clave no se pueden abreviar ni dividir en líneas.
 Las cláusulas generalmente se colocan en líneas separadas.
 Se utilizan sangrías para mejorar la legibilidad.
 En SQL Developer, las sentencias SQL se pueden terminar opcionalmente con un punto y coma
(;). Se requieren puntos y comas cuando ejecuta varias sentencias SQL.
 En SQL*Plus, debe finalizar cada instrucción SQL con un punto y coma (;).

Expresiones aritméticas

Cree expresiones con datos numéricos y de fecha utilizando operadores aritméticos.

Es posible que deba modificar la forma en que se muestran los datos, o que desee realizar cálculos
o ver escenarios hipotéticos. Todo esto es posible usando expresiones aritméticas. Una expresión
aritmética puede contener nombres de columnas, valores numéricos constantes y operadores
aritméticos.

Operadores aritméticos

La diapositiva enumera los operadores aritméticos que están disponibles en SQL. Puede utilizar
operadores aritméticos en cualquier cláusula de una instrucción SQL (excepto la cláusula FROM).
Nota: con los tipos de datos DATE y TIMESTAMP, solo puede usar los operadores de suma y resta.
Uso de operadores aritméticos

SELECT last_name, salary, salary + 300


FROM employees;

El ejemplo anterior usa el operador de suma para calcular un aumento de salario de $300 para
todos los empleados. También muestra una columna SALARY+300 en la salida. Tenga en cuenta
que la columna calculada resultante, SALARIO+300, no es una columna nueva en la tabla
EMPLEADOS; es solo para exhibición. De forma predeterminada, el nombre de una nueva columna
proviene del cálculo que la generó; en este caso, salary+300.
Nota: el servidor de Oracle ignora los espacios en blanco antes y después del operador aritmético.

Precedencia de operadores
Si una expresión aritmética contiene más de un operador, primero se evalúan la multiplicación y la
división. Si los operadores en una expresión tienen la misma prioridad, la evaluación se realiza de
izquierda a derecha.
Puede usar paréntesis para forzar que la expresión encerrada entre paréntesis se evalúe primero.

Reglas de precedencia
 La multiplicación y la división ocurren antes que la suma y la resta.
 Los operadores de la misma prioridad se evalúan de izquierda a derecha.
 Los paréntesis se utilizan para anular la precedencia predeterminada o para aclarar la
declaración.

SELECT first_name, salary, salary/30*2


FROM employees;

Si el salario es 24000, primero se divide el salario en 30 y después se multiplica por 2 siendo igual a
16,000.

SELECT first_name, salary, 30/2*salary


FROM employees;

En este caso primero se divide 30 entre 2 y después el resultado se multiplica con el salario.

SELECT first_name, salary, 30/2+3*salary


FROM employees;

Finalmente, en el último ejemplo se procede a realizar la división seguido de la multiplicación y la


suma en ese orden jerarquico.
Precedencia de los operadores

1. SELECT last_name, salary, 12*salary+100


FROM employees;

2. SELECT last_name, salary, 12*(salary+100)


FROM employees;

El primer ejemplo muestra el apellido, el salario y la compensación anual de los empleados.


Calcula la compensación anual multiplicando el salario mensual por 12, más un bono único de
$100. Tenga en cuenta que la multiplicación se realiza antes de la suma.
Nota: Utilice paréntesis para reforzar el orden estándar de precedencia y mejorar la claridad. Por
ejemplo, la expresión de la diapositiva se puede escribir como (12*salario)+100 sin cambios en el
resultado.

Uso de paréntesis
Puede anular las reglas de precedencia utilizando paréntesis para especificar el orden deseado en
el que se ejecutarán los operadores. El segundo ejemplo muestra el apellido, el salario y la
compensación anual de los empleados. Calcula la compensación anual de la siguiente manera:
agrega un bono mensual de $100 al salario mensual y luego multiplica ese subtotal por 12. Debido
a los paréntesis, la suma tiene prioridad sobre la multiplicación.

Definición de un valor nulo

SELECT last_name, job_id, salary, commission_pct


FROM employees;

Si una fila carece de un valor de datos para una columna en particular, se dice que ese valor es
nulo o contiene un valor nulo.

Null es un valor que no está disponible, no asignado, desconocido o inaplicable. Nulo no es lo


mismo que cero o un espacio en blanco. El cero es un número y el espacio en blanco es un
carácter.

Las columnas de cualquier tipo de datos pueden contener valores nulos. Sin embargo, algunas
restricciones (NOT NULL y PRIMARY KEY) evitan que se utilicen valores nulos en la columna.

En la columna COMMISSION_PCT de la tabla EMPLOYEES, observe que solo un gerente de ventas o


un representante de ventas puede ganar una comisión. Otros empleados no tienen derecho a
ganar comisiones. Un valor nulo representa ese hecho.
Valores nulos en expresiones aritméticas

SELECT last_name, 12*salary*commission_pct


FROM employees;

Si cualquier valor de columna en una expresión aritmética es nulo, el resultado es nulo. Por
ejemplo, si intenta realizar una división por cero, obtiene un error. Sin embargo, si divide un
número por nulo, el resultado es nulo o desconocido. En el ejemplo, el empleado Whalen no
recibe ninguna comisión. Dado que la columna COMMISSION_PCT de la expresión aritmética es
nula, el resultado es nulo.

Definición de un alias de columna

Un alias de columna:
 Cambia el nombre de un encabezado de columna
 Es útil con los cálculos
 Inmediatamente después del nombre de la columna (también puede haber la palabra clave
opcional AS entre el nombre de la columna y el alias).
 Requiere comillas dobles si contiene espacios o caracteres especiales, o si distingue entre
mayúsculas y minúsculas

Al mostrar el resultado de una consulta, SQL Developer normalmente usa el nombre de la columna
seleccionada como encabezado de columna. Este encabezado puede no ser descriptivo y, por lo
tanto, puede ser difícil de entender. Puede cambiar un encabezado de columna utilizando un alias
de columna.
Especifique el alias después de la columna en la lista SELECT usando un espacio en blanco como
separador. De forma predeterminada, los encabezados de alias aparecen en mayúsculas. Si el alias
contiene espacios o caracteres especiales (como # o $), o si distingue entre mayúsculas y
minúsculas, escriba el alias entre comillas dobles (" ").

SELECT last_name AS name, commission_pct comm


FROM employees;
SELECT last_name "Name" , salary*12 "Annual Salary"
FROM employees;

El primer ejemplo muestra los nombres y los porcentajes de comisión de todos los empleados.
Tenga en cuenta que la palabra clave AS opcional se ha utilizado antes del nombre de alias de la
columna. El resultado de la consulta es el mismo tanto si se usa la palabra clave AS como si no.
Además, tenga en cuenta que la instrucción SQL tiene los alias de columna, nombre y
comunicación, en minúsculas, mientras que el resultado de la consulta muestra los encabezados
de las columnas en mayúsculas. Como se mencionó en la diapositiva anterior, los encabezados de
las columnas aparecen en mayúsculas de forma predeterminada.

El segundo ejemplo muestra los apellidos y los salarios anuales de todos los empleados. Como el
salario anual contiene un espacio, se ha encerrado entre comillas dobles. Tenga en cuenta que el
encabezado de la columna en la salida es exactamente el mismo que el alias de la columna.
Nota: No se puede hacer referencia a un alias en la lista de columnas que contiene la definición de
alias.

Operador de concatenación

Puede vincular columnas a otras columnas, expresiones aritméticas o valores constantes para
crear una expresión de caracteres mediante el operador de concatenación (||). Las columnas a
ambos lados del operador se combinan para formar una sola columna de salida.

En el ejemplo, LAST_NAME y JOB_ID están concatenados y reciben el alias “Employee”. Tenga en


cuenta que el apellido del empleado y el código de trabajo se combinan para formar una sola
columna de salida. La palabra clave AS antes del nombre de alias hace que la cláusula SELECT sea
más fácil de leer.

Valores nulos con el operador de concatenación


Si concatena un valor nulo con una cadena de caracteres, el resultado es una cadena de
caracteres. APELLIDO || NULL da como resultado LAST_NAME.
Nota: También puede concatenar expresiones de fecha con otras expresiones o columnas.

SELECT last_name||job_id as "Employee"


FROM employees;

String de caracteres literales

Un literal es un carácter, un número o una fecha que se incluye en la lista SELECT. No es un


nombre de columna ni un alias de columna. Se imprime para cada fila devuelta. Los Strings
literales de texto de formato libre se pueden incluir en el resultado de la consulta y se tratan igual
que una columna en la lista SELECT.
Los literales de fecha y carácter deben ir entre comillas simples (''); los literales numéricos no
necesitan encerrarse de manera similar.

Uso de String de caracteres literales

SELECT last_name ||' is a '||job_id


AS "Employee Details"
FROM employees;

El ejemplo de la diapositiva muestra los apellidos y los códigos de trabajo de todos los empleados.
La columna tiene el encabezado “Employee Details”. Tenga en cuenta los espacios entre las
comillas simples en la sentencia SELECT. Los espacios mejoran la legibilidad de la salida.
En el siguiente ejemplo, el apellido y el salario de cada empleado se concatenan con un literal,
para dar más significado a las filas devueltas:

SELECT last_name ||': 1 Month salary = '||salary Monthly


FROM employees;
Operador de comillas (q)

SELECT department_name || q'[ Department's Manager Id: ]'|| manager_id


AS "Department and Manager"
FROM departments;

Muchas sentencias de SQL utilizan caracteres literales en expresiones o condiciones. Si el literal en


sí contiene una comilla simple, puede usar el operador de comillas (q) y seleccionar su propio
delimitador de comillas.
Puede elegir cualquier delimitador conveniente, de un solo byte o multibyte, o cualquiera de los
siguientes pares de caracteres: [ ], { }, ( ) o < >.
En el ejemplo que se muestra, el String contiene una comilla simple, que normalmente se
interpreta como un delimitador de un String de caracteres. Sin embargo, al utilizar el operador q,
los corchetes [ ] se utilizan como delimitadores de comillas. El string entre los delimitadores de
corchetes se interpreta como una cadena de caracteres literales.

Filas duplicadas

SELECT department_id
FROM employees;

SELECT DISTINCT department_id


FROM employees;
A menos que indique lo contrario, SQL muestra los resultados de una consulta sin eliminar las filas
duplicadas. El primer ejemplo de la diapositiva muestra todos los números de departamento de la
tabla EMPLOYEES. Tenga en cuenta que los números de departamento se repiten.
Para eliminar filas duplicadas en el resultado, incluya la palabra clave DISTINCT en la cláusula
SELECT inmediatamente después de la palabra clave SELECT. En el segundo ejemplo de la
diapositiva, la tabla EMPLOYEES en realidad contiene 20 filas, pero solo hay siete números de
departamento únicos en la tabla.
Puede especificar varias columnas después del calificador DISTINCT. El calificador DISTINCT afecta
a todas las columnas seleccionadas y el resultado es cada combinación distinta de las columnas.

SELECT DISTINCT department_id, job_id


FROM employees;

Nota: también puede especificar la palabra clave UNIQUE, que es un sinónimo de la palabra clave
DISTINCT.

Mostrando estructura de una tabla

DESCRIBE employees

Puede mostrar la estructura de una tabla utilizando el comando DESCRIBE. El comando muestra
los nombres de las columnas y los tipos de datos, y le muestra si una columna debe contener
datos (es decir, si la columna tiene una restricción NOT NULL).
En la sintaxis, el nombre de la tabla es el nombre de cualquier tabla, vista o sinónimo existente al
que pueda acceder el usuario.

Usando la interfaz GUI de SQL Developer, puede seleccionar la tabla en el árbol de Conexiones y
usar la pestaña Columnas para ver la estructura de la tabla.
Nota: DESCRIBE es un comando SQL *PLUS compatible con SQL Developer. Se abrevia como DESC.
El ejemplo de la diapositiva muestra información sobre la estructura de la tabla EMPLOYEES
usando el comando DESCRIBE. En la pantalla resultante, NULL indica que los valores de esta
columna pueden ser desconocidos. NOT NULL indica que una columna debe contener datos. Tipo
muestra el tipo de datos de una columna.
Los tipos de datos se describen en la siguiente tabla:

Tipo de dato Descripción

NUMBER(p,s Valor numérico que tiene un número máximo de


) dígitos p, con s dígitos a la derecha del punto
decimal
VARCHAR2(s Valor de carácter de longitud variable de tamaño
) máximo s
Valor de fecha y hora entre el 1 de enero de 4712
DATE
a.C. y 31 de diciembre de 9999 d.C.

También podría gustarte