Sunteți pe pagina 1din 30

FACULTAD DE INGENIERIA DE SISTEMAS, CÓMPUTO Y TELECOMUNICACIONES

SQL

Curso:
Consulta de datos

SELECT
Esta sentencia nos permite seleccionar los campos de un o varias
tablas, si queremos toda la información colocaremos (*) de lo contrario
mencionaremos los campos.

Si estamos utilizando varias tablas y el mismo nombre de campo,


tenemos que especificar a que tabla pertenece el campo que
queremos, para no generar ambigüedad.

FROM
Con esta sentencia indicaremos en que tabla buscaremos
información.
Ejemplo:
Select * from employees
Select * from products
SQL

WHERE
Esta sentencia filtra registros que cumplan la condición dada, obteniendo
un valor de verdadera o falsa.
Se utiliza cuando no se desea que devuelva todas las filas de una tabla,
sino que cumplan ciertas condiciones.

Si queremos unir mas condiciones utilizaremos los operadores lógicos


AND o OR, esto será de acuerdo a la información que queremos obtener.
SQL

 Condiciones
Son expresiones lógicas a comprobar la condición de filtro, que tras su
resolución devuelve para cada fila TRUE o FALSE, en función de que cumpla
o no. Se puede utilizar cualquier expresión lógica y en ella utilizar diversos
operadores como:
 >(mayor)
 >= (mayor o igual)
 <(menor)
 <=(menor igual)
 = (igual)
 <> o != (distinto)
 is [ not ] NULL (para comprobar si el valor de una columna es o no nula,
es decir, si contiene algún valor).
Se dice que una columna de una fila es NULL si esta completamente vacía.
Hay que tener en cuenta que si ha introducido cualquier dato, incluso en un
campo alfanumérico si se introduce una cadena en blanco o un cero en un
campo numérico, deja de ser NULL.
SQL

a) Una condición
select * from Products where CategoryId=2

b) Varias condiciones usando AND


Select * from Products where CategoryId=6 and categoryId=4

c) Cuando utilicemos varias condiciones con 2 and, utilizaremos between.


Pero para utilizarlo debe de cumplirse:
 Debe tener dos condiciones, que uno sea mayor igual (>=) y el otro sea
menor igual (<=)
 Tiene que estar unidas por AND
 Que el campo sea el mismo

Between se utiliza para ahorro de código y tenga una mejor presentación


nuestra consulta.
SQL

BETWEEN
Es utilizado para especificar un rango de valores.
Su sintaxis: campo [not ] between valor1 and valor2

La consulta devolverá los registros que contengan en campo un valor incluido en el


intervalo valor1, valor2 (ambos inclusive). Si anteponemos la condición not devolverá
aquellos valores no incluidos en el intervalo.

 Clientes entre 30 y 100:codCliente between 30 and 100

 select ProductID, ProducgName, UnitPrice


from products
where UnitPrice between 30 and 60

 select ProductID, ProducgName, UnitSinStock


from products
where UnitSinStock between 0 and 10
SQL

d) Varias condiciones utilizando un or


select * from Products where CategoryId=4 or CategoryId=6

e) Varias condiciones usando mas de un or


Select * from Products
where CategoryId=2 or categoryId=6 or categoryId=8

f) Cuando utilicemos varias condiciones con mas de un or


utilizaremos la sentencia IN.
IN: reduce el código, asignando consultas con condiciones OR. Comando
que sirve para búsquedas en varios campos.

Al utilizar la sentencia IN tiene que cumplir:


 Que todas las condiciones estén unidas por un OR
 Que pertenezcan al mismo campo
 Que los operadores sean iguales.
SQL

IN
Devuelve aquellos registros cuyo campo indicado coincide con alguno de los indicados en
la lista.
Su sintaxis: campo [not ] in (valor1,valor2,valor3,…)

La consulta devolverá registros que contengan en campo con algunos especificados en la


lista. Si anteponemos la condición not devolverá aquellos valores no incluidos en la lista.
 Ventas de los clientes 10,15,30 y 75: codCliente in (10,15,30,75)

 Select * from Products


where categoryId in(4,6,8,2)
LIKE

LIKE
Se utiliza para búsqueda de patrones de texto.
‘%’ indica una secuencia de cero o mas caracteres
‘-’ indica un único carácter.
[ ] cualquier carácter único, dentro del rango especificado por ejemplo [ a-f] o del conjunto
especificado [ abcdef]
[ ˄] cualquier carácter que no esta dentro del rango especificado. Por ejemplo [ ˄a-f ] o del
conjunto especificado [˄ abcdef]

Sintaxis: campo [not ] like patrones de texto

Por ejemplo:
 El nombre empieza por A: nombre like ‘A%’
 El nombre acaba con A: nombre like ‘%A’
 El nombre contiene una A: nombre like ‘%A%’
 El nombre empieza por A y después contiene un solo carácter cualquiera: nombre like ‘A-’
 El nombre empieza por A, después cualquier carácter, luego una E y al final cualquier
cadena de caracteres: nombre like ‘A-E%’.

.
SQL

 Select ProductId, ProductName from Products


where productName = ‘chang’

Nos produce el mismo resultado al usar LIKE


 Select ProductId, ProductName from Products
where productName like ‘chang’

Si queremos buscar por una palabra, letra o frase entra a tallar un comodin que es el signo
de porcentaje(%).
En este caso todos los nombres que empiec%en con la letra c.
 Select ProductId, ProductName from Products
where productName like ‘c%’

En este caso que en su composición tenga ”c”


 Select ProductId, ProductName from Products
where productName like ‘%c%’.

En este caso todos terminen en s.


 Select ProductId, ProductName from Products
where productName like ‘s%’


SQL

ORDER BY
Ordena uno o mas campos, ya sea en forma ascendente como descendente
(en orden ascendente por omisión), los valores nulos son listados primero.

ASC/DESC
ASC es el valor predeterminado, especifica que la columna indicada en la
clausula order by se ordena en forma ascendente, o sea de menor a mayor. Si
por el contrario se especifica DESC se ordena de forma descendente (de mayor
a menor).
SQL

Sintaxis:

Select [Lista de campos]


From [ tabla]
where [ condición de busqueda]
order by [ columna │expresion] [ ASC │DESC]

Por default se ordena en forma ascendente., ProductName

 Select ProductId, ProductName, UnitSinStock * from Products


where UnitSinstock between 0 and 10
order by ProductName

Forma descendente.

 Select ProductId, ProductName, UnitSinStock * from Products


where UnitSinstock between 0 and 10
order by ProductName desc
SQL

TOP
Devuelve un numero determinado de registros. Esta sentencia se guía por la
ordenación.
Sintaxis: Select top n * from tabla
Donde: “n” es la cantidad de registros que se quiere.
Ejemplo 1:
 Select top 3 *
from Products

Ejemplo 2:
Ordenar los 10 primeros registros de detalle de orden que tenga la mayor
cantidad vendida.
 Select top 10 orderId, productId, quantity
from order detalle
order by quantity desc
SQL

orderdate
Permite seleccionar una parte de la fecha de un registro y establecer un valor
de comparación a este, estableciendo verdadero o falso.
Ejemplo 1:
 Select *
from orders
where year(orderdate)= ‘1996’
Datepart
Permite establecer argumento de comparación de un determinado campo,
siendo este (dd), mes(mm), año(yyyy).

 Select *
from orders
where employeeID in (2,3,4,5) and
customerID like ¨’[a-g]%’ and
datepart(mm orderdate)= ‘07’ and
datepart(dd orderdate)= ‘31’
SQL

USE BASE DE DATOS northwind.


1.- Seleccionar todos los campos de la tabla clientes, ordenados por nombre de
la compañía, alfabéticamente.

 Select *
from customers
order by contactName

2.- Seleccionar todos los campos de la tabla ordenes, ordenados por fecha de
orden, descendentemente.

 Select *
from orders
order by orderdate desc
SQL

3.- Seleccionar todos los campos de la tabla ordenes de compra, ordenados por
cantidad pedida, ascendentemente.
 Select *
from orders.details
order by quantity

4.- Seleccionar todos los productos, cuyos nombres empiecen con la letra p y
tienen un precio unitario comprendido entre 10 y 20.
 Select *
from product
where (productName like ‘p%’) and unitPrice between 10 and 20
5.- Seleccionar todos los clientes de los países usa, france, spain.
 Select *
from customers
where count in (‘usa’,’france’,’spain’)
SQL

6.- obtener todos los productos discontinuados y sin stock, que pertenezcan a
las categorías 1,3,4 y 7.
 Select *
from products
where (discontinued =1) and (unitSinStock=0)

7.- Seleccionar todos las ordenas hechas por el empleado con código 2,5 y 7 en
el año 1996
 Select *
from orders
where employeeID in (2,5,7) and
year (orderdate)=1996
-- otra forma
 Select *
from orders
where employeeID in (2,5,7) and
datepart (yyyy orderdate)=1996
SQL

8.- Seleccionar todos los campos de la tabla clientes que cuenten con un fax
select *
from customers
where fax <> ‘is null’
-- otra forma
select *
from customers
where fax is not null

9.- Seleccionar todos los clientes que no cuenten con un fax del país de usa
select *
from customers
where (fax is null ) and country =‘usa’
SQL

8.- Seleccionar todos los campos de la tabla clientes que cuenten con un fax
select *
from customers
where fax <> ‘is null’
-- otra forma
select *
from customers
where fax is not null

9.- Seleccionar todos los clientes que no cuenten con un fax del país de usa
select *
from customers
where (fax is null ) and country =‘usa’
SQL

10.- Seleccionar todos los empleados que cuenten con un jefe


select *
from employees
where reports to is not null

11.- Seleccionar todos los campos del cliente cuya compañía empiece con la
letra de A hasta la D y que pertenezca al país de Francia.
select *
from customers
where companyName like ‘[a-d]%’ and country =‘france’
order by address
SQL

12.- Seleccionar todos los campos del proveedor, cuya compañía no comience
con las letras de la B a la G y que pertenezca al país UK, ordenados por
nombre de la compañía.
select *
from supppliry
where companyName like ‘[˄B-G]%’ and country =‘uk’
order by address
-- otra forma
select *
from supppliry
where companyName not like ‘[B-G]%’ and country =‘uk’
order by address
SQL

13.- Seleccionar los productos vigentes cuyos precios unitarios estén entre 35 y
250, sin stock en almacén. Pertenecientes a las categorías 1,3,4,7 y 8 que son
distribuidas por los proveedores 2,4,6,7 y 9.
Solución: nota: discontinued=0 es producto vigente
discontinued=1 es producto discontinuado
Select * from products aquí ejecutar para ver los nombres de los
Where (discontinued=0) and campos
(UnitPrice between 35 and 250) and
(UnitsinStock = 0) and
(categoryID in (1,3,4,7,8) and
supplierID in (2,4,6,7,9)
SQL

Seleccionar todos los campos de los productos discontinuados, que pertenezcan.


Los proveedores con codigos:1,3,7,8 y 9, que tengan stock en el almacén, y que al
mismo tiempo que sus precios unitarios estén entre 39 y 190, ordenados por
código de proveedor y precio unitario en forma ascendente.
Solución: nota: discontinued=0 es producto vigente
discontinued=1 es producto discontinuado
Select * from products aquí ejecutar para ver los nombres de los
Where (discontinued=1) and campos
(SupplierID in(1,3,7,8,9)) and
(UnitsinStock <>0 ) and
(UnitPrice between 39 price and 190 )
Order by supplierID,UnitPrice
Nota.- Al ejecutar no tenemos ningún producto que cumpla esta condición
SQL

Seleccionar los 7 productos con precio mas caros, que cuenten con stock en el
almacén.
Solución:
Select top 7 from products
(where UnitsinStock <>0)
Order by unitPrice desc
Seleccionar los 9 productos con menos stock en almacén, que pertenezcan a la
categoría 3,5 y 8.
Solución:
Select top 9 from products
(where categoryId in (3,5,8)
Order by unitsinStock
SQL

Seleccionar las ordenes de compra, realizadas por el empleado con código


entre 2 y el 5, además de los clientes con códigos que comiencen con las letras
de la A hasta la G, dl 31 d julio de cualquier año.
Solución:
Select * from orders
where (EmployeeID between 2 and 5)
(customerID like ‘[a-G]’ ) and
dateParte(mm ordrDate)=‘07’ and
dateParte(dd, OrderDate) =‘31’

Seleccionar las ordenes de compra, realizadas por el empleado con código


entre 2 y el 5, además de los clientes con códigos que comiencen con las letras
de la A hasta la G, dl 31 d julio de cualquier año.
Solución:
SQL

Seleccionar las ordenes de compra, realizadas por el empleado con código 3,


de cualquier año pero de los últimos 5 meses(agosto-diciembre)
Solución:
Select * from orders
where (EmployeeID =3) and
datePart(mm ordrDate) in(8,9,10,11,12)
--otra forma
Select * from orders
where (EmployeeID =3) and
datePart(mm ordrDate) between 8 and 12
SQL

Seleccionar los detalles de las ordenes de compra, que tengan un monto de


cantidad pedida entre 10 y 250
Solución:
Select * from orders-Details
where quantity between 10 and 250

-- Si nos hubieran pedido el total


Select unitprice as precio-Unitario, quantity as cantidad
(unitprice*quantity as total from orders-details
where quantity*unitprice between 10 and 250
ACTUALIZACION DE BASE DE DATOS

LA SETENCIA UPDATE
Para la actualización de datos SQL dispone de la sentencia UPDATE. La
sentencia UPDATE Devuelve un numero determinado de registros. Esta
sentencia se guía por la ordenación.
Sintaxis: Select top n * from tabla
Donde: “n” es la cantidad de registros que se quiere.
Ejemplo 1:
 Select top 3 *
from Products

Ejemplo 2:
Obtener los 10 primeros registros de detalle de orden q que tenga la mayor
cantidad vendida.
 Select top 10 orderId, productId, quantity
from order detalle
order by quantity desc
SE
ACABO!!!!!

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