No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Curso Pr谩ctico de SQL

Curso Pr谩ctico de SQL

Israel V谩zquez Morales

Israel V谩zquez Morales

Selecci贸n (WHERE)

7/29
Recursos

Aportes 81

Preguntas 10

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

aqui mi resumen

<h1>Selecci贸n(where)</h1>

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";
  • 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 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');

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.

Fuente: https://www.w3schools.com/sql/sql_like.asp

Yo uso diariamente el BETWEEN, LIKE y el IN. Son operadores que entregan mucho poder a tus querys y son faciles de usar! 馃槃

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.

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.

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 <=???

Al menos a m铆 no me funcion贸 con:

"I%"

Tuve que usar comillas simples:

'I%'

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!

Una clase muy divertida. Con lo que m谩s me quedo es con la explicaci贸n de los parentesis que son importantes de contemplar.

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 > 10
	AND cantidad < 100;

SELECT * 
FROM tabla_diaria
WHERE cantidad BETWEEN 10
	AND 100;

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 NOT LIKE 'Is_ael';

SELECT *
FROM users 
WHERE name IS NULL;

SELECT *
FROM users 
WHERE name IS NOT NULL;

SELECT *
FROM users 
WHERE name IN ('Israel','Laura','Luis');

where = donde ?

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 鈥減arecido鈥, 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',''  ,)

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

SELECT = Cual atributo
FROM = De que tabla
WHERE = que filtro quieres aplicar a la base de datos para no traer todo

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

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!

Les dejo algunos de los operadores que pueden ser utilizados con WHERE

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 apuntes:

puede servirles este link: https://www.w3schools.com/sql/sql_where.asp
saludos.

A continuaci贸n comparto mi practica de acuerdo lo visto en clase:

SELECT *
FROM platzi.alumnos
WHERE id = 1;

SELECT *
FROM platzi.carreras
WHERE fecha_alta > '2018-05-13 00:11:20';

SELECT *
FROM platzi.carreras
WHERE fecha_alta  < '2020-06-06 16:40:34';

SELECT *
FROM platzi.carreras
WHERE fecha_alta > '2018-05-13 00:11:20'
	AND  fecha_alta  < '2020-06-06 16:40:34';
	
SELECT * 
FROM platzi.carreras
WHERE fecha_alta 
BETWEEN '2018-05-13 00:11:20' AND '2020-06-06 16:40:34';

SELECT *
FROM platzi.alumnos
WHERE nombre = 'Wanda'
AND (
	apellido = 'Billington'
	OR
	apellido = 'Wakeley'
);

SELECT *
FROM platzi.alumnos
WHERE nombre = 'Wanda'
AND apellido = 'Billington'
OR apellido = 'Wakeley';

SELECT *
FROM platzi.alumnos
WHERE nombre LIKE 'Wa%';

SELECT * 
FROM platzi.alumnos
WHERE nombre LIKE '%da';

SELECT *
FROM platzi.alumnos
WHERE nombre LIKE 'Wa_da';

SELECT *
FROM platzi.alumnos
WHERE nombre NOT LIKE 'Wa_da';

SELECT *
FROM platzi.alumnos
WHERE apellido IS NULL;

SELECT * 
FROM platzi.alumnos
WHERE apellido IS NOT NULL;

SELECT *
FROM platzi.alumnos
WHERE nombre IN ('Wanda', 'Tobe', 'Ruthe', 'Cindy');

Vengo del futuro para advertir que la respuesta del quiz esta mal.

En la sentencia SELECT donde se utiliza la cl谩usula WHERE y los operadores l贸gicos AND y OR, y se agrupan los t茅rminos con un par茅ntesis, es importante resaltar que la posici贸n de los par茅ntesis dentro de la expresi贸n realmente influye en c贸mo se mostrar谩n los resultados porque en el ejemplo donde no se colocan los par茅ntesis, el interpretador de la sentencia (sistema) entiende que los dos primeros t茅rminos de la expresi贸n est谩n agrupados.

Ejemplo:

SELECT * FROM users WHERE name = 鈥業srael鈥 AND lastname = 鈥榁AZQUEZ鈥 OR lastname = 鈥楲OPEZ鈥

ser铆a igual a hacer esto:

SELECT * FROM users WHERE name = (鈥業srael鈥 AND lastname = 鈥榁AZQUEZ鈥) OR lastname = 鈥楲OPEZ鈥

El sistema lo leer铆a as铆: Muestrame todos los registros donde el nombre sea Israel y el apellido Vazquez, y si no hay ning煤n registros as铆, muestrame entonces todos los registros donde el apellido sea L贸pez, sin importar el nombre.

Con el par茅ntesis:

SELECT * FROM users WHERE name = 鈥業srael鈥 AND (lastname = 鈥榁AZQUEZ鈥 OR lastname = 鈥楲OPEZ鈥)

Se leer铆a as铆: Muestrame todos los registros donde el nombre sea Israel, y que el apellido sea Vazquez o L贸pez. En la proyecci贸n solo encontrar铆amos tuplas con nombre Israel, y algunos de los dos apellidos.

Hay que tener cuidado con las condiciones, ya que se pueden agrupar.

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 primer caso traer谩 todos los Israel que se apelliden V谩squez o L贸pez.

Para el segundo, traer谩 a todos los Israel V谩squez y todos los que se apellidan L贸pez.

SELECT * FROM platzi.alumnos
WHERE colegiatura BETWEEN 3500 AND 4000 

EJEMPLO

SELECT id, nombre, apellido, email, colegiatura 
	FROM platzi.alumnos WHERE nombre = 'Wanda' AND 
	(apellido = 'Stoffer' OR apellido = 'Billington');

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'
)

where, donde lo va ubicar a que va buscar y donde.

Segunda parte de la practica.

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.

Y recuerden que el placeholder funciona de varias maneras

'Is%' -> Israel, Ismael, Isaac鈥
'%is' -> Ludacris, Cris, Isis
'%is%' -> Cristian, Beatrisia

鈥 SELECT *
鈥 FROM platzi.alumnos
鈥 WHERE colegiatura BETWEEN 4500 AND 5000;

鈥 SELECT *
鈥 FROM platzi.alumnos
鈥 WHERE nombre = 鈥榃anda鈥
鈥 AND (apellido = 鈥楤illington鈥
鈥 OR apellido = 鈥楪arnall鈥);

鈥 SELECT *
鈥 FROM platzi.alumnos
鈥 WHERE nombre = 鈥榃anda鈥
鈥 AND apellido = 鈥楤illington鈥
鈥 OR apellido = 鈥楪arnall鈥;

鈥 SELECT *
鈥 FROM platzi.alumnos
鈥 WHERE nombre LIKE 鈥%nda鈥;

SELECT *
FROM platzi.alumnos
WHERE nombre NOT IN (鈥榃anda鈥, 鈥楳alynda鈥, 鈥楲ucinda鈥);

SELECT *
FROM tabla_diaria
WHERE id = 1; 

SELECT * 
FROM tabla_diaria
WHERE cantidad > 10;

SELECT * 
FROM tabla_diaria
WHERE cantidad < 100;

Se puede agregar and para sumar otra condici贸n 
SELECT * 
FROM tabla_diaria
Where cantidad > 10
AND cantidad < 100;

Para filtrar rangos tambi茅n podemos usar between y and 
SELECT * 
FROM tabla:diaria 
WHERE cantidad BETWEEN 10 AND 100;

Tambi茅n podemos filtrar por 'O' si se cumple A o B 
SELECT * 
FROM users
Where name = 'Israel'
AND (lastname = 'V谩zques'
			OR 
		lastname = 'L贸pez');

Tolos los Israel V谩zquez o + los que apellidan l贸pez
SELECT * 
FROM users
WHERE name ='Israel'
AND lastname = 'V谩zquez'
OR lastname = 'L贸pez'

Para trabajar con cadenas, like empiezan con determinadas letras 
SELECT* 
FROM users
where name LIKE 'Is%';

like comod铆n, cualquier letra
SELECT * 
FROM users
where name like "Is_ael";

Not like filtrame todos las que no cumplan con determinado patr贸n 
SELECT *
FROM users
WHERE name NOT LIKE "Is_ael";

Nulos
SELECT *
FROM users
WHERE name IS NULL;

No nulos 
SELECT *
FROM users
WHERE name IS NOT NULL;

Para filtrar los valores dentro de los par茅ntesis de IN
SELECT *
FROM users
WHERE name IN ('Israel', 'Laura', 'Luis');

Ya avanc茅 bastante con la clase 馃槃
Prueben estas consultas.

SELECT
    *
FROM
    platzi.alumnos a;

SELECT
    *
FROM
    platzi.carreras c
ORDER BY
    carrera ASC;

-- CONTAR LA CANTIDAD DE ALUMNOS
SELECT
    COUNT(*) AS "Cantidad Alumnos"
FROM
    platzi.alumnos a;

--CONTAR LA CANTIDAD TOTAL DE CARRERAS SEG脷N ID Y CANTIDAD UNICA DE CARRERAS SEGUN EL NOMBRE
SELECT
    COUNT(c.carrera) AS "Cantidad Total Carreras",
    COUNT(DISTINCT c.carrera) AS "Cantidad Unica de Carreras"
FROM
    platzi.carreras c;

--CANTIDAD TOTAL DE CARRERAS AGRUPADAS POR VIGENCIA
SELECT
    CASE WHEN vigente = FALSE THEN
        'No Vigente'
    ELSE
        'Vigente'
    END AS StatusVigente,
    COUNT(id) AS "Cantidad Carreras"
FROM
    platzi.carreras c
GROUP BY
    StatusVigente;

--LISTAR EL TOP 5 DE CARRERAS CON MAYOR CANTIDAD DE ALUMNOS INSCRITOS(EXCLUIR LAS CARRERAS QUE NO TENGAN ALUMNOS INSCRITOS)
SELECT
    c.carrera,
    COUNT(a.id) AS "Cantidad alumnos"
FROM
    platzi.alumnos a
    RIGHT JOIN platzi.carreras c ON a.carrera_id = c.id
GROUP BY
    c.carrera
ORDER BY
    "Cantidad alumnos" DESC
LIMIT 5;

--CARRERAS QUE NO TIENEN ALUMNOS INSCRITOS
SELECT
    c.carrera,
    COUNT(a.id) AS "Cantidad alumnos"
FROM
    platzi.alumnos a
    RIGHT JOIN platzi.carreras c ON a.carrera_id = c.id
GROUP BY
    c.carrera
HAVING
    COUNT(a.id) = 0
ORDER BY
    "Cantidad alumnos" ASC;

--LISTADO DE ALUMNOS QUE NO ESTAN INSCRITOS EN UNA CARRERA
SELECT
    a.nombre,
    c.carrera
FROM
    platzi.alumnos a
    LEFT JOIN platzi.carreras c ON a.carrera_id = c.id
WHERE
    a.carrera_id IS NULL
ORDER BY
    c.carrera ASC;


OJO: a como est谩n expresas las queries que muestra el profe, los resultados no ser铆an iguales en estas 2 consultas. aqu铆 es un tema de poder interpretar los signos de comparaci贸n. Porqu茅? En este ejemplo que presenta el profe: WHERE cantidad > 10 AND cantidad < 100 en esta query, esperamos un resultado entre 11 y 99. Y en la query: WHERE cantidad BETWEEN 10 AND 100 se espera un resultado entre 10 y 100. En todo caso si queremos un resultado en el cual nos arroje los valores 10 y 100, la consulta entonces debe ser declarada as铆: WHERE cantidad >= 10 AND cantidad <=100 esta si ser铆an los mismos resultados esperados igual que el BETWEEN. Es un tema m谩s de forma.

Uso de WHERE

Ser铆a Genial que en este curso coloquen los playground como los hay en el curso de fundamentos de base de datos鈥

Espero que sean implementados en todos los cursos de programaci贸n !! 馃槂

Comparen en un Query la diferencia con y sin parentesis

SELECT *
FROM platzi.alumnos
WHERE nombre = 'Rhianna鈥
AND (apellido='Saby鈥
OR apellido IS NULL);


SELECT *
FROM platzi.alumnos
WHERE nombre = 'Rhianna鈥
AND apellido='Saby鈥
OR apellido IS NULL;

A mi el like solo me funciona entre comillas simples 鈥 鈥 y no dobles " "

Aqu铆 dejo la sentencia para filtrar la tabla sin una serie de nombres:

select * 
from platzi.alumnos as al
where nombre not in ('Bill', 'Lou','Axel');

Se puede usar varios 鈥榓nd鈥, pero aun no se si es la forma correcta para hacerlo, si alguien me dice, se lo agradeceria mucho!!!

select * from platzi.alumnos where id >=100;
select * from platzi.alumnos where id between 10 and 100;

Si quieren buscar sin importar may煤sculas o min煤sculas pueden usar ilike. Ejemplo:

SELECT * FROM USUARIOS WHERE NOMBRE ILIKE 'Ne%';

retornar谩 aquella que coincide con 鈥楴elson鈥, 鈥榥elson鈥, 鈥楴ELSON鈥

Dejo mi aporte , el profe Israel en los ejemplos esta utilizando comillas dobles (" ) pero en postgree sql lo que debes hacer es utilizar comillas simples ( 鈥 ) .

Selecci贸n WHERE

Esta operaci贸n se refiere a Where y se representa tambi茅n con el s铆mbolo 鈭. Cumplir los requerimientos de nuestros queries. Seleccionar rows (renglones)

Ejercicio de la clase

.

SELECT * FROM platzi.alumnos
WHERE apellido NOT LIKE 'Freeborn';

En el Browser Brave se me detienen los videos.

Notas 馃槃

Selecci贸n (WHERE)

  • Se representa con $\sigma$, y equivale a la sentencia WHERE.

  • Algunos ejemplos:

    SELECT * FROM tabla
    WHERE id = 1; # tabla.id -> id pq ya se seleccion贸
    
    SELECT * FROM tabla
    WHERE cantidad > 10;
    
    SELECT * FROM tabala
    WHERE cantidad < 100;
    
  • Se pueden poner cotas superiores e inferiores usando AND:

    SELECT * FROM tabla
    WHERE cantidad > 10
    	AND cantidad < 100;
    
    # Una manera equivalente
    SELECT * FROM tabla
    WHERE cantidad BETWEEN 10
    	AND 100;
    
  • Tambi茅n est谩 el OR:

    SELECT * FROM users
    WHERE name = 'Israel'
    	AND (
    		lastname = 'V谩zquez'
    		OR
    		lastname = 'L贸pez'
    	);
    
    # Si quitas los par茅ntesis, no es lo mismo!
    SELECT * FROM users
    WHERE name = 'Israel'
    	AND lastname = 'V谩zquez'
    	OR lastname = 'L贸pez';
    
  • En el caso particular de las cadenas de texto, podemos buscar mejor usando LIKE

    # Comienza con Is
    SELECT * FROM users
    WHERE name LIKE 'Is%';
    
    # _ es lo que sea (Israel, Ismael)
    SELECT * FROM users
    WHERE name LIKE 'Is_ael';
    
    # Se puede usar el negativo
    SELECT * FROM users
    WHERE name NOT LIKE 'Is_ael';
    
  • Para manejar NULL:

    SELECT FROM users
    WHERE name IS NULL;
    
  • Finalmente, puede ser IN:

    SELECT * FROM users
    WHERE name IN ('Israel', 'Laura', 'Luis')
    

Si vienen de matem谩ticas o ciencias y no tanto de progrmaci贸n, pueden estudiar un tema de teor铆a de conjuntos denominado leyes de morgan, creo que puede facilitar el aprendizaje de algunos 馃槃

Les dejo un ejemplo con las bases del curso.

me funcion贸 pero con comilla simple

![](
mi primera consulta

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%' ;> 

![](

Query para categorizar los precios de la colegiatura 馃槂

SELECT nombre, apellido, colegiatura, carrera,
CASE 
	WHEN colegiatura > 4000 THEN 'CARO'
	WHEN colegiatura BETWEEN 3000 AND 4000 THEN 'BUEN PRECIO'
	ELSE 'Barato'
END AS Precio
FROM platzi.alumnos
INNER JOIN platzi.carreras ON carrera_id = carreras.id
ORDER BY precio DESC
;

Moraleja: Siempre utlicen parentesis 馃槄

Me encanta!!! Estoy practicando con las tablas que nos brindaron y entiendo mucho mejor todo, he recordado y eliminado varias dudas que pens茅 que sab铆a. Muchas gracias, estoy encantada de seguir aprendiendo!!

No ten铆a claro como funcionaba LIKE

un ejemplo implementando a un stock de productos

SELECT stock FROM productos WHERE stock > 0
SELECT count(nombre_prodcuto) FROM productos

Selecci贸n (WHERE)

  • Se representa con la letra sigma
  • Se pueden usar operadores l贸gicos
  • Funci贸n BETWEEN
  • Funci贸n LIKE y NOT LIKE con Wildcards
  • Wildcards: % (cualquier cantidad de caracteres), _ (caracter comod铆n)
  • IS NULL, IS NOT NULL
  • IN ( arreglo_de_nombres, segundo_string, etc.)
5. SELECCI脫N (Where) - Se representa tambi茅n con el s铆mbolo sgma 
  • SELECT *
    FROM tabla_diaria
    WHERE id = 1;
    Se seleccionan las tuplas cuyo id sea igual a 1. Esta selecci贸n aplica para ciertas instancias de un atributo
  • SELECT *
    FROM tabla_diaria
    WHERE id > 1;
    Se seleccionan las tuplas cuyo id sea mayor a 10. Esta selecci贸n aplica para ciertas instancias de un atributo
  • SELECT *
    FROM tabla_diaria
    WHERE id < 100;
    Se seleccionan las tuplas cuyo id sea menor a 10. Esta selecci贸n aplica para ciertas instancias de un atributo
  • SELECT *
    FROM tabla_diaria
    WHERE cantidad > 10
    AND cantidad < 100;
    Se seleccionan las tuplas cuya cantidad sea mayor a 10 y adem谩s sean menores que 100. Esta selecci贸n aplica para ciertas instancias de un atributo
  • SELECT *
    FROM tabla_diaria
    WHERE cantidad BETWEEN 10
    AND 100;
    Se seleccionan las tuplas cuya cantidad sea mayor a 10 y adem谩s sean menores que 100. Esta selecci贸n aplica para ciertas instancias de un atributo. Entre un rango y otro.
  • SELECT *
    FROM users
    WHERE name = "Israel"
    AND (
    lastname = "V谩zquez"
    OR
    lastname = 鈥淟贸pez鈥
    );
  • SELECT *
    FROM users
    WHERE name = "Israel"
    AND lastname = "V谩zquez"
    OR lastname = 鈥淟贸pez鈥;
  • SELECT *
    FROM users
    WHERE name LIKE 鈥淚s%鈥; 鈥> Despu茅s del % puede venir cualquier cosa.
  • SELECT *
    FROM users
    WHERE name LIKE 鈥淚s_ael鈥; 鈥> Comod铆n
  • SELECT *
    FROM users
    WHERE name NOT LIKE 鈥淚s_ael鈥; 鈥> Complemento del comod铆n
  • ELECT *
    FROM users
    WHERE name IS NULL;
  • ELECT *
    FROM users
    WHERE name IS NOT NULL;
    ELECT *
    FROM users
    WHERE name IN (鈥業srael鈥 , 鈥楲aura鈥 , 鈥楲uis鈥
    ); --> Trae los row cuya columna nombre tenga estos nombres

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 (鈥渁鈥,鈥渂鈥,etc)
NOT IN: no incluye los datos de la cadena (鈥渁鈥,鈥渂鈥,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