Cabe mencionar que los operadores LIKE y BETWEEN AND, pueden ser negados con NOT
NOT LIKE
NOT BETWEEEN – AND –
Bienvenida conceptos básicos y contexto histórico de las Bases de Datos
Bienvenida conceptos básicos y contexto histórico de las Bases de Datos
Playground: tu primera consulta en bases de datos
Introducción a las bases de datos relacionales
Historia de las bases de datos relacionales
Qué son entidades y atributos
Entidades de Platzi Blog
Relaciones
Múltiples muchos
Diagrama ER
Diagrama Físico: tipos de datos y constraints
Diagrama Físico: normalización
Formas normales en Bases de Datos relacionales
Diagrama Físico: normalizando Platziblog
RDBMS (MySQL) o cómo hacer lo anterior de manera práctica
¿Qué es RDB y RDBMS?
Instalación local de un RDBMS (Windows)
Instalación local de un RDBMS (Mac)
Instalación local de un RDBMS (Ubuntu)
Clientes gráficos
Servicios administrados
SQL hasta en la sopa
Historia de SQL
DDL create
Playground: CREATE TABLE
CREATE VIEW y DDL ALTER
DDL drop
Playground: VIEW, ALTER y DROP en SQL
DML
Playground: CRUD con SQL
¿Qué tan standard es SQL?
Creando Platziblog: tablas independientes
Creando Platziblog: tablas dependientes
Creando Platziblog: tablas transitivas
Consultas a una base de datos
¿Por qué las consultas son tan importantes?
Estructura básica de un Query
SELECT
Playground: SELECT en SQL
FROM y SQL JOINs
Utilizando la sentencia FROM
Playground: FROM y LEFT JOIN en SQL
WHERE
Utilizando la sentencia WHERE nulo y no nulo
Playground: Filtrando Datos con WHERE
GROUP BY
ORDER BY y HAVING
Playground: Agrupamiento y Ordenamiento de Datos
El interminable agujero de conejo (Nested queries)
¿Cómo convertir una pregunta en un query SQL?
Preguntándole a la base de datos
Consultando PlatziBlog
Playground: Prueba Final con PlatziBlog
Introducción a la bases de datos NO relacionales
¿Qué son y cuáles son los tipos de bases de datos no relacionales?
Servicios administrados y jerarquía de datos
Manejo de modelos de datos en bases de datos no relacionales
Top level collection con Firebase
Creando y borrando documentos en Firestore
Colecciones vs subcolecciones
Recreando Platziblog
Construyendo Platziblog en Firestore
Proyecto final: transformando tu proyecto en una db no relacional
Bases de datos en la vida real
Bases de datos en la vida real
Big Data
Data warehouse
Data mining
ETL
Business intelligence
Machine Learning
Data Science
¿Por qué aprender bases de datos hoy?
Bonus
Bases de datos relacionales vs no relacionales
Elegir una base de datos
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Israel Vázquez Morales
WHERE es la sentencia que nos ayuda a filtrar tuplas o registros dependiendo de las características que elegimos.
Aportes 212
Preguntas 30
Cabe mencionar que los operadores LIKE y BETWEEN AND, pueden ser negados con NOT
NOT LIKE
NOT BETWEEEN – AND –
Otra forma de colocar “diferente” != es usando <>
Yo lo entiendo asi, las querys se componen en:
SELECT -> Columnas
FROM -> Tablas
WHERE -> Filas
un breve resumen del like y uso del %:
– %termina_en
– %en medio%
– inicia_con%
WHERE
El WHERE es una herramienta muy poderosa en cuanto a filtros, aunque creo que se faltó mencionar que puedes unir varias condiciones usando los operadores AND y OR
Algo curioso es que en versiones anteriores de MySQL o en algunas otras RDBMS el operador “!=” no funcionaba y en su lugar se usaba #<>" que justamente es el diferente de.
Y además del LIKE existe otra cosa maravillosa que se llama REGEXP que nos permite filtrar por medio de una expresión regular 7u7
Recursos de apoyo: Comparison Functions and Operators
Por lo que veo en SQL funciona todos los operadores de los lenguajes de programacion
SELECT *
FROM posts
WHERE id != 43 && id != 44 && id != 45 && id != 46;
esa sentencia traeria todo menos los id que sean 43, 44, 45 y 46.
COMMANDS THAT USE THE TEACHER IN THIS LEASON:
SELECT *
FROM posts
WHERE id<=50;
SELECT *
FROM posts
WHERE estatus=‘activo’;
SELECT *
FROM posts
WHERE id!=50;
SELECT *
FROM posts
WHERE titulo LIKE ‘%escandalo%’;
SELECT *
FROM posts
WHERE titulo LIKE ‘escandalo%’;
SELECT *
FROM posts
WHERE titulo LIKE ‘%escandalo’;
SELECT *
FROM posts
WHERE fecha_publicacion>‘2025-01-01’;
SELECT *
FROM posts
WHERE fecha_publicacion BETWEEN ‘2025-01-01’ AND ‘2025-12-31’;
SELECT *
FROM posts
WHERE YEAR(fecha_publicacion)BETWEEN ‘2023’ AND ‘2024’;
SELECT *
FROM posts
WHERE MONTH(fecha_publicacion)=04;
Aquí mi código y resultado de una consulta a los alumnos que tienen un promedio que está dentro del rango entre 10 a 14.
/*
/*
Además de la sentencia LIKE, existe su versión REGEXP_LIKE de expresiones regulares cuando la estructura que buscas sigue un patrón regular.
–> select * from posts where status!=‘activo’;
–> select * from posts where status<>‘inactivo’;
–> select * from posts where titulo like ‘%escandalo%’;
–> select * from posts where titulo like ‘escandalo%’;
–> select * from posts where titulo like ‘%roja’;
–> select * from posts where fecha_publicacion between ‘2022-01-01’ and ‘2023-12-31’;
–> select * from posts where year(fecha_publicacion)=‘2022’;
–> select * from posts where year(fecha_publicacion) between ‘2022’ and ‘2024’;
–> select * from posts where month(fecha_publicacion)=‘04’;
–> select * from posts where year(fecha_publicacion)=‘2022’ and month(fecha_publicacion)=‘05’;
Recordar que cuando buscamos un texto debe ir entre comillas si es número no es necesario comillas. Ejemplo:
Select *
From usuarios
Where nickname like ‘ISRAEL’
Operaciones de comparación
– Selecciona los posts que contengan la palabra escandalo
SELECT *
FROM posts
WHERE titulo LIKE ‘%escandalo%’
;
– Selecciona los posts cuya fecha de publicación es mayor a '2025-01-01’
SELECT *
FROM posts
WHERE fecha_publicacion > ‘2025-01-01’
;
– Selecciona los posts que estén dentro del intervalo de tiempo
SELECT *
FROM posts
WHERE fecha_publicacion BETWEEN ‘2023-01-01’ ANd ‘2025-12-31’
– Selecciona los posts con el ID correspondiente al intervalo
SELECT *
FROM posts
WHERE id BETWEEN 50 AND 60
;
– -- Selecciona los posts que estén dentro del intervalo de tiempo
SELECT *
FROM posts
WHERE YEAR(fecha_publicacion) BETWEEN ‘2023’ AND ‘2024’
;
– selecciona los posts que fueron publicados en un mes especifico
SELECT *
FROM posts
WHERE MONTH(fecha_publicacion) = ‘04’
;
UNA RECOMENDACION PARA ISRAEL, HAZ MAS ENFASIS EN LA SINTAXIS DEL QUERY EN SQL, EN CUANTO A LOS (), LAS COMAS Y LAS PUNTO Y COMA.
LIKE y BETWEEN AND, pueden ser negados con NOT
NOT LIKE O NOT BETWEEEN – AND –
Que gran clases se manda este profesor, literalmente es practico al instante y me funciona mucho esta forma de estudio.
SELECT *
FROM Platzi_teachers
WHERE Israel Vazquez >= 'gran educador';
Por lo que veo la base de datos guarda el campo DATE como un string. Si son strings, ¿no puedo hacer operaciones con ellos? Por ejemplo, restar los días para saber cuántos días hay entre dos fechas. Gracias.
Para filtrar por texto like, para filtrar por numero between.
Muy interesante la clase, es mas me pregunta si se podia realizar busqueda por exprecion regular y resulta que si.
Aca les dejo una busqueda que hice de todos los posts que inicien su titulo con la “T”.
No estaba enterada de las cláusulas YEAR y MONTH. Me parecen de gran utilidad. Muchas gracias por la explicación, excelente como siempre.
Trabajo en un Inventario de mas de 25 mil items de repuestos para equipos industriales y cuando llegue se me enseño a buscar con los %% para buscar por descripción y hasta ahorita entendí a que se refería todo esto, gracias.
¿Alguien más tuvo problemas para introducir los datos que venían en los archivos? A mi me siguen saliendo errores de sintaxis
Cómo me está apasionando este curso y las bases de datos. Me encanta la forma de hablar y explicar del profesor, se nota que este tema le fascina.
Creo que para marketing, saber de BBDD es indispensable y totalmente útil.
Excelente, ahora tenemos distintos medios para filtrar las consultas que queramos realizar, el método que más atención me llamo fue el de las fechas, ya que no estaba seguro de cómo realizar consultas en base a los meses, pero gracias a las instrucciones de Israel se me aclaro esa duda y puedo hacer una consulta que quería para mi proyecto, la cual es determinar el número de ventas realizadas para un mes especifico, el código seria el siguiente:
SELECT * FROM pedidos AS tbpedi WHERE MONTH(Fecha) = ‘06’ AND Id_estado = 3
Que buena explicación sobre todo el LIKE muy util.
No puedo esperar a conectar esto con Java.
Muy buen profesor !
Para desarrolladores web y para frontend una manera fácil de interiorizar esto es el como se trabaja con las APIS, Las APIS literalmente las utilizamos mediante querys!
Simplemente aqui se esta viendo mediante un GUI y una terminal, mientras que en el front end lo vemos en un url o en objeto.
Bueno dado que el profesor realiza ejemplos seleccionando year y month, quise probar a ver si con day funcionaba, y de hecho así fue, comparto querys.
<select * from posts
where month(fecha_publicacion) between '01' and '12';
select * from posts
where day(fecha_publicacion) between '01' and '28';>
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.
SELECT *
FROM platziblog.usuarios
LEFT JOIN platziblog.posts ON usuarios.id = posts.usuario_id
INNER JOIN platziblog.categorias ON posts.categoria_id = categorias.id;
En el where se utilizo YEAR y MONTHS para seleccionar determinado mes y año de un campo tipo timestamp, ¿Existe una función similar para seleccionar determinado valor de un tipo de dato number?
Es la sentencia que nos ayuda a filtrar tuplas o registros dependiendo de las características que elegimos.
.
Ejemplo:
SELECT *
FROM posts
WHERE titulo LIKE ‘%roja’ ;
.
El porcentaje antes, arrastra todo lo que termine con la cadena después del mismo y el porcentaje (%) después arrastra todo con lo que empiece la cadena; En ambos lados, todo lo que tenga esa cadena escrita
.
EjemploS:
SELECT *
FROM posts
WHERE ID BETWEEN 10 AND 20;
.
SELECT *
FROM posts
WHERE MONTH(fecha_publicacion) = ‘04’;
Muy buena clase, ahora creo saber como hacer un buscador en mi aplicación y como filtrar los datos.
¿Existe una mejor forma de hacer estas cosas? les agradeceria que me dijeran el tema para poder investigarlo
-- examples about where query
SELECT * FROM people
WHERE id not in (43, 44, 45, 46);
WHERE id < 43 and id > 46;
WHERE estatus='activo';
WHERE id!=50;
WHERE titulo LIKE '%world%';
WHERE titulo LIKE 'world%';
WHERE titulo LIKE '%world';
WHERE updated_at>'2025-01-01';
WHERE updated_at BETWEEN '2025-01-01' AND '2025-12-31';
WHERE YEAR(updated_at) BETWEEN '2023' AND '2024';
WHERE MONTH(updated_at)=04;
Se puede usar mySQL con Javascript?
Excelente clase, lo que me falta es llenar las tablas para replicar lo mismo que el profe
Excelente!
Muy buena explicación. Muchos de aquí y me incluyo no teníamos noción de las clausulas del YEAR y del MONTH.
Y aqui es donde comenzamos a hacer vistas mas poderosas.
Para aprender esto bien bien lo mejor es experiementar con todas las opciones que se te ocurran
En SQL hay varias funciones y operadores que te permiten trabajar con fechas y horas:
YEAR(): para obtener el año de una fecha
MONTH(): para obtener el mes de una fecha en números
DAY(): para obtener el día de una fecha
DATE(): para obtener la fecha sin la parte del tiempo
TIME(): para obtener la hora de una fecha
NOW(): para obtener la fecha y hora actuales
DATEDIFF(): para calcular la diferencia entre dos fechas en días
TIMESTAMPDIFF(): para calcular la diferencia entre dos fechas en una unidad de tiempo específica
Se hace muy sencillo aprender al menos lo básico siguiendo los ejemplos del profesor. He visto varios queries que me quedo como “¡Qué carj**!”. Paso a paso se va aprendiendo 💪.
Aquí les quiero dejar un cheatsheet de SQL para que lo puedan usar cuando necesiten solucionar un problema, hace poco me sirvió para modificar la información de ciertas filas en mi base de datos.
.
Además del tipo de dato “fecha”, en MySQL también puedes usar la cláusula “BETWEEN” con los tipos de datos “numericos” (como “integer”, “decimal” o “float”) y “fecha y hora” (como “date”, “time”, “datetime” y “timestamp”). Esto te permite realizar búsquedas de valores que se encuentren dentro de un rango específico.
Algunas de las funciones de fecha dentro de una consulta podría ser:
DATEDIFF la cual nos arroja una diferencia entre fechas de acuerdo a los parámetros colocados, y esa diferencia puede ser year, month, day, week, hour…
Sintaxis:
select DATEDIFF(year, ‘2005-12-31 23:59:59.9999999’, ‘2006-01-01 00:00:00.0000000’);
Un pequeño pero importante detalle: cuando usas BETWEEN en el WHERE y luego el AND, es igual que en programación ambas premisas deben ser válidas (true) para se cumpla.
waooo WHERE es una propiedad muy poderosa!! excelente, excelente explicación.
También nos traerá los null!
Les quiero comentar que me puse a curiosear si se podía usar REGEX, y si se puede!
He aquí un ejemplo!
SELECT *
FROM posts
WHERE titulo REGEXP '.descubren'
En este caso, le estoy diciendo que me busque un titulo donde tenga lo que sea antes de la palabra “descubren”
SELECT titulo, descripcion, nombre_tecnico, nombre
FROM tickets
INNER JOIN tecnicos ON tickets.tecnico_id = tecnicos.id
INNER JOIN clientes ON tickets.cliente_id = clientes.id;
Mis join anidados para mostrar nombre de tecnico y de cliente sin necesidad de mostrar el ID
Si están en postgres, la forma de hacer búsquedas por año o mes se pueden hacer con estas dos ordenes:
where extract (month from date) between '02' and '12';
where date_part('month', date) between '02' and '12';
Para hacer la consulta de las publicaciones del año 2025 usé la siguiente sentencia:
<SELECT * FROM posts
WHERE fecha_publicacion LIKE '2025%';>
Ya que LIKE ‘algo al inicio%’, busca la cadena tal cual al inicio de la columna en cuestión
WHERE
nos ayuda a filtrar tuplas de acuerdo a criterios específicos como fechas, cantidades, etc. Ejemplo, la siguiente consulta nos permitirá consultar todos los posts que tengan un id menor a 50:
SELECT *
FROM schemaname.posts
WHERE id < 50;
En estos casos, nos será muy útil tener bien definidos los tipos de dato de nuestros campos.
Si queremos ingresar criterios de los que no tenemos el valor preciso, podemos usar la sentencia LIKE
:
SELECT *
FROM schemaname.posts
WHERE titulo LIKE '%[someWordBetweenFieldValue]%';
Para especificar que el valor buscado esté al inicio o al final, removemos el signo de %
del inicio o del final para cada opción respectivamente:
SELECT *
FROM schemaname.posts
WHERE titulo LIKE '[someWordBetweenFieldValue]%'; -- para buscar la palabra al inicio
Podemos validar también con fechas:
SELECT *
FROM schemaname.posts
WHERE post_date > '2025-01-01';
O elementos en intervalos con las sentencias BETWEEN
y AND
(estas sentencias se pueden usar para establecer intervalos a otros tipos de dato):
SELECT *
FROM schemaname.posts
WHERE post_date BETWEEN '2023-01-01' AND '2025-01-01';
Podemos usar la función YEAR
, por mencionar un ejemplo, para no escribir toda la fecha sino solo el año y filtrar los elementos de acuerdo a alguno de sus campos que maneje un timestamp:
SELECT *
FROM schemaname.posts
WHERE YEAR(post_date) BETWEEN '2023' AND '2025';
Algo que me parece el profesor no menciono en esta clase pero es super simple de comprender es que en** WHERE** puedes utilizar** and **y or para filtrar las columnas, por ejemplo:
UTILIZANDO AND:
SELECT *
FROM posts
where estatus = 'activo' and usuario_id = 2;
esto me va a regresar los post que esten ACTIVOS y hayan sido escritos por el usuarios con ID 2.
estatus = Activo And usuario_id = 2
UTILIZANDO OR:
SELECT *
FROM posts
where estatus = 'activo' or usuario_id = 2;
Me va a devoler los posts que sean activos o que hayan sido escritos por el usuario con id 2, lo que significa que me puede devolver un post inactivo siempre y cuando haya sido escrito por el usuario 2, o que me puede devolver un post activo que no haya sido escrito necesariamente por el usuario con id igual a 2
😄
No sé si les pasa, pero siento que cada clase es como un nuevo mundo jajajajaja. Es emocionante, desde el video en sí hasta detalles como comentarios destacados, dudas nuevas, entre otros. Platzi es mágico.
Tambien dentro del where el parametro IN es muy util para traer datos mas especificos generalmente lo utilizo con los ID ejemplo:
SELECT * FROM posts WHERE id IN(46,48,58);
También pueden usar palabras reservadas de MySQL para hacer sus consultas más fáciles, por ejemplo si queremos mostrar lo que esté entre dos años, podemas usar la siguiente sentencia.
Esto es un abrebocas para todo lo que con esas sentencias se puede hacer.
SELECT *
FROM posts
WHERE year(fecha_publicacion) BETWEEN '2025' AND '2030'
Yo no sabía que también se podían hacer BETWEEN con cadenas de caracteres, les dejo un ejemplo.
SELECT * FROM players WHERE full_name BETWEEN 'Cristian%' and 'Lionel%' ORDER BY full_name;
SELECT *
FROM posts
WHERE estatus = "activo";
SELECT *
FROM posts
WHERE estatus = "inactivo";
SELECT *
FROM posts
WHERE id !=50;
SELECT *
FROM posts
WHERE titulo LIKE "%escandalo%";
SELECT *
FROM posts
WHERE fecha_publicacion >'2025-01-01'
SELECT *
FROM posts
WHERE fecha_publicacion BETWEEN '2023-01-01'AND'2025-01-01';
hay alguna ventaja de escribir las intrucciones por la consola y no por el DBMS?
Por que le cambiaron el color del croma al final jajaja
Es posible hacer JOIN a partir de este tipo de ejemplos de WHERE?
Excelente video
WHERE es la sentencia que nos ayuda a filtrar tuplas o registros dependiendo de las características que elegimos.
Buscar con el carácter %
(comodín) al inicio, al final o en ambos extremos de la palabra.
SELECT * FROM posts WHERE titulo LIKE '%escándalo';
-- Esto devolverá todos los títulos que terminen con la palabra "escándalo".
SELECT * FROM posts WHERE titulo LIKE 'escándalo%';
-- Esto devolverá todos los títulos que comiencen con la palabra "escándalo".
SELECT * FROM posts WHERE titulo LIKE '%escándalo%';
Esto devolverá todos los títulos que contengan la palabra "escándalo" en cualquier parte del título.
Hola compañeros, les comparto mis apuntes sobre este tema!
Algunos de los caracteres comodín más comunes son:
En resumen, el operador LIKE es útil para realizar búsquedas flexibles y patrones en los datos de una columna en una base de datos MySQL.
Cabe mencionar que el operador AND lo podemos combinar con varios criterios.
select *
from posts
where year(fecha_publicacion) between '2023' and '2025' and month(fecha_publicacion) = '04'
;
La cláusula WHERE en SQL se utiliza para filtrar filas de una tabla basándose en una condición específica. En otras palabras, te permite recuperar datos que cumplan con ciertas condiciones específicas de una tabla.
SELECT:
La condición dentro de la cláusula WHERE es una expresión lógica que generalmente involucra operadores de comparación (como igual, mayor que, menor que, etc.) y operadores lógicos como, (AND) OR para definir qué filas deben ser seleccionadas.
Excelente clase, me encantó:D.
Gracias por las explicaciones profe…
El símbolo ‘%’ puede colocarse también en otras posiciones del patrón para lograr diferentes tipos de coincidencias:
’%texto’ coincidirá valores que terminen con ‘texto’
‘texto%’ coincidirá con valores que comiencen con ‘texto’
’%texto%’ coincidirá con valores que contengan ‘texto’ en cualquier posición
Los operadores como el AND o OR, también pueden encadenar condicionales para filtrar la información.
SELECT * FROM posts
WHERE
MONTH (fecha_de_publicacion) = '04'
AND
YEAR(fecha_de_publicacion) BETWEEN '2023' and '2025'
OR
postid = 46
ORDER BY fecha_de_publicacion DESC;
Pilas.
Que por default el LIKE es case insensitive.
SELECT *
FROM posts
WHERE MONTH(fecha_publicacion) = '04'
;
Esta Clase debería ser mucho anterior a la de otras.
Like excel… no me odien
hey que loco el multiverso cambiaron el color
Excelente clase
interesante clase
Sentencias con WHERE
< menor
´ > mayor
= ‘activo’ igual que y funciona bien cuando conocemos la cadena exacta
!= ‘activo’ diferente que activo
Like -> Cuando no conozco la cadena exacta
Select *
From posts
where titulo like '%escandalo%';
Select *
From posts
where year( fecha_publicacion) > 2025;
Select *
From posts
where year( fecha_publicacion) between 2023 and 2025;
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?