Resumen del Curso de SQL: Desde Fundamentos hasta Avanzados
Introducción
Este curso de SQL ofrece una guía completa desde los fundamentos básicos hasta conceptos avanzados como subconsultas, joins y transacciones. Aprenderás a manejar bases de datos, optimizar consultas y aplicar técnicas de normalización, todo mientras trabajas con ejemplos prácticos y ejercicios.
Contenido del Curso
-
Fundamentos de SQL
- Introducción a SQL y su importancia en la gestión de bases de datos. Para aquellos que deseen profundizar en la creación de bases de datos, se recomienda el resumen de Aprende MySQL: Introducción y Primeros Pasos para Crear Bases de Datos.
- Estructura básica de una consulta SQL.
-
Consultas Básicas
- Uso de SELECT, WHERE, y operadores de comparación.
- Filtrado de datos y uso de funciones de agregación como COUNT, SUM, AVG.
-
Joins y Relaciones entre Tablas
- Inner Join, Left Join, Right Join y Full Join.
- Cómo unir tablas y trabajar con relaciones. Para una comprensión más profunda de las bases de datos relacionales, consulta A Comprehensive Guide to PostgreSQL: Basics, Features, and Advanced Concepts.
-
Subconsultas
- Definición y uso de subconsultas en SQL.
- Ejemplos prácticos de subconsultas en SELECT y WHERE.
-
Transacciones y Bloqueos
- Concepto de transacciones y su importancia en la integridad de los datos.
- Uso de COMMIT y ROLLBACK para manejar cambios en la base de datos.
-
Índices
- Creación y uso de índices para optimizar consultas.
- Ventajas y desventajas de los índices en bases de datos.
-
Vistas
- Creación y uso de vistas para simplificar consultas complejas.
- Cómo las vistas pueden mejorar la legibilidad y organización del código.
-
Normalización de Bases de Datos
- Primeras, segundas y terceras formas normales.
- Cómo aplicar la normalización para evitar redundancias y mejorar la estructura de la base de datos. Para más información sobre la normalización y su aplicación, revisa Understanding the ALTER Command in SQL: A Comprehensive Guide.
Conclusión
Este curso proporciona una base sólida en SQL, permitiendo a los estudiantes manejar bases de datos de manera efectiva y eficiente. Con ejercicios prácticos y ejemplos del mundo real, los participantes estarán preparados para aplicar sus conocimientos en entornos laborales. Si estás interesado en el desarrollo web, también puedes explorar Desarrollo Frontend desde Cero: Creando Tu Primer Sitio Web para complementar tus habilidades.
sql el lenguaje más utilizado de todo el mundo para manejar bases de datos eso es sql uno de los lenguajes de programación
más poderosos que existen Y sí sql es un lenguaje de programación y también estoy yo Lucas dalto programador y creador de
contenido educativo que está acá para darte el mejor curso de sql que vas a ver en toda tu vida para un poco flaco
Eh ya ya tenía que aparecer Qué pasa Qué pasa Por qué me interrumpí en medio de la introducción del curso otra vez vas a
arrancar así no más con el curso y Sí obvio es lo que estoy haciendo No sé qué esperá que haga y nos des una
introducción para que más o menos sepamos esperé 42 días para esto vos sabes que la gente Solamente entra para
aprender sql No claro y minutos van a ver el mejor curso de sql pero no estoy hablando de eso Okay está bien Y
entonces de qué hablas Jo por Dios pero tenés que motivarlos un poquito avivam Elo Dales un poco de motivación contá un
poquito por qué haces este curso así me lo mantenés ahí más pilas Dale es bastante necesario el comentario igual
pero bueno está bien lo voy a intentar en este canal ya hemos hecho varios cursos como el de html El de css El de
javascript El de python y en algún punto todos estos cursos han sido los mejor posicion de la plataforma es decir
buscabas html y saltaba buscabas css y saltaba buscabas javascript y saltaba buscabas python y saltaba de hecho
pueden corroborarlo vayan y búsquenlo y van a ver que así es esta no va a ser la excepción y de hecho es mucha casualidad
ya que sql es el próximo lenguaje que nosotros deberíamos ver para continuar con la curva de aprendizaje del Canal
Pero también es uno de los más demandados últimamente es decir sql está teniendo un auge espectacular es un
lenguaje que tiene más de 50 años y aún así está en uno de sus mejores momentos sql básicamente es muy demandado y cada
vez está con más crecimiento y con más demanda ya que es uno de los lenguajes requisitos básicamente para todo lo que
es el mundo de la programación y la Inteligencia artificial que como ya sabemos está despegando a escalas
agigantados también vamos a hacer un curso de Inteligencia artificial en este canal Así que anda activando la
campanita para cuando salga Qué significa esto bien que no solamente hago el curso porque me lo piden ya que
a pesar de no ser el curso que ustedes más me piden es el curso que ustedes más buscan Así que no busquen más acá está F
bastante buena la intro un poco extensa y aburrida pero la verdad que bastante bien yo particularmente apruebo ahora ya
puedo comenzar me vas a dejar ahora la verdad que sí sí ya podrías comenzar si querés Bueno gracias arranca con el
concepto Dale sí sí iba a arrancar con eso y bueno qué s yo te lo digo por las dudas Sí ya está ya entendí ya está te
espero Dale ese qu significa structur query Dale dale explica No queres venir el curso eh No bueno así no se puede yo
me retiro así sí sí retírate por favor vaya vaya Bueno me retiro y encima voy a comprarme esa misma remera que tenés vos
Dale dale buenísimo así así ya puedo comenzar de una vez por todas con el curso Oh y es de la tienda ad alto no
está buenísima andate de una vez yo me voy calmate a quién te comiste Ah qué denso este tipo bueno bueno gente ahora
sí doy la bienvenida al mejor curso de sql de todo YouTube y no es que necesariamente lo diga yo sino que es un
curso que está abalado por empresas que utilizan sql en sus sistemas de hecho muchas de estas empresas son sponsor de
canal Así que nada Muchísimas gracias a estas empresas por tomarse el tiempito de darle una chequeada Ahora sí basta de
hablar arranquemos con este espectacular curso de [Música]
sql bien para comenzar este curso como todo curso tiene diferentes apartados el primer apartado es un apartado teórico
que básicamente vamos a entender los fundamentos vamos a conocer sql para que entendamos Con qué estamos trabajando
porque no podemos escribir código si no sabemos qué es lo que estamos escribiendo además si realmente queremos
utilizarlo para trabajar si lo queremos utilizar Porque queremos adquirirlo como skill laboral es completamente necesaria
la parte teórica si realmente queres adquirir el skill de sql esto viene en pack completo en el apartado teórico
vamos a ver diferentes conceptos vamos a entender bien que son los campos los reg registros digamos las entidades los
atributos vamos a entender conceptos con los que nos vamos a topar cuando querramos realizar cualquier cosa en sql
Entonces es importante que los que los entendamos después viene el apartado del código que es donde nos ponemos a
escribir código sql a cuatro manos la mayor parte del curso va a ser código obviamente una vez que pasemos el
apartado teórico ahí comienza el apartado de código que repito es la mayor parte del curso y además entre
medio va a haber ejercicios es decir vamos a tener ejercicios para ir llevando a la práctica todo ya que esto
es básicamente para que podamos memorizar mejor ya que hay gente que confunde mucho el concepto de memorizar
y el concepto de record memorizar es guardar información en nuestro cerebro recordar es acceder a la información que
guardamos en nuestro cerebro ahora si memorizamos bien es más fácil recordar hay muchas técnicas para memorizar pero
si en medio del curso les pongo ejercicios para que digamos lleven a la práctica todo lo que vinieron
aprendiendo están memorizando lo mejor Entonces cuando después tengan que recordar eso que aprendieron lo van a
recordar mucho más sencillo de una forma mucho más sencilla es decir sin tanto esfuerzo porque ya lo tienen como en la
mente no por eso los ejercicios van a estar ahí como metidito entre los diferentes apartados a lo largo de todo
el curso Ahora sí arranquemos desde cero con sql vamos bien Qué es sql todo muy lindo Ya
vimos bastantes minutos del curso Pero qué joraca es sql bien sql son las siglas de structured quy Language s no
tengo mejor inglés del mundo pero en español significa lenguaje de consultas estructuradas nuestro nombre lo dice ok
es básicamente el lenguaje que nos permite trabajar con bases de datos relacionales Y sí sql es un lenguaje de
programación hay gente que no sabe esto que se piensa que sql no porque sql no es un lenguaje de programación es
lenguaje de consultas estructuradas no sql es un lenguaje de programación Sí el nombre significa lenguaje de consultas
estructuradas Pero sql es un lenguaje de programación de hecho es un lenguaje estandarizado no y muy utilizado en el
mundo de hecho es repito el más utilizado de todo el mundo para manejar bases de datos vuelvo a lo que les dije
antes de hecho es un lenguaje estandarizado es estandarizado Qué significa que sea estandarizado
significa básicamente que lo aprendemos una sola vez y después lo podemos utilizar para todo lo demás porque al
ser un estándar todos los gestores de bases de datos tienen que manejar este estándar Cuál es el estándar y el que
vamos a aprender en este vío entonces una vez que aprendas sql vas a poder entender todos los demás gestores vas a
saber pogre my siquel la de Oracle to toda la la mayoría de los gestores de bases de datos se manejan 100% por el
estándar entonces ese c lo aprendé Solamente una vez y puedes manejar cualquier gestor de base de datos con
sql server con mysql con po sql con María db con Oracle después obviamente cada gestor tiene sus cositas sus
tonterías Que es como bueno a ver nosotros manejamos sql acá Pero además la agregamos esta cosita tenemos todo
sql Pero además agregamos esta función Aparte que es buena o sea cada gestor tiene sus propias cosas internas muy
chiquititas pero ese qu lo aprendemos una sola vez y nos sirve para todo o sea no es como que tenés que aprender pogre
y después tenés que aprender my sequel y después tenés no aprendes sql y es medianamente lo mismo para todas las
bases de datos de hecho esto es buenísimo porque es un lenguaje que digamos está hace más de 50 años y si
bien Sí fue recibiendo mejoras es lo mismo o sea no es como que no porque me vi un curso de sql ya pasaron 3 años y
me tengo que actualizar No si vos estás viendo este curso dentro de 3 años dentro de 4 años no te vas a tener que
actualizar porque ese ql es el mismo Okay repito es el mismo de hecho es el lenguaje de programación que tiene más
de 50 años y aún así se sigue usando casi Exactamente igual que hace 50 años cosa que es una
locura antes la información la almacenamos en algo llamado bases de datos basadas en archivos donde
agarrábamos un texto plano y separamos los valores que queríamos almacenar con comas con signos y todas técnicas que
nos hacía que sea superfácil guardar la información pero que sea muy difícil después obtener esos datos usarlos de
forma ordenada sencilla y sin tanto lío por otro lado tenemos a Edgar cod que fue el inventor del álgebra relacional
que básicamente sirve para utilizar conjuntos Y trabajarlos entonces este muchacho dijo Y por qué no creo una base
de datos que esté basada en álgebra relacional y ahí aparecieron las bases de datos relacionales y ahí aparece sql
que es el lenguaje utilizado para trabajar con ellas sql internamente es meramente álgebra
relacional antes guardábamos la información de cualquier forma estaba era muy fácil guardarla pero era muy
difícil acceder a esa información entonces este tipo dijo bueno a ver la verdad es que si tenemos que guardarla
de forma muy fácil pero es complicada acceder la no nos sirve Entonces qué hacemos bueno creemos un sistema
específico para que podamos trabajar con estos conjuntos de datos Porque eso es sql por eso internamente sql funciona
con álgebra relacional no es lo mismo álgebra relacional que relaciones de tablas y demás son cosas diferentes no
lo confundan Pero sí va de la mano esto nos sirve a la hora de escribir código y casi nunca en realidad A menos que
querramos hacer cosas muy específicas de bajo nivel pero está bueno que lo sepamos no que sepamos que sql está
compuesto por álgebra relacional Perdón álgebra relacional y que básicamente la solución que nos trae es poder guardar
bien la información poder manipular bien la información y hac otras tantas cosas que es lo que vamos a ver durante el
curso sí todo muy lindo alto pero ya está ya sé para qué sirve Pero qué puedo hacer con eso porque si me decí Para qué
sirve me decí y no me decí Qué puedo hacer con sql no me sirve Yo quiero saber qué es lo que voy a poder hacer
cuando termine el curso es decir termino el curso y más o menos qué es lo que voy a poder hacer y esql la verdad que tiene
muchísimos usos muchísimos no te prometo que cuando termines el curso vas a poder hacer todo eso por un tema de que eh Hay
conceptos más que son matemáticos o complejos o de Inteligencia artificial pero sql lo utilizamos en todo o sea lo
utilizamos para hacer Inteligencia artificial para hacer sistemas de gestión si querés hacer un sistema de
gestión no usas solamente sql usas sql y algún lenguaje de programación por ejemplo entonces tenes que aprender sql
y un lenguaje de programación Pero eso eso es obvio en el canal como ya saben tenemos un un montón de cursos de
programación como el de python que fue el último que subimos Así que si quieren vayan a verlo de hecho eh es muy
probable que al final de este curso hagamos un ejercicio mezclando python con con sql para que bueno como
ejercicio final no como Plus extra que les voy a regalar pero En definitiva con sql podemos hacer lo siguiente podemos
crear y administrar bases de datos es decir sql nos permite crear modificar eliminar y hacer diferentes cosas con
bases de datos tablas y otros objetos que tienen las base de datos después podemos consultar datos es decir sql
permite realizar consultas a una base de datos para obtener información específica como encontrar clientes con
una edad determinada o Buscar productos con un precio específico también podemos modificar los datos o sea eseq nos
permite actualizar los datos insertarlos Y también eliminarlos No todo lo que tenga que ver con datos en una base de
datos también Podemos agregar restricciones y reglas de integridad esto es como agregar condiciones para
asegurar que los datos cumplan con ciertos criterios por ejemplo una restricción puede establecer que un
campo en una tabla no puede estar vacío o que debe contener un valor único estas restricciones lo que hacen es asegurar
que los datos en una tabla sean precisos y consistentes nos permite también generar informes realizar análisis de
datos o sea por ejemplo para hacer análisis científico de datos no esto lo utilizan mucho los científicos de datos
Y analistas para realizar análisis y visualizaciones de datos complejos digamos además se pueden administrar
usuarios y permisos o sea esto es para garantizar que solamente las personas autorizadas puedan acceder a la
información también se pueden realizar transacciones se pueden realizar copias de seguridad y restaurar datos se puede
integrar con otras aplicaciones se puede usar para limpieza de datos para normalización de datos para realización
de cálculos avanzados para combinación de datos múltiples Fuentes para optimización de rendimiento y para para
muchas cosas más Pero normalmente en un programa común lo usamos para hablarle a una base de datos y que registre
nuestros datos los modifique los elimine y sobre todo también para obtenerlos no para después poder hacer cosas Si
registramos un usuario después vamos a poder querer acceder a su nombre a su usuario y a otros datos que están
registrados bueno todo esto con sql Sí es así la verdad De hecho no podés avanzar en el mundo de la programación
informática sin saber sql O sea no podés tenés que aprender sql y lo tenés que aprender Ahora sql tiene conceptos como
por ejemplo variable funciones triers índices entidades atributos Y muchísimas más que bueno lo vamos a ver en este
curso obviamente Así que Esto va a ser así Primero te voy a explicar los fundamentos fundamentos principalmente
de bases de datos después cuando ya te haya explicado los fundamentos de bases de datos vamos a ir directamente al
código pero con conceptos es concepto código concepto código Así vamos llevándolo a la práctica y después ya
ahí se vienen un par de ejercicios Okay quiero que lo veamos bien porque a veces estuve viendo tantos cursos de esuela y
en todos los cursos es como que uno no termina de entender no por dónde arrancar por Cómo comenzar como que son
intermedio avanzado no hay nada desde cero por eso quiero que arranquemos bien desde cero Okay que que arranquen con
nada entendiendo las bases y salgan Sabiendo todo mi objetivo es que estén como orientados no como que no necesiten
saber o ver otros cursos para llegar a este Quiero que desde cero lo puedan entender y comprender Así que para eso
tenemos que repito ver los fundamentos Así que vamos con los fundamentos de bases de
datos Bueno cuando trabajamos con bases de datos hay diferentes objetos con los que básicamente nos vamos a topar okay
Por eso ahora te voy a enseñar justamente Cuáles son esos objetos con los que nos vamos a encontrar cuando
querramos hacer cosas con sql vamos a ir desde lo más abstracto hasta lo más tangible es decir vamos a ir desde lo
que es más teórico hasta lo más práctico y hasta lo que es más visual más código para empezar vamos con el concepto
principal de todo que es una entidad si nunca escuchaste hablar de lo que es una entidad prepárate porque Okay es como un
objeto Okay es como un objeto una entidad puede hacer referencia a cualquier cosa o concepto que tengamos
en la vida real si saben de qué hablo normalmente podemos representarlas con tablas Okay una entidad Es una
representación de algo me explico o sea así como si nosotros dibujá una casa el dibujo no es la casa simplemente Es una
representación de la casa Esto es lo mismo una entidad no es la entidad si yo digo entidad persona una entidad persona
no es la persona es una representación de la persona lo que hacemos con las entidades es almacenar información sobre
las entidades en bases de datos por ejemplo una entidad puede ser persona y almacenamos toda la información de
persona en las bases de datos por ejemplo en una base de datos de una de línea las entidades pueden ser por
ejemplo clientes productos órdenes de compra proveedores etcétera y la nomenclatura que se usa para representar
las entidades se llam notación de Chen y básicamente es una forma de poder representar entidades y sus relaciones
Bueno ahora qué jora que es esto simple supongamos que yo tengo la entidad casa esto en este en esta nomenclatura cómo
lo podemos Representar en esta anotación bueno básicamente es con un cuadrado encerramos la palabra en un cuadrado
simple esto significa que es una entidad Okay cuando ponemos una palabra y la encerramos en un un cuadrado estamos
diciendo esto es una entidad a ver si estamos fuera de la anotación de Chen es simplemente un dibujo de una palabra
encerrado en un cuadrado medio rancio no pero dentro de la anotación de Chen una palabra encerrada en un cuadrado
significa que es una entidad Por ejemplo en una base de datos de una tienda en línea las entidades pueden ser por
ejemplo clientes proveedores órdenes de compra etcétera es decir la base de datos es sobre una tienda en línea pero
las entidades son esas bien Ahora ya está tenemos a nuestra casa encerrada en un cuadrado Okay pero si yo me pregunto
esto no a ver a qué conclusión podemos llegar qué es lo que una entidad hace que una entidad sea una entidad y sus
atributos es decir una casa no es una casa Si no tuviera ambientes ubicación tamaño y otras tantas propiedades bien
Ahora sí tenemos la entidad casa tenemos los diferentes atributos tamaño dirección ambientes ubicación precio
propietario fecha de construcción antigüedad ventanas y puertas los atributos los representamos con un óvalo
pero también tenemos algo que son atributos simples y atributos con puestos Esta es una forma de dividir los
atributos tenemos por un lado los simples y por otro lado los compuestos los simples son atributos que
simplemente tienen datos únicos No están compuestos por nada más por ejemplo el precio de una casa puede ser $1,000 Ya
está no es más que eso pero un atributo compuesto puede ser el ambiente Por qué Porque los ambientes a su vez se
componen de otros atributos más pequeños un ambiente a su vez tiene un tamaño y un tipo de ambiente porque un ambiente
puede ser un comedor una habitación no deja ha ser un ambiente puede ser un living y también tiene un tamaño por
ejemplo 50 m cu o unos 40 m cu la forma de representar a los atributos compuestos Es simplemente sacando una
linita dando a entender que están compuestos algo así como si fuera una especie de Rama no árbol genealógico
algo parecido pero es eso no dejan de ser atributos Okay son simplemente atributos atributos comunes ahora
después tenemos los atributos multivalor es decir tienen más de un valor Cuáles son los atributos multivalor de de una
casa fácil los ambientes Por qué Porque hay más de uno también las ventanas y también las puertas porque hay más de
una puerta y hay más de una ventana cómo representamos los atributos multivalor simple Se les hace un doble círculo un
doble óvalo así como los atributos comunes los representamos con simplemente un óvalo los atributos
multivalor los representamos con dos óvalos una línea otra línea un círculo otro círculo después tenemos los
atributos derivados los atributos derivados son atributos que básicamente los podríamos obtener con cualquier otra
información en este caso son antigüedad y ubicación por qué y porque la antigüedad de una casa la podemos tener
con la fecha de construcción es decir si sabemos que se construyó el 1 de enero del 2010 y estamos en el 1 de enero del
2030 acaban de pasar 20 años entonces es un atributo derivado porque lo podemos obtener a partir de otro atributo y la
ubicación lo mismo la ubicación la podemos obtener a partir de la dirección si bien obviamente es entendible que las
ubicaciones tienen dirección Barrio O localidad o estado y demás O sea no solamente es la dirección esto es
simplemente un ejemplo para para que lo puedan entender mejor los atributos derivados los identificamos con un borde
punteado o sea básicamente si saben ccs es literalmente como un Border daset es lo mismo es como es un óvalo con Border
dget es un bordeado punteado bien hasta acá todo bien Okay pero después tenemos algo llamado clave o k en inglés kei no
se lo digo así pues es clave o K Pero hay gente que no entiende que es kei K e i griega y esto básicamente es una forma
única de identificar algo las casas por ejemplo se identifican con el ID de vivienda ya que cuando las registramos
en el Registro de Propiedad tenemos un ID que hace que la casa sea única eso puede ser por ejemplo un atributo las
casas tienen todas una ID de vivienda es una algo que las identifica y las hace única porque sí las casas pueden tener
qué s yo mismo color mismo tamaño misma cantidad de ambientes misma cantidad de puertas mismas ventanas puede tener
mismo todo pero son diferentes y se separan por el ID de vivienda no importa Por más que tengan todo igual eso es
diferente el ID de vivienda si tenemos por ejemplo una entidad personas Okay tenemos por ejemplo dos hermanos gemelos
son exactamente iguales Cuál es la diferencia el documento de identidad así diferenciamos a las personas pueden ser
iguales pero si tienen un documento de identidad diferentes son personas diferentes bueno esto sería el kei o la
clave es una forma de hacer que algo se vuelva único poder identificarlas y que no haya otro que sea igual Uy se movió
eh que se me relaje porque lo cacheteo al micrófono qué mirao un I básicamente es un atributo que le agregamos a una
entidad para identificar que sea único es irrepetible pero como les dije no dejan de ser atributos Okay no dejan de
ser atributos así que tenemos que ar también en un noval por ser un key o una clave la forma de representarlas en la
notación de chem es con un subrayado y así como esto tenemos muchas más formas de representar no diferentes conceptos
en las bases de datos con la anotación de Chen base digamos relaciones y demás incluso también las podemos representar
ya que de hecho la anotación de Chen también tiene conceptos como por ejemplo relaciones y otras cosas más Pero vamos
a ir viéndolas con el curso porque para arrancar no es necesario o sea eso que les les podría explicar ahora para
escribir código no es necesario así que por ahora no lo vamos a ver okay pero para verificar que está todo bien y que
ustedes entendieron todo vamos a hacer una cosa quiero que vayan ahora mismo a buscar un lápiz y un papel o si tienen
están desde una computadora que abran Paint o lo que quieran y Bueno hay que ser extraño para mirar un curso sql
desde el celular pero si estás viéndolo desde el celular agarrá WhatsApp sacar una foto y andar la parte para editar la
foto para que puedas pintar Okay algo para pintar y vas a poner un cronómetro de 5 minutos Okay te voy a dar un
ejercicio para que puedas hacer te voy dar dos ejercicios pero vamos con el primero el primer ejercicio consiste en
pensar una entidad que tenga cinco atributos uno que sea multivalor y otro que sea un identificador un Ke los otros
tres pueden ser los que quieras y los representamos con la anotación de Chen Okay para arrancar vamos a hacer eso así
que les doy 5 minutos pausen el video y continúen lo una vez que lo tengan listo Dale y va Bueno listo ya está fue
bastante rápido la verdad que para mí duro 2 segundos Espero que para ustedes un poquito más yo también hice lo mismo
es decir así como ustedes lo hicieron Yo también lo hice para que lo hagamos todos juntos Bueno lo que yo pensé fue
lo siguiente la entidad que elegí fue persona los atributos son altura edad nombre hobbies y documento de identidad
hobis es un atributo multivalor y el documento de identidad en este caso es el dni es el key ya está con eso
básicamente acabamos de representar con la anotación de Chen a la entidad persona con sus diferentes atributos y
lo logramos hacer bien si no lo hiciste bien nada repasarlo y intentad entenderlo pero creo que hasta ahora
Estamos bastante light y bastante fácil no por ahora bueno acá tenemos un dibujito que hay muchas palabras Okay
muchas palabras y una entidad la entidad es empleado y después Tenemos un montón de atributos lo que tenemos que hacer es
encerrarlos en la forma correspondiente según la anotación de Chen la idea de este ejercicio es ver si entendimos lo
anterior bien arrancamos de arriba para arrancar el ID empleado fácil lo encerramos porque es un key es un
identificador de empleado nombre apellido fecha de nacimiento edad género estado civil ciudad estado código postal
número de teléfono mail y dirección las encerramos en atributos comunes simplemente son atributos pero acá hay
algo interesante información de contacto en realidad es un atributo compuesto porque información de contacto contiene
al número de teléfono y al mail es decir sería una tontería crear diferentes atributos para algo que puede
representarse con uno solo no información de contacto información de contacto abarca todo abarca número de
teléfono mail y dirección porque lo podemos contactar yendo a la casa por mail o por número de teléfono hasta ahí
venimos bien después tenemos habilidades habilidades podemos decir que es un atributo multivalor porque tiene más de
una después tenemos la edad okay Y la edad es lo mismo es un atributo derivado Por qué Porque con la fecha de
nacimiento ya podemos saber la edad entonces es un atributo derivado bueno En definitiva nos quedó así pero esto es
bastante loco No porque si queremos incluso podemos decir que la fecha de nacimiento por ejemplo también puede ser
un atributo compuesto ya que podría tener un día un mes y un año o sea todo es bastante subjetivo si nos ponemos a
pensar Pero lo importante es que esto tenga un sentido no Eso es lo importante poder reducir la mayor cantidad de
información posible en los campos correctos es decir en vez de tener tres Campos para día de nacimiento mes de
nacimiento y año de nacimiento lo resumimos en fecha de nacimiento Lo importante es ser concisos precisos y no
ser bastante redundantes o almacenar datos que no son necesarios No ya la fecha de nacimiento es suficiente
entonces si bien podríamos hacerlo no es necesario es decir esto es Interesante como les expliqué por qué más que nada
porque podemos jugar con esto decir Bueno entonces pará Porque si yo me pongo en la fecha de nacimiento tengo
otros tres atributos que son Día mes y año pero no lo importante es ser concisos ser simples y con el tiempo y
cuando lo vayan haciendo le van a agarrar práctica no van a decir ah pero pará para qué voy a poner una fecha de
nacimiento y una edad si puedo poner una de las dos y con lo otro bueno Es depende de lo que quieran hay diferentes
metodologías diferentes necesidades de los diferentes proyectos Pero lo importante es que sepan para Qué usar
estas herramientas y que no hace falta que pongan tres Campos que uno es Día de nacimiento año de nacimiento y mes de
nacimiento sino que pueden poner uno solo y fecha de nacimiento lo mismo con información de contacto la información
de contacto es por ejemplo bastante como poco específico el lugar de información de contacto pueden poner por ejemplo
número mail y dirección es es interesante Cómo podemos jugar un poquito con todo esto que tenemos a
nuestra disposición pero con el tiempo y mientras vayamos haciendo las cosas nos vamos a dar una idea Lo importante es
que entiendan Cómo usar esta anotación y cuando veamos un diagrama de estos y digamos a la O sea qué es esto
podamos entenderlo que cuando estemos trabajando para una empresa o querramos hacer proyectos y armemos el nuestro
propio podamos verlo y digamos Ah okay Ahora entiendo okay esto tiene que estar acá Ah esto es una tabla Ah esto es un
atributo Ah esto y eso es lo ideal así como un programador sabe leer código un desarrollador web sabe leer código html
y css un adores de python sabe leer código python es importante que ustedes sepan leer Por más que no sea código sql
que entiendan esto a lo que nos estamos refiriendo cuando hablamos de una anotación que lo vemos y decimos Ah
entiendo esto y ahora sé cómo llevarlo a código ustedes no saben cómo llevarlo a código Así que vamos a ver ahora cómo
llevarlo a código esta parte es sin duda mi preferida Porque arrancamos con el código y esto es lo que a mí me encanta
Sí lo sé podría explicar lo que es una entidad débil una clave débil Hay un montón de otros conceptos que tenemos y
que podríamos aprender Pero para qué explicar todo eso Si normalmente ahora no me voy a poner tan complejo como para
hacer un curso sql en el que tengamos que hacer proyectos gigantescos y que tengamos que usar ciertas cosas eso se
van a dar cuenta ustedes con la práctica y es cuestión de agarrar o sea Probar con chat gpt digamos y decirle Che me me
decís De qué forma puedo hacer un es sencillo o sea hoy en día ya no tenemos que andar recordando todo y que esté en
nuestro cerebro cuando tengamos que hacer algo y lo podamos entender vamos a encontrar y vamos a saber la forma de
buscarlo Okay Por cierto esta remeras si las quieren las pueden comprar en tienda de alto Okay que les dejo en instagram
eh o sea están bastante buenas así que vayan al Instagram compren lasas y también sígame en instagram soy alto Así
que nada es interesante si me quieren hacer cualquier pregunta cualquier duda y como reconocimiento alto voy te sigo
en instagram ya estamos verificados en instagram tenemos el tilde ahora bueno medio que todo el mundo lo puede tener
no pero bueno nada Yo lo tuve antes antes que antes que se venda así que así basta de parloteo vamos con el código
directamente que esta parte me emociona y yo voy a hacer lo posible para explicarles lo que tienen que ir
aprendiendo en el mejor orden posible y para que sea el curso lo más llevadero y que puedan entrar sin necesidad de saber
nada y que puedan salir Sabiendo Así que ahora sí de una vez por todas arranquemos con el código en este curso
hermoso que Ah me encanta me encanta vamos con el famoso Select me pone super contento que ya
estemos en el apartado de código es decir ahora ya vamos a comenzar a escribir código Pero antes de escribir
código tenemos que instalar algo llamado gestor de bases de datos que es lo que nos va a permitir movernos y realizar
ciertas operaciones de una forma más sencilla nos va a dar una una especie de de interfaz gráfica para que podamos
operar y que se no sea más senillo todo los gestores de bases de datos vienen digamos eh con la base de datos incluida
para que podamos guardar La información entonces En definitiva no podemos escribir código de sql si no no tenemos
un lugar donde guardar información donde operar la información y con qué información trabajar porque como ya
sabemos sql es un lenguaje para interactuar con una base de datos pero con cuál es decir en este caso cuál
vamos a utilizar bien a ver una base de datos es digamos un conjunto de información organizada y estructurada
que podamos manipular y digamos eh interactuar de una forma eficaz eficiente En otras palabras una base de
datos es algo que básicamente tiene un sentido o que guarda información a la que podemos darle sentido o conectar
esas cosas entre sí es decir si por ejemplo hacemos una base de datos de una persona lo que hacemos Ahí estamos
guardando los datos de una persona el nombre el apellido la edad a su vez podemos guardar Por ejemplo qu s yo las
citas al médico que tuvo esa persona Entonces vamos a aprender a relacionarlas y son cosas que podemos
conectar entre sí porque estamos guardando los datos de una persona a ver originalmente podríamos guardar
simplemente los datos en nuestra memoria y ya está los tenemos acá en nuestra memoria pero básicamente eso digamos ya
lleva miles de mil miles de años y desde anes de la prehistoria que se inventó la escritura que fue la forma en la que
dijimos Che Mira no podemos guardar todo en la memoria inventemos un método Okay inventamos la escritura y esa fue la
primer forma que tuvo la humanidad de guardar información de una forma en la que no sea mental es decir no guardamos
la información en nuestra cabeza sino que la guardamos en algo más que de lo que no dependamos nosotros es decir fue
un invento que renovó todo después aparecieron cosas mucho más innovadoras como por ejemplo los medios analógicos o
los medios digitales para guardar información y acá estamos hoy en día en un curso sql en el que vamos a aprender
a manipular esa información que tenemos almacenada pero si sql es un lenguaje para interactuar con bases de datos
Dónde se guarda la información que vamos a manipular con sql y la respuesta ya sabemos lo venimos hablando durante el
curso y es en una base de datos pero la verdadera pregunta es en cuál porque tenemos mysql tenemos pogre tenemos
Oracle tenemos sql server en cuál Bueno básicamente a mí se me ocurrió usar sqlite o sqlite porque es la mejor
opción para este curso por qué y déjame comentarte un poco el Por qué primero porque es eslite es el sistema de
gestión de bases de datos más común del mundo se utiliza en todos los sistemas operativos populares como Mac os como
Linux como Windows como Android etcétera es compatible con muchísimos lenguajes de programación como python Java c+ má
Ruby javascript y muchísimos otros otra cosa muy buena es que no tiene servidor lo que significa que no necesitamos un
servidor de base de datos Dedicado para poder ejecutar eh digamos sqlite lo que hace que sea muy fácil de usar otra cosa
buena es que está integrado directamente con la aplicación o sea se integra directo a la aplicación O sea no neces
necesitamos instalar nada aparte Esto hace que cuando lo tengamos que usar lo podamos usar de una forma muy fácil sin
necesidad incluso de andar haciendo configuraciones adicionales en el servidor ni nada No eso nos olvidamos y
otra cosa es que incluso Si queremos trabajar con la consola de skite es más poderosa que Excel Y es más simple que
pandas en algunos aspectos no pero es importantísimo esto porque para el análisis de datos es poderosísimo y
Recuerden que en este curso vamos a hacer un curso de justamente Inteligencia artificial entonces me digo
que nos va a servir Y por último porque es simplemente una forma de aprender es decir ahora lo aprendemos con sqlite
pero lo que aprendamos con sqlite lo podemos aplicar a cualquier otro gestor es decir podemos hacer pogre podemos
trabajar con sql server podemos trabajar con con todas las que venimos misionando siempre o sea no es como que aprendemos
solamente skl aprendemos skl y después con lo que aprendemos acá lo podemos usar para todas las demás Esta es
simplemente una de tantas una vez que instalemos site ya vamos a estar listos para bueno empezar a escribir código Así
que ahora sí ya estamos dentro del apartado de código Pero tenía que dar una introducción no a la parte práctica
Así que ahora sí vamos con la instalación el entorno la configuración y todo eso acá ha quiero hacer un
énfasis porque en Max instala de una forma en Linux se instala de otra forma y en Windows se instala de otra forma yo
les voy a mostrar Cómo se instala en Linux y en Windows bueno en Windows buscamos sqlite 3 literal Vamos a Google
y buscamos sqlite 3 no nos confundamos con los anuncios acá dice anuncio acá dice sqlite.org la página oficial Okay
sqlite.org fácil y acá Okay podemos darle en Download cuando le damos en Download se nos va a abrir esto que está
acá tenemos que ir a donde dice precompiled binaries for Windows por qué porque tenemos una para Mac una para
Linux una para Android en este caso tenemos que instalar las Tools okay porque esto básicamente nos va a
permitir acceder a trabajar con sqlite entonces lo que hacemos Es descargar esta específicamente que dice Tools ahí
se me está descargando se me descargó la muestro en carpeta tengo Esto del curso de python que lo hicimos que si quieren
ir a verlo pueden ir a verlo Los invito a que vean el curso de python que es poderosísimo de hecho muy probablemente
al final de este curso hagamos un ejercicio con python para unir ambos lenguajes ya que ya que estamos ahora le
vamos a dar extraer aquí y se va a extraer esta carpeta que lo que vamos a hacer es copiar esto okay simplemente
copiarlo venir a la base del disco acá y crear una nueva carpeta yo le voy a poner sqlite 3 esto lo tienen que poner
en el disco que tenga Windows y lo voy a pegar ahora van al disco van a sqlite 3 y en acá no más tipo le dan botón
derecho vieron que le da ver actualizar Bueno le dan en donde dice abrir con terminal si acá no les aparece la opción
de abrir en terminal lo que tienen que hacer simplemente es venir a Windows powershell Okay y ir moviéndose en este
caso yo voy a dar CD punto punto para ir para atrás CD punto punto ir para atrás y acá ya estoy en C ahora pongo CD sql 3
y ya estoy en esta carpeta literalmente estoy en la carpeta de acá Okay pero nada en algunos Windows si ustedes
vienen acá y le dan botón derecho automáticamente dice abrir en terminal o correr con powershell entonces en vez de
hacer todo lo que acabo de hacer recién se les Abre directamente pero nada esta es una forma muy común sirve con cmd sí
es lo mismo en realidad Pero bueno nada Para qué tenemos que entrar a esta carpeta y en esta carpeta tenemos que
entrar Para que vean que si queremos correr esq ya lo podemos hacer podemos venir y poner punto barra sqlite 3.exe
estamos ejecutando este archivo que está acá porque si se fijan este archivo que está acá ver extensiones de archivos acá
podemos ver que dice es.exe o sea si yo quiero abrir este archivo tengo que poner este Comando le doy enter y ya
está se abrió ahora sí fíjense que ya estoy escribiendo código en sqlite Yo acá puedo escribir cualquier cosa create
database dalto y se crea la base de datos dalto O sea ya podemos trabajar con código sql acá Okay pero imagínense
que tengamos que andar haciendo esto y además tenemos una consola es medio rancio todo así que para evitar todo
este lío y para trabajar bien y como se debe vamos a cerrar esto y esto lo vamos a dejar acá pero ahora lo que tenemos
que hacer es apretar acá Okay si se fíjense si están en Windows cuando ustedes apretan acá arriba lo que están
haciendo ahora es se les va a seleccionar el pad para que ustedes lo puedan copiar Esta es la ruta absoluta
de la ubicación en la que están los archivos que necesitamos lo que tenemos que hacer ahora es decirle a a Windows
Che Mira Quiero poder acceder a esta consola de cualquier lugar o sea sin importar En dónde esté Quiero poder
acceder a estos archivos en cualquier lugar desde cualquier carpeta cómo hacemos eso bueno y ahora simplemente
acá Venimos y ponemos variables y nos dice editar las variables del entorno de sistema entramos acá si no lo pueden
hacer de esta forma pueden ir dándole en botón derecho propiedades pueden ir viéndolo ustedes pueden buscar algún
tutorial cómo hacerlo pero es una boludes si entran acá y buscan variables le va a saltar esto editar variables
dentro el sistema lo abren okay Y acá está lo tengo acá acá básicamente Vamos a entrar donde dice variables de entorno
entramos acá y tenemos que darle acá en pat doble clic y se nos va esto que está acá otra vez los mosquitos otra vez
arrancan los mosquitos lo voy a matar esto que está acá justamente son eh rutas locales a
las que podemos acceder desde cualquier carpeta entonces lo que vamos a hacer a hacer darle nuevo y darle control B
corta para pegar la ruta le damos aceptar aceptar y aceptar ya está ahora podemos acceder a estos archivos de
cualquier lugar esto ya es espectacular hac magia prácticamente pero como nosotros queremos poder manejarlo bien y
manejarlo en el navegador por ejemplo vamos a venir ahora a instalar el browser skite browser buscan esto que es
como el navegador de sqlite y está acá lo mismo sqlitebrowser.org en Download van a descargarse Okay el standard
Installer como yo ya me lo descargué no me lo voy a descargar nada un chiste yo saben que siempre me descargo las cosas
con ustedes Así que vamos y nos lo descargamos juntos Okay yo no los dejo en banda si ustedes tienen Windows 32
bits que se quedaron en la época del pedo se quedan el 32 si no el 64 yo instalo este le damos acá abrimos con
mci se va a abrir Esperamos que se abra ve que tarde Un poco quiere que lo cacheteo el sistema ahí se abrió le
damos en next aceptamos next yo quiero que se ponga en el escritorio Así que le voy a dar clic acá y next next instal y
se está instalando Sí claro que quiero que genere cambios si estoy haciendo un curso de sql maestro cómo me va a
preguntar eso Finish perfecto listo Ahora parece que no pasó nada pero si minimizamos y abrimos acá tenemos esto
que sea que nos acaba arar en el escritorio lo tenemos en el escritorio Okay entonces lo voy a abrir y acá ya
tengo esto con lo que vamos a trabajar bueno así digamos podemos tener listo el entorno para trabajar en Windows Así que
vamos a ver cómo lo podemos hacer en Linux bueno yao AC estoy usando una distribución de ubuntu Okay pero
básicamente usamos lo de siempre el sudo apt instal en este caso ponemos sqlite 3 y ahora bueno se va a instalar todo
Bueno hasta acá ya estamos bien ahora tenemos que instalar el browser okay Así que vamos a instalarlo es muy simple
instalarlo lo mismo sudo apt install sqlite browser bueno Ah si termina de instalar este error puede saltar es
común pero la solución a este error es esto que está acá es poner esto y ya estamos listo ahora sí ya tenemos div
browser también instalado ahora en donde lo hayamos instalado tenemos que ir y buscarlo y cuando lo encontremos
simplemente lo llevamos al escritorio como acceso directo y ya estamos cualquier duda igual ya saben que pueden
buscar algún tutorial en cualquier lugar de cómo instalarlo y lo pueden encontrar Estas son las formas de instalarlo Okay
si tienen Mac búsquenlo realmente es muy sencillo O sea créanme que si no pueden seguir un simple proceso de instalación
va a ser complicado seguir un curso entero la instalación es ese proceso más fácil así que cada vez que se traben con
un punto que digan Uy la verdad que Uy se me complica esto no puedo avanzar búsquenlo en otro lado porque es muy
común cuando uno toma cursos trabarse y sería una pena que no puedan adquirir todos los conocimientos que se brindan
en los cursos por no hacer proceso de instalación pasa mucho eh pasan muchos cursos que la gente me dice dalto la
verdad es que simplemente no no me salta como te salta a vos y no lo ven y es una tontería y la gente le responde en los
comentarios te olvidaste de guardarlo o es una tontería a veces es algo muy simple Entonces lo solucionan y pueden
adquirir todo el conocimiento del curso y aprender No esas trabas que no les impidan digamos eh aprender que en
realidad en cualquier trabajo en la vida uno tiene que aprender a desenvolverse no Así que si no lo podemos solucionar
vamos a hacer lo posible por encontrar la solución bueno gente ahora sí ya estamos listos estoy emocionadísimo
vamos a arrancar directo con el código vamos de lleno a escribir código sql bien Ahora sí viene el verdadero
apartado del código porque antes sí era como una introducción en realidad a la pantalla porque estábamos configurando
instalando y demás Ahora sí viene la parte del código bien para comenzar Qué hago con una percha acá No tengo idea Ah
dato de interés si alguien dice sql se refiere a sql okay Pero simplemente hay gente que le cuesta un poco hablar
entonces dicen medio que sí Bueno en realidad lo que pasa es que antes la primera versión de sql era sequel
structured english query Language lo que pasa es que nada dos años después como se dieron cuenta que era un lenguaje que
ya estaba registrado tuvieron que cambiarlo y le sacaron la e de English y quedó structur Language y ahí quedó sql
así que sql squel o sql son los términos para los que uno sefa sql bueno dije con el código y me puse a explicar más cosas
Bueno no importa vamos a abrir primero y principal el D browser de sql bueno para arrancar vamos a poner en edit
preference y vamos a a dejarlo en modo oscuro porque a nadie le gusta el modo claro de esto a nadie le gusta Así que
vamos a dejarlo en modo oscuro y ahora sí con esto en modo oscuro vamos a arrancar a trabajar esto como ya saben
es una especie de navegador es como un browser para la base de datos Recuerden que los navegadores básicamente lo que
hacen es mostrarnos de forma gráfica información que ellos pueden interpretar interpretan código html css javascript y
nos lo muestran de forma gráfica Esto es lo mismo esto interpreta lo que la base de datos sqlite almacena la estructura y
toda la información para abin darnos esta interfaz además de otras cosas que les agreg para poder operarla no para
arrancar tenemos que crear una base de datos normalmente para crear una base de datos utilizamos la consulta voy ir al
bloc de notas sí soy medio enfermo pero no importa create database usuarios o la base de datos dalto por ejemplo y esto
lo que hace automáticamente es crear una base de datos pero en lugar de ejecutar esta operación lo vamos a crear
directamente desde acá en New database y acá le vamos a poner un nombre vamos a decirle Por ejemplo usuarios db porque
la extensión pun db le da entender a este browser que estamos trabajando con bases de datos no no me dejó guardarla
acá Así que lo voy a tener que guardar acá en esta otra ruta no importa le doy en guardar y ahí se guardó ahora me está
diciendo Che Mira una base de datos tiene que tener una tabla porque si no es como una base de datos sin tablas se
acuerdan que hablamos de entidades Bueno una entidad la representamos con una tabla Qué es una tabla bien acá me anoté
un par de conceptos que tenemos que tener en cuenta si nosotros queremos entender las cosas básicas con las que
estamos trabajando vamos a marcar primero tabla cuando les expliquemos una tabla es una estructura de datos que se
organiza en filas y columnas es de es decir un tablero de ajedrez podría ser una tabla porque tiene filas y columnas
las filas están enumeradas como 8 7 6 y las columnas como a b c d una tabla periódica es una tabla porque tiene
filas y tiene columnas eso básicamente son las tablas Son estructuras de de datos no que básicamente están
organizadas en filas y en columnas simple ahora ya que explicamos lo que es una tabla le vamos a marcar como que ya
lo vimos y volvemos acá entonces las tablas tienen nombre si yo acá por ejemplo le pongo tabla usuarios o users
user significa usuarios acá si se fijan Esto me está creando un código estos gestores de bases de datos nos permiten
digamos que sea más fácil todo lo que tiene que ver con trabajar con bases de datos nosotros deberíamos ejecutar este
código sql para crear una tabla Pero esto nos lo hace más fácil es decir normalmente nosotros agarrarías y
diríamos create database usuarios después decimos create Table users y acá empezaríamos a crear la tabla pero las
tablas como ya saben tienen filas y columnas entonces Esas filas y columnas almacenan información almacenan algo
llamado Campos el campo es el nombre de la columna me explico es como en Excel vieron que en Excel arriba de todo
ponemos el primer campo bueno eso sería como el el el nombre entero de la columna acá encontré un pedazo de
ejemplo para trabajarla si se fijan arriba hay 1 2 3 4 5 6 esto sería el campo el campo acá es uno y uno tiene
estos datos el campo dos tiene todos estos datos Estos son columnas solamente que en en sql las columnas las llamamos
en pases de datos en realidad las bas las columnas las llamamos Campos en este caso si yo te digo por ejemplo eh
mostrame el tercer registro y decme lo que tiene el campo dos y me va a mostrar esto que está acá que dice -7x - 4 = 17
Entonces ya entendimos lo que es un campo un campo es eso un campo es una columna básicamente pero a su vez hablé
del registro Qué es un registro Bueno un registro es una fila así como esto es un campo okay Así como estos y cada uno de
estos que está acá son Campos que básicamente son columnas esto que está acá son los registros todo esto es un
registro yo te digo por ejemplo el registro dos Qué es el registro dos y el registro dos contiene la información del
campo uno del campo dos del campo 3es del campo cuatro del campo 5co y del campo seis de algo o de lo que está
haciendo referencia a la entidad si yo por ejemplo tengo una tabla que dice usuarios el segundo registro puede ser
nombre apellido edad mail currículum y otros datos más dirección de casa por ejemplo Entonces eso es un registro
datos con cada uno de lo de la información de la persona no O sea tenemos toda la información en una sola
fila eso es un registro la diferencia entre los registros y los campos es que el campo es solamente esto Esto es el
valor del campo ahí tenemos otro concepto esto que está acá viene siendo el valor del campo o sea cada celda
individual cada cuadradito de esto en realidad es un rectángulo es el valor del campo Entonces técnicamente ya
tenemos otros conceptos tenemos registro que es básicamente una fila en inglés se dice record esto que está acá
básicamente es como se dice en inglés lo que está al lado y y valor de campo Entonces ya sabemos que una tabla es una
estructura de datos que se organiza en filas y columnas un campo es el nombre de las columnas es como el dato que
vamos a almacenar ahí adentro sería igual a una variable si yo tengo por ejemplo una variable nombre el valor de
la variable puede ser Lucas o puede ser Pedro o puede ser Jaimito nombre puede ser igual a cualquier cosa Esto es lo
mismo el campo usuario puede ser igual a soy dalto igual a patrix igual a lo que sea entonces está el campo y el valor
del campo cada uno de los cuadritos que tenemos acá es el valor del campo Cuál es el campo y cinco por ejemplo en este
caso o puede ser cuatro o puede ser seis y registro es toda la fila entera toda la fila es el registro y después tenemos
una consulta y un identificador que por ahora lo de identificadores Prefiero esperar un poquito más para explicárselo
pero lo de consulta lo vamos a ver ahora en breve ahora tenemos que crear cada uno de los campos Bueno vamos a crearlos
el primero se va a llamar nombre Okay Uy acá tenemos otro problema integrer qué es esto Qué opciones me está tirando PK
a la u default check nn A qué significa to esto ya ya estoy colapsando Okay despreocúpese pense esto es
completamente normal y acá lo que nos está pidiendo esto que está acá nos vamos a olvidar todo lo demás que no es
el type olvídense que existe porque no lo vamos a usar o sea ahora no si más adelante ahora no lo que nos piden type
es el tipo de dato que va a ser el campo porque un campo si yo tengo un campo nombre nos puede pedir un textoo si yo
tengo un campo edad nos va a pedir un número entonces son datos diferentes que tenemos que almacenar si yo tengo un
campo fecha va a almacenar algo de tipo fecha Entonces tenemos que entender que cada dato almacena valores diferentes
entonces depende el dato que sabemos que vamos a almacenar acá se pone un valor diferente tenemos diferentes tipos Okay
tenemos integer que es como entero text que es texto blob que es como una especie de archivo que almacena imágenes
fotos videos etcétera real que es para matemáticas y numeric que es para matemáticas precisas ahora vamos a ver
bien cada uno integrer esto es como si quisiéramos almacenar un número cualquiera Okay un número por ejemplo el
número de identificación del usuario o la edad o la cantidad de productos disponibles que hay de un producto por
ejemplo Cuántas manzanas hay y hay siete entonces para eso se usa int Okay integr es el equivalente a int en Java por
ejemplo después está text que es texto esto lo usamos como les dije antes para por ejemplo almacenar nombres
direcciones de correo electrónico descripciones todo lo que tiene que ver con texto Okay en este caso es texto el
que el que vamos a poner porque es un nombre entonces lo dejamos en texto pero también tenemos lo voy a explicar ya que
estamos los otros tres que son importantes uno es blob blob almacena datos binarios Okay es decir trabajamos
con blob cuando queremos guardar archivos imágenes fotos videos y todo lo que sea binario después real es como
para almacenar float real es como si fuera float o datos flotantes qué jorak es esto los valores con coma si yo tengo
que guardar Por ejemplo porcentajes números con coma esto lo guardamos en real y después tenemos numeric que lo
que hace numeric es trabajar con números que necesitan una precisión matemática muy alta es decir si yo por ejemplo
tengo que trabajar con números como pi que son casi infinitos o todavía no lo sabemos o con eh resultados de
divisiones que son muy importantes y que guardan muchas comas números enormes y que necesitamos un cálculo matemático
grande para poder almacenar esa información tenemos que usar numeric ahora Cuál es la diferencia entre
numeric y real Por ejemplo si real ya almacena números con coma eh o números como porcentajes y numeric también y
Cuál es la diferencia solamente el uso el concepto no la diferencia es que Real básicamente eh es un tipo de dato de 8
bytes es decir 64 bits Y es más rápido o sea almacena menos información y es más rápido mientras que Real Okay perdón
mientras que numeric no tiene límite o sea puede almacenar datos de cualquier tamaño y de cualquier precisión pero es
más lento o sea trabajar con numeric es más lento pero si queremos precisión matemática tenemos que usar este en
cambio real es más rápido pero tiene menos capacidad para guardar datos que son muy grandes y además tiene menos
precisión matemática es decir cuando trabajamos con operaciones Matemáticas puede que lo que hayamos guardado no
tenga mucha precisión Entonces nos dé un cálculo algo mal si guardamos pi en real no es lo mismo que si guardá pi en
numeric con Real vamos a tener mucha menos precisión que con numeric esa es la idea Pero esto es un dato de valor
que les puedo decir es que sqlite trabaja con eh digamos es uno de los pocos gestores de base de datos que
trabaja de forma dinámica es decir cualquier dato puede estar en el campo de cualquiera me explico o sea yo puedo
poner números en texto texto en números eh archivos binarios en donde sea por qué Porque es de tipo Dinámico o sea lo
que insertemos hace que la columna se transforme en eso o por lo menos ese ese ese valor de campo específico si yo
guardo un número en un campo de texto está perfecto si yo guardo un texto en un campo de número está perfecto por qué
es esto porque skite es uno de los pocos que lo lo permiten ahora hacerlo es una mala práctica esto es importante que lo
sepan hacer esto es una mala práctica o sea no es recomendado hacerlo para nada Por eso existen los tipos de datos pero
en caso de que no suceda skite lo permite hay una forma de sacar esto en esq light pero no lo vamos a ver porque
ya es complejizar mucho solamente por ahora tienen que entender esto que es importante y es nada que cada campo
tiene un tipo de dato y que depende del tipo de dato que le demos lo ideal es guardar cierto tipo de información u
otro tipo de información en este caso si pusimos el campo nombre vamos a dejarlo en texto porque lo que estamos guardando
acá es texto acá el campo eh default es por si queremos que tenga un valor por defecto si yo por ejemplo quiero que
todos mis usuarios se llamen Mohamed acá vengo y pongo Mohamed entonces cada vez que se haga que se inserte un nuevo
registro y este campo no esté completo se va a poner el valor por default o sea el que tiene por defecto que es Mohamed
O sea que si yo Registro un usuario que tenga apellido edad y no sé qué más y no le pongo nombre el nombre va a ser
Mohamed porque es el valor que puse por defecto en este caso lo voy a sacar porque no quiero que tenga esto después
tenemos el primary Ke que es para clave primaria tenemos ahí que es autoincrement eh este que está acá es
not nul pero lo vamos a explicar a medida que vayamos avanzando el curso porque no quiero cargarlos con tanta
información Okay por ahora nos quedamos con esto vamos aer otro que va a ser apellido y también va a ser un texto
vamos a agregar otro que va a ser edad y obviamente edad ya va a ser un un número entonces lo dejamos en integr y por
ahora estos son los datos con los que vamos a trabajar okay nombre apellido edad algo más tranqui si se fijan y
siguen mirando esto que está acá acaba de crear un código sql es decir lo que nosotros podemos segir haciendo acá si
se fijan va modificándolo si yo toco esto acá me lo cambia si yo le cambio el nombre de la columna me la cambia
apellido ooh me la cambia por qué porque esto lo hace automáticamente porque entiende Lo que nosotros estamos
queriendo hacer y lo lleva a código es decir Ah o sea que vos querés crear tres columnas nombre apellido edad con los
campos de eh tipo de dato texto texto e int Bueno te creo un código para que vos lo puedas ejecutar y ejecutes lo que vos
querés es como una especie de gestor que nos permite que nosotros en vez de escribir el código lo hagamos de una
forma más gráfica pero en realidad si no quisiéramos hacerlo de esta forma lo podemos escribir en código y esto que
estamos diciendo acá es exactamente lo mismo que este código Entonces ahora le vamos a dar en okay Y ahí ya se acaba de
crear la tabla no parece Pero tenemos una tabla acá la podemos ver que dice users users tiene nombre apellido y edad
hasta acá estamos bien pero bueno ahora tenemos que cargar esto con datos Porque no tenemos datos Si queremos manipular
datos tenemos que crear estos datos Así que para eso tenemos que insertar los primeros datos que tendríamos que
insertar Entonces vamos a execute y ahora sí vamos con la primer consulta de todas las que vamos a hacer vamos a a
ver la información de esta tabla bueno la primer consulta es la famosa consulta uno de todos que es un Select Y por qué
digo consulta bien porque normalmente acá es importante que lo expliquemos un query o una consulta es lo mismo query
es consulta inglés es hacer una consulta a una base de datos es decir es preguntarle o pedir la información a una
base de datos dec una búsqueda en una base de datos sirven para eso justamente sirven para obtener información que está
almacenada en la base de datos que en realidad el Select como tal no es una consulta sino que es la sentencia que
nos permite hacer consultas lo que yo voy a hacer ahora es seleccionar todo el asterisco en programación es el símbolo
universal no el caracter universal para hacer referencia a que queremos todo en css por ejemplo lo usamos para decir
todas las propiedades quiero que se modifiquen en sql lo usamos para decir bueno selecci me todo selecci me todo
from Okay from users Por qué Porque la tabla es usuarios si yo vengo acá bueno acá me acabo de cambiar un poco el
tamaño de los tipos de letra porque si no me iba a volver un poco loco le di acá en edit preferences y básicamente
esto lo cambié a 10 esto que está acá lo puse como 14 que es esto que están viendo ahora el Data browser lo dejé en
12 esto lo cambié a 13 bueno no Y esto que está acá lo puse en 13 que son los resultados no y acá puse 22 que es para
el tamaño de esto que está acá y cuando yo escriba acá ustedes van a poder ver más grande porque si no creo que se les
va a complicar un poquito no hacer todo En definitiva si yo vengo acá y pongo Select asterisco from users Okay la
estructura de esto es lo siguiente Select es justamente la sentencia que nos permite seleccionar algo okay el
asterisco es el El selectur Universal de todo from tabla entonces la estructura es Select que queremos seleccionar from
nombre de la tabla en este caso estamos seleccionando todo de la tabla usuarios que es esta tabla que tenemos acá
Entonces le doy en execute sql en este botoncito que está acá o también puedo apretar f5 como ustedes prefieran y acá
me tira esto que está acá la primera línea nos dice ejecución finalizada sin errores perfecto tardo 5 mil segundos y
nos resultó o sea nos retornó cero filas Claro si no tenemos registros y acá nos devuelve la consulta que hicimos bien
perfecto hasta acá está todo bien Ahora si queremos manipular datos tenemos que insertar datos así que de hecho ese es
el término utilizado para insertar datos tenemos que realizar un insert Así que vamos a realizarlo cómo se hace en
insert bueno en insert básicamente se pone insert into okay insert into acá va el nombre de la tabla en este caso
tenemos que decir users porque queremos insertar en la tabla usuarios y ahora lo que tenemos que poner es entre
paréntesis sería como hacer una tupla en python las columnas que queremos insertar en este caso las columnas que
vamos a insertar son nombre apellido y edad Así que acá tenemos que poner nombre apellido y edad Acá hay una falta
de congruencia Es que la base de datos Está en inglés y los campos o sea el nombre o sea los campos están en en
español entonces hay una falta de congruencia lo correcto es sería modificar tabla y poner usuarios
usuarios Entonces ahí sí tenemos esto correcto ahora Yo acá le voy a dar insert into usuarios okay Y acá tenemos
Ahora sí usuarios por qué porque esto es una falta de congruencia porque tengo un nombre en inglés y todo lo demás en
español e todo en inglés o todo en español mi recomendaciones hacerlo en inglés pero nada Ahora como es un
tutorial y quiero que ustedes lo entiendan bien Vamos a trabajarlo en español okay pero ustedes normalmente lo
pueden hacer en inglés ya que si ustedes quieren meterse en la industria la mayoría de todo está en inglés o en
chino pero no creo que quieran escribirlo en chino ni yo sé escribir chino Bueno entonces lo que hacemos acá
decir le Che mira insertamos en la tabla usuarios Okay el campo nombre apellido y edad estos son los datos que vamos a
insertar ahora qué valores bueno los valores values esto lo pueden poner abajo o al lado yo lo pongo abajo porque
si no no me entra y acá de vuelta abrimos paréntesis otra tupla y acá decimos los valores por ejemplo entre
comillas el texto Recuerden que siempre va entre comillas si yo quiero escribir un texto lo pongo entre comillas en este
caso voy a poner los valores Lucas por ejemplo de hecho usen comillas simples que las comillas simples son más óptimas
que las dobles estamos insertando el nombre Lucas estamos insertando el apellido dalto y estamos insertando la
edad que voy a poner 21 Ahí va pues cumplo ya cumplo 21 Entonces es como si tuviera 21 cumplo en realidad en en dos
meses pero pongo 21 Entonces si esto lo ejecutada exitosamente acá me dice que la consulta se ejecutó Pero cómo si
ahora no le estoy haciendo una consulta es decir si ahora no estoy consultando información por qué me dice que es una
consulta bueno la consulta es una consulta porque cualquier operación que realicemos con sql como un insert Okay
es una consulta Si queremos modificar la información de la base de datos es una consulta esto es un concepto que al
primero resulta extraño Pero si yo le digo a la base de datos Che modificame este nombre Eso no es una consulta Bueno
en realidad sí sí es una consulta y el concepto es un query el query es justamente como una especie de de de
solicitud que le hacemos a la base de datos Che podrías por favor eliminar esto y te va a responder Mira el
resultado fue que sí lo logré ejecutar correctamente y se eliminó acá me dice hay una fila afectada y tomó 2
milisegundos O sea que si yo elimino un dato es una consulta Sí si yo modifico un dato o agrego un dato también es una
consulta Sí al principio es confuso pero sí no es solamente pedir datos a la base de datos una consulta sino que es varias
acciones a laz normalmente las consultas se utilizan para algo llamado crud que es create read update delate son las
cuatro operaciones básicas de cualquier sistema de gestión tenés que poder create o sea crear información read o
sea leer la información update o sea actualizarla modificarla y delete la d te eliminarla entonces todas esas cosas
se consideran consultas Bueno ahora ya estoy acá perfecto vamos a ver qué es lo que sucedió si yo ahora le digo Bueno
voy a cortarlo con control x Select from usuarios vamos a ver qué es lo que me devuelve ahora vamos a ejecutarla Ah
ahora me acaba de devolver una tabla una tabla muy pequeña con solamente un registro el campo nombre el campo
apellido y el campo Dad y los registros el valor para cada uno de estos Campos Pero entonces para vamos a hacer de
vuelta vamos a registrar más datos voy a poner Pedro jorgelin y tiene 26 Pero qué pasa si yo de repente Quiero agregar
varios datos Cómo puedo hacer Bueno esto básicamente es separándolo por coma yo lo voy a hacer así para que esté más
entado identar el código significa ordenarlo y yo acá puedo insertar varios datos Porque los estoy separando por
coma entonces acá voy a insertar varios datos en este caso voy a poner Juan y Álvarez y le voy a dar 16 acá voy a
poner 52 este se va a llamar Roberto Tito Roberto ya sabemos la historia de los robertos en este canal y le saco la
coma qué es lo que estoy haciendo acá estoy diciendo Che Mira fíjate insert Me Okay en la tabla usuarios estos datos
Pero más bien lo podemos leer de otra forma lo podemos leer como estos Campos que están acá son los campos que te voy
a pasar para que insertes en la tabla usuarios los valores son este para un registro coma este para otro registro
coma y este para otro registro Esta es una forma de ejecutar eh varios insert en realidad es un insert que registra
varias veces es decir hace varios registros Así que vamos a darle acá a ver qué pasa y nos tira un error esto es
porque yo soy un y me olvidé de cerrar las comillas en los apellidos porque esto es comillas no me di cuenta
les pido disculpas de hecho hablando de comillas como esto es un campo de tipo texto No necesitamos las comillas
los números no se representan con comillas son números un texto sí lo representamos con comillas porque cuando
nosotros queremos insertar texto podemos usar comillas simples comillas dobles pero cuando usamos números no se usa eso
para usar un para insertar un número solamente es un número que no hace falta que lo pongamos entre comillas Entonces
nada Está bueno que lo saquemos pues si no estamos insertando un texto en realidad en vez de un número ahora sí
vamos a volver a ejecutar la consulta y ahí se acaba de registrar Bueno vamos a a verificarlo si yo acá pongo Select
from usuarios cuando actualizo ahora sí tengo esta información Ya tengo la información del nombre de apellido de
edad y acá tengo el el número de Registro registro uno registro 2 registro 3 registro cuatro y no se
acaban de dar cuenta pero hasta esta altura acabamos de crear una base de datos crear una tabla de usuario de una
base de datos entender Para qué sirve cada dato cada tipo de dato creamos inserts o sea insertamos datos creamos
un insert para insertar múltiples registros al mismo tiempo de una sola de una sola consulta y por último logramos
entender cómo seleccionar todos los datos y traernos todos los datos que nos devuelve una base de datos además de
entender diferentes conceptos no como por ejemplo tabla campo valor de campo registro y consulta que lo vamos a
marcar ahora nos falta identifiers o identificadores que de hecho en realidad acá debería haber puesto identificadores
pero no sé por qué lo puse en inglés cuando en realidad todo esto está en español bueno en fin vamos a ver lo que
es esto ahí más o menos aumentó un poco la letra de todo eh Para que más o menos lo puedan ver bien eh pero nada por las
dudas No a mí no me han dicho varias veces en los cursos que algunos tienen comp chiquititas y demás Así que nada
por eso por las dudas lo aument como el tamaño de letra de todo pero no se olviden que nosotros nos enfocamos en
esta pantallita de acá esta pantallita de acá y esta acá por ahora bien no está de más Resaltar que cada consulta okay
que hacemos Nos devuelve una tabla nueva es decir cada Select todos los Select cada vez que hacemos un Select Esto sí o
sí nos de una tabla nueva la tabla puede ser resultado de todos los datos que tiene la base de datos o puede ser una
tabla nueva creada a partir de los datos filtrados Por qué Porque si yo le digo acá selecci me el nombre Esto me va a
seleccionar solamente el nombre Entonces esto es simplemente una tabla nueva no es una tabla original yo digo seleccion
el nombre y la edad Esto me selecciona el nombre y la edad yo que me seleccion el nombre el apellido y la edad esto
solamente estos datos apellido y edad me selecciona el apellido y la edad apa esta no la tenían Eh sí si se
emocionaron y dijeron Ah dale un like a este video si no lo hiciste Dáselo también de esta forma estamos
seleccionando algunos Campos Entonces si queremos seleccionar un campo lo seleccionamos así Si queremos
seleccionar dos Campos lo separamos por coma la coma es para separar no para arrancar ni para terminar siempre para
separar entonces tienen que entender que todos los Select lo que nos devuelven siempre son tablas una tabla puede ser
aunque tenga solamente un dato es decir aunque tenga un solo dato no deja de ser una tabla Entonces nada conceptualmente
sepamos que siempre nos devuelven tablas y ahora con esto ya acá ya sabemos lo que es una tabla que es una digamos
Estructura de datos que se organiza en filas y columnas que almacena información sobre una entidad específica
ahora le Podemos agregar ese Plus que las tablas almacenan información sobre una entidad específica Por qué Porque
recuerden que las entidades se representan con tablas Qué información almacenan las tablas y información sobre
esa entidad Entonces nada es interesante que ahora como solamente como que vamos uniendo Los Cabos Y a lo largo del curso
van a ir uniendo un montón más de Cabos ya que de esto se trata el mundo de los datos y de las bases de datos y de todo
este mundo que es hermoso ahora vamos a ver bien este concepto de identifiers identificadores en este caso llaves
primarias específicamente porque tenemos las llaves eh foráneas Y las llaves primarias que son diferentes tipos de
formas de identificar algo Hay mucha teoría al respecto Okay yo yo les voy a enseñar porque las tienen que usar
tienen que aprender a usarlas y son una de las herramientas más poderosas que existen en cuanto hablamos de bases de
datos por ahora no vamos a ver bien eso de foren Kiss pero sí vamos a entender Cómo funcionan los identificadores okay
Así que vamos con con esto de los identificadores vamos Bueno a ver si queremos entender
Para qué son los identificadores primero tenemos que entender cuál es el problema que vienen a solucionar que en realidad
no es como que se hayan inventado mucho Después de las bases de datos sino que necesitamos identificar los datos de
alguna forma entonces ese es el problema que voan a solucionar pero ahora les voy a plantear un problema mucho más gráfico
para que lo entiendan mejor supongamos que yo vengo acá Okay a brose Data Yo acá tranquilamente podría darle en donde
dice insert a New record in current Table y yo le doy acá y acá por defecto los valores se me ponen nulos Okay pero
yo acá puedo escribir y poner por ejemplo Lucas dalto y acá pongo 21 entonces de esta forma yo acabo de
registrar un dato un un registro acabo de insertar un registro que es Exactamente igual a uno que ya existía
antes de hecho yo puedo venir acá a sql y poner un insert insert into usuarios nombre apellido edad values Lucas dalto
21 si yo esto lo registro listo dice que se registró correctamente y el dato se insertó el registro se insertó vengo a
la estructura y si vengo a brows Data efectivamente se acaba de registrar cuál es el problema bueno el problema es el
siguiente De qué forma podemos identificar este registro porque esto que está acá no cuenta Eh Esto que está
acá lo pone automáticamente el browser pero Pero en cuanto al metadatos ese numerito que está acá no existe esto es
solamente un registro del browser Cómo podemos identificar que este registro es diferente de este hay alguna forma de
hacerlo No no existe para eso utilizamos identificadores los identificadores en este caso son identificadores primarios
tenemos dos tipos de identificadores o mejor dicho Los primary Keys o los foring Keys los foring Keys son las
claves que hacen referencia a una primaria de otra tabla pero no no vamos aar mucho vamos a primero y principal
mostrarles Cómo podemos digamos modificar una tabla acá para básicamente crear un identificador normalmente lo
que haríamos sería venir a database structure usuarios Ahora sí botón derecho y modify Table vamos a venir acá
y acá tenemos la tabla como antes okay lo que tenemos que hacer acá vamos a darle add de vuelta vamos a venir un
poquito más para abajo para que puedan ver esto que estamos haciendo completamente y voy a cliquear acá y voy
a darle move top esto para que se ponga arriba de todo y acá a esto esto que está acá voy a aumentarlo un poco para
que se vea completo le voy a dar ID el ID en este caso es el ID del usuario Así que voy a poner ID usuario este ID
básicamente nos va a crear una identificación única que va a identificar a cada usuario por este
identificador si se fijan cuando yo le doy en auto increment no me va a dejar por qué porque acá lo que tendríamos que
hacer en realidad si quisiéramos trabajar con esto es Eliminar todos los registros ahora vamos a ver bien Por qué
Así que lo que voy a hacer es dejar esto que dice ID usuario le voy a dar en Okay okay Y voy a venir acá y simplemente
fíjense que está en nul Así que lo que vamos a hacer es venir a execute sql y Eliminar todos los registros cómo los
eliminamos bueno delete todo from usuarios de esta forma eliminamos todos los registros para que no haya iguales
voy a sacarle el asterisco y lo voy a ejecutar Ahí está perfecto Ahora sí de hecho si vengo acá ahora vemos que no
tengo más información Entonces ahora sí voy a venir a la tabla usuarios modificarla guardar y acá le puedo poner
autoincrement por qué Porque si le pongo Auto vamos a entender qué es lo que acaba de
pasar recién el auto increment es una propiedad de las claves primarias en este caso fíjense que se marcó
automáticamente la opción de primary key Por qué Porque es una es una un campo que se va a auto incrementar Por más que
nosotros no querramos se va a auto incrementar para hacer que cada registro sea único Por qué le ponemos también el
PK que significa primary key las ventajas de usar primar ki primero y principal es que nos asegura una
integridad referencial O sea que podemos hacer referencia a cualquier registro sin tener valores duplicados Por qué
Porque no nos Estaba dejando a eh poner la opción de autoincrement porque para que sea autoincrementable debe ser
primary Ke De hecho si yo la saco no me lo deja tiene que ser auto increment y primary Ke juntas de hecho le puedo
sacar el auto increment puedo sacarle el autoincrement a la primary Key pero no puedo sacarle el primary key al
autoincrement eso es bastante loco Esto es para que cada registro sea único O sea no voy a a poder registrar esto de
forma duplicada el ID va a ser único y cada registro va a tener un ID diferente entonces cada registro va a poder
identificarse de alguna forma además sql utiliza una estructura de de índice de árbol B para acelerar las búsquedas en
una clave primaria esto es básicamente para que podamos utilizar las primary Ke para hacer búsquedas más rápidas más
eficientes más efectivas y todo o sea es más óptimo y rinde más entonces si yo ahora le doy en Okay okay Y modifico
esta tabla fíjense Qué pasa si yo ahora de repente si yo le doy en add New record ya el primer registro Aunque
todos los demás Campos estén nul este ya agregó con un uno le doy otro registro ahora Este es un dos le doy otro y este
es un tres le doy otro y este es un cuatro por qué porque tiene el la propiedad de autoincrement para que cada
valor sea autoincrementable cada registro Perdón se auto incremente entonces Incluso si yo vengo acá y hago
un insert voy a venir y poner insert into usuarios nombre apellido y edad es decir no voy a pasarle el ID no le
quiero pasar el ID solamente quiero insertar estos C values Lucas dalto 21 voy a copiar esta consulta okay para
intentar insertarla dos veces la inserto una vez y abajo le vamos a decir otra cosa le vamos a decir Select from
usuarios para que primero esta Vamos a darle un punto y coma para separarlas hay que darle un punto y coma si vamos a
poner más de una consulta okay tenemos que separarlas con un punto y coma si no no es necesario en este caso para
separar las afirmaciones las consultas le pongo punto y coma Entonces primero nos inserta este dato y después nos
muestra la tabla digamos no entonces Entonces le damos insertar y ahí nos muestra Primero insertamos este dato y
yo voy a intentar hacerlo de vuelta Ah los datos se insertaron pero ahora hay una forma diferente de identificarlas no
es lo mismo este registro que este porque aunque tenga el mismo nombre el mismo apellido y la misma edad los puedo
diferenciar por el ID de usuario uno tiene un ID de usuario 5 otro tiene un ID de usuario 6 esto es similar por
ejemplo en instagram evidentemente no funciona así de forma interna pero pueden hacer de cuenta que el ID de
usuario puede ser como el username vieron que en instagram solamente pueden poner un username si ustedes buscan
soyto en instagram voy a saltar Solamente yo y nadie más porque soy de alto solamente hay uno no hay más soy de
alto todos los demás son falsos va no es que son falsos sino que tienen otro username por qué Porque el username es
de uno único y no puede haber otro igual sí pueden haber dos personas que tengan de nombre Lucas dalto porque ese es el
nombre pero el username es único para cada uno Esto es lo mismo tenemos un ID que nos identifica a cada usuario esto
es excelente esto fascinante y para esto queridos muchachos sirven los ids en este caso los identificadores primarios
las claves primarias identificadores hay dos los primarios o las claves primarias y las claves foráneas ahora por qué
estoy mencionando tanto esta palabra foránea clave foreing Qué es foreing bueno lo vamos a ver ahora pero
no se apresuren no se apresuren porque tenemos que entender otras cosas antes pero por ahora acabamos de entender lo
que es un identificador o un identifier o un ID Perfecto es lo que es como un campo específico o sea un identifier un
identifier no deja de ser un campo okay un campo que sirve para identificar un registro
entero Recuerden que tenemos los registros los campos la tabla Bueno un identificador Okay es un campo especial
que nos sirve para identificar un registro entero por qué Porque un registro puede tener todos los datos
exactamente iguales pero por lo menos hay un campo que es diferente el identificador que nos permite
identificar cada registro de forma única perfecto bien Ahora que entendimos el concepto ya los conceptos básicos ya los
tenemos Así que vamos a metern más de profundidad en el resto de cosas Cerramos el Paint y comenzamos Bueno
también cabe Resaltar que los identificadores primarios no pueden ser nulos o sea no se puede poner nul por
eso eh No me dejaba poner las esta columna como auto incrementable por qué Porque si es auto incrementable
automáticamente se convierte en una clave primaria y las claves primarias no pueden tener valores nulos y cuando yo
inserto una nueva tabla O sea si yo acá por ejemplo agrego una una nueva tabla vamos a venir acá y poner modify Table y
voy a poner en esta tabla le vamos a crear un nuevo campo que va a ser dirección por ejemplo no dirección y va
a ser tipo texto Si Lo agrego Cuando vengo acá van a ver que sí se creó el campo dirección pero como es un dato que
jamás registramos tiene todos los los valores nulos para cada registro es un valor nulo cuando lo queremos hacer
autoincrementable no vamos a poder auto incrementarlo por qué Porque si lo hacemos autoincrementable tiene que ser
una clave primaria y si es una clave primaria no puede tener valores nulos entonces me tiraba el error que me
tiraba antes Espero que ahora más o menos vayamos uniendo Cabos y entendiendo Esto bueno ahora sí voy a
hacer eh algo que es Eliminar todo todos los los registros nuevamente o cambiarlos mejor dicho voy a rellenar
los registros para que más o menos tengamos todos los registros de hecho voy a borrar este campo porque como que
no lo voy a usar ahora Así que lo voy a eliminar remove Ahí va y le doy acá y voy a rellenar estos Campos para que
hagamos otro ejercicio a continuación Así que Aguánteme un segundo que reeno los campos y
[Música] continuamos Bueno ahí los modifiqué y ahí tenemos una base de datos con Bueno
un una tabla de usuarios que tiene nombre apellido edad y un identificador para C usuario perfecto hasta ahí
estamos bien esta tabla que está acá eh olvídense se creó automáticamente pero es como que no no la podemos eliminar
Así que des preocúpense eh vamos a crear otra tabla Okay Vamos a darle create Table y esta tabla va a ser por ejemplo
de turnos médicos turnos médicos va a ser el nombre de la tabla no le pongo acento porque esto no puede generar
conflictos lo ideal es no usar acentos ni caracteres especiales No si lo soportan pero evitemos problemas voy a
agregar un campo que es ID de turno o sea cada turno tiene que tener una ID diferente si yo por ejemplo te digo sí
Mira vine siete veces a tu consultorio Bueno pero decime Cuál de las siete veces me estás hablando no lo que pasa
es que vine para que me chequees la pierna y me diagnosticas una enfermedad pero no me acuerdo cuál Bueno a ver
Tengo muchos registros decime qué día viniste y te voy a decir o mejor dicho decme el ID del turno así yo busco el
numerito del turno y puedo entender todo lo que vimos y todo lo que su só en esa consulta Entonces el ID de turno nos va
a identificar específicamente este turno Y va a ser un in va a ser autoincrementable y listo no hay
problema ya estamos vamos a crear un campo que es profesional en este caso va a estar el nombre del profesional por
ejemplo acá va a estar el motivo o el paciente Mejor dicho que en este caso le podríamos poner paciente Pero hay una
práctica eh que normalmente se utiliza para para bases de datos que es cuando vamos a utilizar un ID que hace
referencia a otro ID tenemos que poner el mismo ID Entonces en este caso vamos a poner ID usuario Por qué Porque en
usuari tenemos un campo que es ID usuario y si en este caso queremos hacer referencia a ese a ese registro por el
ID tenemos que usar exactamente el mismo después hay técnicas para hacer que sea más legible pero no está de más usar
esto y después agregamos otro Bueno a esto le vamos a poner también como que sea texto a esto también va a ser texto
Ahí va Vamos a estirar un poquito para que se vea más Ahí va bueno Y por último voy a agregar un campo que va a ser
motivo motivo va a ser texto y vamos a agregar uno más que va a ser horario por ejemplo y va a ser también texto ahí
tenemos una tabla Okay con cinco Campos ID de turno profesional ID usuario motivo y horario Perfecto Bueno ya
podemos entonces va este el ID de usuario va a ser número también ahí va y ya le damos Okay ahora tenemos una nueva
tabla bueno tenemos la tabla Así que vamos a hacer un insert vamos a venir a brow Data vamos a venir a execute acá
Bueno y acá simplemente vamos a empezar los valores vamos a poner turnos médicos y acá voy a poner el ID no hace falta
porque se automáticamente crece así que voy a sacar un turno para profesional ID del paciente ID usuario en este caso
esto voy a tirar para un costado para que no nos moleste acá usuario motivo y horario estos son los datos que voy a
registrar y los valores son el profesional va a ser Ramírez el doctor Ramírez el ID de usuario es el a ver mi
ID de usuario era el 6 si no me equivoco Así que voy a ponerme se el motivo va a ser dolor de panza por ejemplo y el
horario va ser a las a las 12:30 del mediodía técnicamente registro esto okay vamos a seleccionar esto ejecuto y ahí
me acaba de decir listo hay un registro Okay hay un registro Qué pasa acá bueno acá lo que acabo de hacer es registrar o
mejor dicho insertar un registro en esta tabla Entonces tenemos el primer turno por qué Porque el ID turno no hace falta
que se lo pasemos es automático porque se auto incrementa o sea cada registro va a tener 1 2 3 cu siempre va a ser el
número siguiente el profesional es el doctor Ramírez el profesional que me va a atender el ID de usuario es este yo
voy a seleccionar dos tablas ahora Select from turnos médicos y ahora voy a darle Select from usuarios y acá voy a
registrar otro turno el doctor Ramírez también va a atender al usuario TR por dolor de cabeza por ejemplo a las 11:30
Entonces ejecuto esto y ahí me muestra todos los regitros Ah perdón me olvidé el punto y coma Ahí va Ahora sí lo
ejecutamos y acá tenemos Esto bueno qué está pasando acá lo que pasa es que se están superponiendo las tablas esto que
está acá lo vamos a borrar para que no nos estorbe yo si quisiera Mostrar no puedo hacer esto esto porque esto lo que
está haciendo es reescribe la tabla anterior primero lo que hace es bueno te muestra la tabla turnos médicos y
después tiene que borrarla para mostrarte la de usuarios para que nos muestre las dos juntas simplemente
ponemos coma usuarios y ahí ya nos está mostrando las dos tablas le doy en ejecutar y ahora nos mostró esto que
está acá pero ahora simplemente lo que hacen las tablas es superponerse Entonces técnicamente no nos están
mostrando nada lo que nos están mostrando acá es son cosas que básicamente no podemos unir para esto se
tiene que utilizar un join que después vamos a sa ver bien qu es un join Y estos son los tipos de problemas que
surgen Por qué por qué yo querría Mostrar las dos tablas Y fácil si yo muestro turnos médicos tengo tres turnos
que se registraron Okay tengo tres turnos registrados uno tiene el ID de usuario 6is si yo quiero saber quién
es mi cliente mi paciente tengo que hacer esto tengo que venir y poner usuarios Buscar a ver cuál es el seis Ah
Acá está el seis Okay Lucas dalto fue atendido bueno a ver vamos a ver quién más fue atendido turno médico ejecutamos
el siguiente fue el id3 Bueno vamos a usuarios de vuelta a ver a quién ha Atendió después el id3 Martina Okay
atendió a Martina Acosta porque el ID de usuario 3 es el de Martina Acosta turno médicos ejecutamos Ah la Atendió de
vuelta a Martina Acosta Y esto no se puede no es viable para esto tenemos que utilizar justamente joins y otras cosas
que vamos a ver más adelante que todavía no quiero que nos metamos ahí Pero simplemente quiero que entiendan que lo
que tenemos que lograr hacer es relacionar una tabla porque a qué hace referencia este ID de usuario Bueno
vamos a crear un Paint como hacemos siempre para empezar Recuerden que tenemos las claves primarias y las
claves foráneas acá la clave primaria es sin duda Esta que está acá Okay esta que está acá es la PK Porque así es como
esul light abrevia las claves primarias de hecho así se abrevia las claves primarias con PK PK significa clave
primaria Esta es una clave primaria de esta tabla Y esta es una clave primaria de esta tabla hasta ahí estamos bien
cada tabla tiene su clave primaria es como su identificador Cómo hace la tabla turnos médicos para identificar a cada
turno Y por el ID de turno Cómo hace la tabla usuarios para identificar a cada usuario y por el ID de usuario perfecto
estamos todo bien Ahora esto que está acá está esta este campo de Acá no está haciendo referencia a ninguna clave
primaria ni identificar porque las claves primarias no se pueden repetir y acá Se repitió Por qué Porque el hay un
paciente que tuvo dos veces una consulta médica entonces no es primaria y si no es primaria Entonces qué estamos
haciendo con esta clave bueno Esta que está acá es un campo este que está acá es un campo que utilizamos para hacer
referencia a un ID de otro lugar porque si esto que está acá con esto podemos acceder a los registros de todos los
usuarios Qué significa que estamos teniendo una clave foránea que es como una clave secundaria de esto entonces
técnicamente ID de usuario es una clave foránea o sea un forin key en este caso se escribe así for
key en este caso es una clave foránea por qué Porque este ID Okay este ID está haciendo referencia a estos Campos El
Seis hace referencia al seis y el tres hace referencia al tres como esta tabla necesita hacer referencia a los usuarios
de una forma única para que con un numerito identifiquemos al usuario esa forma que utiliza es el valor que tiene
ese usuario único y ese valor único del usuario es el ID de usuario Entonces lo podemos usar para identificarlo esto es
excelente Porque con este numerito tenemos información de todo el usuario es fantástico si yo por ejemplo tengo
una tabla que dice ID turno no y el turno tiene como profesional al doctor Ramírez sabemos que hay un un paciente
que vino por dolor de panza y que estuvo a las 12:30 Quién es este paciente bueno el ID de usuario 6 Okay acá lo buscamos
el ID de usuario 6 es Lucas de alto y tiene 21 años Este es el poder de las cl foráneas El problema es que rinden menos
O sea no son siempre muy eficientes pero en algunos casos son necesarias porque si no hay otra forma de hacer referencia
esto se puede validar en la en la aplicación o se puede validar directamente en la tabla como tal pero
eso ya no nos vamos a meter porque son otro tipo de temas eh lo que tienen que entender es que la clave primaria es una
clave que no sirve para identificar un registro como único y la clave foránea es una clave que nos permite hacer
referencia a una clave primaria de otra tabla O sea no podría ser una clave foránea si no estuvieras haciendo
referencia a una clave primaria de otra tabla Esa es la definición Entonces vamos a poner acá las definiciones con
la primary Ke identificamos un registro entero para que cada registro se vuelva único y con las foring Keys o las claves
foráneas lo que hacemos Es hacer referencia a una primar Ke o sea una clave primaria de otra tabla en este
caso a qué está haciendo referencia eh ID de usuario y a ID de usuario del de la tabla usuarios Por eso yo les decía
que es una buena práctica se acuerdan que íbamos a poner paciente se acuerdan de eso en este caso le podríamos poner
paciente Pero hay una práctica eh que normalmente se utiliza para para bases de datos que es cuando vamos a utilizar
un ID que hace referencia a otro ID tenemos que poner el mismo ID acá cuando usamos una foreign key lo que utilizamos
es el mismo nombre que le dimos porque esto nos genera una identidad y una relación Es más legible y no nos
entorpece la lectura entonces tiene mucho más sentido ponerle exactamente el mismo nombre al campo que al campo de al
que estamos haciendo referencia O sea si hacemos referencia al ID de usuario y pongámosle exactamente el nombre que
tenía antes Bueno toda esta explicación fue para que entiendan los identificadores porque hay mucha gente
que se pierde mucha gente que se marea y yo Les recomiendo que si no entendieron mi explicación No se preocupen no se
sientan abrumados vayan a algún tutorial y búsquenla porque Obviamente no voy a ponerme a explicar de 30 formas
diferentes esto porque tengo que avanzar con el curso o sea así como ustedes todos los conceptos que vieron hasta
ahora los entendieron hay gente que no entendió seguramente algún que otro concepto pero es normal probablemente si
alguien no entendió algún concepto que Di lo buscó y por eso pudo continuar el curso Okay la gente no es perfecta y no
siempre entiende la primera vez aunque intente explicarlo de la mejor forma posible siempre hay un porcentaje por
más mínimo que sea que le cuesta entender y si Lamentablemente estás dentro de ese porcentaje mi consejo es
Busca algún otro video que te explique específicamente esto no te vayas otro curso eh eso no no no seas p no No seas
hijo de no no Quédate perdiendo en este curso pero específicamente esto si te llega a costar o lo que te haya
costado buscalo en algún otro lugar tenés chat gpt también para sacarte las dudas De hecho acá la no probaste
con chat gpt pero si lo entendieron ahora entenderán cómo graficar un diagrama un diagrama sencillo vamos a
eliminar todo esto y vamos a graficar un diagrama Okay Cómo podríamos graficar esto que está acá con un diagrama que
nos permita relacionar estas tablas simple bueno acá tengo la representación de las tablas acá estoy diciendo Esta
que está acá es una tabla Okay una tabla llamada turnos médicos que tiene un ID turno que es un identificador principal
que de hecho acá le podríamos agregar como una llavecita es el signo que se suele utilizar para mostrarnos que está
identificándose pero en este caso no lo vamos a aggar porque es innecesario tiene un profesional un ID de usuario un
motivo y un horario y después tenemos la tabla usuarios que tiene un identificador único llamado ID usuario
tiene un nombre tiene un apellido y tiene una edad estos Campos pertenecen a estas tablas si yo quisiera
relacionarlas Cómo haríamos bueno las tablas se relacionan por las foreign Keys o sea por las claves foráneas si yo
quisiera relacionar estas tablas simplemente hago esto el ID de usuario pasa a ser la foreign Key de turnos
médicos porque hace referencia a la primary Key de usuarios y de esta forma conectamos bases de datos por qué Porque
si yo por ejemplo tengo un registro que sea por ejemplo como ya vimos antes el ID de turno es un cero el profesional es
Dr Ramírez el ID de usuario es se el motivo es dolor dolor de panza por ejemplo o dolor y el horario es
1230 por ejemplo Cómo puedo relacionar esta información con esta tabla no tiene nada que ver no sí sí la tabla que
conecta estas dos es el id Cuál es el id seis o sea que yo tengo que ir a buscar cuál es el registro que tiene el id6 y
cuando encuentro el registro con el id6 voy a encontrar los datos el usuario que tiene el id6 se llama Lucas tiene
apellido de alto y tiene 21 años Esos son los datos del usuario con el d6 y ahí acabo de relacionar las tablas
entonces puedo venir acá y buscar esa relación nuevamente vamos a hacerlo una vez más a ver si lo entendimos
seleccionamos todo de turnos médicos y acá tenemos un turno un turno que nos pide el usuario seis vamos a chequearlo
cuando vamos al ID de usuario 6 acá tenemos es un turno que pidió Lucas dalto que tiene 21 años Y de esa forma
tenemos una relación entre tablas de esta forma podemos conectar tablas y crear sistemas y bases de datos que nos
permitan conectar las tablas entre sí para que después van a entender cuando trabajemos con procesos más complejos
podamos hacer cosas que nos permitan hacernos la vida muchísimo más fácil toqué el micrófono perdón pero En
definitiva van a ver su importancia cuando la necesiten por ahora es simplemente teoría que parece que es
inútil pero hasta que no la necesiten no van a ver su utilidad A menos que ya sean unos visionarios y acaban de
entender en su totalidad todo con el ejemplo que di pero qué pasa si yo les dijera que existen bases de datos de
prueba que podemos utilizar para este curso porque a ver ahora Estamos trabajando con datos muy pobres con
bases de datos con muy poca información pero existen bases de datos de prueba que nos permiten a nosotros trabajar con
datos reales y con los que podemos operar para que podamos llevar el aprendizaje a otro nivel estoy hablando
de una de las bases de datos más conocidas de todas estoy hablando de la base de datos northwind si venimos acá y
buscamos base de datos northwind vamos vamos a encontrar un montón de diagramas estos son los diagramas de una base de
datos que es muy conocida y que es muy utilizada para aprender y para entender este tipo de cosas y es esta base de
datos yo la tengo Así que vamos a descargarla okay Para que podamos exportar esa base de datos a este gestor
para que tengamos todas las tablas con toda la información y ahí sí ya van a ser cosas diferentes porque vamos a
estar trabajando con mayores volúmenes de datos vamos a estar trabajando con otro tipo de consultas que nos van a
permitir hacer otras cosas y ver otros resultados Porque de nada nos sirve trabajar con cuatro datos locos o
mostrarles cosas avanzadas que no tienen uso práctico porque no estamos trabajando con datos que nos permitan
aplicar esos usos avanzados Así que para continuar en el curso vamos a descargar esta base de datos norwin que justamente
utiliza el modelo relacional que es el diagrama que acabamos de ver recién esto que está acá es el modelo relacional y
es es una forma en la que relacionamos bueno no es el modelo relacionar como tal pero es una una forma de en diagrama
utilizando el modelo relacionar relacionar bases de datos esto que AC vamos a hacer Recién ahora tiene dos
tablas Pero qué pasaría si tuviera muchísimas más bueno tenemos cosas como estas que ahora seguramente vamos a
entender mucho más fácil cuando las veamos porque como ya entendimos esto y que este este conector nos dice Che Mira
la forma en la que se relacionan es por una llave foránea Bueno vamos a entender estos diagramas Así que vamos a bajarnos
esta base de datos vamos a abrir su diagrama y una vez que entendamos el diagrama vamos a empezar a hacer
consultas para manipular estos datos y jugar un poco con ellos así que vamos estuve grabando todo este tiempo
con el aire lo podrías Apagar por favor no lo puedo creer Bueno una cosa que quiero decirles Si antes escucharon un
ruido que es medio molesto que es como un lo que pasa es que sí desde el curso de python ustedes vieron que no paré de
sufrir por el calor y cómo chorreaba y ahora no estoy sufriendo porque tengo un a acondicionado de 6,000 frigorías
enfrente y básic mente el estudio siempre lo dejo como unas dos tres horitas antes para que refresque todo y
pueda apagarlo antes de grabar Pero esta vez me olvidé de apagarlo y nada como que estuvo en esta grabación anterior
este este pedacito del curso eh estos últimos 20 minutos habrán sido quizás un poco menos no no sé no lo edité todavía
el video lo van a ver ustedes editado pero yo no estuvo ese ruido Pero ojalá que no haya sido molesto Y si lo fue
pido disculpas Ahora sí continuamos con la base de datos que de hecho la tengo acá es esta base de datos Okay les voy a
dejar el enlace en la descripción para que puedan seguir mis pasos y en caso de que este enlace ya no esté más
disponible yo yo me voy a encargar de dejarles un enlace con este mismo código para que puedan seguir el curso con los
mismos datos y que puedan manipular la misma información que estoy manipulando yo para que vean los mismos resultados
que estoy viendo yo vieron que a veces las páginas dejan de estar disponibles bueno En caso que deje de estar
disponible Yo mismo me voy a encargar de dejarles un enlace con esto de vuelta Así que vayan a la descripción y tengan
esto y si no tienen ganas de ir a la descripción bueno busquen básicamente esto que está acá que es wiki
university.org norwin sqlite y nos va a saltar todo esto que está acá qué joraca es esto bueno Esto que está acá es un
código la ísimo de sql con muchas consultas que nos va a permitir crear y hacer todo para que tengamos la base de
datos en nuestro gestor vamos a copiar desde acá porque esto que acá son comentarios que más adelante vamos a
explicar qué es lo que son pero básicamente es como algo para el desarrollador algo que sql no interpreta
y que solamente nos sirve a nosotros para leerlo pero sql no lo interpreta o sea sí lo interpreta pero lo ignora Así
que vamos a copiar desde acá vamos a bajar Bajar bajar y copiar hasta el final de todo voy a bajar hasta abajo es
bastante esto porque tiene bastante información son datos que está registrando que a nosotros nos van a
servir Así que simplemente copio esto y ahora sí vamos a darle en Nueva base de datos vamos a guardarla como nth Wind db
Me faltó una H acá Ahí va y la guardamos esta que ya tenemos ahora de usuario pun db la vamos a guardar para que nos quede
recuerdo y acá nos pide que creemos algo Yo acá como me salta esto voy a cerrarlo no quiero ninguna tabla lo que voy a
hacer Ya estoy en norwind db Por más que me salte esto que está acá estoy en norwind deb lo podemos verificar con el
archivo que tengo acá arriba voy a darle cont control V corta para pegarlo y acá tengo todo lo que copié lo tengo todo
acá le doy en ejecutar la consulta y ahí se está ejecutando si se fijan Esperamos que se termine de
ejecutar Ah bueno tarda listo acá me dice que la ejecución finalizó sin errores y ya estamos listos De hecho si
ahora vamos a brow Data vamos a ver que ahora tenemos varias tablas acá en donde dice Table tenemos varias tablas tenemos
la tabla categorías la tabla clientes la tabla empleados la tabla detalles de la orden la tabla órdenes la
tabla productos la tabla envíos y la tabla proveedores o sea Ah bueno Okay no encontró ninguna amenaza fantástico
Windows defender me pone rec contento la verdad y bueno tenemos esite sequence que esto no es nuestro ya es algo
interno ahora la pregunta es cómo joraca sé yo cómo manipular esta información y cómo se relacionan estas tablas las unas
con las otras bueno para entender un poco estas tablas porque cuando nosotros entramos a una empresa y tenemos bases
de datos que manejar y demás lo que tenemos es algo que es un diagrama y ese diagrama nos permite entender cómo se
relaciona una tabla con la otra Y como por ejemplo este employee ID este category ID este product ID eh este
orden ID todo esto se relaciona no Cómo se relacionan todos estos datos pero lo tenemos en un diagrama y esta base de
datos tiene su diagrama Así que vamos a verlo si le damos acá donde dice northwind nos va a llevar a esto que
está acá que es el diagrama lo que yo voy a hacer es abrir esta imagen Mejor dicho en una nueva pestaña y acá tengo
la imagen okay Esta es la imagen que tenemos que analizar voy a poner pantalla completa tiene un poco de mala
calidad Pero no importa se lee la verdad que se lee y bien acá tenemos las relaciones Okay las relaciones y cómo
estos datos se relacionan entre sí bueno para empezar tenemos la tabla principal que es customers okay Y acá básicamente
tenemos algo que se llama un n pero no Quiero meterme en eso porque no quiero que hablemos de temas de cardinalidad
por ahora eso lo vamos a dejar un poquito más para adelante pero por ahora tienen que entender que la tabla
customers o sea clientes tiene un customer ID el nombre del cliente el nombre de contacto la dirección una
ciudad un código postal y un país Estos son todos los datos que nosotros registramos del cliente nosotros de un
cliente registramos el customer name es decir el nombre el contact name el nombre de contacto address o sea su
dirección City que es su ciudad postal code que es su código postal y el comp o el país ahora cómo se relaciona esto con
orders yo tengo otra tabla que se llama órdenes Okay las órdenes las podemos identificar con su llave primaria que se
llama orden ID en este caso es order ID en inglés y Esta es una clave primaria que nos permite identificar a cada
registro que de de orden porque esto es una orden qué más registra bueno registra el cliente o sea Quién es el
cliente que hizo la orden y así conectamos esta tabla ya está ahora acabamos de conectar la tabla clientes
Cómo y porque cada orden tiene un ID de cliente ese ID de cliente hace referencia a esta tabla customers que
tiene todos los datos del cliente O sea que solamente con su ID podemos obtener todos sus datos Y así relacionamos estas
dos tablas bien después tiene un employe ID que en este caso es el nombre del empleado Quién fue el empleado que le
vendió el producto el empleado que lo vendió lo podemos obtener con su employe ID Por qué Porque es una forma es es
otra foreign key que hace referencia a esta tabla nueva que es employees que es empleados a su vez esta tabla registra
el primer nombre el segundo nombre la fecha de nacimiento la foto y sus notas después el shipper o sea el envío el ID
de envío en este caso Qué sería shipper bueno shiper es una empresa que se encarga del envío O sea no es como el
envío como tal sino que es una empresa que se encarga del envío quién se encarga del envío en esta orden y se
encarga y acá nos pide el nombre y nos pide el número entonces si yo por ejemplo digo Mira a ver mi orden es la
orden número 25 Bueno a ver quién la ordenó el customer ID 5 Ah okay A ver quién es el C id5 y tengo todos los
datos del customer a su vez Quién es el el que vendió esto y lo vendió Y tenemos el nombre de la persona que lo vendió el
apell todos sus datos Ah bueno Y también tenemos la fecha perfecto esto es un dato individual un dato propio de la
tabla orders y después quién se hace cargo del envío bueno shipper ID el shipper ID es un identificador único y
nos dice el nombre de la empresa que se hace cargo del envío y el número de la empresa que se hace cargo del envío
perfecto Listo ya tengo toda la información ahora esto a su vez se conecta con con otra tabla que es los
detalles de la orden el primer campo es una clave primaria que nos indica bueno el orden detail ID perfecto listo es el
detalle de la orden nos pide el order ID que hace referencia a la clave primaria order ID En definitiva es una clave
foránea o sea order ID es una clave foránea de order details que hace referencia a la clave primaria order ID
de la tabla orders y después tenemos product ID que es otra clave foránea de order details que hace referencia al ID
de productos si yo quiero decir a ver el detalle de la orden es la orden que acá nos dice todo lo que ya vimos antes la
cantidad del producto que Cuántos compró 3 4 5 y compró siete listo siete y el product ID que en este caso es Qué
producto compró bueno el product ID es siete Okay a ver el id7 listo el producto con el id7 tiene un nombre un
proveedor quién nos provee ese producto una categoría unit que es la cantidad de unidades que tiene y price que es el
precio a su vez después tenemos su Play ID ya tenemos proveedores supónganse que este este product ID tiene un supplier 7
por ejemplo listo a ver quién es el supplier 7 tiene un nombre un nombre de contacto una dirección una ciudad un
código postal un país y un número de contacto volvemos más atrás también tiene una categoría a ver supongamos que
nos tocó el category ID 3 a ver cuál es el categoría id3 y el categoría id3 tiene un nombre y una descripción puede
ser por ejemplo no sé que yo frutas y la descripción puede ser es una banana fruta verde amarilla y cosas y de esta
forma acabamos de conectar todas las tablas entre sí y crear un diagrama casi perfecto de cómo todas las tablas
almacenan información de forma ordenada Por qué Porque Tenemos tantos datos que tenemos que saber ordenarlos tenemos que
entender cómo los datos están ordenados porque cuando nosotros somos una empresa o cualquier sistema de gestión cualquier
cosa de la que necesitemos guardar datos Tenemos que tener bases de datos organizadas que guarden información
sobre las diferentes partes que necesiten almacenar información podamos relacionar las tablas entre sí Y Cuando
querramos acceder a algo podamos hacerlo sin problemas cuando queremos obtener datos los podamos obtener sin problemas
y sepamos a dónde ir a buscar las cosas Yo sé que si quiero buscar por ejemplo la cantidad de productos que se
vendieron de algo lo busco en order details si quiero saber dónde están los clientes lo busco en customers y tengo
todo sobre los clientes si Quiero saber sobre mis empleados lo busco en la tabla empleados pero a su vez una orden la
hizo un cliente y tengo todos sus datos una orden La vendió la generó un empleado que fue El vendedor tengo todos
los datos del empleado y además se la asigno a una empresa que se encarga de repartir ese envío y tengo todos los
datos de esa empresa así podemos relacionar la información y tener estructuras que son escalables viables y
que nos permiten trabajar con datos en la vida real de forma profesional Este es el poder de saber manejarse bien con
la información y sql es la herramienta que nos permite manipular esta información que debería estar bien
estructurada entonces sql no es solamente código porque técnicamente sí sql Si queremos lo vamos hacer solamente
código Pero de nada nos sirve si la teoría no está bien aplicada porque si esto fuera un desastre no podríamos
acceder bien a los datos No tendríamos un orden no entenderíamos nada de lo que estamos leyendo y trabajar con sql Sería
mucho más complicado por eso esta parte teórica es super importante porque tener bien las bases nos permite que las
consultas y todo lo que hagamos con sql sea más sencillo legible entendible eficaz e incluso escalable si no lo
entendiste mirate algún video que lo explique Okay pero no sigas después mirando este video si no entendiste esto
mírate otro video que te explique lo mismo pero volvé al principio del video donde te arranco a explicar lo que son
los identificadores volví hast ese punto del video te aseguro te aseguro que si esta parte la ves dos veces la vas a
entender O sea si no entendiste mucho hasta este punto del video pero retrocedes al apartado de
identificadores ahora sí lo vas a entender todo porque al principio te hablo de cosas que explico después
entonces si ahora ahora las volvés a ver vas a decir ah te lo aseguro Así que si no retroceda el apartado de
identificadores y volví a ver el video hasta este punto y vas a ver que lo entendiste Y de esa forma te va a quedar
mucho más en la mente pero ahora vamos a arrancar a trabajar con esta base de datos Porque ya está basta de hablar
dalto tenemos bases de datos con un montón de información y con un montón de formas de operarlas y manipularlos vamos
a empezar a aplicar sql a todo esto y ahora sí me emociona porque ahora se viene la parte tryhard Así que
vamos bueno a ver para comenzar tenemos que entender que hay Campos que quizás ustedes puede que les cueste entenderlos
puede que les sea más fácil llamarlos de otra forma porque miren Tenemos un montón de Campos o sea Tenemos un montón
de perdón de tablas y cada tabla tiene un montón de Campos entonces a veces puede que se confundan un poquito a la
hora de llamarlos Entonces qué podemos hacer esto voy a borrar esta consulta que había hecho antes y voy a hacer un
Select un Select simple con Select from employees vamos a ejecutar esta consulta y ahí nos tiró toda esta información es
fácil una información sencilla de los empleados esto que está acá es interesante Por qué Porque si acá dice
foto y sin embargo está guardando esto y esto no es una foto qué es esto Esto es interesante esto que está acá hace
referencia a una URL por qué porque las fotos normalmente Las guardamos en el servidor y lo que guardamos acá es la
url entonces supongamos que el usuario sube una foto de perfil que dice eh dalto No mi foto de perfil Entonces yo
no guardo mi foto acá lo que yo guardo acá es la url y la foto la subo al servidor y al programa le digo la imagen
es y le paso la URL entonces automáticamente se muestra la imagen sin tener que andar registrando la imagen en
la base de datos que después es un problemón traerla de vuelta en backend eso nada esto ya es término para cuando
trabajemos con lenguaje de programación y con sql Lo mezclemos eh Nada que está bueno que lo sepan no que uno
normalmente no almacena la imagen en la base de datos sino que almacena la URL la ruta Así que nada eso Bueno ahora
Estamos seleccionando emploe no pero supongamos que yo quiero seleccionar el Last name como apellido Por qué Y porque
Last name técnicamente es el último nombre que que en español se traduce como apellido pero a veces me confunde
no a veces veo Last name y me confunde si es el caso te recomendaría ir a un psicólogo no y después a la escuela para
aprender inglés básico no se ofenden Es un chiste que te cacheteo si te me ofendes pero la segunda opción que no
pueda cambiarlo y seas un tipo sin como como iglesia abandonada no no no tiene cura merezco me merezco lo peor Bueno
cómo hacemos para darle otro nombre a las columnas y fácil podemos venir acá a la estructura de la base de datos acá
tenemos las tablas vengo a employees le doy en modificar y acá le cambio esto por apellido pero esto no es correcto no
es correcto porque si lo tengo en inglés y lo paso en español hay falta de congruencia y tengo no es una tontería
entonces lo que hago es lo cambio de forma temporal asignándole otro nombre Cómo hago eso con la cláusula as si yo
selecciono el Last name si yo acá lo ejecuto me va a ver ver solamente el Last name pero ahora yo le voy a dar
Last name as apellido entonces Entonces ejecuto esto y ahora me devuelve los mismos datos pero el campo Last name se
acaba de convertir en apellido pero si vuelvo acá el campo es el mismo eh No se modificó sigue siendo Last name vamos a
seleccionar el employees es Last name Acá está pero acá es apellido la tabla Recuerden que los Select nos devuelven
nuevas tablas Esa es la magia del Select con el Select podemos pasar 1 formas de trabajar con conjuntos Y esta es la
magia del álgebra lineal que funciona de forma interna que nos permite hacer muchísimas operaciones y devolvernos
nuevos conjuntos que esto interpreta como nuevas tablas que a su vez tienen nuevos valores entonces asignarle un
nuevo nombre al campo es una de esas posibilidades Entonces yo por ejemplo Last name como apellido pongo una coma y
ahora digo y también quiero que me devuelvas el First name como nombre Entonces yo lo ejecuto y me devuelve
apellido y nombre y ahí está los campos son los mismos Repito no cambiamos nada es Last name y First name ahora si yo
quisiera que me lo devuelva al revés que primero me devuelva el nombre y después el apellido pongo primero esto y después
Esto entonces lo ejecuto y ahí va me devuelve primero el nombre y después el apellido entonces Está bueno viste
porque podemos jugar un poco con esto y ese cuel Entiende lo que queremos hacer y nos devuelve una tabla nueva esto
normalmente no lo usaríamos Pero para qué podemos usar Esto bueno Esto se usa principalmente por dos motivos el primer
motivo por el que usamos la cláusula as es porque queremos agregarle un nombre más descriptivo a la tabla supónganse
que tenemos una tabla llamada no sé jdc 532 eso no debería pasar Okay no debería pasar pero a veces en sistemas
automáticos y existen casos en los que a veces sí tenemos nombres que son muy poco intuitivos y y complicados de leer
Entonces si hay un campo llamado nj4 y hace referencia al nombre de una tabla de no sé qué le ponemos
nj4 a nombre Entonces yo yo sé que cuando estoy leyendo esos Campos Estoy leyendo los nombres Entonces es más
fácil para que yo lo pueda interpretar e incluso después van a ver que lo podemos operar o sea sql nos permite hacer
muchas cosas pero muchas cosas Estoy seleccionando esto y le estoy agregando otro nombre diferente entonces es como
que después con ese mismo nombre vamos a poder hacer muchas cosas y si yo quisiera modificar o utilizar funciones
o lo que sea ya no la uso más acá la aplico acá entonces realmente nos permite hacer muchas cosas esto incluso
yo puedo hacer algo así les voy a hacer un adelanto muy rápido vamos a seleccionar otro campo que en este caso
es product product Ahí va y lo ejecutamos fíjense que product tiene un precio Okay esto que está acá es el
precio de de products si yo acá pongo price y lo ejecuto me devuelve el precio solamente el precio Pero si yo acá le
hago esto esto todavía no lo vamos a ver pero es una forma de hacer una operación esto significa que queremos que queremos
seleccionar el precio y multiplicarlo por dos lo ejecuto y me devuelve lo mismo fíjese que en vez de 18 me
devuelve 36 antes me devolvía 18 y ahora me devuelve 36 si se preguntan Cómo hago para ir para atrás y para delante es
aprieto acá en el campo de sql y pongo control Z y después para ir para adelante es control y Entonces de esa
forma como puedo hacer las cosas más rápido no entonces me devuelve el doble Pero qué pasa acá dice price por dos acá
arriba y queda feo este campo es un campo que es raro Entonces cómo puedo renombrar fácil a esto lo renombro como
precio doble y cuando lo ejecuto me dice el precio doble es esto incluso puedo seleccionar dos veces el mismo campo
pongo price coma price por 2 a precio doble lo ejecuto y me devuelve el precio original y ahora me devuelve el precio
doble Por qué Porque primero le digo Che seleccion me el precio y después seleccion el precio multiplicalo por dos
y cambiar el nombre a precio doble esto en la tabla products entonces Prim devuel primero el precio que está acá y
después el precio doble que es igual a esta operación esto es bastante loco de hecho podemos solamente decirle price y
se ejecuta también pero es raro normalment tiene que haber un cambio para que tenga sentido esto no y ahí
está esto es una posibilidad no se me pongan locos no se me alteren Es simplemente una forma de asignar
diferentes valores a cosas que seleccionemos porque a veces no seleccionamos Campos seleccionamos otras
cosas Yo acá puedo decir por ejemplo zoom price precio doble o suma total suma de precios y esto me va a devolver
un solo un solo campo con la suma de todos los precios pero repito no son cosas que vamos a ver ahora lo vamos a
ir viendo durante el curso Okay y van a ir viendo la la utilidad de as con el tiempo solamente quiero que sepan que
pueden usar as para hacer referencia a una columna con otro nombre es decir le cambiamos el nombre a la columna En
otras palabras bien ahora tenemos un problema mayor Select from products Okay tenemos productos por ejemplo ya está el
problema de esto es que si yo por ejemplo digo Mira la verdad es que tengo una situación muy particular muy
peculiar Y es que quiero ordenarlos los productos quiero ordenarlos y no los quiero ordenar por el product ID porque
por defecto vienen ordenados por el product ID Por qué Porque es autoincrementable entonces cada registro
va a tener un ID diferente según se registró y parece que se ordenó por el producto ID pero en realidad es que
simplemente están como en orden de registro Esto está ordenado según lo fuimos registrando pero supongamos que
yo quiero seleccion ionar los que tengan menor precio al principio y los que tengan mayor precio después es decir
quiero seleccionar por precio de forma ascendente por ejemplo O sea que arranquen con poco y vayan mostrándome
después los que tengan más precio arranquen desde el que menos precio desde el que menos vale Hasta el que más
vale Y que me lo ordene por esto específicamente cómo lo puedo hacer bueno para eso usamos la cláusula order
byy vamos a venir abajo y usar order byy order by es una cláusula que nos permite utilizar diferentes filtros para ordenar
en este caso quiero ordenarlo por price Okay por price Pero si yo ahora le doy ejecutar lo que va a hacer es que
automáticamente se va a ordenar de forma ascendente es decir va a arrancar con algo que es lo mínimo y va a terminar
con algo que es el valor máximo nos va a mostrar el producto que menos vale que es J toost que no sé queé significará
pero es el nombre de un producto que de hecho el producto es el producto número 33 y tiene un precio de 2,5 estos pró
vale 2,5 es el producto que menos vale Y solamente de de esta forma agregándole esta simple cláusula acabamos de hacer
un filtro para seleccionar por precios de hecho esto es como decir as que es ascendente es lo mismo si yo ejecuto
Esto me tira el mismo resultado Solo que si se lo saco por suerte funciona igual no hay mucha diferencia en rendimiento o
por lo menos no hay diferencia en rendimiento acá porque ustedes tienen que entender que de nada sirve hacer el
sistema más escalable y mejor estructurado del universo si vamos a trabajar con tres datos locos y la
mejora en el rendimiento es de un 1% y ese 1% representa $1 en ahorro de recursos no vamos a pagar un
desarrollador para que me haga el mejor sistema del mundo que mejora Un 3% y que ese 3% sea $3 por mes estamos gastando
3000 por mes para mejorar un sistema que me genera $3 de ahorro en recursos es un ejemplo no después obviamente lo que
hacemos con esto es evaluar los planes y ver qué onda pero acá en este curso Vamos a aprender a optimizar las
consultas Sí Más adelante llegado a un punto en el que entendamos bien cómo funciona sql o gran parte de sql Vamos a
aprender a optimizarlo porque sí hay cosas que que consume muchos recursos qu podemos evitar no te estoy hablando de
hacer un porcentaje de mejora del 2% Aunque suma Porque si hacemos 10 mejoras del 2% terminamos mejorando un 20 pico
por pero hay cosas que cambian drásticamente el rendimiento O sea que lo cambian por mucho Entonces nada vamos
a ver de optimización yo particularmente bueno en este caso la voy a usar porque en algunos casos se considera una buena
práctica ya que es un código más legible y nada es como una cláusula que termina de cerrarnos El order by no es como no
es necesario casi para nada pero es una buena práctica así como el punto y coma por ejemplo en javascript okay A veces
lo que mejor rinde No necesariamente es lo mejor siempre Ahora qué pasa si nosotros quisiéramos por ejemplo
utilizarlo Porque si yo digo que esto es lo mismo que esto es porque este es el parámetro por defecto de esto pero qué
otros valores tiene O sea qué otros valores podemos cambiar Bueno si no es ask que significa ascendente es desk que
es descendente si yo ahora corro esta consulta ahora me lo devuelve al revés me los está ordenando de forma
descendiente me los está ordenando de forma descendente o sea el más alto al principio y el más bajo al final ahora
dice que el ahora fíjense que el primer resultado que me tira es coché de bl que no sé qué jora casera Pero vale 263 Y
tiene el product ID 38 Ahora qué pasa si yo por ejemplo en vez de ordenar por precio quiero ordenar por product name
si lo ejecuto cómo me lo está ordenando si no hay números Bueno lo que pasa es que ahora Estamos ordenando de forma
alfabética Cuál es la jerarquía de esto bueno por defecto Recuerden que esto es as Es decir de forma ascendente okay Y
esto funciona así vamos a ir a Paint nuevamente primero okay Lo que menos valor tiene son los nul Esto es lo que
menos vale cuando usamos order by algo de forma ascendente el valor más bajo es nul O sea que ahora nos muestra la a
pero si no nos mostraría un nul después le siguen los números o sea que si no hay nulos después vienen los números o
sea se ordena por los números de mayor a menor del 0 al 9 cuando termina el nu después arrancan los caracteres
especiales que son por ejemplo el punto la coma los acentos todo esto entra dentro de caracteres especiales y lo que
más vale lo que más rango tiene son simplemente las letras las letras son lo que más vale Qué significa que en orden
ascendente primero viene este después Este después Este y después este y en orden descendente es al revés primero
nos va a aparecer las letras después los caracteres especiales después los números y después los nul Ese es el
orden jerárquico Entonces en este caso se ordena desde la a hasta la z es bastante interesante esto es bastante
interesante porque estamos ordenándolos y entendiendo la jerarquía no Qué pasa si yo por ejemplo tengo un dato nulo y
se va a mostrar primero y si lo pones en descendente y tuvieras un nulo se mostraría al final primero se muestran
los nulos después se muestran los números después los caracteres especiales y después las letras comunes
y si lo ordenamos de forma descendente es al revés O sea primero las letras después los caracteres especiales
después los números y por último los nulos los nuls al final nada tienen que ir probando y con el tiempo van ir
agarrando la cancha pero ahora yo lo que voy a hacer es intentar buscar alguna tabla que tenga valores nulos así que
vamos a ir a browse Data pasearnos por acá hasta que encontremos algún valor nulo nada nada no hay valores nulos nada
no hay valores nulos nada Como no hay valores nulos los vamos a agregar nosotros estábamos en productos Vamos a
darle en insert a New record y se acaba de insertar este dato y me tiró datos nulos así que bueno vamos a chequearlo
venimos acá lo ejecutamos y primero se muestra nulo Por qué Porque está de forma ascendente lo que menos vale Hasta
lo que más vale Qué pasa si nosotros a nosotros no nos interesan los números los datos nulos no porque ya está ya
vimos que con ascendente nos lo muestra primero y con descendente con el desk nos lo muestra al final hasta acá ya
está pero qué pasa si yo quiero que igual en as me muestre los nuls al final porque yo quiero que me muestre los
números nulos al final porque tengo 200,000 datos nulos Y no quiero que me aparezcan al principio Bueno si agrega
el nuls Last esto le está diciendo a la a la es Es como una cláusula que le está diciendo Che Mira a ver todo muy lindo
que en orden ascendente los nulls valen menos y que los tengo que poner al principio pero quiero que los pongas al
final entonces ejecutamos la consulta y ahí desaparecen no lo que pasó fue que aparecieron al final Si queremos que
aparezcan al principio tenemos que poner nulls First y técnicamente poner esto y no ponerlo es lo mismo o sea el nuls
First lo tenemos que utilizar con desk Por qué Porque desk si le sacáramos el null First no nos mostraría los nulos
primero nos lo mostraría al final pero si se lo pusiéramos aparecen primero O sea nuls First básicamente es como para
usarlo con desk y nuls Last es para usarlos con ask ya que solamente lo que hacen es agarrar los nulos y ponerlos al
principio o ponerlos al final Eso es todo acá pueden pasar 1000 cosas pueden ordenarse de 1000 formas diferentes pero
los números los ponemos al principio O los ponemos al final esto no sirve incluso sin ordenarlo ya que si yo
sacara esto pongo Random tengo que ponerlo entre paréntesis porque es una función Random es una función por eso va
entre paréntesis yo lo ejecuto Perdón acá no tengo que poner product name order by Random es así es order by
Random ahora ejecuto y ahora sí me tira el resultado porque esto me está diciendo Che mira lo voy a ordenar de
forma aleatoria de hecho fíjense que acá No hay ningún tipo de orden si yo actualizo me cambia el orden de vuelta
actualizo me cambio el orden de vuelta y cada vez que actualice me lo va a cambiar por qué porque esto es
completamente aleatorio entonces me lo ordena como quiere est está bueno cuando queremos obtener eh datos que están
desordenados para después hacer cosas con eso y yo acá le puse nulls Last pero fíjense que no me está respetando la
cláusula de nulls Last O sea no me está poniendo los nulls al final lo que pasa es que Random no me lo va a permitir
porque Random es aleatorio Entonces por ahora si hay una forma pero no la vamos a ver ahora vamos a dejarlo así Random
nos ordena todo de forma aleatoria Okay es una buena función es interesante repito si hay una forma de usar nulls y
manejar los nuls con Random pero no quiero mezclarlos tanto es una boludez así que entiendan que está buena est
esta función Random que nos permite ordenar de forma aleatoria de hecho podemos ordenar por dos Campos esa es
otra función interesante yo puedo decir Bueno vamos a ordenarlo por product name acá lo ordeno y además por product o por
supplier ID Ahí va supplier ID Entonces yo lo actualizo y fíjense que me lo está ordenando por product name De hecho yo
AC voy a poner des descendiente pero yo voy a venir a brow Data y agregar algunos récord más 1 2s 3 acá a su
Player ID le voy a poner ocho a este le voy a poner un nueve un cu y a este le voy a poner un 14 vamos a ver qué pasa
si yo vengo acá y ejecuto la misma consulta Ah fíjense que primero me está ordenando
por product name ya está son todos nulos pero qué pasa hay Campos nulos pero a su vez de qué forma lo ordenamos porque
estamos ordenando pero son todos nulos no sabemos cuál poner primero y del mayor al menor porque le dijimos des si
yo le pasara ascendente me lo sía al revés 4 8 9 14 Entonces es como que podemos hacer una segunda forma de
pedirle que nos ordene todo no como hay cuatro nulos cuál me pone primero Bueno ahora que ya no sabemos de qué forma
ordenar porque los cuatro tienen el mismo campo ordenalos por este campo okay del menor al mayor también lo
podríamos ordenar por ejemplo por product ID entonces acá están los ordené y ahora va por producto ID 78 79 80 81
también puede ser de forma descendente 81 80 79 78 17 y de esta forma más o menos es como podemos ordenar los
productos podemos darle un doble filtro o sea es como ya está tengo los cuatro datos iguales ahora filtram elos por
otra cosa y es como podemos jugar un poco en esto los recomiendo que prueben que jueguen que ahora se pongan a hacer
consultas con la base de datos no actualicen datos no los modifiquen ni los eliminen porque vamos a trabajar
entonces Si ustedes lo hacen Eh después como que les va a afectar un poquito lo que hagan cuando están trabajando con
con este curso eh pero pueden jugar un poco hagan consultas Select y prueben seleccionar cosas eh ver qué es lo que
salta Los invito okay Los invito eh Porque es lo lo lo más práctico y lo más lindo así que vayan a hacerlo no es tan
lindo como tu hermana pero bueno tampoco se puede pedir mucho No tranqui ya sé que no tenés hermana pero des preocupate
no pasa nada si quieres te puedo hacer una mañana no hay problema después también podemos borrar eh la filas eh
duplicadas Es decir las que tengan el mismo campo Las podemos eliminar supónganse que yo quiero Eliminar todos
los duplicados de nulo no Cómo puedo hacer para eliminar los duplicados de nulo vamos a sacarle el order by si yo
quisiera por ejemplo seleccionar product name esto que está acá como se saben los últimos registros están nulos Pero si yo
le dijera distinct product name esta cláusula distinct se selecciona se escribe Perdón después del Select Por
qué Porque Che Mira seleccion los valores únicos de product name yo lo ejecuto bajo y me va a
devolver solamente un nulo Porque todos los que se repitan me los elimina me devolvió el que tiene nulo una sola vez
pero si yo acá le pongo order by product name as esto lo que va a hacer va a ser ordenarse de forma alfabética O sea que
el primer null es el primero que se encontró lo que estoy haciendo acá es Quiero un product name de cada cosa si
hay más de un product name resumil porque De qué me sirve saber que tengo un Alice muton un Alice muton un alis
muton no el producto es Alice muton si tenemos frutas tenemos bananas peras y uvas si después dice a ver qué frutas
tenemos tenemos banana pera uva banana no ya me dijiste banana no me lo digas de vuelta bueno para eso es esta
cláusula Y si además La queremos ordenar usamos esta función Si queremos descendente tenemos descendente Si
queremos Random la tenemos Random y de esta forma estamos mezclando la función Random incluso con order utilizando la
cláusula order by y así a su vez estamos mezclando distinct con order by Así que está bueno porque de esta forma estamos
como mezclando de a poquito todo lo que venimos aprendiendo ya supimos selec ionar una columna eliminando datos
duplicados Y encima ordenándoles de diferentes formas así que me pone contento esto la verdad que viene
avanzando bastante bien porque a ver sí podríamos seguir con esto de order by tenemos varias formas más tenemos por
ejemplo colate que para cuando trabajamos por ejemplo con datos de diferentes idiomas o alfabetos tenemos
offset y fetch para paginar los resultados tenemos using para utilizar una función de ordenamiento digamos y
Case para ordenar los resultados usando condiciones pero son cosas que por ahora no vamos a ver excepto eso último que
acabo de mencionar eso de condicion no el Case condiciones porque en sql obviamente al ser un lenguaje de
programación tenemos condiciones Si yo por ejemplo quisiera seleccionar vengo acá br Data quisiera seleccionar de la
tabla productos el nombre del producto que tenga el product ID 14 cómo lo puedo hacer o sea sí yo ahora viendolo sé que
es tofu pero si lo quisiera hacer automáticamente por exq Porque si yo acá tuviera un millón de registros no quiero
ir hasta Buscar el número un millón y bajar No no quiero buscar buscame el nombre del producto con ID
15,58 325 y que me lo muestra automáticamente cómo hacemos o para filtrar por nombre esto lo Puos hacer
con las condiciones Así que vamos a ver cómo son las condiciones que es uno de los apartados más importantes de sql
porque las usamos para todo incluso para eliminar está el hay un famoso meme de que si usamos el delate que es lo que
usamos antes delate from products si nosotros ejecutamos esto se borra todo todo y si no ponemos las condiciones que
la condición es el famoso we Okay se nos borra toda la base de datos completa La T en realidad toda la tabla completa y
está el meme no hay un montón de memes sobre eso Entonces hasta para eliminar productos tenemos que saber localizarlos
los localizamos con las condiciones Por qué Porque si yo quiero eliminar el producto que tiene ID 15 lo puedo
eliminar a ver el usuario se acaba de eliminar la cuenta nosotros no sé creamos un sistema y una red social y le
damos al usuario la opción de eliminar su cuenta cuando eliminamos su cuenta tenemos que eliminar sus datos bueno
elimina los datos del usuario 250,000 por ejemplo O al contrario quiere cambiar su nombre quiere hacer un cambio
de su nombre quiere ahora en vez de llamarse Lucas se llama Jaimito bueno cambiame el nombre a Jaimito en donde el
ID sea no sé 2500,000 entonces las condiciones nos permiten hacer Prácticamente todo Por eso tenemos que
verlas a continuación Así que vamos con condiciones bueno como verán antes de comenzar quiero decirles que cambié el
color de fondo porque yo normalmente lo que hago en mis cursos es quiero ambientar losos no el azul siempre es un
color básico con el que arrancamos después continúan los colores más eh digamos rojos cercanos al rojo en este
caso es Violeta Mientras más rojo sea el color más oscuro más Dark más complicado y más heavy se pone la cosa ahora
estamos en un nivel como intermedio entonces por eso tengo este Violeta porque es algo tranky pero ya es un poco
más avanzado que lo que vimos al principio Entonces nada como que para ambientar dije Bueno Este es el color
que para mí va Así que ahora con este contexto ya podemos avanzar con las condiciones acabo de volver eh pensé que
te habías dado cuenta cuando entré pero bueno evidentemente no creo que me voy a quedar un rato mientras das esta clase
no por favor después de que termines esta clase me voy tranqui o sea es solamente porque me interesa esta clase
es mi apartado preferido del curso hasta ahora por favor no me lo arruines es que que realmente me interesa esta parte o
sea No no es por Simplemente que me interesa Y sé que me sirve o sea incluso creo que hasta mis dudas pueden
aportar al curso okay Bueno pero solamente te pido un solo favor un solo favor no interrumpas A menos que tengas
una duda o algún comentario que aporte al curso Okay me quedo callado ni me vas a anotar bien bueno comienzo Entonces
espero que no me interrumpas obviamente yo me quedo callado Okay bien perfecto la capacidad de poder utilizar digamos
condiciones en consultas es vital porque esto nos ayuda a filtrar y encontrar datos específicos las condiciones en ese
al igual que en cualquier otro lenguaje de programación básicamente lo que hacen es verificar que una condición se cumpla
y en caso de que se cumpla y sea true va a pasar algo en los lenguajes de programación normalmente cuando una
condición se cumple ejecutamos un código en sql si una condición se cumple puede prnos por ejemplo unos resultados es
decir algo así como por ejemplo devolveme todos los campos en donde el nombre sea Lucas Entonces internamente
esto cómo funciona dice If nombre igual Lucas devolver resultado entonces va registro por registro Y en donde el
nombre sea igual Lucas te devuelve ese resultado como dije antes en ese HL manejar condiciones es algo
increíblemente fundamental Por qué bueno si yo por ejemplo te digo Mira Quiero que me devuelvas el nombre del usuario
que tiene el ID 7 por ejemplo lo que hace esta consulta es decir bueno a ver vamos a buscar el usuario con el id7
listo este usuario tiene un id7 Okay listo a ver el registro completo el nombre cómo se llama Lucas Ah okay listo
Entonces el usuario con id7 tiene el nombre Lucas y nos devuelve Lucas son importantísimas las consultas Pero cómo
puedo hacer esto en este caso Este ejemplo por ejemplo puntualmente cómo lo puedo hacer De qué forma puedo trabajar
con condiciones en sql Bueno la verdad que hay varias cláusulas y se puede trabajar bajar de varias formas Así que
vamos a comenzar se puede preguntar ahora No todavía no tengo que esperar mucho para poder preguntarte algo hasta
que se me cante Rey Háblame bien por favor Dale soy un alumno te voy a ignorar Fu a una charla hace poquito y
esta remera que ya saben que es la primera remera que lancé en la tienda de alto ya saben la tienda de alto es este
digamos esta tienda de de ropa de programador pero básicamente la voy a mejorar con el tiempo estoy invirtiendo
mucho y quiero que las cosas se de calidad tienen la mejor tela el mejor estampado quiero hacer las mejores cosas
no me voy a quedar con algo básico quiero hacer algo muy bueno Obviamente con esto lo ideal es avanzar a lo largo
del tiempo pero esta remera básicamente la estren okay Y observen esto porque esto es muy gracioso subí esta foto acá
donde estoy bueno Nada hablando parte de la charla todo est es la gente que vino al show todo y observen esto que lo
tengo mejor en mi historia que lo tiré miren [Música]
esto se desconocieron completamente o sea tiré una remera que es esta remera que está acá la tiré y se desconocieron
completamente sigen mirando mir se van a agarar las piñas observa como se van a agarrar las
piñas se agarraban a las piñas Pero saben queé es lo más groso ustedes pueden decir terminó retar Esto bueno si
vienen acá y observamos esto acá lo publiqué en mi Porque se ve más completa es sacaron una
fotito sea no les importó nada y agarraron y dijeron Bueno me saco se estaban a trompada hace un
ratito y después van y se sacar una foto son impr no puedo creer a propósito me dieron un premio Okay que no sé por qué
no lo traje y me olvidé de traerlo pero pero lo voy a poner allá atrás okay Así que en el próximo video del curso lo voy
a poner por ahí seguramente tengo que ver encontrar un lugarcito acá para la escena para Que aparezca Eh Así que lo
voy a poner pero es hermoso el premio es píso acá tengo una foto con el premio No creo que se vea Okay a ver si se enfoca
esto no creo que se vea realmente no creo que se vea pero este es el premio Ah Se lo voy a mostrar cuando venga la
próxima vez ya el próximo video se lo muestro pero es una locura Perdón perdón s que me voy mucho Perdón me estoy yendo
mucho de Mambo vamos a lo que nos compete condiciones en sql Ahora sí lo que pasa es que esto lo hago para que el
que está viendo medo que si se quiere y que se vaya No pero bueno se ve que no se va con nada mientras estoy hablando
el tipo sigue ahí observando todo lo que hago bueno ahora sí continuamos bueno Esto es lo último que tenemos okay Lo
que teníamos hace un tiempito vamos a borrarlo completamente la primer consulta es la famosa cláusula we que es
la condición más común de todo sql la cláusula en realidad para trabajar con condiciones cómo funciona Bueno vamos a
ir por ejemplo a products No yo decía bueno a ver quiero ver cómo Cuál es el nombre del product ID 14 no Entonces yo
vengo acá y digo bueno a ver Select product name from products y acá básicamente si ejecutamos esto no
devolver los nombres solo el nombre de los productos ya saben estamos seleccionando solamente el campo nombre
de producto de la tabla productos O sea que solamente este campo que es el product name es el que se va a
seleccionar listo acá lo tenemos perfecto pero ahora yo quiero obtener específicamente el ID repito podría
ponerlo acá pero voy a ir para abajo acá usamos la cláusula Where así se escribe Word y acá digo bueno a ver vamos a
obtener el campo product name es decir selecci solamente este campo de la tabla productos acá lo hizo pero ahora tenés
que seleccionar solamente los registros donde el product ID Okay sea igual a 14 Entonces ejecutamos esto y me dice apa
ya me devolvió el tofu Por qué Porque lo que le estoy pidiendo me lo está cumpliendo me está devolviendo el
product name que es el único campo que le pedí solamente le pedí el product name y me lo devolvió del registro en
donde el ID sea 14 y recuerden que no hay no puede haber dos registros con con el mismo ID es único entonces me
devuelve esto yo le digo el del 12 me devuelve este si yo le digo el del 16 me devuelve este y ahora yo puedo decir
otra cosa devuelvemelo todo completo a ver qué es lo que me devuelve y me devuelve todo el registro completo
Entonces vamos a ver todos los datos del tofu A ver vamos al tofu es el 14 el supplier ID es el 6 o sea vaya a saber
quién es el el proveedor número 6 la categoría 7 no sé de qué categoría es tofu pero vamos podemos verlo después Y
dice Bueno básicamente el precio es 23,25 por 40 a 100 gr más o menos está bien esto nos puede también servir para
un proceso inverso yo por ejemplo sé que el tofu se llama tofu inteligente no pero no sé cuál es
el ID y no me voy a poner a buscar uno por uno porque yo puedo venir acá y a ver dónde está el tofu Hay un montón de
productos pero no sé dónde puedo encontrar el tofu bueno ponemos acá y decimos Word product name sea igual a
tofu Entonces estamos buscándolo por nombre y acá me devolvió Exactamente lo mismo por qué Porque yo le estaba
pidiendo que me devuelva el registro en donde product name sea igual a tofu ahora supongamos que yo tengo Mira la
verdad que quiero comprar algo para comer pero no sé qué okay pero tengo unos 0 bueno mostrame todas las opciones
que valgan menos de 40 Y si las puedo comprar Bueno vamos a seleccionar de productos donde price sea menor que 40
porque tengo 40 entonces puede ser menor o igual en este caso esto significa menor o igual así es menor que así es
mayor que así es menor o igual que y así es mayor o igual que esto es fácil esto es como matemática que matemática básica
en este caso tiene que ser menor o igual a 40 le damos ejecutar y ahora nos está devolviendo todos los productos que
valgan menos de 40 acá podemos ver ven el precio y puede llegar a valer hasta 40 por eso el 40 nos lo devuelve a ver
si hay algún producto con 40 sí Este vale 40 acá pero más de 40 no y después nosotros decimos bueno a ver quiero que
me muestres los productos más caros que valgan más de 40 bueno tienen que valer más que 40 por qué Porque el precio
tiene que ser mayor que 40 ejecutamos y bueno ahora me está tirando esto todos los productos Okay que sean mayores a 40
el Word básicamente sirve para eso o sea así como con el Select seleccionamos lo que queremos O sea seleccion me Campos
qué Campos me queres seleccionar Bueno te quiero seleccionar el prod name el supplier ID Bueno ahora le digo selecci
todos todos los campos seleccion amelos todos quiero que quiero tener todos los campos con el Word le decimos Okay ahora
seleccionar registros pero cuáles Bueno solamente los registros que cumplan con esta condición el campo price tiene que
valer para cada registro más de 40 Estos son operadores de comparación Por qué Porque comparan valores por eso se
llaman operadores de comparación estamos comparando un valor con otro valor estamos comparando el precio con un
número porque price para cada vuelta va a ser igual a esto o sea esto internamente cómo funciona va registro
por registro y verifica que esta condición se cumpla entonces en el primer registro va a decir Okay a ver
cuánto vale 97 Entonces no lo devuelvo vamos con el siguiente cuánto vale 62 Entonces no lo devuelvo y cuando valga
menos de 40 lo devuelve no en este caso tiene que valer menos de 40 entonces si yo por ejemplo ejecuto este cuando
llegue el product ID 9 va a decir 97 esto que está acá no es menor que 40 por qué Porque 97 Es mayor que 40 entonces
no lo tengo que devolver porque esto es como si dijéramos 97 y y no me lo devuelve
62.5 no me lo devuelve 81 no me lo devuelve entonces tiene que ser el precio menor que 40 lo ejecutamos y ahí
podemos ver que antes el que era el ID 9 valía 90 y pico no lo devolvía Por qué Porque lo que hace es comprueba que cada
registro cumpla la condición el registro que coincida con eso lo devuelve así como también podría modificar los datos
yo por ejemplo esto lo voy a guardar pero voy a abrir la base de datos que teníamos antes Open database usuarios
Acá está brow Data tenemos esto usuarios y turnos médicos usuarios tiene seis registros turnos médicos tiene tres
registros supongamos que yo digo bueno a ver la verdad que este registro es falso Por qué Y porque no puede haber eh dos
registros Que tengan un horario a las 11:30 por la misma persona es solamente un turno Porque si yo Después te digo te
tengo que cobrar te tengo que cobrar dos turnos porque AC hay dos turnos Pero cómo si el esta persona vino una vez al
médico vino una sola vez y se registró dos veces Okay eliminemos el registro Cómo podemos eliminar específicamente
este registro bueno sabemos que es el id3 que qué hacemos entonces venimos y decimos Bueno delete okay from no hace
falta poner el asterisco porque el delete elimina todo delete from turnos médicos Okay Where ID en este caso comoo
era ID turno Okay ID turno sea igual a 3 Entonces si el ID turno es Exactamente igual a tres me va a eliminar el campo
de hecho primero vamos a seleccionarlo para que puedan ver la diferencia Select from turnos médicos ahí corremos y ahí
me lo seleccionó Okay acá est y ahora tengo la consulta anterior que la pego y acá lo lo ejecuto Entonces esto lo que
va a hacer es nos elimina el registro en el que esta condición sea verdadera Okay esta cumple no tiene ID un Entonces lo
va a saltar no va a hacer nada esta lo cumple no porque el ID turno es dos lo va a saltar no va a hacer nada esta lo
cumple sí porque la ID turno es tres ejecutamos Select from turnos médicos y acaba de desaparecer el turno que no nos
servía para nada y así podemos eliminar un registro específico con esto ahora supongamos que quisiéramos decir bueno a
ver la verdad que lo registré mal okay puse que el horario de este turno era las 11:30 pero en realidad no era las
11:30 me confundí era las 1030 o sea el doctor va a llegar a las 11 porque tiene que atenderlo media hora después y en
realidad debería llegar a las 10 porque el turno es a las 10:30 me confundí y puse 11:30 Cómo hago para cambiarlo
bueno usamos la consulta update recuerdan que les dije en el crud create read update delete bueno la Us de update
update esta no la vimos antes pero básicamente con update hicimos Bueno vamos a actualizar un una información
Okay qué tabla vamos a actualizar bueno actualizame la tabla turnos médicos quiero que me actualices la tabla turnos
médicos el campo horario set horario Y por qué lo querés modificar horario Bueno quiero hacer que el horario ahora
sea el eh las 10:30 okay Porque dice que son las 11:30 pero las 10 pero qué pasa si yo ejecuto Esto me va a cambiar todos
los horarios por qué Porque está cambiando el horario de todos los turnos porque está seleccionando todos qué toca
hacer entonces bueno tenemos que usar un Word Word vas a modificar solo los registros que cumplen esta condición el
ID del turno es igual a 2 Entonces ahora yo vengo acá actualizo esta consulta y vamos a verificarlo le damos en Select
turnos médicos vamos a poner un punto y coma y ahí nos muestra el horario de hecho como acá primero ejecutamos la
consulta y después mostramos la tabla acá yo puedo poner 12:30 ejecuto Y fíjate Hay cambio de vuelta pongo
eh 10:30 ejecuto y cambio de vuelta ahí volvió a ser 10 y Med además de cambiarle Okay vamos a tirarlo para
abajo esto así nos queda más ordenadito además de cambiarle el horario Quiero cambiar el motivo porque de repente el
paciente me dijo no Además no era por dolor de cabeza era por qué sé yo no sé dolor de muela Entonces el tipo va a
venir con todos los aparatos para analizarme la cabeza y en realidad tiene que venir con algo para arreglarme los
dientes por ejemplo no entonces coma motivo vamos a modificar también el motivo y el motivo a qué va a ser igual
y va a ser igual a dolor de muelas por ejemplo y ya está por qué Porque set nos pide las columnas y el nuevo valor
Entonces es columna nuevo valor coma columna nuevo valor y después no hace falta la coma porque la coma es para
separarlo esto nos quedaría así más o menos no ahí actualizame la tabla turnos médicos los campos que me vas a
actualizar son horario que va a ser 10 y3 motivo que va a ser dolor de muelas y solamente Este cambio va a ser aplicado
a los registros que tengan el ID de turno dos Cuál es el registro que cumple con esa condición el segundo entonces
actualizamos y Okay ahora me dice que es dolor de muelas ya está y se cambió y así podemos trabajar con la consulta
update para modificar los datos a lo largo del curso no vamos a trabajar con esta consultas con delate y con update
por ahora porque no queremos andar modificando datos Lo importante es que entiendan Cómo acceder a eso porque es
como modificamos todos los registros Entonces ahora que ya aprendimos el Word quería mostrarles Cómo cómo funcionaba
con el update y el Direct Así que volvemos a la base de datos de antes acá me la guardé acá norwind db Ahora sí
Bueno ahora sí hagan una pausa en el curso vayan ustedes a probar un poquito jueguen un poco con el Word a ver si
aprenden a seleccionar por varias formas jueguen con el we utilicen el we y muévanse un poco manipulen un poquito
ahí los datos y cuando lo hayan hecho vuelvan así continuamos con lo siguiente que son los diferentes operadores de
lógica o sea operadores lógicos no prueben Y si ya lo hicieron avanzamos con lo
siguiente sí tomo agua con gas y no no tengo 50 años cuál es el problema además de juzgarme porque me gusta la menta
granizada me van a juzgar porque tomo con gas soy friky tranqui tranqui queres un cachetazo se ponía rev violento bueno
Vamos a continuar lo que nos está llamando por ahí es el operador and or y el not vamos a sacar esto y vamos a
darle Select from products ejecutar y ahí tenemos esto para no quedarnos con la imagen de antes y ahora vamos a
arrancar a trabajar con otros datos Okay vamos a hacer otra cosa que es bonita A mí me gusta mucho vamos a poner un Where
y vamos a hacer una condición and and your nos sirve para aplicar varias condiciones O sea si ya entienden de
lógica sabrán que el and y el or sirven para decir que se cumpla este y este o sea cheis and cheis o para que se cumpla
este o este o sea t or t es decir condición un and condición dos condición un es la que pusimos antes que antes
poníamos por ejemplo product ID = 2 y acá puede ser condición dos por ejemplo qué s yo product name es igual a otra
cosa tienen que cumplirse dos condiciones Esa es la la la estructura del and no podemos poner varios s De
hecho podríamos poner tres pero vamos a ir de poquito okay vamos a arrancar con este básico Okay vamos a arrancar con
los ejemplos vieron que a veces cuando ustedes van y hacen una compra les dicen Oh has sido el comprador número 1 millón
has ganado un premio Bueno a mí particularmente nunca me pasó pero creo que entienden A dónde vamos no supongan
que ustedes le quieren dar un premio al usuario número 50 al 55 los usuarios que se registraron entre el 50 al 55 van a
ganar un premio o sea del 50 al 54 qué hacemos bueno primero seleccionamos todo de customers acá si yo lo corto esto
tengo esto tengo los clientes perfecto ahora Quiero obtener desde el cliente 50 hasta el 55 Cómo puedo hacer Bueno vamos
a usar el work con las condiciones vamos a hacer esto para poder manejar rangos Porque si solamente ponemos una
condición le podríamos decir a ver decime los clientes Que tengan un customer ID mayor a mayor o igual a 50
entonces acá me van a devolver los primeros No ya tenemos acá 50 51 52 53 54 estos son los cinco Acá hay cinco
registros que son los que se ganaron el premio pero me está abriendo un montón más yo tengo que decirles que tiene que
ser mayor a 50 mayor o igual a 50 pero menor que 5 55 porque el 55 ya no gana un premio y solamente con una condición
no lo puedo hacer tengo que decirle dos condiciones y ahí utilizamos el condición uno ya la aplicamos y ahora
vamos a aplicar la segunda condición customer ID tiene que ser menor que 55 ejecutamos y ahí nos devolvió los
registros que queríamos acabamos de utilizar la cláusula and para poner dos condiciones a a esta consulta y que nos
devuelva un Rango de registros esto es una forma muy útil y muy práctica para utilizar and después tenemos el operador
or el operador or lo que hace es toma una o toma otra si yo ejecuto esto or me va a tirar Cualquier cosa ahí la acabo
de ejecutar de vuelta no tiene sentido porque esto me va a devolver todo Okay primero fíjense Esto me devuelve primero
del registro 50 hasta el 91 y después del 1 hasta el 49 Por qué es esto porque lo que hace esto es bueno a ver primero
vamos a verificar que solamente los que sean mayores a 50 se cumplan Okay todos estos cumplen Esa condición hasta este y
si no la cumplen también lo vamos a mostrar pero tienen que ser menores a 55 y acá me muestra todos estos estos hasta
el 49 o sea es la cláusula más estúpida que podemos poner el or en Casos como estos Pero dónde nos puede servir bueno
supongamos que yo quiero seleccionar a dos empleadas no está la empleada eh Ann y la empleada Nancy por ejemplo no vamos
a ir a a empleados vamos a ir a cláusula empleadas employees y vamos a ver quiénes están acá Bueno yo sé que hay
dos empleadas que ganaron un premio no por ejemplo Ani y Nancy Entonces quiero seleccionar a ellas dos para que me
muestren todos sus datos Yo sé que una se llama Nancy y otra se llama an entonces las quiero seleccionar digo
bueno a ver normalmente la seleccionaríamos por el employe ID Pero sabemos que no tenemos empleados que se
repitan los nombres ya es un dato que lo tenemos de empresa no hay ningún nombre duplicado en Nuestra Empresa entonces
podemos Buscar a nany y podemos Buscar a an entonces decimos bueno a ver Where First name sea igual a Nancy y me va a
devolver Nancy Ah bueno pero yo tenía que seleccionar a dos Cómo hago que pongo esto y además pongo otra más o
cómo hago porque no no sé qué hacer no lo puedo hacer Bueno vamos a volver para atrás tenemos que seleccionar a Nancy o
a entonces ponemos esta consulta y ahora ponemos un or si esta condición no se cumple verifiquemos que se cumple esta
otra cuál bueno el fir name puede ser también an y cuando lo ejecutamos nos devuelve estas dos por qué Porque la
primer condición que puede cumplir es esta la cumplió listo ah no pero esta que está acá no la cumple no pero es o
esta o esta esta que está acá no cumple esta pero si cumple esta y el segundo registro no cumple esta pero sí cumple
Esta es decir con que cualquiera de las dos condiciones se cumpla o sea con que esta condición o que esta condición se
cumpla en la consulta me devuelve ese registro como Nancy cumplió una de las dos condiciones me lo devolvió como Ann
cumplió la Otra condición también me devolvió an si hubiera más registros que tenga alguna de estas dos condiciones me
devolverían más registros pero este es un caso como Okay no es como que seleccionemos así a los empleados de
nuestra compañía pero nada como que entiendan el uso aprendes un montón si pertas atención eh y justamente es lea
del curso aprender recontra coincido Pero tengo una duda Ojalá que sea algo útil a ver decime indagando un poquito
más en eso que estabas explicando me puse a pensar qué pasaría si [Música]
no sea se acuerdan que antes yo vimos la la función and and sirve para hacer que se cumplan dos condiciones y o más
incluso que todas las condiciones que estoy poniendo que se cumplan pero si alguna no se cumple Entonces no va Bueno
vamos a verificarlo supongan que yo voy a poner acá products no vamos a ir a productos selecciono los productos Tengo
estos Bueno vamos a hacer lo mismo que hicimos antes Where donde el price sea mayor a 20 Perdón menor a 20 vamos a
poner menor a 20 supongamos que queremos productos que valgan menos de $ Porque no tenemos $ para gastar en comida hoy
no tenemos Entonces vamos a decir que valga menos menos de 20 pero decimos Bueno la verdad que si hay algo que vale
más de 20 que puedo comer es lo que está en la categoría 8 porque la categoría 8 qué Yo no sé es vamos a ver de qué es la
categoría 8 la categoría 8o es de no la categoría 6 está la categoría 6 es de carne de ave y a nosotros nos encanta la
carne de ave entonces decimos Bueno mira a ver puede ser menor a $ pero si vale más de $ solamente que sea carne de ave
entonces decimos or categoría ID es igual a 6 Porque la que nos gusta es la carne DEA Entonces ejecutamos esto y nos
va a devolver todos estos porque tienen un valor menor a 20 ven no hay ninguno que se pase ninguno de estos se pasó Ah
no pará Acá hay uno $39 vale Ah pero tiene categoría id6 o sea es de carne de ave Sí está bien lo pago Ah Acá hay otro
de $13 no cumplió la condición Ah pero sí cumplió la otra que tieneen que ser de categoría id6 Ah entonces Está bien
entonces los únicos productos que valen más de 20 que me van a devolver son los que tengan la categoría id6 y si no
tiene la categorí id6 tiene que sí o sí valer menos de $20 y ahí con eso acabamos de verlo pero supongamos que
ahora decimos Bueno pero para a Además de eso and la condición que tiene que cumplirse sí o sí la que sí o sí se
tiene que cumplir Es que yo quiero que el su Player ID sea siete porque yo solamente Confío en el proveedor siete
no porque tengo 15 proveedores por ejemplo pero solamente sé que el siete me trae la mejor comida entonces yo te
compro algo que valga menos de 20 o de última si no vale menos de 20 que por lo menos sea de carne de ave pero la que
tiene que cumplir Sí o sí tiene que ser que el supplier ID sea siete Porque el único proveedor tuyo que confío es en el
siete ejecutamos esto Qué pasó ahí acá el supply 10 es un Qué pasó y lo que pasa es que se está ejecutando esto por
un lado y todo esto por el otro entonces las condiciones que se tienen que cumplir es que tenga la categoría seis y
además el supplyer id7 es o esto o todo esto junto me explico es se tiene que cumplir esta condición y si esta no se
cumple puede cumplirse estas juntas O sea que tenga el categoría id6 y que además sea su Player id7 Pero si yo
quisiera solamente unir estas dos Cómo hago Bueno un paréntesis con paréntesis agrupamos entonces de esta forma le
decimos Mira tiene que tener un precio mayor a 20 o categoría y6 o sea puede ser o esta o esta pero lo que tiene que
ser obligatorio el and es que sea del proveedor 7 sí o sí sin importar la comida que me des que sea del proveedor
7 ejecutamos y ahora solamente me devuelve las de proveedor 7 que valen menos de 20 o que son de categoría ID 6
en este caso esta vale menos de 20 sí tiene categoria id3 pero la que me cumple sí o sí es la del suppli ID 7 y
vale menos de 20 20 no me cumplió esta pero me cumplió esta yo le puse unor así que no hace falta que sean de categoría
166 mientras valga menos de 20 Ah pero esta vale 39 bueno no hace falta que valga menos de 20 mientras tenga
categoría id6 ven tiene categoría ID 6 y esta es 15 no tiene categoría ID 6 Pero vale menos de 20 entonces Está bien es o
esta condición o esta condición la que es obligatoria es esta que está acá y de esta forma podemos mezclar el or y el an
y ahí nuevamente Los invito a ustedes a jugar un poquito con las pruebas los errores poner on are or incluso háblenle
a chat gpt Díganle que les hagan un par de pruebas o jueguitos para que ustedes puedan moverse y entender un poco Cómo
funciona esto porque hasta que no lo lleven a la práctica no se entiende créanme Yo hasta que no lo llevé a la
práctica No lo entendí así que ustedes tienen que llevarlo a la práctica para entenderlo es como es humano el
aprendizaje es un proceso activo no pasivo ustedes no aprenden viendo aprenden haciendo así que todo lo que
vamos viendo hagan Okay hagan vamos a hacer algo más fácil okay supongamos Que yo tengo acá productos y ahora le voy a
decir Che Mira la verdad que quiero que me selecciones productos Don donde el precio sea mayor a 40 Esto me está
devolviendo todos los productos que el precio es mayor a 40 o sea tiene que valer más de 40 Sí o sí Si no no me lo
muestra ahora si yo quisiera lo contrario o sea negar esta condición que no me devuelva los productos donde el
precio sea mayor a 40 o sea si es mayor a 40 no me lo devuelvas Cómo hago Bueno le ponemos not not lo niega o sea hace
todo lo contrario lo ejecutamos y ahora nos devuelve los productos solamente que no cumple en esta condición o sea es
como un Contrera che No hagas esto lo hace el precio tiene que ser mayor a 40 okay not Cuánto tiene que valer algo más
que 40 not Che pero por favor mostrame los productos que valgan más de 40 not te muestra los que valen menos para eso
sirve la clusula not te niega una condición sea es como que te la está negando vos le decís esto no hace lo
contrario lo ideal es utilizarla para cosas útiles Porque si yo por ejemplo acá te digo esto esto que está acá es lo
mismo que decir fíjense eh esto y poner invertir esta condición para invertirla Recuerden que para invertir un mayor que
se utiliza un menor o igual a Entonces yo ahí fíjense que si lo ejecuto me da exactamente el mismo resultado me da 69
resultados y todos tienen la condición que le pedí y si lo hago al anterior de la forma anterior también me da 69
resultados y todos cumplen la condición o sea es lo mismo es exactamente lo mismo entonces es como medio estúpido
usar not cuando se puede abreviar y de esta forma es como que tengo lo mismo entonces es lo mismo pero más barato
incluso Así que es medio al pedo así que vamos a aplicarlo a un caso útil les parece supongamos que alguno de nuestros
clientes nos hackeo Okay vamos a ir a a customers Okay acá está seleccionamos todos los clientes acá nos aparece el
país qué pasa el cliente que nos hackeo provienen de Estados Unidos no sabemos que alguien de Estados Unidos nos hackeo
Entonces vamos a mandarle un mensaje a todos los clientes que no sean de Estados Unidos por qué Porque si de
Estados Unidos nos hacko Así que vamos a hacer un filtro por qué porque como no queremos que le llegue a nadie de
Estados Unidos vamos a sacarlos normalmente tendríamos que decir vamos a adonar los clientes donde country sea
igual a France or country sea igual a denmark or y así tuvieran tendríamos que poner todos los países que no son est
Unidos tendríamos que armar algo recontra grande con todos los países que no son Estados Unidos O sea tendríamos
que decir que el country puede ser Francia o que el country puede ser Dinamarca o que el country puede ser
México o que el country puede ser Brasil y así con todo se nos haría una condición relar una consulta rel larga
con muchas condiciones para eso simplemente usamos not not country igual usa entonces ejecutamos y fíjense en que
ahora nos devuelve todo menos usa vamos a chequearlo si antes ejecutamos esto el registro número 45 era de USA Bueno
ejecutamos vamos a ver el registro número 44 está el 46 no Por qué Porque ya no nos muestra los de USA ya no hay
más registros de gente de USA acá están todos los clientes que no son de Estados Unidos de esta forma podemos utilizarla
en este caso de una forma útil de una manera útil Por qué Porque no estamos haciendo algo irrelevante y que lo
podemos hacer de otra forma más fácil no Para qué complicarnos la tanto si lo hacemos más fácil bueno Esto no en este
caso Sí está bien usada y estamos aplicando correctamente la cláusula not para negar una condición si no
supiéramos Cómo usar esta cláusula tendríamos que poner muchísimos or que sería asqueroso con esto lo
simplificamos muy fácil Este es un buen caso de uso ahora también Podemos mezclarlas cómo hacemos para mezclarlas
con el and simple esto es una condición que puede ser una negación no entonces va como que todo dentro del mismo
paquete supongan que yo digo que los que nos hackearon son de Estados Unidos o de Francia no sabemos O sea no queremos que
le llegue a la gente de Estados Unidos ni tampoco queremos que le llegue a la gente de Francia Entonces vamos a decir
and not country igual France Qué estamos diciendo con esto bueno Mira la verdad que si el país es susa no me devuelvas
el registro Y si el país es Francia tampoco me devuelvo a haer registro Y si yo le doy ejecutar ahora además de dar
además de eliminarme los de Estados Unidos me elimina también los de Francia Por qué Porque tiene que cumplir estas
dos condiciones la condición tiene que ser que sea que no sea de USA Y además que no sea de Francia si yo acá le dira
un or qué pasaría y Francia está igual y usa también por qué ah no puede ser de USA Ah o sea que puede ser de Francia
para que el not funcione correctamente porque esto es una negación si no es de Estados Unidos lo devolvemos Ah o sea
que si me devolviste un registro que no es de Estados Unidos Ya pues pasar o sea que Francia acá cumple esta condición
Por qué Porque Francia no es de Estados Unidos entonces pasa con que se cumpla esta o esta ya es suficiente Si queremos
asegurarnos que no se cumpla ninguna de las dos va un andt okay A veces cuesta un poco entenderlo cuando utilizamos un
not Pero quizás si no lo entienden es porque están viéndolo como si el not no estuviera véanlo con el not Okay Francia
cumple esta condición por qué porque no tiene que ser usa y Recuerden que el or sirve para que se para que nos devuelva
un registro que cumpla con esta o con esta Y sí acá le estamos diciendo que no tiene que ser Francia o sea que si un
registro es Francia esta condición no la está cumpliendo porque sí es Francia Yo le pedí que no no sea Francia Bueno pero
or devuelve si se cumple una u otra esta no la cumple pero acá sí porque Francia no es Estados Unidos entonces me la
devuelve y me la deja pasar y es estúpida esta con una condición estúpida o es obsoleta Entonces le damos en and Y
ahí sí me devuelve resultados que no son ni de USA ni de Francia y así es como podemos utilizar el not y el and
combinados Incluso si se se les cuesta un poco pueden poner así y así incluso también Así es válido entonces
ejecutamos Y es lo mismo V no hay problema con esto mientras ustedes se sientan cómodos y a veces cuando tenemos
códigos muy largos es una buena forma legible no de ponerlo eh pero nada como ustedes mejor les parezca tengan en
cuenta que si nosotros hacemos dejamos un espacio y ejecutamos Okay tampoco pasa nadaa que ustedes lo pueden
inventar Pero esto no en todos los gestores es así hay gestores de base de datos que esto sí les tira error
Entonces nada entiendan que esto es simplemente para ustedes y en este caso para skite de hecho al final de este
curso vamos a ver algunas semejanzas y diferencias con otros gestores vamos a ver si todo lo que hicimos en este curso
se puede aplicar al 100% a otros y cuáles son las mínimas diferencias que tiene sqlite con otros gestores para que
cuando ustedes salgan del curso puedan trabajar con pogre con my sequel y demás Al mismo nivel que con sqlite O sea si
hay cosas que estamos enseñando que en otros gestores es un pelín distinta la vamos a enseñar Así que ustedes des
preocúpense de eso porque lo ideal es que salgan de acá entendiendo Cómo usar la mayoría no y no teniendo después
errores o problemas pero bueno nada eh Así es como mezclamos not y andt además podemos usarlo de una forma muy
ingeniosa se acuerdan que antes queríamos seleccionar al cliente que tenga el product ID el perdón el custom
ID mayor a mayor o igual a 50 and customer ID menor que 55 y eso lo que nos devolvía si se fijan era estos cinco
registros que eran los ganadores de la Prim estos registros ganaron un premio qué premio y ganaron un ganaron un
premio por estar entre el cliente 50 y 55 Ahora qué pasa si es un premio que por ejemplo no está disponible en
Germany cómo hacemos Germany es Alemania Lamentablemente llegamos a Bélgica a United Kingdom a Argentina a Canadá pero
no llegamos a Germany O sea a Alemania tenemos que excluirlo cómo usamos y un not ponemos así y abajo pongo and not
country ig Germany Entonces ejecuto esto y qué pasa Ya está cumple todas las condiciones Por qué Porque son registros
que tienen un customer ID mayor a 50 Sí todos estos son mayores a 50 Pero además tienen que ser menores a 55 sí son
menores a 55 y además el país No tiene que ser Germany y ahora sí no es Germany cuál es el problema que tengo cuatro
registros y los ganadores son cinco Qué puedo hacer ahora porque la verdad es que yo quería seleccionar a cinco
ganadores solamente cinco pero no tienen que serber de Germany qué hago hago así 56 Ah ahí va Pero qué pasaría si yo no
supiera que hay clientes de Germany porque yo técnicamente no debería saberlo Bueno a esto hay una solución
mucho más óptima que Andá haciendo esto Porque si de repente el cliente número 55 no es de Estados Unidos y también es
de Germany nosotros no lo sabemos tiene que sea automático no tenemos que andar cambiando 57 hasta encontrar al usuario
no lo que se hace acá es sacamos esta condición y decimos bueno a ver ya está acá tenemos cinco registros No ya está 1
2 3 4 5 no son de Germany no hay ninguno de Germany ya está las dos condiciones que tienen que cumplir tienen que ser
los cinco primeros registros a partir del 50 que no sean de Germany Pero cómo hacemos para hacer que solamente nos
salgan cinco Porque lo que queremos es un límite de cinco registros más de cinco registros no queremos para eso
usamos la cláusula limit limit c ejecutamos y ahí nos devuelve cinco registros y ya está esta es la forma
óptima de hacerlo Incluso si le decimos que además por ejemplo and not country es igual a UK porque tampoco permite
premios de United Kingdom entonces ahí está Ah pero escucha me olvidé perdoname tampoco puedes ser de Argentina okay
Bueno tampoco puede ser de Argentina no importa esto se adapta y siempre nos va tirando Ah Tampoco puede ser de México
bueno tampoco es de México y esto siempre se va a adaptar y siempre nos va a tirar los primeros cinco resultados
que cumplan estas condiciones Ah queres más condiciones no puede ser tampoco ni de USA ni de Francia por ejemplo France
listo siguen saliendo cinco registros y acá tenemos a los ganadores de los premios excluyendo todos estos países no
participan ni Alemania ni Reino Unido ni Argentina ni México ni Estados Unidos ni Francia y aún así tenemos cinco
ganadores porque acabamos de excluir a todos los países que no participan Esta es una buena forma de utilizar y aplicar
la cláusula limit 5 es muy útil es muy útil porque a veces decimos bueno a ver mostrame las primeras cinco
publicaciones de esto de allá de acá créanme que el límite es muy útil y nada ahora que la vimos es buena no es buena
porque nos permite poner un límite si hay 255,000 consultas y se hace muy grande
la consulta con limit decimos bueno a ver no quiero que me devuelva 50.000 resultados devuelveme los primeros cinco
los primeros 10 y yo con eso me conformo ya está así podemos aplicar and y not y encima la cláusula para limitar la
cantidad de resultados que queremos recibir ahora vamos a hacer otra cosa más piola supongamos que un cliente
viene a preguntarnos por nuestros productos listo hacemos un Select from products listo maestro toma acá tenés
todos los productos ahora no dice no Bueno pero la verdad que la carne de ave no me gusta Okay Bueno we not category
ID = 6 porque sabemos que la categoría 6 es de carne de ave entonces ahí le devolvemos todos los productos que
tenemos que no sean carne de ave ahí está la carne de ave ya no está dentro del menú que le ofrecemos a los usuario
y ahora nos dice a ver quiero que me muestres los productos de mayor calidad que tengas los que son de mala calidad
sácamelo y yo dalto sé que el proveedor uno que es exotic liquid lo tenemos por acá es este exotic liquid tiene el
supplier ID 1 este proveedor es malísimo no quiero mostrarle a mi cliente que me pide buenos productos algo que me traiga
este proveedor porque es malísimo Entonces qué hago Bueno vamos a excluirlo and not supplier ID 1 porque
este proveedor me trae más los productos Entonces ya está ahora no nos muestra ni los productos que sean de carne de ave
ni los que nos traiga el proveedor uno ya está pero ahora el cliente se pone medio pesado y nos dice y además tengo
Solamente $0 para gastar Okay and price tiene que ser mayor a Perdón menor a 30 menor o igual a 30 porque tiene $3 si
algo está de 30 puede gastarlos Ahí va Nos devuelve solo los productos que valen menos de $30 listo estás conforme
cliente y de repente la basura nos dice Ah bueno pero son muchas opciones mostrame tres opciones a ver si si elijo
más rápido bueno le mostré amos tres opciones limit 3 Ahí está estás feliz maestro estas tres opciones y las ve
dice no me gusta ninguna actualizame Ah pero son las mismas opciones actualizame Ah pero qué pasa son siempre las mismas
tres entonces la basura de nuestro cliente quiere que le salgan tres resultados aleatorios okay Para que él
pueda elegir más rápido No porque conocen la ley la ley de hic dice que mientras más opciones tenemos para
decidir menos tardamos eso lo expliqué en un video de uxu que dice de leyes de diseño de interfaces y experiencia de
usuario si vamos a un kosco Y tenemos muchas eh cosas para elegir nos cuesta elegir pero si tenemos un chocolate y un
caramelo elegimos o el chocolate o es más rápido es más fácil elegir pero si tenemos 20 chocolates diferentes
tardamos más en elegir Esto es lo mismo este cliente tiene 300 opciones pero no dice quiero que me des tres nada más
porque quiero elegir más rápido no quiero andar eligiendo entre miles de opciones Dame tres opciones así yo las
veo más o menos y elijo más rápido así que bueno le mostramos tres opciones pero son siempre las mismas tres cómo
hacemos que sea aleatorio bueno Vamos a darle order by Random y de esta forma actualizamos esta consulta y ahí me
saltan tres opciones random que no son del proveedor uno exotic liquid que es una bosta que no son carne de ave y que
vale menos de $ y están ordenadas de forma aleatoria y nos devuelve solamente tres y cada vez que actualizamos nos van
a saltar siempre resultados que son diferentes ven siempre resultados diferentes para que el cliente pueda ver
y elegir te gusta esto o esto esto Ah Dame este Listo Ya está te fue le vendimos se fue a la bosta no lo vimos
nunca más ese cliente que insoportable objetivo cumplido No sé si se dan cuenta pero vieron que yo les
dije que durante el curso íbamos estar haciendo ejercicios bueno los ejercicios en sql son tan fáciles como ir
haciéndolos acá porque tenemos una base de datos gigantesca Y mientras les enseño Vamos haciendo ejercicios estos
son los ejercicios que yo les dije que íbamos a hacer para reforzar su su capacidad de aprendizaje estos
ejercicios que estamos haciendo ahora prácticos nos sumen un montón les aseguro que este ejercicio que acabaron
de ver les abrió también la cabeza y dijeron Ah y se sienten que saben no mean que no es una sensación linda saber
que aprendemos saber que sabemos algo y me pone contento que sientan ese sensación que yo sentía alguna vez y de
hecho la siento siempre porque yo aprendo cosas todo el tiempo nunca tenemos que dejar de aprender más que
nada porque nos quedamos obs leto si no y siento que aprender cosas nuevas es tan lindo y estos ejercicios er una
forma que vengo haciendo durante todo el curso que venimos haciendo ejercicio tras ejercicios ejercicio que nos ayuda
un montón a entender Pero bueno basta de hablar vamos con lo siguiente Porque todavía nos queda mucho que aprender
pero tengan en cuenta que a veces esto les puede fallar Okay antes de avanzar quiero decirles que esto les puede
fallar en algunos casos el primer caso en el que esto les puede tirar un error es en el sintaxis incorrecta si ustedes
no escriben las cosas correctamente puede lanzarles un error Así que atentos a eso si a ustedes les dan un resultado
que no es el que ustedes están esperando es porque no hay nada incorrecto O sea la sintaxis es correcta pero est
utilizando mal las herramientas hay un operador que no está donde debería estar o la lógica le están manejando mal si
ustedes hay algo que no coincide no pero cómo cómo me está devolviendo estos resultados si le pedí esto okay No te
está devolviendo lo que vos le pedís porque esto no falla fíjate bien porque hay algo que estás haciendo mal otro
error muy común es confundir el or con el and fíjense bien Cuándo utilizar el or y cuandoo el and porque a veces Puede
que no nos termine de cerrar pero si a veces hay algo que no le sale y les cuesta y no les da como quieren revisen
si es el or si es el and o si es el not porque a veces mezclando estos tres pueden surgir inconvenientes no entonces
Les recomiendo revisarlo si algo sale mal si a veces tienen registros que están incluidos que tampoco son los
correctos fíjense Porque pueden también estar utilizando not de forma incorrecta cuando a veces utilizamos el operador
not de forma incorrecta puede incluir registros Okay que no son los que deberían estar ahí entonces fíjense bien
cómo lo utilizan lo mismo al revés una condición incorrecta si tienen condiciones que no son correctas pueden
hacer que no les devuelva consultas que les deberían devolver Entonces siempre revisen bien la lógica de lo que están
haciendo y bueno nada después Además de todos estos tenemos operadores como like between y un par de operadores más que
lo vamos a ver ahora okay Porque nos falta mucho por aprender Así que vamos con esos operadores que la verdad que
estoy emocionadísimo y estoy básicamente orgasme para que podamos ir con eso porque yo quiero que avancemos porque
hasta ahora aprendimos un montón fíjense si les hubiéramos al principio del curso no sé si lo hubieran entendido pero
ahora no solamente que lo entiendan sino que además lo saben hacer ustedes y lo pueden llevar a la práctica y ya pueden
trabajar con sql de una forma mucho más práctica pero todavía le falta bastante por aprender sé que vamos bastante en el
curso o sea sí venimos bastante bien en el curso vamos bastante adelantados pero esto es como lineal o casi exponencial
lo que van aprendiendo cada vez es mejor y es nos permite hacer más cosas y potencia lo anterior O sea fíjense que
si aprendimos a usar el Word potenciamos todo lo anterior aprendimos a usar el and potenciamos todo lo anterior
aprendimos el not mezclar las cláusulas y el limit y potenciamos todo lo anterior nos falta mucho todavía nos
falta mucho así que sigamos aprendiendo que estoy emocionado por seguir con qué vamos Bueno vamos con la siguiente
cláusula para seguir trabajando con condiciones te faltó algo mi querido adto hay un
operador que funciona Exactamente igual que not Y es más común que not no existe un operador que sea Exactamente igual a
not estás muy seguro de lo que estás diciendo s a qué operador te referís pero no es como estás diciendo
lamentablemente no creo que te estés refiriendo al que yo me estoy refiriendo ya que al que yo me estoy refiriendo es
al operador del signo de exclamación y el igual estás hablando de un operador de comparación que llamamos distinto d y
no se usa para Exactamente lo mismo que di una tontería no lo insin dijiste una boluda y si me lo permitiste lo explico
ahora genial Bueno me quedo acá escucharte siempre se aprende algo nuevo Me parece perfecto de hecho Gracias por
mencionarlo ya que justo ese era el operador del que teníamos que hablar ahora en este apartado del curso Bueno
ahora vamos a ver un operador bastante distinto que es distinto de un poco Ju de palabra no bueno primero vamos a
borrar todo lo que ya teníamos en el curso Ahí está en el curso acá en la consola bien
como ya tenemos a nuestro querido amigo infumable podemos realizar cualquier consulta Como por ejemplo Select from
customers Y si yo selecciono not country usa esto claramente acá Me faltó el we Word Ahí va esto claramente me va a
devolver todos los clientes que no son de USA pero como ya vimos si yo le digo así Este es el operador de distinto d
básicamente un signito de exclamación cerrándose y un igual le doy ejecutar y me devuelve lo mismo o sea no hay
cambios es exactamente lo mismo Entonces cuál es la diferencia porque le dije este salame que no eran exactamente
iguales Así que hay un motivo bueno creo que la respuesta está jugando un poquito con lo que veníamos hablando y si se dan
cuenta en los diálogos y en el curso ya se mencionó esto la diferencia es que al igual que or y and not es un operador
lógico mientras que distinto d quiero aclarar que cuando digo distinto d me refiero a este operador Okay entonces
como not es un operador lógico igual que or y and distinto de es un operador de comparación es decir se usa para
comparar valores vamos a hacer esta tablita ya que estamos Ah una cosa que quiero aclarar que mientras estaba
editando el video porque yo lo que hago es grabo edito cuenta que nunca lo dije así que creo que es un buen momento para
decirlo si vieron que al principio del curso hice un diagrama con la anotación de Chen y después cuando expliqué
diagramas lo hice con esto es porque es más o menos lo mismo solamente que esta es una forma moderna de trabajar con el
diagrama de Chen Solo que no es diagrama de Chen es simplemente un diagrama entidad relación okay solo que no
estamos utilizando la anotación de Chen estamos utilizando un enfoque un poco más moderno es igual cuando lleguemos un
poquito más al final del curso lo vamos a ver pero nada no está mal mencionarlo no porque por ahí dijeron pero cómo me
me mostraste el diagrama pero son diferentes formas Aunque hablas de lo mismo y bueno porque uno usa la
anotación de Chen y otro usa un enfoque un poco más moderno que es el que Bueno estamos viendo y que vimos hasta ahí No
Entonces nada para aclararlo por las dudas porque nunca lo mencioné y no está demás mencionarlo Por qué entro a Paint
bien entro a Paint porque me vine a poner una imagen porque vieron como yo siempre dibujo bueno esta vez dije no
voy a dibujar la verdad que no tengo ganas de dibujar Así que para no andar dibujando me armé en mi casa esta imagen
que no pueden negar que es una linda imagen como tu hermana bueno la diferencia entre un operador de
comparación y un operador booleano Yo sé que digo boano pero es bulano pero nada soy medio medio analfabeto para el
inglés Así que ignórenme pero se dice bulano la diferencia entre un un operador bullano y un operador de
comparación es la siguiente primero operador booleano es el operador lógico Okay a los operadores lógicos también se
les dice operador bullano de hecho a los operadores booleanos se les dice operadores lógicos porque el nombre más
que operador Lógico es operador boano porque operan valores booleanos los valores booleanos pueden tomar solamente
dos valores en este caso es true o false eso es programación básica lo sabemos siempre true es verdadero false es falso
representa la dualidad entonces volvamos a los operadores de comparación los operadores de comparación como están
viendo lo que hacen es tomar el valor uno y con un operador lo comparan con el valor dos es decir la estructura es
valor uno operador valor dos por ejemplo Select from products Where y acá viene la el el operador price mayor o igual a
10 Ahora si bien acá tenemos la operación en realidad lo que pasa es que lo que estamos haciendo es comparar
valor uno con valor dos y esto nos puede devolver dos cosas o true o false nunca se preguntaron por qué las
condiciones funcionan bueno el Word básicamente lo que hace es nos devuelve un registro si al pasarle este proceso
es decir imaginen que price en cada vuelta de cada registro que va intentando analizar la condición va a
ser igual a un valor esto funciona como si fuera un bucle Okay para verificar que todos los registros cumplan esta
condición porque digamos we funciona así si yo le digo devuelveme los productos que valen más de $ para que solo me
devuelva productos con más de $ tiene que pasar por todos los registros y va descartando los que se dan cuenta que
vale más de $ es decir en este caso nos devuelve los que son mayores a 10 Así que En definitiva descarta los otros o
sea básicamente analiza todos los registros y los que no cumplen la condición Simplemente no los devuelve
pero no es que no llega a tocarlos sí llega a esos registros y los descarta Pero cómo los descarta bueno el valor de
Price es igual al valor de campo price en ese registro o sea cuando vamos al primer registro price va a ser igual a
lo que tenga en el campo si el campo de Price dice 30 lo descarta si el campo de Price dice 40 lo descarta Por qué Porque
price va a ser igual a cada valor en cada registro Entonces si la condición se cumple es decir si es true va a
devolvernos algo y si es false Es decir si la condición no se cumple no nos devuelve ese registro y va a comprobar
que el siguiente registro cumpla la condición para ver si lo devuelve o no es decir va registro por registro para
ver cuál nos devuelve y cuál no Y la forma para determinar si lo va a devolver es que esta condición tiene que
ser verdadera si esto es verdadero nos lo devuelve y ahí estamos trabajando con valores anos Entonces cuando usamos un
operador de comparación lo que nos devuelve es o true o false si el resultado es true el Word nos devuelve
el registro si el resultado es false el Word no nos devuelve el registro si vieron el curso de python que ojalá que
vengan del curso de python esto está muy claro o sea en el curso de python esto lo explicamos muy claro pasa con las
condiciones Si ustedes llegaron hastar el apartado de condicionales esto que está acá funciona Exactamente igual es
así es muy simple esta explicación pero si no igual tranqui porque lo intentamos explicar con tiempo y con tranquilidad
hasta que estamos bien no los operadores de comparación comparan dos valores y nos devuelven verdadero o falso si la
comparación es verdadera es true si la comparación es falsa es false por qué Porque si la primer condición dice
precio Es mayor que 20 y el precio es 2 no es mayor que 20 no se cumple la condición Entonces es false y si es
false no devuelve el registro si precio es 30 30 Es mayor que 10 Entonces si se cumple el regist la condición entonces
devuelve el registro ya está O sea que si es true lo devuelve si es false no lo devuelve tenemos que entender que
internamente esta condición es como si después se convirtiera en true o en false o depende el resultado final no
ahora los operadores lógicos operan directamente con los valores bolean o sea un los operadores de comparación nos
dan valores booleanos y los operadores lógicos operan directamente con valores banos es decir el and funciona con valor
uno and valor dos es decir se tiene que cumplir la condición 1 y se tiene que cumplir la condición dos o sea si valor
uno es true y valor dos también es true nos va a devolver true si cualquiera de los dos o los dos son falsos nos va a
devolver false porque eso sean dice Che A ver es rubia y es mayor a 18 Okay la dejo pasar a bolich así piensan algunos
patoa si cumple las dos condiciones va si es rubia es mayor a 18 la dejo pasar a bolich sin pagar ahora es mayor a 18
sí es rubia no no la dejó pasar a bolich porque para pasar a bolich tiene que ser rubia y mayor a 18 tiene que cumplir las
dos condiciones Si no es rubia ni es mayor a 18 ni hablar así funciona ya ya lo vimos ya lo entendimos eso Entonces
esto tiene que ser true porque la comparación de después se convierte en boano como ya les dije internamente
cuando nosotros ejecutamos un operador de comparación es como si todo el Tex toda la todo el código después se
convirtiera en true o false porque eso es lo que nos devuelve price mayor a 10 para cada vuelta del registro se va a
convertir en true o en false dependiendo de lo que valga price en el momento del registro Si estamos en el registro 4atro
y en el registro cuatro price es 5 este price va a ser cinco Si estamos en el registro si y price es 30 este price va
a ser 30 y cuando se haga la comparación esto se va a convertir en true o en false y esos valores son los que
operamos acá por eso nosotros decimos cuando operamos con and por ejemplo Select from usuarios or price mayor a 10
and supplier o sea proveedores es igual a dos Entonces esta consulta dice el precio es mayor a 10 y el proveedor es
dos si estas dos condiciones se cumplen nos devuelve el registro porque estamos operando con valor boano y valor boano
or es lo mismo si se cumple esta condición o esta condición o sea si esta es true o Esta es true te devolvemos
true si las dos son falsas te devolvemos false Y si las dos son true te devolvemos true acá tenemos un ejemplo
de consulta seleccionar todo de la tabla usuarios donde valor boano 1 or valor boano 2 y acá está not not funciona así
not funciona con valores banos en este caso es not true nos devuelve false not false nos devuelve true quiero
mostrarles algo si venimos acá y yo acá pongo were not true esto nos devuelve false y Yo acá pongo not false esto nos
devuelve true Por qué Porque no hay condición en todos los registros Esto va a ser verdadero es decir fíjense que si
yo pongo not false nos va a devolver todo vamos a checarlo una vez más Si yo pongo false and false nos devuelve nada
si yo pongo false and true tampoco nos devuelve nada Y si yo pongo true and true ahí sí me está devolviendo todo
porque para que esta condición corra ambas tienen que ser verdaderas si yo acá pongo true or true nos lo devuelve
si yo pongo false or true nos lo devuelve para que or no nos devuelva ningún registro tiene que ser false y
false ambas falsas entonces not es lo mismo si yo le doy not false significa que es true porque no es falso o sea
está negando que es falso y si estamos negando que es falso es verdadero y si esto es así esto funciona true nos
devuelve todos los registros false no nos devuelve ninguno s que esto es mucho para procesar Pero esto es un curso sql
en donde yo quiero que entiendan todo porque si no entienden estas cosas después realmente eso esto no lo explica
ningún curso ningún curso en YouTube explica estas cosas y entiendan que no lo abandonen por la paja porque sé que
es complicado lo acepto sé que acepto que es complicado pero si ustedes abandonan el curso por estas cosas no
van a llegar a ser profesionales porque esto no se explica en ningún lado y Y si entienden las bases de esto ustedes
pueden hacer muchas cosas el día de mañana porque van a entender Con qué están trabajando y las bases
fundamentales del código que están manejando entonces repasen este apartado porque sí que es complicado repasen y
una vez que lo hayan repasado es decir vuelvan al principio de este de este fragmento y cuando lleguen a este punto
de vuelta Ya están listos para continuar y si lo entendieron de una los felicito porque son parte del grupo de personas
que lo entendió a la primera felicidades ahora sí avanzamos como les comentaba los operadores de comparación comparan
cualquier valor puede ser un bolean un número un texto con cualquier otro valor un número un blean o un texto Si
nosotros hacemos como hicimos antes y es seleccionamos por ejemplo from customers Where country diferente de USA esto nos
va a devolver lo mismo todo donde el país no sea usa por qué Porque está comparando que el valor no sea usa Y si
esta condición se cumple O sea si esto nos devuelve true nos va a devolver los registros Entonces cuando vaya y diga a
ver el registro uno country va a ser igual a Germany Entonces esto es así esto es Germany Germany es diferente de
USA sí Entonces lo devuelve después va a ser México México México es diferente de USA sí Entonces lo devuelve Y esto es
igual con not si yo digo not country ig usa esto es como si yo dijera not Germany igual usa esto es verdad sí por
qué Porque not lo niega bueno acabo de borrar para dar una repasada pero En definitiva tienen que entender que son
operadores que funcionan parecido pero que no son lo mismo porque uno es un operador de comparación y otro es un
operador buano es decir era la misma si decí eso porque en realidad no entendiste nada no maestro Sí lo
entiendo el tema es que cuando lo llevamos a la práctica No deja dec algo interno y casi sin porque cuando los
utilizamos ambos nos dan el mismo resultado no déjame explicarlo mejor ahora sí explicada la diferencia entre
estos operadores que si bien es mínima yo digo no es Exactamente igual Es decir sí es muy parecido el uso pero no es
Exactamente igual porque a pesar de que nos den resultados exactamente iguales el funcionamiento es distinto 2 * 2 es 4
y 2 + 2 También es 4 pero no podemos decir que 2 * 2 funciona Exactamente igual a 2 + 2 porque aunque tengamos el
mismo resultado el funcionamiento es diferente multiplicar no es sumar Aunque en este caso sea el mismo resultado es
una comparación medio tonta teniendo en cuenta que la multiplicación sí genera resultados diferentes en algunos casos
pero quiero que entiendan que no es lo mismo un operador que otro solamente por haber llegado al mismo resultado sino
que el funcionamiento interno es bastante diferente de hecho fue a propósito el hecho de explicarles
primero el not y después Este operador para que primero entiendan el not después entiendan este operador y
después entiendan Cuáles son las diferencias a nivel interno Y si ustedes llegaron al punto de aprender sql hasta
el punto de poder entender la diferencia entre dos operadores que funcionan y nos dan los mismos resultados pero entender
cómo funcionan de forma interna y hasta la estructura del lenguaje podemos decir que ya estamos en una etapa un pelín más
avanzada Así que lo que voy a hacer para el próximo nivel es cambiar un poco la luz porque siento que lo merece merece
estar con la luz Un poquito más arriba de hecho no lo notaron muchachos pero acá está el premio dice premio
revelación per Bueno lo dejo acá donde estaba ahí va Perfecto Bueno gente Ahora sí vamos con el siguiente operador que
es el operador bwin que Estoy ansioso porque lo aprendamos a utilizar de hecho vamos a ver varios operadores más vamos
a ver between like y un par más así que vamos con esos apares que ya Oh me encanta porque estamos llegando un
apartado del curso que nos acercamos a la recta final porque todos los cursos se mueren en los joints nosotros no
vamos a morir Ahí vamos a ir más lejos porque quiero que aprendan en serio Ese es mi objetivo que salgan de acá
Sabiendo realmente ese ql y lo mejor de este curso es que si algo no se entiende o algo no se termina no les termina de
cerrar terminan entendiendo lo que antes no entendían por ejercicio que hacemos en un futuro eso es magnífico porque
siempre se repasan cosas de temas anteriores para temas nuevos Entonces es como es muy bueno así que bueno paro de
hablar vamos de lleno con el siguiente operador que es bwin bien Ahora nos toca trabajar con el
siguiente operador que es el operador bwin por otro lado Me gusta el cambio de iluminación siento que es un cambio
fuerte de iluminación porque tira más al lado hardcord okay Todavía no es un rojo es decir no estamos en el nivel de
llegar a un rojo todavía pero estamos en un casi rojo y eso para mí ya da para pensar Okay hay que concentrarse
enfocarse y si lo de antes les pareció suave ahora arranca un poquito más heavy no por bwin como tal porque bwin like y
los próximos operadores que vamos a ver van a ser bastante sencillos pero es una forma de decirles se viene el rojo Okay
es decir se viene lo complicado pero no se olviden nunca de que no existen cosas complicadas de aprender sino que existen
cosas donde necesitamos haber tenido mejores bases para alcanzar ese Conocimiento es decir no puedo aprender
potenciación si no sé sumar pero una vez que sabemos sumar y multiplicar potenciar es bastante simple una vez que
sabemos todo lo que ya vimos en sql bwin es bastante simple porque tenemos la bases sólidas y tenemos las bases
fuertes y si lo que vamos a hacer a no les cuesta es porque simplemente tienen unas buenas bases ya que este curso está
hecho para eso así que siéntanse contentos Pero eso no significa que no estemos cerca de la parte más Hardcore
que es el apartado de los joins las subconsultas y todo ese mundillo así que bueno ahora sí de una vez por todas
vamos con otro operador que nos va a hacer la vida más fácil que es el operador bwin es un operador de
comparación que se utiliza para seleccionar valores en un Rango específico puede ser utilizado con
cualquier tipo de dato numérico texto siempre y cuando sea compatible con el operador seleccionamos todo todo de la
tabla productos dónde productos productos dónde voy a decirle que quiero seleccionar productos que estén en un
Rango de precio determinado por ejemplo que valgan entre 20 y 40 si ven más de 40 No si valen menos de 20 tampoco es un
Rango bueno normalmente lo que habríamos hecho una otra situación habría sido World price mayor a 20 and price menor a
40 bueno se acuerdan que les comenté que esta es una forma de trabajar con rangos el and Bueno hay una forma mejor que es
between en este caso es price lo mantenemos y decimos between 20 and 40 es decir le estamos diciendo que va a
estar entre 20 y 40 los precios ejecutamos esta consulta y acá nos devuelve todos los productos donde el
rango de precios es entre 20 y 40 obviamente Bin tiene muchos más usos no solamente es entre rangos numéricos de
hecho casi el consumo Es el mismo con and que con bwin Así que tiene otros usos que son mejores incluso de hecho lo
podemos usar también con and si yo acá por ejemplo digo and category ID igual se creo que esto era carne de ave no
bueno Esto se ejecuta Qué hace tiene que valer entre 20 y 40 y además tiene que ser del categor ID 6 es decir tiene que
ser de carne de ave o sea esto corre por un lado y esto okay corre por el otro lo mismo con unor puede ser o una o la otra
con que cumpla cualquiera de los dos ya está bien entonces si vemos productos que por ejemplo valen 123 decimos cómo
puede ser si le dijimos que esté entre 20 y 40 y porque usamos un puede valer entre 20 y 40 o puede ser de categoría 6
cualquiera de las dos condiciones está bien Lo mismo con la cláusula not si yo acá pongo not between 20 an 40 esto lo
que hace es devolverme todos los registros que no tengan un precio entre 20 y 40 Es decir me devuelve todos el
not between es igual que el operador por defecto si yo hago esto esto funciona igual okay Porque la gracia de not es
que not puede negar esto que está acá que se va a convertir en un valor boano es decir al ser un operador de
comparación recuerden que todo esto cuando se pase por cada registro va a ser igual a true o va a ser igual a
false entonces para el registro en el que esto sea igual a true nos lo devuelve para el registro en el que esto
sea igual a false no lo devuelve esto ya lo vimos Okay es decir para cada registro depende de la condición este
esto se va a convertir en digamos un valor diferente entonces podemos decir not o directamente lo podemos decir acá
pero esto ya es otro operador tenemos el operador between y el operador not between pero es lo mismo o sea es
exactamente lo mismo que poner esto acá solamente que esto se llama operador not betn y esto simplemente es un bwin
acompañado con un not si yo le digo a alguien haceme un not betn técnicamente me hace esto okay esto sin este not pero
técnicamente yo le digo haceme una negación del bwin me hace esto que es como algo diferente que en realidad a la
hora de trabajar en la vida real ni se habla de estas cosas es como es lo mismo o sea no importa si es not price between
o price not between es lo mismo en realidad pero que sepan que están las dos posibilidades between solamente no
sirve para seleccionar Rango de de números porque si no sería muy estúpido también nos sirve para seleccionar
fechas si yo por ejemplo vengo a brow Data vamos a buscar algún campo en el que haya fechas acá tenemos Okay bir
date es un digamos campo que tiene formato fecha año mes día si nosotros quisiéramos buscar entre nuestros
empleados employees yo esto lo saco y ejecuto acá vemos que nos devuelve esto el bir date es lo que tenemos que
filtrar yo quiero encontrar a los empleados que tengan una fecha de nacimiento que haya nacido entre el 60 y
el 70 por ejemplo Entonces yo digo Bueno Where beard date between 1960 en este caso vamos a ponerlo así
1960 gu 0-1 and 1960 Perdón 1970 gu 0-1 y ahí tenemos la
consulta yo esto lo ejecuto y me devuelve las fechas por qué porque esto entiende el formato este tipo de formato
es un formato que aunque sea texto porque sí no deja de ser texto eh o sea es un texto sql lo interpreta como si
fueran fechas dice Ah okay me está pasando un año un mes y un día Ya está ya entendí entonces te puedo hacer esta
búsqueda si nosotros en vez de encontrar gente que haya nacido entre el 60 y el 70 quisiéramos Buscar gente que haya
nacido entre el 50 y 60 nosotros tendríamos esto toda la gente que nació entre el 50 y el 70 porque bwin no sirve
para Buscar fechas ven que es útil esto lo podríamos hacer con el and a ver vamos a chequearlo si yo pongo Word bir
date sea mayor a esto and bir date sea menor a esto esto lo ejecutamos y a pesar de que nos devuelve el mismo
resultado porque se puede comparar también con el and no me van a decir que todo esto es más corto y más abreviado
que esto realmente no en términos de eficiencia son casi lo mismo es decir no no hay diferencias de rendimiento pero
es se suele no se olviden que se suele utilizar el operador correcto para cada caso como en toda herramienta de
programación Entonces si tenemos bwin y nos genera casi un resultado como and pero bwin es un operador específico para
manejar rangos entonces trabajemos con bwin Porque además mejora la elegibilidad del código y recuerden la
estadística que siempre les menciono el 10% del tiempo lo pasamos escribiendo código es decir si nosotros estamos
desarrollando cualquier cosa Solamente el 10% del tiempo estamos escribiendo código el resto estamos simplemente
leyéndolo es una Data para que tengan en cuenta ya la dije muchas veces pero se les vuelvo a repetir Entonces si vamos a
estar la mayor parte del tiempo leyéndolo el código escrito tiene que ser bueno Así que ahora vamos con el
siguiente operador que es un operador que para mí también es muy interesante y este sí es muy utilizado más que bwin
incluso y es el famoso operador Quizá lo han escuchado ya like Sí el operador like antes de pasar a like una cosa que
quiero Resaltar es que bwin incluye los valores límite esto y esto también están incluidos es decir si yo le digo que me
pase por ejemplo rangos entre el employe ID 2 y 4 los límites están incluidos es decir el dos se incluye y el cuatro
también between incluye los límites y otra cosa que casi me olvido el valor uno no puede ser mayor al valor 2s es
decir si yo acá pusiera entre 6 y 3 Esto me va a devolver cualquier cosa okay Porque es del menor al mayor el primer
valor tiene que ser el menor y el siguiente tiene que ser el mayor si yo acá pusiera 3 y TR es como si si
solamente dijera tres entonces me funciona Porque los límites están incluidos pero no puede estar por
delante el número más grande porque no nos va a devolver nada Y por último no podemos buscar entre tipos de datos que
no sean compatibles si yo busco por ejemplo una fecha y hago esto y esto Esto no va a funcionar ni aunque lo
cambie de lugar esto no funciona y si funciona nos tiran errores porque está tirándonos cualquier cosa porque
solamente podemos comparar con cosas que sepamos que funcionan como nosotros estamos esperando acá me está
devolviendo alguien que nació el 28 los que nacieron el 5 8 y realmente no está funcionando Entonces técnicamente se
comporta como nosotros no queremos si yo acá le dijera 1950 fíjense que tampoco me devuelve nada Por qué Porque genera
un comportamiento inesperado entonces manejen tipos de datos compatibles y es una técnica muy usada para trabajar con
números banos es decir si nosotros tuviéramos una columna boleana hay algo que no les dije de los booleanos en sql
la forma estándar de trabajarlos es con ceros y unos porque nosotros ponemos true Okay true y ponemos false es una
forma clásica siempre la ponemos true y false y también siempre la ponemos Pero si yo acá digo true esto no selecciona
todos los resultados porque la palabra reservada true le indica que es un valor positivo es decir true pero es cer0 el
término correcto Perdón es uno el término correcto yo ejecuto Esto me ejecuta lo mismo porque true Es como
decir uno y cero Es como decir false es como los números binarios cer0 es no paso de corriente y uno es paso de
corriente Esto es lo mismo c es false uno es true Entonces esto también lo podemos eh hacer funcionar con esto Si
yo hago por ejemplo c and c Esto me devuelve nada un and 1 Esto me devuelve todo lo mismo con el or esto funciona y
ahora que le doy los dos ceros Ninguno me corre y si le doy not cero me devuelve todo porque está negando al
falso o sea que es true Y si le doy not 1 está negando al verdadero entonces me devuelve false Entonces bwin se puede
utilizar para por ejemplo manejar valores banos si tuviéramos una columna boleana boleana Perdón ya sé que digo
bano y bull Bull no B Bull es decir buano si tuvieramos una columna boleana podemos decir que between en este caso
es columna boleana between 0 and 1 y de esta forma estamos seleccionando todos los valores booleanos Pero nada no lo
vamos ahora porque no tenemos ese tipo de columnas pero es interesante que también lo pueden saber Repito no para
de tirar facts fact por todos lados fact fact fact fact bueno ahora sí vamos de una vez por todas con el operador
like el operador like Es un operador también de comparación que se utiliza para buscar y filtrar obviamente de
registros en función de ciertos patrones de cadenas de texto el operador like en sql es como las expresiones regulares o
sea se parece a las expresiones regulares en el sentido de que ambos permiten digamos buscar y filtrar datos
mediante digamos patrones de texto sin embargo like es mucho más simple y limitado en comparación a las
expresiones regulares like permite realizar búsquedas de texto parcial utilizando algo que se llama comodines
así le dicen comodines o mejor dicho carácter comodín en otras bases de datos tenemos muchísimos es decir en en pogre
y demás tenemos much muchísimos comodines pero en skite tenemos dos algunas bases de datos los agregan se
acuerdan que les dije que algunas bases de datos tienen diferencias con otras bueno algunas como que agregan más al
final del curso Igual cuando veamos las diferencias con las diferentes bases de datos vamos a entender las diferencias
que hay con cada una para que puedan adaptarse y no vayan en bolas por defecto utilizar un like Es Exactamente
igual que utilizar un igual Last name like fuller Okay esto que está acá si lo ejecutamos nos va a devolver fuller Pero
si yo pongo un espacio ya no nos va a devolver fuller Okay es Exactamente igual que un igual es como si pusiéramos
esto like funciona así okay es como un igual es parecido Okay Cuál es la diferencia entre el igual y el like
bueno la diferencia es que tenemos estos comodines o sea estos caracteres especiales que nos permiten hacer
diferentes cositas el primer operador el el primer comodín Perdón que se puede utilizar el like Recuerden que son dos
tenemos el porcentaje y el piso o el guion bajo como le quieran decir si yo tengo el porcentaje este signo de
porcentaje significa que no hace falta que arranque con lo que ponga después si yo pongo por porcentaje fuller significa
que puede haber cosas antes de hecho si yo por ejemplo pongo uler si yo pongo esto Esto no me va a funcionar porque es
como un igual si yo pongo la r no me va a funcionar Pero si yo pongo el porcentaje y la r ahora me devuelve este
apellido me devuelve este este registro Perdón por qué Porque le está diciendo a ver tiene que haber una r al final o sea
va a terminar con una r Pero antes puede haber cualquier cosa efectivamente termina con una r y antes puede haber
cualquier cosa lo mismo al revés yo puedo decir decirle puede arrancar con una F y terminar con cualquier cosa y
efectivamente arranca con la F y termina con cualquier cosa Recuerden que acá puse una F minúscula porque skite no es
Case sensitive es decir no es sensible a mayúsculas y minúsculas yo puedo poner esto por ejemplo con minúscula que igual
me va a tirar lo mismo pero en algunos gestores de datos Esto no es así y la recomendación por defecto es trabajar
con los datos correctos ent Yo acá debería poner la F con mayúscula porque en en algunos gestores de base de datos
Y cuando trabajamos con algunas integraciones con programas en la vida real lo normal es si una es mayúscula
una letra es mayúscula la ponemos mayúscula si una letra es minúscula la ponemos en minúscula trabajar las cosas
como son okay Entonces hasta ahora entendimos que like Es como el igual pero si usáramos el porcentaje podemos
decir arranca con esto y puede terminar con cualquier cosa así como también podemos decir con arranca con cualquier
cosa Pero tiene que terminar con r y Qué pasa si yo pongo porcentaje a los dos costados le estoy diciendo con que tenga
una r está todo bien o sea puede tener una r en cualquier parte y sí lovering tiene la r acá antes de la r puede haber
cualquier cosa y después de la r puede haber cualquier cosa como cumple con la condición lo devuelve de esta forma
estamos como que verificando que tenga esta letra si yo acá quiero que tenga la e y la r me va a Dover solamente dos
registros Por qué Porque los únicos que tienen la e y la r son full r y lev Air ling antes de la e y la r puede tener
cualquier cosa y después de la e y la r tiene que tener cualquier cosa Pero tiene que encontrar estas dos letras
juntas la e seguida de la r después puede venir lo que sea antes también pero tiene que estar Esto entonces
técnicamente entendimos que uno de los comodines es el porcentaje y ya no se puede usar para más nada se puede usar
para esas dos cosas para verificar que una cadena empiece con algo que una cadena termine con algo o que contenga
algo para verificar que empiece con algo lo hacemos de esta forma ponemos solamente al final en este caso es que
empiece con f listo cumple la condición si yo quisiera verificar que termine con eh pongo primero el porcentaje y después
con lo que termina termina con la r lo ejecutamos lo sigue devolviendo Y si queremos solamente verificar que
contenga esa letra esa palabra o lo que querramos doble porcentaje No pasa nada lo volvemos a ejecutar Ah va a es es un
error de like que que lanza sin sentido y de esta forma chequeamos que el registro en la columna Last name
contenga una una r si quisiera verificar que tengo una u pongo la u y ahí me salta todos los que tienen u si quiero
verifica que tengo una a ahí me saltan todos los que tienen a si quiero que tenga una x no hay ninguno Okay no hay
ninguna persona que en su Last name tenga una x así funciona el operador like en conjunto con su comodín
porcentaje pero también Recuerden que tenemos otro comodín que es el gu bajo Cómo funciona el guion bajo bueno se
acuerdan que antes estaba fuller supongamos que yo les digo esto tienen que devolverme los empleados que tengan
seis letras en su nombre y que arranquen con la F y terminen con la r Bueno hacemos esto 1 2 3 4 estamos diciéndole
que tiene la f cuatro caracteres después 1 2 3 4 y termina con la r ejecutamos esto y nos devuelve fuller porque esto
que está acá significa cualquier cosa no importa lo que ve venga cada uno de los guiones hace referencia a un carácter
supongamos que yo sé que arranca con full pero no sé cómo termina digo Uy arranca con full cómo termina Esto bueno
calculo que puede tener algo después sé que tiene dos letras después punto punto dos letras y si yo dijera no no tiene
tres letras son tres y ya no me lo devuelve más por qué porque le estoy diciendo es un full y tiene otra letra
otra letra otra letra y no en realidad no tiene tres caracteres más tiene solamente dos Entonces lo borramos y ahí
lo vuelve a devolver esto es más útil cuando en realidad sabemos parte de algo y Simplemente no lo encontramos o cuando
queremos asegurar la cantidad de caracteres Porque si yo por ejemplo pongo Esto me va a devolver full Pero si
yo digo no no quiero que tenga solo un carácter más porque con esto nos devuelve todos los registros que
arranquen con full Pero puede estar fi fulanito full Shake puede haber un montón de full Pero si yo solamente sé
que hay un full con un solo carácter me va a devolver el full con un solo carácter ejecuto y ahí me no me lo
devuelve por qué no me lo devuelve y porque no hay ninguna ningún registro que tenga cinco letras arranque con full
y después le siga una full tiene seis letras ahí agarro y de esta forma aseguramos que una cadena tenga una
cantidad de caracteres lo mismo con el uller supongamos que yo sé que se llama que en el medio tiene una u Okay tiene
una u ahí está la f u l l e r actualizo y me lo devuelve por qué me devolvió también el sujama y bueno porque cumple
la la condición Cuál es la condición tiene que haber solo un caracter adelante de la u solo uno no puede haber
Ni más ni menos uno tiene la s listo es un caracter y después de la u tiene que haber 1 2 3 cuatro caracteres y a m
cuatro caracteres también cumple la condición acá tenemos dos registros que cumplen la condición y también se pueden
mezclar yo puedo poner Dame un nombre que tenga una u y que tenga cinco letras al menos Entonces yo digo Bueno tiene
cinco caracteres y después que me devuelva lo que quiera entonces si hay más que me devuelva más es un carácter
un carácter la u también tiene la u como segundo carácter y después le dije 1 dos 1 dos y después lo que sea perfecto
cumple con la condición entonces también lo devuelve De hecho si acá acá Le hubiéramos pasado un carácter extra en
vez de devolvernos estos dos Perdón Es uno más no se habría devuelto este porque es el único registro que tiene
algo seguido de una u seguido de siete letras si bajamos a cinco después nos devuelve los de antes así es como
funciona este comodín que es el segundo comodin estándar del operador like ven como estamos aprendiendo un montón Ya
vimos en un saque el operador bwin y el operador like la verdad que son golpes de realidad hermosas que decís Ah con
razón porque yo la única forma que tenía de verificar que una persona tenga algo es solamente poniendo exactamente el
campo pero no sabía cómo hacer para verificar bueno Esta es la forma Okay con Bin buscamos entre rangos y con like
podemos hacer una especie de búsqueda por patrones de texto porque esto es un patrón de texto Cuál es el patrón una
letra después tiene que haber una u y después tiene que haber cinco letras si yo hiciera este patrón tiene que haber
una letra una u y terminar con otra letra pueden ser cualquiera Eh pero en el medio tiene que haber una u Ese es el
patrón este por ejemplo es otro patrón Cuál es el patrón arranca con la f termina con lo que sea es un patrón si
hubiera otro nombre Como por ejemplo Fausto también lo cumple Por qué Porque arranca con la F y termina con lo que
sea como les dije también se puede mezclar Pero bueno esto ya es tema para que prueben ustedes repito Yo siempre
digo lo mismo prueben un poquito porque el aprendizaje No es un proceso pasivo sino que es un proceso activo para
aprender es más probable que entiendan todo y asimilen mucho mejor después de que ustedes hagan sus propios ejercicios
entonces pongan pausa a este video vayan a ejercitarse un poco no hacerse la Manuela sino que a jugar un poco con la
manito para hacer que esto sea realidad después si les sale bueno jueguen con la Manuela no hay problema pero por lo
menos habrán tenido esto resuelto Así que una vez que tengan esto listo y lo hayan entendido avanzamos con el
siguiente operador mínima aclaración antes Recuerden que esto también se puede utilizar con not not like not Last
name like and y poner Otra condición Okay podemos usar or esto obvio cada operador que trabajemos de comparación
lo podemos mezclar con los valores los operadores lógicos Perdón Porque todos los operadores de comparación nos
devuelven valores ble y los valores banos pueden ser operados por los operadores lógicos que son and Or Not y
después de después del que vamos a ver ahora vamos a ver otro operador lógico más así que vamos con el siguiente
operador el siguiente operador es el operador is nul o is not null son dos operadores que es muy sencillo la verdad
eh o sea si yo por ejemplo devuelvo acá la ta habla productos order by order by product ID Ahí va desk Esto me devuelve
primero los nulos Por qué y Porque primero siempre me va a devolver los resultados que son nulos que en realidad
esto no es así porque en realidad los nulos se devuelven primero con el ask Y en este caso es solamente por product ID
porque me lo devuelve de forma descendente Así que deberíamos poner product name Y ahí sí En realidad lo
está devolviendo porque devuelve los nulos primero por la regla de jerarquía que vimos al principio ahí tenemos los
nulos Okay hay una diferencia entre lo que acabo de hacer recién y lo que mostré antes no nada pero solamente
quería que se cumpla la regla para recordemos un poquito que lo cuando usamos la forma ascendente por defecto
los nuls se muestran primero pero supongamos que esto tenga que cumplir condiciones okay vamos a poner las
condiciones las condiciones van antes del order by no se olviden la verdad que me molesta un poco que aparezcan nulos
sabes que no me gusta porque los nulos son complicados de trabajar algo nulo es algo que no está del todo definido por
la base de datos Entonces no quiero que me devuelva los valores nulos Bueno vamos a verificarlo entonces Where
product name is null Entonces en este caso me va a devolver solamente los valores en los que product name sea
nulo y así como le decimos is null le podemos decir is not nul y ahí nos devuelve solo los que no son nulos no
hay valores nulos Pero nada no la verdad que no es más que eso simplemente es como decimos Che Devuélveme los valores
que no sean nulos y acá puede haber un chiste porque también es is not null o es is null y not prod name is nul o sea
es como podemos jugar un poco con el not todo el tiempo de hecho podríamos poner un not acá y un not acá y esto que está
acá es como en matemáticas literal negativo menos negativo es positivo ven me devuelve los dos si saco el negativo
y saco el negativo es decir Tacho los mismos signos por los que multiplico me devuelve lo mismo e matemáticamente
funciona igual pero se entiende no que quise referirme a que es matemático que si lo vimos en la escuela acá también
funciona Ah seguro ni se acuerden de lo que estoy diciendo pero no importa lo dejamos pasar porque llegaron a este
punto del curso de hecho para limpieza de datos es muy usado porque le decimos Che la verdad que Devuélveme los valores
nulos y podemos ver Cuáles son los valores que están nulos dentro de nuestro nuestra tabla no entonces ahora
que ya en medio que vimos bastantes operadores que vamos adquiriendo un poco de experiencia y que ya estamos
aprendiendo cosas nuevas rápido así así como si nada cosas que deberían tardar más tiempo en aprender las aprendemos
más rápido porque ya tenemos más calle estamos en una sección que es a punto de iniciar la avanzada y Tenemos calle lo
tenemos que porque lo entendemos y lo entendemos rápido y eso me pone contento pero todavía falta lo más complejo de
sql que es el apartado de las subconsultas pero para entender las subconsultas entender eso tenemos que ya
meternos en el apartado De relacionar las tablas es decir tablas relacionales y entender bien cómo funciona Este
modelo de relaciones se acuerdan que antes hablamos del modelo entidad relación que parece que no nos servía
para nada el que explicamos con Paint es decir si buscamos esto en Google nos salta esto que es literalmente con lo
que estuvimos eh trabajando y operando no sé cuál de todos habíamos visto pero esto literalmente es con lo que
Estuvimos viendo o sea estuvimos como un apartado de no sé cuánto tiempo entendiendo Cómo funcionaba este
diagrama bueno se acuerdan que explicamos lo que era las llaves foráneas las llaves primarias es decir
las foreign Keys y las primary kys Bueno al fin les vamos a dar uso pero antes vamos a dar una pequeña introducción con
el siguiente operador que es el operador in Okay el operador in es un operador de no ojo ya no es de comparación es un
operador lógico por eso ya vamos para meterlo directamente en otro apartado pequeñito okay Porque es otro operador
lógico porque solamente hasta ahora lógicos vimos tres and or y not ahora vamos por un cuarto entonces creo que se
merece una pequeña sección y sobre todo cuando es la introducción a las subconsultas Así que el próximo operador
que vamos a ver es el operador in y es la introducción a las subconsultas supongamos que tuviéramos que
seleccionar los productos de los proveedores 3 4 5 y 6 Bueno vamos a hacerlo Select from product Where
supplier ID = 3 and supplier ID = 4 y lanzamos así eh 5 6 todo este código para una consulta lo ejecutamos y bueno
evidente Ah porque no es and es or Perdón perdón perdón el boludo quiere enseñar algo y explico cualquier tonter
Bueno ahí va es algo básico Okay decimos bueno a ver puede ser o del proveedor tres o del proveedor cuatro o del
proveedor 5 o del proveedor 6 si no es ninguno de esos proveedores no lo devuelve entonces ahí vamos a ver
solamente de estos proveedores y acá tenemos el resultado y es este que estamos viendo pero qué pasaría si
tuviéramos que poner una condición una tras otra o sea tenemos que chequear que haya 35 hor todos estén correct sería un
lío bueno el operador in medio que viene a solucionar esto no porque es como una abreviación al operador or que a su vez
es un operador Lógico es decir ambos son operadores lógicos pero opera sobre lo que viene siendo una tupla no que es
como un sobre un conjunto de datos vamos a verlo en vez de hacer esto Yo siempre digo Word supplier ID in 3 4 5 6
actualizo y esto me devuelve exactamente el mismo resultado pero de una forma más abreviada por qué porque le estoy
diciendo el supplier ID de cada registro o sea del registro que estás analizando porque Recuerden que esto va registro
por registro cuando le pasamos una consulta esto para vernos los registros que nosotros estamos queriendo consultar
o sea si queremos que nos devuelvan la gente mayor a 18 pasa por todos los registros entra en la entra en la edad y
si es mayor de 18 lo devuelve pero hace eso con no con todos a la vez lo hace uno por uno como si fuera un bucle bueno
Esto es lo mismo acá Okay supp Player ID va registro por registro y toma el supplier ID de cada registro si el el
supplier ID es TR se fija a ver tres está en estos valores puede ser o este o este o este o este y como TR está lo
devuelve si el supplier ID es s dice a ver siete hagamos de cuenta siete está en 3 4 5 o 6 no en este conjunto de
datos en este esta especie de tupla Okay no está no se encuentra Entonces no devuelve el registro y así funciona esta
cláusula in se puede utilizar en la cláusula Select en update y en delete voy a seleccionar a los empleados
employees Yo quiero seleccionar a fuller y a King Okay digo Where Last name ig fuller or Last name = King esto lo
ejecuto y me da esto pero yo tranquilamente podría hacer esto y puedo decir in fuller King cierro esto y
cuando lo ejecuto me devuelve lo mismo porque sí cuando este registro hace una comparación esto es técnicamente fuller
y Dentro de este conjunto de datos podemos hallar a este dato lo mismo que abajo Así es como funciona para cada
registro este valor va a ser igual a Last name en el registro o sea si estamos en el registro dos va a ser
igual a fuller estamos en el registo 30 va a ser igual a King y esos van a ser los registros que va a devolver Porque
esos valores los encontramos en este conjunto es una forma de abreviar Okay es una forma de decirle esto que está
acá puede ser igual a esto o a esto o a todos los valores que pongas a continuación puede ser igual a lo que
quieras okay pero si está dentro de estos valores te lo devuelvo y también tenemos la forma de negarlo como ya
vimos siempre el nota ahí está medio entiendo presión con un not Recuerden que puede ser no norment los operadores
los ponemos con mayúscula not in Ahí va y ahí sí no funciona por qué Porque ahora nos devuelve lo contrario no nos
devuelve los que sean fuller o king nos devuelven todos los que no sean fuller o king y también podemos ponerlo adelante
el not in o el in con un not adelante es decir con una negación funcionan Exactamente igual pero es más común usar
not in Okay Recuerden que el not siempre se utiliza al lado del operador es not between not like no y así es más común
no pero no es no no está t mal utilizar acá adelante el not es lo mismo o sea realmente no hay diferencia solamente
que para mí es más legible por lo menos hasta por los colorcitos que nos ponen que son azulcito como verlo juntos para
mí es mejor pero bueno cada uno eligirá como lo pone no y este es el uso del not in pero el in no tiene solamente este
uso el in es una de las primeras cosas que tenemos que entender Si queremos comprender cómo funciona el tema de los
joins ya que con in podemos hacer una subconsulta que es una consulta adentro de otra consulta es decir puedo al el
fin mezclar una foreign key con una key y encontrar relaciones Sí y eso nos lo permite in vamos a ver más adelante que
in no es la mejor forma de hacer esta operación okay es decir De relacionar tablas existen otra cosa llamado joins
incluso existen mejores cosas que esas vamos a ir viendo con el tiempo porque lo ideal es que empecemos a
introducirnos pero si queremos entender los joints y demás es la mejor cosa que podemos hacer entender in y el tema de
las subconsultas Así que ahora sí arrancamos con mi apartado preferido del curso de sql que es todo el tema de las
subconsultas y de los joints Así que vamos así Ahora sí con esta etapa de las relaciones entre tablas y comenzar con
el modelo relacional de un sistema que está basado meramente en álgebra relacional los felicito por llegar hasta
este apartado del curso y ahora sí Prepárense porque como les dije Viene mi apartado preferido vamos a ver
subconsultas vamos Bueno ahora lo que tenemos que ver es funciones de agregación las funciones
de agregación básicamente nos permiten agrupar datos resumirlos e incluso trabajar con estadísticas sobre los
datos las funciones de agregación se utilizan con la cláusula Select utilizando estas funciones podemos
obtener datos como por ejemplo el número de Registro de una tabla el promedio de un conjunto de valores el valor máximo o
mínimo de un campo por ejemplo podemos obtener el valor de la fila anterior el valor de la fila siguiente también datos
estadísticos como les dije como por ejemplo la mediana la deviación estándar y más mucho más la estructura es
arrancar con un Select y seguir con la función en este caso es función Recuerden que las funciones como se lo
dije antes van entre paréntesis como en la mayoría de los lenguajes de programación de hecho y Recuerden que
este campo lo que hace es seleccionar columnas yo puedo decir por ejemplo employe ahí va más rápido y estoy
obteniendo esto Esto es el el selector de todo Es decir me selecciona todo de la tabla employ pero como sabemos puedo
pedirle que me seleccione el First name el Last name y esto lo que me devolvería sería el First name y el Last name de la
tabla empleados o sé que esto lo que nos devuelve son columnas que seleccionamos de hecho yo puedo pedirle que me que me
devuelva muchas veces el apellido por ejemplo y me devuelve el mismo dato porque está haciendo lo que le pido en
Select lo que hacemos Es seleccionar Campos Bueno entonces cuando usamos una función de agrupación esto nos va a
crear un nuevo campo aparte que que nos muestra el resultado de esa función lo que nos retorna a esa función supongamos
que yo quiero contar Cuántas filas tiene una tabla no o por ejemplo el número de valores en una columna Qué hago yo y yo
digo count Quiero ver cuántos First name Okay hay en empleados ejecuto esto y me devuelve 10 Qué significa eso que hay 10
empleados porque me está diciendo que hay 10 valores en el campo First name O sea que hay 10 nombres en la tabla
empleados y si se fijan Esto me devuelve un campo count First name y yo esto puedo como vimos al principio del curso
asignarle un valor yo voy a decirle as cantidad de nombres entonces actualizo Y esto me muestra cantidad de nombres
cantidad de nombres 10 y ahí estoy usando una función de agregación count es una función de agregación que nos
sirve para contar la cantidad de valores en un campo otra función por ejemplo es zoom que suma los valores de un campo
supongamos que yo tengo la tabla productos Select price from products Esto me muestra el precio de todos los
productos hasta acá estamos bien esto ya lo sabemos Okay el precio de todos los productos supongamos que yo quiero sumar
todos los precios Cómo hago bueno uso la función zoom esta función me suma todos los valores de la columna actualizo y
ven tengo todos los valores Qué significa esto que si sumo el valor de todos los precios O sea si yo vendiera
uno de cada precio Esto me pagaría porque este es el valor de todos los precios sumados después tengo abg abg
significa promedio abg lo que nos devuelve es justamente el promedio que el promedio como ya saben nos permite
más o menos ver cuál es el el el promedio tampoco hay mucha ciencia muchachos el promedio suma todos los
números y los divide por la misma cantidad de valores es una boluda es un promedio Entonces yo ejecuto esto y me
devuelve el promedio O sea que en promedio los productos cuestan 27 de hecho acá podemos usar otra función que
es round round lo que hace es redondear un valor Qué significa esto que con round yo puedo pedirle que en vez de ser
27.44 08 me lo redondee Y de esa forma ahora me quedan 27 Recuerden que las funciones van entre paréntesis Entonces
yo estoy usando la función round y me está pidiendo a ver qué queres redondear Okay Quiero redondear el promedio Okay
que esto es algo aparte esto que está acá es algo aparte quiero redondear el promedio de Price Entonces de esa forma
ahí sí estoy redond y como tengo un nombre acá todo refeo lo puedo asignar como promedio entonces ahí lo ejecuto y
ahí tengo promedio si se fijan es un promedio de hecho supongamos que eh yo quisiera redondear a más decimales No
acá pongo una coma pongo una coma después del primer parámetro porque esto es así esto es round n1 n2 es decir el
número uno y el número dos el número uno es el valor que queremos redondear en este caso es abg price Porque queremos
redondear el promedio del precio y después tenemos n2 n2 es el valor con la cantidad de decimales si yo quiero que
tenga dos decimales pongo dos ejecuto y me da dos decimales 27.44 si yo quiero que tenga cuatro decimales me da cuatro
decimales yo quiero que tenga un decimal me da un decimal si yo quiero que tenga cero decimales me da cero entonces me
queda 27 si yo no le pongo nada es como si le pusiéramos el cero porque es por defecto si entienden de programación
entenderán lo que digo por eso yo es lo que recomiendo para entender el curso de sql y sacarle el máximo jugo a todo es
que va en el curso de python porque no me voy a explicar ahora por ejemplo a a explicar lo que es un parámetro porque
realmente el curso de sql haría muy largo ya bastante que lo estoy haciendo como para tontos literal intento hacer
el curso más básico posible para que todos entiendan a pesar de que no sepan programar pero hay cosas como esta que
si yo me tengo que poner a explicar lo que es un parámetro o sea imagínense que el parámetro lo estamos viendo a mitad
del curso de python Por eso digo mi mi recomendación más fiel es vayan a ver el curso de python además python es uno de
los lenguajes más poderosos que existe les va a servir y cuando terminen sigan con el curso de sql pero nada
entendiendo que no no lo van a saber básicamente una función es como una algo interno del programa que hace algo en
este caso Okay cada vez que usamos la función round va a redondear lo que tiene entre paréntesis si lo que tiene
entre paréntesis es un valor en este caso es esto que está acá Okay nos redondea esto pero si yo le pongo dentro
del paréntesis una coma y le paso otro valor que se llama otro argumento en este caso es dos esto es la cantidad de
decimales Okay repito véanlo con python para que entiendan mejor pero si no nada es una abur estoy redondeando el
promedio del precio bueno vamos a segir con la siguiente función de agregación round es una función pero no es una
función de agregación simplemente es una función de sql puedo redondear cualquier cosa es una función para redondear
después tenemos min si yo quiero decir Che a ver Quiero encontrar el precio mínimo Okay Quiero encontrar el precio
mínimo Cómo hago pongo min y min lo que me devuelve es el producto que menos vale min price Esto me está devolviendo
cero por qué Porque si yo vengo acá a brow Data y vengo a products y los ordeno por price si apreto acá lo puedo
ordenar por price el valor mínimo de Price es cero porque tengo estos Campos que son nulos Okay pero si no me
devolvería este 2.5 como Tengo estos Campos nulos el valor mínimo de Price es cer0 O sea hay productos que valen cero
porque son nulos y son errores que después vamos a ver cómo los limpiamos De hecho acá yo puedo decir Where
product name por ejemplo is not null entonces de esta forma evito tener datos nulos actualizo Y ahora sí el valor del
precio mínimo es este de hecho podría decirle que me pase el nombre por ejemplo name o product name Ahí va coma
min y ahora sí me devuelve el nombre del producto y el precio mínimo por qué Devuélveme el nombre del producto y el
precio mínimo de la tabla productos pero el product name no tiene que ser nul porque si no si yo esta condición no la
pusiera de hecho vamos a anularla esto que está acá es un comentario Okay si yo pongo las dos los dos guiones adelante
de una línea de código me la comenta Qué significa esto que no se va a ejecutar o sea yo ejecuto esto y es como si esta
línea no existiera si yo pusiera acá lo mismo guion guion no no pasa nada Por qué Porque es como si sql no lo
interpretar o sea es código que no se ejecuta es como si literalmente no existiera para qué sirven los
comentarios y sirve para el desarrollador pueda leer yo acá arriba puedo decir por ejemplo acá estoy
obteniendo el producto con menor precio Entonces el desarrollador que venga acá y lea va a decir Ah okay en esta
consulta lo que hace es obtener el producto con menor precio al desarrollador le sirve mucho en este
caso nos está sirviendo para no usar esta línea o sea al comentar esta línea es básicamente como que no la usamos si
yo de hecho esto que está acá arriba lo dejar y lo ejecuto esto nos devolver el mismo resultado si yo esto lo descom el
resultado lo tenemos igual porque esto no lo interpreta es como si no existiera Okay en este caso lo descomentar Para
que vean que si esta línea no se ejecuta Okay la de esta que está acá el producto con el menor precio es es esta vamos a
ejecutarlo y ahí nos devuelve el nul Por qué Porque el valor más chico es cer0 pero el nombre de todos los productos
que tienen el valor cero es nul Entonces si usamos la condición de que los campos no tiene que haber datos nulos o sea el
produ name no puede ser nul me va a volver este porque es el valor más chiquito de todos los que sí tienen
nombre Porque estos productos no existen Entonces técnicamente estamos haciendo una consulta correcta y después tenemos
Max si yo quisiera obtener el digamos producto con el precio máximo ejecuto y acá me dice coté de bl
263.5 acá no hace falta ponerle esto porque los campos nulos no no afectan nada lo ejecuto y es lo mismo ven pero
quería llegar a que entiendan que así como ahora estamos con estas funciones de variación que ya vimos recién que son
muy básicas tenemos muchísimas pero muchísimas funciones deción tenemos funciones de variación que hacen de todo
lo que se imagin una barbaridad tenemos pero después si quieren complejizar y meterse a nivel de optimización de cosas
mínimas pero por ahora con que sepan sql entiendan las bases sepan trabajar de la mejor forma posible estamos más adelante
vamos a hablar de optimización en este curso también pero que sepan que hay muchísimas funciones de grup Okay pero
no nos vamos a trabar con eso porque se nos haría como que medio todo imposible ahora digamos hacer eso no se puede pero
sí lo que se puede antes de ir con las subconsultas es ver grow by y having que es lo último que vamos a ver antes de
trabajar con sub consultas porque literalmente ya habríamos hecho y terminado todo para poder estar de lleno
en lo que vienen siendo las subconsultas sin distraernos y teniendo los conocimientos no porque para meterse en
subconsultas hay que tener un conocimiento previo hay que entender ciertas cosas y ya con aprender grow by
y hing que es lo que vamos a ver ahora a continuación Ya podía decir que estamos listos para trabajar de lleno con sub
consultas Así que basta de hablar y vamos de lleno con grow by y jain bien la cláusula grow by se utiliza
para agrupar uno o varios registros Okay Según uno o varios valores de las columnas otra vez acá me hice una
pequeña tablita en Paint porque me encanta Paint soy fanático de Paint pero acá podemos ver cómo funciona esto acá
tenemos digamos varios productos no el cliente es el mismo es XXX para todos acá Me olvidé de poner los demás datos
pero es para el mismo para todos perdón pero mi Toc no me permite avanzar si no está todo bien puesto si vas a usar pine
por lo menos explica bien bueno ahora sí tenemos esta tabla de ventas realizadas cada venta que se hace registra el
producto que se vendió el cliente y la cantidad que compró Para qué nos sirve agrupar por producto bueno supongamos
que yo quiero obtener la cantidad de ventas de cada producto qué hago bueno uso grou by producto porque producto es
este nombre o sea quiero agrupar por producto y los campos que tengan el mismo valor se agrupan Qué significa
esto que si yo tengo banana banana banana y banana Tengo cuatro bananas Qué significa esto que si yo le pido que me
sume cada valor individual yo lo que puedo obtener después es ya con otra cosa que vamos a ver más adelante pero
des preocúpense lo vamos a ver ahora con una función de agregación que es con zoom se acuerdan que zoom me sumaba
todos los valores de una columna Bueno si yo esto le dir a zoom me sumaría todos los valores Pero si yo antes le
doy un grow byy lo que va a ser el grow byy es en en vez de sumarme todos los valores me los va a agrupar para que me
diga la cantidad total de ventas de una banana fíjense 4 + 3 + 4 + 2 da 13 después manzana son 10 ventas 10 10
manzanas se vendieron por qué porque tenemos manzana 3es manzana cu tres má 4 7 manzana 2 nu bueno medio que no sé
sumar Y en vez de poner nueve puse 10 pero bueno podríamos hacer de cuenta que en vez de ser nueve son 10 manzas que se
vendieron y después ciruela acá ciruela dice 5 y 3 5 + 3 son 8 Entonces se vendieron ocho celas 10 manzanas y 13
bananas esto lo podemos hacer con grou by Porque si Ah basta vamos a verlo en código por ejemplo supongamos que lo que
queremos hacer es obtener el promedio de precios de un producto venimos acá y ponemos abg price hasta acá está todo
bien ya está esto nos devuelve el promedio que ya lo hicimos antes de eh del precio o sea suma todos los
productos los divide por la cantidad de productos que hay y saca el promedio esto es el promedio ya lo sabemos
matemática básica jardín de Infante Pero si yo de repente ahora lo que hago es decir grou by supplier ID esto lo que
hace es ordenarlos por proveedor de hecho Vamos a darle en ejecutar y ahí si se fijan tengo Vamos a darle un redondeo
en este caso r para que se redonde los números y no tengamos que hacer tanta vuelta va y el grow by lo vamos a poner
abajo Ahí va Ahora sí acá lo que estamos obteniendo es el promedio de cada proveedor yo voy acá voy a venir acá y
darle en supplier ID coma round el supplier ID Recuerden que es el proveedor cada proveedor tiene un Player
ID es decir el proveedor uno es decir ele el promedio de los de lo que cuestan los productos del proveedor un es de 166
el promedio de lo que cuestan los productos del proveedor dos es de $ el promedio del tercero es de $30 El del
cuarto 35 el del quinto 30 el del sexto 15 yo digo bueno a ver ahora de repente Quiero ver eh quiero verlos en orden
Quiero ver cuál es el que más vale bueno order by round Ah cierto tengo que hacer todo esto de vuelta bueno mejor en ve de
hacer esto y le voy a asignar un valor as promedio Ahí va promedio entonces de esta forma le digo order by promedio y
se actualizo ahora me los ordena por el promedio y esta columna tiene un valor el supply ID 10 es el que menos vale en
este caso Vamos a darle desk así se ordena por el que más vale al que menos vale el promedio del supply 18 es de 141
o sea el predor con los productos más caros en promedio es el proveedor 18 con un promedio de 1411 por producto pero el
problema de esto el problema de de agruparlo por por este valor es que lo que estamos haciendo es que como les
dije estás separando los y agrupándolos o sea todos los que tengan el supp Play ID 188 los agrupa por esta función de
agregación Por ejemplo si hay siete registros con el supplier ID 18 suma los siete registros y aplica un promedio
Pero qué pasa con los demás campos es decir qué pasa si yo acá de repente vengo y pongo product name esto que está
acá me va a volver un nombre pero cómo Por qué me devuelve esto y esto que está acá nos devuelve el primer registro con
este supplier ID o sea si yo vengo a brow Data en products y los ordeno por el supply ID Okay vamos al 18 el primero
que tiene el 18 es coté de Blade hay más eh tenemos este que está acá abajo pero el que el primero que tiene el ID 18 es
este Entonces lo muestra el primer producto con el suppli ID 4 es mishi no sé qué cómo lo sé y si venimos acá al
cuatro hay varios hay tres productos con el supply cu pero el primero es mishi O sea que grow Buy lo que hace es
agruparlo y nos devuelve el primer valor de cada uno o sea que si yo acá no usara el abg price lo que obtendría Qué sería
el precio más bajo esto no sería un promedio esto lo que nos devolvería sería el precio más bajo si yo acá le
doy no le doy un order si yo acá le doy De hecho un as me devolvería el precio más alto entonces volvemos a lo que
teníamos antes supplier ID Ahí va lo dejamos acá y ahí tenemos el supplier ID y el promedio estamos haciendo que nos
devuelve incluso lo puedos hacer por categoría category ID y lo lo agrupamos por category ID de esta forma hay uno
para cada categoría está la categoría nula Así que vamos a usar una condición Word category ID y is not null Ahí está
entonces la ignoramos al al valor nulo cuál es el problema acá Ah El problema es que el Word va
adelante del grow by esto es bastante loco pero sí el we va adelante del grow by entonces ahí ahí sí porque primero se
usa la condición O sea primero se selecciona se hace la selección después se usa la condición con el filtrado y
después se agrupa o sea lo que agrupamos es los registros Por qué Porque Cómo funciona esto internamente internamente
agarra todos los registros que nos devuelve y los agrupa pero si después vas a filtrarlo tenés que hacerlo antes
por qué Porque el Word sirve para usar condiciones y filtrar los resultados O sea si me vas a bajar ocho resultados
ahora bájame cuatro porque con la condición que te di me bajas cuatro y esos cuatro después los a grupo Entonces
primero va la condición el Word y después va el gry Y ahí sí acá me está devolviendo el categorí ID con el
promedio de cada categoría ID en este caso vemos más o menos Cuál es el promedio del costo de cada categoría
vemos que la categoría que más cuesta es la seis y el promedio de la categoría 6 que justo es carne de ave el promedio de
los productos de carne de ave es de $4 Recuerden que si venimos acá y le damos en en categories vemos que la seis es
meat p que significa carne de ave y nos da la casualidad que en prom Med es lo que más cuesta no se olviden que si a
esto le sacamos el grow Buy y le sacamos todo esto Simplemente nos devuelve un valor por qué Porque lo que hace es no
suma todo okay Nos suma todos los campos de precio entonces por eso nos devuelve solo uno lo que hace una función de
agregación es en este caso esta que es el promedio es devolvernos solo un dato una un registro solo con esta
modificación hecha Cuál va a ser la modificación este campo que va a llamarse promedio va a tener el promedio
de todo todos los precios pero como les dije si le pasáramos un nombre si le pidiéramos cualquier cosa siempre nos va
a devolver el valor más bajito si Yo acá le paso product name esto que está acá me va a volver el chice Por qué Porque
chice es el primero de todos los productos Yo vengo acá products y el primero es chice si el primero fuera
chang me devolvería chang pero el primero es chice si yo le digo supp Player ID que también me devuelve su
Player ID me va a devolver uno por qué Porque el primer producto tiene uno como su Player ID o sea básicamente es como
si me devolviera el primer registro pero con un campo extra que es el promedio de precios entonces grow Buy sirve para
decir Che A ver Mira está todo bien que me hayas sacado un promedio pero ahora yo quiero que el promedio no sea de
precio quiero que el promedio sea por categoría porque yo quiero saber no quiero saber cuál es el promedio de
todos mis productos Yo quiero saber cuál es el promedio de cada categoría el promedio de la categoría 2 es de $ el
promedio de la categoría 3 es de $ Bueno entonces ahí es cuando usamos el grou by en este caso vamos a agruparlo por
categoría ID es decir todo lo que tenga el mismo categoría ID se agrupa Y en este caso se calcula el promedio
entonces actualizamos y ahí tenemos la información y ahí estamos trabajando con estas funciones pero ahora tenemos otro
problema porque supongamos que yo voy a decirle Mira vamos a hacerlo por proveedores mejor quiero sacar eh más o
menos por proveedores y a mí lo que me interesa es ver cuál es el proveedor que me tiene productos más altos No yo digo
Bueno quiero filtrarlo quiero que esto solamente me devuelva productos en donde el promedio sea mayor a 40 Bueno digo
voy a intentar con un Word si pongo acá un Word en este caso promedio promedio sea mayor a 40 si el promedio es más de
40 entonces devuélvemelo Ah pero no me deja puedo intentar de vuelta no no fue un error realmente no me deja para esto
hay una cláusula extra que es el having con el Word Necesito que entiendan esto con el Word no podemos hacer referencia
la función de agrupación Por qué Porque Recuerden que con hayo que se llaman grupos en ese cu llama grupos Okay grow
by nos permite crear grupos las funciones de agregación también nos permiten trabajar con grupos y hay una
clave ula llamada having que nos sirve para ser filtrado de grupos así como el Word filtra registros el having filtra
grupos O sea que se usa después del grou by si yo vengo acá y le digo having el having no es joda es como un Word pero
en vez de filtra registro filtra grupo como les dije Ahora sí puedo decirle promedio Okay tiene que ser mayor a 40 y
ahora sí si se fijan me va a devolver solamente los valores en los que el promedio sea mayor a 40 por qué Porque
promedio es el resultado de una función de agrupación y nosotros no podemos usar Esto ni esto ni esto en un Word para
trabajar con condiciones en una función de agrupación se usa el hing es decir yo no puedo trabajar con promedio ni con ni
con operadores de comparación ni con operadores lógicos no puedo trabajar con condiciones en un Word que sean fruto de
una función de agregación perdón si digo función de agrupación es un error mío eh A veces no sé por qué se me mezcla y
digo función de agrupación pero es función de agregación Entonces como les decía no se puede trabajar en un Word
con funciones de agregación por qué porque las funciones de agregación nos permiten trabajar con grupos y viceversa
Y si queremos trabajar con grupos Cuál es la cláusula que es parecida al we pero que en vez de usar un we en vez de
filtrar filas filtra grupos having O sea si queremos trabajar con condiciones en funciones de agregación tenemos que usar
hing en este caso la función de agregación está almacenada en este alias promedio si lo queremos filtrar tenemos
que usar el hing acá decimos por medio nosotros podemos usar un Word También acá eh Word y acá simplemente seguimos
filtrando registros Pero para qué sirve esto los registros que filtrem acá no se van a tener en cuenta para calcular el
promedio supongamos que yo ahora voy a decir Where product name is not null entonces actualizo y ahora vale más esto
Ahora hay más valor por qué Porque los campos nulos se estaban teniendo en cuenta O sea estos Campos que están
nulos ven que dice nul y demás vamos a darle por product ID vamos a ir abajo de todo acá tenemos los campos nulos y este
campo nulo tiene precio cero O sea que si antes estábamos sacando promedios ese promedio que sacábamos incluía estos
ceros entonces con el we lo que hicimos es sacar esto y después se agrupa como les dije esto funciona así supongamos
que tenemos todos estos registros Por qué está tan abajo del micrófono boludo qué increíble supongamos que tenemos
todos estos registros Okay hasta acá está todo bien listo todos los registros todo lo que quieran esto primero pasa
por el we si yo acá en el Select estoy usando una función de agregación la función de agregación todavía no se va a
usar hasta que no filtre Esto internamente sí primero viene el Select después el Word pero cuando se ejecute
Recuerden que primero se hace todo lo que es la devolución de filas y después se trabaja con los grupos como acá le
estoy diciendo agrupam Elo por su Player ID acá le estoy diciendo devolveme los campos que no son nulos O sea que si yo
esto lo comento esta cláusula la comento y no me la tiene en cuenta me está devolviendo menos y este no es el
promedio real esto que está acá es un dato falso porque estamos trabajando con valores nulos para el promedio vamos a
hacer un cálculo simple si yo por ejemplo tengo 5 + 8 + 3 tengo tres valores lo divido por 3 Acá tengo el
promedio el promedio entre 5 8 y 3 es 5,3 Pero si yo dijera 5 + 8 + 3 + 0 + 0 y lo divido por 5 porque ahora tengo
cinco números así se saca el promedio ahora me dice que el promedio es 3,2 pero el promedio real no es ese porque
estoy teniendo en cuenta estos nuls estos estos precios cero que no existen entonces para sacar esos precios uso
Esta cláusula que está acá y lo filtro y después de que me devuelva los productos filtrados ahora sí me los separa en
grupos por el supp Player ID y después los filtra y los que tengan un promedio mayor a 40 me los muestra Entonces ahí
es cuando está trabajando y funcionando correctamente esta consulta en la tabla order details Por ejemplo si se fijan
acá order details vamos a a entrar a esta tabla para que la observemos mejor tenemos el producto de las orden el los
datos de las órdenes tenemos el producto que se ve vendió que hace referencia el producto ID hace referencia al producto
que se vendió y la cantidad O sea que si por ejemplo venimos a esta tabla tenemos información de no sé por ejemplo se
vendió una banana y cuántas bananas se vendieron tenemos producto y cantidad Cómo podemos utilizar las funciones de
agregación y grow Buy para ver cuál es el producto que por ejemplo más se vende porque podemos hacer eso podríamos ver
cuál es el producto que más se vende bueno primero vamos a seleccionar todo fíjense que estamos trabajando con
consultas que ya son rel largas o sea esto hace un tiempito ni lo habrían entendido Y ahora están entendiendo cosa
que es magnífico pu seleccionar order Select todo from order details ejecuto y tengo todos los datos a mí solamente me
interesa el product ID y el quantity hasta acá estamos bien Esto es lo único que me interesa el producto y la
cantidad es decir qué producto se vendió y Qué cantidad se vendió Yo sé que por ejemplo hay productos que se vendieron
varias veces por ejemplo acá se vendió el producto dos una vez se vendió 20 20 unidades del producto dos y acá se
vendió 50 unidades del producto 2s o sea que tenemos que encontrar una forma de agruparlos bueno con gr primero sumamos
las cantidades en este caso es zoom quantity para sumar todas las cantidades y ahí tenemos el valor de todo esto es
todo la cantidad total de productos que se vendió en este caso nos devuelve el primer valor de product ID Así que lo
vamos a ignorar y abajo le damos grou by product ID es decir vamos a hacer que se agrupen todos los products ID y que se
sumen las cantidades O sea si hubo tres ventas del producto cuatro quiero que me sumes todas las cantidades de las tres
ventas entonces ahí tenemos el producto uno se vendió 159 veces el producto 2s se vendió 341 ahí tenemos Cuántas veces
se vendió cada producto en total porque por ahí el producto dos como Vimos una vez se vendió 20 unidades otra vez se
vendió 30 otra vez se vendió 40 Pero de esta forma estamos agrupando todas las ventas del producto dos como de esta
forma ahora después de esto tenemos que ordenarlo vamos a darle order by en este caso Vamos a darle total as total Ahí
está poro como que queda feo esto acá el zoom quantity Así que vamos a darle order by total Ah actualizamos y ahora
sí tenemos la columna con el nombre total y estamos ordenándoles por total O sea que el producto que menos se vende
es este que está acá tuvo cinco unidades vendidas el producto 67 y el producto que más se vendió es el producto 31 que
se vendió 458 veces una locura ahora digo la verdad que los productos que se vendieron menos de 50 veces los quiero
descartar quiero dejar de venderlos Porque a mi negocio no le es rentable vender productos que venden menos de 50
unidades entonces deir bueno Qué puedo usar un Word si yo pongo un Word y pongo donde el total es mayor así 50 esto no
me funciona porque tenemos que usar un having el having viene antes del order Buy pero después del Group Buy having
total mayor a 50 de esta forma solo me devuelve los productos que son mayores a 50 pero yo quiero ver cuáles son los que
vendieron menos de 50 unidades para eliminarlos los que vendieron menos de 50 unidades son estos productos que
están acá Qué significa que tengo que dejar de comercializar el producto 67 el 45 el 22 y todos estos productos los
tengo que dejar de comercializar porque vendieron menos de 50 unidades es más esto a veces cuando estamos trabajando
con otros lenguajes de programación hacemos esta consulta sql y nos devuelve muchos datos yo solamente ahora Quiero
obtener el producto más vendido Cómo puedo hacer Bueno normalmente lo que haría sería sacarle esta condición como
hicimos antes y acá tengo todos los productos Entonces el más vendido es este si yo acá le doy des ahora me va a
mostrar el más caro arriba pero me está devolviendo un montón de datos Yo realmente le pedí un dato quiero que me
devuelva solamente un campo el campo que quiero que me devuelva es el campo con el total quiero que me devuelva un solo
dato con el más vendido Cómo hago eso Bueno vamos de vuelta con el jaby no no no no no La respuesta es simple limit un
ya está este es el producto más vendido un campo Solo que me dice mira el producto que más se vendió es el
