You are on page 1of 18

CDIGO T-SQL PARA CONSULTA DE DATOS

Pgina 1 de 18

INSTRUCCIONES SQL PARA LA MANIPULACION DE DATOS


1. ACTUALIZACION DE DATOS El proceso de actualizacin de datos se realiza sobre aquellas filas de datos que requieren una operacin de modificacin. Instruccin UPDATE UPDATE <NombreTabla> SET Columna-1 = Expresin [, Columna-2 = Expresin [ ... ]] [WHERE Condicin]; Ejemplos: a) Sobre la base de datos NorthWind; modificar el Nombre de la compaa identificada con el ID: ANTON, por el nombre Too Moreno Jos Luis, de la tabla de base Customers.

use Northwind go UPDATE Customers SET CompanyName = 'Too Moreno Jos Luis' WHERE CustomerID = 'ANTON'
b) Sobre la base de datos NorthWind; modificar el precio unitario (UnitPrice) de los productos disminuyndoles en un 3% pero solamente de aquellos productos cuyo nmero de unidades en stock (UnitsInStock) sea mayor a 100 unidades.

use Northwind go UPDATE Products SET UnitPrice=UnitPrice - 0.03*UnitPrice WHERE UnitsInStock > 100
2. INSERCION DE REGISTROS La insercin de nuevos registros se realiza con la siguiente instruccin: INSERT INTO <NombreTabla> (Columna-1 [, Columna-2[, . . .] ) VALUES (Dato-1 [, Dato-2[, . . .] ); Ejemplo: a) Sobre la base de datos NorthWind; insertar una nueva fila en la tabla Customers, para las columnas: CustomerID, CompanyName, Address; cuyos respectivos datos sern: 'JUPER','Juan Perez Chavez','Orbegoso 1201'.

use Northwind go Insert Into Customers(CustomerID, CompanyName, Address) Values('JUPER','Juan Perez Chavez','Orbegoso 1201')
__________________________________________________________________________________________

MG. Luis Boy Chavil

CDIGO T-SQL PARA CONSULTA DE DATOS

Pgina 2 de 18

Tenga en cuenta que los datos indicados en la clusula VALUES debern ser correspondientes a los atributos en tipo y tamao descritos en la clusula INSERT INTO. Si los datos a insertar se refieren a todas las columnas de la tabla, entonces no ser necesario mencionar los respectivos atributos.

3. ELIMINACION DE FILAS Las filas se refieren a los registros de datos. Estos registros podrn eliminarse usando la siguiente clusula: DELETE FROM <NombreTabla> [WHERE <Condicin>] Ejemplos: a) Teniendo en cuenta que la base de datos NorthWind tiene grupos de datos que provienen de tablas relacionadas; en cuyo caso, la eliminacin de datos est restringida; por ello, para eliminar datos de una tabla de esta base de datos; primero vamos a crea una nueva tabla que denominaremos: Usuarios; de la siguiente manera:

use Northwind go CREATE TABLE Usuarios (UsuarioID int NOT NULL, Nombre varchar(40) NULL, Direccin varchar(40) NULL, Telfono varchar(10) NULL, PRIMARY KEY (UsuarioID));
Ahora, insertaremos los siguientes datos:

use Northwind go Insert Into Usuarios Values ('10', 'Juan Prez Chvez', 'Las Casuarinas 444-Trujillo', '94-1818171') Insert Into Usuarios Values ('11', 'Juana Prez Chvez', 'Los Tulipanes 123-Trujillo', '94-6345521') Insert Into Usuarios Values ('12', 'Maria Chvez Flores', 'Gamarra 653-Trujillo', '94-6683522') Insert Into Usuarios Values ('13', 'Jos Peralta Vsquez', 'Salaverry 65-Trujillo', '94-9099312') Insert Into Usuarios Values ('14', 'Julio Valdez Navarro', 'Las Delicias 766-Trujillo', '94-5545442')
Veremos lo siguiente:

__________________________________________________________________________________________

MG. Luis Boy Chavil

CDIGO T-SQL PARA CONSULTA DE DATOS

Pgina 3 de 18

b) Despus de seguir los pasos del tem a); eliminaremos el registro del Usuario cuyo cdigo es 12.

use Northwind go delete from Usuarios where UsuarioID = 12


c) Eliminar todos los registros de la tabla Usuarios

delete from Usuarios


Esta instruccin slo eliminar el contenido de datos de la tabla Usuarios, pero dicha tabla todava existir, aunque ahora estar vaca.

__________________________________________________________________________________________

MG. Luis Boy Chavil

CDIGO T-SQL PARA CONSULTA DE DATOS

Pgina 4 de 18

4. CONSULTA DE REGISTROS La consulta de datos se aplica a una o ms tablas de base relacionadas para accesar a un conjunto de datos. Algunas veces, se requiere efectuar una seleccin, clasificacin o filtrado de datos con criterios bien definidos dependiendo de la informacin que se desea consultar. Sintaxis SELECT [DISTINCT] [NombreTabla.]Columna-1 [,[NombreTabla.]Columna-2, . . ] FROM NombreTabla [,NombreTabla, . . ] [WHERE <Expresin Condicional> ] [GROUP BY Columna(s)] [HAVING Condicin] [ORDER BY Columna(s) ] ; Descripcin de clusulas SELECT La clusula SELECT se utiliza para consultar todos o parte de un conjunto de columnas de datos de una o ms tablas de base. SELECT DISTINCT Esta variedad muestra los datos de las columnas que se requieran, pero solamente de aquellos con valor diferente. NombreTabla.Columna Permite hacer la referencia a la columna deseada. En algunos casos, cuando la consulta requiera el acceso a las columnas de ms de una tabla de base, podremos distinguir la tabla de referencia colocando NombreTabla. FROM Esta clusula es obligatoria y permite indicar cul es la tabla tablas requeridas para la consulta. WHERE <Expresin Condicional> Aqu escribiremos la expresin condicional para establecer el filtro de seleccin del conjunto de datos requerido para la consulta. GROUP BY Los datos consultados se pueden agrupar por criterios establecidos en las columnas indicadas con HAVING. ORDER BY La informacin de la consulta aparecer en forma ordenada ascendente o descendente por la columna conjunto de columnas indicadas.

__________________________________________________________________________________________

MG. Luis Boy Chavil

CDIGO T-SQL PARA CONSULTA DE DATOS

Pgina 5 de 18

DATOS CON FUNCIONES CALCULADAS Las funciones calculadas nos ayudarn a definir otros atributos requeridos para la consulta. COUNT Esta funcin permite contar el nmero de filas de datos que tiene la columna indicada. SUM Obtiene la suma de los valores de una columna. AVG Calcula el promedio de los valores de la columna indicada. MAX Devuelve el mayor valor de la lista de valores de una columna. MIN Devuelve el menor valor de la lista de valores de una columna. Ejemplos : 1. Consulte los datos referidos a las columnas: CustomerID, CompanyName y Address de todos los clientes de NorthWind.

select CustomerID, CompanyName, Address from Customers


Esta instruccin tambin la podremos escribir de la siguiente manera:

select * from Customers


Aqu hemos usado * a manera de comodn para representar a todas las columnas de la tabla. 2. Mostrar la lista de apellidos de todos los Empleados.

select LastName from Employees


3. Consultar los datos de los Productos cuyo Nmero de Unidades en Stock sea mayor a 100.

select * from Products where UnitsInStock > 100


4. Obtener la lista anterior, pero que los datos se muestren ordenados por Nombre de Producto.
__________________________________________________________________________________________

MG. Luis Boy Chavil

CDIGO T-SQL PARA CONSULTA DE DATOS

Pgina 6 de 18

select * from Products where UnitsInStock > 100 order by ProductName


5. Consultar el nmero de Productos cuyo Nmero de Unidades en Stock sea mayor a 100.

select COUNT(*) from Products where UnitsInStock > 100


6. Consulte cul es el importe total a pagar por la Orden Nmero 10248

select sum(UnitPrice * Quantity) from [Order Details] where OrderID = '10248'


7. Consulte cul es el mayor stock de un producto cualquiera.

select MAX(UnitsInstock) from Products


8. Consulte cul es el mayor stock de un producto cualquiera.

select MIN(UnitsInstock) from Products

CONSULTAS ESPECIALES CON MAS DE UNA TABLA


1. Listar el nombre de las distintas Compaas de los clientes que efectuaron rdenes en el ao 1998. Como sabemos, el nombre de las compaas de los clientes se encuentra en la tabla Customers y los datos de las rdenes efectuadas estn en la tabla Orders, entonces:

select distinct CompanyName from Customers, Orders where Customers.CustomerID = Orders.CustomerID AND year(Orders.OrderDate) = 1998;
Como podr observar, el relacionamiento entre las dos tablas se realiza a travs del atributo CustomerID, el cual est grabado tanto en la tabla Customers como en la tabla Orders. 2. Listar la relacin de productos de la Orden nmero 10248

select P.* from Products P inner join [Order Details] OD on OD.ProductID = P.ProductID where OD.OrderID = '10248'
__________________________________________________________________________________________

MG. Luis Boy Chavil

CDIGO T-SQL PARA CONSULTA DE DATOS

Pgina 7 de 18

3. Listar el detalle de las ventas de la Orden nmero 10248.

select P.ProductID, P.ProductName, P.UnitPrice, OD.UnitPrice * OD.Quantity as Importe from Orders O inner join [Order Details] OD on O.OrderID = OD.OrderID inner join Products P on OD.ProductID = P.ProductID where OD.OrderID = '10248'
Observaciones importantes: Listamos las columnas indicando el alias de las tablas correspondientes. Utilizamos las tablas: Orders, [Order Details] y Products. Los relacionamientos se presentan de la siguiente manera:

O.OrderID = OD.OrderID y OD.ProductID = P.ProductID


4. Obtener la cantidad de Ordenes emitidas el mes de mayo de 1998.

select COUNT(OrderID) from Orders where year(OrderDate) = 1998 and MONTH(OrderDate) = 5


5. Obtener el ID del Cliente, Nombre de Compaa y Direccin de los clientes que no compraron nada en el ao 1998.

select CustomerID, CompanyName, Address from Customers where not exists (select * from Orders where Orders.CustomerID = Customers.CustomerID and year(OrderDate) = 1998) ;

__________________________________________________________________________________________

MG. Luis Boy Chavil

CDIGO T-SQL PARA CONSULTA DE DATOS

Pgina 8 de 18

IMPLEMENTACION DE CONSULTAS EN UNA BASE DE DATOS EN SQL Server


1. DESCRIPCION DEL CASO La compaa TAXI MOVIL, tiene contratos de concesin firmados con los propietarios de los vehculos que utiliza para el servicio de taxi en la ciudad de Trujillo. El servicio de taxi se realiza en horario ininterrumpido las 24 horas del da con choferes contratados que laboran 8 horas por jornada. Para el caso descrito nos interesa solamente el modelado que relaciona los propietarios con los vehculos y los contratos de concesin (Alquiler), en el que podremos distinguir que un propietario puede tener uno o ms vehculos y un vehculo puede tener uno o ms propietarios. 2. ELABORACION DEL MODELADO DE DATOS Elaboraremos el modelado de datos tomando como referencia las entidades requeridas. En este modelado, encontramos la caracterstica de que las entidades PROPIETARIOS y VEHICULOS estn relacionados de muchos-a-muchos; por ello a continuacin presentaremos el modelado fsico para ver la entidad CONTRATOS que sera la que se genera automticamente para facilitar este relacionamiento. 3. MODELADO DE LA BASE DE DATOS EN ERwin

__________________________________________________________________________________________

MG. Luis Boy Chavil

CDIGO T-SQL PARA CONSULTA DE DATOS

Pgina 9 de 18

4. BASE DE DATOS EN SQL SERVER

5. INGRESO DE DATOS Ingresemos los siguientes datos:

__________________________________________________________________________________________

MG. Luis Boy Chavil

CDIGO T-SQL PARA CONSULTA DE DATOS

Pgina 10 de 18

6. OPERACIONES DE RECUPERACION DE DATOS 6.1 Operaciones de Consulta de datos 1. Recuperacin Simple Obtener los nmeros de las placas de todos los vehculos alquilados.

En el caso anterior, podramos evitar las filas repetidas, escribiendo:

__________________________________________________________________________________________

MG. Luis Boy Chavil

CDIGO T-SQL PARA CONSULTA DE DATOS

Pgina 11 de 18

2. Consulta de datos calculados Obtener los nmeros de las placas de los vehculos y la cantidad de carga mxima dada en kilos, teniendo en cuenta que dicho valor est en toneladas. select VEH_placa, VEH_carga_max * 1000 as 'Carga en Kilos' from VEHICULOS Lnea de resultados

3. Consulta usando el comodn * Obtener una lista completa de todos los propietarios. select * from PROPIETARIOS Lnea de resultados

4. Consulta Calificada Obtener los nmeros de expediente de los Propietarios cuya procedencia sea Trujillo y su estado civil sea 'C' de casado. select PRO_expediente from propietarios where PRO_procedencia = 'Trujillo' and PRO_estado_civil = 'C'
__________________________________________________________________________________________

MG. Luis Boy Chavil

CDIGO T-SQL PARA CONSULTA DE DATOS

Pgina 12 de 18

Lnea de resultados

5. Consulta con Ordenamiento Obtener los nmeros de expediente de los Propietarios y su nombre completo; de aquellos cuya procedencia es Trujillo, en orden DESCENDENTE por sus Apellidos. select PRO_expediente, PRO_nombres + ' ' + PRO_apellidos as Nombre completo from propietarios where PRO_procedencia = 'Trujillo' order by PRO_apellidos DESC Lnea de resultados

6. CONSULTAS DE EQUIREUNION Obtener todas las parejas de nmero de expedientes de los propietarios y la ciudad de procedencia; tales que ellos sean de la misma ciudad de procedencia. select primera.PRO_expediente, segunda.PRO_expediente, primera.PRO_procedencia from propietarios primera, propietarios segunda where primera.PRO_procedencia=segunda.PRO_procedencia and primera.PRO_expediente < segunda.PRO_expediente Lnea de resultados

7. CONSULTAS CON FUNCIONES CALCULADAS 7.1 CUENTA DE REGISTROS Obtener el nmero total de propietarios Sentencia SQL select count(*) from propietarios
__________________________________________________________________________________________

MG. Luis Boy Chavil

CDIGO T-SQL PARA CONSULTA DE DATOS

Pgina 13 de 18

Lnea de resultados

7.2 CUENTA DATOS CON DISTINCT Obtener la cantidad total de propietarios que alquilan sus vehculos en la actualidad. select count(distinct PRO_expediente) from contratos Lnea de resultados

7.3 CUENTA CON SELECCIN DE REGISTROS Obtener el nmero de propietarios casados. select count(*) from propietarios where PRO_estado_civil = 'C' Lnea de resultados

7.4 CUENTA CON OTRAS SELECCIONES Obtener el total de carga mxima de los vehculos cuya procedencia es de Piura. select sum(VEH_carga_max*1000) from vehiculos where VEH_procedencia = 'Piura' Lnea de resultados

7.5 USO DE GROUP BY Obtener el nmero de expediente de cada propietario y la cantidad de vehculos alquilados.
__________________________________________________________________________________________

MG. Luis Boy Chavil

CDIGO T-SQL PARA CONSULTA DE DATOS

Pgina 14 de 18

select P.PRO_expediente, count(C.PRO_expediente) as N Vehculos from Propietarios P inner join Contratos C on P.PRO_expediente = C.PRO_expediente group by P.PRO_expediente Lnea de resultados

7.6 USO DE HAVING Obtener el nmero de placa de los vehculos alquilados que tienen ms de un propietario. Sentencia SQL select VEH_placa from contratos group by VEH_placa Having count (*) > 1 Lnea de resultados

8. CARACTERISTICAS AVANZADAS a. R. select 'Nombre completo' = PRO_apellidos + ' ' + PRO_nombres from PROPIETARIOS where PRO_apellidos LIKE 'R%' Recuperacin de datos con LIKE Obtener el nombre completo de todos los propietarios cuyo apellido comience con la letra

__________________________________________________________________________________________

MG. Luis Boy Chavil

CDIGO T-SQL PARA CONSULTA DE DATOS

Pgina 15 de 18

Lnea de resultados

Comodines para usar en LIKE _ (Lnea de subrayado): representa cualquier carcter individual % (Porcentaje): representa cualquier secuencia de n caracteres, donde n puede ser 0. Todos los dems caracteres se representan a s mismos. Ejemplos: PRO_domicilio LIKE '%44%' Se cumplir si PRO_domicilio tiene la sub cadena '44' en cualquier posicin. Analicemos el siguiente caso: select PRO_apellidos, PRO_domicilio from PROPIETARIOS where PRO_domicilio LIKE '%44%' Lnea de resultados

PRO_expediente LIKE '00____' primeros valores son 00.

Ser vlido si PRO_ expediente tiene longitud 6 y los

Veamos un caso tpico ms completo: select PRO_expediente, PRO_apellidos + ' ' + PRO_nombres as Nombre completo from Propietarios where PRO_expediente LIKE '00____'

__________________________________________________________________________________________

MG. Luis Boy Chavil

CDIGO T-SQL PARA CONSULTA DE DATOS

Pgina 16 de 18

Lnea de resultados

VEH_marca NOT LIKE '%T%' Se cumplir si VEH_marca no contiene una 'T'. La sentencia completa se muestra a continuacin: select VEH_placa, VEH_marca from vehiculos where VEH_marca NOT LIKE '%T%' Lnea de resultados

b. Recuperacin de datos con sub consultas Obtener el nombre completo de los propietarios que alquilan sus vehculos. select PRO_nombres+ +PRO_apellidos as Nombre completo from Propietarios where PRO_expediente IN (select PRO_expediente from Contratos) Lnea de resultados

__________________________________________________________________________________________

MG. Luis Boy Chavil

CDIGO T-SQL PARA CONSULTA DE DATOS

Pgina 17 de 18

1. Sub Consultas con varios niveles de anidamiento Obtener el nombre completo de los propietarios que alquilan vehculos de la marca TOYOTA. select PRO_nombres+ +PRO_apellidos as Nombre completo from PROPIETARIOS where PRO_expediente IN ( select PRO_expediente from CONTRATOS where VEH_placa IN ( select VEH_placa from VEHICULOS where VEH_marca = 'TOYOTA' )) Lnea de resultados

2. Funcin de agregados en una sub consulta Obtener el nmero de la placa de los vehculos cuya carga mxima del vehculo sea mayor que el 75% del mayor valor actual de carga mxima en la tabla de vehculos. select VEH_placa from vehiculos where VEH_carga_max > ( select max(VEH_carga_max)*0.75 from vehiculos) Lnea de resultados

3. Consultas con UNION Obtener el nmero de expediente de los propietarios que son casados, de aquellos contratos que finalizan el presente ao ( las dos cosas). Sentencia SQL select PRO_expediente from propietarios where PRO_estado_civil = 'C' UNION
__________________________________________________________________________________________

MG. Luis Boy Chavil

CDIGO T-SQL PARA CONSULTA DE DATOS

Pgina 18 de 18

select PRO_expediente from contratos where year(CON_fecha_termino)=year(getdate()) La consulta a implementar se har en dos partes; en primer lugar accedemos a la tabla de propietarios filtrando aquellos datos de los que son Casados. Luego pasamos a la tabla de contratos seleccionando aquellos que finalizan el presente ao. Finalmente, usamos la clusula UNION para unir los datos de las dos consultas implementadas. Lnea de resultados

__________________________________________________________________________________________

MG. Luis Boy Chavil

You might also like