Comparativa-Bases-de-datos-

Consultas simples

Introducción

Vamos a empezar por la instrucción que más se utiliza en SQL, la sentencia SELECT. La sentencia SELECT es, con diferencia, la más compleja y potente de las sentencias SQL, con ella podemos recuperar datos de una o más tablas, seleccionar ciertos registros e incluso obtener resúmenes de los datos almacenados en la base de datos. Es tan compleja que la estudiaremos a lo largo de varias unidades didácticas incorporando poco a poco nuevas funcionalidades.

El resultado de una SELECT es una tabla lógica que alberga las filas resultantes de la ejecución de la sentencia.

La sintaxis completa es la siguiente:

SELECT sentencia::=[WITH  <expresion_tabla_comun> [,...n]]

          <expresion_consulta>

          [ORDER BY {expression_columna|posicion_columna [ASC|DESC] }

        [ ,...n ]]

          [COMPUTE 

         {{AVG|COUNT|MAX|MIN|SUM} (expression)}[ ,...n ] [BY expression[ ,...n ]]

          ] 

          [<FOR clausula_for>]

          [OPTION (<query_hint>[ ,...n ])]

<expresion_consulta> ::= 

          {<especificacion_consulta>  | ( <expresion_consulta > ) }

          [ {UNION  [ALL]|EXCEPT|INTERSECT}

              <especificacion_consulta> |  (<expresion_consulta>) [...n ]

          ]

<especificacion_consulta> ::= 

      SELECT [ALL|DISTINCT]

          [TOP expresion [PERCENT] [WITH TIES] ]

          <lista_seleccion>

          [INTO nueva_tabla]

          [FROM { <origen> } [ ,...n ] ]

          [WHERE <condicion_busqueda> ]

          [GROUP BY [ ALL ] expresion_agrupacion [ ,...n ]

          [WITH { CUBE | ROLLUP } ]

          ]

          [HAVING < condicion_busqueda > ]  

Debido a la complejidad de la sentencia (en la sintaxis anterior no se han detallado algunos elementos), la iremos viendo poco a poco, empezaremos por ver consultas básicas para luego ir añadiendo más cláusulas.

Empezaremos por ver las consultas más simples, basadas en una sola tabla y nos limitaremos a la siguiente sintaxis:

SELECT [ALL|DISTINCT]

    [TOP expresion [PERCENT] [WITH TIES]]

    <lista_seleccion>

    FROM  <origen>

    [WHERE  <condicion_busqueda> ]

    [ORDER BY {expression_columna|posicion_columna [ASC|DESC]} [ ,...n ]] 

Origen de datos FROM

De la sintaxis anterior, el elemento <origen> indica de dónde se va a extraer la información y se indica en la cláusula FROM, es la única cláusula obligatoria. En este tema veremos un origen de datos basado en una sola tabla.

La sintaxis será la siguiente:

<origen>::=

      nb_tabla | nb_vista [[ AS ] alias_tabla ] 

nb_tabla representa un nombre de tabla.

nb_vista un  nombre de vista.

Tanto para las tablas como para las vistas, podemos hacer referencia a tablas que están en otras bases de datos (siempre que tengamos los permisos adecuados), en este caso tenemos que cualificar el nombre de la tabla, indicando delante el nombre de la base de datos (Lógica) y el nombre del esquema al que pertenece la tabla dentro de la base de datos.

Por ejemplo: MiBase.dbo.MiTabla se refiere a la tabla MiTabla que se encuentra en el esquema dbo de la base de datos MiBase.

Cuando no se definen esquemas, SQL-Server crea uno por defecto en cada base de datos denominado dbo.

Opcionalmente podemos definir un nombre de alias.

Un nombre de alias (alias_tabla) es un nombre alternativo que se le da a la tabla dentro de la consulta.

Si se define un nombre de alias, dentro de la consulta, será el nombre a utilizar para referirnos a la tabla, el nombre original de la tabla  ya no tendrá validez.

Se utilizan los nombres de alias para simplificar los nombres de tablas a veces largos y también cuando  queremos combinar una tabla consigo misma; ya volveremos sobre los alias de tabla cuando veamos consultas multitabla.

La palabra AS no añade ninguna operatividad, está más por estética.

Podemos escribir:

SELECT ...

FROM tabla1         Sacamos los datos de la tabla tabla1
SELECT ...

FROM tabla1 t1      Sacamos  los datos de la tabla tabla1 y le asignamos un alias de tabla: t1
  SELECT ...

FROM tabla1 AS t1   Es  equivalente a la sentencia anterior.

Si la tabla o la vista están en otra base de datos del mismo equipo que está ejecutando la instancia de SQL Server, se utiliza el nombre cualificado con el formato nbBaseDatos.nbEsquema.nbTabla.

Si la tabla o la vista están fuera del servidor local en un servidor vinculado, se utiliza un nombre de cuatro partes con el formato nbservidor.catalogo.nbEsquema.nbTabla.

La lista de selección

En la lista de selección <lista_seleccion> indicamos las columnas que se tienen que visualizar en el resultado de la consulta.

<lista_seleccion> ::=

       {  *

         | {nombre_tabla|nombre_vista|alias_tabla}.*

           | { [{nombre_tabla|nombre_vista|alias_tabla}.]

        {nb_columna|$IDENTITY|$ROWGUID}

        |<expresion> 

      }[[AS] alias_columna]

          | alias_columna = <expresion> 

       } [ ,...n ]

  

Separamos la definición de cada columna por una coma y las columnas del resultado aparecerán en el mismo orden que en la lista de selección.

Para cada columna del resultado su tipo de datos, tamaño, precisión y escala son los mismos que los de la expresión que da origen a esa columna.

Podemos definir las columnas del resultado de varias formas, mediante:

  • Una expresión simple:
    • una referencia a una función.
    • una variable local
    • una constante
    • una columna del origen de datos,
  • Una subconsulta escalar, que es otra instrucción SELECT que devuelve un único valor y se evalúa para cada fila del origen de datos (esto no lo veremos de momento).
  • Una expresión compleja generada al usar operadores en una o más expresiones simples.
  • La palabra clave *.
  • La asignación de variables con el formato @variable_local = expresión.
  • La palabra clave $IDENTITY.
  • La palabra clave $ROWGUID.

Columnas del origen de datos

Cuando queremos indicar en la lista de selección una columna del origen de datos, la especificamos mediante su nombre simple o nombre cualificado. El nombre cualificado consiste en el nombre de la columna precedido del nombre de la tabla donde se encuentra la columna.

Si en el origen de datos hemos utilizado una vista o un nombre de alias, deberemos utilizar ese nombre.  Es obligatorio utilizar el nombre cualificado cuando el nombre de la columna aparece en más de una tabla del origen de datos.

Ejemplos de consulta simple.

 Listar nombres, oficinas, y fechas de contrato de todos los empleados:

SELECT  nombre, oficina, contrato

FROM  empleados;

El resultado sería:

nombreoficinacontrato
Antonio Viguer121986-10-20
Alvaro Jaumes211986-12-10
Juan Rovira12 1987-03-01
José González121987-05-19
Vicente Pantalla131988-02-12
Luis Antonio11 1988-06-14
Jorge Gutiérrez221988-11-14
Ana Bustamante211989-10-12
María Sunta 111999-10-12
Juan VictorNULL1990-01-13

 Listar una tarifa de productos:

SELECT  idfab, idproducto, descripcion, productos.precio

FROM  productos;

Hemos cualificado la columna precio aunque no es necesario en este caso. 

El resultado sería:

Idfabidproductodescripcionprecio
aci41001arandela0,58
aci41002bisagra0,80
aci41003art t31,12
aci41004art t41,23
aci4100xjunta0,26
aci4100y extractor28,88
aci4100zmont26,25
bic41003manivela6,52
bic41089rodamiento2,25

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies
Hola Bienvenido, envíame un mensaje
Enviar