LIKE: Quiere decir cómo o parecido a.
El signo de % es un comodín, en este caso “Is%” indica que comience con Is sin importar lo que viene después.
El “_ “es un comodín que se traduce como cualquier carácter, en este caso “Is_ael” indica que cualquier string que contenga “Is-cualquier caracter-ael” es válido.
NOT LIKE: Es la inversa, es decir que no se parezca a eso.
Valores Nulos: para operar con valores nulos no podemos usar el signo “=”, tenemos que emplear IS NULL o IS NOT NULL.
IN se utiliza cuando tenemos muchos valores para una condición, los especificamos en un arreglo.
Selección(where)
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 >10AND cantidad <100;SELECT*FROM tabla_diaria
WHERE cantidad BETWEEN10AND 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).
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 NOTLIKE"Is_ael";
En el primero, colocamos un % para representar que se va a buscar lo que tenga is% pero que no importa los carácteres después de %.
En el segundo le estamos diciendo con _ que puede haber lo que sea en medio de Is y ael.
Y en el último le decimos que ponga todas las filas que no sean igual a lo que arriba estabamos buscando.
Igual podemos decir que nos traiga registros que estén vacíos o que no lo estén.
SELECT*FROM users
WHERE name ISNULL;SELECT*FROM users
WHERE name ISNOTNULL;
Y para seleccionar filas con datos específicos, usamos IN.
SELECT*FROM users
WHERE name IN('Israel','Laura','Luis');
Muy buen resumen.
Saludos
Excelente summary!
Yo uso diariamente el BETWEEN, LIKE y el IN. Son operadores que entregan mucho poder a tus querys y son faciles de usar! :D
Totalmente de acuerdo!
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.
Pregunto a grandes rasgos cuales son las diferencias entre like y ilike?
El ilike no distingue entre mayúsculas y minúsculas, creo
Realmente me parece que el curso se beneficiaria un montón de ir poniendo retos explícitos a lo largo de estas sesiones, porque se sienten muy teóricas.
No son teóricas, la idea es ver el concepto, la sintaxis del código y aplicarlo en nuestro DB platzi.anytable y listo.
llegarán dentro de muy poco, Gabriela, literalmente en unas clases adelante
SELECT*FROMPRUEBAS.ALUMNOSWHERE nombre IN('Wanda','Hilde','Veriee');
Esta genial el aporte, cómo logras que te quede el texto con colores ¿HTML?
No es >= y <=????
Asi es, el BETWEEN es inclusivo.
SELECT*FROM tabla_diaria
WHERE cantidad BETWEEN10AND100;
es equivalente a
SELECT*FROM tabla_diaria
WHERE cantidad >=10AND cantidad <=100;
Lo que entiendo es que estas preguntando como se coloca el diferente y es así ><
Al menos a mí no me funcionó con:
"I%"
Tuve que usar comillas simples:
'I%'
Generalmente eso depende del motor de base de datos, por ejemplo con MySQL no deberías tener problemas en hacer un like con comillas dobles. Te recomiendo que pruebes la diferencia en db-fiddle , aquí puedes probar con MySQL y PostgreSQL tu queries.
Saludos!
Mis notas personales sobre WHERE:
Con esta simple consulta retorno los alumnos que no tienen apellido.
Wow... nunca había visto lo del comodín Is_ael en el LIKE.... Gracias! Es muy útil!
x2, no lo habia usado y ya llevo tiempos con db relacionales xd
7. Selección (WHERE)
Sigma
Selecciona ciertos rows según nuestra condición.
SELECT*FROM tabla_diaria
WHERE id =1;SELECT*FROM tabla_diaria
WHERE cantidad >10;SELECT*FROM tabla_diaria
WHERE cantidad <100;SELECT*FROM tabla_diaria
WHERE cantidad >10AND cantidad <100;SELECT*FROM tabla_diaria
WHERE cantidad BETWEEN10AND100;SELECT*FROM users
WHERE name ='Israel'AND( lastname ='Vázques'OR lastname ='López');SELECT*FROM users
WHERE name ='Israel'AND lastname ='Vázques'OR lastname ='López';SELECT*FROM users
WHERE name LIKE'Is%';SELECT*FROM users
WHERE name LIKE'Is_ael';SELECT*FROM users
WHERE name NOTLIKE'Is_ael';SELECT*FROM users
WHERE name ISNULL;SELECT*FROM users
WHERE name ISNOTNULL;SELECT*FROM users
WHERE name IN('Israel','Laura','Luis');
Una clase muy divertida. Con lo que más me quedo es con la explicación de los parentesis que son importantes de contemplar.
Les dejo algunos de los operadores que pueden ser utilizados con WHERE
y LIKE
La correcta traducción de between es id >= 10 and id <= 100 ya que incluye loas valores de inicio y fin del rango dado.
where = donde ?
Creo que según el contexto equivaldría a algo como: en donde (no pregunta)
Hola!
El SELECT IF filtra también los rows de las columnas? y si es así, cuál es su diferencia con el WHERE, AND? Gracias.
El IF lo puedes poner como parte de las columnas, lo que hará es devolver una nueva columna con el alias que le asignes y el valor que asignes cuando sea true/false
También lo puedes poner como parte del where, sin embargo, se debe comparar con uno de los valores asignados, por ejemplo:
SELECT * FROM clientes where IF (edad >= 60, “3da”, “normal”) = “3da”
En este caso, devolverá solo los clientes que sean de la tercera edad.
Me encanta este profesor, sus explicaciones son 10/10.
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.
...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 NOTLIKE"Is_ael" #todas las que no sean como esta
...WHERE name IS/ISNOTNULL; #Decir que es nulo o no
....WHERE name IN('pedro','Israel','',)
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