Unidad 3. Consultas simples (I)


3.1. 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 ]] 

3.2. 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. Volveremos más adelante sobre las conexiones remotas.

Febrero-2010
Pág. 3.1

Atrás  Inicio  Adelante






.