Tercero Analisis de Sistemas
 

Manual de SQL Server 2000
 http://www.netveloper.com/contenido2.aspx?IDC=64_0&IDP=1&P=0

http://www.monografias.com/trabajos11/manu/manu.shtml

http://www.desarrolloweb.com/manuales/9/

http://www.snip.gob.ni/Xdc/SQL/SqlServer.htm

Paginas de consulta con ejercicios de Select
http://www.w3schools.com/SQL/sql_func_avg.asp

http://sql.1keydata.com/es/sql-select.php

Select

 

From

¿Para qué utilizamos los comandos SQL? El uso común es la selección de datos desde tablas ubicadas en una base de datos. Inmediatamente, vemos dos palabras claves: necesitamos SELECT la información FROM una tabla. (Note que la tabla es un contenedor que reside en la base de datos donde se almacena la información. Para obtener más información acerca de cómo manipular tablas, consulte la Sección Manipulación de Tabla). Por lo tanto tenemos la estructura SQL más básica:

SELECT "nombre_columna" FROM "nombre_tabla"

Para ilustrar el ejemplo anterior, suponga que tenemos la siguiente tabla:

Tabla Store_Information

store_name

Sales

Date

Los Angeles

1500 €

05-Jan-1999

San Diego

250 €

07-Jan-1999

Los Angeles

300 €

08-Jan-1999

Boston

700 €

08-Jan-1999

Podemos utilizar esta tabla como ejemplo a lo largo de la guía de referencia (esta tabla aparecerá en todas las secciones). Para seleccionar todos los negocios en esta tabla, ingresamos,

SELECT store_name FROM Store_Information

Resultado:

store_name

Los Angeles

San Diego

Los Angeles

Boston

Pueden seleccionarse los nombres de columnas múltiples, así como también los nombres de tablas múltiples.


 

SQL DISTINCT

La palabra clave SELECT nos permite tomar toda la información de una columna (o columnas) en una tabla. Esto, obviamente, significa necesariamente que habrá redundancias. ¿Qué sucedería si sólo deseamos seleccionar cada elemento DISTINCT? Esto es fácil de realizar en SQL. Todo lo que necesitamos hacer es agregar DISTINCT luego de SELECT. La sintaxis es la siguiente:

SELECT DISTINCT "nombre_columna"
FROM "nombre_tabla"

Por ejemplo, para seleccionar todos los negocios distintos en la Tabla Store_Information,

Tabla Store_Information

store_name

Sales

Date

Los Angeles

1500 €

05-Jan-1999

San Diego

250 €

07-Jan-1999

Los Angeles

300 €

08-Jan-1999

Boston

700 €

08-Jan-1999

Ingresamos,

SELECT DISTINCT store_name FROM Store_Information

Resultado:

store_name

Los Angeles

San Diego

Boston

 


 

WHERE

Luego, podríamos desear seleccionar condicionalmente los datos de una tabla. Por ejemplo, podríamos desear sólo recuperar los negocios con ventas mayores a $1.000 dólares estadounidenses. Para ello, utilizamos la palabra clave WHERE. La sintaxis es la siguiente:

SELECT "nombre_columna"
FROM "nombre_tabla"
WHERE "condición"

Por ejemplo, para seleccionar todos los negocios con ventas mayores a 1.000€ dólares estadounidenses en la Tabla Store_Information,

Tabla Store_Information

store_name

Sales

Date

Los Angeles

1500 €

05-Jan-1999

San Diego

250 €

07-Jan-1999

Los Angeles

300 €

08-Jan-1999

Boston

700 €

08-Jan-1999

 

Ingresamos,

SELECT store_name
FROM Store_Information
WHERE Sales > 1000

Resultado:

store_name

Los Angeles

 


 

AND - OR

En la sección anterior, hemos visto que la palabra clave WHERE también puede utilizarse para seleccionar datos condicionalmente desde una tabla. Esta condición puede ser una condición simple (como la que se presenta en la sección anterior), o puede ser una condición compuesta. Las condiciones compuestas están formadas por múltiples condiciones simples conectadas por AND u OR. No hay límites en el número de condiciones simples que pueden presentarse en una sola instrucción SQL.

La sintaxis de una condición compuesta es la siguiente:

SELECT "nombre_columna"
FROM "nombre_tabla"
WHERE "condición simple"
{[AND|OR] "condición simple"}+

{}+ significa que la expresión dentro de las llaves ocurrirá una o más veces. Note que AND u OR pueden utilizarse indistintamente. Además, podemos utilizar el símbolo paréntesis () para indicar el orden de la condición.

Por ejemplo, podemos desear seleccionar todos los negocios con ventas mayores a 1000€ dólares estadounidenses o todos los negocios con ventas menores a 500€ dólares estadounidenses pero mayores a 275€ dólares estadounidenses en la Tabla Store_Information,

Tabla Store_Information

store_name

Sales

Date

Los Angeles

1500 €

05-Jan-1999

San Diego

250 €

07-Jan-1999

San Francisco

300 €

08-Jan-1999

Boston

700 €

08-Jan-1999

 

Ingresamos,

SELECT store_name
FROM Store_Information
WHERE Sales > 1000
OR (Sales < 500 AND Sales > 275)

Resultado:

store_name

Los Angeles

San Francisco

 


 

IN

En SQL, hay dos usos de la palabra clave IN, y esta sección introduce aquél relacionado con la cláusula WHERE. Cuando se lo utiliza en este contexto, sabemos exactamente el valor de los valores regresados que deseamos ver para al menos una de las columnas. La sintaxis para el uso de la palabra clave IN es la siguiente:

SELECT "nombre_columna"
FROM "nombre_tabla"
WHERE "nombre_columna" IN (''valor1', ''valor2', ...)

El número de valores en los paréntesis pueden ser uno o más, con cada valor separado por comas. Los valores pueden ser números o caracteres. Si hay sólo un valor dentro del paréntesis, este comando es equivalente a

WHERE "nombre_columna" = 'valor1'

Por ejemplo, podríamos desear seleccionar todos los registros para los negocios de Los Ángeles y San Diego en la Tabla Store_Information,

Tabla Store_Information

store_name

Sales

Date

Los Angeles

1500 €

05-Jan-1999

San Diego

250 €

07-Jan-1999

San Francisco

300 €

08-Jan-1999

Boston

700 €

08-Jan-1999

 

Ingresamos,

SELECT *
FROM Store_Information
WHERE store_name IN ('Los Angeles', 'San Diego')

Resultado:

store_name

Sales

Date

Los Angeles

1500 €

05-Jan-1999

San Diego

250 €

07-Jan-1999

 


 

BETWEEN

Mientras que la palabra clave IN ayuda a las personas a limitar el criterio de selección para uno o más valores discretos, la palabra clave BETWEEN permite la selección de un rango. La sintaxis para la cláusula BETWEEN es la siguiente:

SELECT "nombre_columna"
FROM "nombre_tabla"
WHERE "nombre_columna" BETWEEN 'valor1' AND 'valor2'

Esto seleccionará todas las filas cuya columna tenga un valor entre 'valor1' y 'valor2'.

Por ejemplo, podríamos desear seleccionar la visualización de toda la información de ventas entre el 06 de enero de 1999, y el 10 de enero de 1999, en la Tabla Store_Information,

Tabla Store_Information

store_name

Sales

Date

Los Angeles

1500 €

05-Jan-1999

San Diego

250 €

07-Jan-1999

San Francisco

300 €

08-Jan-1999

Boston

700 €

08-Jan-1999

 

Ingresamos,

SELECT *
FROM Store_Information
WHERE Date BETWEEN '06-Jan-1999' AND '10-Jan-1999'

Tenga en cuenta que la fecha puede almacenarse en diferentes formatos según las diferentes bases de datos. Esta guía de referencia simplemente elige uno de los formatos.

Resultado:

store_name

Sales

Date

San Diego

250 €

07-Jan-1999

San Francisco

300 €

08-Jan-1999

Boston

700 €

08-Jan-1999

 


 

LIKE

LIKE es otra palabra clave que se utiliza en la cláusula WHERE. Básicamente, LIKE le permite hacer una búsqueda basada en un patrón en vez de especificar exactamente lo que se desea (como en IN) o determinar un rango (como en BETWEEN). La sintaxis es la siguiente:

SELECT "nombre_columna"
FROM "nombre_tabla"
WHERE "nombre_columna" LIKE {patrón}

{patrón} generalmente consiste en comodines. Aquí hay algunos ejemplos:

  • 'A_Z': Toda línea que comience con 'A', otro carácter y termine con 'Z'. Por ejemplo, 'ABZ' y 'A2Z' deberían satisfacer la condición, mientras 'AKKZ' no debería (debido a que hay dos caracteres entre A y Z en vez de uno).
  • 'ABC%': Todas las líneas que comienzan con 'ABC'. Por ejemplo, 'ABCD' y 'ABCABC' ambas deberían satisfacer la condición.
  • '%XYZ': Todas las líneas que terminan con 'XYZ'. Por ejemplo, 'WXYZ' y 'ZZXYZ' ambas deberían satisfacer la condición.
  • '%AN%': : Todas las líneas que contienen el patrón 'AN' en cualquier lado. Por ejemplo, 'LOS ANGELES' y 'SAN FRANCISCO' ambos deberían satisfacer la condición.

Digamos que tenemos la siguiente tabla:

Tabla Store_Information

store_name

Sales

Date

LOS ANGELES

1500 €

05-Jan-1999

SAN DIEGO

250 €

07-Jan-1999

SAN FRANCISCO

300 €

08-Jan-1999

BOSTON

700 €

08-Jan-1999

 

Deseamos encontrar todos los negocios cuyos nombres contengan ‘AN’. Para hacerlo, ingresamos,

SELECT *
FROM Store_Information
WHERE store_name LIKE '%AN%'

Resultado:

store_name

Sales

Date

LOS ANGELES

1500 €

05-Jan-1999

SAN DIEGO

250 €

07-Jan-1999

SAN FRANCISCO

300 €

08-Jan-1999

 


 

ORDER BY

Hasta ahora, hemos visto cómo obtener datos de una tabla utilizando los comandos SELECT y WHERE. Con frecuencia, sin embargo, necesitamos enumerar el resultado en un orden particular. Esto podría ser en orden ascendente, en orden descendente, o podría basarse en valores numéricos o de texto. En tales casos, podemos utilizar la palabra clave ORDER BY para alcanzar nuestra meta.

La sintaxis para una instrucción ORDER BY es la siguiente:

SELECT "nombre_columna"
FROM "nombre_tabla"
[WHERE "condición"]
ORDER BY "nombre_columna" [ASC, DESC]

[] significa que la instrucción WHERE es opcional. Sin embargo, si existe una cláusula WHERE, viene antes de la cláusula ORDER BY ASC significa que los resultados se mostrarán en orden ascendente, y DESC significa que los resultados se mostrarán en orden descendente. Si no se especifica ninguno, la configuración predeterminada es ASC.

Es posible ordenar por más de una columna. En este caso, la cláusula ORDER BYanterior se convierte en

ORDER BY "nombre1_columna" [ASC, DESC], "nombre2_columna" [ASC, DESC]

Suponiendo que elegimos un orden ascendente para ambas columnas, el resultado se clasificará en orden ascendente según la columna 1. Si hay una relación para el valor de la columna 1, se clasificará en orden ascendente según la columna 2.

Por ejemplo, podríamos desear enumerar los contenidos de la Tabla Store_Information según la suma en dólares, en orden descendente:

Tabla Store_Information

store_name

Sales

Date

Los Angeles

1500 €

05-Jan-1999

San Diego

250 €

07-Jan-1999

San Francisco

300 €

08-Jan-1999

Boston

700 €

08-Jan-1999

 

Ingresamos,

SELECT store_name, Sales, Date
FROM Store_Information
ORDER BY Sales DESC

Resultado:

store_name

Sales

Date

Los Angeles

1500 €

05-Jan-1999

Boston

700 €

08-Jan-1999

San Francisco

300 €

08-Jan-1999

San Diego

250 €

07-Jan-1999

Además del nombre de la columna, podríamos utilizar la posición de la columna (según la consulta SQL) para indicar en qué columna deseamos aplicar la cláusula ORDER BY. La primera columna es 1, y la segunda columna es 2, y así sucesivamente. En el ejemplo anterior, alcanzaremos los mismos resultados con el siguiente comando:

SELECT store_name, Sales, Date
FROM Store_Information
ORDER BY 2 DESC


 

FUNCIONES

Ya que hemos comenzado trabajando con números, la siguiente pregunta natural a realizarse es si es posible hacer cálculos matemáticos con aquellos números, tales como sumas, o sacar un promedio. ¡La respuesta es sí! SQL tiene varias funciones aritméticas, y estas son:

- AVG
- COUNT
- MAX
- MIN
- SUM

La sintaxis para el uso de funciones es,

SELECT "tipo de función"("nombre_columna")
FROM "nombre_tabla"

Por ejemplo, si deseamos obtener la sumatoria de todas las ventas de la siguiente tabla,

Tabla Store_Information

store_name

Sales

Date

Los Angeles

1500 €

05-Jan-1999

San Diego

250 €

07-Jan-1999

Los Angeles

300 €

08-Jan-1999

Boston

700 €

08-Jan-1999

ingresaríamos

SELECT SUM(Sales) FROM Store_Information

Resultado:

SUM(Sales)

2750 €

2 750 € dólares estadounidenses representa la suma de todas las entradas de Ventas: 1500 € + 250 € + 300 € + 700 €.

Además de utilizar dichas funciones, también es posible utilizar SQL para realizar tareas simples como suma (+) y resta (-). Para ingresar datos del tipo caracter, hay también varias funciones de cadenas disponibles, tales como funciones de concatenación, reducción y subcadena. Los diferentes proveedores RDBMS tienen diferentes implementaciones de funciones de cadenas, y es mejor consultar las referencias para sus RDBMS a fin de ver cómo se utilizan estas funciones.


 

COUNT

Otra función aritmética es COUNT. Esto nos permite COUNT el número de filas en una tabla determinada. La sintaxis es,

SELECT COUNT("nombre_columna")
FROM "nombre_columna"

Por ejemplo, si deseamos encontrar el número de entradas de negocios en nuestra tabla,

Tabla Store_Information

store_name

Sales

Date

Los Angeles

1500 €

05-Jan-1999

San Diego

250 €

07-Jan-1999

Los Angeles

300 €

08-Jan-1999

Boston

700 €

08-Jan-1999

ingresamos,

SELECT COUNT(store_name)
FROM Store_Information

Resultado:

Count(store_name)

4

COUNT y DISTINCT pueden utilizarse juntos en una instrucción para determinar el número de las distintas entradas en una tabla. Por ejemplo, si deseamos saber el número de los distintos negocios, ingresaríamos,

SELECT COUNT(DISTINCT store_name)
FROM Store_Information

Resultado:

Count(DISTINCT store_name)

3

 


 

GROUP BY

Ahora regresamos a las funciones de agregados. ¿Recuerda que utilizamos la palabra clave SUM para calcular las ventas totales para todos los negocios? ¿Y si quisiéramos calcular el total de ventas para cada negocio? Entonces, necesitamos hacer dos cosas: Primero, necesitamos asegurarnos de que hayamos seleccionado el nombre del negocio así como también las ventas totales. Segundo, debemos asegurarnos de que todas las sumas de las ventas estén GROUP BY negocios. La sintaxis SQL correspondiente es,

SELECT "nombre1_columna", SUM("nombre2_columna")
FROM "nombre_tabla"
GROUP BY "nombre1-columna"

Ilustremos utilizando la siguiente tabla,

Tabla Store_Information

store_name

Sales

Date

Los Angeles

1500 €

05-Jan-1999

San Diego

250 €

07-Jan-1999

Los Angeles

300 €

08-Jan-1999

Boston

700 €

08-Jan-1999

Deseamos saber las ventas totales para cada negocio. Para hacerlo, ingresaríamos,

SELECT store_name, SUM(Sales)
FROM Store_Information
GROUP BY store_name

Resultado:

store_name

SUM(Sales)

Los Angeles

1800 €

San Diego

250 €

Boston>

700 €

La palabra clave GROUP BY se utiliza cuando estamos seleccionado columnas múltiples desde una tabla (o tablas) y aparece al menos un operador aritmético en la instrucción SELECT. Cuando esto sucede, necesitamos GROUP BY todas las otras columnas seleccionadas, es decir, todas las columnas excepto aquella(s) que se operan por un operador aritmético.


 

HAVING

Otra cosa que la gente puede querer hacer es limitar el resultado según la suma correspondiente (o cualquier otra función de agregado). Por ejemplo, podríamos desear ver sólo los negocios con ventas mayores a 1 500 €, dólares. En vez de utilizar la cláusula WHERE en la instrucción SQL, a pesar de que necesitemos utilizar la cláusula HAVING, que se reserva para funciones de agregados. La cláusula HAVING se coloca generalmente cerca del fin de la instrucción SQL, y la instrucción SQL con la cláusula HAVING. puede o no incluir la cláusula GROUP BY sintaxis para HAVING es,

SELECT "nombre1_columna", SUM("nombre2_columna")
FROM "nombre_tabla"
GROUP BY "nombre1_columna"
HAVING (condición de función aritmética)

Nota: La cláusula GROUP BY es opcional.

En nuestro ejemplo, tabla Store_Information,

Tabla Store_Information

store_name

Sales

Date

Los Angeles

1500 €

05-Jan-1999

San Diego

250 €

07-Jan-1999

Los Angeles

300 €

08-Jan-1999

Boston

700 €

08-Jan-1999

ingresaríamos,

SELECT store_name, SUM(sales)
FROM Store_Information
GROUP BY store_name
HAVING SUM(sales) > 1500

Resultado:

store_name

 

SUM(Sales)

Los Angeles

 

1800 €

 


 

ALIAS

Nos concentraremos ahora en el uso de alias. Hay dos tipos de alias que se utilizan con mayor frecuencia. Alias de columna y alias de tabla.

Resumiendo, los alias de columna existen para ayudar en la organización del resultado. En el ejemplo anterior, cualquiera sea el momento en que vemos las ventas totales, se enumeran como SUM(sales). Mientras esto es comprensible, podemos ver casos donde el título de la columna pueden complicarse (especialmente si incluye varias operaciones aritméticas). El uso de un alias de columna haría el resultado mucho más legible.

El segundo tipo de alias es el alias de tabla. Esto se alcanza al colocar un alias directamente luego del nombre de tabla en la cláusula FROM. Esto es conveniente cuando desea obtener información de dos tablas separadas (el término técnico es 'realizar uniones'). La ventaja de utiliza un alias de tablas cuando realizamos uniones es rápidamente aparente cuando hablamos de uniones.

Antes de comenzar con las uniones, miremos la sintaxis tanto para el alias de columna como de tabla:

SELECT "alias_tabla"."nombre1_columna" "alias_columna"
FROM "nombre_tabla" "alias_tabla"

Brevemente, ambos tipos de alias se colocan directamente después del elemento por el cual generan el alias, separados por un espacio en blanco. Nuevamente utilizamos nuestra tabla, Store_Information,

Tabla Store_Information

store_name

Sales

Date

Los Angeles

1500 €

05-Jan-1999

San Diego

250 €

07-Jan-1999

Los Angeles

300 €

08-Jan-1999

Boston

700 €

08-Jan-1999

Utilizamos el mismo ejemplo que en la sección SQL GROUP BY, salvo que hemos colocado tanto el alias de columna como el alias de tabla:

SELECT A1.store_name Store, SUM(A1.Sales) "Total Sales"
FROM Store_Information A1
GROUP BY A1.store_name

Resultado:

Store

 

Total Sales

Los Angeles

 

1800 €

San Diego

 

250 €

Boston

 

700 €

Note la diferencia en el resultado: los títulos de las columnas ahora son diferentes. Ese es el resultado de utilizar el alias de columna. Note que en vez de “Sum(sales)” de algún modo enigmático, ahora tenemos “Total Sales”, que es más comprensible, como título de columna. La ventaja de utilizar un alias de tablas no es fácil de ver en este ejemplo. Sin embargo, se tornará evidente en la siguiente sección.

 

 Trabajo de taller

1.-          Obtener los nombres y títulos de todos los miembros de la plantilla.

2.-          Obtener el código de identificación de todos los departamentos en los que trabaje personal con un salario menor de $900.

3.-          Obtener la tabla PERSONAL ordenándola según el nombre de los empleados.

4.-          Obtener el nombre y el salario de todos los empleados cuyo salario sea menor que $1000, ordenando el resultado por el título de empleado.

5.-          Obtener toda la información sobre los empleados que trabajen en el departamento de Teología, ordenando el resultado por el título de cada empleado.

6.-          Obtener la identificación de departamento, el nombre del empleado y el salario de todos los empleados, clasificándo el resultado por salario dentro de cada departamento.

7.-          Obtener la identificación de departamento, el título de empleado y el salario para todos los miembros de la plantilla, fijando el nivel de ordenación en departamento (ascendente) y salario (descendente).

8.-          Obtener toda la información sobre todos los miembros de los departamentos de Filosofía y de Teología.

9.-          Obtener toda la información sobre todos los miembros del departamento de Teología cuyo salario exceda de $52.

10.-      Obtener el nombre de todos los miembros del personal cuyo salario sea mayor o igual a $52 pero menor o igual a $100.

11.-      Obtener el nombre y el título de todos los miembros del personal asignados al departamento de Teología que ganen $51 ó $54.

12.-      Obtener el nombre y el salario de todos los miembros del personal cuyo salario sea igual a uno de los siguientes valores: {51, 53, 100, 200, 25000}.

13.-      Obtener los nombres y salarios de los miembros del personal que ganen menos de $100 o más de $1000. Presentar el resultado ordenado por nombre.

14.-      Obtener la identificación de departamento de todos los departamentos que tengan un miembro del personal cuyo salario exceda de $5000. Ignorar, en la presentación, las identificaciones de departamento duplicadas.

15.-      Obtener toda la información sobre todos los miembros del personal cuyo nombre comience con las letras “MA”.

16.-      Obtener toda la información sobre todos los miembros del personal cuyo cargo finalice con 1, 2 ó 3.

17.-      Obtener el nombre y el cargo de todos los miembros del personal que tengan la letra “S” en cualquier lugar de su nombre y de su cargo.

18.-      Obtener la identificación de departamento de todos los departamentos que tengan la letra “E” en la tercera posición, ignorando los valores duplicados.

19.-      Obtener el nombre de todos los miembros del personal que tengan la letra “I” en la quinta posición, presentando el resultado en secuencia descendente.

20.-      Obtener todos los valores del departamento que terminen con la letra “G” seguida de uno o más blancos sobrantes.

  

ENOMBRE ECARGO ESUELDO EDEPT
LUCAS EVANGELISTA 3 53   THEO
MARCOS EVANGELISTA 2 52   THEO
MATEO EVANGELISTA 1 51    THEO
DICK NIX ESTAFADOR 25001   PHIL
HANK KISS BROMISTA 25000   PHIL
JUAN EVANGELISTA 4 54   THEO
ARQUIMEDES AYUDANTE DE LAB. 200   ENG
DA VINCI AYUDANTE DE LAB. 500    --

 
  Hoy habia 14 visitantes (15 clics a subpáginas) ¡Aqui en esta página!  
 
Este sitio web fue creado de forma gratuita con PaginaWebGratis.es. ¿Quieres también tu sitio web propio?
Registrarse gratis