Hola bienvenidos a una nueva clase y llegó ahora otra etapa se van haciendo un poco más complejas las
cosas y bueno la verdad que yo estoy fascinado con lo que estamos logrando pero podemos hacer más.
Miren tenemos una tabla que es la que va a ir acumulando los videos ya saben propiamente el video no
se va a guardar acá vamos a guardar la ruta pero mucha información que también nos va a ser de utilidad.
Tenemos la fecha en la que se publicó el video entonces esto nos va a permitir mostrar en cada video
ya sea la fecha en la que fue publicada directamente o sino también vamos a poder mostrar vieron como
dice YouTube dice algo como hace tantos días o hace tantos minutos que fue publicado.
Bueno también vamos a poder hacer algo similar aquí sí que se nos presenta un desafío y es que tenemos
que mostrar en cada video a verme inspirar con un poco de YouTube.
Miren si yo entro a cualquier video
no solamente yo puedo ver cosas como las reproducciones que he tenido dicho video miren que estaba acá
lo que les hablaba estoy viendo el nombre del usuario que lo publica y la foto o la imagen del usuario
yo acá en esta tabla no tengo ninguna de las dos cosas.
Si cuando yo generaba esta fila hubiera tenido una columna que sea nombre de usuario o mail.
En nuestro caso recuerden que nosotros usamos mail supongan que por acá hubiéramos tenido otra columna
que diga mail de usuario y otra columna más para guardar la imagen a donde está guardada la imagen del
usuario o del canal.
Vamos a decir vamos a tener el inconveniente en primer lugar no va a ser eficiente porque va a haber
datos duplicados.
Para qué voy a repetir esos datos acá si ya los tengo en la tabla usuarios.
En segundo lugar imaginan que el usuario mañana cambia este nombre.
Entonces yo tendría que hacer toda una programación en PHP para actualizar en cada video el nombre que
aparece un despropósito total.
Por eso es que estamos trabajando con bases de datos relacionales.
Esto nos va a permitir linkear relacionar vincular el Heydi del usuario perdón que que ataca la raíz
del usuario con la tabla usuarios y hacer un entrecruzamiento
esto se lo podría hacer.
No sé digo yo desde PHP.
Supongamos que tenemos que mostrar aquí todos los videos.
Entonces hago una consulta que me traiga toda la tabla de los videos recuerdan que en esta vista sólo
yo veo los videos de todo el mundo en siguiendo veo la vista de determiné veo los videos de determinados
usuarios Bono yo lo que podría hacer es traer toda la tabla fijarme.
El usuario que tiene esto por ejemplo está fila el usuario 5 y luego a posteriori realizará una segunda
consulta a la tabla usuario para averiguar quién es el usuario Zink y traer todos los datos para hacerlo
una o dos veces está bien pero repetir esto a una escala inmensa es ineficiente y bueno y un despropósito
porque hay maneras mucho más simples de llevar esto adelante bueno.
Vamos a hacer algo muy particular vamos a instalar vamos a instalar un programa que se lo recomiendo.
La verdad es que yo lo uso muchísimo y no va a servir en primer lugar para facilitarnos la vida pero
también nos va a servir para aprender de otra manera conceptos muy importantes sobre consultas más SQL
el programa al que quiere imitar se llama Valentina Studio viene para Windows y para Mac para Mac.
Es muy simple de instalar con irnos a la tienda de Apple.
Ya lo podemos bajar para el caso de Windows.
También te puedes bajar una versión gratuita si bien es cierto que para mi gusto la versión de pago
es bastante costosa para mí en exceso.
Pero la versión gratuita nos deja hacer prácticamente todo así que no me molesta para nada yo estoy
usando la versión gratuita en este momento no tengo la versión de pago.
Bueno aquí he abierto Valentina estudio y como ven no muestra mayor detalle no se preocupen pero quiero
contarles que esto no es más que lo mismo que PHP y admin nada más que este gestor de bases de datos
en vez de funcionar en una aplicación web o en un navegador funciona en un programa que está instalado
directamente en la computadora.
Bueno al igual que PHP y admin yo necesito conectarme Amaya SQL.
Si es cierto cuando entras a PHP y admin en ningún lado te pide que pongas un usuario y contraseña la
IPEC de donde se va a conectar.
Pero eso es porque ya te lo dejó configurado.
De hecho Sam te creó un usuario llamado root en releerse usuario y viene por defecto pero lo particular
es que no tiene contraseña.
No te parece inseguro.
Sí claro que es inseguro pero el sistema o al menos SAMP ya sabe que lo vas a usar para desarrollar
para aprender no para hacer nada en producción real y por sobre todo es cierto nos podemos conectar
con el usuario root sin contraseña desde PHP y admin o desde los PHP pero siempre y cuando esta conexión
se genere desde la misma computadora.
El problema está que cuando usamos algo que no sea PHP y admin o cuando estamos en otra computadora
no vamos a poder usar el usuario root y no ponerle contraseña.
Entonces lo propio o si esto te sucede puedes probar lo mejor demanda pero en la mayoría de los casos
esto no va a andar.
Entonces necesitamos crear dentro de Maye se cuele o María Debé que sería lo mismo necesitamos crear
un usuario aparte distinto al cual le vamos a aceptar una contraseña.
Entonces ahí Shima y SQL diseãada así te estás conectando desde afuera me venís con un usuario con una
contraseña.
Bueno esto me huele más segura y nos va a dejar conectarnos.
Bueno entonces para hacer esto de generar un nuevo usuario directamente con una consulta más SQL.
Y es ésta que está acá entonces yo vengo la voy a copiar la copio y me vio venir acá a la web PHP y
admin voy a seleccionar PHP tube y acá me vengo a SQL para escribirla.
Entonces en definitiva lo que hago es vamos a darle todos los privilegios que se puedan a un nombre
de usuario y vamos a crear un nombre en particular.
Le vamos a poner a este usuario yo no tengo un usuario con mi nombre así que lo voy a poner Pablo cuando
Pablo venga a conectarse desde acá yo podría poner una en particular yo le pongo un 5 por ciento para
que me deje conectarme desde cualquier IP.
No importa donde yo me encuentre me va a dejar conectar
usando clave.
Si señor claro que sí.
Si yo dejara así como está mi clave sería la palabra password eso yo lo quiero y lo vamos a poner como
clave 1 2 3 4 5 6 7 8.
Ahí está completo.
Tiene 2 4 1 2 3 4 5 6 7 8 perfecto.
Bueno vamos a aplicar esto vamos a ejecutarlo y hacer clic en Continuar y ahí está.
Ya tenemos ejecutada esta consulta miren si quieren salir de dudas van a más.
Bueno esto se ve más se ve porque tengo muy grande ahí al estar muy grande la pantalla se esconden algunas
opciones en este acumulador más.
Bueno vamos a venir a privilegios y miren ya aparece Pablo el usuario que acabo de crear con todos los
privilegios dados si yo los editara puedo ver que aquí están todas las acciones que pueda hacer un usuario
Cele seleccionar insertar actualizar está en todos lados porque también es casi como un usuario root
que acabo de crear Bueno listo ya tengo el usuario.
Entonces me vuelvo a Valentina estudio y ahora sí aquí donde hice anfitrión por lo general salvo que
tengas Mac vas a poner local Jost todo junto y si tienes Mac en la ventana de SAMP te va a salir la
AIPE que tienes que poner bueno a qué base de datos nos vamos a conectar.
Eso le puse PHP tuve cómo se llama el usuario.
Pablo la contraseña uno dos tres cuatro cinco seis siete ocho.
Espero no haberme equivocado.
No tocó más nada y nos conectamos bien.
Fue exitosa la conexión
a esta si bien puedo ver las otras bases de datos no puedo entrar no puedo ver su contenido porque yo
sólo tengo autorización para operar con PHP Tube.
Miren lo que veo acá usuarios y videos.
A ver si yo hiciera doble clic por ejemplo en usuarios ya directamente me aparece la tabla Bueno se
van abriendo en pestañas y ven a ver que sin mucho trabajo van a encontrar que pueden operarlo como
si fuera PHP y admin incluso a ver dando doble doble click en una celda puedo modificarla
puedo hacer cosas como venirme acá.
Click derecho.
Nueva tabla y crear nuevas nuevas tablas es un poco diferente pero no te va a costar para nada dominar
esta parte es cuestión de dedicarle un poquito de tiempo.
Pero bueno en esta clase y en realidad es el motivo por el que traigo Valentina Studio.
Si te gusta trabajar con este programa lo que es bueno las tablas.
Esto que estoy haciendo aquí de ver los valores o sea si te gusta Valentina estudio para reemplazar
lo que hace PHP y admin genial es muy buen programa pero en realidad para lo que yo la uso y es lo que
te quiero mostrar es una herramienta potentísima potentísima y vas a ver lo que has buana esa herramienta
es este editor gráfico de consultas así como lo escuchas editor gráfico de consultas.
Voy a hacer click en él.
Es esta hoja que tiene como una especie de Esquadra de hacer click y nos aparece esta hoja cuadriculada
y aparecen todas las tablas que tengo en la base de datos.
En este momento solo tengo dos tablas Titania mente a PHP y admin porque estamos acostumbrados ya esta
vista y vamos a repasar cuál era mi desafío yo tengo acá una tabla videos que tiene columnas como videos
ahí video fecha videos where L y una muy importante videos usuario Heydi.
Esta columna es importantísima.
Bueno se acuerdan de que hablábamos de que este usuario Saidi es la llave primaria de esta tabla.
De hecho si me vengo a estructura puedo ver que tiene esta especie de llave porque yo dije esto es llave
primaria bueno en videos pasa lo mismo.
Vengo estructura y videos ahí es la llave primaria pero también si bien no está explícito Yo sé que
videos usuario ahí es lo que se conoce como llave foránea es una llave de otro de otra tabla que va
a servir para vincular ambas se dan cuenta.
Entonces esto que parece bastante raro o a lo mejor difícil de imaginarnos lo que me va a permitir es
unir ambas tablas porque qué sucede.
Yo tengo acá la tabla videos.
Lo dijimos hace un rato yo tengo la fecha tengo la web R.L pero me estoy perdiendo la foto del usuario
y el nombre del usuario en nuestro caso el mail.
Entonces yo tendría que unirlas.
Tendría que poder ver todo o por lo menos yo tendría que poder generar una consulta que relacione las
dos tablas relacione estos son bases de datos relacionales se dan cuenta por dónde venía el nombre porque
vamos a relacionar estas dos tablas que estoy alternando bueno esto se hace mediante unas consultas
a donde interviene un comando llamado Yeun.
La verdad es que yo lo aprendí al revés de como lo vamos a ver ahora y me costó bastante.
Por eso vengo con esta propuesta al ser gráfico ayuda muchísimo para entenderlo Bueno entonces hagamos
un ejemplo y veamos los resultados voy a agarrar aquí la tabla videos y la voy a arrastrar le vamos
a decir vamos a hacer esto momentito
la vamos a arrastrar por ahí ahí está.
Y luego a usuarios
Bueno ya tenemos las dos tablas y miren que salen todas las columnas el tipo de valor y la llave primaria
vean de acá de usuarios ya sale con la cabecita muy importante y aquí videoasta a mí me indica cuál
es la llave primaria.
A mí no me interesaría tanto este dato de la tabla de video es lo que más me interesa es videos usuario
Heydi.
Por qué.
Porque esta columna guarda los mismos valores que de acá.
En definitiva yo voy a poder relacionar las dos tablas.
Gracias a usuarios ahí nada más que dentro de la tabla de videos se llama videos usuario y yo acá encuentro
quién fue el usuario que publicó este video.
Entonces cómo puedo hacer para relacionar ambas tablas utilizando esa clave esa llave es muy simple
miren yo desde aquí voy a hacer click y voy a arrastrar arrastro arrastro arrastro y ven que se genera
una línea y voy a hacer que apunte esa línea aquí a donde está la llave foránea se me desaparece vamos
de nuevo no el problema ahí está hay que ven yo lo voy a bajar para que se note un poco la idea ya el
ser gráfico esto ayuda muchísimo.
Bueno y de la tabla de usuarios qué valores me hace falta todos me hacen falta todas las columnas.
Bueno pues bien la selecciono todas pero no es verdad.
Yo necesito la clave y la voy a necesitar no para nada a lo sumo el mail y poca cosa más.
Hoy la imagen del usuario.
Entonces para hacerla simple voy a seleccionar solamente el mail y de este lado quiero seleccionar solamente
la R.L del video.
Entonces en definitiva saber que este video lo publicó tal persona o tal mail bueno miren acá abajo
tengo estas dos opciones y voy a ir a donde dice Cuadri bueno acá tengo la consulta que yo tendría que
haber hecho para realizar esto que gráficamente armé aquí.
Miren qué bueno que yo graficamente voy armando la consulta y se va redactando.
Bueno analicemos la consulta.
De paso vemos que las consultas con cierto orden se pueden partir.
No hace falta que sea un chorizo largo hacia la derecha inmanejable.
Miren qué interesante y miren cómo funciona esto del Yeun
seleccionamos y acá vienen las columnas.
Bueno viene expresado de una manera más protocolar a donde se pone el nombre de la base de datos mejor
dicho de la tabla digo de la tabla y luego la columna.
Si yo no pusiera la tabla funciona igual pero en definitiva dice seleccionamos usuarios email y videos
Vd. u R.L pero especifica desde dónde es cada una de estas columnas.
Entonces yo puede que de esta no especifique pero de la otra Civio tener que especificar
asimismo no cuesta nada hacerlo lo más protocolar posible.
Y si Valentina lo hace de esta manera no está mal.
Todo lo contrario.
Entonces seleccionamos ambas columnas de donde de la tabla usuarios y acá viene algo particular inner
join INNER JOIN videos.
Entonces acá aparece la segunda tabla
voy a copiar esta consulta si bien la podría ejecutar acá mismo o ya vemos cómo lo podemos hacer andar
a ver mira yo podría venir aquí se cuele y aquí la puedo ejecutar.
No quiero sacarles de foco como ustedes están acostumbrados a ver las respuestas.
Después probamos acá.
Entonces a dónde me voy a ir.
Me vio venir acá a PHP y admin.
Vamos allá ese cuelgue voy a pegar esta consulta que no es ésta.
Por supuesto me he equivocado.
Vamos vamos.
Esta es la que quiero copiar el Yeun que acabamos de crear.
Me vuelvo a ver ahora sí entonces selecciono las columnas de cada una de las tablas las que desee podrían
haber sido todas.
De donde de la tabla usuarios INER Yeun y Newseum quiere decir intersección central.
Coincidencia central.
Ya lo vamos a ver más gráficamente con la tabla.
Videos
dónde.
Y acá viene lo particular.
Acá se cruzan los Heydi donde on Estevan se usa para decir donde el usuario o usuario Saidi de la tabla
usuarios coincida con el videos usuario y vi de la tabla videos.
Se entiende esto que estamos viendo acá no es más que medio volver esta fantástica relación que hicimos
acá.
Ese pedacito es esta rallitas de acá está uniendo los dos.
Ahí volvemos entonces y vamos a ejecutar y acá empieza la magia de discontinuar y miren lo que me trajo
acá abajo me trajo somos bióticos arroba mail que es el mail de el usuario que publicó este video ven
hemos unido las dos tablas.
Es más ahora miren lo que podemos hacer a seleccionar más a medida que selecciono empiezan a crecer
las columnas aquí abajo en la consulta determinan el seleccionar todo a ver el último y voy a hacer
lo mismo del otro lado.
No vuelvo a seleccionar o se podría.
Voy a seleccionar una sola vez usuarios ahí no tiene sentido seleccionarlo en los dos lados porque son
los mismos valores o se va a ver dos columnas repetidas o dos columnas que contienen los mismos datos.
No tiene mucho sentido si tiene sentido traer también videos ahí ahí está.
Ahora sí miren cómo se Grândola consulta la voy a copiar me vuelvo aquí.
Vamos a ver se cuele la pego y le ejecutã y miren miren qué inmensa tabla trae ahora.
Lamentablemente tenemos un solo video publicado pero ya tengo todos los datos el video y tres aquí a
la derecha lo publicó mi agrandará un poco el video 23 lo publicó el usuario 5 esta fecha la imagen
del usuario es ésta el último Lovin geste la AIPE con la que creó la cuenta es esta.
Miren tengo todas las columnas en una sola tabla sin embargo son dos tablas distintas.
Se imaginan la de relaciones que podríamos hacer en una estructura como las que estamos creando porque
imaginen que tenemos usuarios y videos pero luego vamos a tener otra tabla por ejemplo al un día que
se llame comentarios entonces voy a necesitar saber qué usuario hizo cada comentario y qué comentario
va en video.
Entonces aquí empieza a ponerse espeso y fuerte lo relacional es la verdadera potencia de este tipo
de bases de datos como Mahi SQL María deve etc..
Entonces ya teniendo esta consulta yo me puedo ir a PHP y desde PHP generarla y obtener los datos para
mostrar todos los videos por ejemplo.
Claro que sí.
Ahora bien no dejen de probar esto que les digo de copiar esta consulta probarla desde PHP pero esto
no se termina acá.
Si bien les voy a aconsejar que usen esto no dejen de estudiar por lo menos la estructura y la forma
que va teniendo la consulta para que nos vayamos familiarizando pero queda un tema pendiente y es el
inner join INNER JOIN.
Volvamos a liner a ver les quiero mostrar un pequeño gráfico sin mayor complejidad y van a ver infinidad
de estos gráficos si ponen en Google INER Llonín es lo que he hecho yo ahora.
Miren cómo funciona esto.
Nosotros tendríamos tabla usuarios a la izquierda y la tabla videos a la derecha y hemos hecho un INER
join.
Hemos cruzado algún valor que existe en ambas tablas que lo podemos usar como llave.
En este caso usamos el usuario Heydi el Inner join lo que trae es la intersección o sea va traer todos
aquellos usuarios que tengan un usuario ahí que exista en alguna fila de la tabla de la derecha.
En este caso videos.
Ahora bien si existe algún usuario que no tenga ningún video publicado no va a aparecer el usuario para
que aparezca el usuario sí o sí es usuario tiene que tener un video del otro lado si este usuario tiene
muchos videos del otro lado bueno van a salir.
Muchas veces el mismo usuario con distintos videos si lo vemos desde el otro lado va a pasar lo mismo
si hay
o si hay unos un video si hay un video que por alguna error o lo que fuere not like no tiene un usuario
correspondiente.
O sea se podría decir que no fue publicado por ningún usuario.
Supongamos que por un error borramos un usuario pero no borramos el video que había publicado.
Bueno cuando haga líneas Joyn no va a salir ese video no lo voy a ver en la lista final.
Veamos esto y lo probemos.
Miren repasemos lo que voy a hacer es venir a Valentina.
Quiero por las dudas volver a copiar la consulta acá tengo toda la consulta y miren esto
yo voy a agarrar y ni siquiera tengo que probar.
Yo no me había dado cuenta cuántos usuarios tengo acá.
Dos usuarios yo me había olvidado que tengo un segundo usuario así que miren me ahorro me ahorro tiempo
esto de tener el segundo usuario sin darme cuenta me vengo ese huele.
Voy a aplicar la consulta le doy continuar y díganme cuántos usuarios aparecen acá uno solo porque por
qué el otro usuario no tiene ningún video publicado no tiene ningún video publicado.
Ahora bien yo me vuelvo a la tabla usuarios y me fijo que este usuario que no publicó ningún video sí
tiene un usuario ahí es el 6.
Entonces me vengo de la tabla videos voy a insertar y no me voy a preocupar demasiado de escribir cualquier
R.L no me interesa es para probar pero voy a decir voy a simular que lo publicó el usuario 6 discontinuar
y vemos cómo ahora tengo un segundo video publicado por el usuario 6.
Ahora volvamos a ese cuelgue a la consola y vamos a ejecutar de nuevo Yeun y miren como ahora que apareció
un video para este usuario.
Ahora si salen las dos filas por qué.
Insisto porque Eleni en el INER Joyn tiene que existir en ambos lados para que aparezca el resultado
unido.
Ahora bien puede ser el caso que yo quiera tener la lista completa de usuarios y si es que tiene un
video que aparezca el video en cuestión.
Bueno en ese caso vamos a hacer lo que se llama como Left Behind.
Miren a ver vamos voy a borrar el video.
Este último video que hicimos de prueba a ver en videos este ultimo lo borra bien.
Mira voy a aplicar la misma consulta y ahora de nuevo va a aparecer una sola fila.
El otro usuario no aparece porque no ha publicado ningún video.
Voy a volver ese SQL voy a volver a pegar la consulta y lo que voy a hacer aquí es cambiar INER por
left que es izquierda.
Bueno vamos a probar y miren lo que pasó acá.
Un left in abarcaría todo esto en azul.
Todo este círculo.
A ver voy a buscar algún ejemplo.
Aquí está.
Yo no quería marear demasiado porque hay varias maneras de hacer esto.
Pero repasemos las las más usadas y Mersey en la que acabamos de ver la intersección sólo sale si están
en los dos lados left join.
El último ejemplo que hicimos vieron aunque este usuario no tiene ningún video publicado.
Sí que me trajo el resultado.
Sí miren en ver videos ahí dicen Nul.
Por qué no publicó ningún video en video fecha dice.
Por qué no.
Por qué no lo publicó.
Obvio.
Pero sin embargo el usuario me lo trae.
Bueno eso es el Left Behind porque le estoy diciendo bueno aunque no tenga nada a la derecha.
Vos traeme toda la tabla izquierda más cualquier coincidencia de la tabla derecha.
Bueno por supuesto que así como tenemos un Left Yeun tenemos un right in que es lo opuesto sería traeme
todos los videos y si alguno de los videos ha sido publicado por un usuario.
También quiero ver qué usuario era se dan cuenta por supuesto en toda consulta miren aquí esta está
la parte a donde las llaves se vinculan que se hace a través del on la llave de la tabla sea igual a
la llave de la table de la tabla.
Volvamos a Valentina para repasar algo y ya cerrar esta clase Valentina estudio una herramienta para
mí increíble que le tenemos que usar y nunca olvidarnos de leer lo que está haciendo la consulta o la
consulta que está generando este editor gráfico.
Y vamos a ver cómo de a poco vamos entendiendo más y más bueno clase árdua si las hubo en la próxima
clase le vamos a transmitir a ustedes un tip súper potente de lo que es Valentina estudio y mi escuela
en general.
Pero una manera muy práctica de hacer esto desde Valentina.
Les va a gustar van a ver muchísimas gracias por la compañía.
Nos vemos en la siguiente clase.