Sunteți pe pagina 1din 4

Seleccionar los datos a cargar de una tabla (02/May/04)

Esta es la forma ms sencilla y habitual de usar las rdenes SQL. Normalmente usaremos este tipo de instrucciones para cargar los datos en un DataTable (si trabajamos con ADO.NET o en un Recordset si trabajamos con ADO o DAO). Por ejemplo: SELECT * FROM Clientes WHERE Provincia = 'Madrid' Este cdigo SQL selecciona los registros de la tabla Clientes que residan en Madrid. Los campos que devolvera seran todos, ya que hemos indicado * despus de SELECT. Si slo queremos que devuelva los datos contenidos en los campos Nombre, Apellidos y NIF haramos esto otro: SELECT Nombre, Apellidos, NIF FROM Clientes WHERE Provincia = 'Madrid' TIP: Por rendimiento, es recomendable devolver slo los campos que realmente necesitamos en lugar de devolver todos los campos.

Clasificar los datos seleccionados (ORDER BY) (02/May/04)


Tambin podemos indicar que esos datos se devuelvan clasificados por cualquier campo, por ejemplo por los Apellidos de forma ascendente (la forma predeterminada): SELECT Nombre, Apellidos, NIF FROM Clientes WHERE Provincia = 'Madrid' ORDER BY Apellidos Pero si queremos los datos de mayor a menor (descendente), le aadimos la instruccin DESC despus del campo por el que queremos clasificar: SELECT Nombre, Apellidos, NIF FROM Clientes WHERE Provincia = 'Madrid' ORDER BY Apellidos DESC O si queremos que la clasificacin se haga usando dos campos, esos campos los indicaremos separados por comas: SELECT Nombre, Apellidos, NIF FROM Clientes WHERE Provincia = 'Madrid' ORDER BY Apellidos, Nombre Y si queremos que el orden sea descendente, le aadimos a continuacin la instruccin DESC detrs de cada campo: SELECT Nombre, Apellidos, NIF FROM Clientes WHERE Provincia = 'Madrid' ORDER BY Apellidos DESC, Nombre DESC Tambin podemos clasificar en distinto orden los campos indicados tras ORDER BY, por ejemplo: SELECT * FROM Clientes ORDER BY Apellidos DESC, Nombre ASC, NIF DESC .

Indicar el nmero mximo de filas a devolver (TOP) (02/May/04)


Al realizar una seleccin de datos clasificados (usando ORDER BY), podemos indicar el nmero de filas (registros) mximos que queremos devolver, para ello indicaremos TOP y el nmero de filas o el porcentaje de filas a devolver: Con las siguientes instrucciones se devolvern los primeros 50 registros (si los hay) que cumplan las condiciones indicadas: SELECT TOP 50 Nombre, Apellidos, NIF FROM Clientes WHERE Provincia = 'Madrid' ORDER BY Apellidos DESC TOP no diferencia filas que sean iguales, es decir, si la fila 50 y la 51 tienen los mismos Apellidos, devolver 51. En este otro ejemplo, se devolver el 20% de las filas que coincidan con las instrucciones SQL indicadas: SELECT TOP 20 PERCENT Nombre, Apellidos, NIF FROM Clientes WHERE Provincia = 'Madrid' ORDER BY Apellidos DESC Nota: Dependiendo de que estemos usando DAO o ADO el nmero de filas devueltas puede que sea distinto de cuando usamos ADO.NET, al menos en una misma tabla, usando TOP 150, con ADO me devolva 151 filas y con ADO.NET me devolva 150. No se si es que TOP se comporta de forma diferente en ADO.NET .

Actualizar los datos segn un criterio (UPDATE) (02/May/04)


Si lo que quieres es actualizar el contenido de un campo cuando se cumpla un criterio indicado, en lugar de recorrer todas las filas, podemos usar UPDATE / SET, por ejemplo: UPDATE Clientes SET NPr = 28 WHERE Provincia = 'Madrid' Esto har que se asigne un valor 28 al campo NPr de todos los clientes que cumplan lo que se indica despus de WHERE, es decir que cumplan el criterio indicado. Tambin podemos indicar (despus de SET) varios campos a actualizar, separndolos por comas: UPDATE Clientes SET NPr = 28, Patrn = 'San Isidro' WHERE Provincia = 'Madrid' Una vez ejecutadas estas instrucciones SQL no se podr deshacer los cambios, al menos si estamos trabajando con Recordsets DAO o ADO, ya que si trabajamos con ADO.NET, esos datos slo se harn permanentes al actualizar "fsicamente" los datos con el DataAdapter.

Eliminar los datos segn un criterio (DELETE) (02/May/04)


De la misma forma que podemos actualizar la informacin mediante un criterio WHERE, podemos eliminar los registros de forma "masiva" usando la instruccin DELETE. Por ejemplo para eliminar todos los Clientes de Madrid: DELETE * FROM Clientes WHERE Provincia = 'Madrid'

Nota: Ni que decir tiene que este tipo de instrucciones SQL hay que usarla con muchsima precaucin, ya que si la tabla est ligada a otra, tambin se perdern los datos relacionados. Y una vez eliminados los datos... ya no se pueden recuperar. El uso de DELETE no elimina la tabla, aunque se eliminaran todos los registros.

Estructura de la tabla de ejemplo


La base de datos (recuerda que es de SQL Server) usada para estos ejemplos se llama prueba_SQL y est en la instancia local de SQLEXPRESS (si la creas en otra instancia, recuerda cambiar la cadena de conexin). La tabla se llama Tabla1. Esa tabla tiene un campo ID que es automtico (identidad), adems de tener los siguientes campos: Nombre, Apellidos, Email, Fecha y Descripcion. El cdigo usado en estos ejemplos est definido en una clase y tienen una propiedad (NombreTabla) para indicar el nombre de la tabla. Crear la tabla desde Management Studio Para crear la tabla, puedes usar el siguiente cdigo, de la siguiente forma: 1. Crea una nueva base de datos llamada prueba_SQL 2. Abre una ventana de nueva consulta (New Query window), pega el cdigo y pulsa la tecla F5 (procura no tener nada seleccionado)
USE [prueba_SQL] GO /****** Objeto: Table [dbo].[Tabla1] comandos: 05/25/2008 22:06:21 ******/ SET ANSI_NULLS ON

Fecha de la secuencia de

GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Tabla1]( [ID] [int] IDENTITY(1,1) NOT NULL, [Nombre] [nvarchar](20) NULL, [Apellidos] [nvarchar](30) NULL, [Email] [nvarchar](128) NULL, [Fecha] [datetime] NULL, [Descripcion] [nvarchar](max) NULL, CONSTRAINT [PK_Tabla1] PRIMARY KEY CLUSTERED ([ID] ASC) WITH ( PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON ) ON [PRIMARY] ) ON [PRIMARY]

S-ar putea să vă placă și