miércoles, 22 de febrero de 2012

Introducción SQL (Comando SELECT 1ra parte)


Sin duda el comando más versátil del lenguaje SQL es el 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)
Sintaxis Sencilla:

SELECT * | {[DISTINCT] columna | expresión [[AS] alias], ...} 
FROM tabla;

Donde:
  • *. El asterisco significa que se seleccionan todas las columnas
  •  DISTINCT. Hace que no se muestren los valores duplicados
  •  Columna. Es el nombre de una columna de la tabla que se desea mostrar
  •  Expresión. Una expresión válida SQL
  •  Alias. Es un nombre que se le da a la cabecera de la columna en el resultado de esta instrucción
Ejemplos:

/* Selección de todos los registros de la tabla clientes */

SELECT * FROM Clientes;

/* Selección de algunos campos*/

SELECT nombre, apellido1, apellido2 FROM Clientes;

Cálculos Aritméticos

Los operadores + (suma), - (resta), * (multiplicación) y / (división), se pueden utilizar para 
hacer cálculos en las consultas. Cuando se utilizan como expresión en una consulta 
SELECT, no modifican los datos originales sino que como resultado de la vista generada 
por SELECT, aparece un nueva columna. Ejemplo:

SELECT nombre, precio,precio*1.16 FROM articulos

Esa consulta obtiene tres columnas. La tercera tendrá como nombre la expresión utilizada, para poner un alias basta utilizar dicho alias tras la expresión:

SELECT nombre, precio, precio*1.16 AS precio_con_iva FROM articulos;

Los nombres pueden llevar espacios si se ponen con comillas dobles:

SELECT nombre, precio, precio*1.16 AS "precio con iva" FROM articulos;

Esas comillas dobles cumplen otra función y es la de hacer que se respeten las mayúsculas y minúsculas del nombre (de otro modo el nombre de la columna aparece siempre en mayúsculas.

La prioridad de esos operadores es: tienen más prioridad la multiplicación y división, después la suma y la resta. En caso de igualdad de prioridad, se realiza primero la operación que esté más a la izquierda. Como es lógico se puede evitar cumplir esa prioridad usando paréntesis; el interior de los paréntesis es lo que se ejecuta primero. Cuando una expresión aritmética se calcula sobre valores NULL, el resultado de la expresión es siempre NULL.

Concatenación

El operador || es el de la concatenación. Sirve para unir textos. Ejemplo:

SELECT tipo, modelo, tipo || '-' || modelo "Clave Pieza" 
FROM piezas;

El resultado puede ser:




Condiciones 

Se pueden realizar consultas que restrinjan los datos de salida de las tablas. Para ello se 
utiliza la cláusula WHERE. Esta cláusula permite colocar una condición que han de
cumplir todos los registros, los que no la cumplan no aparecen en el resultado. Ejemplo:

SELECT Tipo, Modelo FROM Pieza WHERE Precio>3;

Operadores de Comparación

Se pueden utilizar en la cláusula WHERE, son:


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. Así la letra Ñ y las vocales acentuadas nunca quedan bien ordenadas ya que figuran con códigos más altos. Las mayúsculas figuran antes que las minúsculas (la letra 'Z' es menor que la 'a').

Valores Lógicos

Son:


Ejemplo:

/* Obtiene a las personas de entre 25 y 50 años*/

SELECT nombre,apellidos FROM personas
WHERE edad>=25 AND edad<=50;

/*Obtiene a la gente de más de 60 años o de menos de 20*/

SELECT nombre,apellidos FROM personas
WHERE edad>60 OR edad<20;

Otros Comandos:

BETWEEN  

El operador BETWEEN nos permite obtener datos que se encuentren en un rango.  Uso:

SELECT tipo,modelo,precio FROM piezas
WHERE precio BETWEEN 3 AND 8;

Saca piezas cuyos precios estén entre 3 y 8 (ambos incluidos).

IN

Permite obtener registros cuyos valores estén en una lista:

SELECT tipo,modelo,precio FROM piezas
WHERE precio IN (3,5, 8);

Obtiene piezas cuyos precios sea 3, 5 u 8, sólo  de esos tres.

LIKE

Se usa sobre todo con textos, permite obtener registros cuyo valor en un campo cumpla 
una condición textual. LIKE utiliza una cadena que puede contener estos símbolos:

Ejemplos:

/* Selecciona nombres que empiecen por S */

SELECT nombre FROM personas WHERE nombre LIKE 'S%';

/*Selecciona las personas cuyo apellido sea Sanchez, Senchez,
Stnchez,...*/

SELECT apellido1 FROM Personas WHERE apellido1 LIKE 'S_nchez';


IS NULL

Devuelve verdadero si una expresión contiene un nulo:

SELECT nombre,apellidos FROM personas
WHERE telefono IS NULL

Esa instrucción selecciona a la gente que no tiene teléfono

Precedencia de Operadores 

A veces las expresiones que se producen en los SELECT son muy extensas y es difícil saber que parte de la expresión se evalúa primero, por ello se indica la siguiente tabla de precedencia:



Ordenación 

El orden inicial de los registros obtenidos por un SELECT no guarda más que una relación 
respecto al orden en el que fueron introducidos. Para ordenar en base a criterios más 
interesantes, se utiliza la cláusula ORDER BY. 
En esa cláusula se coloca una lista de campos que indica la forma de ordenar. Se 
ordena primero por el primer campo de la lista, si hay coincidencias por el segundo, si ahí 
también las hay por el tercero, y así sucesivamente.

Se puede colocar las palabras ASC O DESC (por defecto se toma ASC). Esas palabras
significan en ascendente (de la A a la Z, de los números pequeños a los grandes) o en
descendente (de la Z a la a, de los números grandes a los pequeños) respectivamente.
Sintaxis completa de SELECT:

SELECT expresiones
FROM tabla
[WHERE condición]
ORDER BY listaDeCamposOAlias;


No hay comentarios:

Publicar un comentario