InicioArticulos y noticiasBases de datosProgramaciónForosInternetServiciosContratacionEmail
Tutorial SQL
Introducción SQL
El lenguaje SQL
Componentes del lenguaje SQL
Tablas
Indices
Vistas
Consultar datos. SELECT
Insertar datos. INSERT
Borrado de datos. DELETE
Actualización de datos. UPDATE
Consultas combinadas. JOINS
Consultas agregadas
Subconsultas
También puedes ver ...
¿Qué es el Collation en SQL ?
Como encriptar o cifrar cadenas y campos en SQL server 2005 ENCRYPTBYPASSPHRASE y DECRYPTBYPASSPHRASE
SQL Prompt - Intellisense para SQL Server
Borrado de datos. DELETE
Consultas agregadas
Introducción SQL
El lenguaje SQL
Componentes del lenguaje SQL
Tablas
Indices

Afiliados
La Web del programador
MundoProgramacion


 

Lenguaje de manipulación de datos (I)

Consulta de datos.

    El proceso más importate que podemos llevar a cabo en una base de datos es la consulta de los datos. De nada serviría una base de datos si no puedieramos consultarla. Es además la operación que efectuaremos con mayor frecuencia.

    Para consultar la información SQL pone a nuestra disposición la sentencia SELECT.

[arriba]


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 ]
             <nombre_campo> [{,<nombre_campo>}]
FROM <nombre_tabla>|<nombre_vista
        [{,<nombre_tabla>|<nombre_vista>}]
[WHERE <condicion> [{ AND|OR <condicion>}]]
[GROUP BY <nombre_campo> [{,<nombre_campo >}]]
[HAVING <condicion>[{ AND|OR <condicion>}]]
[ORDER BY <nombre_campo>|<indice_campo> [ASC | DESC]
                [{,<nombre_campo>|<indice_campo> [ASC | DESC ]}]]

 

    Veamos por partes que quiere decir cada una de las partes que conforman la sentecia.

 
Significado
SELECT

Palabra clave que indica que la sentencia de SQL que queremos ejecutar es de selección. 

  ALL

Indica que queremos seleccionar todos los valores.Es el valor por defecto y no suele especificarse casi nunca.

DISTINCT 

Indica que queremos seleccionar sólo los valores distintos.

FROM

Indica la tabla (o tablas) desde la que queremos recuperar los datos. En el caso de que exista más de una tabla se denomina a la consulta "consulta combinada" o "join". En las consultas combinadas es necesario aplicar una condición de combinación a través de una cláusula WHERE.

WHERE

Especifica una condición que debe cumplirse para que los datos sean devueltos por la consulta. Admite los operadores lógicos AND y OR.

GROUP BY

Especifica la agrupación que se da a los datos. Se usa siempre en combinación con funciones agregadas.

HAVING

Especifica una condición que debe cumplirse para los datosEspecifica una condición que debe cumplirse para que los datos sean devueltos por la consulta. Su funcionamiento es similar al de WHERE pero aplicado al conjunto de resultados devueltos por la consulta. Debe aplicarse siempre junto a GROUP BY y la condicion debe estar referida a los campos contenidos en ella.

ORDER BY

Presenta el resultado ordenado por las columnas indicadas. El orden puede expresarse con ASC (orden ascendente) y DESC (orden descendente). El valor predeterminado es ASC.

    Para formular una consulta a la tabla tCoches (creada en el capítulo de tablas) y recuperar los campos matricula, marca, modelo, color, numero_kilometros, num_plazas debemos ejecutar la siguiente consulta. Los datos seran devueltos ordenados por marca y por modelo en orden ascendente, de menor a mayor.


SELECT matricula
                marca,
                modelo,
                color,
                numero_kilometros,
                num_plazas 
FROM tCoches
ORDER BY marca,modelo;

    La palabra clave FROM  indica que los datos serán recuperados de la tabla tCoches. Podriamos haber especificado mas de una tabla, pero esto se verá en el apartado de consultas combinadas.

    Tambien podríamos haber simplicado la consulta a través del uso del comodin de campos, el asterisco "*".


SELECT *
FROM tCoches
ORDER BY marca,modelo;

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

[arriba]


La cláusula WHERE

    La cláusula WHERE es la instrucción que nos permite filtrar el resultado de una sentencia SELECT.  Habitualmente no deseamos obtener toda la información existente en la tabla, sino que queremos obtener sólo la información que nos resulte util es ese momento. La cláusula WHERE filtra los datos antes de ser devueltos por la consulta.

    En nuestro ejemplo, si queremos consultar un coche en concreto debemos agregar una cláusula WHERE. Esta cláusula especifica una o varias condiciones que deben cumplirse para que la sentencia SELECT devuelva los datos. Por ejemplo, para que la consulta devuelva sólo los datos del coche con maricula M-1525-ZA debemos ejecutar la siguiente sentencia:


SELECT matricula, 
                marca,
                modelo,
                color,
                numero_kilometros,
                num_plazas 
FROM tCoches
WHERE matricula = 'M-1525-ZA';

             Cuando en una cláusula where queremos incluir un tipo texto, debemos incluir el valor entre comillas simples.

    Además, podemos utilizar tantas condiciones como queramos, utilizando los operadores lógicos AND y OR . El siguiente ejemplo muestra una consulta que devolverá los coches cuyas matriculas sean M-1525-ZA o bien M-2566-AA.


SELECT
matricula, 
             marca,
             modelo,
             color,
             numero_kilometros,
             num_plazas 
FROM tCoches
WHERE matricula = 'M-1525-ZA' 
        OR matricula = 'M-2566-AA' ;

    Además una condición WHERE puede ser negada a través del operador lógico NOT. La siguiente consulta devolverá todos los datos de la tabla tCohes menos el que tenga matricula M-1525-ZA.


SELECT
matricula, 
             marca,
             modelo,
             color,
             numero_kilometros,
             num_plazas 
FROM tCoches
WHERE NOT matricula = 'M-1525-ZA'  ;

    Podemos tambien obtener las diferentes marcas y modelos de coches ejecutando la consulta.


SELECT DISTINCT marca, 
                                  modelo
FROM tCoches;

    La ver los valores distintos. En el caso anterior se devolveran lpalabra clave DISTINCT indica que sólo queremos os valores distintos del par formado por los campos marca y modelo.

[arriba]


La cláusula ORDER BY

    Como ya hemos visto en los ejemplos anteriores podemos especificar el orden en el que serán devueltos los datos a través de la cláusula ORDER BY.


SELECT matricula, 
                marca,
                modelo,
                color,
                numero_kilometros,
                num_plazas 
FROM tCoches
ORDER BY marca ASC,modelo DESC;

    Como podemos ver en el ejemplo podemos especificar la ordenación ascendente o descendente a través de las palabras clave ASC y DESC. La ordenación depende del tipo de datos que este definido en la columna, de forma que un campo númerico será ordenado como tal, y un alfanúmerico se ordenará de la A a la Z, aunque su contenido sea númerico. De esta forma el valor 100 se devuelve antes que el 11.

    También podemos especificar el en la cláusula ORDER BY el índice númerico del campo dentro del la sentencia SELECT para la ordenación, el siguiente ejemplo ordenaría los datos por el campo marca, ya que aparece en segundo lugar dentro de la lista de campos que componen la SELECT.


SELECT matricula, 
                marca,
                modelo,
                color,
                numero_kilometros,
                num_plazas 
FROM tCoches
ORDER BY 2;

    El resto de opciones que podemos especificar al construir sentencias SELECT se irán presentando en los siguientes capitulos de este tutorial.

[arriba]



Inicio | Tutorial SQL VistasTutorial SQL Insertar datos. INSERT Versión para imprimir Foros de consulta

 
COMO SE HACE LA INSERCIÓN DE U... por COMO SE HACE LA INSERCIÓN DE UN CAMPO
Respuesta recibida el [25/05/2007 10:25:46]
COMO SE HACE LA INSERCIÓN DE UN CAMPO

 
Que padre por Betho
Respuesta recibida el [13/06/2007 02:42:23]
Con respecto a SQL creo que esta muy bien su trabajao puesto que esta muy bien explicado Pero quisiera saber mas de C#.NET

 
Joder!¿Te parece malo o corto ... por Anónimo
Respuesta recibida el [14/06/2007 02:05:40]
Joder!¿Te parece malo o corto el tutorial de c#? 

 
Como??? por Guanxupi
Respuesta recibida el [21/08/2007 05:02:23]
Como se introducen los datos????

 
Gracias, Peicion por JcCortez
Respuesta recibida el [18/09/2007 01:13:22]
Me parece fantastico el tutorial y el sitio , me podrias enviar por correo los tutoriales de T-SQL, SQL, Oracle e introduccion a las bases de datos, Gracias

 
correo peticion anterioir por JcCortez
Respuesta recibida el [18/09/2007 01:14:49]
mi correo es jccortez@cafegitane.com o 
jccortezp@hotmail.com Gracias

 
ERROR EN LA SENTENCIA INTERSECT por JAIME CASTELLANOS
Respuesta recibida el [01/10/2007 04:05:52]
TENGO DOS TABLAS CLIENTESMEXICO Y CLIENTESESPAÑA AMBAS TIENE UN CAMPO EN COMUN NOMBRE COMO PUEDO APLICAR LA INTERSECCION (ALGEBRA RELACIONAL EN ESTE EJEMPLO); HICE: SELECT NOMBRE FROM EMPLEADOSMEXICO INTERSECT SELECT NOMBRE FROM EMPLEADOSESPAÑA; PERO ME MARCA UN ERROR DICE QUE ESTA MAL LA INSTRUCCION SELECT ME PODRIAN AYUDAR GRACIAS

 
sentencia intersec para JAIME CATELLANOS por alfonso perez
Respuesta recibida el [15/03/2008 12:32:41]
MIRA JAIME PARA CRUZAR LA TABLA SOLO PON ESTO

SELECT *
FROM clientesmexico a, clientesespana b
WHERE a.nombre=b.nombre

 
SI NO QUEDA ASI, PONLO ASI JAI... por alfonso perez
Respuesta recibida el [15/03/2008 12:35:19]
SI NO QUEDA ASI, PONLO ASI JAIME CASTELLANOS

SELECT a.*
FROM clientesmexico a, clientesespana b
WHERE a.nombre=b.nombre

 
Es muy pobre por Hacker.eddy
Respuesta recibida el [17/03/2008 02:47:27]
Este tutorial es pura bla,bla, porque no pones ejemplos definidos ya. no teoria. porque este tutorial esta hecho para novatos, voy a hackear su pagina con inyecciones sql ok.

 
ayuda en una consulta por zulma
Respuesta recibida el [17/03/2008 03:18:23]
quiero hacer una consulta de 4 campos en programa esta php la BD en fox, no he podido ayuda porfa
// consulta SQL a la tabla "items" que se encuentra en la base de datos
$sql="Select * from items";

 
no entendi el DISTINCT por zhadown
Respuesta recibida el [20/03/2008 10:46:53]
que debuelve esta sentencia los balores no repetidos? o las combinaciones de ambos no  repetidos?
en tu ejemplo traera marcas y modelos que no se repitan??

 
quizas con join por david
Respuesta recibida el [03/04/2008 02:44:18]
Quizas debes usar el join, que es lo que yo ando buscando.

inyecciones sql, jajaja

por cierto, insultais mucho, como en muchos otros sitios.habra algo comun en todos estos que insultan?quizas el pais de nacimiento?....volvamos al tema.....

busca "join"

 
AYUDA PLIZ por ZHADOWN
Respuesta recibida el [09/04/2008 04:29:11]
select crt.codigo_ejecutivo,
to_char(cal.fecha_anterior, 'yyyy-mm'),
'NNN' as tipo,
'' as cod_eje_sup
from vsn_cdi_crt_a_act_tmp crt,
vsn_cfg_cal_a_par cal
where crt.codigo_ejecutivo not in (select tpe.codigo_ejecutivo
from vsn_cdi_tpe_f_par_tmp tpe
where tpe.year_month <> to_char(add_months(cal.fecha_anterior, -1), 'yyyy-mm')));
Q SIGNIFICA EL 'NNN' Y '' EN ESTA SENTENCIA ???

 
respuesta por para zhadown
Respuesta recibida el [11/04/2008 03:32:28]
no eso significa (no necesito nada)(NNN) SI ERES BRUTO VALE SOY DE COLOMBIA 

 
como se empeza? por lennin
Respuesta recibida el [14/04/2008 08:24:15]
todo esta bien pedro pero si m gustaria que colocaras paso a paso como se empieza a crear todo... dede loa mas basico q es crear una base de datos hasta introducir los codigos q en este caso son los q tu nos describess¡¡¡ quiero aprender y por eso doy esta sugerencia de verdad¡¡¡ leo muchoooo pero no hayo como empezar a hacer esto¡¡¡ gracias de verdad...por favor toma esta sugerencia y veras q a muchos ayudaras.. tngo 17 años y m quiero

 
SELECT por Gerardo
Respuesta recibida el [14/04/2008 09:33:13]
Tengo una tabla que presenta una columna, donde se prsentan valores validos y otros en blanco, he utilizado null y '' y en ninguno de los dos me muestra valores, ha sabiendas que hay registros en esa condici{on que puede suceder que no me los muestre

 
lennin por mi buen consejo para pedro
Respuesta recibida el [23/04/2008 03:19:01]
hola se ve q no has leido mi comentario bueh¡¡gracias por la pagina aunq de nada m ha ayudado tengo q buscar ayuda por otro lado gracias¡¡¡Pedro sigue asi pero mira q el q oye consejos llega lejos¡¡ cuidate esta todo bien soy lennin

 
Hola Lennin, si he leido tu co... por Devjoker
Respuesta recibida el [23/04/2008 03:27:27]
Hola Lennin, si he leido tu comentario y lo tenemos en cuenta - pero lamanetablemente no disponemos del tiempo necesario. Escribir un tutotrial de estas caracteristicas lleva mucho tiempo.
Por otro lado, el tutorial es de SQL no de un gestor de bases de datos, veras que crear bases de datos difiere de SQL Server, a Oracle, a Access ...

 
Hola, este tuorial sirve para ... por Anónimo
Respuesta recibida el [22/06/2008 02:56:49]
Hola, este tuorial sirve para cuando ya se tiene un base de datos conectada, pero como conecto la base de datos, tambien funciona cuando conecto automaticamente con el asistente en c#? en q parte se pone el codigo (recien empiezo a conocer el lenguaje) porfavor ayuda

 
NO entendi por Erik
Respuesta recibida el [17/07/2008 10:56:43]
 Porfa.. expliquen mejor

 
COMO NO TE ENCONTRE ANTES por TANQUE
Respuesta recibida el [22/07/2008 02:46:08]
DEBO RENDIR BASES DE DATOS EN UNA HORA Y ME LAMENTO NO HABER ENCONTRADO ESTA PAGINA ANTES... EN 20 MIN ME QUEDO TODO MUCHO MAS CLARO QUE EN 4 MESES DE CURSADO

 
ppllklk por lkjk
Respuesta recibida el [02/08/2008 12:02:28]
vbcc gjf jhgf jhgfjh ghfghghfffh   fghf ghf ffhj .
h fghf hj?

 
ayuda por alexis
Respuesta recibida el [10/08/2008 09:21:07]
Hola, tengo una duda, en el ejemplo de alfonso perez 
a.*FROM clientesmexico a, clientesespana b
WHERE a.nombre=b.nombre

que son la a y la b ?? porque se utilizan??muchas gracias a quien pueda contestarme


 
Idat por Carlo Reyes Shapiama
Respuesta recibida el [12/08/2008 01:37:14]
Es muy bueno y entendible lo que nos Muestras en tus tutoriales, lleva al lector de una manera sencilla y concreta a  entender poco a poco el SQL, inclusive para personas que no tiene muchos conocimientos sobre sql o programacion.Muy Bueno Todo

 
Referencias FROM por Vigo
Respuesta recibida el [19/08/2008 03:19:27]
En el ejamplo de alfonzo perez se utiliza a y b para manejarlos como referencias a las tablas asociadas en la seccion FROM, de esta manera nos evitamos el nombre completo de la tabla en las demas secciones del estatuto, mas que nada por que mensiona que existen dos campos con el mismo nombre en las tablas 

 
me voy a quedar dormiido:(... por pollo
Respuesta recibida el [26/09/2008 04:16:21]
me voy a quedar dormiido:(


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

Título:


Para preguntar utiliza los foros.



Inicio | Tutorial SQL VistasTutorial SQL Insertar datos. INSERT Versión para imprimir

Consultar datos. SELECT
Autor: Pedro Herrarte Sánchez
Visitas: 75016 Fecha de publicación: 22/10/2005
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.




Visitas: 328 | Comentarios: 0 | Archivo: Articulos
Categorias: Visual Basic .NET|C#|ASP.NET|ASP.NET|Programación|ADO.NET
27/09/2008 Navegando ....
Visitas: 87 | Comentarios: 0 | Archivo: Articulos
Categorias: Humor
Visitas: 210 | Comentarios: 0 | Archivo: Articulos
Categorias: Visual Basic .NET|C#|ASP.NET|ASP.NET|Programación|WCF
Visitas: 954 | Comentarios: 0 | Archivo: Articulos
Categorias: C#
Visitas: 209 | Comentarios: 0 | Archivo: Articulos
Categorias: JavaScript|ASP.NET
Visitas: 682 | Comentarios: 0 | Archivo: Articulos
Categorias: Windows XP|Linux|Windows Vista
Visitas: 458 | Comentarios: 0 | Archivo: Articulos
Categorias: Linux|BSD
Visitas: 238 | Comentarios: 0 | Archivo: Articulos
Categorias: Programación|Actualidad
18/08/2008 SQL Server 2008
Visitas: 1151 | Comentarios: 1 | Archivo: Articulos
Categorias: Transact-SQL
Visitas: 797 | Comentarios: 0 | Archivo: Articulos
Categorias: C#|ADO.NET|LinQ

Útimos temas recibidos en los foros ...
yo por nikoo ... [C#] 0 11/10/2008
Manual Visual Studio.NET por Shiko ... [Visual Basic .NET] 19 26/10/2006
conexión a LDAP por mari90 ... [ASP.NET] 21 05/02/2007
Coastal Inversiones SAC Coastal Vacations Oportunidad de Negocios por lecasur ... [ASP.NET] 1 11/10/2008
hacer el nombre de una tabla variable por leicolei ... [SQL Server] 2 10/10/2008
ayuda por yo ... [C#] 2 09/10/2008
Mostar nombre en una sesion de usuario por jhors ... [ASP.NET] 1 10/10/2008
Analista por Rolando ... [SQL Server] 0 10/10/2008
SQL dinámico en TRIGGERS por Alastor ... [ORACLE] 2 03/10/2008
Crystal Reports 8.5 por selvinalberto ... [Visual Basic 6.0] 0 10/10/2008
Agregar Columnas a un datagridview por Tony ... [Visual Basic .NET] 3 20/11/2007
Problema cargando un pl/sql Embebido en Pro*C por ejrivas ... [ORACLE] 0 10/10/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 ...
29/09/2006 Common Type System (CTS)    forma parte de...Conceptos generales .NET
22/10/2005 Actualización de datos. UPDATE    forma parte de...Tutorial SQL
24/05/2006 Cursores Explicitos en PL/SQL    forma parte de...Tutorial PL/SQL
24/05/2006 Cursores Implicitos en PL/SQL    forma parte de...Tutorial PL/SQL
23/05/2006 Cursores en PL/SQL    forma parte de...Tutorial PL/SQL
04/03/2006 Bloques PL/SQL    forma parte de...Tutorial PL/SQL
01/04/2006 Estructuras de control en PL/SQL    forma parte de...Tutorial PL/SQL
13/10/2006 Indizadores    forma parte de...Tutorial C#
31/03/2006 Operadores en PL/SQL    forma parte de...Tutorial PL/SQL
31/03/2006 Tipos de datos en PL/SQL    forma parte de...Tutorial PL/SQL

 

Encuesta
¿A que perfil te adaptas mejor?
[Ver] [Votar]