viernes, 1 de agosto de 2014

Líneas o registros duplicados


Por defecto se muestran todos los registros, incluido los duplicados.
A menos que usted indique otra manera, SQL muestra el resultado de un query o consulta sin eliminar los duplicados.
La consulta:
SELECT
   department_id
FROM hr.employees;



Si usamos la cláusula DISTINCT
En la misma consulta:
SELECT
  DISTINCT department_id
FROM hr.employees;



La cláusula DISTINCT se usa para eliminar los duplicados de una columna, si se desea mostrar más columnas, se debe tener en cuenta que los valores distintos para cada registro al que se les está haciendo el DISTINCT puede mostrar se tantas veces el registro tenga valores diferentes en cada columna adicional.
Es decir, la consulta anterior carga los registros únicos de department_id, si a esa consulta se le agrega el campo last_name, seguramente veríamos como algunos de los  department_id se ven duplicados.

SELECT
   DISTINCT department_id,
   last_name
FROM hr.employees;



miércoles, 30 de julio de 2014

Operador Quote (q) o comillas en sentencias sql


a)      Especifica su propia marca delimitadora
b)      Selecciona cualquier delimitador.
c)       Incrementa legibilidad  and usabilidad.
La consulta:

SELECT
    department_name || q'[ Department's Manager Id:]' || manager_id AS "Department and Manager"
FROM hr.departments;




 Las comillas en cadenas en ocasiones son necesarias, al ejecutar una sentencia con caracteres o cadena de caracteres que contengan comilla sencilla ( ‘ ), la sentencia genera error.
Se puede usar cualquier delimitador, single-byte o múltiple-byte, también se puede usar cualquiera de las siguientes parejas de caracteres <>,{},[] o ().

Las siguientes consultas muestran algunos de los usos de cada pareja de aracteres:
SELECT q'{El empleado '}' || last_name || q'[' Aun esta activo]' FROM hr.employees;



SELECT q'<El empleado '>' || last_name || q'(' Aun esta activo)' FROM hr.employees;





Con cualquier uno el resultado es el mismo.

martes, 29 de julio de 2014

Operador de concatenación


Un operador de concatenación:
a)      Enlaces de columnas o caracteres strings con otras columnas.
b)      Es representado por dos barras verticales ( || )
c)       La columna resultante es una expresión carácter.
Si quisiéramos concatenar el nombre y el salario de un empleado, podríamos realizar o ejecutar el siguientes script o sentencia sql:

SELECT
    last_name || salary AS nombre_y_salario_concatenado
FROM hr.employees;

Y obtendríamos el siguiente resultado:



Con un alias de columna “AS nombre_y_salario_concatenado” nombramos la cabecera de la columna para identificar el campo.

Se pueden  string específicos, como un espacio en blanco o una cadena de caracteres:
SELECT
    last_name || ' tiene un salario de ' ||salary AS nombre_y_salario_concatenado
FROM hr.employees;


Para concatenar columnas, debemos tener en cuenta que los valores nulos (null) generan un null, si concatenas una columna que contenga un valor nulo, el resultado de esa concatenación será un null.
Digamos, vamos a concatenar el nombre, el salario, y la comisión:
SELECT
    last_name || ' tiene un salario de ' ||salary|| ' y tienes un % de comision: ' || commission_pct  AS nombre_y_salario_concatenado
FROM hr.employees;




El resultado es un string con el nombre, la cadena ' tiene un salario de ', salario y la cadena || ' y tienes un % de comision: ', los valores que no están nulos en la comisión, los muestra, pero los que están en null quedan en blanco.

lunes, 28 de julio de 2014

Definiendo alias de columnas

Los alias para las columnas:
a)      Renombran el encabezado de las columnas.
b)      A las operaciones realizadas se puede dar un nombre específico para que no se muestre  el cálculo realizado.
c)       Inmediatamente después del nombre de la columna podemos usar o no la cláusula alias AS para luego escribir el alias que tendrá esa columna o calculo.
d)      Requiere comillas dobles para definir si el alias de esa columna tiene espacios, es case sensitive o contiene caracteres especiales.
La consulta:
SELECT
    last_name
   ,job_id AS "id"
   ,salary  AS "Salary"
   ,commission_pct "Porcentaje  Comision"
   ,10*salary*commission_pct comision_calculada
FROM hr.employees;

Tiene como resultado


Se detallamos cada uno de los campos con sus alias encontramos que:
a)      last_name no tiene alias y muestra en el encabezado el nombre del campo real y en mayúscula.
b)      job_id tiene alias y su encabezado está  en minúscula.
c)       salary tiene alias y su encabezado  describe la primera letra en mayúscula, las demás en minúscula.
d)      commission_pct tiene alias y su encabezado describe la primera letra de cada palabra está en mayúsculas, adicional, este alias tiene un espacio.
e)      El cálculo de comisión 10*salary*commission_pct tiene alias y su encabezado describe un alias sin comillas dobles y sin algún tipo de característica especial para el alias, adicional, no tiene la cláusula alias AS.

Las operaciones aritméticas con valores nulos


Las operaciones aritméticas con valores nulos (null), retornan nulos (null)
La siguiente consulta (query) muestra como los cálculos con valores nulos retornan valores nulos:
SELECT 
   last_name, job_id, salary, commission_pct, 10*salary*commission_pct
FROM hr.employees;




Si se efectúa una división por cero, genera error pero si realiza una división por nulo (null) el valor devuelto es nulo (null).

Defiendo un valor nulo





Un valor nulo (null)  es un valor no disponible, no asignado, no conocido o inaplicable
Nulo (null) no es equivalente a cero, no es equivalente a espacio en blanco o vacío
En la consulta:
SELECT
   last_name, job_id, salary, commission_pct
FROM hr.employees; 




Cualquier tipo de dato puede contener nulo (null), en la columna commission_pct de la tabla empleados (hr.employees) existen valores nulos (null) y valores no nulos.
Es recomendable no usar valores nulos en constraints o llaves primarias, generalmente las llaves primarias (primary key) son NOT NULL.