Sei sulla pagina 1di 10

Between

Mientras que la palabra clave IN ayuda a las personas a limitar el criterio de


selección para uno o más valores discretos, la palabra
clave BETWEEN permite la selección de un rango. La sintaxis para la
cláusula BETWEEN es la siguiente:

SELECT "nombre_columna"
FROM "nombre_tabla"
WHERE "nombre_columna" BETWEEN 'valor1' AND 'valor2';

Esto seleccionará todas las filas cuya columna tenga un valor entre 'valor1' y
'valor2'.

Por ejemplo, podríamos desear seleccionar la visualización de toda la


información de ventas entre el 06 de enero de 1999, y el 10 de enero de 1999,
en la Tabla Store_Information,

Tabla Store_Information

Store_Name Sales Txn_Date


Los Angeles 1500 05-Jan-1999
San Diego 250 07-Jan-1999
San Francisco 300 08-Jan-1999
Boston 700 08-Jan-1999

Ingresamos,

SELECT *
FROM Store_Information
WHERE Txn_Date BETWEEN '06-Jan-1999' AND '10-Jan-1999';

Tenga en cuenta que la fecha puede almacenarse en diferentes formatos


según las diferentes bases de datos. Esta guía de referencia simplemente elige
uno de los formatos.

Resultado:

Store_Name Sales Txn_Date


San Diego 250 07-Jan-1999
San Francisco 300 08-Jan-1999
Boston 700 08-Jan-1999
SELECT * FROM Pedidos WHERE CodPostal Between 28000 And 28999;
(Devuelve los pedidos realizados en la provincia de Madrid)

SELECT IIf(CodPostal Between 28000 And 28999, 'Provincial', 'Nacional')


FROM Editores;
(Devuelve el valor 'Provincial' si el código postal se encuentra en el
intervalo,
'Nacional' en caso contrario)
In:
Cuando debo usar el operador IN?
Cuando necesites comparar un columna con una gran cantidad de valores en la
sentencia WHERE. El objetivo de este operador es ahorrarte múltiples condiciones de
igualdad concatenadas.
Supongamos que posees una tabla llamada empleado y que deseas consultar los
empleados que tengan los siguientes nombres: ‘James’, ‘Ricardo’,‘Brayan’ y ‘Laura’.
Normalmente muchas personas que desconozcan la función de IN harán los siguiente:
SELECT *
FROM EMPLEADO
WHERE NOMBRE=’James’ OR
NOMBRE=’Ricardo’ OR
NOMBRE=’Brayan’ OR
NOMBRE=’Laura’

Aunque es una forma válida de hacerlo, es dispendioso para el programador.

Como lo haríamos nosotros que si conocemos el operador IN?


SELECT *
FROM EMPLEADO
WHERE NOMBRE IN(‘James’,’Ricardo’,’Brayan’,’Laura’)

Basta solo con crear un conjunto de valores como referencia para comprobar si el nombre
se mostrará en los resultados finales.
Al hacerlo estaremos diciendo : ” quiero consultar aquellos valores que NO ESTÁN
dentro del siguiente conjunto…”.
En el anterior ejemplo vimos que 6 de nuestros 10 clientes aparecieron en los resultados,
ya que compraron en el rango de fechas. Ahora veremos quienes no compraron en ese
rango mediante el operador NOT:
SELECT NOMBRE, APELLIDO, EDAD
FROM CLIENTE
WHERE ID NOT IN ( SELECT IDCLIENTE
FROM FACTURA
WHERE FECHA BETWEEN ‘2013-05-01’ AND ‘2013-07-01’)

Order By
Hasta ahora, hemos visto cómo obtener datos de una tabla utilizando los
comandos SELECT y WHERE. Con frecuencia, sin embargo, necesitamos
enumerar el resultado en un orden particular. Esto podría ser en orden
ascendente, en orden descendente, o podría basarse en valores numéricos o
de texto. En tales casos, podemos utilizar la palabra clave ORDER BY para
alcanzar nuestra meta.

La sintaxis para una instrucción ORDER BY es la siguiente:

SELECT "nombre_columna"
FROM "nombre_tabla"
[WHERE "condición"]
ORDER BY "nombre_columna" [ASC, DESC];

[ ] significa que la instrucción WHERE es opcional. Sin embargo, si existe una


cláusula WHERE, viene antes de la cláusula ORDER BY ASCsignifica que los
resultados se mostrarán en orden ascendente, y DESC significa que los
resultados se mostrarán en orden descendente. Si no se especifica ninguno, la
configuración predeterminada es ASC.

Es posible ordenar por más de una columna. En este caso, la cláusula ORDER
BY anterior se convierte en

ORDER BY "nombre1_columna" [ASC, DESC], "nombre2_columna" [ASC,


DESC]

Suponiendo que elegimos un orden ascendente para ambas columnas, el


resultado se clasificará en orden ascendente según la columna 1. Si hay una
relación para el valor de la columna 1, se clasificará en orden ascendente
según la columna 2.

Por ejemplo, podríamos desear enumerar los contenidos de la


Tabla Store_Information según la suma en dólares, en orden descendente:

Tabla Store_Information

Store_Name Sales Txn_Date


Los Angeles 1500 05-Jan-1999
San Diego 250 07-Jan-1999
San Francisco 300 08-Jan-1999
Boston 700 08-Jan-1999

Ingresamos,

SELECT Store_Name, Sales, Txn_Date


FROM Store_Information
ORDER BY Sales DESC;

Resultado:
Store_Name Sales Txn_Date
Los Angeles 1500 05-Jan-1999
Boston 700 08-Jan-1999
San Francisco 300 08-Jan-1999
San Diego 250 07-Jan-1999

Además del nombre de la columna, podríamos utilizar la posición de la columna


(según la consulta SQL) para indicar en qué columna deseamos aplicar la
cláusula ORDER BY. La primera columna es 1, y la segunda columna es 2, y
así sucesivamente. En el ejemplo anterior, alcanzaremos los mismos
resultados con el siguiente comando:

SELECT Store_Name, Sales, Txn_Date


FROM Store_Information
ORDER BY 2 DESC;

La sentencia LEFT JOIN combina los valores de la primera tabla con los valores de la segunda
tabla. Siempre devolverá las filas de la primera tabla, incluso aunque no cumplan la condición.

SELECT * FROM tabla1


LEFT JOIN tabla2
WHERE tabla1.columna1 = tabla2.columna1

Ejemplo de SQL LEFT JOIN

Tabla personas, con la clave primaria "per "

per nombre apellido1 apellido2 dep


1 ANTONIO PEREZ GOMEZ 1
2 ANTONIO GARCIA RODRIGUEZ 2
3 PEDRO RUIZ GONZALEZ 4

Tabla "departamentos", con la clave primaria "dep"

dep departamento
1 ADMINISTRACIONx
2 INFORMATICA
3 COMERCIAL

SELECT nombre, apellido1, departamento


FROM personas
LEFT JOIN departamentos
WHERE personas.dep = departamentos.dep

nombre apellido1 departamento


ANTONIO PEREZ ADMINISTRACION
ANTONIO GARCIA INFORMATICA
PEDRO RUIZ

Aunque el departamento '4' de PEDRO RUIZ no existe en la tabla de departamentos, devolverá


la fila con esa columna 'departamento' en blanco.

La sentencia RIGHT JOIN combina los valores de la primera tabla con los valores de la
segunda tabla. Siempre devolverá las filas de la segunda tabla, incluso aunque no cumplan la
condición.

En algunas bases de datos, la sentencia RIGHT JOIN es igual a RIGHT OUTER JOIN

SELECT * FROM tabla1 RIGHT JOIN tabla2 WHERE tabla1.columna1 = tabla2.columna1

EJEMPLO SQL RIGHT JOIN

per nombre apellido1 apellido2 dep


1 ANTONIO PEREZ GOMEZ 1
2 ANTONIO GARCIA RODRIGUEZ 2
3 PEDRO RUIZ GONZALEZ 4

Tabla "departamentos", con la clave primaria "dep"

dep departamento
1 ADMINISTRACION
2 INFORMATICA
3 COMERCIAL

SELECT nombre, apellido1, departamento


FROM personas
RIGHT JOIN departamentos
WHERE personas.dep = departamentos.dep

nombre apellido1 departamento


ANTONIO PEREZ ADMINISTRACION
ANTONIO GARCIA INFORMATICA
COMERCIAL

Aunque no exista ninguna persona del departamento 'COMERCIAL' (3), esta fila aparecerá con
las otras columnas en blanco
La sentencia INNER JOIN es el sentencia JOIN por defecto, y consiste en combinar cada fila
de una tabla con cada fila de la otra tabla, seleccionado aquellas filas que cumplan una
determinada condición.

SELECT * FROM tabla1 INNER JOIN tabla2 WHERE tabla1.columna1 = tabla2.columna1

Ejemplo SQL INNER JOIN

Tabla personas, con la clave primaria "per "

per nombre apellido1 apellido2 dep


1 ANTONIO PEREZ GOMEZ 1
2 ANTONIO GARCIA RODRIGUEZ 2
3 PEDRO RUIZ GONZALEZ 2

Tabla "departamentos", con la clave primaria "dep"

dep departamento
1 ADMINISTRACION
2 INFORMATICA
3 COMERCIAL

SELECT nombre, apellido1, departamento FROM personas INNER JOIN departamentos


WHERE personas.dep = departamentos.dep

nombre apellido1 departamento


ANTONIO PEREZ ADMINISTRACION
ANTONIO GARCIA INFORMATICA
PEDRO RUIZ INFORMATICA

La sentencia FULL JOIN combina los valores de la primera tabla con los valores de la segunda
tabla. Siempre devolverá las filas de las dos tablas, aunque no cumplan la condición.

La sentencia FULL JOIN es la unión de LEFT JOIN y RIGHT JOIN

SELECT * FROM tabla1 FULL JOIN tabla2 WHERE tabla1.columna1 = tabla2.columna1

EJEMPLO SQL FULL JOIN

per nombre apellido1 apellido2 dep


1 ANTONIO PEREZ GOMEZ 1
2 ANTONIO GARCIA RODRIGUEZ 2
3 PEDRO RUIZ GONZALEZ 4
Tabla "departamentos", con la clave primaria "dep"

dep departamento
1 ADMINISTRACION
2 INFORMATICA
3 COMERCIAL

SELECT nombre, apellido1, departamento


FROM personas
FULL JOIN departamentos
WHERE personas.dep = departamentos.dep

nombre apellido1 departamento


ANTONIO PEREZ ADMINISTRACION
ANTONIO GARCIA INFORMATICA
PEDRO RUIZ COMERCIAL

La sentencia SQL JOIN permite consultar datos de 2 o más tablas.

Dichas tablas estarán relacionadas entre ellas de alguna forma, a través de alguna de sus
columnas.

Existen 3 tipos de JOINS: JOIN interno, JOIN externo y JOIN cruzado.

Una clave primaria es una columna con un valor único para cada registro de una tabla.

El propósito del JOIN es unir información de diferentes tablas, para no tener que repetir datos
en diferentes tablas.

Ejemplo:

Si tenemos las siguientes tablas

Tabla personas, con la clave primaria "per "

per nombre apellido1 apellido2 dep


1 ANTONIO PEREZ GOMEZ 1
2 ANTONIO GARCIA RODRIGUEZ 2
3 PEDRO RUIZ GONZALEZ 2

Tabla "departamentos", con la clave primaria "dep"

dep departamento
1 ADMINISTRACION
2 INFORMATICA
3 COMERCIAL

Si queremos saber los nombres de las personas que trabajan en INFORMATICA, tendríamos
que hacer un JOIN de las 2 tablas "personas" y "departamentos", que se relacionarían por la
columna "dep".

Es decir, que desde la tabla "personas" y mediante la columna "dep", podemos acceder a la
información de la tabla "departamentos".

La sentencia INSERT INTO se utiliza para insertar nuevas filas en una tabla.

Es posible insertar una nueva fila en una tabla de dos formas distintas:

INSERT INTO nombre_tabla


VALUES (valor1, valor2, valor3, .)

INSERT INTO nombre_tabla (columna1, columna2, columna3,.)


VALUES (valor1, valor2, valor3, .)

Ejemplo:

Dada la siguiente tabla personas:

nombre apellido1 apellido2


ANTONIO PEREZ GOMEZ
LUIS LOPEZ PEREZ
ANTONIO GARCIA BENITO

Si queremos insertar una nueva fila en la tabla personas, lo podemos hacer con cualquiera de
las dos sentencias siguientes:

INSERT INTO personas


VALUES ('PEDRO', 'RUIZ', 'GONZALEZ')
INSERT INTO personas (nombre, apellido1, apellido2)
VALUES ('PEDRO', 'RUIZ', 'GONZALEZ')

Cualquiera de estas sentencias anteriores produce que se inserte una nueva fila en la tabla
personas, quedando así dicha tabla:

nombre apellido1 apellido2


ANTONIO PEREZ GOMEZ
LUIS LOPEZ PEREZ
ANTONIO GARCIA BENITO
PEDRO RUIZ GONZALEZ

La sentencia UPDATE se utiliza para modificar valores en una tabla.


La sintaxis de SQL UPDATE es:

UPDATE nombre_tabla
SET columna1 = valor1, columna2 = valor2
WHERE columna3 = valor3

La cláusula SET establece los nuevos valores para las columnas indicadas.

La cláusula WHERE sirve para seleccionar las filas que queremos modificar.

Ojo: Si omitimos la cláusula WHERE, por defecto, modificará los valores en todas las filas de la
tabla.

Ejemplo del uso de SQL UPDATE

nombre apellido1 apellido2


ANTONIO PEREZ GOMEZ
LUIS LOPEZ PEREZ
ANTONIO GARCIA BENITO
PEDRO RUIZ GONZALEZ

Si queremos cambiar el apellido2 'BENITO' por 'RODRIGUEZ' ejecutaremos:

UPDATE personas
SET apellido2 = 'RODRIGUEZ'
WHERE nombre = 'ANTONIO'
AND apellido1 = 'GARCIA'
AND apellido2 = 'BENITO'

Ahora la tabla 'personas' quedará así:

nombre apellido1 apellido2


ANTONIO PEREZ GOMEZ
LUIS LOPEZ PEREZ
ANTONIO GARCIA RODRIGUEZ
PEDRO RUIZ GONZALEZ

La sentencia DELETE sirve para borrar filas de una tabla.

La sintaxis de SQL DELETE es:

DELETE FROM nombre_tabla


WHERE nombre_columna = valor

Si queremos borrar todos los registros o filas de una tabla, se utiliza la sentencia:
DELETE * FROM nombre_tabla;

Ejemplo de SQL DELETE para borrar una fila de la tabla personas

nombre apellido1 apellido2


ANTONIO PEREZ GOMEZ
LUIS LOPEZ PEREZ
ANTONIO GARCIA RODRIGUEZ
PEDRO RUIZ GONZALEZ

Si queremos borrar a la persona LUIS LOPEZ PEREZ, podemos ejecutar el comando:

DELETE FROM personas


WHERE nombre = 'LUIS'
AND apellido1 = 'LOPEZ'
AND apellido2 = 'PEREZ'

La tabla 'personas' resultante será:

nombre apellido1 apellido2


ANTONIO PEREZ GOMEZ
ANTONIO GARCIA RODRIGUEZ
PEDRO RUIZ GONZALEZ

Potrebbero piacerti anche