InicioArticulos y noticiasBases de datosProgramaciónForosInternetServiciosContratacionEmail
Tutorial de Transact SQL
Introducción a Transact SQL
Programación con Transact SQL
Fundamentos de Transact SQL
Tipos de datos en Transact SQL
Variables en Transact SQL
Equivalencia de datos de SQL Server y .NET
Operadores en Transact SQL
Estructuras de control en Transact SQL
Control de errores en Transact SQL
Consultar datos en Transact SQL
Consultas agregadas
Select FOR XML
Operaciones con conjuntos.
Insertar datos en Transact SQL
Actualizar datos en Transact SQL
Borrar datos en Transact SQL
Transacciones en Transact SQL
Procedimientos almacenados en Transact SQL
Funciones en Transact SQL
Funciones integradas de Transact SQL (I)
Triggers en Transact SQL
Cursores en Transact SQL
SQL dinámico en Transact SQL
SQL
  Tutorial SQL
SQL Server
  Tutorial de Transact-SQL
ORACLE
  Tutorial PL/SQL
.NET
  Introducción a.NET
  Conceptos generales .NET
  Tutorial C#
  LinQ
  WCF
Reina Roja
  Humor
  Bibliografia
  Acerca de ...

Afiliados
La Web del programador
MundoProgramacion


 

Consultar datos en Transact SQL

La sentencia SELECT

    La sentencia SELECT nos permite consultar los datos almacenados en una tabla de la base de datos.

    El formato de la sentencia select es:


SELECT [ALL | DISTINCT ][ TOP expression [ PERCENT ] [ WITH TIES ] ] 
             <nombre_campos>
FROM <nombre_tabla>
[ INNER | LEFT [OUTER]| RIGHT [OUTER] | CROSS]
[JOIN ] <nombre_tabla> ON <condicion_join>[ AND|OR <condicion>]
[WHERE <condicion> [ AND|OR <condicion>]]
[GROUP BY <nombre_campos>]
[HAVING <condicion>[ AND|OR <condicion>]]
[ORDER BY <nombre_campo> [ASC | DESC]

    El siguiente ejemplo muestra una consulta sencilla que obtiene el código y la "familia" de una tabla llamada familias (representaría familias de productos por ejemplo).


SELECT CO_FAMILIA, FAMILIA

FROM FAMILIAS


    El uso del asterisco indica que queremos que la consulta devuelva todos los campos que existen en la tabla.


SELECT
*

FROM FAMILIAS

    Ahora vamos a realizar una consulta obteniendo además de los datos de familias, los datos de las categorias y los productos.


SELECT
*
FROM
FAMILIAS

INNER JOIN CATEGORIAS

ON CATEGORIAS.CO_FAMILIA = FAMILIAS.CO_FAMILIA

INNER JOIN PRODUCTOS

ON PRODUCTOS.CO_CATEGORIA = CATEGORIAS.CO_CATEGORIA

    La combinación se realiza a través de la clausula INNER JOIN, que es una clasula exclusiva, es decir las familias que no tengan categorias y productos asociados no se devolveran.

    Si queremos realizar la consulta para que no sea exclusiva, tenemos que utilizar LEFT JOIN. El uso de la palabra reservada OUTER es opcional.


SELECT
*

FROM FAMILIAS

LEFT OUTER JOIN CATEGORIAS

ON CATEGORIAS.CO_FAMILIA = FAMILIAS.CO_FAMILIA

LEFT OUTER JOIN PRODUCTOS

ON PRODUCTOS.CO_CATEGORIA = CATEGORIAS.CO_CATEGORIA

    Los registros que no tengan datos relacionados en una consulta LEFT JOIN devolveran en valor null en los campos que correspondan a las tablas en las que no tienen dato.

    También podemos forzar un producto cartesiano (todos con todos) a través de CROSS JOIN.


SELECT
* FROM FAMILIAS

CROSS JOIN CATEGORIAS

La cláusula WHERE

    La cláusula WHERE es la instrucción que nos permite filtrar el resultado de una sentencia SELECT.


SELECT
CO_FAMILIA, FAMILIA

FROM FAMILIAS

WHERE CO_FAMILIA = 1

    Por supuesto, podemos especificar varias condiciones para el WHERE:


SELECT
*

FROM FAMILIAS

WHERE CO_FAMILIA = 1

OR CO_FAMILIA = 2

    Podemos agrupar varias valores para una condicion en la clausula IN:


SELECT
*

FROM FAMILIAS

WHERE CO_FAMILIA IN ( 1 , 2)

    La clausula WHERE se puede utilizar conjuntamente con INNER JOIN, LEFT JOIN ...


SELECT
FAMILIAS.CO_FAMILIA,

FAMILIAS.FAMILIA

FROM FAMILIAS

INNER JOIN CATEGORIAS

ON CATEGORIAS.CO_FAMILIA = FAMILIAS.CO_FAMILIA

WHERE FAMILIAS.CO_FAMILIA > 1

    Siempre que incluyamos un valor alfanumerico para un campo en la condición WHERE este debe ir entre comillas simples:


SELECT
*

FROM FAMILIAS

WHERE FAMILIA = 'FAMILIA 1'

    Para consultar campos alfanumericos, es decir, campos de texto podemos utilizar el operador LIKE conjuntamente con comodines.


SELECT
*

FROM FAMILIAS

WHERE FAMILIA LIKE 'FAM%'

    Los comodines que podemos utilizar en son los siguientes:

  • % , representa cualquier cadena de texto de cero o más caracteres de cualquier longitud.
  • _ , representa un caracter.
  • [a-d], representa cualquier caracter del intervalo a-d.
  • [abcd], representa cualquier caracter del grupo abcd.
  • [^a-d], representa cualquier caracter diferente del intervalo a-d.
  • [^abcd], representa cualquier caracter distinto del grupo abcd.

    También podemos obtener los valores distintos utilizando DISTINCT.


SELECT
DISTINCT FAMILIA -- Devuelve los distintos valores de FAMILIA

FROM FAMILIAS

    Podemos limitar el número de registros que devuelve la consulta a través de la clausula TOP. La clausula TOP admite como parámetros un valor numérico entero o un porcentaje (sólo a partir de la version 2005)


SELECT
TOP 10 * -- Devuelve 10 registros

FROM FAMILIAS


SELECT
TOP 50 PERCENT * -- Devuelve el 50% de los registros

FROM FAMILIAS

    La clausula TOP se puede combinar con WITH TIES en consultas agregadas.

La cláusula ORDER BY

    Podemos especificar el orden en el que serán devueltos los datos a través de la cláusula ORDER BY.


SELECT
CO_FAMILIA, FAMILIA

FROM FAMILIAS

ORDER BY FAMILIA DESC

    También podemos indicar el índice del campo en la lista de selección en lugar de su nombre :

 

SELECT CO_FAMILIA, FAMILIA

FROM FAMILIAS

ORDER BY 2 DESC -- Ordena por FAMILIA


Inicio | Tutorial de Transact SQL Control de errores en Transact SQLTutorial de Transact SQLConsultas agregadas Versión para imprimir Foros de consulta


Añadir comentario ... Para preguntar utiliza los foros
Autor:

Título:


Para preguntar utiliza los foros.



Inicio | Tutorial de Transact SQL Control de errores en Transact SQLTutorial de Transact SQLConsultas agregadas Versión para imprimir

Consultar datos en Transact SQL
Autor: Pedro Herrarte Sánchez
Visitas: 10987 Fecha de publicación: 05/07/2007
Pedro Herrarte, es consultor independiente, ofreciendo sercivios de consultoría, análisis, desarrollo y formación.

Posee mas de diez años de experiencia trabajando para las principales empresas de España.

Es especialista en tecnologías .NET, entornos Web, bases de datos (SQL Server y ORACLE) e integración de sistemas.

Es experto en desarrollo (C#, ASP.NET, VB.Net, T-SQL, PL/SQL, , ASP, CGI , C, Pro*C, Java, Essbase, Vignette, PowerBuilder y Visual Basic ...) y bases de datos (SQL Server y ORACLE).

Es fundador, diseñador y programador de www.devjoker.com.




18/08/2008 SQL Server 2008
Visitas: 39 | Comentarios: 0 | Archivo: Articulos
Categorias: Transact-SQL
Visitas: 131 | Comentarios: 0 | Archivo: Articulos
Categorias: C#|ADO.NET|LinQ
Visitas: 161 | Comentarios: 1 | Archivo: Articulos
Categorias: Humor
Visitas: 154 | Comentarios: 0 | Archivo: Articulos
Categorias: WCF
Visitas: 123 | Comentarios: 0 | Archivo: Articulos
Categorias: WCF
Visitas: 210 | Comentarios: 0 | Archivo: Articulos
Categorias: ASP.NET
Visitas: 278 | Comentarios: 5 | Archivo: Articulos
Categorias: ASP.NET
Visitas: 4990 | Comentarios: 4 | Archivo: Articulos
Categorias: C#|Transact-SQL|LinQ
Visitas: 602 | Comentarios: 1 | Archivo: Articulos
Categorias: Visual Studio
Visitas: 1402 | Comentarios: 1 | Archivo: Articulos
Categorias: Transact-SQL

Útimos temas recibidos en los foros ...
MAQUINAS VIRTUALES por victor ... [WIN 98/NT/2000/XP] 0 19/08/2008
Y lo mismo en WEB por systemat ... [C#] 1 18/08/2008
Manual del minicom de Linux con fotos. por Meta ... [UNIX] 4 17/08/2008
PROGRAMACION por JUANMA ... [Visual Basic .NET] 1 19/08/2008
Conectar ASP con B.D Informix por Franco ... [ASP] 9 02/05/2007
Codigo salir por Jazmin ... [ASP.NET] 1 18/08/2008
EXPORTAR DATOS A ARCHIVOS PLANOS. por WIX ... [ORACLE] 10 06/08/2007
formulario por artdark ... [C#] 2 04/08/2008
Codigo salir por Jazmin ... [ASP.NET] 0 18/08/2008
cambiar de modo un gried view por ivan ... [ASP.NET] 0 18/08/2008
ayuda urgente porfavor por vicancer ... [ASP.NET] 0 18/08/2008
pollo por hajaj ... [Actualidad] 1 15/08/2008

Access CGI JSP ORACLE UNIX
Actualidad HTML/DHTML/XHTML LINUX PHP Visual Basic .NET
ASP ISAPI MS DOS Power Builder Visual Basic 6.0
ASP.NET Java mySQL SQL WIN 98/NT/2000/XP
C# JavaScript Opinion SQL Server

devjoker  Te recomendamos además ...
03/10/2006 Programacion con C#    forma parte de...Tutorial C#
19/10/2006 Llamadas asíncronas    forma parte de...Tutorial C#
31/03/2006 Tipos de datos en PL/SQL    forma parte de...Tutorial PL/SQL
03/10/2006 Definición de clases    forma parte de...Tutorial C#
03/10/2006 Creación de objetos    forma parte de...Tutorial C#
23/05/2006 Cursores en PL/SQL    forma parte de...Tutorial PL/SQL
29/04/2008 Leer un campo XML de SQL Server 2005 con C#
21/02/2007 Subconsultas    forma parte de...Tutorial SQL
22/10/2005 El lenguaje SQL    forma parte de...Tutorial SQL
16/10/2006 Delegados y eventos    forma parte de...Tutorial C#

 

Encuesta
Si trabajas con .NET ¿Que entorno utilizas?
[Ver] [Votar]