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


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

 
www... por Anónimo
Respuesta recibida el [08/08/2008 02:57:46]
www

 
Muy Buenos Tutoriales por carlo Reyes
Respuesta recibida el [12/08/2008 12:26:36]
me parecen exelentes los manuales que aca nos presentas,

 
enhorabuena y gracias por flipper
Respuesta recibida el [30/11/2008 07:10:35]
Muy buen manual, para los que teníamos algo de idea de sql, pero no exactamente de transact-sql (que no es lo mismo)

 
Animo con este manual por Ninoska
Respuesta recibida el [04/04/2009 09:50:02]
Buenas noches,  me parece que este manual es excelente me ha ido induciendo poco a poco en sql server 2005 a medida que van dando los ejercicios los elaboro y ejecuto al mismo tiempo para ir comprendiendo mejor.  gracias por el aporte.  sigan adelante.

 
Se puede hacer un Select en tr... por Anónimo
Respuesta recibida el [06/01/2010 04:07:45]
Se puede hacer un Select en trsnact 
donde el From sea una variable

 
En transact sql tienes variabl... por Devjoker
Respuesta recibida el [07/01/2010 01:56:47]
En transact sql tienes variables de tipo tabla, de forma que puedes consultar Select * from @datos - siendo @datos una variable de tipo tabla:
Aunque me parece que lo quieres es SQL Dinamico ...

http://www.devjoker.com/contenidos/Tutorial-de-Transact-SQL/308/SQL-dinámico-en-Transact-SQL.aspx


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: 30602 Fecha de publicación: 05/07/2007
Pedro Herrarte, es consultor independiente, ofreciendo servicios 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.




Visitas: 111 | Comentarios: 3 | Archivo: Articulos
02/02/2010 iPad vs Telesketch
Visitas: 812 | Comentarios: 2 | Archivo: Articulos
Categorias: Humor
Visitas: 767 | Comentarios: 3 | Archivo: Articulos
Visitas: 3185 | Comentarios: 2 | Archivo: Articulos
Categorias: C#
Visitas: 14575 | Comentarios: 7 | Archivo: Articulos
Categorias: C#|Seguridad
Visitas: 1502 | Comentarios: 3 | Archivo: Articulos
Visitas: 697 | Comentarios: 2 | Archivo: Articulos
Visitas: 369 | Comentarios: 0 | Archivo: Articulos
Visitas: 2035 | Comentarios: 2 | Archivo: Articulos
Categorias: C#

Útimos temas recibidos en los foros ...
Solicitud certificado de afiliaciones a pensiones y cesantias proteccion por hz ... [Actualidad] 62 10/02/2010
certificado de pensiones del bbva horizonte por danger ... [Actualidad] 127 12/01/2010
certificacion cesantias porvenir por martha perez ... [Actualidad] 6 04/03/2010
cerificado fondo horizonte de pensiones y cesantias por carlos fideligno torres herrera ... [Actualidad] 148 18/01/2010
certificado de afiliacion por EDDY ... [Actualidad] 0 14/03/2010
Cursores por nopodes ... [ORACLE] 0 14/03/2010
peticion urgente mi nombre es juan pablo osorio cardona cc 71115218 por juancho ... [Actualidad] 0 14/03/2010
peticion por juancho ... [Actualidad] 0 14/03/2010
estrato de pencion por carlos antonio mateus gomez ... [Actualidad] 0 14/03/2010
quiero aprender c# por alcapego ... [C#] 4 16/02/2008
certificado pensiones horizonte por angela patricia rodriguez ... [Actualidad] 140 26/01/2010
certificado de penciones y cesantias por fredy ... [Actualidad] 2 29/01/2010

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 ...
12/01/2006 Introducción a PLSQL    forma parte de...Tutorial PL/SQL
22/10/2005 Insertar datos. INSERT    forma parte de...Tutorial SQL
11/10/2006 Métodos    forma parte de...Tutorial C#
13/10/2006 Constructores    forma parte de...Tutorial C#
25/08/2007 Variables en Transact SQL    forma parte de...Tutorial de Transact SQL
22/10/2005 Vistas    forma parte de...Tutorial SQL
14/07/2007 Como encriptar texto y variables usando algoritmos estandard como DES o TRIPLEDES
21/11/2007 Desencriptar Texto y variables con .NET VB y C# (segunda parte)
13/08/2007 Reiniciar un campo identity en SQL Server
01/06/2007 Autogenerado ESSALUD (Solución)

 

Encuesta
¿A que perfil te adaptas mejor?




[Ver] [Votar]