Introducción a SQL
Breve historia de SQL
Álgebra relacional
Instalación de la BD de ejemplo
Qué es una proyección (SELECT)
Origen (FROM)
Productos cartesianos (JOIN)
Selección (WHERE)
Ordenamiento (ORDER BY)
Agregación y limitantes (GROUP BY y LIMIT)
Ejercitando tu SQL
El primero
El segundo más alto
Seleccionar de un set de opciones
En mis tiempos
Seleccionar por año
Duplicados
Selectores de rango
Eres lo máximo
Egoísta (selfish)
Resolviendo diferencias
Todas las uniones
Triangulando
Generando rangos
Regularizando expresiones
Conceptos de SQL Avanzado
Bases de datos distribuidas
Queries distribuídos
Sharding
Window functions
Particiones y agregación
El futuro de SQL
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Aportes 46
Preguntas 5
aqui mi resumen
En el operador LIKE Hay 2 comodines que usan comunmente:
%
- El signo de porcentaje representa 0 o mas caracteres._
- El guion bajo representa un unico caracter.WHERE
es usado para filtrar registros.
WHERE
es cuando para extraer solamente las condiciones que cumplen con esa condición.
SELECT *
FROM tabla_diaria
WHERE id=1;
SELECT *
FROM tabla_diaria
WHERE cantidad>10;
SELECT *
FROM tabla_diaria
WHERE cantidad<100;
Este puede ser combinado con AND
,OR
y NOT
.
AND
y OR
son usados para filtrar registros de más de una condición.
AND
muestra un registro si todas las condiciones separadas por AND
son TRUE
.OR
muestra un registro si alguna de las condiciones separadas por OR
son TRUE
.SELECT *
FROM tabla_diaria
WHERE cantidad > 10
AND cantidad < 100;
SELECT *
FROM tabla_diaria
WHERE cantidad BETWEEN 10
AND cantidad < 100;
BETWEEN
puede ser usado para definir límites.
La separación por paréntesis es muy importante.
SELECT *
FROM users
WHERE name = "Israel"
AND (
lastname = "Vázquez"
OR
lastname = "López"
);
SELECT *
FROM users
WHERE name = "Israel"
AND
lastname = "Vázquez"
OR
lastname = "López";
En el primero va a devolver todos los que son Israel Vázquez o Israel López, en el segundo devolverá a todos los que se llaman Israel Vázquez o se apellida López(sólo apellido).
NOT
valida que un dato no sea TRUE
.
SELECT column1, column2, ...
FROM table_name
WHERE NOT condition;
Para especificar patrones en una columna usamos LIKE
. Podemos mostrar diferentes cosas que buscamos.
SELECT *
FROM users
WHERE name LIKE "Is%";
SELECT *
FROM users
WHERE name LIKE "Is_ael";
SELECT *
FROM users
WHERE name NOT LIKE "Is_ael";
%
para representar que se va a buscar lo que tenga is%
pero que no importa los carácteres después de %
._
que puede haber lo que sea en medio de Is
y ael
.Igual podemos decir que nos traiga registros que estén vacíos o que no lo estén.
SELECT *
FROM users
WHERE name IS NULL;
SELECT *
FROM users
WHERE name IS NOT NULL;
Y para seleccionar filas con datos específicos, usamos IN.
SELECT *
FROM users
WHERE name IN ('Israel','Laura','Luis');
un primo del LIKE, es es ILIKE,
con la sintaxis:
SELECT * FROM users WHERE name ILIKE "o%";
este ILIKE hace mach con todos los registros que comiencen con la letra o, ya sea mayúscula o minúscula.
Yo uso diariamente el BETWEEN, LIKE y el IN. Son operadores que entregan mucho poder a tus querys y son faciles de usar! 😄
Igual
SELECT *
FROM PRUEBAS.ALUMNOS
WHERE colegiatura = 2000;
Mayor que
SELECT *
FROM PRUEBAS.ALUMNOS
WHERE colegiatura > 2000;
Menor que
SELECT *
FROM PRUEBAS.ALUMNOS
WHERE colegiatura < 4000;
Entre
Opcion No. 1
SELECT *
FROM PRUEBAS.ALUMNOS
WHERE colegiatura > 2000
AND colegiatura < 4000;
Opcion No. 2
SELECT *
FROM PRUEBAS.ALUMNOS
WHERE colegiatura BETWEEN 2000 AND 4000;
And y Or
Opcion No. 1
SELECT *
FROM PRUEBAS.ALUMNOS
WHERE nombre = 'Edin'
AND (apellido = 'Keatch' OR apellido = 'Grishin');
Opcion No. 2
SELECT *
FROM PRUEBAS.ALUMNOS
WHERE nombre = 'Edin'
AND apellido = 'Keatch'
OR apellido = 'Grishin';
Comodin que empieza con Al
SELECT *
FROM PRUEBAS.ALUMNOS
WHERE nombre LIKE 'Al%';
Comodin que termina con Al
SELECT *
FROM PRUEBAS.ALUMNOS
WHERE nombre LIKE '%er';
Comodin que contiene con er
SELECT *
FROM PRUEBAS.ALUMNOS
WHERE nombre LIKE '%er%';
Comodin que no contiene con er
SELECT *
FROM PRUEBAS.ALUMNOS
WHERE nombre NOT LIKE '%er%';
Comodin que varia la ultima letra
SELECT *
FROM PRUEBAS.ALUMNOS
WHERE nombre LIKE 'Ali_'
Null
SELECT *
FROM PRUEBAS.ALUMNOS
WHERE apellido IS NULL;
Not Null
SELECT *
FROM PRUEBAS.ALUMNOS
WHERE apellido IS NOT NULL;
In
SELECT *
FROM PRUEBAS.ALUMNOS
WHERE nombre IN ('Wanda', 'Hilde', 'Veriee');
No es >= y <=???
Wow… nunca había visto lo del comodín Is_ael
en el LIKE… Gracias! Es muy útil!
Una clase muy divertida. Con lo que más me quedo es con la explicación de los parentesis que son importantes de contemplar.
where = donde ?
Al menos a mí no me funcionó con:
"I%"
Tuve que usar comillas simples:
'I%'
Proyeccion para tener el total de alumnos por el dominio que tienen sus correos
<SELECT split_part(email, '@', 2) AS domain, count(distinct(id)) as alumnos FROM platzi.alumnos
group by domain
order by alumnos desc>
Mis notas personales sobre WHERE:
te entiendo porque e llevado ya sql para preincipientes pero creo que tus videos falta la practica, bueno mas en estos de inicio
en youtube esta este Cursos SQL SERVER “https://www.youtube.com/c/deividcopteroPLUS” el canal de deividcoptero Programación esta sencillos y paso a paso , Saludos banda gracias por compratir
SELECT *
FROM alumnos
WHERE nombre NOT IN (
'Bartolemo',
'Silvia',
'Carmelita'
)
La correcta traducción de between es id >= 10 and id <= 100 ya que incluye loas valores de inicio y fin del rango dado.
En la sentencia BETWEEN esta equivocado no es igual que el anterior porque los rangos en BETWEEN incluyen el 10 y 100, en cambio con menor y mayor NO los incluye.
Para que tenga el mismo resultado tendría que ser menor igual y mayor igual
where, donde lo va ubicar a que va buscar y donde.
Con esta simple consulta retorno los alumnos que no tienen apellido.
Segunda parte de la practica.
WHERE es la sentencia que nos ayuda a filtrar tuplas o registros dependiendo de las características que elegimos.
La propiedad LIKE nos ayuda a traer registros de los cuales conocemos sólo una parte de la información.
La propiedad BETWEEN nos sirve para arrojar registros que estén en el medio de dos. Por ejemplo los registros con id entre 20 y 30
La sentencia WHERE tiene como función la de filtrar los datos de manera lógica, si la condición se cumple entonces se proyectan los datos. Esta sentencia filtra los renglones mientras que el SELECT filtra las columnas.
LIKE O ILIKE
En postgreSQL cuando colocamos la función LIKE nos filtra los datos con los resultados sean en minúscula o mayúscula dependiendo de como lo coloco en la función LIKE, En cambio ILIKE nos filtra la información y no depende si es en mayúscula o minúscula, nos trae todo!
EJEMPLO
SELECT id, nombre, apellido, email, colegiatura
FROM platzi.alumnos WHERE nombre = 'Wanda' AND
(apellido = 'Stoffer' OR apellido = 'Billington');
SELECT * FROM platzi.alumnos
WHERE colegiatura BETWEEN 3500 AND 4000
La selección(Simbolo Sigma) = WHERE
Sirve para poner las condiciones para nuestra proyección en su forma más básica.
Selecciona CIERTAS TUPLAS o ROWS, sirve para la optimización de la consulta debido a este filtro.
Ejemplos:
.....WHERE cantidad >10 AND cantidad <100;
.....WHERE cantidad BETWEEN 10 AND 100;
... WHERE name = "Diego" AND (lastname = "TORRES" OR lastname = "VASCO")
Uso de LIKE: Es un “parecido”, no queremos una cadena especifica pero si similar con algo que pueda identificar
...WHERE name LIKE "Is%" #nombre que empieza con Is
....WHERE name LIKE "Is_ael" #nombres que tengan cualquier letra en el _
...WHERE name NOT LIKE "Is_ael" #todas las que no sean como esta
...WHERE name IS/ IS NOT NULL; #Decir que es nulo o no
....WHERE name IN ('pedro','Israel','' ,)
Hice una consulta para averiguar todos los alumnos que empiezan por v y me fije, no sé si es por la versión, el LIKE en Postgress va con comillas sencillas
<select * from platzi.alumnos where nombre LIKE 'V%' ;>
 FROM productos
Selección (WHERE)
5. SELECCIÓN (Where) - Se representa también con el símbolo sgma
Alguien me explica cuál es la diferencia entre tener valor valos vacio versus el NULL? gracias
En las últimas consulta queda claro el poder del paréntesis.
SELECT * FROM `deposito` WHERE NombreSucursal IN ('Norte','Centro','Sur')
Consultas de la Practica:
SELECT * FROM platzi.alumnos WHERE apellido IS NOT NULL
SELECT * FROM platzi.alumnos WHERE apellido IS NOT NULL AND (apellido LIKE 'C%' OR apellido LIKE '%st%')
SELECT * FROM platzi.alumnos WHERE apellido IS NOT NULL AND (apellido LIKE 'C%' OR apellido LIKE '%st%') AND nombre NOT IN ('Frederique','Kitty')
IN: incluye los datos de la cadenada (“a”,“b”,etc)
NOT IN: no incluye los datos de la cadena (“a”,“b”,etc)
interesante los temas de like IN NOT NULL
que aplico cuando genera query
para probar lo aprendido en clase compile estos querys y si me funciono, espero que les ayude practicando este tema
Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.