Curso completo de SQL y bases de datos desde cero para principiantes, con más de 7 horas y 80 lecciones enfocadas en MySQL y fundamentos profesionales.
Key Takeaways
- SQL es un lenguaje estándar fundamental para cualquier programador que trabaje con datos.
- Aprender SQL con MySQL facilita la transición a otros motores como PostgreSQL, Oracle o SQL Server.
- El curso cubre desde la instalación hasta consultas avanzadas y manejo de relaciones entre tablas.
- Es recomendable seguir el curso paso a paso para construir una base sólida en bases de datos.
- El soporte comunitario y recursos adicionales como GitHub y Twitch son clave para el aprendizaje continuo.
What the video covers
- Curso completo de SQL y bases de datos relacionales orientado a principiantes y usuarios sin conocimientos previos.
- Más de 7 horas de video y 80 lecciones que cubren desde conceptos básicos hasta temas avanzados.
- Enfoque principal en MySQL, el motor de base de datos más utilizado para aprendizaje, con una lección dedicada a PostgreSQL.
- Explicación detallada de más de 50 comandos SQL esenciales para trabajar profesionalmente con bases de datos.
- Incluye teoría, aplicación práctica, instalación, configuración y despliegue de bases de datos.
- Recomendaciones para seguir el curso de forma progresiva y aprovechar recursos como el repositorio de GitHub y archivos de código.
- Importancia del lenguaje SQL como estándar ISO y ANSI para bases de datos relacionales.
- Se abordan conceptos de tablas, relaciones entre datos, funciones SQL y tipos de joins.
- Curso impartido por Brais Moure, ingeniero de software con más de 13 años de experiencia.
- Se fomenta la participación en la comunidad, seguimiento en Twitch y uso de chat gratuito para resolver dudas.
Chapters
- 00:00 Introducción a SQL y bases de datos para programadores
- 24:16 Conceptos generales y estándar SQL
- 48:33 Instalación y configuración de bases de datos locales
- 72:43 Consultas básicas y manipulación de datos
- 121:39 Funciones SQL y operaciones avanzadas
- 145:56 Creación y gestión de tablas y relaciones
- 172:31 Tipos de relaciones y joins en SQL
- 197:30 Transacciones, bloqueos y buenas prácticas
Full Transcript — Download SRT & Markdown
Speaker A
Aprender a trabajar con bases de datos y el lenguaje SQL es una habilidad esencial como programadores. No importa cuál sea tu campo, ya que el concepto de almacenamiento y manipulación de datos está presente en todos, siendo SQL el lenguaje estándar utilizado en todos ellos.
Speaker A
lenguaje estándar utilizado en todos ellos Este es un curso completo de 7 horas en vídeo y más de 80 lecciones donde aprenderás más de 50 comandos sql desde cero para que no tengas ningún problema en trabajar a nivel profesional
Speaker A
Este es un curso completo de 7 horas en vídeo y más de 80 lecciones, donde aprenderás más de 50 comandos SQL desde cero para que no tengas ningún problema en trabajar a nivel profesional con bases de datos. ¿Te apuntas? Pues comenzamos a picar.
Speaker A
desarrollar proyectos frontend backend aplicaciones móviles juegos iot Machine learning Big Data Inteligencia artificial las bases de datos y el lenguaje sql está presente en todos ellos y como programador lo vas a usar en mayor o menor medida Solo tienes que
Speaker A
Bienvenidos a MoureDev by Bry Moure, tutoriales de programación y desarrollo de software. Mi nombre es Bry Moure. Soy ingeniero de software desde hace más de 13 años. No importa que te dediques a desarrollar proyectos frontend, backend, aplicaciones móviles, juegos, IoT, machine learning, Big Data o inteligencia artificial. Las bases de datos y el lenguaje SQL están presentes en todos ellos y, como programador, lo vas a usar en mayor o menor medida.
Speaker A
horas y más de 80 lecciones con todo el código sql disponible con conceptos desde cero y para principiantes pero donde llegaremos a temas más avanzados para que una vez lo finalices conozcas todos los fundamentos necesarios para trabajar con bases de datos relacionales
Speaker A
Solo tienes que revisar la encuesta de Stack Overflow a desarrolladores, la más grande del sector, donde sitúan a SQL como uno de los lenguajes más populares y necesarios profesionalmente.
Speaker A
de datos o el lenguaje el curso se va a centrar fundamentalmente en el motor de bases de datos mysql ya que es el más utilizado para el aprendizaje y cuenta con una grandísima comunidad para que puedas encontrar respuestas a cualquier
Speaker A
Déjame que te haga una pequeña introducción al curso. Como te he comentado, se trata de un tutorial de 7 horas y más de 80 lecciones, con todo el código SQL disponible, con conceptos desde cero y para principiantes, pero donde llegaremos a temas más avanzados para que, una vez lo finalices, conozcas todos los fundamentos necesarios para trabajar con bases de datos relacionales y SQL a nivel profesional.
Speaker A
aprendas cómo funciona en uno de estos sistemas tendrás todo lo necesario para aprender cualquier otro Por eso nos vamos a centrar en el más utilizado a nivel de estudio Eso sí decirte que también dedicaré una lección a postgresql para que veas que hacer el
Speaker A
Y, por supuesto, una base sólida para seguir aprendiendo. Haremos un repaso por todos los conceptos que considero más importantes, desde la teoría, su aplicación práctica, instalación, configuración y despliegue, sin que necesites conocimientos previos de bases de datos o el lenguaje.
Speaker A
presentes en primer lugar conta que el curso ha sido llevado a cabo desde Twitch y que te agradecería mucho que me sigas en esta red donde de lunes a viernes Estoy en directo programando y hablando sobre desarrollo de software el
Speaker A
El curso se va a centrar fundamentalmente en el motor de bases de datos MySQL, ya que es el más utilizado para el aprendizaje y cuenta con una grandísima comunidad para que puedas encontrar respuestas a cualquier pregunta que te surja.
Speaker A
recomiendo que si tienes dificultades para seguir el código sql que voy a ejecutando tengas presente el archivo asociado allí podrás encontrar una explicación y también el enlace al vídeo También tiene Tienes todas las secciones divididas en la descripción de este
Speaker A
Aún así, es muy posible que te preguntes: ¿qué pasa si quieres aprender cualquier otro motor de bases de datos? PostgreSQL, SQL Server, DB2, Oracle, MariaDB, SQLite. Ten esto muy presente: SQL es un estándar. Una vez aprendas cómo funciona en uno de estos sistemas, tendrás todo lo necesario para aprender cualquier otro.
Speaker A
Y en segundo lugar que dejes tu like en el repositorio de github simplemente pincha en el botón Start de esta manera me ayudas a apoyar el proyecto por último recordarte que puedes unirte al servidor de chat gratuito de la
Speaker A
Por eso nos vamos a centrar en el más utilizado a nivel de estudio. Eso sí, decirte que también dedicaré una lección a PostgreSQL para que veas que hacer el cambio a otro motor no implica un gran esfuerzo con todo lo que aprenderemos durante el curso.
Speaker A
comunidad como siempre te recomiendo que realices el curso poco a poco que entiendas y practiques cada lección para conseguir unas bases y un conocimiento más sólido dicho esto Espero que este curso te resulte de mucha utilidad y que
Speaker A
Como siempre, lo importante son las bases y los fundamentos.
Speaker A
programación no es sql es un lenguaje de consulta esto quiere decir que no podemos desarrollar aplicaciones Bueno lo utilizaremos en una parte muy concreta de las aplicaciones pero no os preocupéis porque iremos ya digo poquito a poco sql en realidad significa
Speaker A
¿Cómo te recomiendo que lleves a cabo el tutorial? Estos son los recursos que debes tener siempre presentes.
Speaker A
utiliza más menos no no no no eh fijaos Al Punto que ha llegado sql que si nosotros hablamos de bases de datos la opción que tenemos de lenguaje sql no es como cuando hablamos de webs y aquí alguien puede decir no yo puedo hacer
Speaker A
En primer lugar, cuenta que el curso ha sido llevado a cabo desde Twitch y que te agradecería mucho que me sigas en esta red, donde de lunes a viernes estoy en directo programando y hablando sobre desarrollo de software.
Speaker A
tiene Este lenguaje de programación para bases de datos relacionales Qué pasó con Este lenguaje Pues que se acabó convirtiendo en el estándar las bases de datos no existían antes de que apareciera sql no las bases de datos en
Speaker A
El lugar más importante para llevar a cabo el curso es su repositorio de GitHub. Allí encontrarás el listado con todas las lecciones, el enlace al fragmento de vídeo donde se explica cada concepto y el código asociado a dicha lección.
Speaker A
montón de ficheros Y eso era lo que conformaba la base de datos Qué pasa guardar la base de datos o trabajar con la base de datos en cierto modo no era excesivamente complejo Porque eran ficheros Pero qué era lo verdaderamente
Speaker A
Te recomiendo que, si tienes dificultades para seguir el código SQL que voy ejecutando, tengas presente el archivo asociado. Allí podrás encontrar una explicación y también el enlace al vídeo.
Speaker A
almacén era muy difícil relacionar todos esos datos todo ese montón de datos entonces lo que apareció fue esta alternativa el decir no vamos a evolucionar las bases de datos Pero a repensar cómo va a ser esa forma de
Speaker A
También tienes todas las secciones divididas en la descripción de este vídeo.
Speaker A
sino que ya entra un poco el concepto de tabla Okay ya tenemos un motor creado expresamente para poder trabajar con datos que se interrelacionan entre ellos así que así es como parte el concepto Cómo empieza el concepto de base de
Speaker A
Este es un curso gratis y solo te voy a pedir un par de favores.
Speaker A
datos que yo tengo que utilizar o qué pasa con sql sql es un estándar es un estándar que está regulado por una norma ISO por una norma ansi seguramente este tipo de cosas os suenan un poco más Qué
Speaker A
En primer lugar, que compartas el vídeo en redes sociales y donde quieras para que llegue a más gente que, como tú, está aprendiendo.
Speaker A
estándar ansi en el año 86 y un estandar ISO en el año 87 así que cualquier motor de base de datos cualquier herramienta cualquier persona que diga Es que voy a crear mi propia base de datos que lo va
Speaker A
Y en segundo lugar, que dejes tu like en el repositorio de GitHub. Simplemente pincha en el botón Star. De esta manera me ayudas a apoyar el proyecto.
Speaker A
unos parámetros muy concretos seguirá una estructura muy concreta Y eso es a lo que nos vamos a ceñir sobre todo en este curso aunque después hablamos de especializaciones del lenguaje vale Ya sabemos qué es sql no os voy a contar
Speaker A
Por último, recordarte que puedes unirte al servidor de chat gratuito de la comunidad en Discord, donde encontrarás un canal llamado Bases de Datos para que allí dejes tus preguntas, compartas y apoyes a la comunidad, y donde también vas a encontrar una sección llamada Eventos con todas las actividades que se llevan a cabo a diario desde la comunidad.
Speaker A
os hablaba de una base de datos ahí orientada a ficheros pero una base de datos al final no deja de ser un sistema que nos permite almacenar datos cómo piensas que funcionan el 99% de las aplicaciones del mundo dónde crees que
Speaker A
Como siempre, te recomiendo que realices el curso poco a poco, que entiendas y practiques cada lección para conseguir unas bases y un conocimiento más sólido.
Speaker A
muchos casos en una base de dato relacional una base de datos que tiene dependencia un objeto con otro objeto con otro objeto con otro objeto con otro objeto y esto lo que nos va a permitir sql es consultar todos esos datos de una
Speaker A
Dicho esto, espero que este curso te resulte de mucha utilidad y que me dejes en comentarios lo que tú quieras.
Speaker A
eso significará que también empezarán a llegar usuarios y empezarán a consumir la base de datos vamos a ejemplificarlo de una manera pues bueno yo creo que para que nadie tenga ninguna dudas sobre esto vamos muy rápido a ver este tipo de
Speaker A
Ahora sí, bienvenido y bienvenida al curso completo de SQL y bases de datos relacionales desde cero.
Speaker A
representar Pues no lo sé con estos circulitos Aquí está una persona otra persona otra persona otra persona quien dice persona dice una aplicación una web un frontend web imagínate una web y una app iOS y una app Android y Aquí también
Speaker A
[Música]
Speaker A
si tiene pero me lo invento como si lo tuviera cuando tú escribes tu usuario y contraseña dónde crees que se consulta eso se acabará validando en la base de datos si de verdad el usuario y la contraseña que tú acabas de meter Pues
Speaker A
Partamos por lo primero: SQL. ¿Qué es SQL?
Speaker A
guardado pues estará guardado en la base de datos cada uno de estos usuarios no exactamente así a las bases de datos pues se accede a través de un Api lo que sea pero vamos a hablar del concepto general digamos que lo que tenemos aquí
Speaker A
SQL es un lenguaje, es un lenguaje de programación. No, es SQL es un lenguaje de consulta. Esto quiere decir que no podemos desarrollar aplicaciones. Bueno, lo utilizaremos en una parte muy concreta de las aplicaciones, pero no os preocupéis porque iremos, ya digo, poquito a poco.
Speaker A
eh según donde estemos pues igual este servidor remoto está en Estados Unidos O está en este caso en España o yo que sé donde esté Pero bueno no pase de ser algo físico que nosotros al lo que estamos accediendo es al frontal web o
Speaker A
SQL en realidad significa Structure Query Language, traducido lenguaje de consulta estructurada. Es un lenguaje que aparece por el año 1970. Es uno de los lenguajes más antiguos que han llegado a la actualidad y que lo petan básicamente.
Speaker A
el punto común Qué significa que las bases de datos también van a tener que gestionar que muchos usuarios empiecen a acceder a ellas a acceder a ellas de una manera incluso concurrente Qué pasa si el mismo usuario está desde el móvil y
Speaker A
Esto no es NoSQL. Se utiliza más o menos, no, no, no, no. Fijaos al punto que ha llegado SQL, que si nosotros hablamos de bases de datos, la opción que tenemos de lenguaje es SQL. No es como cuando hablamos de webs y aquí alguien puede decir: no, yo puedo hacer una web con Python, con JavaScript, con Java, con PHP. No, no, no, no, no. Hablamos de bases de datos relacionales. ¿Qué opciones hay? SQL. Y si no nos gusta SQL, SQL.
Speaker A
aunque esto podríamos hablar de réplicas de bases de datos bueno podríamos hablar de muchas cosas pero para entender el concepto general digamos que nosotros tenemos algo en un servidor remoto y que mucha gente pueda acceder a la vez ahí Y
Speaker A
Así que fijaos la importancia que tiene este lenguaje de programación para bases de datos relacionales.
Speaker A
los estrenos que los lleva aparte las tablas con los tiempos las tablas con tu lista de amigos lo que sea y después Aquí ya veremos qué pasa Porque será donde empiezan pues tod relaciones Aquí hay una tabla que se relaciona con esta
Speaker A
¿Qué pasó con este lenguaje? Pues que se acabó convirtiendo en el estándar. Las bases de datos no existían antes de que apareciera SQL. No, las bases de datos en realidad es un concepto bastante temprano. Las bases de datos, las primeras bases de datos inicialmente eran basadas en ficheros. ¿Qué hacíamos en base de datos? Pues teníamos un fichero donde escribía texto y donde se guardaba ese texto y ya está. Y empezamos a guardar un montón de ficheros.
Speaker A
a este no que sé me lo invento vale es decir tenemos una estructura de alguna forma aislada Qué pasa que aquí como lo veremos en el curso todo esto que interpretamos como la nube nosotros lo vamos a correr en nuestra máquina local
Speaker A
Y eso era lo que conformaba la base de datos.
Speaker A
viendo cómo una aplicación puede acabar consumiendo una base de datos en remoto eso también lo acabaremos viendo Pero por supuesto cuando ya tengamos muchísimos más conceptos dados y muchísimos más conceptos avanzados se entiende más o menos un poco lo que es
Speaker A
¿Qué pasa? Guardar la base de datos o trabajar con la base de datos, en cierto modo, no era excesivamente complejo porque eran ficheros.
Speaker A
concepto bastante importante que son las bases de datos relacionales y también lo que llamamos bases de datos no relacionales vamos a explicar estos dos conceptos básicamente porque el curso se va a centrar en las bases de datos relacionales lo voy a explicar también
Speaker A
Pero, ¿qué era lo verdaderamente complejo? Relacionar todos esos datos. Si yo tengo un fichero en el que guardas, imagínate, nombres de clientes, y en otro fichero lo que ha comprado cada cliente, y en otro fichero el stock de los productos que tienes en el almacén, era muy difícil relacionar todos esos datos, todo ese montón de datos.
Speaker A
que es una tabla no os preocupéis de momento pero esos datos esas tablas que nosotros podemos tener Pues con usuarios con las películas con los likes que os estaba comentando por aquí guarda relaciones relaciones de tipo vale tenemos una tabla de usuarios qué
Speaker A
Entonces, lo que apareció fue esta alternativa: el decir, no, vamos a evolucionar las bases de datos, pero a repensar cómo va a ser esa forma de estructurarlas.
Speaker A
películas tod las películas que tienen el catálogo Netflix Pero de alguna forma si nosotros entramos en la aplicación Netflix nos dice ey que Bris ha visto la película uno la cinco y la ocho de nuestro catálogo Pues de alguna forma
Speaker A
Y ahí es cuando apareció, por nada, por contaros muy, muy, muy rápido de qué va esto de las bases de datos relacionales.
Speaker A
y así con cada una de las relaciones Esto es lo que significa una relación que las tablas en realidad pueden de alguna forma interrelacionarse y pueden tener dependencia una tabla con la otra al contrario Qué son las bases de datos
Speaker A
Cuando apareció el concepto de bases de datos relacionales, lo que se guardan ya no son ficheros, sino que ya entra un poco el concepto de tabla.
Speaker A
relacionades pero como si fuera una tabla de usuarios y podemos tener también el documento de las películas pero en realidad no somos capaces entre comillas también hay formas Pero inicialmente no está pensado para que nosotros podamos relacionar muy
Speaker A
Okay, ya tenemos un motor creado expresamente para poder trabajar con datos que se interrelacionan entre ellos.
Speaker A
bien Cómo funcionan los dos tipos de bases de datos y según los datos que yo tenga que modelar según las necesidades de mi aplicación de mi proyecto decir mira tengo este dato Este dato Este dato qué hacemos base de datos relacional o
Speaker A
Así que así es como parte el concepto, cómo empieza el concepto de base de datos.
Speaker A
grandes rasgos la característica que tenemos que tener en cuenta tenemos datos que se tienen que relacionar de forma profunda base de datos relacional tenemos datos que en realidad lo que queremos es acceder muy rápido a ellos pero que no queremos relacionarlo con
Speaker A
¿Qué pasó con SQL? Pues bueno, SQL se empezó a utilizar muchísimo, pero yo también os estaba comentando aquí en la introducción que no os tenéis que preocupar por absolutamente nada.
Speaker A
relacionales pues son sql es más complicado un tipo de base de datos que otra Yo diría que No necesariamente porque podemos hacer grandísimas cosas con los dos tipos de bases de datos Y ahora aquí viene lo más importante Pero
Speaker A
No os tenéis que preocupar absolutamente nada con qué cuál es el motor de base de datos que yo tengo que utilizar o qué pasa con SQL.
Speaker A
Netflix hay unas cosas que las guarda en bases de datos relacionales Y hay otras que las guarda en bases de datos no relacionales porque así optimiza los datos de su sistema de la manera que más le favorece para las necesidades que
Speaker A
SQL es un estándar. Es un estándar que está regulado por una norma ISO, por una norma ANSI. Seguramente este tipo de cosas os suenan un poco más.
Speaker A
en profundidad porque la utilizamos más en nuestro día a día Pero en principio ya os digo que son conocimientos pues esenciales diría yo y que todo el mundo tiene que [Música] tener volviendo a las bases de datos relacionales al final lo que hacemos Es
Speaker A
¿Qué significa? Que lo que tú puedes hacer con SQL es lo que está metido, es lo que está metido en la especificación.
Speaker A
sintaxis muy concreta establecer condiciones para que los datos funcionen de una manera concreta o para que los datos se nos devuelvan de una manera concreta o para poder realizar operaciones de escritura de borrado de actualización sobre nuestra base de
Speaker A
Y SQL qué es, un estándar desde el año pasado. No, SQL es un estándar desde el año 86. Es un estándar ANSI en el año 86 y un estándar ISO en el año 87.
Speaker A
mecanismo decimos sql sql es el lenguaje Y tenemos el concepto de la base de datos y de la base de datos relacional pero ahora es donde entra esto que yo os llamaba al principio paranol liaros esos motores de bases de datos es vale
Speaker A
Así que cualquier motor de base de datos, cualquier herramienta, cualquier persona que...
Speaker A
implementar todo el funcionamiento del estándar sql y aquí es donde surgen las dudas y donde empiezan a aparecer las opciones e brce que si my sequel e Bris que si d2 e Bris que si sql server lo que sea simplemente son diferentes
Speaker A
implementaciones que a según el época en la que vivamos unas molaban más que otro otras iban más arriba otras iban más abajo a día de hoy ya estoy os comenté antes que seguramente my sql es la que más utiliza para aprender Y también
Speaker A
mucho en empresas que postgres también se está utilizando mucho y que otro tipo de bases de datos que teníamos hace 20 años ya en el mundo como puede ser Oracle como puede ser un dv2 dv2 es de la gente de IBM esas eran las
Speaker A
grandísimas empresas que eran especialistas en bases de datos sobre todo era software privativo era Software que teníamos que pagar por él pues Donde antes utilizaba mucho ese tipo de sistemas ahora han quedado relegado un poquito al ecosistema más Enterprise a
Speaker A
las grandísimas empresas que tienen igual sistemas de bases de datos muy complejos o también antiguos porque no es tan fácil andar cambiando de de gestor de base de datos Pero lo bueno es que las bases de datos de código libre
Speaker A
también se yo creo que han democratizado mucho el uso de bases de datos potentísima pero digo potentísima prácticamente a la altura de las que está desarrollando Oracle o que está desarrollando IBM las podremos utilizar de código libre sin ningún problema y
Speaker A
aquí todas las que vamos a ver pues por supuesto son gratuitas por hacer un repasito muy tonto a estos sistemas de gestión de bases de datos a estos de bms como estaba diciendo Yo aquí las siglas vamos a hacer un repaso superrápido os
Speaker A
voy a hablar de los principales para también acabar quedándonos en lo que más nos interesan os hablaba por aquí de Oracle deb ponía por aquí pues bueno tenemos bases de datos de Oracle Oracle ya sabéis que son los dueños de Java
Speaker A
pues uno de sus grandes productos pues son las bases de datos de Oracle Okay hablábamos de IBM db2 por ejemplo pues IBM otra de las grandísimas empresas a nivel tecnológico y más históricas pues uno de los puntos donde fue más fuerte a
Speaker A
lo largo de toda su vida fue en bases de datos Pues también tenemos dv2 est igual os suena más sqlite os suena sqlite es una base de datos relacional eh sql H bastante simple para proyectos s super super grandes no se utiliza tanto pero
Speaker A
sí que es cierto que para aprender o para proyectos modestos nos puede servir de sobra más bases de datos que nos puede sonar María de B María estoy escribiendo María de B María de B aquí estoy hablando de bases de datos de
Speaker A
código abierto ya estas últimas de las que estaba nombrando pues María deb también es otra base de datos que lo Peta eh hemos hablado de hora call hemos hablado de IBM sql server es la base de datos de Microsoft También tenemos una
Speaker A
base de datos de Microsoft y ahora llegamos a la recta final postgres sql es una de las bases de datos si no la base de datos más popular que tenemos actualmente y en el curso hablaremos de postgres pero sí que es cierto que nos
Speaker A
vamos empezar centrando en En mysql qué tienen en común todo lo que hemos visto que my sequel también es de Oracle y también tiene una parte privativa pero también tiene otra parte que la podemos usar en su versión Community Community
Speaker A
en su versión gratuita Así que muy claro todo esto todas estas bases de datos veis que he nombrado bastantes y creo que esto puede asustar al principio y decir Jo Y si al final en el curso no vemos la que yo quiero aprender No pasa
Speaker A
nada porque volvemos a lo mismo y si queréis hasta creo que me dejé aquí apuntado la página web del standar ISO de sql veis que tenemos una última publicación del standar ISO del 2023 este estándar sigue evolucionando y este
Speaker A
estándar sigue marcando Hacia dónde hay que ir donde esté el standar ISO a mí me da igual cuál sea la base de datos que yo esté utilizando porque la gran mayoría de mecanismos son los del estándar y me da igual que sea sql
Speaker A
server que sea Oracle que sea el dv2 que sea my sequel que van a tener que seguir este estándar ISO Así que no os preocupéis por todo lo que os acabo de soltar así de golpe por todas estas
Speaker A
herramientas que no va a importar tanto nos centraremos en una pero ya digo que no será importante [Música] ya parece que nos vamos a meter en esos motores no en esos sistemas de gestión de bases de datos Pero antes de nada
Speaker A
aparte de mysql y postgres que son con los que nos vamos a quedar principalmente pero que ya hablaremos de ellos os quiero pasar otra página brce quiero conocerme los fundamentos de sql sql tiene algo muy bueno que es un
Speaker A
estándar pero tiene algo muy malo que no tiene una web oficial como tal muchas veces cuando pensamos en lenguajes de programación digo Ah python pues me voy a python.org y ahí tengo todo perfecto lo de python Este es un lenguaje tan
Speaker A
antiguo en primer lugar y que está tan extendido que en realidad no funciona el punto este de a ver si tengo la página web oficial para enseñarme todo perfectamente y hacer mi mi Getting started y no sé qué no lo vamos a tener
Speaker A
así pero lo que sí que tendremos lo que sí que tendremos es esto una de las mejores páginas para aprender fundamentos a nivel de desarrollo de software eh son los w3 schools y aquí igual que tenemos de un montón de
Speaker A
lenguajes por supuesto También tenemos una parte dedicada a sql es un tutorial sql desde cero y H desde mi punto de vista permitirme que diga esto creo que para gente que está iniciando es la mejor documentación que existe Hay
Speaker A
muchísimas páginas web que nos hablen de los fundamentos de sql tutoriales de sql nos van a sobrar en Google adelante pero creo que esta web y esta web os la dejaré la podéis encontrar en los recursos esenciales del curso os podéis
Speaker A
ir a repositorio cuando lo tenga todo actualizado y os dejaré esta web porque aquí vamos no me quiero parar en esta web Pero simplemente para que veáis que aquí va instrucción por instrucción hablando de cada una de cada cosa que
Speaker A
tiene la base de datos a nivel de referencia a nivel de ejemplos a nivel de tutorial todo todo todo todo por lo menos a nivel más generalista a nivel de estándar sql va a estar aquí aquí nos va
Speaker A
a hablar independientemente de si el my sequel que si el postgress que si el María deb y esto es precisamente lo que de verdad tenemos que aprender después por qué entonces existen todas esas opciones todos esos gestores de base de
Speaker A
datos Porque después sí que van a existir peculiaridades sí que es cierto que my sequel va a tener alguna cosilla que no tiene postgres o aunque tenga lo mismo igual en un sitio hay que utilizarlo de una forma y en otro sitio
Speaker A
hay que utilizarlo de otra forma pero eso ya son peculiaridades para ayudarnos y para poner en práctica diferentes conceptos a la hora de llevar a cabo cómo funciona sql pero después ya sin más con el concepto que ha tenido cada
Speaker A
empresa o lo que sea vale para llevar a cabo esa implementación concreta de sql pero ya digo que aquí Vais a tener lo principal aquí se os hace introducción os dice cómo funciona hay ejemplos nos permite ir ejecutando poquito a poco
Speaker A
veis puedo tener mi propio servidor y ya puedo ir lanzando los eh cada uno de los ejemplos para ir probando yo os lo voy explicar todo desde cero pero que sepáis que si necesitáis alguna referencia alguna web no oficial porque la web
Speaker A
oficial es es el PDF de 5000 hojas de la especificación pero una de las webs mejor o con más reputación del mundo del desarrollo de software Pues aquí la tenéis Así que si queréis empezar por algún lado por favor empezar por aquí
Speaker A
porque yo creo que os va a simplificar bastante la vida una vez ya tenemos esto lo que me gustaría o lo siguiente de lo que me gustaría hablar antes de ya noos al lío y de decir vale cómo funciona sql
Speaker A
cómo funciona my sequel vamos a hablar de los fundamentos principales de las bases de datos a nivel teórico porque si no entendemos los fundamentos también va a ser muy difícil que después nosotros empecemos como a poder llevarlo a
Speaker A
práctica siento mucho esta primera clase porque esta primera clase es como de ver pocas cosas y de hablar mucho o de meter mucha teoría Pero creo que es la mejor forma habitualmente siempre suelo dedicar un poquito más de tiempo a la
Speaker A
parte parte teórica y a la parte de este onboarding a la parte de estas primeras horas en el curso para que quede todo más claro y que después nadie se asuste y por lo menos que os suenen los
Speaker A
conceptos que yo no llegue y diga venga vamos a lanzar una query y esta query Va a hacer una consulta con una tabla y esta tabla Le vamos pasar unos atributos mirar la sintaxis y mirar cómo agrupa los datos con columnas filas no sé qué
Speaker A
venga vamos a pararnos poco a poco en cada uno de estos conceptos Porque seguramente así también os quedan reflejados y queda un poco todo más entendible de alguna forma Así que venga volvemos por aquí alienz y vamos a
Speaker A
empezar a dibujar cosillas y a explicar un poco Cuáles son estos fundamentos de las bases de datos fundamentos de base de datos aquí aún no voy a estar hablando de sql sino Qué es una base de datos Y qué nos podemos encontrar en una
Speaker A
base de datos nosotros inicialmente os decía que tenemos la base de datos ese sistema de gestión yo puedo tener ese sistema de gestión que es mi base de datos Mi base de datos dentro va a contener unos elementos que son típicos
Speaker A
en todas las bases de datos y que esto no nos importa Con qué motor de base de datos estos trabajando así que vamos a empezar a entender esos conceptos el primer concepto del que yo os quiero hablar es el concepto de entidad la base
Speaker A
de datos al final sirve para representar datos pero sirve para representar objetos de bases de datos algo que en cierto modo tiene que ser tangible y entendible por nosotros por qué Porque si no no tendría mucho sentido Si no
Speaker A
casi nos estaríamos volviendo a convertir en una base de datos a nivel de ficheros que yo no sé muy bien lo que hay por ahí igual que si pensamos en un lenguaj de programación orientado de objetos donde todo nuestro código parece
Speaker A
que está dividido por ejemplo por clases donde cada clase nos especifica qu qué está modelando o qué está representando Aquí también tenemos el concepto de entidad vamos a poner el ejemplo un concepto de entidad sin más volviendo a
Speaker A
lo de antes el concepto de entidad podría ser programadores Esta es nuestra entidad una entidad que va a representar a un programador Este es el objeto esto es de verdad el dato que nosotros queremos Representar en forma agrupada
Speaker A
tenemos unos programadores eso es la entidad dónde representaremos cada una de las entidades Aunque sí que es cierto que una entidad pues puede acaba representando un grupo de cosas pero vamos por lo más simple aquí es donde entra el concepto de tabla una base de
Speaker A
datos estará conformada por tablas Así que vamos a meter esta entidad dentro de una tabla y vamos a representar como que esta tabla tiene un nombre este nombre en concreto va a hacer referencia a la entidad ya digo que una entidad no tiene
Speaker A
que ser únicamente una tabla una entidad puede ser una agrupación incluso de tablas pero lo más simple es que nosotros entendamos esto como una unidad igual que tenemos la tabla programadores Pues no lo sé imagínate que yo tuviera
Speaker A
otra tabla por aquí y que los programadores igual que estamos modelando un sistema que va a guardar programadores pues tenemos lenguajes tenemos un sistema que va a ser capaz de guardar diferentes lenguajes de programación eso tiene todo el sentido
Speaker A
que sea una nueva tabla No pues venga vamos a modelar este objeto esta entidad que van a ser los lenguajes qué tendré os que hacer con estas tablas estas tablas van a guardar datos Pero cómo va a guardar los datos los datos estarán
Speaker A
representados de dos formas vamos a hacerlo aquí como si fuera explicarlo de una forma Yo creo que un poquito más rápido tendremos los datos que son las filas dentro de cada tabla podremos decir que esa tabla estará formada por
Speaker A
lo que es una fila y una columna Así que voy a empezar aquí a meter diferentes filas en la tabla para qué va a servir esta representación de las filas por la representación de las filas a lo que
Speaker A
hace un poco alusión en este caso la tabla de programadores Pues será a programadores básicamente Quién es un programador pues bry es un programador Y quién es un programador pues Sara es una programadora pues Carlos es un programador Vale pues esto Serán las
Speaker A
filas tendremos un montón de registros agrupados en filas Pero qué quiere decir que cada fila solo puede guardar un dato cada fila solo puede guardar un nombre no en realidad una tabla como estaba diciendo va a estar formado por filas
Speaker A
pero también va a estar formado por columnas esto significa que por ejemplo columna tengo una fila esto en singular mejor esto es una fila Esta es otra fila Esta es otra fila Esta es otra fila donde va a tener datos pero también
Speaker A
tenemos columnas Qué son las columnas pues la columna también formará parte de esta tabla columna columna qué serán las columnas Pues será cada uno de los diferentes atributos asociados a un registro vamos a poner un ejemplo muy fácil vamos a poner un ejemplo un
Speaker A
ejemplo podría ser esto donde nosotros tenemos una fila qué vamos a tener en esta fila pues por ejemplo nosotros en esta fila si yo le meto un texto podría ser un identificador un identificador Pero qué más cosas podríamos tener
Speaker A
aparte del identificador Pues yo creo que aparte del identificador podemos tener el nombre del usuario Cuál es el identificador Pues un ID uno pero Cuál es el nombre pues en este caso bry moure por ejemplo y cuál es el username Pues
Speaker A
podría ser mouredev en este caso y cuáles son los lenguajes que utiliza pues utiliza python Swift Y cing pues también tengo por aquí los lenguajes que utiliz abráis qué va a representar esto todo esto todo este cuadradito será la
Speaker A
fila y cada uno de estos bloques que estamos viendo por aquí en realidad será una columna esto podría ser la representación de una fila aquí qué vamos a acabar encontrando pues lo que os Decía si empezáramos a duplicar todo
Speaker A
esto aquí serían los lenguajes no lenguajes imagínate Pero a qué traduc diríamos todo esto Pues que el ID es el uno que el nombre es bry que el username es mouredev y que los lenguajes es python y Swift Entonces tenemos una fila
Speaker A
con cuatro columnas una tabla que en realidad lo que va a guardar son atributos porque cada columna está representando un atributo qué atributo un atributo ID un atributo nombre un atributo surname un atributo langues cada fila va a tener siempre cuatro
Speaker A
atributos en este caso pero cuántas filas va a tener la tabla pues la tabla va a tener n filas si solo hay un usuario Pues tendrá una fila si no hay usuarios tendrá cero si hay 100 millones de usuarios Pues tendrá 100 millones de
Speaker A
filas pero esos atributos Al fin y al cabo es lo que acaba representando lo que es la entidad programadores la entidad lenguajes qué podía ser pues más de lo mismo tener un identificador tener el nombre del lenguaje tener yo que sé
Speaker A
la URL del lenguaje Podría tener Cuál es la web oficial del lenguaje porque también queremos guardar ese tipo de datos pero ahora lo siguiente es es que muy bien la tabla programadores representa los programadores la tabla lenguaje representa los lenguajes Pero y
Speaker A
si yo ahora quiero llegar aquí y digo mira qué hago bryce en realidad es Dios bry en realidad es una especie de Dios el lenguajes de programación y bry se sabe 100 lenguajes de programación así que qué hago Voy a venir y voy a decir
Speaker A
cuáles son los lenguajes de programación para guardarlos en la tabla pues se sabe Swift se sabe coling se sabe python se sabe javascript se sabe typescript pero en realidad son 100 qué hago meto separados por comas los 100 lenguajes de
Speaker A
programación no para eso tenemos una base de datos que tiene todos los lenguajes de programación que existen qué haría yo aquí pues igual tan fácil como decir no no no te preocupes igual lo que tú vas a acabar guardando es que
Speaker A
brce es capaz de acceder a diferentes identificadores esto le acabaremos dando más vueltas pero os voy a indicar para que veáis un poquito Cuál es ese concepto de relación igual bry se sabe el lenguaje uno el lenguaje dos el
Speaker A
lenguaje 5 y el lenguaje 84 identificadores de esos lenguajes Qué significa que esta tabla programadores que yo estoy viendo aquí pues tiene algún tipo de relación con la traba lenguajes y así únicamente relacionando los datos que modela cada entidad cada
Speaker A
tabla somos capaces de montar un sistema mucho más rico si yo metiera el nombre de los lenguajes aquí solo tendría el nombre de los lenguajes y Podría tener errores Imagínate que en vez de escribir python con y la escribo con i latín ya
Speaker A
tendría un error ya se irían todos los datos ya veis Qué fácil sería cometer errores En cambio Si yo guardo identificadores Yo sé que en esta tabla siempre va a estar bien guardado el nombre que tiene python y aparte nos va
Speaker A
a dar otros datos como puede ser la URL de la página web oficial podemos hacer que eso sea una entidad que no sea un nombre únicamente ahora simplemente parar a pensar un minuto En cuáles podrían ser las diferentes tablas que
Speaker A
puede tener Netflix que estábamos poniendo de ejemplo pues igual Netflix tiene cient de tablas diferentes y miles de relaciones en las tablas y millones y millones y millones de datos en cada tabla pero el concepto general el concepto de una base de datos relacional
Speaker A
es esto que estáis viendo aquí Cómo tenemos una entidad Cómo tenemos una tabla Cómo una tabla puede representar a una entidad Cómo una entidad puede estar representada por una o o por más tablas porque igual nosotros lo que queremos
Speaker A
representar es una idea conceptual que no nos llega una tabla que nos queda mucho más bonito o mucho más entendible o mucho más seguro si creamos más de una tabla pues perfecto se crean más de esas tablas qué más cosas tenemos estábamos
Speaker A
hablando de que esas filas y esas columnas pero que las columnas están representando los atributos esas características y que después entre las tablas existen relaciones Qué tipo de relaciones hablaremos también con calma de los tipos de relaciones pero vamos a
Speaker A
hablar muy rápido del concepto relacional el concepto relacional vamos a entender esto un usuario Cuántos lenguajes puede saber Imagínate que tuviéramos una restricción o que tuviéramos en una tabla no lo sé el dni del usuario un usuario puede tener
Speaker A
varios dnis varios usuarios pueden tener el mismo dni que yo sepa no aquí es donde entra la relación que Nosotros llamamos uno a uno okay una relación que nosotros podemos especificar esto lo veremos todo con más calma eh pero lo
Speaker A
que llamamos relación uno a uno un registro de la tabla solo tiene relación con otro registro de otra tabla sin más un usuario solo puede tener un dni si nosotros tuviéramos aquí una tabla de dnis el usuario bry solo Podría tener
Speaker A
una relación con el dni con otro registro con otra fila de otra tabla ya digo que esto ya lo veremos con mucha más calma cuando tengamos una base de datos real no os preocupéis así aquí solo estoy hablando de los conceptos
Speaker A
pero también podremos tener relaciones lo que se llaman 1 a n lenguajes de programación Cuántos lenguajes puede saber bryce Pues igual bry puede saber 20 lenguajes Y si los usuarios los guardamos en una tabla los programadores los guardamos en una tabla y los
Speaker A
lenguajes en otra tabla querrá decir que bryce la fila bryce puede tener una relación aquí con muchos lenguajes que esto no se modelarías exactamente ya os enseñaré Cómo se modela Pero simplemente para que entendáis los conceptos aquí volvemos a tener filas una fila puede
Speaker A
ser python otra fila puede ser Java otra fila puede ser javascript pero la fila que representa bry es solo una aquí pero la fila que representa los lenguajes que sabe Bris no es una igual son dos igual son tres igual son 100 igual es ninguna
Speaker A
con lo cual una fila podría acabar teniendo una relación con tres filas de otra tabla Aquí es donde tenemos una relación de uno a varios Y por último por simplificarlo es donde tenemos la relación de varios a varios que a veces
Speaker A
también podéis ver el varios especificado con un asterisco Bueno ya nos centraremos más en esa parte Qué significa de varios a varios que varias filas varios registros de una tabla también a m a n podremos ver muchas formas no ya os explicaré esa teoría
Speaker A
después Un poquito más adelante pero por quedarnos solo con una letra y con el uno pero bueno es lo que se llama la relación de muchos a muchos de varios a varios lo que significa es que muchas personas pueden acceder a muchos
Speaker A
lenguajes Okay que esto es la realidad en realidad nosotros podríamos acabar llegando a un tipo de relación donde igual en los datos que nosotros tenemos en esta tabla también se pueden relacionar con muchas personas de esta otra tabla ya no solo con una única os
Speaker A
fijáis así Se podrían empezar a cruzar los datos de ambas tablas donde muchas filas pueden acabar teniendo relación con muchas otras filas pero en realidad son dos tablas distintas estos son los fundamentos más más más más básicos de
Speaker A
las bases de datos pero por pasar ya al siguiente punto vamos a hablar un poco a nivel más pormenorizado de lo que son estos atributos ya nos pararemos después en todo esto Estos son como los fundamentos porque no quiero ponerme a
Speaker A
instalar una base de datos sin que antes por lo menos entendáis por encima que es todo esto teníamos estas columnas el ID el nombre el username el langwies y ahora Yo vengo por aquí y digo vamos a meter una columna más y esta columna más
Speaker A
va a ser la fecha de nacimiento tengo aquí la fecha de nacimiento también qué pongo la fecha de nacimiento 29 de abril del 87 y ya está y lo pongo así en texto y lo escribo no sé qué Y creéis que en
Speaker A
nombre sí que tengo que poner texto Pero si yo pusiera la edad lo guardaría como texto o lo guardaría como un número y la fecha de nacimiento lo guardaría como una fecha formateada o lo guardaría como un texto y los lenguajes que guardaría
Speaker A
aquí simplemente una lista o en realidad crearía una relación con otra tabla no sé qué lo que quiere decir es que igual que los lenguajes de programación todos estos Campos todos estos atributos que tenemos aquí en realidad hacen
Speaker A
referencia a un tipo de dato concreto seguro que algo de algún lenguaje de programación sabéis sabéis que las cadenas de texto son un String sabéis que los números son un int sabéis que los decimales son un float por ejemplo
Speaker A
sabéis que las fechas son un date Qué quiere decir que el estándar de base de datos relacional y el estándar sql nos permite trabajar con tipos de datos Porque así vamos a trabajar de una manera muchísimo más óptima no tendría
Speaker A
sentido si yo empiezo a escupir solo texto plano solo texto plano solo texto plano cómo podría trabajar rápido así igual que yo en un lenguaje de programación cuando quiero definir un nombre creo una variable de tipo String y cuando quiero Definir la edad de una
Speaker A
persona creo una variable de tipo int o cuando quiero Definir la fecha de nacimiento de una persona Crea una variable de tipo date en una base de datos vamos a poder hacer exactamente lo mismo aquí lo que recomendaría es que
Speaker A
nos quedemos con los principales Por qué Porque tipos de datos Hay un montón e incluso los motores de bases de de datos de los que hablaba a veces hasta especifican sus propios datos porque quieren guardar cosas de una manera muy
Speaker A
concreta Entonces igual el agente de My sequel crea su propio tipo de dato para algo muy concreto y la agente de postgres crea su propio tipo de dato para algo muy concreto en la web que yo os he pasado de referencia cuando nos
Speaker A
vamos a los tipos de datos fijaos tipos de datos para mysql sql server para Access incluso aquí nos habla de tipos de datos que son comunes en muchísimas bases de datos Pero al final lo que tenéis que quedar es que la base de
Speaker A
datos va a permitir crear datos diferentes y va a permitir crear datos diferentes que se adapten a la naturaleza de lo que queremos guardar quiero guardar una edad guarda un número no guardes una cadena de texto porque si
Speaker A
tú quieres sumar todas las edades de los usuarios esto como un lenguaje de programación va a ser mucho más fácil trabajar con números que trabajar con textos tipos de datos preparaos porque esto Supongo que os podéis asustar vamos
Speaker A
a hacer así un scroll rápido bueno hay unos cuantos verdad hay unos cuantos datos vale Qué significa esto que os tenéis que aprender absolutamente todos No necesariamente lo más importante siempre vais poder acceder a la documentación y a base de repetirlos
Speaker A
cada vez Vais a tener más claro Cuáles son los tipos de datos que hay en la base de datos que estáis utilizando aquí nos habla de por ejemplo my sequel que es los que vamos a utilizar nosotros vamos a fijarnos char Qué es un char
Speaker A
Pues nos dice ey char es un texto que tiene una longitud determinada veis esto dice mira yo lo que tengo que hacer cuando defino un char es es decirle que este char va a tener una longitud si yo
Speaker A
le digo que la longitud es 100 Yo no voy poder guardar en ese campo en esa columna en ese atributo yo no voy a poder guardar un texto de más de 100 letras por ejemplo en cambio un marchar
Speaker A
esta longitud es variable podría ir cambiando se podría ir adaptándose a la longitud Qué pasa que a veces es bueno definir directamente la longitud y en otras veces es mejor que vaya cambiando tenemos un binary Okay que al final
Speaker A
podemos guardar digamos un byte un bar binary que lo podemos modificar un blog un blog en realidad guarda objetos de cualquier tipo vale un Tiny text un text un eh aparte del Tiny velop un velop un medium text medium vop Estos son como
Speaker A
diferentes tipos de datos para representar textos para representar lo que Nosotros llamamos un String un tipo de dato que nosotros conocemos en programación para según Qué tipo de datos nosotros incluso podríamos ser realizarlos y guardarlos una base de
Speaker A
datos podemos hacer muchísima cosa pero igual que tenemos String que nos suena tanto de las bases de datos Qué pasa cuando queremos guardar números Pues mira un bit básicamente un Tiny int un bullan small int medium int otro int que
Speaker A
tenemos por aquí un integer un Big in dependiendo de los tipos de bases de datos de los motores algunos los tendremos otros no los tendremos Pero qué es lo importante de todo esto que hay tipos de datos y que hay tipos de
Speaker A
datos que nos sirven para representar los datos que nosotros vamos a guardar y que en muchos casos la filosofía que nosotros Tendremos que acabar utilizando Es casi la misma con la que nosotros trabajamos con los tipos de datos en un
Speaker A
lenguaje de programación vemos Big in nos dice Ey un entero muy grande fíjate desde Dónde va el bigint desde los 9 trillones de yo que sé desde los menos nu trillonésima de de cientos de miles de millones hasta los nueve yo que sé y
Speaker A
resulta que yo lo que quiero guardar en mi base de datos es la edad del programador tiene sentido poner esto tiene sentido que yo cree en base de datos un tipo de dato que soporta tantas cifras no quién tendrá esto Pues yo que
Speaker A
sé elon musk en sus bases de datos con el dinero que gana pero para guardar una edad Pues igual no tiene ningún sentido Igual yo lo que tengo que hacer es pues igual con un entero o con un small int
Speaker A
que tengo por aquí igual no sobra sin más entendéis el concepto estoy poniendo un ejemplo como muy básico y muy tonto pero es un poco Por qué existen tantos tipos de datos diferentes incluso dentro de la especificación de lo que puede ser
Speaker A
algo numérico que quiero guardar que es verdadero o falso guardo uno cero no tienes un bolean en realidad que tú vas poder interactuar con él con true false aunque después el acabe guardando un uno un cero según la base de datos lo que
Speaker A
sea pero qué más tenemos date las fechas también las podremos guardar Y entonces con esto tenemos todo textos números y fechas y pequeñas variantes diferentes términos diferentes significados lo que querrás pero con solo esto somos capaces de crear ya los atributos de la base de
Speaker A
datos según las bases de datos donde tenemos vemos aquí ahora con sql server qué pasaba Ah mira que es un char con mayúscula cuando estamos trabajando en My sequel pero si estamos en sql server que es otro motor de de base de datos es
Speaker A
char con minúscula Ah ya tengo que volver a aprender todo Qué complicado no en realidad no en realidad ya digo cada motor de base de datos especifica un poco el estándar pero siempre se tiene que basar en lo que en realidad soporta
Speaker A
la base de datos relacional en lo que en realidad va a poder soportar el propio sql Así que no importa por supuesto el día que seáis profesionales en un tipo de base de datos concreta tendréis que estudiar las peculiaridades de esa base
Speaker A
de datos pero es algo que a priori tampoco nos tiene que preocupar mucho Vale Nos quedamos con que tenemos estos diferentes motores que pueden trabajar con diferentes tipos de datos y que a grandes rasgo son o numéricos o cadenas
Speaker A
de texto o fechas y ya está fuera nos vamos venga qué había Access nos decía por aquí Ah vale tenemos un test se llama test no se llama char Pero qué acaba representando pues datos del mismo tipo y así con cualquier tipo de base de
Speaker A
datos del mundo ya tenemos los tipos de de los tipos de datos de las bases de datos sql [Música] Creo que ya es hora de por lo menos empezar a configurar nuestra base de datos qué os dije que íbamos a utilizar
Speaker A
vamos a utilizar my sequel vamos a utilizar mysql Cuál es la página principal de mysql mysql.com esto es lo que yo llamaba al principio cuando empezamos la cuando empezamos esa lección yo estaba diciendo que había algo que nosotros llamábamos
Speaker A
como dbms os decía la traducción literal gestores de bases de datos Y en concreto Nosotros con lo que vamos a estar trabajando es con rdbms Por qué Porque ya no es un gestor de base de datos sino que es un gestor
Speaker A
de base de datos relacional un relational database management System Entonces cuál es el que vamos a utilizar Cuál es el gestor que nosotros vamos a utilizar por lo menos Ahora aquí al principio del curso el gestor que vamos
Speaker A
a utilizar es mysql con algunas peculiaridades pero que nos va a servir para explicar todos los fundamentos de sql Quiero instalar mysql quiero tener una base de datos en mi máquina porque quiero empezar a hacer cositas quiero empezar a ver cosas de sql qué Tendremos
Speaker A
que hacer irnos a la página principal de sql de My squel es una página permitirme que como My sequel también tiene sus añitos y como Oracle que es quien está detrás de todo esto pues es una compañía bastante Enterprise bastante old school
Speaker A
no os vais a encontrar una página web superbonita una página web donde os enteré de primeras mira incluso nos está diciendo Ey quién está utilizando my sequel Bueno ya veis los clientes que hay aquí github Twitter Facebook linkedin PayPal shopify Uber Netflix
Speaker A
bueno todo el mundo lo dicho que no es una página web s simple si os vais aquí a documentación igual así os cais un poco sobre la Silla porque decí dónde ha quedado esto Getting started y ya está
Speaker A
hablamos de un sistema muy grande hablamos un sistema que incluso tiene una parte Enterprise una parte de pago que hay un montón de evoluciones y varaona base de datos yo os voy a intentar llevar por el el camino más
Speaker A
fácil si queréis ser expertos por supuesto Esta es la mejor página pero si lo que queréis es ir aprendiendo poco a poco sobre my sql hay millones de cursos y millones de webs que os pueden ayudar a entender las cosas de una manera mucho
Speaker A
más simple que os vengáis por aquí que Esto va a ser como mucho más [ __ ] esto es texto a muerte ya veis fijaos aquí trope 10000,000 puntos voy a entrar a uno para leer Mira código y más código y
Speaker A
más código y más texto es tan complejo como esto para ser un verdadero experto Sí para lo que nosotros vamos a hacer os meto que con muy poco podéis aprender cómo funcionan las bases de datos para el 90 por de los casos en los que un
Speaker A
mortal va a tener que usar una base de datos como programador a dónde nos tendremos que ir si nosotros queremos instalar una base de datos en local vengo por aquí y tenemos la parte de descargas en la parte de descargas vemos
Speaker A
que lo primero que de lo que nos intentan hablar es de la edición Enterprise de la edición más profesional pero Vais a ver esto edición Community Esta es una edición Community que en realidad para según qué casos y por
Speaker A
supuesto para estudio o para según qué ti tipo de proyectos lo vamos a poder utilizar gratuitamente no tenemos que pagar nada y podremos utilizar la gran parte de las características de esta base de datos que utiliza todo el mundo
Speaker A
de las versiones estas Enterprise ya estamos hablando de cosas verdaderamente muy serias pero para aprender y para trabajar como mortales nos vale más que de sobra esta versión Community os vais como os he dicho a la parte de downloads
Speaker A
y dentro de la parte Community aquí Vais a encontrar esto mysql Community server esto es la base de datos esto es el ejecutable también lo podéis instalar desde la terminal desde la consola pero yo creo que esto es una forma bastante
Speaker A
simple porque aquí podéis venir y decir cuál el sistema operativo dónde lo Quiero instalar veis que esto tira En todos los lados en Windows ubuntu devian eh sius eh redhat fedora Linux solaris código fuente macos Yo estoy en macos
Speaker A
dentro de macos Qué versión Quiero instalar esta la última y veis Oh si esta es una versión digamos antigua a la que se le está dando soporte ahora pero también tenemos las versiones 8 que estas sí que son las más modernas y
Speaker A
después ya tenemos la 81 que ya es como la versión la que va a parecer que acabará sustituyendo la 80 que es la que está ahora mismo aquí Así que nos vamos a ir a una genérica me puedo ir a la
Speaker A
versión 80 y así tampoco nos complicamos y aquí vemos sistema operativo Mac o Windows o lo que sea como la gran mayoría de vosotros tendréis Windows ya veis lo que hay aquí algo para descargar un ejecutable ningún problema que
Speaker A
queréis utilizar Linux si tenéis untu qué tenemos por aquí un ejecutable Ya está no tiene a absolutamente ningún problema voy a venir por aquí voy a venir a macos y voy a seleccionar Pues cuál Quiero instalar yo qué Quiero
Speaker A
instalar macos la versión Arm o la versión para Intel yo ahora ya tengo un Apple silicon entonces tengo que seleccionar esta versión por supuesto vosotros en la arquitectura en la que estáis trabajando esto no tiene ningún misterio Esto no es cuestión de saber de
Speaker A
base de datos es simplemente saber dónde lo tenéis que instalar Ya lo tenemos Pues venga me voy a bajar el ejecutable me pide registrarme no me quiero registrar aquí Muchas gracias solo quiero bajarlo se empieza a descargar dejarme que venga por aquí porque una
Speaker A
vez tengamos el ejecutable veremos cómo lo Tendremos que instalar para que entendáis la complicidad de instalar mysql de instalar una base de datos en local ya lo tengo vamos a lo que nos hemos bajado y lo ejecutamos en el
Speaker A
momento que lo ejecutamos esto nos va a abrir por ejemplo en mi caso el fichero del ejecutable y hago venga lánzate qué me dice ey venga quiero instalarlo ya está siguiente siguiente acepto los términos y condiciones Qué remedio
Speaker A
siguiente se empieza a instalar Esto es lo mismo que hay que hacer en Windows eh No penséis que estoy hablando de nada diferente ni de nada complicado dice venga ya se ha añadido aquí un proceso y me dice vale cómo quieres encriptar tu
Speaker A
base de datos cualquier base de datos aquí lo que estamos haciendo es lo mismo que tendríamos que hacer en un servidor vamos a levantar una base de datos vamos a crear una base de datos en nuestro local y ya está no pasa absolutamente
Speaker A
nada vamos a hacerlo de la manera más simple porque yo creo que es la manera también de que los conceptos no se nos hagan demasiado complejos vengo por aquí tengo que crear una contraseña siguiente y me dice vale tú vas a tener una base
Speaker A
de datos raíz que se va a llamar Root un usuario que se va a llamar Root una base de datos puede tener más de un usuario por supuesto una base de datos puede tener usuarios con diferentes privilegios por supuesto va a haber
Speaker A
usuarios que solo podrán acceder a este esquema o a esta tabla o va a poder escribir aquí y va a poder leer aquí y va a poder borrar aquí y aquí no eso también lo veremos pero de momento como
Speaker A
nosotros somos la persona que Estamos instalando la base de datos somos los los administradores Somos la persona que va a tener acceso total a la base de datos qué tenéis que poner aquí ya nos lo dice e por favor crear bases de datos
Speaker A
con números con símbolos con mayúsculas con minúsculas por favor no hagáis esto en casa pero yo voy a venir por aquí voy a escribir rot 1 2 3 4 por favor no hagáis esto en un entorno real pero yo
Speaker A
estoy poniendo pues una cosa aquí muy tonta simplemente Root 1 2 3 4 ya tengo esto nos pide ocho caracteres y finalizo nos dice venga acaba de instalarte se acaba de instalar va a empezar a hacer acciones y esto qué va a acabar
Speaker A
desencadenando pues va a acabar desencadenando que se nos va a instalar un mysql server en nuestra máquina un servidor de bases de datos una base de datos Al fin y al cabo Ya tengo todo esto cierro se acabó qué va a acabar de
Speaker A
alguna forma representando todo esto si ahora yo escribo my sequel si nosotros ahora esto lo buscamos dentro de la configuración del sistema veremos esto yo lo estoy poniendo en Mac porque sistema operativo pero vamos a tener algo muy parecido en cualquier sistema
Speaker A
operativo que estemos utilizando yo ahora mismo tengo un nuevo proceso un nuevo proceso que es mysql Es decir que en mi máquina yo acabo de levantar un my sequel y que de qué se conforma este my sequel nos dice que estamos en la
Speaker A
versión 8034 nos dice incluso dónde se ha instalado en mi usuario en local en My sequel tenemos una configuración Si queremos ver dónde se está guardando todo Dónde está guardando absolutamente todo a ver a ver a ver pues mira en My
Speaker A
sequel tenemos el directorio base Dónde tenemos los datos en My sequel bar datata Dónde tenemos los plugin los logs de error un montón de cosas qué podemos hacer con esto por un lado indicarle que se arranque siempre que nosotros
Speaker A
iniciamos el ordenador yo por defecto lo voy a Desactivar porque va a ser algo que va a quedar para el curso y yo no quiero que cada vez que arranque el ordenador se me arranque el servidor de base de datos Porque yo no lo voy a
Speaker A
estar utilizando a diario Y si yo quisiera pararlo a mano Pues por supuesto yo también podría venir por aquí y paro el servidor así ya no estaría corriendo no pasa nada si quisiera arrancarlo por supuesto vengo otra vez por aquí y le digo arráncate el
Speaker A
servidor qué más puedo hacer inicializar la base de datos para que se regenere toda la base de datos o si más yo puedo puedo desinstalarla con esto tendríamos lo más básico para poder utilizar nuestro my [Música] sequel qué será lo siguiente tenemos ya
Speaker A
una base de datos una base de datos que está corriendo en nuestra máquina una base de datos que nosotros ya vamos a poder utilizar Pues ahora mismo necesitaríamos ya lo que se llama el cliente necesitamos de alguna forma un
Speaker A
mecanismo que nos permita interactuar con la base de datos Qué es eso pues es lo que Nosotros llamamos cliente sin más voy a cerrar esto por aquí y vamos a venir aquí a la terminal vamos partir por lo más básico brce vamos a trabajar
Speaker A
muchísimo con la terminal no no os preocupéis creo que en bases de datos no es necesario tener un conocimiento sobre todo cuando estamos empezando de la terminal sobre todo Cómo Tendremos que hacer si nosotros queremos acabar interactuando con la terminal por
Speaker A
ejemplo desde consola pues Tendremos que instalar un cliente vamos a partir de lo más fácil voy a poner en Google mysql cli o client en la web oficial veis que tenemos este apartado mysql command Line client y tendremos incluso otros
Speaker A
apartados que nos dice ey todo lo que tú puedes utilizar para interactuar pero yo me voy a quedar simplemente con el client y vemos que aquí ya nos empieza a decir Ah mira con diferentes comandos tú vas a poder interactuar con la base de
Speaker A
datos vemos aquí las opciones los comandos etcétera etcétera etcétera etcétera etcétera Pero qué nos faltará lo primero que nos faltará será instalarlo aquí qué os recomiendo que desde terminal según el gestor de paquetes que estéis utilizando pues se
Speaker A
tendrá que hacer de formas diferentes Imagínate que estáis utilizando no sé ubuntu Y bry es que no lo estás haciendo en ubuntu claro No lo estoy haciendo en ubuntu porque yo estoy ahora mismo con Mac pero si hacéis la búsqueda de que yo
Speaker A
vengo aquí y pongo mysql client ubuntu vengo por aquí y me dice e aquí tenemos sudo apt update upgrade apt install mysql server tenemos la instalación desde aquí my squl menos version no sé qué si yo ahora viniera por aquí pongo
Speaker A
mysql men version como nos dice aquí menos menos version qué nos acabaremos encontrando Pues bueno nos dice e que tú ya tienes mysql ya tienes instalado mysql Tú ya tienes un cliente para poder acabar de alguna forma interactuando no
Speaker A
te está diciendo aquí que tenemos esta versión 81 que yo tenía instalada anteriormente que es una con la que yo estoy trabajando ahora mismo pero en el caso de que no tengáis nada tenéis que buscar Cómo se instala este cliente
Speaker A
desde la terminal cómo solemos hacer por ejemplo si tenéis homebrew que es un gestor también de paquetes muy famoso si lanzá esto brew install my sequel fijaos ya se lanza por aquí y me dice ey que esto ya está instalado podríamos
Speaker A
reinstalarlo podríamos hacer lo que nos DEA la gana pero yo en mi caso ya lo tengo instalado esto lo que significa que yo de alguna forma ya voy poder interactuar con la base de datos Cómo puedo interactuar con la base de datos
Speaker A
Pues lo más simple si yo pongo my sequel le paso el usuario con este parámetro que su y el nombre del usuario que es Root yo lanzo esto y me dice mete la contraseña Cuál era la contraseña que
Speaker A
nosotros teníamos la contraseña que nosotros teníamos era Root 1 2 3 4 y me dice Ah mira en realidad tienes corriendo un servidor my sequel con la versión 80 recordáis que la es la que nos nosotros instalamos del servidor y
Speaker A
nos dice Bueno ahora ya aquí pues podrías empezar a lanzar diferentes comandos podemos manejar una base de datos solo con comandos sí es recomendable Es recomendable si sois muy pros o si tenéis que hacer algo muy muy muy concreto que igual desde una
Speaker A
herramienta desde un cliente con interfaz gráfica quizás no sois capaces de resolver tan fácil vamos a ver algún Comando un comando muy típico es show databases le meto el punto y coma que nosotros teníamos antes por aquí Punto y
Speaker A
Coma lo lanzo ahora ya vemos algo por consola me dice ey pues tenemos cuatro cosas tenemos cuatro bases de datos Qué quiere decir que por defecto el mysql que yo instalado ya tiene cuatro bases de datos distintos lo que llamamos
Speaker A
cuatro esquemas diferentes cuatro esquemas de bases de datos cuatro directorios que cada uno va a guardar diferentes cosas sin más vengo por aquí y me escribo un exit y salgo tenemos instalado un servidor somos capaces de interactuar con un cliente y por
Speaker A
supuesto ya en la próxima lección ya vamos empezar nos vamos a olvidar tanto de la teoría y ahora sí que ya vamos a empezar con la práctica Vamos a aprender a crear nuestra propia base de datos vamos a empezar a estudiar sql a lanzar
Speaker A
los diferentes comandos a nutrir la base de datos y empezar a interactuar con ella con cada una de las sentencias que nosotros podemos Lanzar con ese [Música] q hasta aquí llegamos el otro día era la forma de validar que nosotros tenemos
Speaker A
corriendo una base de datos en nuestra máquina y que somos capaces de interactuar con ella aunque sea con un comando que lo único que haga sea listar las bases de datos vale también os decía y esto os lo dejé la documentación que
Speaker A
para aprender a manejar el el cliente desde la terminal Pues por supuesto hay documentación hay documentación de todo lo que yo voy a explicar pero también os decía una cosa que bueno la documentación Es cierto que puede llegar
Speaker A
un momento en vuestras carreras que empecéis a utilizar todo por líneas de comandos no es lo más habitual decir manejar bases de datos con línea de comandos yo creo que ya queda relegado a gente bastante experta a gente que es
Speaker A
administradora de base de datos y que digamos ya está es capaz de por línea de comando ser mucho más eficiente y mucho más rápido que mediante una interfaz gráfica que donde pueda ver las cosas de una manera un poquito más visual Así que
Speaker A
vamos a empezar muy poco a poco vamos a empezar a entender las cosas y vamos a empezar a interactuar con la base de datos de qué va a ir la clase de hoy la clase de hoy acabaremos instalando un
Speaker A
cliente gráfico para empezar a interactuar con la base de datos aprenderemos Cómo es crear una base de datos Y cómo empezamos a lanzar esos primeros comandos Y empezamos a entender la sintaxis de una base de datos básicamente Qué es una base de datos
Speaker A
para qué nos sirve y cómo de verdad empezamos a trabajar con el lenguaje sql y así empezamos a interactuar con él siguiente cosa que os quiero contar vale una fuente de documentación igual la que os digo yo para el cliente eh una fuente
Speaker A
de documentación que recomendado es el tutorial de los w3 schools Esta es una de las páginas web más utilizadas a nivel mundial para documentación sobre desarrollo de software sobre todo también para gente que está empezando y hay un apartado que es de sql me voy a
Speaker A
basar bastante para hacer el curso en esta documentación Por qué Porque es una documentación muy facilita es una documentación para principiantes y así vosotros también tenéis una documentación prácticamente oficial para aparte de lo que yo vaya contando tengáis una fuente de documentación a la
Speaker A
que consultar Esto está por aquí en el repositorio os tengo la documentación vale veis documentación sql si os vais a documentación sql os lleva a la web que yo estaba abriendo por aquí Así que esto es algo que tenerlo como referencia de
Speaker A
cara aprender aparte de lo que yo os voy a explicar pasemos a yo tengo una base de datos la base de datos Está funcionando yo puedo interactuar con ella Desde la terminal desde la consola pero yo recomendaría que quizás no es la
Speaker A
mejor manera para empezar a entender de una forma más rápida lo que es una base de datos y empezar a interactuar con ella y yo a lo largo de mi vida os soy sincero he conocido a Muy pocas personas
Speaker A
que interactúan con la base de datos únicamente desde terminal se suele hacer desde aplicaciones gráficas donde todo se ve de una forma mucho más clara y la gente que ya he dicho he visto con la terminal era gente muy profesional o que
Speaker A
se acostumbró así desde el principio o algo así os hablaba la parte de interactuar con una base de datos desde la terminal no suele ser lo mejor Por eso existen infinidad de aplicaciones para interactuar con bases de datos os
Speaker A
voy a nombrar algunas pero muy muy rápido para que vayáis viendo Qué significa todo esto Una de ellas por ejemplo deb visualizer aquí lo tenemos db visualizer nos dice Ah mira lo utilizan todas estas empresas Qué es deb
Speaker A
visualizer pues bueno una aplicación gráfica que me va a permitir Conectarme a la base de datos voy poder interactuar con ella y cosas que ya veremos dentro de un ratillo la gran mayoría de las bases de datos datos son o 100%
Speaker A
gratuitas o en una parte gratuita Okay igual que sus herramientas un clásico php my admin Quién no conoce esta aplicación es una de las más clásicas de las que lleva más tiempo y que nosotros también podemos instalar y que también
Speaker A
podemos utilizar para interactuar con nuestra base de datos perdonar que no me paren ellas porque no se trata de que me pare sino de que entendáis que existen un montón de herramientas para consultar bases de datos aquí tenéis dbforge Vais
Speaker A
a ver que todas tienen casi la misma pinta que es que tendremos un lugar donde estén las tablas que nosotros podemos interactuar con ellas Okay otra más venga sql Pro Studio Pues otro que vemos que se parece puede variar
Speaker A
ligeramente pero que entendemos perfectamente Cuál es su cometido y esta la he dejado para el final Table Plus todas las que yo os he enseñado pues son herramientas de gestión de base de datos que tienen 10 años o muchísimos más años
Speaker A
php my admin yo que sé cuántos años puede tener eso 25 años yo que sé eso es más viejo que quién sabe Table Plus apareció no hace mucho veis que la interfaz es bastante limpia incluso hasta que es hasta casi bonita que las
Speaker A
aplicaciones de gestión de base de datos no suelen ser ni bonitas no pero bueno Esta es como distinta es es como bastante limpia también Mola bastante yo me voy a descargar dos aplicaciones de gestión de base de datos dos clientes
Speaker A
gráficos y vamos a encontrar muchísimas similitudes entre ellas qué quiero decir con esto que tampoco os tiene que preocupar Cuál es la herramienta que estáis utilizando porque igual vosotros ya utilizaba otra anteriormente o porque llegáis a un trabajo y en el trabajo
Speaker A
utilizan esta o estáis viendo otro curso y en ese curso utilizan otra herramienta los fundamentos son los mismos son herramientas que nos permiten conectarnos a la base de datos y gestionarla y fuera de eso me da igual que una tenga un icono aquí o que una se
Speaker A
pinte de color naranja y la otra de color verde si entendemos una acabamos entendiendo todas yo he nombrado cinco se igual que hay estas cinco seis hay otras 50 más y en la grama teoría todas son gratuitas o en su totalidad o en una
Speaker A
parte la que vamos a utilizar oficialmente en el curso ya os adelanto que es totalmente gratis y aún no la he nombrado Así que nos venimos a la página web oficial de mysql el curso va a estar orientado en My sequel con lo cual vamos
Speaker A
a utilizar la herramienta de bases de datos propia de la gente que está desarrollando mysql para llegar a ella tenéis que iros aquí a descargas en la parte de descargas tenéis las descargas a nivel de comunidad que estas son
Speaker A
descargas gratuitas y aquí Vais a encontrar esta descarga workbench Okay workbench es la herramienta de gestión de base de datos nativa y propietaria del equipo que se encarga de desarrollar mysql Así que lo único que hay que hacer
Speaker A
y por aquí es por donde voy a empezar a explicar venimos por aquí disponible en todos los sistemas operativos gratuito en todos los sistemas operativos Y por qué me voy a centrar en esta porque es otro de los estándar que nadie os
Speaker A
preocupe no os volváis locos diciendo brce usa esta o usa la otra o usa la de más allá eso es lo de menos tenemos que elegir una vamos a elegir eh la que más se usa prácticamente y la que nos
Speaker A
podemos de alguna forma descargar de forma gratuita y que así también podemos utilizar después si queréis una vez instalemos esta y la veamos nos eh creamos o nos instalamos una segunda para que también veáis un poco Cómo funciona esto vale Yo selecciono Mac y
Speaker A
selecciono la versión Arm Y le doy a descargar no os tenéis ni que logar tenéis aquí el texto este que dice que venga No gracias solo quiero descargarla una vez hagáis esto pues os la descargaré y la ejecutaremos vamos a
Speaker A
venir aquí la tengo aquí para instalarla Qué tengo que hacer Bueno yo en mi caso lo único que tengo que hacer es eh arrastrarla a la carpeta de aplicaciones en caso de Windows tendréis que instalar siguiente siguiente Ya está no importa
Speaker A
vemos que ya se está instalando por aquí dejamos que esto se acabe de instalar ya lo tengo venga esto ya está instalado mi base de datos está corriendo pero yo de momento no he hecho nada más y ahora lo
Speaker A
que voy a hacer es arrancar esa herramienta cómo se llamaba my sequel workbench lo voy a arrancar y vemos lo que se nos Abre Vale y vemos incluso esto de aquí que ya nos tiene una conexión creada por defecto a nuestra
Speaker A
base de datos entenderemos después lo que es esto pero si lo habéis hecho bien es tan fácil como si ya tenéis una base de datos que habéis llamado Root como Nosotros hemos creado y se está ejecutando en local la tenéis arrancada
Speaker A
es tan fácil como hacer doble clic aquí y os va a decir mete una contraseña recordáis Cuál era la contraseña Root 1 2 3 4 y yo voy a decir que la quiero guardar voy a darle a okay Y ya tenemos
Speaker A
esto así sin más Hala voy a borrar esto no vamos a poner nada pero de momento vamos a ver las diferentes cosas que podemos ir viendo en este editor en este editor vemos que aquí ya aparecen un montón de opciones el estatus del
Speaker A
servidor Ah mira si aquí ya me da información sobre cómo está el servidor las conexiones del cliente los usuarios que hay creados recordáis el usuario root que yo podría cambiar la contraseña meter más usuar Pues aquí ya tengo una
Speaker A
verdadera gestión gráfica de toda mi base de datos Así es de fácil la cosa venga qué más cosas tengo estatus de las variables de sistema exportar los datos de mi base de datos Mira si ya me dice Cuál es la base de datos que yo tengo
Speaker A
aquí creada me dice sis tienes una base de datos que se llama sis Okay podría exportar sus datos arrancarla detenerla lo puedo hacer aquí desde esta herramienta los logs del sistema para ver si hay fallos si cambian cosas lo
Speaker A
que sea una vez vemos todo esto esto lo revisar lo que os dé la gana Aquí vamos a encontrar un montón de información que os va a servir para entender mejor cómo funciona la base de datos Mira el
Speaker A
estatus de la red el estatus de My sequel la eficiencia con la que está funcionando aquí no podemos entrar porque si no eh echaríamos eh semanas yo creo que podríamos echar semanas revisando todo esto podríamos echar semanas revisando toda la información
Speaker A
que nos puede estar dando esto vamos centrarnos en las partes más importantes hay una sección que nos dice esquemas un esquema en realidad como lo podemos Traducir es como una base de datos por defecto nuestro servidor de base de
Speaker A
datos ha creado ya aquí una base de datos que se llama sis es la base de datos del sistema y vemos Que aquí hay como una configuración vemos que hay unas tablas esto no importa en realidad Porque ya lo veremos en detenimiento con
Speaker A
algo que nosotros querramos hacer poquito a poco pero también hay algo muy importante aquí una sección que dice query la query es básicamente el lugar donde nosotros vamos a poder escribir sql donde nosotros vamos a poder trabajar con el lenguaje sql aquí y creo
Speaker A
que es como lo vamos a empezar a comentar podríamos empezar a escribir código Pero creo que es mejor entender primero Cuáles son los conceptos principales de la base de datos igual que tenemos este sisis aquí Podría tener la oportunidad Si os vais a cualquier
Speaker A
parte de las opciones de administración os vais a cualquier parte de las opciones de los esquemas que aquí es realmente donde tenéis las bases de datos Aquí es donde vais poder desencadenar todo tipo de acciones y en muchos casos estos Editores qué os van a
Speaker A
permitir crear acciones sin necesidad de que vosotros tendrá que tengáis que escribir todo en base a código y que os tengáis que acordar todo en base a código las herramientas se fabrican y se desarrollan porque en realidad nos
Speaker A
pretenden ayudar Así que si yo ahora Quiero crear aquí una nueva base de datos por supuesto existe la sentencia create database que ya lo explicaré no os preocupéis que nadie le importe porque estoy diciendo create database pero sí que es cierto que si yo vengo
Speaker A
por aquí y hago botón derecho me dice crear esquema dice Ah mira puedo crear un esquema muy bien y por qué yo no creo un esquema que diga por ejemplo Hello sql vamos a crear un esquema vamos a
Speaker A
crear una base de datos que se llame Hello sql y cuando yo ya tengo creado esto vemos que le podríamos dar un encoding se lo vamos dejar por defecto y vamos a apcar en este botón que dice apply cada una de las sentencias y cada
Speaker A
uno un poco de las acciones que nosotros le vamos a indicar a la base de datos podremos revertirla o podremos aplicarla en mi caso le voy a dar a este botón que dice aplicar le doy aplicar Y fíjate
Speaker A
create esquema no sé qué nos Está sacando ya un texto que yo no tengo ni idea de lo que es esto esto significa que nosotros podríamos estar creando un esquema que se llame Hello sql y que pueda acabar lanzando una opción vale
Speaker A
veis que esto ya es capaz de generar algo no lo quiero hacer le voy a dar para atrás y voy a decir mira yo de momento esto no quiero hacer nada relacionado con un esquema de base de datos lo voy a cerrar venga no lo guardo
Speaker A
el dashboard tampoco lo guardo y ahora vamos a ver algo semejante pero ya con código aunque no tengamos ni idea de lo que yo voy a hacer vamos a imaginar que yo me vengo por aquí y escribo esta
Speaker A
sentencia a esta sentencia ya le dedicaremos una explicación pero yo de momento lo único que quiero hacer es venir por aquí y escribir create create por un lado database por otro lado y le voy a dar un nombre Hello gu my sequel
Speaker A
okay Y este Hello my sequel simplemente seguido de create database le vamos a pinchar en este botón este botón es el botón que permite ejecutar las queries este botón nos permite revisar Cómo está la query aquí tenemos la propia edición
Speaker A
de las queries limitaciones veis que aquí nos dejaría hacer un montón de cosas aquí nos dejaría guardarla nos dejaría ponerla como favoritos un montón de cosas pero Que de momento prefiero ir más poquito a poco y que ya veremos HM
Speaker A
bueno Hacia dónde podemos llegar con todo esto voy a ejecutar todo esto voy a pinchar en el botón de ejecución de create database pincho aquí y vemos aquí abajo lo siguiente en el log nos ha dicho output create database y nos ha
Speaker A
dicho un Okay con lo cual parece que esto ha funcionado esto ha funcionado y en qué se ha traducido qué tenemos aquí una nueva base de datos Y cómo se llama la base de datos que vemos aquí esta
Speaker A
base de datos se llama Hello my sequel algo muy parecido a lo que ya teníamos de sistema Pero la base de datos del sistema tampoco hay que tocarla porque es una base de datos que se crea por defecto ya hemos creado una base de
Speaker A
datos para empezar a trabajar con ella esta base de datos que se llama aquí Hello my sequel tenemos una base de [Música] datos volvemos a la parte de conexiones aquí teníamos una conexión a rot a la raíz de mi base de datos si yo ahora
Speaker A
vuelvo a entrar aquí y me voy a los esquemas vemos que tenemos estos dos esquemas vemos que tenemos la base de datos que hemos creado que ya digo no os preocupéis en el comando que hemos utilizado porque eso ya lo explicaré más
Speaker A
ad adelante y otra que se llama sis Pero esto significa que si yo ahora Quiero crear una nueva conexión de base de datos con este símbolo más me dice venga vamos a crear una nueva conexión de base de datos a esta nueva conexión de base
Speaker A
de datos le voy a llamar Hello sql le voy a dar el nombre que yo quiera y aquí tengo un montón de opciones de configuración si os fijáis esto es el Host local de mi máquina 127001 voy a intentar Conectarme a una
Speaker A
base de datos que está en mi máquina en el puerto 3006 lo recordamos No si yo me iba a las opciones de la base de datos Mi base de datos me decía que estaba corriendo aquí según veíamos la
Speaker A
configuración según veíamos d estaba corriendo es una base de datos es una instancia que yo tengo corriendo en local con lo cual es tan fácil conectarme como apuntar a local apuntar al puerto de local y cuál es el usuario
Speaker A
el usuario era Root Cuál es el esquema cómo le hemos llamado al esquema nuevo ya veremos la diferencia más adelante entre esquema y base de datos cómo le hemos llamado al esquema el esquema se llamaba Hello gu sql Aquí vemos si
Speaker A
tuviera ssl opciones de conexión avanzada pero para que veamos en principio Cuál es la forma fácil ya tengo esto voy a lanzar un test de conexión Cuál era el usuario root Cuál era la conexión de base de datos cuál
Speaker A
era esa contraseña Root 1 2 3 4 vamos a guardar la contraseña doy Ok y me dice e ha fallado Por qué hemos fallado Por qué hemos fallado quién lo sabe quién ha estado atento he puesto Hello sql pero
Speaker A
recordáis que era Hello my sql vale le voy a cambiar aquí el nombre y ahora vamos a volverlo entar Uy successful ha funcionado la conexión a base de datos genial nos hemos conectado perfectamente Así que ahora le voy dar a Okay ya tengo
Speaker A
otra posible conexión tengo la conexión antes a local Pero tengo una conexión directa a la base de datos que he creado pincho en ella esto se abre y qué tenemos vamos a cerrar aquí cosas vamos a ver por aquí Cómo tenemos esta
Speaker A
conexión Hello my sql se está conectando a la base de datos Hello my sql vemos que también tenemos los otros esquemas porque en realidad también están en la raíz con lo cual no hay ningún problema Está todo Al mismo nivel de importancia
Speaker A
pero nosotros nos vamos quedar con Hello my sql y vamos a empezar a hablar de cada una de las partes que tiene la base de datos Cuál es la digamos la unidad de medida principal de la base de datos son
Speaker A
las tablas esto lo explicábamos el otro día perdonarme porque esto va a ser eh un desastre pero el otro día decíamos que nosotros en una base de datos Pues nosotros teníamos una tabla y que esta tabla iba a tener un montón de datos Y
Speaker A
que después igual teníamos otra tabla otra tabla con otros datos y que estas tablas podrían tener una relación okay Y así pues las tablas que nos hicieran falta la base de datos vale es así de simple con lo cual Aquí vemos que
Speaker A
tenemos una base de datos tenemos Ese Conjunto que va a ser capaz de almacenar datos Pero dentro no tenemos nada tablas views esos procedimientos funciones todo vacío vamos a empezar por lo principal tenemos una base de datos una base de
Speaker A
datos sirve para guardar datos Cómo hago para guardar datos por una base de datos la principal unidad de medida donde nosotros guardamos datos son en las tablas Así que si yo vengo por aquí y hacemos botón derecho tenemos crear
Speaker A
tabla aquí aún no estamos utilizando sql aún no estoy programando yo nada Aún no estoy utilizando el lenguaje sql pero sí que os recomiendo que para empezar a entender los fundamentos y los comandos principales lo podemos ir haciendo sin
Speaker A
ningún problema desde la propia interfaz gráfica que eso no nos preocupe nada tenemos ya esto hemos hecho botón derecho crear tabla qué podríamos guardar en la base de datos vamos a empezar con un ejemplo muy clásico yo tengo una base de datos donde quiero
Speaker A
guardar usuarios Así que voy a venir por aquí y el nombre de la base de datos va a ser users le voy a dar el nombre y ahora aquí ya vemos que la base de datos tiene columnas recordáis en la primera
Speaker A
clase que yo os dije mira cada tabla va a estar siempre compuesta por filas y columnas las columnas están definiendo los tipos de datos los atributos que se están guardando dentro de la base de datos y después las filas van a guardar
Speaker A
las diferentes informaciones asociadas a esas columnas Imagínate que yo quiero crear una base de datos de usuarios qué podría tener yo qué qué podría ser necesario que yo guardara en una base de datos asociada a usuarios que yo me
Speaker A
quiero guardar los datos de la gente de la comunidad vamos a imaginar eso yo me quiero guardar los datos de la gente de la comunidad pues me voy a presuponer datos muy simples que yo podría tener lo primero y esto es algo prácticamente
Speaker A
obligatorio en todo tipo de base de datos que necesitamos un identificador la manera de diferenciar de forma forma única a cada uno de los datos es que le demos un identificador a veces ese identificador puede tener sentido generarlo nosotros pero otras veces
Speaker A
tiene todo el sentido del mundo que la base de datos cada vez que vaya a Añadir un nuevo dato autog genere Cuál va a ser ese identificador Así que voy a crear aquí el primer campo la primera columna
Speaker A
cómo será Esa primera columna va a ser el identificador de los usuarios le voy a dar un nombre user ID Cuál es la forma a la que tenemos habitualmente de nombrar encontraréis de todo hay gente que pone nombres de de tablas en
Speaker A
mayúsculas que utiliza camel Case yo habitualmente suelo utilizar la convención que es que siempre escribo en minúsculas Y si tengo que escribir varias palabras las separo por gu bajo eso suele ser un estándar he creado una columna que se llama ID de usuario
Speaker A
volvemos Ahora aquí ID de usuario Okay recordáis los tipos de datos asociado a una base de datos cuando nosotros nos íbamos a la documentación había una aquí una parte que decía Data types y yo os decía intentar asociar que las bases de
Speaker A
datos funcionan tamb como un lenguaje de programación a nivel de datos yo cuando estoy definiendo una variable pues igual es una cadena de texto o igual es un date o igual es un entero revisá vamos aquí los tipos de datos Y empezábamos a
Speaker A
ver cómo las bases de datos ya que van a guardar cosas tenemos que indicarle Qué tipo de dato es cada cosa que va a guardar y yo le digo que inicialmente el identificador que será Pues habrá el usuario uno el usuario dos el usuario
Speaker A
tres el usuario cuatro el usuario 5 pues qué tipo de dato tendrá que ser esto Pues yo creo que principalmente puede ser un int por defecto lo que nos dice workbench es nos da la posibilidad como de darle los tipos de datos más
Speaker A
habituales pero si yo hago scroll veis que empiezan a aparecer más datos más datos especializados aquí los veis mi geometric multipoint bueno datos ya igual propios de My sequel o datos un poquito más avanzados inicialmente tampoco le deis tanta importancia y
Speaker A
quedaros con los datos esenciales que yo pueda meter un número que yo pueda meter un texto que yo pueda meter un decimal que yo pueda meter una fecha qué tenemos Ahora aquí cuando yo he decidido que ese identificador principal es un número
Speaker A
veis que se han marcado aquí dos casillas que voy a desmarcar y vamos a ver más o menos Qué significa cada cosa que vemos aquí vemos lo primero nos dice primary key la primary Key es el concepto de que yo puedo indicar que uno
Speaker A
o más Campos eso ya lo veremos sea una clave primaria yo le estoy indicando que este campo en concreto esta columna concreto de mi tabla es lo que va a identificar de forma única a cada uno de los registros Este es el campo que puede
Speaker A
tomar el valor uno el dos el tres y Esto va a significar que solo hay un usuario con el identificador uno solo hay un usuario con el identificador dos solo hay un usuario con el identificador 3 con lo cual yo voy a marcar que la
Speaker A
primary Key es este campo todo esto lo podemos hacer con sql con código ya lo veremos a futuro pero de momento creo que se entiende mucho mejor así vemos que se ha marcado otro check nn nn significa not nul traducido obviamente
Speaker A
no nulo si yo estoy indicándole que esto es la clave principal quiero obligar a que si alguien guarda datos en esta tabla tiene que sí o sí darle un valor a identificador no vale que me metas un usuario nuevo y que no le digas
Speaker A
identificador porque así ya es una forma de que mi tabla se rompa que yo no sea capaz de decir claro puede haber 10 usuarios con o sin identificador de usuario Pues claro cómo encuentro yo usuarios pues puede ser muy difícil
Speaker A
llegar a recorrer esa tabla Así que yo obligo diciéndole que el campo user ID es no nulo y después podríamos ver otros Campos Que de momento no importa tanto campo Unique que significaría que este campo tendría que ser único que no se
Speaker A
podría repetir que fuera binario un signet cero fill autoincrement o que es una columna generada o incluso la expresiones por defecto también Qué valor por defecto tendría que guardar podríamos indicá selo con una expresión o con un valor Aquí voy a generar otra
Speaker A
cosa o voy a marcar otro check esta casilla que dice aquí autoincrement la vamos a dejar marcada Por qué Porque así yo me voy a asegurar que si yo insertara un usuario Pues empezaría en el primer identificador de tipo entero cuál sería
Speaker A
el número uno y si yo meto un segundo usuario ya le va a dar automáticamente el identificador dos y si meto otro el tres el cuatro así me voy a asegurar que la base de datos sea siempre muy lista
Speaker A
que la base de datos sea capaz de vale Yo te estoy indicando que es la clave primaria la clave primaria me va a indicar que no pueden existir repetidos en cuanto a clave primaria así que por favor sácame un trabajo de encima y y
Speaker A
autoincrement te sol ya tenemos el primer campo vamos a seguir haciendo más Campos vamos a seguir creando más Campos estoy modelando usuarios qué podría ser el nombre del usuario Por qué no me guardo el nombre del usuario name el
Speaker A
nombre del usuario será un entero el nombre del usuario será una fecha no el nombre del usuario será un marchar Qué es un marchar una cadena de texto de qué longitud la que yo quiera puedo venir por aquí y decirle Mira mi usuario solo
Speaker A
puede tener 50 caracteres el nombre del usuario tiene 50 caracteres Y si tiene más mi base de datos va a fallar así Yo estoy optimizando de alguna forma también la memoria de la base de datos podría hacer que este campo fuera
Speaker A
Dinámico pero vamos a darle una longitud máxima que también es bastante habitual en las bases de datos un usuario de mi base de datos solo va a poder tener un nombre de Máximo 50 caracteres Qué puede tener un usuario No lo sé los apellidos
Speaker A
Y qué longitud va a tener los apellidos también le voy a decir que es una cadena de texto y en este caso le voy a decir que puede tener 100 me lo invento ves que aquí no estoy marcando nada Qué
Speaker A
significa esto que yo podría acabar creando un usuario que no tenga nombre que no tenga apellido si yo quiero en este caso asegurarme de que siempre tenga un nombre Qué hago pues marco en not null le digo no no no vale tú metem
Speaker A
un usuarios pero [ __ ] No me puedes meter usuarios que todos los campos sean nulos y que solo tenga el user ID necesito mínimo que me digas el nombre del usuario qué está representando esta creación de base de tabla de base de
Speaker A
datos que el nombre no va a poder ser nulo pero si yo quiero guardar un usuario que no tenga apellidos pues sin problema otro campo de base de datos que puedo poner aquí qué os parece la edad H
Speaker A
qué será la edad Yo creo que la edad puede volver a ser un entero Okay qué más puedo guardar eh aquí Imagínate que estoy guardando la tabla de usuarios y quiero guardar aquí Pues no lo sé una fecha concreta la fecha de El día que
Speaker A
empezó a estudiar programación y yo le voy a llamar edit date sin más Qué tipo de dato tendrá que ser aquí podríamos pensar day Time daytime es un tipo de datos que nos permite guardar una fecha y una hora pero yo aquí voy a hacer
Speaker A
scroll y voy a buscar un tipo de de dato Date un tipo de dato date representa una fecha representa una fecha sin hora Así que voy a poner este init date para que después también veamos otra cosa no puse
Speaker A
la fecha de nacimiento porque como ya estoy poniendo H como para que así no se confunda ya que el age sí que le vamos a meter un dato y yo así voy guardar otra fecha y ya está qué podríamos guardarle
Speaker A
más y ya lo último que voy a poner email y el email va a ser un barchart también de 100 no quiero guardar más cosas Eh Esto podríamos hacerlo todo lo grande que nos diera la gana pero sin más me
Speaker A
voy a quedar con esto ya tengo inicialmente lo que es la estructura de mi tabla He decidido que el nombre no sea nulo pero que en realidad lo otro todo puede ser nulo y que el identificador se ha auto incrementado
Speaker A
tal vale volvemos a lo mismo veis el apply este lo voy a pinchar veis lo que acaba generando el apply todo este chorro vamos a leerlo aunque no lo entendamos muy bien create Table dentro de Hello my sequel con el nombre users y
Speaker A
dentro parece que tiene user ID name surname age init date email y por ejemplo el user ID nos dice que es un int y que es not nul y que es autoincrement y el nombre que es un marchar de 50 y que no puede ser nulo en
Speaker A
cambio los otros pues son marchar int date y que sí que pueden ser nulos y me dice que primary key user ID os dais cuenta que esto tiene todo el sentido y que guarda una relación muy directa con
Speaker A
lo que nosotros hemos estado seleccionando aquí en la interfaz gráfica esto es sql esto es un sql estándar Esto es lo que nosotros si quisiéramos que crear una tabla desde sql que también lo veremos en el curso pero quiero facilitaros un poquito las
Speaker A
cosas para que ya vayamos viendo otras creo que es mucho mejor empezar a generar una tabla algo más compleja y ya a ver por aquí qué nos genera Estamos de acuerdo con lo que nos va a generar quiero retocar yo algo podría retocarlo
Speaker A
lo que me diera la gana estoy de acuerdo con todo esto le digo venga aplícate se lanza el Script No falla lo cierro y vamos a ver la sección de tablas Ah mira la sección de tablas ya tiene un
Speaker A
desplegable la sección de tablas ya tiene tiene una tabla que se llama users y que si yo pincho en la tabla users vemos que tiene unas columnas Ah mira las columnas que yo tengo justo las que nosotros hemos creado y que también
Speaker A
tenemos un índice y el índice Cuál será pues el que hemos creado y vemos algo aquí que dice claves foraneas triggers que aún no tenemos ni idea lo que es pero que será algo que veamos volvemos a la tabla te vienes por aquí que yo
Speaker A
quiero empezar a revisar la tabla o algo así hay un botón de información si yo pincho en el botón de información veremos el tamaño de la tabla datos de la tabla veremos la las columnas que nosotros hemos creado os fijáis aquí
Speaker A
está la información de las columnas que si los índices la clave primaria triggers clave foráneas lo repito no tenemos ni idea lo que es pero ya veis que tenemos la información de la tabla que quiero de alguna forma configurar la
Speaker A
tabla breis que aquí tengo esta llave si yo pincho la llave puedo editar muy rápidamente La configuración base de la tabla y ya por último lo que tengo es aquí la posibilidad de empezar a consultar la tabla Cuáles son los datos
Speaker A
de la tabla users pues ninguno aquí tenemos la representación de la tabla columnas tenemos la columna user ID name surname age init date email Tenemos aquí las columnas Pero qué tenemos dentro de las columnas Cuál es la información que
Speaker A
tenemos dentro de las columnas absolutamente ninguna no tenemos información en la tabla pues qué vamos a hacer vamos a meterle información a esta tabla lo vamos a hacer desde la interfaz gráfica también veremos cómo hacerlo con sql pero lo que quiero es ya tener algo
Speaker A
sobre lo que trabajar para empezar desde lo más simple así que me voy a venir por aquí y le voy a meter datos como dijimos que el user era identificador único voy a empezar en uno voy a venir por aquí y
Speaker A
le voy a dar un nombre bryce y le voy a dar un apellido moure y le voy a dar una edad en mi caso 36 y le voy a dar una fecha la fecha en la que yo empecé a eh
Speaker A
estudiar programación imagínate me voy a presuponer la fecha en la que yo empecé a trabajar pues que yo empezara a trabajar el día de mi cumpleaños Pues el 29 de abril del año no lo sé 2010 aquí estoy metiendo la fecha de 2010 voy a
Speaker A
ampliar esto y mi mail es Bris moure @mor dev.com aquí tenemos los posibles datos que yo quiero insertar en la tabla qué va a pasar ya tenemos ya se ha escrito la tabla ya ya hay una tabla con
Speaker A
estos datos no lo de siempre aplicar tenemos que validar siempre todas las ejecuciones que estamos en la tabla por qué porque nosotros podemos estar cometiendo errores y si lo que yo quiero insertar en la tabla en este caso no
Speaker A
está bien escrito estos datos no son correctos no me los va a dejar ejecutar vengo por aquí lo aplico vemos que me está generando un sql fíjate el sql insert into no sé qué users los campos values ya empezamos a entender cómo
Speaker A
funciona sql y ya vemos que no es tan complicado que en realidad está haciendo referencia a la tabla que le dice los campos de la tabla y cuáles son los valores que yo voy a querer insertar Muy bien pues yo le digo Me gusta esto Oh
Speaker A
error Cómo error he cometido un error en dónde he cometido un error Mira estás intentando guardar una fecha en un formato que yo no te lo permito el date por defecto y por estándar yo no puedo guardar Día mes año en realidad tengo
Speaker A
que guardar año mes día es como me lo indica el estándar Así que vengo por aquí y yo podría decir Ah vale Perdona vamos a modificar Esto 2010-2 me he dado cuenta Dónde está el error vamos a intentar cambiarlo y le le
Speaker A
voy a dar otra vez aplicar me dice ahora lo que voy a intentar lanzar es esta secuencia sql apply Ey ha funcionado genial tenemos nuestra base de datos ya con un dato fantástico por qué ahora ya tenemos un dato porque la secuencia sql
Speaker A
se ha ejecutado correctamente genial vamos a Añadir más datos voy a venir por aquí y voy a meter al usuario dos vamos a meter a un usuario cualquiera venga a ver cómo van funcionando las cosas vamos a ir tirando a ver si yo soy capaz de
Speaker A
meter más usuarios por aquí voy a imaginar un usuario que se llama eh Sara pero que yo no le quiero dar un apellido pero que sí que le quiero meter por ejemplo la edad 20 y que cuándo ha
Speaker A
empezado a estudiar pues es el día de hoy pues 2023 del 10 y el día de hoy es 12 y que el email es Sara @email.com voy a imaginar que yo quiero guardar estos datos Ya veis que en este
Speaker A
caso voy a meter uno nulo lo voy a aplicar lo voy a lanzar e me lo lanza bien genial pues ya tengo este dato vamos ahora a meter otro usuario el autoincremental que teníamos antes si no meto nada Qué pasaría aquí si ahora Yo
Speaker A
vengo por aquí y quiero meter Pues otro usuario por ejemplo Carlos voy a venir por aquí Carlos Quién va a ser este Carlos Pues voy a meter azaustre Carlos azaustre edad eh No lo sé cuántos años tiene Carlos 15 años no lo sé y no voy a
Speaker A
poner la fecha y le voy a poner aquí pues tampoco le voy a meter el email doy de alta Carlos azaustre aquí con 15 años y ya está lo voy a ejecutar Esto va a funcionar o va a fallar veis que ahora
Speaker A
ya hay menos datos en el sql lo lanzo ostras ha funcionado Pero cómo que ha funcionado si yo no le he metido el identificador que le dije que era obligatorio autoincremental se ha encargado él de generarlo ningún problema vengo ahora por aquí y voy a
Speaker A
crear un nuevo usuario de id5 voy a meter ahora a Miriam Miriam González 15 años como Carlos no tenemos fecha y en este caso Miriam sí que va a tener email Miriam @miamarinoficial lanzamos Qué pasa se ejecuta correctamente Por qué me ha dejado
Speaker A
correr esta ejecución porque básicamente yo estoy ejecutando todo esto con permisos de administrador lo que me quiere decir el autoincremental es que si yo estoy insertando un nuevo usuario me va a auto incrementar sobre el identificador que tenga como referencia
Speaker A
Pero si yo soy el administrador en realidad no hay ningún problema en que yo le dé y le el ID que yo quiera yo se lo he puesto porque por qué permite este identificador lo permite igual que yo
Speaker A
ahora podría venirme a Carlos y yo digo Mira yo quiero borrar a Carlos quiero venir por aquí quiero decir venga delete Row me quiero cargar a Carlos lo podría borrar entonces dejaríamos de tener a alguien con el identificador 3 voy a
Speaker A
crear ya una última persona sin identificador para ver Hacia dónde eh auto incrementa qué otra persona Podría tener aquí Pues no lo sé Martín voy a meter aquí a Martín Beta sin edad y sin nada voy a lanzar esto voy a aplicarlo y
Speaker A
me dice Uy ha funcionado has metido datos suficientes Cuál es identificador que le mete nool ha metido el cuatro no porque va a auto incrementar sobre el último identificador que nosotros teníamos Y por supuesto puedo venir aquí y digo vamos a meter al cuatro vengo
Speaker A
aquí meto a sbitar sin nada más lo aplico Y lo acepto y esto también me funciona me ha permitido meter el cuatro sí e incluso ahora los datos me los ha ordenado porque he sido capaz de un poco
Speaker A
seguir la secuencia inicial que yo le marqué a la base de datos entendido Ya tenemos una base de datos con datos lo he hecho todo desde la interfaz gráfica para hacerlo más rápido rápido y para tampoco complicarnos la vida porque creo
Speaker A
que hay conceptos más básicos que podemos aprender antes de meternos con lo que es la creación de una base de datos de una tabla y de cada uno de los elementos de cada una de las filas de base de
Speaker A
[Música] datos ahora sí ya vamos a pasar de utilizar aquí atajos ni de que si botón derecho ayúdame workbench no no no vamos a empezar a entender lo que es sql y cuáles son los diferentes comandos que nosotros podemos lanzar en sql para eso
Speaker A
quiero hacer una cosa lo primero que quiero hacer es tener aquí a mano visual Studio code Por qué Porque aquí lo estamos haciendo en el curso pero creo que también puede ser bastante importante que cada una de las
Speaker A
sentencias que nosotros aprendamos en sql las vayamos guardando en un proyecto en un proyecto con código porque así yo lo voy poder subir a repositorio y así tú el día de mañana si quieres ir repasando Cuáles son las secuencias que
Speaker A
nosotros hemos ido lanzando lo podremos ver rápidamente aquí Así que vamos a venirnos por aquí me voy a crear una carpeta este proyecto en realidad ese repositorio de código de github del proyecto de sql y aquí yo voy a crear
Speaker A
una carpeta donde voy a ir guardando un fichero por cada Comando nuevo que aprendamos del lenguaje sql si os parece bien Así que puedo venir por aquí y empezar por el principio de todo por lo que Nosotros le llamamos los statements
Speaker A
no las sentencias que nosotros podemos lanzar en en sql voy a venir por aquí le voy a llamar statements estas son todas las secuencias que nosotros podríamos lanzar en sql y dentro de estos statements Yo podría venir por aquí y
Speaker A
decir comandos o directamente empezar a lanzar comandos y después ya veremos cómo somos capaces de estructurarlas tenemos que ir creando diferentes agrupaciones No pasa nada vamos a ir tirando millas y vamos a ir probando diferentes cosas estamos aquí
Speaker A
los statements vamos a aprender el primer Comando o primera Sentencia como le querréis Llamar de sql el primer Comando de sql es el que Nosotros llamamos Select y voy a crear un fichero que se llama Select sql para así
Speaker A
nosotros la sentencia Select la vamos guardar aquí para que la tengáis de alguna forma en un único fichero representada pero en realidad donde nosotros la vamos a probar es desde el editor Cómo escribimos la sentencia Select o cómo escribimos las palabras
Speaker A
reservadas las palabras reservadas simplemente con echar a escribirlas es suficiente cóm es escribiré yo un Select escribiendo la palabra Select pero pero pero se suele hacer también por convención que las palabras reservadas del lenguaje sql las pongamos en
Speaker A
mayúsculas porque así a nivel visual aunque se pueden ejecutar en minúsculas a nivel visual queda como mucho más entendible yo puedo venir por aquí y ver que como yo estoy escribiendo Select me queda más claro que esta es una palabra
Speaker A
propia del lenguaje Para qué es la sentencia Select la sentencia Select es una sentencia de selección como su nombre dice vale una base de datos es un conjunto de datos Y sql es un lenguaje que nos sirve para manejar datos para
Speaker A
consultar para operar con ellos para modificarlos para insertarlos para trabajar en definitiva de una forma muy simple con los datos que tenemos Aquí vamos a hablar de la sentencia principal asociada a la palabra reservada Select que es que imagínate que yo quiero
Speaker A
consultar mi tabla Quiero consultar Cuáles son los datos de mi base de datos pues si yo Quiero consultar todos los datos de una tabla lo que tengo que hacer es Select asterisco esta será la forma de que yo consulte todos los datos
Speaker A
que hay en una tabla Y cómo le indico Cuál es la tabla que yo quiero consultar pues con la palabra from también una palabra reservada indicándole a continuación Cuál es la tabla que yo quiero consultar la tabla que yo quiero
Speaker A
consultar se llamaba users con lo cual si yo lanzo esta secuencia sql que dice Select asterisco fromont users lo que nos tiene que acabar devolviendo esta consulta son todos los usuarios lo lanzo qué tenemos aquí pues lo que ya
Speaker A
estábamos viendo antes en realidad aquí con este Rayo se ha ejecutado correctamente y lo que estamos viendo aquí es el resultado de ejecutar esta consulta Cuál es el resultado de ejecutar esta consulta Pues todos los datos que tenemos en la tabla así de
Speaker A
fácil os fijáis lo fácil que es lanzar una consulta Por qué existen las secuencias sql las sentencias sql existen porque nosotros cuando tengamos una aplicación y tengamos que acceder a los datos Imagínate que tú tienes una web donde quieres pintar todos los datos
Speaker A
o todos los usuarios que tú tienes dados de alta en la base de datos Pues tú tendrás que lanzar desde tu código el que sea javascript python Java lo que sea tendrás que acabar lanzando una consulta sql contra la base de datos la
Speaker A
base de datos te va a responder esto y después tú ya decidirás cómo lo pintas en la pantalla para esto es para lo que sirven las sentencias de sql para poder trabajar con lo que nosotros tenemos en la base de datos Así que os voy a dejar
Speaker A
guardado en este fichero qué podría ser un Select sin más un Select así de simple Pero brce qué puedo hacer con un Select un Select es demasiado simple seguro que podemos hacer más cosas con el Select Imagínate que yo ahora vengo
Speaker A
por aquí y le digo Mira en vez de hacer Select asterisco que es que traime absolutamente todas las columnas de la base de datos vamos a pensar que yo lo único que quiero son los nombres de los usuarios de esta base de datos Cuál es
Speaker A
el nombre de la columna el nombre de la columna era name con lo cual si yo hago Select Y en vez de asterisco name name Perdón que me quiso aquí autocompletar y yo lanzo esto qué encontraré vemos lo
Speaker A
que me responde esto es igual no me visteis pinchar en el Rayito pero en realidad lo he lanzado con un comando qué nos dice ahora Cuál es el resultado ahora de esta consulta Pues nos dice columna name y todos los nombres
Speaker A
Imagínate que yo solo quiero Consultar los nombres de la base de datos para mi aplicación que yo no tengo ninguna intención de conocer ni la fecha ni el email ni nada pues yo lo que hago para optimizar el tratado de datos Y para
Speaker A
izar cuál es esa petición que yo le quiero hacer a mi base de datos para que no sufra mucho o por qué yo le pido solo los datos que yo quiero acabar pintando Select name for users Esta es la manera
Speaker A
que nosotros tendremos de traernos los datos que nosotros queremos que yo ahora lo que quiero hacer es Mira Quiero que me traigas el ID y el nombre pues voy a venir por aquí voy a decir user ID coma
Speaker A
y el propio nombre Crees que con esto es suficiente yo puedo venir por aquí y esto se ejecutaría no se ejecutaría borramos esta parte de arriba qué pasa y des aparece el error Por qué desaparece el error porque inicialmente nosotros
Speaker A
tenemos que ponerle punto y coma a la sentencia pero si nosotros tuviéramos solo una sentencia la primera no hace falta que le pongamos punto y coma porque esta aplicación nos lo va a interpretar como Bueno pero bueno en mi
Speaker A
caso voy a hacerlo siguiente voy a venir por aquí voy a seleccionar únicamente esta línea y lo voy a lanzar lo lanzamos Y qué vemos por aquí uno Bris 2 Sara TR Carlos vengo por aquí lo lanzo Y esto no
Speaker A
me da ningún problema me trae los datos de user ID y me da también los datos de el nombre en cambio Si yo lanzo esta sentencia por aquí arriba lo único que me trae son los nombres Ya tengo la
Speaker A
manera de identificar Cómo yo puedo traerme toda la tabla o Cómo yo puedo traerme solo el nombre de los usuarios dejarme que ponga aquí el punto y coma o Cómo yo puedo traerme también el identificador pero también me puedo
Speaker A
traer el nombre ya estamos especificando un poquito más lo que es esta consulta Select Seguimos avanzando venga ya tenemos el hemos aprendido nuestra primera secuencia de sql si utilizamos este este Rayito por aquí en realidad lo que estamos haciendo es que estamos
Speaker A
ejecutando únicamente la línea en la que nos situamos pero yo sí que es cierto que tiendo a seleccionar y a lanzar el comando de alguna forma interesar por entender Cuáles son las posibilidades que nos va a dar la aplicación
Speaker A
[Música] gráfica sigamos viendo más comandos hemos visto el Select vamos ahora a ver lo que es un Select pero con una peculiaridad voy a venir por aquí voy a crear un nuevo fichero y le voy a llamar distint Okay ya entenderemos lo que es
Speaker A
esto Qué es esta secuencia distinct pues vamos a venir por aquí voy a borrar esto voy a volver a hacer un Select habitualmente si nosotros lo que estamos haciendo son consultas sobre la base de datos si no estamos escribiendo si no
Speaker A
estamos borrando lo haremos con un Select pero vamos a entender Qué es el distin vamos a ejecutar el distin de una forma muy parecida ahora voy a utilizar la palabra reservada distint como vemos por aquí la voy a poner en mayúsculas
Speaker A
tenemos esta palabra reservada distin y vamos a entender lo que hace qué va a hacer Pues nos va a traer los resultados distintos que no tengan esa coincidencia con lo que nosotros le vamos a indicar si yo ahora viniera por aquí y dijera
Speaker A
Mira sele distinct asterisco from users lanzo esto qué acabamos encontrando si yo soy capaz de lanzar esto venga esto se lanza ostras no me ha dado ningún resultado Por qué vamos a irnos al log porque parece que esto Pues no le ha
Speaker A
gustado lo que yo he escrito a ver a ver lanzo esto y y vemos por aquí Uy error Por qué error y me dice código 1064 tienes un error en esta sintaxis Cómo que tenemos un error en esta
Speaker A
sintaxis En dónde yo me he equivocado qué os suelo recomendar aquí mira selecciónalo intenta revisar a ver si por lo menos el editor me lo puede explicar En caso de que no me pueda explicar esta sentencia de que no sea
Speaker A
capaz de ejecutar esta parte Yo lo que os recomendaría es muchas veces hasta si no tenéis ni idea de por dónde de tirar lo que os recomendaría es vamos a leer primero el error tienes un error en el
Speaker A
sql revisa el manual esto habitualmente nos suele decir esto en la línea uno Tienes un problema Qué es lo mejor que tú te vengas aquí y digas sql error code y miramos el error Cuál era el código de
Speaker A
error era el 1064 vengo por aquí 1064 buscamos el código de error donde sea yo ya lo sé Este distin es el que yo necesitaba o en realidad necesitamos otro nombre por aquí fijaos estaba mal escrito así tenemos que empezar a
Speaker A
revisar cada uno de los errores para acabar entendiendo Dónde está nuestro problema esto lo estaba haciendo a propósito Porque si consultá la documentación Vais a ver que lo que nos dice es venga mejor ejecútese todos Ahora me dejará ejecutar
Speaker A
desde todos Ahora que ya ha puesto el nombre bien Vamos a lanzarlo Ah mira ahora ya tengo resultados a ver qué pasa Ah si ha funcionado aquí ya lo podríamos detectar porque veis que ya aparece con otro color las palabras reservadas si
Speaker A
las tenemos bien escritas ya no van a aparecer en gris también utilizar ese tipo de reglas para ir entendiendo donde igual podemos estar metiendo la pata Así que en este caso en el momento que lo pusimos bien qué no está haciendo el
Speaker A
distin Pues a priori nada raro nos está diciendo Select distin from users qué nos dice Bueno pues Cuáles son los campos diferentes Pues en realidad son todos en realidad todo lo que nos está mostrando por aquí son distintos Pero y
Speaker A
si yo ahora hiciera el distin por edad por ejemplo dejarme que este lo copie y que nos lo llevemos a nuestro Editor para que esto se vaya guardando Qué pasaría si yo ahora vengo por aquí y le meto un campo concreto por ejemplo el
Speaker A
campo h y lo lanzo Qué nos está mostrando por aquí H Ah mira 36 20 y 15 Qué nos está diciendo esto nos está trayendo únicamente los campos que son distintos y cuál es su valor vayamos a la ejecución de antes la
Speaker A
ejecución de antes si nos fijamos en edad vemos que hay una edad que es 36 otra que es 20 otra que es 15 15 varias que son nul y otra que es 15 con lo cual tenemos una edad que se está repitiendo
Speaker A
con lo cual los campos distintos los valores de los campos distintos únicamente son 36 20 y 15 nul no lo tiene en cuenta y el 15 se repite dos veces con lo cual no importa que se repita dos o 50 lo que indica es que el
Speaker A
valor de los campos distintos por edad son estos solo 36 20 15 y nul si yo pusiera name aquí en realidad me traería todos Porque todos los nombres son distintos Así que vengo por aquí dejamos Este ejemplo y vamos a dejarlo por aquí
Speaker A
guardado creo que esto incluso puede ser mejor si yo le voy dando identificadores si creo el 01 si creo el 02 porque así podemos también ir ordenando De qué manera vamos viendo en el curso cada una de estas sentencias sabremos que la
Speaker A
primera sentencia pues es esta 01 que vemos elect la segunda que vemos es el distin aprender sql básicamente es ir poco a poco revisando Cuáles son todos los comandos que nosotros podemos lanzar y sobre estos comandos ir entendiendo
Speaker A
qué pasa y Cómo podemos ir manejando los datos ya veis que según las necesidades que nosotros tuviéramos en nuestra aplicación o las necesidades que tuviéramos a la hora de interactuar con la base de datos Pues nosotros podríamos ir lanzando las consultas lo mismo de
Speaker A
antes que yo solo quiero mostrar en mi aplicación Cuáles son los nombres diferentes pues si yo lanzo un distinct por nombre seré capaz de consultar en la base de datos Cuáles son los usuarios con un nombre distinto distinto sigamos
Speaker A
venga vamos a seguir viendo diferentes formas o diferentes sentencias del lenguaje sql vamos a hacer un Select de toda la tabla un Select from users por aquí como ya teníamos antes pero ahora mismo vamos a intentar acotar los
Speaker A
resultados en base a un criterio le estábamos dando un criterio con una palabra reservada pero ahora va a entrar una de las palabras reservadas casi más importantes del lenguaje sql y que en muchos casos no nos podemos olvidar es
Speaker A
la palabra reservada we y que yo me voy voy a venir por aquí voy a crear el 03 y voy a crear el we. sql Qué es el we el we estamos limitando Cuál es el criterio de los datos que nosotros queremos
Speaker A
recuperar visteis que hasta ahora nosotros lo que estábamos haciendo a nivel de sintaxis es modificando esta parte el Select le pedíamos un campo concreto o le lanzamos el disting pero ahora tendremos el we el dónde lo que yo
Speaker A
quiero buscar es algo concreto aquí podríamos aplicar lógica pura y dura aquí le podríamos indicar Mira yo solo quiero que me traigas los usuarios donde la edad H es igual a 15 si recordáis había dos usuarios con la misma edad yo
Speaker A
ahora lanzo esto y qué nos retorna nos retorna Solo dos filas nos retorna Solo dos tuplas nos retorna el usuario 3es que es Carlos y nos retorna al usuario 5 que es Miriam Por qué nos retorna solo a
Speaker A
Carlos y a Miriam porque son los únicos que cumplen ese criterio el criterio que le acabamos de indicar que la edad sea 15 así que ahora aplicación cómo funciona cuando vamos a una aplicación y yo selecciono un filtro que igual en el
Speaker A
filtro le estoy diciendo venga tráeme solo los usuarios de 15 que tienen 15 años pues yo me voy a base de datos lanzo esta consulta se me recuperan todos estos datos Y esto es lo que yo acabo pintando en la propia así de fácil
Speaker A
Este es un we sin más lo tenemos otra instrucción s simple en sql Tenemos también nuestro quer Esto va a seguir avanzando podríamos ahora también ordenar los datos es lo que conocemos como order byy orderby creo un orderby
Speaker A
cómo sería el order byy voy a quitar el Word voy a volver otra vez a lo mismo por supuesto en el Word vamos a pararnos un poquito más en el Word si yo quiero solo traerme el nombre aquí pondría user
Speaker A
Y si lanzo Esto me dice Uy no me trae user Por qué Porque el campo se llama name Ahora solo me recupera Carlos y Miriam Pero y si quisiera lanzar los distintos vamos a hacer lo de antes distinct vamos a lanzar esta instrucción
Speaker A
vemos que ya empezamos a combinar que estas eh sentencias cada vez son más grandes llegaremos a un momento en el curso en que empezaremos a crear unos comandos bastante grandes pero vemos que aquí ya estamos combinando el Where el
Speaker A
from El distin también le estamos indicando qué campo nos quedemos traer vamos a ejecutar solo esto y vemos Carlos y Miriam en realidad no hay ningún problema este distin está ejecutándose igual que si yo intentara lanzar este name en realidad es lo mismo
Speaker A
porque el campo diferenciación name Carlos y Miriam es distinto en realidad es distinto Entonces qué problema hay vamos a ponerlo Ahora aquí h y vamos a lanzar esta secuencia a la H ahora ya no me trae a dos personas Pero si yo sé que
Speaker A
el Word igual a 15 es de dos personas de Carlos y Miriam Pero por qué ahora solo nos retorna un campo solo nos retorna un campo porque le estamos indicando el H y si se está repitiendo dos veces el 15 en
Speaker A
realidad el distin es que el campo vale 15 vale guardé monos esto para que os quede el ejemplo con users con h y también teníamos con name también lo teníamos con y ahora sí Ahora vayamos al orderby Qué es el orderby yo creo que ya
Speaker A
os está dando alguna pista veis que a nivel de sintaxis no es un lenguaje que sea muy complicado es bastante bastante Claro en cuanto a lo que estamos escribiendo casi si lo vamos leyendo y traduciendo a español nos
Speaker A
estamos entendiendo lo que ya quiere hacer cómo podremos ejecutar ahora el order by el order by va Aquí order by Select vuelv volver a recuperar todo Select asterisco FR order by qué será order by pues la capacidad de ordenarlos
Speaker A
Por qué los puedo ordenar por la edad si yo viniera por aquí y pusiera ag qué pasaría esto funcionaría no funcionaría estoy haciendo orderby con guión bajo y digo Uy creo que el orderby era así pero no me acuerdo order by por supuesto es
Speaker A
sin ese guion bajo pero con esto lo que os quiero decir es que os venís a la documentación buscáis el order byy y aquí ya os va a decir mira el orderby se puede utilizar así Y esta es la sintaxis
Speaker A
y mira un ejemplo y mira diferentes secuencias la documentación os lo explica todo en detenimiento Así que también tenerlo muy en cuenta nos dice cómo vamos a poder variar y cómo vamos a poder combinar los diferentes elementos de sql vamos a hacer muchísimas cosas en
Speaker A
este caso voy a lanzarlo solo por esto a ver qué nos sale nos lo lanza y dice Uy primero viene el usuario cuatro después el se el tres ostras Qué ha hecho esto Qué ha hecho esto vamos a ver por aquí
Speaker A
order by nul nul 15 15 20 36 esto nos está indicando que por defecto nos está ordenando los datos en base a la edad vemos que la edad mínima por cómo funciona sql son los campos que estén nulos y después sí que es capaz de ir
Speaker A
metiendo en base a este campo que es un número entero es capaz de ir ordenándolos si nosotros quisiéramos ordenarlo de otra manera podríamos hacerlo también sin ningún problema podremos ordenarlo aunque esto por defecto asc qué significará este asc
Speaker A
este as este asc significa que nosotros estamos ordenando ascendentemente tenemos en realidad el mismo resultado porque por defecto ordena de forma ascendente Pero si yo pusiera desk Y lanzara esto qué tenemos ahora el orden descendente Cómo hemos aplicado un
Speaker A
criterio muy claro a la hora de recuperar los datos yo me quiero traer todos los datos pero quiero que la forma a la que tú me los entregues sea ordenados de mayor a menor con lo cual aquí es esta parte que nos está diciendo
Speaker A
pues bueno en este caso lo vamos a hacer en esta manera descendente diferentes maneras de tratar la ordenación de datos puedo venir por aquí lanzar ar únicamente el criterio por defecto ascendente el descendente o indicarle si yo quisiera también decirle ask esto
Speaker A
queda aquí pues seguramente No yo le podría indicar el order by Pero y si yo ahora quisiera meterle el Word dónde iría el we pues vamos a intentar meterlo aquí para que veáis como la sintaxis sigue una estructura muy típica Pongo
Speaker A
aquí we email vale es igual y vamos a ponerlo entre comillas o si lo ponemos si no tenemos espacios en la palabra lo podemos poner sin comillas y voy a poner aquí Sara @gmail.com y vamos a intentar lanzar
Speaker A
esto a ver si no nos da problemas esto parece que da problemas lo primero que vamos a intentar probar es estará mal la sintaxis vamos a poner la comilla esto funciona parece que no está dando un error parece que esto no es
Speaker A
verdaderamente lo que busca pongo la comilla dejarme que venga por aquí qué más cosas podrían estar fallando Y si a nosotros nos podrían fallar los espacios no sé qué lo lanzo qué nos estaba fallando vengo por aquí esto se lanza
Speaker A
igual vemos que se lanza igual aquí teníamos este espacio se l hace igual pero lo que nos estaba faltando era que nosotros teníamos aquí un problema con la comilla si yo le pongo la comilla y a mí tampoco me gusta darle esto Aquí
Speaker A
vamos a poner la comilla bien Vamos a pegarlo aquí y vamos a ejecutar qué nos muestra Ahora nos dice ey Ahora solo nos trae a Sara Por qué solo nos trae a sala a Sara porque en realidad nosotros
Speaker A
estamos limitando mucho el resultado me dice sí sí ordénelos por edad pero es que tú solo Me estás pidiendo a Sara Entonces esta parte está restringiendo también esta parte qué podría pasar vamos a hacer lo siguiente me voy a
Speaker A
venir a mi tabla voy a revisar la tabla y le vamos a dar el mismo email Pues a Carlos azaustre Carlos azaustre va a tener también el email Sara @gmail Voy a aplicar Este cambio lo lanzo ya está
Speaker A
bien Ahora hay dos personas que tienen el email vamos a volver lanzar esta consulta a ver si cambia algo Ah ahora ya vienen dos resultados Por qué Porque nuestro criterio es que el email sea Sara @gmail y ahora ya como no me lo
Speaker A
retorna me lo retorna ordenado por edar descendente ente por eso aparece primero Sara con 20 años y después Carlos con 15 seguimos aumentando y aquí que podría ir el distinct O podría ir únicamente el campo del nombre o podría ir lo que a mí
Speaker A
me diese la gana ahora si yo lanzo esto vemos que ya solo me tien los nombres porque igual es algo que yo quería consultar únicamente los nombres y ya está vamos a ver por aquí un poco cómo está funcionando toda esta secuencia de
Speaker A
ahora lo que yo quiero es ordenar pero dándole un poquito de complejidad podría ordenar perfectamente siguiendo este criterio que estábamos viendo aquí más secuencias Cómo podemos seguir aprendiendo cosas Pues bueno otra secuencia que yo quiero aprender hoy es
Speaker A
aquí un nuevo fichero El Comando número 5 de sql y es el comando like sql para qué va a servir este like vamos a intentar reutilizar esto que veíamos aquí teníamos esta query bastante compleja voy a quitarle cosas le voy a
Speaker A
quitar el order byy y el Word este que estamos viendo ahora Aquí vamos a intentar entender Qué significa ese like Qué sería el like el like significaría que nosotros estamos dándole un criterio de búsqueda Que es variable que no es
Speaker A
únicamente como estábamos poniendo aquí no no no yo lo único que estoy buscando son es una condición donde el email sea igual a como Nosotros hemos visto sarg mail.com Imagínate que yo lo que tengo es la necesidad de buscar a todos
Speaker A
los usuarios que tienen un email con gmail Imagínate que yo lo único que necesito son usuarios con gmail la lanzando esta consulta solo me traería estos dos usuarios lo voy Lanzar con asterisco y aquí tenemos estos dos usuarios Pero hay más usuarios con gmail
Speaker A
Miriam no tiene Gmail pero ahora le vamos a cambiar su email para que sea Gmail también actualizo el Gmail El Comando de actualización también lo veremos pero ya digo que estos son más avanzados entonces de momento vamos a
Speaker A
hacerlo desde la interfaz Ahora vengo aquí lo lanzo y me sigue trayendo usuarios Cómo podría indicarle yo que quiero traerme a toda la gente con gmail Aquí es donde El Comando like y este Comando like sirve para definir una especie de
Speaker A
contiene o se parece a pero yo no tengo Cuál es el valor final cómo lo podríamos indicar aquí like el email o lo que fuera en este caso fuera algo concreto fuera solo el Gmail gmail.com vamos a intentar lanzar esto nos dice Uy el Word
Speaker A
este parece que está fallando si yo le quitara el Word esto funcionaría pues parece que tampoco está funcionando Por qué qué Tendremos que seguir haciendo cosas Tendremos que seguir limitando ando de alguna manera también todo este resultado vale vamos a la documentación
Speaker A
porque cada vez que nosotros empezamos a complicar un poquito todo esto estaremos entendiendo que igual nos falla algo a ver dónde tengo un like nos dice Ah mira parece que el like como funcionas primero con el Word estás intentando
Speaker A
hacer una sintaxis que en realidad no es así como lo tenemos es un Word y cuál es el criterio de exclusión el email y a qué se tiene que parecer este email pues tiene que ser gmail.com lanzo esto a a
Speaker A
ver qué tenemos se lanza y nos retorna nul por qué porque nosotros estamos diciendo aquí que el valor de coincidencia tiene que ser gmail.com mm los usuarios son gmail.com no son Sara @gmail.com Sara @gmail.com y Miriam @gmil.com aquí es donde entra el
Speaker A
concepto de wcar no de cómo nosotros podemos indicarle con según que instrucciones criterios de búsqueda dinámicos Cuál es el criterio de búsqueda Dinámico Cómo utilizamos un criterio de búsqueda Dinámico con el porcentaje el porcentaje al principio va a indicar que todo lo que haya antes de
Speaker A
Gmail nos Vale cualquier cosa lanzo esto Ah mira ahora ya me vienen fíjate Ya vienen los tres por qué Porque yo le estoy indicando en este caso de que tráime todos los usuarios que son algo seguido de Gmail así que por eso me trae
Speaker A
a estos tres si yo por el contrario quisiera Buscar todos los usuarios que son Sara y lo que sea vemos que este wildc se la meto al final si yo ahora ejecuto esta esta línea vemos que ahora ya no me trae tres solo me trae dos los
Speaker A
dos que son Sara y algo más que yo ahora Quiero buscar solo los que tienen ara en esto en emails es algo tonto Porque todos deberían llevar ara pero imagínate que yo quiero buscar esto Pues yo tendría que hacer lo siguiente @ y la
Speaker A
wcar lo lanzo no retorna ninguno Por qué Porque se cumple la parte de que tengamos un ara y después algo pero antes también puede tener cualquier cosa con lo cual metemos la Wild car al principio y al final ahora lo Y qué me
Speaker A
acaba retornando pues me está retornando toda la gente que tiene un email y que contiene un ara ya hemos hecho un poquito más okay Así que ya tenemos Cómo ir entendiendo este like como nosotros podemos consultar Pues con diferentes
Speaker A
criterios que quizás nosotros no conocemos el valor Exacto pero que igual sí que podemos decirle seguro Cuáles son los usuarios de fmail Pues venga el criterio lo tengo pero es imposible que yo sepa con antelación Pues algo como
Speaker A
esto si un usuario va a ser Sara ar no sé qué no no pero igual esto este criterio sí que yo lo tengo claro Así que venga por aquí todos estos criterios de like vamos a seguir buscando nuevas
Speaker A
sentencias con sql por supuesto No no quiero redundar porque si no creo que esto sería bastante largo y creo que sería bastante repetitivo todo lo que hemos visto anteriormente se puede ir combinando todas estas palabras reservadas con lo cual esto aquí podría
Speaker A
llevar un distinct podríamos ir por un solo campo lo que sea todo eso lo podemos ir combinando y podemos ir avanzando siempre que respetemos la sintaxis y el orden de cada una de estas palabras reservadas siempre que respetemos la sintaxis estándar venga
Speaker A
otro más Vamos a ver ahora El Comando not Qué es el comando not creo que ya se entiende que esto podría ser un comando de negación verdad algo que nos esté indicando no cumple esto Qué significa el no cumplir esto pues esto es igual
Speaker A
que en programación si yo vengo por aquí y hago Select from users Where email lo vamos a simplificar pongo un email y digo mira volvemos a algo que probamos antes Búscame los usuarios donde el criterio sea que el email es que
Speaker A
coincide con Sara @gmail.com esto lo lanzo y queé me voy a acabar encontrando si yo lanzo esto por aquí pues Sara y Carlos que tienen este email pero Y si yo ahora pusiera we not email igual a Sara lo lanzo que me está
Speaker A
retornando me está retornando justo la gente que tiene email distinto a Sara @gmail.com bry y Miriam no coincide con esto Entonces esto es sin más una de un criterio que nosotros ya estábamos siguiendo siguiendo antes igual que tenemos el not esto lo podremos ver muy
Speaker A
fácil con otro tipo de limitadores que es que nosotros también le vamos poder indicar que algo no se cumpla pero podremos empezar a concatenar diferentes criterios Cómo podríamos empezar a concatenar diferentes criterios Por eso yo voy aquí a cambiarle el nombre al not
Speaker A
y voy a poner and Or Not qué quiero decir con esto bueno seguro que ya os está sonando a que esto es programación pura y dura puedo empezar a concatenar con un and puedo empezar a negar con un
Speaker A
not o puedo empezar a intentar que uno de Los criterios sea verdadero para que se cumpla con un or vamos a verlo en marcha todo esto cómo podría ejecutar un and un and es tan fácil como que yo le
Speaker A
diga mira que no sea el email o que and aquí ya le estoy metiendo algo más and que la edad sea 15 lanzamos esto Uy solo ha venido Miriam aquí por qué ha venido solo Miriam porque es el único que
Speaker A
cumple el criterio que su email no sea Sara y que su edad sea 15 qué pasaba cuando no metíamos la edad 15 que venía Miriam y bryce pero bryce no tiene edad 15 con lo cual al restringir esta parte
Speaker A
nos estamos encontrando que el único resultado es Miriam igual que tenemos el an decíamos Y si metemos el or vamos a lanzarlo ahora lo que tenemos son tres resultados en vez de dos Cómo por qué Porque hay uno que lo que cumple aquí
Speaker A
nos dice que Sara que su email sea Sara @gmail lo veis aquí aquí Sara @gmail.com pero me dice o que la edad sea 15 Cómo o que la edad sea 15 entonces o me cumple una cosa o me
Speaker A
cumple otra y si en realidad esto se corresponde con uno con otro es capaz de empezar a traerme los datos entonces usuarios que no tengan email es Sara @gmail pues bry y Miriam bryce y Miriam no tienen un email que sea Sara @gmail
Speaker A
pero Carlos sí que tiene un email que sea Sara @gmail Pero en cambio le he dicho Oh que la Ed sea 15 Así que no cumple el email pero sí que cumple la edad con lo cual es capaz de traernos
Speaker A
también los datos de Carlos vamos por aquí y vamos a meter también como es elor listo Estos son las diferentes consultas básicas que tenemos en sql voy a meter una última voy a meter una última Porque después las otras creo que
Speaker A
ya siguen una lógica algo distinta vamos a ver una única más 07 y le voy a llamar limit sql y vamos a venir aquí voy a lanzar todo esto y al final o lo voy a simplificar venga que no no os lo quiero
Speaker A
hacer difícil vamos a consultar toda la tabla y voy a poner aquí al final limit 2 y vamos a lanzar esta consulta qué viene brce y Sara Y si yo pongo limit 3 qué viene bry Sara y Carlos Qué hace el
Speaker A
limit el limit está trayendo solo los tres primeros datos de la tabla otra cosa fuera que este es el limit simple Pero y si me voy a la consulta que yo tenía antes Y ahora hago aquí limit dos
Speaker A
Esto funcionaría sí que funciona y cuántos me trae dos y si yo le quito el limit Cuántos me traía tres veis que yo puedo seguir metiéndole restricciones a esta query ahora Aunque Existen tres filas que cumplen este criterio el email
Speaker A
y el or si yo le digo que me la limite a dos únicamente me va a traer a dos para qué se puede llegar a utilizar el limit cuando hablamos de paginaciones incluso estamos limitando que solo nos traemos
Speaker A
unos resultados para que así también sea más fácil interactuar con la base de datos Porque claro qu bien que esta base de datos solo tiene cinco usuarios pero imagínate que mi base de datos tiene un millón de usuarios qué crees que pasa si
Speaker A
yo le lanzo esto a la base de datos que tiene un millón de usuarios o un millón de posibles resultados que igual la base de datos tarda en ejecutar esta consulta la base de datos necesita eh una memoria
Speaker A
la base de datos necesita un poder computacional para poder ejecutar este código esto es muy simple y es casi instantáneo pero en una base de datos muy grande esto puede llevar tiempo ejecutarse así que también tenemos que ser seguir criterios que sean capaces de
Speaker A
que limiten el tratamiento de de esas consultas y hacerlo de nosotros también de forma eficiente Entonces veis como aquí le seguimos metiendo algún dato [Música] más supongo que en cierto modo sobra decirlo pero bueno una de las cosas
Speaker A
esenciales que tenemos en sql y que no he dicho nada son los comentarios no habíamos hecho un comentario hasta que yo creo que voy a venir por aquí lo voy a poner aquí en grande hasta que os subí la clase
Speaker A
anterior en la clase anterior ya visteis que empezaron aparecer comentarios Así que si queréis voy a crear un fichero muy muy simple le voy a llamar fichero 00 para Que aparezca el primero y le voy a llamar comments sin más comments sql y
Speaker A
voy a dejar esto para que veáis que este es un curso desde cero y en el que no nos olvidamos nada vale Este es un comentario en una línea simplemente con dos guiones Y si quer queremos hacer comentarios en varias líneas pues lo
Speaker A
hacemos con muchos lenguajes de programación simplemente tenemos que escribir pues la barra inclinada y el asterisco y el asterisco y la barra inclinada para este es un comentario en varias líneas como siempre los comentarios Pues bueno cuando hacen
Speaker A
falta cuando nos sirven para complementar nuestro código cuando vosotros estáis haciendo sql por supuesto No hay que hacer comentarios de este tipo o tiene las tres primeras filas de la tarb users esto no hace falta porque cualquier persona que sepa
Speaker A
un poquito un mínimo un mínimo ísimo de sql sabe de sobra Que si vi esto ya ve se le da asterisco from users limit 3 esto no hace falta comentar lo que ya es obvio que hace esta línea vale pero sí
Speaker A
que es cierto que en según Qué tipos de consultas que pueden ser complejas que pueden tener alguna casuística pues un poquito extraña puede estar perfectamente bien escribir algún comentario Así que para que nadie se queje dejamos aquí una parte para
Speaker A
también hablar de los comentarios vale dicho los comentarios que esto no importa mucho vamos a seguir revisando cada uno de estos comandos el siguiente Comando del que yo os quiero hablar vamos a hablar es el comando ocho según
Speaker A
la lista que estamos haciendo por aquí vamos a venir por aquí vamos a crear un nuevo fichero 08 le voy a poner por aquí y son los comandos de tipo nul así que voy a crear aquí un nul sql y vamos a
Speaker A
entender Qué significa esto de los comandos de tipo nul voy a venir por aquí y vamos a lanzar sin más pues una consulta completa Select asterisco y sobre qué sobre la tabla que teníamos cómo se llamaba nuestra tabla se llamaba
Speaker A
users ya sabéis que si yo ahora lanzo todo esto básicamente lo que tengo es la tabla completa sabéis que al final teníamos que poner punto y coma para delimitar la la instrucción y que podemos lanzar o solo esta línea o si
Speaker A
tuviéramos varias consultas lanzarlas todas por partes bueno Esto es algo que vimos también en la clase pasada si quisiéramos realizar algún tipo de filtrado con un comando de tipo nul podríamos utilizar dos variaciones por ejemplo la primera es vale Yo quiero
Speaker A
sacar todos los usuarios quiero hacer una consulta donde obtener todos los usuarios que en realidad tienen el email nulo por qué porque imagínate que yo tengo una aplicación donde se ha registrado todos estos usuarios que vemos por aquí Y de alguna forma quiero
Speaker A
notificarles en mi aplicación que metan un correo porque yo tengo forma de llegar mediante una notificación Push a estos usuarios Porque es una aplicación móvil Pero eh Me gustaría intentar que registren un correo para después yo mandarles Pues no lo sé publicidad me da
Speaker A
igual lo que sea pues claro yo necesitaría sacar una consulta de bases de datos donde de alguna forma encontrara Cuáles son los usuarios que tienen el email nul Cómo Tendremos que hacer esto Pues con comandos de tipo null yo le pongo aquí el from ya le he
Speaker A
dicho Cuál es la tabla lo que me faltará es darle la condición el Word recordáis el we así era como aplicamos las condiciones el we dónde le decíamos un campo es esto es lo otro pues en este caso los comandos de tipo nul lo que Le
Speaker A
podremos decir es donde por ejemplo el campo email que yo tengo aquí is null aquí tenemos este comando de tipo nul si yo ahora lanzo esta instrucción Qué veremos que nos retorna dos usuarios savitar y Martín en los que
Speaker A
efectivamente su email es nul vamos a revisar la tabla sbitar no tiene email Martín no tiene email efectivamente Esta es la consulta por el contrario me guardo la consulta vamos a dejarla por aquí por el contrario quiero realizar
Speaker A
esta misma consulta pero obteniendo solo los usuarios que tienen email porque ahora lo que quiero hacer es una funcionalidad concreta en la que enviar un correo para qué me voy a traer todos los usuarios de base de datos si sé que
Speaker A
algunos no tienen email Pues aquí lo que tendría que hacerle es decirle is not null lanzo esta instrucción aquí lo tenemos Bright Sara Carlos y Miriam los cuatro usuarios que vemos aquí lo veis tienen el email Estas son las dos
Speaker A
posibles variaciones de los comandos nulos pero igual que vimos el resto de instrucciones significa que donde tenemos una consulta que en cierto modo esto es simple nosotros podemos empezar a decirle and igual a 15 Qué pasa si yo ahora lanzo
Speaker A
esta instrucción Pues mira que ahora me van a venir solo de usuarios Carlos y Miriam porque tiene un email distinto de nulo y su edad tiene 15 bry ya no sale Sara ya no sale porque no tienen esta
Speaker A
edad y esto es comoo empezando a combinar cada uno aquí lo veis cada uno de los comandos que tenemos anteriormente cada vez somos capaces de realizar consultas a base de datos que sean Pues no sé un poquito más complejas
Speaker A
eso sería el punto ya tenemos este Comando pasamos al siguiente que nos queda queda mucho por revisar y creo que simplemente con enseñar un poco Cuáles son los principios del Comando es suficiente para entender cómo después llegado el caso lo podremos empezar a
Speaker A
combinar para crear otro tipo de consultas vale vamos a otro Comando El Comando número eh 9 en este caso que le voy a llamar min maxs ql ya podéis ir intuyendo que esto es un comando para intentar seleccionar mínimos o máximos
Speaker A
tengo aquí mis usuarios y de repente en mi aplicación tengo una funcionalidad en la que tengo que buscar el usuario con mayor edad porque le voy a dar un premio es que me da igual cómo haría para buscar esto en mi base de datos pues por
Speaker A
ejemplo yo podría decirle Mira Select asterisco ya sabéis que aquí podemos filtrar por columna o lo que sea Pero bueno yo me traigo todo el usuarios voy a intentar hacer este filtrado a ver qué pasaría Select asterisco from la tabla
Speaker A
es users Pero si yo intento pararme a pensar qué pasa Tengo esta tabla Pero cómo puedo empezar a filtrar cómo le puedo podría intentar claro podría decir users weare el H Es mayor que uno concreto no pero para eso tenemos esta
Speaker A
restricción que es Quiero encontrar el usuario con la mayor edad Pues tengo un comando que es Max y dentro de Max Cuál es el campo máximo el de la edad Qué pasa si yo lanzo esto Ah mira la edad es
Speaker A
36 Mirad qué fácil y si yo quisiera sacar todas las columnas no sé qué le pongo el Max le podría meter un asterisco esto funcionaría no bueno bueno en este caso lo que pasaría es lo siguiente que yo tendría que intentar
Speaker A
seleccionar cada uno de los campos puedo poner el má el Max H Imagínate que me quiero sacar también el nombre pues yo empezaría a concatenar cada uno y me dice Uy qué ha pasado qué ha pasado me está diciendo Uf eres capaz de
Speaker A
seleccionar el máximo pero en realidad tú ahora me estás diciendo que quieres también meter el nombre entonces para eso no es tan fácil no podremos seleccionarlo directamente los comandos habitualmente minim Max de la manera en los que lo solemos usar habitualmente
Speaker A
habitualmente ya os lo digo de la manera en las que solemos usar es intentando solo obtener ese campo Porque así es una forma de hacer un selector y de obtener únicamente Cuál es el valor máximo o por el contrario también podríamos obtener
Speaker A
el valor mínimo y ya está vale habitualmente lo solemos utilizar así así que quedaros con que si utilizáis tanto un Max por aquí que yo lo voy a dejar guardado Max vale como un min aquí tenemos laedad mini es 15 por qué no nos
Speaker A
salen varios usuarios Por qué Parece que esto no es la manera en la que nos pueden salir el resto de Campos bueno Esto lo veremos un poquito más adelante pero de momento vamos a dejarlo así porque en este caso veis que quizás
Speaker A
cuando yo llamaba el Max solo había un usuario entonces en cierto modo pues podíamos decir jov va ya me podía sacar los datos de todo el usuario Pero en cambio cuando yo busco el min vemos que tanto Carlos como Miriam tienen 15 años
Speaker A
con lo cual si yo lanzara esto y me sacaran aquí dos tuplas dos filas pues quizás no es justo el resultado que yo estoy buscando porque yo lo que quiero es la mínima edad de todos los usuarios no es usuarios si quisiéramos sacar los
Speaker A
datos de los usuarios ya tendríamos que hacerlo de otra manera así que dejarme que me guarde por aquí este min y de momento ya después veremos Cómo combinándolos de otra manera podremos empezar a sacar más datos pero quedaros
Speaker A
sobre todo con la función de que somos capaces de ir por un campo máximo o mínimo solo lanzando esta instrucción así de fácil si ya tenemos esto Cuál será el siguiente Comando que podríamos utilizar de alguna forma vamos a hablar
Speaker A
de uno muy parecido estamos hablando de comandos que son capaces de realizar cálculos en este caso Buscar el mínimo Buscar el máximo Pero por supuesto También tenemos comandos que son capaces de contar tenemos un comando El Comando 10 que es el con con sql y yo creo que
Speaker A
para utilizarlo fíjate voy cambiar solo el min por el Con qué creéis que va a pasar si yo ejecuto esto si yo ejecuto esto qué hará este con si yo lo lanzo veis aquí count H Select count H from
Speaker A
users y me dice 4 venga Por qué si yo le he pasado el H venga vamos ahora por aquí y le voy pasar asterisco y lo vamos a lanzar y me dice seis por si alguien igual malinterpretó este Comando os
Speaker A
fijáis lo que está contando son el número de resultados de usuarios que tienen edad por eso Si yo hago count a asterisco me dice vale tú tienes seis resultados en la tabla Pero si yo hago count the H me dice cuatro porque hay
Speaker A
cuatro usuarios que tienen un valor distinto de nulo referido al H que es lo que limitamos allí Así que vamos a guardarnos esta instrucción pero también vamos a guardarnos esta para que la tengáis de ejemplo la voy a poner aquí
Speaker A
con h porque es mucho más fácil lo primero que nos surge si digo vale muy bien br Yo pensaba que el count iba a acabar contando iba a acabar and todas las edades que yo ahora vengo por aquí a
Speaker A
la instrucción anterior y digo venga voy a volver al H voy a venir al H Qué pasa si yo ahora en este caso quisiera sumarlas pues bueno creo que queda dicho no vamos a crear un nuevo comando por
Speaker A
aquí que por supuesto se va a llamar zoom si yo ahora Cambio el count este que vemos aquí por zoom y lo lanzo si no explota vemos 86 ya está claro ahora pensemos vamos a hacerlo con un lenguaje
Speaker A
de programación Cómo sería la forma manual Por eso tenemos un lenguaje para manipular la base de datos y por eso tenemos muchas operaciones y muchas funciones en bases de datos que en el curso no daremos todas porque hay yo
Speaker A
creo que decenas Y creo que eso podría echar mucho tiempo pero os estoy dando las principales las que todo el mundo debería conocer y que de alguna forma Pues en cierto modo debemos saber no son las que más se utilizan tenemos la
Speaker A
documentación donde si nos queremos hacer expertos pues ya sabéis que se trata de estudiar y y de echarle un ojo a toda la documentación os decía que ahora pongámonos en el caso de que esto lo queremos hacer con un lenguaje de
Speaker A
programación que yo tuviera un fichero donde están todos los usuarios donde estoy guardando Las edades y donde los quiero sumar qué tendría que hacer recuperar todos los usuarios y después casi montarme un bucle for que fuera usuario por usuario recorriendo el campo
Speaker A
edad agrupándolos sumándolo sumándolo sumándolo sumándolo sumándolo Imagínate lo ineficiente que sería para una aplicación que tenemos que Mostrar lo que suman todos los usuarios de base de datos la edad Imagínate lo que sería hacer una consulta a base de datos en la
Speaker A
que yo me vengo por aquí y hago Select asterisco me saco todos y después de du lenguaje de programación tengo que ir poquito a poco tengo que ir venga sumo pues la edad de bry que es 36 más má la
Speaker A
edad de Sara que es 20 más la edad de Carlos que es 15 sería super ineficiente en cambio con un lenguaje de base de datos ya tenemos muchas cosas ya tenemos muchas operaciones ya tenemos muchas funciones que nos van a permitir
Speaker A
trabajar de una forma muy eficiente Y nosotros a la base de datos solo le acabaremos pidiendo lo que necesariamente nos hace falta en la aplicación y ya intentaremos traernos los datos de la manera más procesada de la manera en la que nosotros podamos
Speaker A
utilizar sql en este caso para que nos dé los usuarios o para que nos dé resultado que nosotros queremos y después ya la aplicación la web la app lo que sea el backend ya se encargará de trabajar con é de una manera ya externa
Speaker A
pero siempre intentamos acceder a la base de datos de la manera más eficiente y pedir los datos de la manera que nos resulte más eficiente para después nosotros trabajar desde la aplicación o desde donde sea veis que en este caso
Speaker A
pues tampoco es que fuera muy complicado veis que lo que estamos haciendo es un repaso bastante sencillo sin más pero que es necesario para conocer estos más facilitos vamos a hablar de otra función también muy habitual que es la función
Speaker A
de media Cómo será la función de media este Comando número 12 avg no el average qué se suele decir pues por supuesto también tendremos un comando yo me vengo aquí que es a vg lanzo esto y así de
Speaker A
fácil digo Pues mira la media exacta de todas las edades de los usuarios de mi base de datos es 21,5 tendría sentido hacerlo en una aplicación procesándolos uno a uno ningún sentido cuando yo tengo funciones también muy fácil os estoy
Speaker A
poniendo algunas sencillas para que entendáis que aparte de esos filtrados también podemos hacer ciertas operaciones Incluso ciertas operaciones lógicas ciertas operaciones aritméticas como son esta suma como son Esta media vamos a pasar ahora sí ya a otra operación de filtrado vamos a seguir con
Speaker A
más operaciones de filtrado este Comando número 13 será el comando in Qué hace el comando in venimos por aquí borramos el comando in es capaz de hacer un filtrado en el que nosotros conocemos Cuáles son precisamente los datos por los que hay
Speaker A
que filtrar es una especie de Límite basado en uno o varios elementos que nosotros conocemos imagínate teníamos comandos para intentar Buscar que algo se contenía por ejemplo veíamos por aquí con el we podíamos ir por la edad vale
Speaker A
con el like podíamos Buscar que fuera semejante a algo pero imagínate que nosotros sí que tenemos claro los tipos de usuario que queremos recuperar Por ejemplo yo lo que quiero hacer es me quiero ir a base de datos y me quiero
Speaker A
traer todos los usuarios que se llamen bry y que se llamen s Cómo podría hacer esto por supuesto podríamos hacerle algo así como imagínate decirle que el nombre es igual a bryce and el nombre es igual a Sara podríamos intentar como con
Speaker A
condicionales concatenar diferentes valores de una propiedad pero eso es bastante ineficiente si nosotros lo que queremos es comprobar que un campo tome diferentes valores y filtrarlo por los diferentes valores en ese caso lo que vamos a utilizar es el in voy a decirle
Speaker A
Por aquí que me quiero traer todos los usuarios vale from la tabla users y cómo es este nuevo comando in Y cómo fun funcionará in Pues el in lo tenemos que combinar primero de la palabra Word siempre que estamos intentando hacer una
Speaker A
restricción tenemos que utilizar el comando Word Vale y vemos que aquí el in parece que aún está fallando es decir que el in solo como tal seguramente no sea suficiente este in Entonces si no es suficiente qué más Tendremos que hacer
Speaker A
pues Tendremos que indicarle por supuesto sobre qué queremos filtrar Cuál es el campo que nosotros queremos filtrar he dicho que el nombre así que voy a decirle Where name in y como lo especific amos pues sin más lo que
Speaker A
hacemos Es paréntesis y entre comillas habitualmente comillas simples especificamos Cuál es el valor de filtrado digo habitualmente entre comillas simples pero aquí lo veis yo lo estoy intentando utilizar Qué pasaría si yo ahora le pongo aquí pues brce y lanzo
Speaker A
esto vemos que ha salido el usuario y si le pongo bry en minúscula veis que también sale con lo cual parece que es correcto parece que el in en realidad no está siendo cas sensity que a nosotros nos da igual es capaz de Buscar que sea
Speaker A
un brce en mayúsculas o minúsculas os decía la comilla simple Pero qué pasa si yo utilizo la comilla doble esto en muchos lenguajes funciona pero en sql en concreto en My sequel no funciona así que recordar que para definir cadenas de
Speaker A
texto lo tenemos que hacer con esta comilla simple Vale tengo la consulta que es capaz de traerme todos los braises bueno en este caso solo uno Pero y si me quiero sacar más usuarios todos los brises y todas las aras vengo por
Speaker A
aquí y hago esto aquí tenemos todos los bres a las aras caso de uso venga Quiero buscar porque típica aplicación estamos con la aplicación y el usuario selecciona un filtro y en el filtro escribe brce y dice que el filtro tiene
Speaker A
que ser coincidente Pues esta podría ser la consulta que estamos lanzando en base de datos por ejemplo que sea esta solo con brce Si fuera brce más algo más ahí ya tendremos que hacer un like pero si queremos ir por algo concreto por
Speaker A
supuesto si yo pongo Bray y lanzo esta consulta vemos que br ya no viene aquí tenemos que estar 100% seguros que coincida el criterio Word con el por aquí ya ves que todos son combinaciones vimos inicialmente el we y ahora como al
Speaker A
we le podemos ir añadiendo otros comandos de filtrado Okay Vale seguimos Vamos a continuar con algún Comando más que yo creo que a podemos ver algunos dentro de lo que yo Considero que son eh bastante sencillos pero muy utilizados
Speaker A
otro Comando es que igual que podemos hacerle link para indicarle cierto modo ese listado de coincidencias también podremos indicarle que un resultado que antes Se comentaba por ahí se decía y si fuera un comando mayor que y que fuera
Speaker A
otro menor que podríamos pensar vale lo mejor sería utilizar por ejemplo una condición indicándole con un and que fuera mayor que algo y menor que algo pero tenemos un comando creado exclusivamente para que sea mucho más eficiente que es el comando between El
Speaker A
Comando between es un comando que nos sirve para encontrar resultados que se comprenden entre dos valores entre un valor mínimo y entre un valor máximo Cómo funciona el comando bwin Pues aquí podemos lanzar este Select asterisco from users nos vamos a traer todos y
Speaker A
especificaremos en este caso Cuál es la restricción Cómo especificamos restricciones con el we vale Y tenemos El Comando bwin nos falta lo de siempre vale tenemos la restricción que es el we tenemos el tipo de restricción que va a
Speaker A
ser con el bwin Pero dónde queremos hacer esta búsqueda de restricción Pues yo quiero buscar todos los usuarios filtrados por edad y por edad entre 20 años y 30 años cómo indicaría esto 20 and Aquí vemos ahora comoo le combinamos
Speaker A
al bwin un condicional que ya lo habíamos visto el an el or el not y ahora si lanzo esto vemos que solo sale Sara vamos a comprobarlo entre 20 y 30 años Sara tiene 20 años Carlos y Miriam
Speaker A
tienen 15 entonces nada y bryce tiene 36 con lo cual es más que 30 y sbitar y Martín no tienen edad definida con lo cual por supuesto como se va a equivocar por supuesto Así es como podríamos utilizar este bn listo el bwin más
Speaker A
comandos este vamos a verlo aplicado de forma sencilla Pero esto cuando empecemos a ver alguna consulta un poco más compleja o cuando vosotros trabajéis con consultas más complejas os va a resultar también bastante útil el siguiente Comando que os quiero enseñar
Speaker A
es el comando de alias vamos a poner Comando 15 alias para qué va a servir un alias casi no hace falta ni explicarlo El Comando alias sirve para establecer alias sirve para establecer en el momento que estamos recuperando datos
Speaker A
para intentar darle un nombre distinto al que ya tiene por qué esto porque en realidad si empezamos a trabajar con diferentes datos con diferentes columnas o cómo nos lo está recuperando la base de datos Pues igual nos resulta
Speaker A
muchísimo más fácil en vez de trabajar pues con este init date que igual me parece algo confuso Imagínate que yo le quiero dar un nombre muy concreto para una vez veas representado los datos a mí me resulte muchísimo más fácil trabajar
Speaker A
con ellos cómo podremos utilizar este alias también es muy fácil nosotros intentamos lanzar la consulta que sea nos venimos por aquí intentamos lanzar el alias y en función de lo que nosotros vamos seleccionando pues Mira vamos a dejar esta consulta para que veáis que
Speaker A
la podemos aprovechar pero en este caso lo que yo quiero sacar por aquí es el nombre de este usuarios entre 20 y 30 años y también quiero sacar el init date init date pero init date a mí me parece
Speaker A
un nombre bastante terrible yo puedo lanzar esto y vemos que tenemos a Sara con su init date Uf init date Qué es init date Pues igual en base de datos estaba modelado de esta forma pero yo como lo quiero representar cuando
Speaker A
empieza a traerme todos estos datos es de otra forma porque quiero trabajar con esos datos con otro nombre porque después quiero seguir trabajando con otras consultas que van a tirar del resultado de esta de esta consulta ya veremos Cómo se hace eso Si yo le Quiero
Speaker A
establecer un alias Solo tengo que utilizar la palabra reservada as y entre comillas darle el alias darle el nombre imagínate me voy volver loco fecha de inicio en programación pedazo alias pero pedazo alias que aquí lo tenemos la
Speaker A
vista de esta tabla Cómo se ha resuelto esta tabla Y cómo la veo representada Ahora tiene tiene dos Campos name y el campo que se llamaba init date ahora se llama fecha inicio en programación porque a mí me ha dado la gana porque yo
Speaker A
creo que puedo trabajar mejor con un campo que se llama así con lo que sea pero ahora aún me voy a volver más loco y voy a ponerle comilla doble a ver qué pasa con la comilla doble puedo utilizar
Speaker A
comilla doble sí o no os he estado engañando Oh puedo utilizar comilla doble y si yo le pusiera users Where el name es igual a brce esto funciona Uy que os he engañado antes estaba esperando Pero por supuesto también
Speaker A
podemos utilizar comillas dobles yo os dije comilla simple y a ver qué pasaba Así que vamos a guardarnos esto como que yo quisiera poner aquí algo superraro igual que yo puedo venir aquí os lo dejo en comillas simples para que os quede
Speaker A
indicado de que si yo quisiera utilizar comillas simples también lo podría hacer Tenemos este Comando seguimos siguiente Comando que me gustaría ver ya tenemos el alias esto lo vamos a dar dentro del del Comando alias porque tenemos como
Speaker A
una ligera variación dentro del alias que nos permite concatenar cadena que nos permite concatenar atributos que nos permite concatenar columnas vamos a venir por aquí vamos a borrar esto vamos a hacer nuestro Select bueno Select from sin más nos sacamos todos los usuarios
Speaker A
from users aquí tenemos todos los usuarios esto aquí se lanza Imagínate que yo quiero sacar en una misma columna el nombre y el apellido Cómo podría intentar concatenar en una misma columna nombre y apellido para eso tenemos El
Speaker A
Comando concat si yo me vengo Ahora aquí y dentro dentro de los paréntesis de concat yo la acabo pasando cómo quiero concatenar esta cadena cómo la puedo concatenar pues cómo la concatenar imagínate el name y el surname creéis
Speaker A
que esto va a funcionar que va a fallar lo lanzo aquí lo vemos bryce moure Carlos azaustre Miriam González vemos que podemos concatenar Qué pasaría si yo quisiera dejar un espacio en el medio pues lo que yo le tendría que concatenar
Speaker A
es un espacio aquí podría concatenar lo que me diera la gana Imagínate que yo estoy concatenando sí que valores de columnas Pero si yo quisiera ahora concatenar algo de este estilo poniendo nombre dos puntos y el nombre y
Speaker A
apellidos dos puntos y los apellidos me estoy creando aquí una cadena totalmente customizada la selecciono Y qué vemos nombre bry apellidos dos puntos moure incluso podría meterle aquí una coma lo que me diera el texto que nosotros nos
Speaker A
diera la gana pero por qué os quiero dar justo esto a la vez que el alias os dejo aquí cómo sería el concat Pero por qué el concat se suele ver a la vez que el Arias porque fijaos Cuál es el nombre de
Speaker A
la columna Quién entiende esto en realidad no tenemos un nombre de columna en realidad lo que hemos lanzado es esta función de concatenación es muy habitual en el momento que lanzamos funciones de concatenación darle un alias y yo ahora
Speaker A
vengo por aquí y le digo que el Arias es nombre completo nombre completo ahora lanzo esto y vemos que ya tenemos una tabla mucho más bonita que nos dice el nombre de la columna que es nombre completo por eso os quería hablar de los
Speaker A
alias a la vez que el concat nada de difícil vamos a ver un comando que se llama groupby Comando 16 y vamos a ver qué es esto del groupby El Comando groupby en realidad lo que hace es agrupar filas que tienen mismos valores
Speaker A
y en filas resumen en realidad se encarga de buscar algo muy concreto vale pero sí que agrupándolos por esos valores Cómo podemos utilizar el Group bu vamos a venirnos por aquí vamos a crear un Select Select asterisco por
Speaker A
ejemplo de la tabla users Cómo utilizaremos el Group Buy como siempre tenemos que indicar la tabla Y en este caso ahora ya poner El Comando El Comando Group by es un comando de agrupación con lo cual si nosotros no
Speaker A
queremos hacer ningún filtrado extra pues no Tendremos que hacer ningún Word por ejemplo podríamos venir por aquí y decir Group byy Y por qué quiero agrupar Imagínate que yo quiero agrupar por edad Qué pasaría si yo lanzo esto pues si yo
Speaker A
lanzo esto lo más seguro que nos vamos a acabar encontrando es que tiene un error porque y ahora que ya los hemos visto nos viene muy bien y ahora vamos a entender Por qué los comandos por ejemplo Max por ejemplo min que veíamos
Speaker A
antes son muy habituales que los igual que el count igual que el zoom el avg todos los que veíamos anteriormente esos comandos que nos que se encargan de realizar cálculos Cómo se utilizan mucho en combinación con los grupos claro cómo
Speaker A
vamos a ser capaces de agrupar por edad si nosotros no le establecemos ningún criterio claro no podemos crear una fila resumen si nosotros no le indicamos De qué manera se está creando esa fila resumen Así que imagínate que yo ahora
Speaker A
pusiera por aquí un Max de la edad esto también es muy habitual El Comando con el que agrupamos es el comando con el que ejecutamos la función Así que yo estoy intentando aquí crear este Group Buy de la Dad lo lanzo y lo vemos y qué
Speaker A
tenemos en este Group byy fijaos Cuáles son las filas únicas que existen a nivel de edad vayámonos a toda la tabla Las edades que teníamos eraa 36 20 15 y 15 si yo quiero realizar una agrupación por estas propias edades una agrupación por
Speaker A
estas máximas edades en realidad lo que nos dice es que tenemos una máxima edad que es 36 una máxima edad que es 20 una máxima edad que es 15 porque son todo diferentes agrupaciones de edades máximas pero vemos Que 15 solo nos saca
Speaker A
una vamos a guardar esta porque aún tenemos que ver más ejemplos Imagínate que ahora este Group Buy lo hago con la función count y lo lanzo qué tenemos 1 1 2 cómo 1 1 do ahora lo que estoy
Speaker A
contando son las edades ya no estoy buscando edades máximas de cada grupo ahora estoy intentando contar edades Por qué me dice 1 1 2 por qué me dice 1 1 2 intento sacar la edad me dejaría sacar el C de la edad y la edad vale aquí lo
Speaker A
vamos a ver muy fácil por eso hasta aquí funciona y en el momento que ya intentamos definir un poco más si de verdad no se cumple el criterio de agrupación es cuando nos empieza a fallar Entonces yo creo que con Este
Speaker A
ejemplo se ve bastante fácil lo que son estos criterios de agrupación que queremos seguir haciendo más cosas vemos Esto vale me vengo arriba y digo order by H ask lanzo esto qué tenemos ahora pues tenemos los mismos datos pero se
Speaker A
han agrupado y vemos que también nos Saca los datos nulos que esto es algo que no comenté antes vemos que empieza desde los datos nulos que aquí vemos h0 nos dice Bueno pues que en realidad no es capaz de agrupar nada al ser nulos
Speaker A
tenemos dos de 15 1 de 21 de 36 pero en este caso sí que lo he agrupado ascendentemente comoo podríamos seguir haciendo cosas más grandes el Group byy el we ordenamos venga intentamos hacerlo un poquito más a ver si yo fuera capaz
Speaker A
hasta no lo sé le metemos un W le intentamos meter un were H mayor que 15 esto funcionaría yo sería capaz de empezar a lanzar esto y que nos diera algún resultado venga vamos a hacer esto Ah mira ya solo sale 20 y 36 Por qué
Speaker A
Porque ahora le tenemos una restricción más veis como es muy fácil al final siempre seguimos un criterio empezamos por la selección de los campos si le queremos meter alguna función de qué tabla lo queremos Consultar si lo queremos restringir de alguna forma con
Speaker A
el web y después ya con otros modificadores que tenemos de filtrado pues como puede ser el grb como puede ser el order cada vez consultas más grandes cada vez consultas más complejas sin que aumente demasiado de complejidad no sé cómo lo veis vosotros pero yo creo
Speaker A
que aunque parece que estamos metiendo cosas diferentes y estamos combinando cosas que hemos visto anteriormente nos enteramos perfectamente de lo que es esto y que en realidad si sabemos cómo funciona por separado cada una de estas restricciones o estos comandos Es
Speaker A
simplemente ir leyendo lo que hace la consulta por supuesto y esto Ojalá lo veáis algún día en vuestras vidas cuando trabajéis así en una empresa con grandes proyectos con grandes bases de datos podéis ver consultas Eh kilométricas vale puede ser una locura porque se
Speaker A
empiezan a juntar tablas y tablas y tablas y establecer criterios y criterios y criterios Y eso es una locura igual ahí sí que te tienes que parar y empezar a leer con calma pero aún así pero aún así el criterio que
Speaker A
vamos a seguir siempre es muy parecido a este vamos a seguir que aún nos queda algún concepto un poquito n un poquito más avanzado no no muchísimo más pero que que os va a servir también para entender un poco mejor cómo son este
Speaker A
tipo de de restricciones venga vamos a ver ahora El Comando 17 que es el comando having Qué significa esta cláusula having de alguna forma esta cláusula having la empezamos a utilizar cuando la clave no se puede utilizar en
Speaker A
funciones agregadas vamos a ver muy rápido Qué significa Esto me voy a venir aquí a mi consulta vamos a volver a limitarla volver partir de la base from users y vamos a ver cómo podemos utilizar un haby el hing también es muy
Speaker A
habitual utilizarlo con funciones que en realidad están agrupando de alguna manera voy a venirme por aquí y vamos a empezar aú sin hacerle muchos cambios igual que tenemos te from users podríamos ahora hacerle hing y podríamos ponerle un criterio Imagínate que el
Speaker A
criterio que nosotros le queremos intentar Añadir es el de que la edad es mayor que 20 como hemos visto esto y vamos a lanzarlo vamos a ver qué tiene esto Qué nos está dando en realidad aquí estamos viendo solo esto cómo nos está
Speaker A
trayendo únicamente a un usuario Pero y si quisiéramos hacerlo con 19 Ahora aquí ya veríamos más usuarios pero veis lo que tenemos aquí 20 Sara y brce 36 me voy a ir a usuarios vale tenemos dos Pero y si lo quisiera hacer con la edad
Speaker A
mayor que 14 qué veríamos Ahora aquí pues en realidad vemos todos usuarios con edad hasta ahora parece que el hing no ha hecho nada pero Y si empezamos a combinar el hing si empezamos ahora a establecer relaciones que de verdad Nos
Speaker A
van a limitar un poquito más estos resultados Cuáles son esas relaciones que hacíamos antes establecí vamos por ejemplo relaciones donde teníamos un conteo el count de la edad Qué pasa fallo por qué porque nosotros ahora vamos a intentar contar Cuáles son esas
Speaker A
edades pero en realidad Nosotros con esta restricción lo único que estamos haciendo es Buscar que sea cada usuario el que se va a corresponder con este habit en realidad nosotros lo que tenemos que hacer es que estas funciones
Speaker A
esta función que nosotros estamos agregando por aquí también se corresponda con el hing es una manera también de meterle una restricción vale nosotros podríamos hacerle esto well lanzo esto qué tenemos cuatro Vale Nos dice que hay cuatro usuarios mayores
Speaker A
Pero y si yo intentara hacer un hing intentara lanzar aquí el count del h intentar hacer una restricción de la misma forma que nosotros la estamos limitando en el sel Qué estamos viendo aquí que en realidad no hay nada okay
Speaker A
Por qué no hay nada en este caso porque vamos a empezar con mayor que cero este jain a ver qué pasa Ah mira cuatro en realidad nos Está sacando esta tupla del contador porque es mayor que cero Pero
Speaker A
si yo le pusiera mayor que tres también me sacaría Pero si yo le pusiera mayor que cu no me sacaría ninguno yo le podría decir que me empezara a establecer estos contadores de edades incluso siguiendo un criterio pero
Speaker A
limitando este contador limitando este contador de que esta agrupación en realidad tenga un limitante más este limitante este limitante de que vale tú la agrupación que me estás intentando sacar aparte tiene que cumplir que sea mayor que cuatro si no no me lo saques
Speaker A
vale estamos limitando con esta función una función agregada extra por supuesto a todo esto podríamos ordenarlos podríamos hacerle lo que nos di la gana voy Poner este caso para que veamos que sea mayor y en el momento que nosotros
Speaker A
lanzamos esto yo podría seguir metiéndole más casos yo que sé pues que los quiero agrupar por algo concreto se lo podría meter que podría ordenar porque en realidad tengo más tuplas pues lo podría hacer no habría ningún problema así que having limitación sobre
Speaker A
una propia columna agregada que nosotros También estamos definiendo los haming se usan bastante con los Group by que hemos visto anteriormente no es algo que utilicemos mucho no es algo que utilicemos mucho pero sí que creo que es
Speaker A
un comando bastante simple y que tenemos que conocerlo para cuándo tenemos que hacer estas limitaciones tan concretas Javi listo este si no lo conocéis Y sí que en realidad programável Comando Case sql ese está bastante Guay porque a veces existe esa
Speaker A
discusión de Oye sql es un lenguaje de programación o no No sé qué creéis Porque hay discusiones que sí que es cierto que estrictamente sql es un lenguaje de consulta de base de datos es un estándar muy concreto pero claro
Speaker A
cuando nosotros hablamos de y Qué es un lenguaje de programación como tal y alguien Podría empezar bueno que si estud completo que al final podemos ejecutar lógica la la lógica bulana no sé qué Oye oye pero que yo esto también
Speaker A
lo puedo hacer entonces aquí hay una cierta discusión que sí que es cierto que sql es un tipo de lenguaje muy concreto y que su aplicabilidad es a base de datos Y ya está pero que a nivel de posibilidades nosotros podemos operar
Speaker A
nosotros podemos establecer lógica boleana nosotros podemos utilizar funciones y nosotros podemos utilizar lógica incluso tan compleja como puede ser la de un Case que nosotros podamos decidir en función de un resultado qué va a pasar Okay vamos a ver el Case esto
Speaker A
es un poquito más complejo pero ya veréis como es también bastante interesante vamos a hacerlo aquí from users seleccionamos la tabla por defecto y ahora entendamos que queremos from users en plural entendamos Que ahora queremos Establecer un Case Qué es un
Speaker A
Case un Case en realidad lo que hace es lanzar una lógica concreta en función de una condición cómo podremos lanzar un Case voy a lanzar un Case Case Cómo establecemos el Case en concreto pues Tendremos que establecer Cuáles son esos
Speaker A
casos de uso volvemos a poner aquí Case y ahora tenemos que ir identificando Cuál es la lógica que queremos lanzar Cuáles son esas diferentes opciones con las que nos podemos encontrar Imagínate que yo quiero Pues no lo sé que HM
Speaker A
consultemos la tabla y cuando el usuario sea mayor de edad mayor de mayor o igual que 18 años en realidad en la base de datos en la tabla que nosotros vamos a resultar de lanzar esta búsqueda aparezca es mayor de edad y cuando no lo
Speaker A
sea que ponga es menor de edad vale Así que un Case en sql es tan fácil como poner Case When y cuál es la restricción Cuál es la condición que nosotros queremos establecer Pues yo digo mira cuando la edad sea mayor que mayor o
Speaker A
igual podría poner o mayor de 17 podría poner simplemente quiero decirle Mira genen H mayor que 17 den Entonces quiero que en ese campo lo que aparezca es el texto es mayor de edad y en el caso de
Speaker A
que no como en todo Case nosotros Tendremos que ponerle diferentes condiciones o una condición también por defecto Ah mira si existe el els Cómo que existe el els Bueno ya digo que yo diría que sql es un lenguaje de bases de
Speaker A
datos pero que está muy próximo de ser un lenguaje de programación a Us y aquí yo le digo es menor de edad Cómo Tendremos que finalizar este Case con la sentencia end Y dónde queremos hacer esta búsqueda esta búsqueda La queremos
Speaker A
hacer from en qué tabla en la tabla users ya tenemos aquí la instrucción Esto será capaz de funcionar vamos a ver ponemos enteraros aquí Select lo veis Cómo lanzamos el users y qué tendríamos que hacer más este Front iría aquí no no
Speaker A
no no este Front ya tiene que ir aquí abajo Okay esto funcionaría lo lanzamos esto no va a funcionar vale Por qué no va a funcionar qué creéis que falta aquí significa que en realidad aún no hemos establecido algo concreto Nosotros le
Speaker A
podríamos por ir refinando Cómo funciona el els en el momento que nosotros definimos un caso un caso que va a acabar desencadenando una lógica que es que escriba sin más pues es mayor de edad o es menor de edad es muy habitual
Speaker A
utilizar también un alias Por qué Porque si nosotros utilizamos un alias somos capaces de representar Esto vale seríamos capaces de representar qué es lo que queremos hacer aquí voy a escribir aquí H test esto sería suficiente sí o no por qué no sería
Speaker A
suficiente yo estoy intentando acceder a todos los datos voy a cambiarlo aquí por h y vamos a intentar lanzar esto vamos a ver si de verdad está haciendo algo en realidad nosotros seguimos teniendo problemas vamos a intentar depurar el
Speaker A
error esto también es muy habitual cuando empezamos a entrar en consultas algo más complejas es muy habitual que nosotros nos empecemos a encontrar con errores Cuáles son los errores Ey que yo pongo aquí el Else que yo pongo el end
Speaker A
Pero qué más nos puede faltar falta una coma puede faltar una coma lo ponemos Aquí vamos por aquí vamos a poner otra vez el asterisco vos vemos que nos fallaba si metemos una coma no nos falla Vale entonces quedaros con que las
Speaker A
secuencias y en estas que son un poco más complejas tenemos que acordarnos muy bien de cómo funciona para eso tenemos el debug el debug en el momento que lo tengamos nos va a decir que tenemos un error sintaxis que nosotros podemos
Speaker A
revisar que nosotros podemos Buscar el tipo de error y no hay ningún problema esto por qué no se estaba poniendo la coma para que veáis que todas las instrucciones que hemos hecho anteriormente [ __ ] es que no teníamos
Speaker A
que poner coma En ningún lugar nosotros empezábamos a meter el asterisco empezábamos a seleccionar un valor concreto lo que fuera y no tenemos problema pero ahora mismo Esto no es cuestión de que tengamos que seguir una lógica es cuestión de que si queremos
Speaker A
utilizar el Case lo tenemos que utilizar iar de esta forma Aquí también os he enseñado una cosa nueva vamos a venir por aquí sigue fallando no es cuestión de que esté en la misma línea o esté en línea distinta aquí os he intentado
Speaker A
también ya ir mostrando Cómo en realidad es habitual escribir una consulta hasta ahora estábamos haciendo las consultas todas en una sola línea si entra en una sola línea no está mal no hay ningún problema pero cuando ya empezamos a
Speaker A
entrar en algún nivel de complejidad todo esto lo podríamos escribir en una línea no pasaría nada pero cuando ya empezamos a entrar en ciertos niveles de complejidad igual que cuando estamos programando código y nosotros intentamos que el código sea lo más legible que se
Speaker A
vea lo mejor que yo llegue al código y que lo tenga que leer y diga Ah vale mira qué rápido lo he entendido si yo esto lo pongo todo en una línea qué creéis pues que va a ser mucho más
Speaker A
difícil de leer como nosotros delimitamos Cuándo se ejecuta o hasta dónde lleo una instrucción con el punto y coma por favor a medida que vayáis creando queries mucho más grandes intentar ir formateas e intentar es representándolas para que se vean bien
Speaker A
Vamos a lanzar esto qué tenemos Hala tenemos la tabla porque hemos traído Select asterisco y ahora tenemos una columna más Cuál es la columna más una columna que dice H test antes hemos visto los alias digo le voy a poner aquí
Speaker A
es mayor de edad Imagínate que hago esto y ahora vengo aquí y hago true recordáis esto que pueda poner aquí true que pueda poner false esto qué funciona no funciona aquí lo veis se interpreta como un campo bullano Por eso digo que
Speaker A
cuidadito con La potencia de sql vale es mayor de edad 10 1 esto es un campo buano uno true cero false cuidado eh si yo quisiera os lo lo dejo aquí representado de esta forma y también os lo dejo Bueno lo voy a poner así primero
Speaker A
así y también os voy a dejar este caso para que veáis como También tenemos diferentes formas de ejecutar esta lógica que yo quiero ejecutar una lógica extra podría meter más wen puedo meter wen h = a 18 den Puedo ponerle No lo sé
Speaker A
primer año de mayoría de edad o acaba de cumplir acaba de cumplir la mayoría de edad Imagínate lo tenemos por aquí Qué pasa buen vamos a lanzar solo esta consulta esto funciona por supuesto y vemos que no nos sale ninguno Por qué no
Speaker A
nos sale ninguno no nos sale ninguno porque no tenemos ninguno con 18 Cómo podemos solucionar esto metemos un usuario más el usuario 7 que el usuario si pues va a ser control que acaba de llegar por aquí no tiene apellidos en
Speaker A
cambio Pues justo acaba de cumplir 18 años vale aplicamos esto nos genera la query decimos que se va a insertar y aquí está ahora Cuando yo vuelvo a lanzar esta consulta ahora ya tendré vemos le he metido esto H qué ha pasado
Speaker A
me dice control 18 es mayor de edad Por qué Porque funciona como un If y un Else de toda la vida nosotros tenemos esta condición que nos dice When age mayor que 17 es mayor de edad entonces esto ya
Speaker A
se ha cumplido como ya se ha cumplido ha pintado es mayor de edad y ya no ha intentado ni comprobar si la condición de 18 años es correcto ha pasado de eso qué tendríamos que hacer aquí pues bueno
Speaker A
Lo tendríamos que implementar bien yo podría hacero esto y podría decirle mira cuando sea mayor en realidad de 18 podría decirle aquí mayor de 18 una vez hago esto Ahora sí lo lanzo vemos Que en control ya nos dice acaba de cumplir la
Speaker A
mayoría de edad un If y un Else de toda la vida lo que es traducido en muchos lenguajes de programación cuando hay que hacer pues diferentes condiciones un switch Case vale Ya estamos casi acabando las instrucciones que yo
Speaker A
entendía como fácil Bueno también os quiero enseñar esto Imagínate que yo no le pongo un alias si yo no le pongo un alias que pasaría bueno lo de antes que lo que nos mete es la condición cosa que
Speaker A
es una locura con lo cual ya no os he puesto ni la opción de crear un Case sin un alias porque si no el nombre va a ser todo esto y es muy poco manejable es muy muy poco operativo venga vamos a ver un
Speaker A
par de funciones nulas más porque creo que también están bastante bien Vamos a a ir por aquí y después lo metemos dentro del fichero de funciones nulas vamos a hacer un Select vale de todos los usuarios igual que antes pero vamos
Speaker A
a intentar hacer algo muy concreto que es que las funciones nulas sirven para controlar nulos en mi tabla tengo datos que son nulos pero imagínate que yo lo que quiero hacer es vale de paso que me traigo todos los resultados quiero
Speaker A
intentar revisar que cuando la edad sea nula que en realidad no me ponga que el resultado es nulo y ya está es decir si yo ahora lanzo esto vemos Que me trae todos los resultados y vemos Que en la
Speaker A
columna H si es nulo pone nul pero imagínate que yo por cómo quiero montar mi nueva tabla en base a resultados lo que quiero hacer Es que mira si la da es nula a mí lo que en realidad me gustaría
Speaker A
pintar en esta tabla es un cero Porque así es como quiero trabajar yo con estos datos pues yo en realidad podría intentar hacer esta selección y en el caso de que fuera nulo intentar meterle un valor por defecto le puedo decir
Speaker A
venga voy a traerme imaginemos el nombre del usuario name me voy a traer también el apellido surname y me voy a traer la edad teniendo esto pues ya tenemos todos los campos pero vemos que la das sigue siendo nula qué tendría que hacer yo si
Speaker A
en realidad le quiero dar un valor por distinto a los campos que son nulos Pues tengo por aquí una función que es If nul A donde yo le puedo pasar el campo que yo quiero revisar y donde yo le puedo
Speaker A
pasar en realidad Cuál es el dato que yo quiero mostrar en caso de que se cumpla Esto si es nulo en realidad quiero que pongas un cero qué tenemos Ahora aquí lo veis lo veis Cero en el momento siempre
Speaker A
que cambiamos los valores iniciales de la tabla vemos que ya nos aparece la columna H nos aparece la columna If nul h00 que yo solo quiero quiero seguir tratando como H le meto un alias le digo as H Hala ya vuelvo a tener el mismo
Speaker A
nombre por aquí y ya me pinta un cero donde el campo es nulo Entonces otro tipo de función que puede funcionar como estas funciones que vimos nulas que teníamos ciertas restricciones Pues aquí también venga utilizando estos nulos igual que tenemos el nul en este caso
Speaker A
también podríamos utilizar el is nul que esto no hace falta ni verlo pero bueno tenemos un If Y tenemos un is según tenga esas diferentes restricciones queréis Ver casos concretos vale aquí nos dice pues bueno en el caso de que se
Speaker A
cumpla pues utiliza la otra expresión en el caso de que se cumpla esta nulidad en tal caso pues le va a meter este campo por aquí en cambio aquí si nos vamos al isnull aquí ya cambia la cosa porque
Speaker A
aquí en realidad lo único que nos está haciendo es intentando hacer esa selección de los campos que son nulos una forma también de intentar filtrar vale No tiene mucho esto yo creo que es bastante sencillito pero bueno ya que lo
Speaker A
vimos por ahí la lista de funciones y para que veáis que en realidad tenemos muchísimas más cosas Pues por qué no porque no lo vamos a a acabar viendo Estuvimos viendo un montonazo de eh funciones con esto yo creo que lo que
Speaker A
podríamos hacer para que la cosa no quede aquí os dije que una de las páginas por las que a mí me gustaría que estudiara es esta la de w3 schools es una página que resume muy bien todo lo
Speaker A
que es sql y en sql vais a encontrar diferentes secciones como es la parte de funciones que veis por aquí Vale entonces aunque yo he enseñado algunas funciones y creo que hay algú una sección más de funciones si no me
Speaker A
equivoco fijaos en la barbaridad de funciones aquí empiezan las funciones String numeric date Advanced vale todas estas funciones son las que tenemos disponibles en My sequel aquí es donde solemos encontrar una de las características más grandes según estemos utilizando un motor de bases de
Speaker A
datos o otra porque las bases de datos también se encargan de implementar estas nuevas funcionalidades para hacerlas más potentes que el propio estándar sql así que funciones echarle un ojo las leéis por encima eh comprenderéis que en el
Speaker A
curso no podemos ver todas estas funciones veis que está el If nul por aquí el is null vemos que está un If que también lo podemos utilizar seguramente si buscamos el yo que sé el Max que vimos antes vamos a ver aquí tenemos una
Speaker A
función Max una función min pero que también tenemos funciones logarítmicas También tenemos un flor un gritex aquí tenemos la función de la media que vimos antes Cómo tenemos funciones para strings vale Cómo podemos hacerle trims espacios substrings hasta dónde queráis
Speaker A
llegar pero creo que no tendría mucho sentido que yo ahora mismo me pusiera hacer un repaso por [Música] todas hemos acabado con estas funciones que yo llamaba pues un poquito más simples estas funciones que tenemos de consulta de filtrado pero veis que todas
Speaker A
estas funciones todos estos comandos en realidad no realizan ningún un modificado en realidad nosotros no estamos cambiando la tabla estamos Quizás modificando esos datos de salida para trabajar con ellos de una forma distinta Pero en ningún caso estamos
Speaker A
trabajando con la base de datos a nivel de escritura a nivel de actualización Así que voy a crear aquí un nuevo bloque y le voy a llamar por ejemplo database Por qué Porque ahora mismo vamos a empezar a estudiar comandos que en
Speaker A
realidad sí que realizan cambios sobre las bases de datos ahora estábamos con lo fácil no era éramos capaces de romper la base de datos eso está bien Por una parte pues mira si no somos capaces de romper la base de datos Pues todo bien
Speaker A
Pero por supuesto Nosotros también Tenemos la oportunidad de realizar estas tareas de escritura estas tareas de escritura en la base de datos pueden ser tareas de inserción tareas de actualización y tareas de borrado Cuál será el primer Comando que vamos a ver
Speaker A
venga voy a crear por aquí El Comando 01 antes pusimos 00 porque los comentarios Será algo como muy tal pero vamos a ver el comando insert in qué será este Comando Este es el comando que se encarga de realizar insertos dentro de
Speaker A
la tabla Este es el comando que se está ejecutando cada vez que yo me venía por aquí y metía todos estos datos aquí abajo y le daba a apply esto se ejecutaba de una manera muy concreta utilizando un comando Cómo es la
Speaker A
ejecución de ese Comando Cómo es el insert Cómo podemos desde sql insertar datos en la tabla concreta pues para ello ahora ya no Tendremos que utilizar un Select Tendremos que utilizar insert into básicamente insertar dentro dentro de dónde dentro de la tabla usuarios
Speaker A
users Y qué es lo que quiero insertar pues vamos a empezar a nombrar Cuáles son los campos que yo quiero insertar Fíjate que quiero insertar diferentes Campos podría ser el ID el nombre surname age init Data vamos a empezar
Speaker A
por aquí user ID name Y surname estos Campos si recordáis podían ser nulos la edad el in el email podían ser todos nulos con lo cual esto Qué significa que yo puedo únicamente especificar el nombre de los campos que en los que yo
Speaker A
le voy a meter valor si yo tengo Campos que pueden ser nula bles y lo que le quiero meter es un nulo directamente es que ni los intentes insertar cuando ya tenemos la tabla y los campos a los que
Speaker A
yo les voy a establecer un valor meteremos la instrucción ves y otra vez entre paréntesis le meteré los valores los valores en el mismo orden en el que yo lo he definido Cuál es ser ID Yo quiero insertar el user ID 7 Bray ya
Speaker A
existe el siete No pasa nada vamos a hacer pruebas quiero insertar el usuario siete y en este caso va a ser un usuario que se llama María y su apellido va a ser pues López Vale Voy a insertar el
Speaker A
usuario número 7 María López vamos a intentar correr esta línea error lo veis aunque se vea Aquí muy bajo duplicate entry 7 Ah Mirad qué lista es nuestra base de datos teníamos definido user ID de una forma muy concreta que esto era
Speaker A
un identificador único no se podía repetir ninguna vez era la clave primaria de la tabla también con lo cual nuestra base de datos es muy lista y en el momento que yo intento ejecutar un usuario aquí con id7 me dice como vas a
Speaker A
insertar 1,7 si es la clave primaria es lo que de verdad indica que esta fila es diferente a cualquier otra que nosotros tenemos aquí Así que Vamos a intentarlo ahora con el id8 y me dice inser into una columna afectada parece que ha
Speaker A
funcionado correcto vamos a irnos ahora otra vez a la tabla Ey Aquí está María ya hemos insertado con sql un nuevo usuario Vale Nos lo guardamos nos lo guardamos por aquí Este es el insel inu Pero y si ahora Yo vengo por aquí le
Speaker A
digo Mira no le voy a meter el identificador y ahora voy a guardar un usuario que se llame Pues no lo sé Paco Pérez qué va a pasar con esto no le estoy metiendo el identificador el identificador es obligatorio nosotros no
Speaker A
podemos realizar un inserto en base de datos sin el identificador vengo por aquí lanzo esto y me dice Ey qué ha funcionado Uy uy uy Pero cómo ha funcionado si en realidad yo le no le he metido el identificador que era algo
Speaker A
obligatorio en nuestra base de datos a ver cómo aparece Ah mira Paco Pérez tiene identificador nueve habíamos definido el campo user ID como autoincremental Y autoincremental a partir del último valor insertado en la tabla identificador 8 con lo cual el
Speaker A
nuevo identificador es el nueve Entonces esto funciona funciona me lo guardo también Vale qué más voy venir por aquí voy Volver al caso de antes y ahora le voy a decir que hemos acabado En qué identificador el último que teníamos
Speaker A
aquí el identificador 9e pero yo ahora voy a insertar el identificador 11 me voy a saltar uno y ahora vamos a meter pues Pues mira ha aparecido ahí el merma que va a ser de nombre el y de apellido
Speaker A
merma lanzamos esto ha funcionado volvemos a lo mismo muy bien si quieres que la tabla funcione por sí sola la tabla va a ser aun incremental pero si en realidad tú tú quieres hacer insertos ya que eres administrador de la tabla de
Speaker A
base de datos si en realidad quieres ponerle algo por ahí adelante Pues venga no va a pasar nada Mira esto también funcionaría en realidad nosotros nos podríamos estar saltando un identificador ya sabemos insertar datos qué podríamos seguir haciendo más Vamos
Speaker A
a ver como este crud básico nosotros podemos insertar pero si nosotros podemos insertar Pues también vamos a ser capaces de actualizar vamos a crear un nuevo fichero por aquí y vamos a hablar de esta secuencia que se llama
Speaker A
update update sql Cómo lanzamos un update un update es muy parecido al insert into en vez de poner que queremos insertar decimos que queremos actualizar update qué queremos actualizar queremos actualizar la tabla users veis sintaxis muy parecida Pero qué queremos
Speaker A
actualizar de la tabla users pues ahora le Tendremos que indicar en concreto qué es lo que queremos actualizar y ahora aquí viene una regla de oro Los update siempre se hacen aparte con una regla de filtrado Imagínate que yo ahora vengo
Speaker A
por aquí y al update Hay que meterle la instrucción set y hay que decirle qué es lo que queremos actualizar Quiero actualizar la edad y la edad con Qué valor pues la edad le quiero poner edad 21 qué va a pasar si yo lanzo esto si yo
Speaker A
lanzo Esto va a aparecer tu jefe tu jefa y y te va te va a hacer así por qué esto inicialmente lo que podría acabar pasando Es que todos los usuarios de la base de datos van a pasar a tener 21
Speaker A
años eso es muy peligroso por eso por favor regla de oro siempre que hagáis un update siempre que hagáis una actualización siempre que hagáis un borrado siempre que modifiqué datos intentar hacerlos con el we otra cosa es que de repente hay una casuística
Speaker A
concret tisima en la que todos los usuarios de base de datos hay que actualizarlo un campo no sé qué okay pero son las menos veces por defecto siempre update con un Word Por qué Porque yo igual lo que quiero hacer en
Speaker A
este caso es que pues el merma que tiene el identificador número 11 Word el ID user es igual a 11 si yo ahora lanzo Esto me dice Uy error Por qué por qué me va a dar error venimos por aquí y me
Speaker A
dice ID user no existe es user ID ahora lanzo esto y ya funciona si Ahora vuelvo a recuperar todos los datos vemos que ahora el merma que antes no tenía edad Ahora tiene una edad de 21 años así que
Speaker A
por favor updates siempre con el we por delante Qué pasa cuando utilizamos algunos frameworks de base de datos tampoco lo habitual es tocar la base de datos directamente sobre la base de datos nosotros solemos tocar la base de
Speaker A
datos a veces a través de frameworks a través de a través de mecanismos que nos van a permitir utilizar también la base de datos sobre todo cuando estamos escribiendo en ella de una forma algo más segura igual que nosotros podemos
Speaker A
actualizar un campo Yo podría Actualizar más Campos puedo venir por aquí puedo decirle mira ahora quiero que le cambies la edad a 20 pero que le cambies otro campo pues vamos a establecer le también Pues no lo sé la fecha en la que
Speaker A
nosotros decíamos que que alguien empezaba a empezar a programar este init date que vemos por aquí pues ahora a el merma le vamos a meter también un init date Quiero actualizar su edad ahora 20 quiero hacerlo más joven y quiero
Speaker A
cambiar algún campo más pues quiero meterle el campo in date Ahora quiero que sea igual a una fecha en concreto qué tendríamos que hacerle cuando le estamos metiendo todo esto Vale hasta aquí creéis que podría estar bien Puede
Speaker A
que no esté tamban bien como nosotros creeremos porque hemos hecho algo que en cierto modo es incorrecto bueno Aquí le voy a cambiar le voy a decir que el año pues es el 2020 y ya está la edad era un
Speaker A
campo entero era un campo numérico pero veis que ha tragado igual en cierto modo las bases de datos suelen ser bastantes listas y ahora si yo le paso la edad ahora como un entero vemos que esto también funciona y que este campo ahora
Speaker A
aquí se va a actualizar a 20 y ya va a tener la fecha Qué quiere decir esto que en realidad Aunque yo le pasé una cadena de texto la base de datos fue capaz de realizar una transformación inteligente
Speaker A
de la cadena de texto a un número entero Si nosotros inspeccionamos la información de la base de datos si nos íbamos a las columnas veis que H era un int Pero en cambio yo antes le intenté meter un entero pero fue capaz de hacer
Speaker A
la transformación correcta Así que tampoco hay problema en que a veces si no metemos la pata mucho si no metemos la pata mucho pues hasta puede que la base de datos no tenga problema Este es el tipo de dato fecha y así lo tenemos
Speaker A
que escribir si escribiéramos en vez de un Date un daye Time tendría que ser de una forma concreta si si escribiéramos un Time también tendría que ser de una forma concreta como siempre fíjate aquí lo tenemos diferente formatos en My
Speaker A
sequel un date tiene este formato un day Time tiene este formato un Time stamp tiene este formato un Gear tiene este formato os fijáis Esto es algo que bueno inicialmente tenemos que saber fijaos para el drama de Ah es que a mí me
Speaker A
interesa sql server en vez de My sequel a ver a ver cuánto cambia si tengo que insertar un date en My sequel Ah mira si es igual y cómo tengo que hacer un daye Time a Mira si es igual y cómo tengo que
Speaker A
hacer un timestamp Ah mira si es igual y cómo tengo que hacer un Gear Ah vale Bueno aquí simplemente que sea un número Uf cambio una cosa veis es muy fácil estas ligeras variaciones no es algo que de verdad vaya hacer que sepamos más o
Speaker A
menos sql una vez tenemos esto seguimos seguimos porque ya hemos insertado y ya hemos actualizado y creo que es un buen momento para que lo último que veamos en esta clase sea pues bueno lo que más nos gusta hacer borrar cosas en la base de
Speaker A
datos vamos a crear aquí un delete cómo hacemos un borrado en base de datos Pues también bastante fácil imagínate comparándolo con Cómo hacíamos el update ahora Tendremos que hacer delete Tendremos que indicarle de dónde queremos Borrar aquí ya no pongo delete
Speaker A
users aquí en realidad como funciona el delete es indicándole con el from Cuál es la tabla desde la que queremos Borrar delete from users Y qué pasa lanzamos esto lanzamos el delete from users Qué pasa aquí aparece nuestro nuestro jefe
Speaker A
no no nos vuelve así a pegar de lado Qué pasa lo de siempre hacemos un borrado un borrado siempre con un una condición de filtrado en este caso le voy a decir pues mira lo siento Lo siento muchísimo
Speaker A
por el merma que ha estado aquí un ratito Pero vamos a borrar al merma de base de datos delete from users we Cuál es la condición user ID igual a 11 lo borramos listo vamos a nuestros usuarios volvemos sacar la base de datos Y
Speaker A
sintiéndolo mucho Pues el merma ya no está entre nosotros así que todos los comandos vistos principales y simples hay más comandos pero que ya veremos más adelante cuando sigamos haciendo más cosas con base de datos Y también todos
Speaker A
lo comandos que son capaces de escribir en base de datos insert update Y delete por supuesto igual que hacemos un insert no tanto pero un update y un delete estas condiciones de filtrado podrían ser combinándolas con el resto en vez de
Speaker A
poner este we podr decir mira Quiero borrar a todo el usuarios mayores de 20 años Pues venga podría ser una condición por ahí y a partir de todo eso intentaré llegar a donde nos diera la gana con toda la combinación
Speaker A
[Música] ya tenemos ciertos comandos de lectura en la tabla que habíamos creado y ciertos comandos de escritura como podíamos insertar la tabla actualizarla e incluso también ir borrando filas Pues ahora vamos a crear un nuevo bloque voy a crear aquí un nuevo bloque que se
Speaker A
llame database database okay Porque vamos a ver un bloque de comandos de sql a nivel de base de datos no a nivel de tabla vamos a ver comandos a nivel de cómo es crear una base de datos Cómo es
Speaker A
borrar una base de datos Okay cómo es incluso hacerle un backup a base de datos Eso lo veremos un poquito más adelante pero vamos a ver como los dos comandos si yo quiero crear una base de datos qué tendría que hacer si es mucho
Speaker A
muy difícil o no es difícil para nada así que voy a venirme por aquí igual que estamos haciendo con el resto de ficheros voy a crear un nuevo fichero 01 y le voy a llamar create.sql y nos vamos a venir aquí a
Speaker A
nuestro cliente de sql imaginemos que queremos crear una base de datos vemos que nosotros ya teníamos una base de datos por aquí creada que se llamaba Hello my sequel y una del sistema que esta está creada por defecto Imagínate
Speaker A
que yo quiero crear otra base de datos Porque quiero nada al final montar otro esquema quiero guardar otros tipos de datos Y ya está si yo tuviera la necesidad de empezar desde cero Cómo crearía una base de datos para ello
Speaker A
tendremos El Comando create en concreto create database es posible que en algunos sitios veáis create esquima o que se habla a veces de base de datos Y a veces de esquema la base de datos el esquema es el contenedor es lo que va
Speaker A
contener todas las tablas que después acabaremos metiendo dentro con lo que estuvimos trabajando en las clases anteriores a nivel conceptual y sobre todo en concreto en mysql que es con lo que estamos trabajando el concepto de esquema o el concepto de base de datos
Speaker A
es el mismo así que tampoco os preocupéis mucho si de verdad en algunos sitios veis Bueno voy a crear un esquema voy a crear una base de datos es muy posible que se estén refiriendo exactamente a lo mismo si Quiero crear
Speaker A
una base de datos utilizo El Comando create database y el nombre de la base de datos test habitualmente ente los nombres de las bases de datos suelen ser en minúsculas como vemos aquí si tiene varias palabras las separamos con el
Speaker A
guion bajo y una vez tengo esto pues sin más le metemos el punto y coma Y ejecuto esto qué me dice el log que tenemos aquí abajo pues parece que ha funcionado ha funcionado refrescamos Y qué tenemos Hala una base de datos que se llama test
Speaker A
veis El Comando bien tonto que tenemos que utilizar para crear la base de datos así de simple no tiene mayor misterio para crear una base de datos simplemente comando create database y el nombre de la base de datos que queremos Borrar la
Speaker A
base de datos esto este bloque lo vamos a hacer bastante rápido tenemos otro Comando que es Drop este Comando Drop si ahora Cambio el create por el Drop vengo por aquí y escribo Drop lanzo Esto me dice que también se ha ejecutado
Speaker A
correctamente si recargo la base de datos si recargo un poco todo mi servidor de bases de datos Por eso estoy aquí viendo todos y por eso aquí veis el nombre esimas vale no os preocupéis es el mismo concepto que el de base de
Speaker A
datos vemos que nuestra base de datos que se llamaba test ya no está así que si lo primero que queréis hacer es algo muy normal es crear una base de datos tan fácil como create o como Drop hay
Speaker A
más comandos a nivel de base de datos hay más comandos pero de momento vamos a ver estos dos porque yo creo que ahora lo propio es seguir con más comandos de [Música] escritura aquí vimos que un comando de
Speaker A
escritura puede ser insertar en una tabla que un comando de escritura puede ser actualizar una tabla que un comando de escritura puede ser borrar un elemento de una tabla o varios elementos de una tabla Pero y si yo quiero crear
Speaker A
una tabla en concreto vale tenemos este writing Reading y writing porque son comandos a nivel de las propias tablas pero ahora justo quiero pararme y voy a crear otro nuevo bloque a nivel general llamado tables tables porque vamos a ver
Speaker A
comandos relacionados pero con el nivel más alto de la tabla no con los elementos que ya teníamos en la tabla como veíamos Aquí estos comandos de escritura que era meterle un dato nuevo a la tabla por ejemplo quiero meterle
Speaker A
pues este nuevo usuario o actualizar la edad de este usuario en este caso o Borrar el usuario con el ID igual a 11 que veíamos antes vale vamos a ver el nivel superior qué es vale aquí ya estamos haciendo cosas con una tabla que
Speaker A
está creada Pero qué tengo que hacer si de verdad yo quiero crear una tabla Así que vamos a venirnos con el primer comando de tabla que se llama create también igual podemos hacer create Table vale igual lo podemos hacer así mejor y
Speaker A
así en este create también pongo database y así lo dejamos un poquito mejor especificado Cómo crearemos una tabla pues va a ser bastante sencillo si yo quiero crear una tabla lo primero que tendré que hacer es vale vamos a empezar
Speaker A
a crear una tabla Cómo puedo crear una tabla si yo me vengo aquí y hago Comando create Table lo siguiente que tendré que hacer es darle un nombre a la tabla veis aquí tabla users por ejemplo Imagínate que queremos crear otra tabla tabla que
Speaker A
puede ser para representar ya que aquí teníamos los usuarios Y estos eran usuarios programadores Imagínate que yo quiero crear una tabla ficticia para guardar dnis o para guardar programadores o para guardar el usuario que sea es decir vamos a crear esta
Speaker A
tabla pero igual mira lo vamos a hacer mejor para tenerlo aislado y para que no interfiera tanto en lo que ya estábamos haciendo creo que lo mejor es que vamos a crear una base de datos ahora que ya
Speaker A
vimos Cómo se crea voy a volver crear la base de datos test creo la base de datos test la tengo por aquí la base de datos test y le vamos a crear una nueva tabla voy a venirme por aquí vamos a venirnos
Speaker A
a esta base de datos vemos que está creada vemos que no tiene absolutamente nada también vimos en una de las primeras clases que por supuesto las tablas nosotros lo podemos crear todo desde la interfaz gráfica que es como
Speaker A
creamos la tabla con la que estuvimos trabajando pero simplemente porque no quería meteros muchos conceptos pero ahora ya vamos a entender desde código sql Cómo podemos empezar a crear tablas o cómo podremos empezar a trabajar con tablas veis que en una tabla pues podéis
Speaker A
empezar a consultar Pues bueno diferente información Okay que quiero crear una tabla Cómo haría para crear una tabla Pues básicamente tenemos que utilizar el comando create Table y Aquí vamos ahora por ejemplo a crear una tabla de personas persons me lo voy a inventar Eh
Speaker A
no os preocupéis qué tenéis que hacer más pues bueno ahora aquí dentro de la tabla tenéis que empezar a darle lo que será la información todos esos atributos que tiene que llevar la tabla todas esas columnas que tiene que llevar la tabla
Speaker A
vale cómo hacemos todo esto cómo teníamos la tabla anterior Pues si nos íbamos a columnas veíamos como una serie de atributos Así que vamos a empezar a razonar cómo crearíamos una tabla con diferentes atributos vamos a empezar por
Speaker A
lo más básico primero tenemos que darle nombres a los atributos por ejemplo Podría tener un identificador las personas podrían tener un nombre name eh las personas podrían tener una edad age y las personas podrían tener un email por ejemplo y aparte le voy a meter un
Speaker A
campo de control que sea créate porque le voy a meter la fecha en la que se creó este usuario por ejemplo Así que vamos a empezar ahora a entender una vez ya tenemos estos identificadores nosotros cuando estábamos estudiando los
Speaker A
tipos de datos que teníamos en una base de datos yo creo que aquí en algún sitio nos Lo ponía dat types si os ibais a la documentación nos decía buah es que tenemos char charar binary Pues igual que tenemos en un lenguaje de
Speaker A
programación que podemos crear buanos strings integers doubles Pues también podemos hacer todo esto podemos empezar a crear diferentes Campos diferentes columnas en nuestra base de datos que van a tener Pues un tipo de dato asociado Cuáles serán esos tipos de
Speaker A
datos yo os decía que al principio sobre todo esto leyendo la documentación y practicando pues se va aprendiendo cada vez más pero al principio quedaros con los más básicos un identificador un número cómo puede ser Pues podría ser un
Speaker A
in vale Y si quiero un nombre de qué tipo podría ser el nombre Pues podría ser un barchat estamos creando como si fuera una cadena de texto y la edad pues la edad también podría ser un int y el
Speaker A
email podría ser otro barchart y el created podía ser un date Estos son tipos de datos de sql de toda la vida totalmente estandarizados hay tipos de datos de tipo Stream que son dinámicos que no tendríamos que darle una longitud
Speaker A
pero como tenemos que intentar Pues que los recursos se optimicen lo que nos pide el marchar Es que le demos una longitud que especificamos entre paréntesis por Mira puedo decir que el nombre como máximo puede tener 100 y el
Speaker A
email como máximo puede tener 50 por qué Porque a mí me está dando un poco la gana crearlo de esta forma esta sería la forma en la que nosotros podríamos crear nuestra tabla simplemente con ejecutar esto nosotros podríamos tener la tabla
Speaker A
dejarme que lo guarde por aquí también para que lo entendamos Aunque aquí estemos viendo todas las bases de datos así también aprendemos a hacerlo desde cero nosotros veíamos que aquí teníamos una conexión a Root pero que nosotros podríamos hacer una conexión a cada una
Speaker A
de las bases de datos si recordáis cuando yo me venía aquí decía username Root le metíamos la contraseña y el esquema Nosotros le habíamos llamado test si yo ahora intento hacer una conexión aquí nos dirá que esto está
Speaker A
bien pero nos va a decir Ey seguramente te va a faltar algo más nosotros necesitamos darle aquí una conexión le voy a decir test vamos a intentar lanzarla y aquí tenemos el test Okay vemos que ahora ya estamos conectado a
Speaker A
la test por supuesto podríamos lanzar desde la general en el esquema de Test pero creo cre que está bien ya que no solemos hacer conexiones a diferentes esquemas desde uno solo sino que hacemos conexiones a la propia base de datos
Speaker A
creo que esto va a estar un poquito mejor que nosotros directamente Hagamos una conexión directamente a test y ahora aquí ya vemos la tabla personas ya tenemos la tabla personas podríamos revisar la tabla personas bueno sin más aquí la tenemos una tabla que no tiene
Speaker A
nada que tiene estas columnas pero ahora vamos a ir viendo las diferentes modificaciones que podemos hacer sobre una tabla entendiendo lo que será el siguiente concepto a la hora de hablar sobre Qué puede tener una tabla aquí hemos creado una tabla pero que poquito
Speaker A
a poco iremos entendiendo también que una tabla sí tampoco tiene mucho sentido porque las tablas o en la gran mayoría de los casos las tablas lo que tienen es lo que se llama constraints es lo que se llama esas restricciones vale una
Speaker A
configuración de la tabla que de verdad la va a hacer especial aquí solo tenemos un lugar con una dos 3 cu cinco columnas y ya está pero que van a estar siempre en en blanco que no tiene tienen
Speaker A
absolutamente ningún control así que me voy a crear una tabla que se llama persons 2 para así dejarla que ya está así creada pero ahora vamos ir entendiendo qué es esto de las constraints qué es esto de las
Speaker A
restricciones vamos a ver la primera restricción la primera restricción que Quiero aprender aquí es lo que llamamos la restricción not nul la restricción not nul es lo que nosotros le podemos indicar a una tabla cuando le estamos creando un poco Cómo es la sintaxis
Speaker A
tenemos que darle n nombre tipo de dato y aquí iría la restricción a continuación del nombre y del tipo de dato vamos a ir haciendo un repaso por las restricciones más habituales la primera restricción que quiero ver es la
Speaker A
que llamamos not nul esto ya lo habéis visto cuando creamos la tabla de forma automática pero ahora vamos a ir entendiendo paso a paso todo esto Qué significa la restricción not nul significa que yo no voy a poder insertar
Speaker A
un dato en esta base de datos con el identificador igual a nulo la inserción va a fallar si yo quiero insertar por ejemplo una persona aquí vale con el identificador distinto de nul El No nul no va a dejar que podamos meterle ningún
Speaker A
dato a esta tabla si no se lo especificamos antes aquí qué podríamos hacer Mira pues yo lo que quiero es que ni de broma me permita meter un usuario sin identificador y sin nombre pues le meto esta restricción esta constraint
Speaker A
not nul Okay qué más cosas podríamos decirle podemos indicar que de alguna forma también uno de los campos sea único Así vamos a crear la restricción not null y yo podría venir por aquí y decirle venga lánzate pues mi tabla se
Speaker A
va a crear aquí en las tablas ya tendremos una nueva tabla que ahora es persons que si ahora si le dais a este botoncito para revisarla veréis esto que tiene este check esto que tenemos arriba en el formato gráfico este cliente
Speaker A
gráfico son las propias restricciones que nosotros podríamos cambiar rápidamente que nosotros podríamos toquetear pero que ahora lo que estoy estoy intentando hacer es que lo veamos desde código porque es la manera en la que de verdad Se comprende bien pero
Speaker A
vemos que hemos indicado que ID name sea no nul y sea checado esto vamos a ver otros tipos de restricciones voy a crearme otra nueva tabla no le hagáis mucho caso a este esquema de base de datos Porque lo vamos a tener
Speaker A
precisamente como su nombre indica para los tests para las pruebas voy a crear esta tabla persons 3 pero ahora vamos a hablar de la restricción Unique de qué valdría tener por ejemplo un identificador en nuestra tabla de personas si este identificador no es un
Speaker A
ú esto significaría que habitualmente las tablas a no ser que sean tablas de relación que ya entenderemos lo que es ese concepto lo que tenemos es algún campo que sirve para identificar de forma única al registro que estamos
Speaker A
guardando ese campo suele ser un identificador si yo le digo que voy a ir guardando aquí el usuario con identificador uno el dos el TR el cuatro no deberían poder existir por ejemplo dos usuarios con identificador 3 porque
Speaker A
eso haría directamente inmanejable nuestra base de datos Cuando tenemos Campos que no no somos capaces de identificar que son únicos Imagínate que hay una persona que se llama bry que tiene 36 años que su que su email es
Speaker A
mouredev @m.com y que se han creado el mismo día qué pasaría con esto qué pasaría con esto Pues que tenemos dos personas exactamente iguales la única manera que tenemos de identificarlas que por lo menos el identificador sea distinto y Aquí vamos a hacer una cosa
Speaker A
voy a crear daye Time en vez de date para que se guarde no solo con la fecha sino que se guarde con la fecha y con la hora y los minutos y los segundos Okay Por eso lo voy a crear con daytime voy a
Speaker A
hacerle este pequeñito cambio vale Así también vemos un poco Cómo funciona esto Cómo podría identificar yo un campo con una restricción que le sirviese para indicar que es única que tampoco deje insertar ya no solo que no sea nulo sino
Speaker A
que en el momento que ya exista un usuario con el mismo identificador no lo deje insertar para ello tenemos una restricción que es Unique Unique y aquí tendríamos que decirle Cuál es el campo único en este caso la ID si yo ahora
Speaker A
lanzo esto lo que nos vamos a acabar encontrando es que ahora tendremos os una nueva tabla persons 3 y esta nueva tabla ahora vemos que tiene marcado la restricción Unique otra forma bastante correcta de crear una tabla diciéndole
Speaker A
que por lo menos uno de sus campos es único vamos a seguir viendo nuevas restricciones esta también lo hicimos en la tabla que tenemos anteriormente igual que decir que un campo es único también puede ser una buena práctica crear lo
Speaker A
que es una clave primaria en el momento que veamos como una base de datos tiene más de una tabla hablaremos del concepto de relaciones entre tablas por supuesto tener tablas que no tienen ninguna relación no suele ser lo habitual si en
Speaker A
realidad tenemos tablas que no tienen ninguna relación es muy posible que sea mejor que trabajemos con bases de datos No relacionales no sql por un lado Unique lo que nos va a indicar porque igual acabáis viendo similitudes a con
Speaker A
primary key Unique en realidad lo que está diciendo es que el campo no se puede repetir si yo dije dij era que el email es Unique no podría haber dos usuarios con el mismo email pero ahora es cuando va a entrar el concepto
Speaker A
también de primary key Yo podría venirme por aquí pero ahora aparte de Unique lo que yo le podría decir es venga no quiero que seas Unique porque te voy a decir algo que es muy parecido que es el
Speaker A
concepto de primary primary key y también le diría sobre qué campo Qué es el concepto de clave primaria está indicando que la clave primaria es el ID y eso está dejando Claro que es el identificador principal de la tabla
Speaker A
Antes nos estábamos segurando que fuera único pero ahora lo que le estamos diciendo con este primary key es que en realidad va a servir para Designar a cada uno de los campos de forma única Sí pero que también lo que va a hacer Es
Speaker A
que este campo el campo ID se va a convertir en la clave primaria de la tabla para qué nos valdrá esto para que en el momento que esta tabla querramos establecer relaciones con estas con otras tablas este va a ser el campo
Speaker A
principal que va a servir para Designar cada uno de los registros ya veremos qué es eso yo podría venirme por aquí y decirle venga Unique el ID Imagínate que vengo por aquí y voy a intentar lanzar todo esto lanzamos todo esto ha
Speaker A
funcionado debería tener ahora una tabla cuatro vamos a la tabla 4atro y aquí lo veis PK primary key y también vemos que es único entonces aparte de Designar de forma única a este elemento también se ha convertido en que el ID el ID es la
Speaker A
clave principal de esta tabla a medida que vayamos haciendo cosas con el ID con esta clave primaria iréis entendiendo también un poco mejor de qué se trata todo esto okay Vale tenemos Esto vale ya hemos visto la manera en la que tenemos
Speaker A
de crear una tabla pero ahora igual que tenemos el concepto de clave primaria y de restricciones de la clave primaria os decía que no tiene ningún sentido que nosotros trabajemos con una base de datos si en realidad no hay más tablas y
Speaker A
si las tablas en realidad entre ellas no son capaces de hacer nada antes de seguir hablando de estas restricciones vamos a ver algunas de las comunes porque creo que antes de empezar a relacionar tablas aún podemos hablar de
Speaker A
alguna restricción más que nos va a permitir crear mejores tablas nosotros lo que tenemos que pensar es que cuando tengamos unos datos que queremos modelar en la base de datos la base de datos no es un folio donde nosotros empezamos a
Speaker A
escribirle datos Y ya está en realidad es un mecanismo muy complejo que nos va a ayudar a que nuestros datos aparte de guardarse se conserven y se relacionen de una forma íntegra y segura Así que cuando creáis una tabla fijaos puedo
Speaker A
crear algo que no sea nulo puedo limitar y puedo optimizar la tabla puedo ayudarle a que los datos Tengan algo concreto Vale pues venga eso Por ese motivo Precisamente es por lo que vamos creando todas estas restricciones vamos
Speaker A
a ver una eh restricción más una restricción podría ser el la restricción check la restricción check es que en el momento que creamos la tabla le podemos indicar un criterio a la hora también de guardar vimos que teníamos criterio nul
Speaker A
pero imagínate que yo solo quiero guardar usuarios mayores de 18 años mayores o iguales de 18 años Pues yo podría venir por aquí utilizar la restricción check e indicarle que la restricción es que el campo H tiene que
Speaker A
ser mayor o igual que 18 y esto me serviría para ahora guardar una restricción también en este campo y que si alguien intenta meter un usuario de menos de No lo sé 18 años que tampoco lo deje insertar vamos a hacer esto lo
Speaker A
lanzamos se ejecuta también correctamente refrescamos tenemos la tabla cinco pero aquí tenemos el Script con el que se ha creado nuestra tabla y vemos que en realidad Cuando se ha creado nuestra tabla se ha creado una restricción Aquí vemos person 5 check
Speaker A
una constraint esto es como la es como la instrucción compleja que nosotros Únicamente con escribir check se ejecuta pero aquí vemos en realidad el Script que se ejecutado como tal igual que vemos aquí unos default que también vendremos lo que es pero aquí podemos
Speaker A
comprobar que Okay pues hay una restricción también igual que el encoding que vemos por aquí que se le ha asociado a esta tabla Así que también tener siempre en cuenta que aparte de todo lo que vemos por aquí podemos
Speaker A
empezar a revisar si de verdad tenemos restricciones Si de verdad la tabla está haciendo algo diferente a lo que nosotros pensemos echarle siempre un ojo a también la creación de la tabla a nivel complejo aquí es donde tenéis las
Speaker A
opciones tenéis por aquí la información por aquí la configuración y aquí simplemente para empezar Ya a lanzar consultas sobre la tabla así que por favor quedaros siempre que las tablas pueden tener muchas restricciones y que esas restricciones van a acabar
Speaker A
consiguiendo que nuestro esquema de base de datos sea mucho mejor y vamos a ver la siguiente restricción teníamos por aquí la restricción check Espe que me la guarde y vamos a pasar a la siguiente restricción restricción que ya habéis
Speaker A
visto ahí un pequeño spoiler que decía restricción default ostras qué será eso de default vemos que aquí teníamos diferentes Campos Pues imagínate que yo por defecto quiero que si el usuario no tiene email le voy a meter un email doi
Speaker A
no quiero que esté en nulo no quiero que esté en blanco quiero que si no le meto un email el default sea algo concreto Qué es algo concreto podría ser un poco lo que a nosotros nos diese la gana
Speaker A
podríamos decirle Venga pues podría ser default y le metíamos un texto o aún mejor recordáis que teníamos create daytime Eso quiere decir que cuando yo voy a intentar crear un nuevo usuario una nueva persona cuando la voy a
Speaker A
intentar insertar en el daytime este que vemos por aquí creo que lo bueno sería que por defecto default intentara recoger la fecha de sistema tenemos una función del sistema que es get date o que creo que se llamaba get date no me
Speaker A
acuerdo bien cómo se llamaba o era date para algo está la documentación pensaba que era get date current timestamp Esta sí que creo que es la buena porque veis que yo le había cambiado el texto había puesto date el tipo de dato era date
Speaker A
pero se lo cambié date Time porque lo que quiero guardar es también eh la hora así que con current Time stamp también podría funcionar Creo si ponemos esto vemos que no funciona es decir quedémonos con lo que tiene la
Speaker A
documentación en la documentación en funciones veíamos que había aquí un Time c Time c Time y vemos cómo se puede ir utilizando pero también tenemos que ver los formatos que nos devuelve fijaos devuelve esto pero el Time stamp es lo
Speaker A
que nos retorna al final día y hora igual que el Time solo tiene hora minuto y segundo tampoco nos valdría Así que quedaros un poquito también con todo lo que tenemos que ir ejecutando de esta manera qué significaría que cada vez que
Speaker A
yo le meta un dato va a intentar pillar la fecha y la hora del sistema con lo cual yo ahora lanzo esto y dentro de tablas ahora tendríamos una nueva tabla que ya nos está diciendo que por defecto
Speaker A
default vemos current timestamp Ya nos lo está dejando aquí reflejado Así que un default más vemos alguna constrain más que podríamos meter aquí una bastante importante que esto también lo llegamos a ver cuando creá la primera vez que muy bien Yo he dicho que el ID
Speaker A
no puede ser nulo que el ID va a ser único que el ID va a ser la clave primaria pero per Cómo más seguro yo esto pues por ejemplo utilizando una restricción que es el auto incremente así le puedo indicar que cada vez que se
Speaker A
inserte un nuevo dato utilice el último identificador que exista en la base de datos imagínate el cinco que es el último que se ha metido y lo va a auto incrementar con lo cual si no le indicamos uno en concreto va a meter por
Speaker A
defecto el seis cosa que eso también nos vendría muy bien así que de esta manera vemos prácticamente yo creo que de manera bastante amplia hay más cosas que podríamos ver pero creo que hemos visto cómo crear una tabla de definiendo los
Speaker A
tipos de datos y diferentes restricciones que le podemos aplicar a cada uno voy a crear Ahora aquí una tabla pues muy simple una tabla muy simple que solo va a tener un nombre le voy a llamar persons 8 voy a lanzar esta
Speaker A
tabla se va a crear la veremos por aquí pero esta tabla únicamente la voy a dejar así para que podamos ver que igual que podemos crear una tabla podemos borrar una tabla Así que vamos a ver aquí la siguiente instrucción que es
Speaker A
Drop Table Cómo haremos Si queremos Borrar una base de datos teníamos aquí el create vamos a Drop Table Y qué Tendremos que hacer la tabla que queremos Borrar persons 8 si ahora lanzo esto veis que acaba de desaparecer la
Speaker A
tabla sin más ha funcionado Y esta es la forma que tenemos para borrar una tabla vimos Cómo borrar diferentes Campos por separado pero no habíamos visto Cómo podemos en este caso sí que borrar la tabla completa con todo lo que tengamos
Speaker A
dentro igual que tenemos la operación de crear igual que tenemos la operación de borrar qué creéis que tendremos tendremos también la posibilidad de actualizar la tabla pero actualizar la tabla a nivel de estructura Imagínate la tabla que veo aquí la de person 7 que he
Speaker A
creado de repente me doy cuenta y digo Hala he creado el H que puede ser nulo yo ahora quiero que sea nulo cómo hacemos Pues para eso podríamos empezar también a lanzar distintas instrucciones que aunque yo me haya equivocado creando
Speaker A
la tabla o que la tabla a futuro la quiero modificar por lo que sea porque tenemos unas nuevas necesidades en nuestro proyecto que nos piden que hay que añadirle un nuevo campo a la tabla pues no íbamos poder hacer eso Por
Speaker A
supuesto que vamos poder hacer eso vale Y aquí es donde va a aparecer igual que tenemos el create Table y el Drop Table tenemos una nueva instrucción que es el alter Table esta será la instrucción que tendremos que utilizar si lo que
Speaker A
queremos es alterar modificar la tabla en concreto vamos a irnos y vamos a quedarnos con una tabla cualquier vamos a hacer modificaciones sobre una nueva tabla que yo me voy a crear igual que teníamos la tabla s voy a crear
Speaker A
Exactamente igual una tabla 8o otra vez de nuevo la lanzo Tenemos aquí la tabla 8o la tabla 8o tiene todos estos Campos pero ahora me doy cuenta que ay Es que yo solo estaba guardando el nombre del usuario pero es que ahora también quiero
Speaker A
guardar los apellidos Ah Se me olvidó cómo hacemos Vale pues yo podría venir por aquí y digo alter Table qué tabla quiero modificar persons 8 y De qué manera la quiero modificar Pues aquí tendremos diferentes formas de modificarla podemos modificarla
Speaker A
añadiendo cosas podemos modificarla eliminando cosas podemos modificarla renombrando cosas y hasta podríamos cambiarle el tipo de dato que yo lo he guardado como barchart de 50 y ahora quiero que sea un barchart de lo que sea vamos a ir viéndolos poco a poco
Speaker A
haciéndole modificaciones sobre esta tabla quiero alterarla y lo primero que quiero hacer es añadirle un nuevo campo que sea el apellido surname Y qué tipo de datos será el apellido pues es un marchar como dijimos antes y cuál era la
Speaker A
longitud que teníamos inicialmente pues la longitud que habíamos visto inicialmente creo que para la tabla le habíamos dado una longitud de 50 pero bueno igual los apellidos son muy largos Pues venga vamos a decirle que sea hasta de 150 Aquí tengo la primera forma de
Speaker A
alterar lo lanzo aquí actualizamos nuestras tablas y ahora lo que podremos acabar viendo es que ahora aquí en las columnas vemos que aparte del nombre También tenemos el apellido hemos al terado la tabla hemos actualizado la tabla añadiéndole un nuevo campo Así que
Speaker A
vamos aquí al alter y vamos a meterle este nuevo campo que queremos Modificar el campo que queremos renombrar el campo cómo lo podríamos hacer Pues en vez de con ad con rename si yo me vengo a rename y le hago aquí No no surname
Speaker A
ahora lo quiero actualizar cómo podremos hacerlo pues primero tengo que hacer rename qué Quiero renombrar la columna column y cuál es el nombre de la columna que quiero renombrar surname y A qué quiero renombrar tú y el nuevo nombre de
Speaker A
repente me doy cuenta que yo estaba guardando aquí apellidos pero digo no no no vamos a reservar este campo y le voy a llamar descripción en realidad no quiero guardar el apellido en realidad quiero guardar la descripción hago esto
Speaker A
lo ejecuto me voy otra vez a mi tabla y ahora lo que veremos es que lo que tenemos el campo surname ya no aparece Y tenemos un campo que ahora se llama descripción con lo cual Añadir nuevo campo pero también llegado el caso
Speaker A
renombrar el campo lo hemos tenido que hacer y ya está pero Y si ahora me doy cuenta que Quiero actualizar el campo ahora es una descripción igual en una descripción quiero que el campo sea más largo que no sea de 150 Pues ahora
Speaker A
tendría que hacerle modify de la columna colum Cuál es la columna description y a qué lo quiero cambiar Pues a un barchart en este caso de 250 quiero ampliarlo de alguna forma vengo aquí lanzamos y a ver ahora nos vamos a la tabla revisamos la
Speaker A
tabla y ahora description ya no tiene 150 ya tiene 250 operación de creación ación de renombrado de campo y ahora actualización del tipo de campo que tenemos aquí y por supuesto podremos borrarlo digo buf me estoy liando que
Speaker A
llevo aquí un buen rato cambiando este campo en realidad es que no lo necesito para nada hago un Drop de la columna column description y si lanzo esto funciona actualizo voy a la tabla reviso tabla y ahora el campo descripción ya no
Speaker A
está en ningún lado operación de creación de tabla con diferentes restricciones con diferentes constraints vale con el Drop para la eliminación y también con la parte de actualización hasta aquí una gran parte de lo que tenemos que saber de tablas os lo digo
Speaker A
Siempre el conocimiento de sql es mucho más grande pero con todo lo que estamos viendo este curso para el 95 por de lo que tiene que hacer un programador con bases de datos a no ser que de verdad se
Speaker A
especialice en bases de datos que sea una persona que ya sea un sis admin que ya trabaje en backend in que esté todo el día trabajando con bases de datos pero a nivel de conocimientos generales de bases de datos todo lo que vamos a
Speaker A
ver en este curso es con lo que habitual actualmente se tiene que enfrentar a nivel de fundamentos cualquier programador a no ser que ya digo si después ya tiene que hacer cosas más serias con bases de datos Porque de
Speaker A
verdad se está especializando en esa parte pues por supuesto tendrá que saber más cosas pero los fundamentos son todos estos los que estamos [Música] viendo ya tenemos toda esta parte de creación eliminado y actualización vamos a pasar a otro bloque vamos a pasar a
Speaker A
otro bloque donde voy a tener que pintar básicamente vamos a tener que dibujar porque lo que quiero empezar a hablar es de las relaciones en bases de datos vale Por eso creo que lo mejor es que haga esto Qué son las relaciones en bases de
Speaker A
datos no tiene absolutamente ningún sentido que nosotros estemos hablando de bases de datos relacionales con ese nombre porque para eso también existen las bases de datos No relacionales si nosotros no empezamos a ver relaciones hasta este momento lo único que vimos es
Speaker A
como una base de datos pues tiene una tabla y hacemos cosas con las tablas pero meterle datos modificarlos Pero y si tenemos más tablas tiene sentido que sean independientes puede que en algunos casos sí pero lo habitual es que si
Speaker A
estamos utilizando un motor de base de datos relacionales es que acabemos creando relaciones en bases de datos Vale qué es esto de las relaciones en bases de datos que nadie se preocupe porque solo existen a grandes rasgos cuatro tipos de relaciones en bases de
Speaker A
datos y por eso voy a venir a pintar por aquí como sé que os gusta perdonarme por favor por los dibujos e vamos a intentar hacerlo más o menos bien y vamos a imaginar que aquí tenemos una tabla Esta
Speaker A
es una tabla y Aquí vamos a tener otra tabla de momento esto pueden ser tablas independientes en esta primera tabla Pues no lo sé imaginaos que en esta tabla lo que guardamos Imagínate que tengo usuarios users Vale y en esta
Speaker A
tabla tengo sus dni después esto lo podemos hacer como un ejemplo en base de datos para que también se entienda una vez tenemos esto Imagínate que aquí tenemos diferentes usuarios diferentes personas de la comunidad diferentes nombres tengo el usuario número uno el
Speaker A
usuario número dos el usuario número tres el usuario número cuatro el usuario número uno pues es brce el usuario número dos es María el usuario número tres es Carlos y el usuario número cuatro pues es Miriam también que vemos
Speaker A
aquí con la m pero aquí es donde están sus dnis por lo que sea yo he decidido guardar los dnis en otra tabla porque igual aquí ya tengo muchos datos si los dnis quiero moderarlos por separado porque por defecto yo nunca voy tener
Speaker A
que trabajar con los dnis entonces me los guardo en otra tabla y después guardo relaciones entre ellos porque puede que el dni sea opcional porque lo necesito para algo especial para lo que sea no importa en realidad por eso vamos
Speaker A
a empezar a ver los tipos de relaciones Cómo pueden estar interconectadas dos tablas el primer tipo de relación que tenemos es lo que llamamos relación uno a uno así se suele representar Qué significa una relación uno a uno la
Speaker A
relación uno a uno significa que si esta fuera la tabla a y esta la tabla B lo que significa es que cada elemento elemento de la tabla a solo puede estar relacionado con un elemento de la tabla b y cada elemento de la tabla B solo
Speaker A
puede estar relacionado con un elemento de la tabla a Qué significa esto que en realidad si yo he guardado dejarme que venga aquí más identificadores identificador 1 2 3 4 5 vamos a pensar que por ejemplo en esta tabla que vemos
Speaker A
aquí los dni no han tenido que entrar en el mismo orden que los usuarios yo he podido Escribir en esta tabla primero a brce después a Marta pero igual después en esta tabla primero escribí el dni de Carlos después el de Miriam y el de
Speaker A
bryce está en el tres entonces la relación si yo estableciera una relación podría decirle Mira bryce el usuario número uno bryce tiene una relación 11 con el identificador 3 de la tabla dni que es donde va a estar guardado su ID
Speaker A
su ID su dni básicamente Qué significa esto que así nosotros tenemos esta relación pero esta relación en realidad es en sentidos es bry solo puede tener un dni y un dni solo puede estar asociado a bry relación uno a uno Cómo
Speaker A
representamos esta relación Cómo podemos acabar modelando nuestra base de datos para saber que el usuario co identificador un también tiene relacionado un dni Pues aquí tendríamos un campo que podría ser el user ID user ID imagínate y yo en este campo en donde
Speaker A
está el dni de bryce tendría que decirle mira este dni es del usuario uno para yo saber que en esta tabla este dni que aunque tenga identificador tres porque son correlativos y ya está yo lo que tengo aquí es el dni asociado al usuario
Speaker A
uno Este identificador y este identificador es el mismo y es la manera en la que yo puedo establecer esta relación Esto es lo que entendemos por la relación un un Okay es una relación bastante simple es quizás la más fácil
Speaker A
de entender y ahora aquí es donde entra igual que antes hablamos de el concepto de clave primaria Ahora aquí es donde tiene importancia porque si nosotros tenemos una clave primaria es la clave por la que se van a establecer
Speaker A
relaciones con otras tablas esto que va a desencadenar que es este user ID que se tiene que corresponder con algún identificador de la tabla users no esto no será una clave primaria en esta tabla será una clave primaria pero en esta
Speaker A
tabla Cuál es su su clave primaria pues es posible que esto es identificadores Esto será la clave primaria de la tabla dni pero este uno que es el uid que p aquí que en realidad sería el user ID es
Speaker A
lo que nosotros entenderemos y lo que nosotros conoceremos como clave foránea es una clave que no pertenece a esta tabla pero que pertenece a otra tabla la clave forania user ID es la clave primaria de la tabla users Okay esto es
Speaker A
como establecemos una relación pues en cierto modo uno a uno vamos a ver más relaciones ya tenemos la 1 a un otro tipo de relación podría ser la que nosotros entendemos como uno a varios la relación que nos nosotros solemos
Speaker A
representar así uno a n volvemos tener lo mismo una tabla y una tabla si ya entendimos el uno a uno creo que es muy posible que el un a n lo entendamos también bastante fácil volvemos tener aquí qué podría ser este tipo de
Speaker A
relación uno a varios Imagínate que aquí tengo una empresa Company y aquí tengo empleados employments por ejemplo la relación 1 a n significa que una compañía la compañía que sea me da igual decir la compañía eh imaginemos que
Speaker A
mouredev es una compañía vale una empresa mouredev Corporation corp tenemos esta compañía qué querría decir que existe una relación 1 an lo que quiere decir es que mour Deep corp puede tener muchos empleados lo veis una empresa puede tener muchos empleados si
Speaker A
aquí tuviéramos otra empresa sin más la empresa que sea Podría tener otros empleados una misma empresa otros empleados una misma empresa otros empleados así somos capaces de establecer esta relación de empresa a empleados como tenemos una única empresa
Speaker A
con varios empleados y varios empleados que pueden pertenecer únicamente a una empresa en este caso que nadie diga ah no es que un empleado puede pertenecer a varias empresas Bueno pero en nuestro caso un empleado normal solo puede
Speaker A
pertenecer a una empresa y este sería el caso que tendríamos aquí Esto es lo que nosotros entendemos como una relación 1an pero igual que tenemos esta relación 1 a vamos ahora a hablar de lo que sería una relación voy a ponerla por aquí voy
Speaker A
a quitar estos estos n a n bueno esta relación Yo creo que es ya mucho más fácil aún también de entender Si hemos entendido la relación un a un y un an n esto significa que tenemos diferentes registros imagínate en esta tabla guardo
Speaker A
a programadores y en esta tabla guardo lenguajes de programación Vale qué significará la relación n n Pues que si este es bry bry sabe python Pero también sabe Swift pero también sabe colding Pero aquí tenemos Carlos que sabe
Speaker A
javascript y que sabe pues c y aquí tenemos a Miriam que también sabe python y que también sabe Swift Qué estamos viendo aquí una especie de relación en la que una persona puede conocer muchos lenguajes de programación pero varios
Speaker A
lenguajes de programación pueden estar asociados a varias personas de esta manera es mucho más fácil empezar ahora a entender Cuáles son los diferentes tipos de relación qué pasa en estos casos que para modelar una relación de tipo Nan lo que se suele hacer es
Speaker A
utilizar una tabla intermedia una tabla intermedia donde si por ejemplo yo aquí tuviera los lenguajes con el identificador 1 2 3 4 y 5 y los programadores 1 2 3 4 5 y 6 en la tabla intermedia yo lo que haría sería guardar
Speaker A
estas relaciones como es muchos a muchos esto no serviría como los otros casos que es venga yo ahora aquí me guardo un campo donde indico A dónde estoy relacionado no sería tan fácil esa clave foránea en realidad no estaría en esta
Speaker A
tabla en realidad lo que tendríamos es una tabla intermedia capaz de establecer relaciones y cuando nosotros queremos consultar qué usuario por ejemplo el usuario uno qué lenguajes de programación conoce o si queremos consultar varios lenguajes de programación lo haríamos todo en
Speaker A
conjunto qué podríamos hacer que bry sabe el lenguaje un y bry también sabe el lenguaje tres y bry también sabe el lenguaje 5 y que el usuario 4 solo se sabe el lenguaje tres y que el usuario 5
Speaker A
se sabe el lenguaje un pero también se sabe el lenguaje cuatro y también se sabe el lenguaje 5co de esta manera empezamos a establecer una relación que sí que es de muchos a muchos y ya por último ya por último esta relación a
Speaker A
veces la encontraréis no suele ser tan habitual no suele ser tan habitual Pero existe una relación que puede ser dentro de una misma tabla nosotros podemos tener una relación dentro de la propia tabla que es lo que Nosotros llamamos la
Speaker A
relación de autorreferencia Qué significa esto Imagínate que yo en esta tabla guardo Imagínate que yo ahora en esta tabla que teníamos aquí yo tengo esta tabla y lo que guardo son personas yo tengo las personas la persona uno la
Speaker A
dos la tres la cuatro la cco la se la siete pero tenemos que la persona cuatro es la jefa de departamento Pues yo podría guardar una relación de autorreferencia diciendo que en un campo por ejemplo Aquí tengo jefa Cuál es la
Speaker A
jefa Pues mira eh Como la persona cinco es la jefa aquí sería nul porque la jefa es ella misma me da igual No me me marco como jefa O al contrario podría decir no no no la jefa soy yo el propio cinco
Speaker A
pero quién es la jefa de la persona uno pues la cinco y de la persona dos la cinco y de la persona tres la cinco aquí ya no tengo dos tablas es una relación dentro de la misma tabla para que yo
Speaker A
pueda consultar venga tengo una persona pero los datos de la persona son exactamente los mismos sea jefe o no pero yo sí que puedo guardar una relación de autorreferencia indicando que el jefe persona de la persona dos es
Speaker A
la cinco entonces yo podría consultar la información de la persona c y quedarme con los datos de este [Música] jefe estos son los cuatro tipos de relaciones Así pueden ser un poco rollo Así pueden ser un poco rollo pero
Speaker A
quedémonos uno a uno 1 an n n autorreferencia ya está con esto es más que suficiente para que ahora empecemos a entender Cuáles son en muchos casos el verdadero sentido vale de que en una tabla o en una base de datos tengamos
Speaker A
más de una tabla vamos a empezar a entender Cómo crear relaciones en nuestras bases de datos Cómo tenemos que empezar a indicar que existen estas claves para crear las bases de datos y Cómo podemos empezar a autorrelación las
Speaker A
bases de datos para ello sí que voy a venirme por aquí y vamos a volver a nuestro esquema principal voy volver a abrir H sql nuestra base de datos la primera que teníamos donde solo teníamos una tabla la tabla de usuarios y vamos a
Speaker A
empezar a crear más más tablas que ahora sí que van ser capaces de establecer relaciones vamos a empezar a entender las relaciones de estos usuarios tenemos los usuarios dentro del usuarios pues no veíamos gran cosa si nosotros lanzamos
Speaker A
una consulta sobre la tabla de usuarios lo que veíais aquí es que teníamos el nombre teníamos el apellido la edad la fecha de inicio programación y el email pero vamos a presuponer justo lo que hablábamos antes que yo ahora tenga una
Speaker A
nueva tabla que sea de dnis porque yo quiero empezar a guardar dni Así que vamos a crear una tabla dni voy a venirme por aquí create Table create Table la tabla se va a llamar dni vale vamos a tener un campo igual que
Speaker A
teníamos en users para que más o menos est quede bien hecho dni ID un campo auto incrementable sin más de tipo entero como teníamos antes d ID va a ser de tipo entero autoincremental auto esta Va a ser la restricción la constraint
Speaker A
auto increment y podríamos indicarle que esto fuera la clave primaria como le estábamos diciendo Este puedo meterla aquí primary key Imagínate que le indico todo esto y aparte del dni vamos a tener Pues por supuesto el propio texto no el
Speaker A
dni como tal el dni ID que veíamos aquí puede tener algo extra Qué es ese extra pues puede ser en este caso pues el dni como tal dni number que Esto va a ser sin más pues un entero un entero not nul
Speaker A
vale aquí podríamos meter una restricción de longitud de lo que sea no os preocupéis es simplemente un poco por empezar a comprobar Cómo podemos hacer esta relación vamos a venirnos por aquí a la tabla vamos vamos a cerrarla
Speaker A
dni number quería poner Y tenemos estos dos Campos pero ahora Aquí vamos a establecer lo que será un par de restricciones decíamos que primero vamos a indicarle que el dni ID sea único Unique esto ya lo vimos antes no dni ID
Speaker A
le vamos a decir que sea único pero ahora entrará la verdadera relación importante que es Cómo puedo establecer una relación entre esta tabla de dni y el usuario Cómo podría establecer yo esa relación pues de alguna forma yo en esta
Speaker A
tabla me tengo que guardar el user ID yo me tengo que guardar el identificador que va a representar al usuario yo no puedo tener un dni si de verdad no se le va a asociar a un usuario el user ID qué
Speaker A
decíamos que era la tabla users decíamos que era la clave primaria la clave primaria en el momento que queremos establecer una relación qué va a pasar a ser pues el término que os introducía antes la clave foránea esto que vemos
Speaker A
como foreign he escrito mal foreign foreign n foreign key y cuál es la clave foránea el user ID user ID aquí lo tenemos esto nos va a crear una tabla una tabla en la que vamos poder empezar a lanzar todas esas referencias pero
Speaker A
clave forania sobre qué tabla ya empieza a ser más complicado la clave forania Tendremos que indicarle así es imposible que user ID de qué tabla le tendré que indicar cuál es la tabla a la que pertenece esta clave foránea por eso yo
Speaker A
tengo que meterle la foreign Key la palabra reservada reference y aquí le indicaré cuál es esa tabla Cuál es la tabla users ya tenemos esta referencia references en plural y con esto será suficiente No tampoco será suficiente Cuál es la clave primaria de esta tabla
Speaker A
a la que yo quiero referenciar Pues también se llama user ID de esta manera si todo va bien yo lo lanzo y se ejecuta correctamente y ahora pasaré a tener una nueva tabla una nueva tabla por aquí donde ya me está diciendo que tiene una
Speaker A
foreign key y donde se va a acabar Estableciendo toda esta relación fijaos nos dice el índice tenemos Prime dni ID user ID como nos está diciendo las relaciones que se empieza a guardar tenemos esto vamos a la tabla users y
Speaker A
vamos a ver cóm este user ID era lo que nosotros acabábamos guardando como la clave primaria de alguna forma nosotros ahora ya tenemos una relación expresa sobre estas dos tablas Así que hemos creado una relación de tipo 11 vamos a
Speaker A
guardarnos esto vamos a abrirnos aquí a create por aquí tables y vamos a guardar lo que son estas relaciones tabla dentro de de tabla voy a crear 04 vale Y aquí vamos a guardar la primera relación que esta erá una relación 1 ahora imaginemos
Speaker A
que queremos establecer una relación pues uno a muchos Cómo podemos hacer esa relación uno a muchos por la relación uno a muchos primero tendrá que acabar pasando porque tenemos que crear una tabla que sea capaz de establecer esta
Speaker A
relación uno a muchos la tabla de los muchos si pensáis en lo de crear un Company por un lado una tabla Company una tabla empresa y una tabla de usuarios como Tenemos aquí la tabla de usuarios más o menos ya estaba pero
Speaker A
vamos a crear la tabla de la empresa voy a venirme por aquí y voy a hacer create Table ahora para intentar montar relaciones ya hemos hecho uno a uno vamos a crear un ejemplo de una relación 1 an como una empresa podía tener muchos
Speaker A
empleados muchos users que vamos a poner aquí pero un usuario solo puede tener una única empresa vamos a ver ahora cómo establecemos esa relación así que voy a venir por aquí voy a crear la tabla por ejemplo Company comp compies ya que va a
Speaker A
guardar diferentes empresas y vamos a ver qué tiene la tabla qué va a tener la tabla companies pues Company ID o Igual hasta para ir más rápido Mira me voy a copiar esto porque en cierto modo vamos a hacerlo algo parecido companía ID
Speaker A
puede tener el name el name en este caso un marchar de lo que sea el nombre de la compañía pues puede tener 100 y de momento me voy a cargar todo esto tenemos la compañía qué va a pasar con
Speaker A
la compañía Pues que en cierto modo podríamos dejarla así la compañía es única la compañía de os que tengo un ID que se auto incremente y ya está y No querría guardarle muchas más cosas vengo por aquí y creo esta compañía creamos la
Speaker A
tabla de compañías dijimos que en el ejemplo de un a n una compañía podía tener varios empleados pero un empleado únicamente podía tener una única compañía qué Tendremos que hacer ahora si nosotros queremos indicar que estos usuarios pueden pertenecer a una
Speaker A
compañía lo primero que tendremos que hacer es que la tabla de usuarios debería tener un nuevo campo un nuevo campo que haga referencia a su compañía Para eso vamos a hacerlo directamente con la documentación aquí en la tabla
Speaker A
vimos que podríamos Añadir un nuevo campo Fíjate cómo añado un nuevo campo si yo vengo aquí a la tabla y le digo que es la tabla users y le digo que quiero Añadir un nuevo campo que es Company ID que el Company ID va a ser un
Speaker A
marchar de 100 de esta manera ya estoy intentando crear un nuevo campo pero este campo solo va a hacer referencia a algo yo diría que no se refiere nada hago esto lanzo ahora la tabla users si la actualizo lo veis por aquí esta tabla
Speaker A
users ya va a tener el Company ID pero el Company ID Qué era el Company ID si lo dejamos así solo en realidad no es nada lo que tenemos que hacer es acabar modificando el compan id para que se
Speaker A
acabe convirtiendo en una clave foránea de la tabla principal Cómo podríamos hacer ese cambio tengo por aquí teníamos maneras de actualizar una tabla teníamos aquí alter Table no sé qué tenemos alguna forma de actualizarlo esta eran las tablas incluso aquí teníamos las
Speaker A
formas también de actualizar la base de datos si yo vengo por aquí vamos a intentar intuir algo que no os he enseñado digo modify column esto es modificar una columna podría ser modificar una columna pero en realidad vamos a modificar la columna o no Si en
Speaker A
cualquier momento tenéis dudas de cómo hacer este tipo de cosas qué os recomiendo que por supuesto tenéis que entender Cómo son los comandos pero pensar que yo ahora podría venirme por aquí y igual que tenemos todos estos Campos o igual que yo me puedo ir a la
Speaker A
tabla que veíamos aquí antes de dni decía bueno Unique y que teníamos aquí lo veis columnas triggers y aquí acabamos viendo pues cómo teníamos estas relaciones también podemos aquí teníamos el primary para esta relación de esta tabla en users pero si nos vamos a dni y
Speaker A
nos vamos a la información vemos Que aquí tiene una información distinta que sí que tiene estas ciertas relaciones para hacer referencia a las otras tablas vemos aquí pues mira estas columnas y estas referencias si nos vamos a esta
Speaker A
tabla ahora veremos que en la tabla users en los índices solo tenemos el primario pero que en realidad nosotros podríamos venirnos por cada uno de estos elementos e intentar modificarlos podríamos intentar crear en este caso una clave foránea Así que vamos a
Speaker A
intentar hacer aquí entre todos Cómo podríamos actualizar la tabla para que tenga una clave foránea vamos a ir por aquí a ver si con lo que aprendimos antes somos capaces de hacerle un cambio alterar esta tabla como tal vamos a
Speaker A
modificar la columna que esto es algo que vimos antes pero que podríamos indicarle que de verdad se acabará convirtiendo en una clave foránea no sé si alguien se le puede ir ocurriendo Cómo podemos ir alterando lo que es la
Speaker A
tabla la tabla que queremos alterar es users que vemos por aquí pero cómo la queremos alterar La queremos alterar Pues con algo muy parecido a lo que vimos antes a que aquí queremos crear esto una clave foránea si yo me viniera
Speaker A
por aquí e hiciera esto Cuál es la clave foránea la clave foránea es Company ID Company ID y cuál es la referencia a la tabla companies Company es y cuál es el campo al que yo quiero hacer una
Speaker A
referencia Company ID pero vemos que esto nos falla Por qué nos falla Porque seguramente tenemos que buscar la manera de hacer el alter Table de una manera correcta no nos sirve como estábamos intentando hacer antes que directamente nos íbamos aquí y decía venga alter
Speaker A
Table le indicábamos Cuál era la tabla en concreto perdonar lo he sacado por aquí porque me quería ir al alte a ver si lo tenemos por aquí tenemos esta Bueno aquí vemos como podemos eliminar Modificar un Data type y vemos
Speaker A
diferentes ejemplos eliminar la tabla Pero y si quisiera Modificar el tipo de dato nos valdría con decir alter Table column vamos a probarlo yo creo que la manera de ir aprendiendo a hacer las cosas es siempre que nosotros seamos
Speaker A
capaces de irnos a la documentación digo column Esto va a funcionar parece que no funciona alter column por qué no soy capaz esto una buena forma que tenéis también de hacer modificaciones iros a una tabla cualquiera a la tabla venís
Speaker A
por aquí le hacéis alter Table y va a decir venga Imagínate que yo quisiera actualizar Imagínate que ahora Aquí vemos como tenemos primary key este Company d vemos not nul Unique generate Cómo podemos empezar a modificar cosas y
Speaker A
esta también es la forma de que si vosotros os venís por aquí a las columnas a los índices y queréis empezar a hacer cambios dice Uy nosotros podemos empezar a probar diferentes de alguna forma ejecuciones Company ID create
Speaker A
Index por selected columns vengo por aquí y dice Ah mira si yo ya Podría empezar a generar índices podría indicarle cómo queremos que se mueva podemos indicarle a todo esto en el momento que yo le doy a create vemos que
Speaker A
ya nos ha aparecido aquí un índice veis comoo empieza a hacer referencia a los índices y vemos como ahora si me voy a columns tiene la opción de eliminar el índice todo esto lo podemos hacer así bastante más fácil vale Pero igual que
Speaker A
si ahora queremos hacer estas modificaciones si yo me vengo a columnas a la información o incluso a Cómo los puedo modificar en el momento que yo toquete cualquier columna vengo aquí Company ahora al Company le digo not null y yo le digo apply en el momento
Speaker A
que yo Ha algo en la apply vemos esto alter Table change column estáis viendo como en realidad es capaz de ir diciéndome la ejecución el sql que tiene que ejecutar sin que yo muchas veces me lo sepa de memoria por eso Esta es la
Speaker A
mejor manera que tenemos muchas veces para ir modificando cosas cuando si vengo por aquí y directamente como teníamos esto alter Table update column Y ahora será vimos antes funcionaba esto no funcionaba venga vamos a volverlo a ver le metía un campo cualquiera le daba
Speaker A
apply Y qué pasaba que decía add Unique Index Ah mira ahora ya nos dice Cómo podemos crear un índice Okay pero qué nos falta nos falta una parte nos falta lo más importante que es Y si yo quiero
Speaker A
actualizar una clave foránea vamos a ver si la documentación porque esto Me gustaría que os quedara la documentación Porque es importante que tení teníamos que hacer un ad sin más por eso por favor nunca os acobi porque igual tenéis
Speaker A
unos fundamentos y con eso decís justo me falta algo que no he visto veis lo que hemos tardado en encontrarlo eh No sé 10 segundos irnos a la documentación de la clave forania y ya lo tenemos todo expresado aquí entonces vengo por aquí y
Speaker A
aquí nos dice hacemos la constraint y le tenemos que dar el nombre a la constraint ya que lo estamos haciendo en el código y aquí me vengo for key fk esto lo podemos ver fácil si nos vamos a
Speaker A
la tabla de dni aquí en los índices dónde lo tengo aquí fijaos que cuando lo creamos inicialmente lo que hizo fue darle un nombre puso dni IB foring key 1 el nombre en realidad de la foring Key no es algo que nosotros tengamos que
Speaker A
utilizar como tal le podemos dar un poco el nombre que nosotros querramos pero creo que no está mal que le pongamos Franky pues companies hago esto y ahora me vuelve fallar he puesto que compan ID sea un barchart cosa que no tiene ningún
Speaker A
sentido nosotros no podemos hacer que sea un barchart nosotros tenemos que hacer que Company D este Company d tiene que ser un int Así que vamos a actualizarlo nos estaba fallando este tipo de dato cerramos ahora decimos que
Speaker A
es un entero y ahora cuando querramos ejecutar esto si todo va bien Ahora sí que funciona con esto que hemos hecho hemos creado una relación que es uno a n Cómo tenemos una compañía que ahora lo que va a poder tener es muchos usuarios
Speaker A
por supuesto tienen que ser del mismo tipo porque esto lo que está indicando es una clave foránea es que yo voy a guardar en mi tabla de usuarios ahora lo que yo voy a tener en mi tabla de
Speaker A
usuarios es que el Company ID va a estar haciendo referencia al Company ID de la tabla compañías con lo cual tienen que ser exactamente el mismo tipo de dato Company ID que vemos aquí si no no vamos a ser capaces de relacionar ambas tablas
Speaker A
ya tenemos relaciones uno a uno ya tenemos relaciones un a n lo que podríamos hacer ahora es crear una última relación n a n esa relación con esa tabla intermedia de la que hablábamos antes vamos a imaginar que
Speaker A
nuestros usuarios igual que enseñábamos antes en el ejemplo pueden aprender lenguajes por ejemplo Entonces yo podría hacer que bry sepa lenguaje python y Swift y colding para ello vamos a crear una tabla una tabla de lenguajes voy a
Speaker A
crear igual que hice antes dejarme que lo copie vamos a crear una tabla de lenguajes lenguajes lenguajes guajes y que tiene un Language ID que va a ser un entero también y el nombre del lenguaje un marchar de 100 esto lo podría de
Speaker A
Exactamente igual creo una tabla de lenguajes esto funciona perfecto pero qué decíamos que eran las relaciones n a n las relaciones Nan son el tipo de relaciones donde teníamos la tabla de usuarios donde teníamos la tabla de lenguajes pero que como teníamos que
Speaker A
relacionar los elementos de la tabla eh de muchos a muchos en ambos sentidos lo que hacíamos era crear una tabla intermedia para guardar esas relaciones y eso es justo lo que vamos a hacer ahora tenemos la tabla de usuarios
Speaker A
tenemos la tabla de lenguaje pero lo que nos falta ahora es la tabla que sea capaz de relacionar lenguajes con usuarios vemos que no hemos creado el lenguajes una referencia a los usuarios Por qué Porque si yo tengo el lenguaje
Speaker A
python y el lenguaje python lo saben 100 personas Cómo hago le meto 100 ids separados por coma eso no tiene ningún sentido a nivel de optimización lo que vamos a tener es una tabla intermedia que va a guardar Cuáles son esas
Speaker A
relaciones Así que vamos a crear esa tabla intermedia Cómo solemos nombrar las tablas intermedias que sirven para en guardar esas relaciones Nan pues le solemos dar el nombre de las dos tablas que relacionan Así que tendremos create Table users languages Y tenemos el ID en
Speaker A
vez de Language ID Tendremos users languages que va a ser la clave primaria autogenerada la clave que en cierto modo nos importa menos Okay pero cuáles serán los campos importantes que guardaremos aquí pues por un lado el user ID que era
Speaker A
de tipo entero y por otro lado qué tendremos el Language ID languaje ID las claves de las dos tablas que nosotros queremos relacionar ya tenemos Cómo intentar crear esta tabla Pero qué nos va a faltar ahora lo que te
Speaker A
necesitaremos son claves foráneas claves foráneas una no dos claves foráneas Cómo creamos una clave foránea lo teníamos aquí Esta es la clave foránea necesitaremos dos claves foráneas una por aquí y otra por aquí claves foráneas A qué pues a user ID y a Language ID y a
Speaker A
qué tablas Pues en un caso a users a su campo user ID y en otro caso a languages languages a su campo Language ID así desde esta tabla lo que hacemos Es venga yo lo que sé es que estos dos Campos
Speaker A
user ID y Language ID está guardando referencias a dos tablas que yo voy a querer relacionar con un tipo de relación muchos a muchos qué podemos hacer aún para refinar mucho más esta relación pues que aparte vamos a decir
Speaker A
que son únicos Unique Y qué van ser únicos el user ID y el Language ID Por qué hacemos esto si hay una relación donde está relacionando a bry con python no tiene ningún sentido que yo guarde dos veces que bry sabe python entonces
Speaker A
si le indicamos que esto tiene que ser único significará que esta tupla de user ID más Language ID tiene que también ser única Okay vamos a lanzar esto por aquí funciona funciona nos lo guardamos establecida relación n a n y ya solo nos
Speaker A
quedaría una relación que es la que dijimos antes que esa relación pues incluso no tiene mucho sentido tampoco que la emos porque era la relación con la que yo os decía es la relación de autorreferencia que imagínate que una
Speaker A
persona de los usuarios fuera el jefe entonces ya que es el jefe Yo podría añadirle un nuevo campo le añadimos un nuevo campo que sea el identificador del jefe y ese identificador sería la referencia sería una clave foránea a la
Speaker A
propia clave primaria simplemente estaría representando a uno de los usuarios que ya están dentro de la tabla no es una relación que se suela ha ver mucho pero que sepáis que existe y y que si lo tenéis que utilizar aparte de las
Speaker A
relaciones habituales 11 1n nn también tenéis esa relación pues bueno dentro de una misma tabla que no necesitáis dos tablas o tres tablas como es en la relación nn hablado de Estos tipos de relaciones entre tablas lo siguiente ya
Speaker A
será empezar a meter datos dentro de estas tablas y empezar a entender Por qué estos datos ahora los vamos a poder consultar de una manera especial Nosotros ahora mismo hacíamos un Select donde un donde decía venga dame los
Speaker A
datos que tienen edad 18 en la tabla users y nos venían los datos Pero y si ahora yo quiero empezar a decir Mira dame todos los usuarios que saben python o dime todos los lenguajes que sabe bry O dime el dni de bry que era otra tabla
Speaker A
que teníamos uno a uno o dime eh todos los empleados que trabajan para la empresa x pues eso es lo que veremos en la siguiente clase los llamados joins como en el momento que tenemos más de una tabla ahora podremos hacer
Speaker A
ejecuciones de Select de consulta de datos pero en más de una tabla y para poder hacer consulta de datos en más de una tabla lo habitual es que estas tablas tengan [Música] relaciones podemos ver lo siguiente y esto es lo que hicimos en la última
Speaker A
clase nos pusimos a crear diferentes tablas diferentes tablas que guardaban diferentes relaciones bueno teníamos un tipo de relación que es esa relación cíclica vale que sirve para relacionar campos de una tabla con campos de esa misma tabla que yo lo explicaba el otro
Speaker A
día como Imagínate que en una tabla guarde usuarios y que el usuario puede ser o trabajador o jefe y si yo quiero hacer referencia a un jefe pues guardo un identificador dentro de la tabla que hace referencia al ide del usuario
Speaker A
entonces dentro de la tabla tengo un usuario que está referenciando a otro usuario como podría ser su jefe bueno no se suelen utilizar tanto ese tipo de relaciones No importa yo me voy a quedar sobre todo con las principales Porque
Speaker A
estos cursos desde cero estos cursos de de fundamentos creo que lo más importante es que veamos los casos de uso más habituales si yo llego a un proyecto y tengo que ponerme a trabajar con Con sql qué es lo que voy a hacer
Speaker A
habitualmente Pues yo creo que en este curso vamos a ver el 80 o el 90 por de las cosas con las que un mortal se tiene que enfrentar a sql quién se va a enfrentar a cosas distintas administradores de bases de datos gente
Speaker A
que ya sea más experta gente que ya igual ya esté trabajando en backend y todos los días tenga que hacer temas con bases de datos bueno por supuesto Ahí todos los conocimientos tiene ti que seguir aumentándose poquito a poco pero
Speaker A
como conocimientos realistas y conocimientos habituales y fundamentales que tiene que tener un programador es todo esto lo que estamos viendo en el curso vale había creado diferentes tablas teníamos la tabla usuarios Esta es una tabla que ya estuvimos trabajando
Speaker A
con ella todo el rato vale Y después tenemos otra tabla que es usuarios lenguajes lenguajes dni compañías Cómo acabaron quedando esas relaciones pues teníamos la tabla usuarios Mira ya que tengo un Lienzo aquí en blanco voy a aprovechar y lo voy a pintar sé que os
Speaker A
encanta sé que os encanta que dibuje sé que os encanta que dibuje así que aquí os voy a hacer un pequeño dibujo a ver si me esmero y lo hacemos bien Vamos a hacerlo venga os lo voy a hacer bien
Speaker A
para no tener que dibujar mucho vamos a pintar un poco todas las tablas de nuestro sistema para que veáis las relaciones e ir explicándolas yo poquito a poco Mira la tabla usuarios voy a tener por aquí la tabla dni vamos a
Speaker A
tener por aquí la tabla lenguajes vamos a tener por aquí la tabla usuarios lenguajes y vamos a tener por aquí la tabla compañías tabla usuarios tabla usuarios lenguajes tabla lenguajes tabla dni tabla compañías vamos a ver muy rápido los tipos de relaciones las
Speaker A
relaciones de la tabla de usuarios y dni esta relación que vemos aquí era una relación uno a uno vale para que veis que ya tenemos unas tablas con una relación con la primera relación que hemos visto entre tablas después También
Speaker A
tenemos la tabla de usuarios y de compañías Qué significa esto Esta tabla que vemos aquí de usuarios de compañías aquí lo que tenemos es que existe una relación de uno por aquí a n básicamente en este sentido Okay de que una compañía
Speaker A
puede tener muchos usuarios muchos trabajadores aquí lo hemos puesto como usuarios pero que básicamente haríamos referencia a trabajadores entonces un a un y un a n y aquí tendríamos la última relación la relación en n a m un usuario
Speaker A
puede usar diferentes lenguajes de programación y diferentes lenguajes de programación pueden ser usados por diferentes usuarios Entonces en este sistema en este esquema de base de datos que nosotros hemos creado ya tenemos los tres tipos de relaciones más habituales
Speaker A
en bases de datos Antes de hablar de los join lo siguiente que vamos a hacer es vamos a empezar a Añadir datos vale estas tablas ahora mismo no tienen datos Así que quitando la tabla de usuarios que la tabla de usuario sí que tenía
Speaker A
datos Esta es con la tabla que hemos hecho la gran parte del curso ya veis aquí usuario nombre apellido edad una fecha de inicio que le pusimos Pues básicamente para representar cuándo habían empezado a programar porque esto me lo inventé el email y Company ID Esta
Speaker A
es una de las relaciones que hemos establecido Aquí vamos a relacionar los usuarios con las compañías por otro lado si empezamos a ver cada uno del usuarios que de las tablas que vemos por aquí también vemos la tabla dni Así que vamos
Speaker A
a empezar con la primera relación vamos a empezar a meter datos para una relación que hemos entendido como un un Qué pasaría si nosotros tenemos una tabla que tiene una relación 11 qué vemos aquí una tabla que los campos es
Speaker A
el ID del dni el número del dni y el usuario con el que se va a relacionar aquí veis la relación se va a guardar en esta tabla la referencia al identificador de usuario la referencia a este usuario para que nosotros en la
Speaker A
tabla dni podamos ver con qué se relaciona su dni Con qué usuario se está relacionando el dni que estamos guardando en esta tabla Así que vamos a guardar algunos dni para algunos usuarios por ejemplo para el usuario 1
Speaker A
dos y cuatro no hace falta que las tablas las poblemas completamente solo Vamos a meter algunos datos para empezar a después entender los los join vimos por supuesto Cómo insertar datos os fijáis Cómo teníamos ejemplos para insertar datos lo que fuera si queréis
Speaker A
lo podéis copiar Por eso yo os he estado dando diferentes referencias a medida que avanzamos el curso he estado realizando modificaciones en Cómo estructuramos todos los comandos ahora que sepáis que hay una carpeta con comandos de lectura que son los Select
Speaker A
básicamente otro con comandos de escritura Cómo podemos escribir datos dentro de la tabla Cómo podemos actualizarlos y Cómo podemos borrarlos también hemos visto comandos a nivel de base de datos de todo el conjunto de todo el esquema de toda esa entidad
Speaker A
superior para crear bases de datos Y para borrar bases de datos y después tenemos a nivel de tabla como también podemos crear tablas borrar tablas modificar tabl y también después acabar trabajando con las relaciones aquí veis como os he dejado una referencia a cómo
Speaker A
creá todas las tablas que establecían relaciones dentro de nuestro esquema vale decíamos que queríamos insertar datos Pues mira sin más me voy a copiar un inser tintu Por qué Porque bueno es más que suficiente para que yo ahora me
Speaker A
venga por aquí y en base a Cómo era el inser inu podamos acabar insertando datos dentro de la tabla de dni teníamos que insertar dentro de dni dni aquí lo tenemos Cuáles son los campos que tengo que insertar dentro de dni teníamos el
Speaker A
identificador del dni este si recordáis era autoincremental con lo cual yo no lo voy a pasar si es autoincremental y no nulo y al final le estamos diciendo también que sea único etcétera lo que va a acabar significando es que aunque
Speaker A
nosotros no lo insertemos el va a ir incrementándose que queremos insertar en realidad el dni number que vemos por aquí y el user ID y aquí tenemos que ir metiendo diole los campos si no recordáis de la tabla dni
Speaker A
cómo estaba creada por favor revisarla ir a la columna y decir Ah mira el número del dni era un entero que no podía ser nulo el user ID sí que podía ser nulo y en cambio el el identificador
Speaker A
de dni no podía ser nulo en este caso Yo sí que le voy a meter datos pero si queréis podemos meterle un dato Random también sin el sin el dni number voy a podría ser un identificador nosotros lo
Speaker A
hemos puesto como entero Así que nada de ponerle letras nada de poner nada raro nuestro dni es un dni inventado es un identificador que en realidad solo tiene números si quisiéramos que llevara letras pues esto ya tendría que ser un
Speaker A
String ya tendría que ser un barchat en nuestro caso simplemente me lo estoy inventando le voy a meter aquí pues dos e 5 6 7 8 números voy voy a entender que es el identificador Y a quién le voy a
Speaker A
asociar este dni pues al usuario uno por ejemplo pues hago esto entonces sin más esto ya sería la query de inserto para la tabla de dnis ahora yo selecciono esto lo lanzo esto funciona y si me voy a la tabla de dnis ahora veremos lo
Speaker A
siguiente Cómo veis que el ID del dni no lo hemos marcado pero se mete el un porque es autoincremental aquí tenemos el número del dni y el usuario Al que está asignado vale vengo por aquí quiero meterle para el usuario 2 su dni pues 1
Speaker A
2 3 4 5 6 7 8 creo que le había metido ocho 4 5 6 7 8 okay Y también lo quiero meter para el usuario 3 para el usuario 3 y para el usuario 4 voy a venir por
Speaker A
aquí y le voy a decir que únicamente lo que quiero insertar es el dni no le voy a meter el nombre del usuario no importa 2s 3 4 5 6 7 8 sabéis que hemos visto como poner condiciones le podríamos
Speaker A
haber dicho que tuviera una restricción para tener un tamaño fijo de longitud del entero o lo que fuera Bueno muchísimas cosas que al fin y al cabo podemos ir combinando para hacer queris más complejas o bases de datos más
Speaker A
robustas Pillo todo esto y lo inserto esto en principio ha funcionado nos vamos a la tabla y aquí vemos como tenemos por qué no me lo ha insertado esperar Ah porque solo he seleccionado este por aquí dejarme ver ahora si esto
Speaker A
lo he insertado bien vale aquí lo tenéis se ha insertado un campo para aquí para el usuario uno para el usuario dos para el usuario tres y las relaciones y para el usuario cuatro No le hemos puesto el
Speaker A
usuario aquí teníamos restricciones si intentáramos meter solo el usuario sin el dni nos iba a fallar Okay entonces ya ten tenemos dato en la tabla dni no importa ya veremos para qué los vamos a utilizar Cierro la tabla dni y vamos a
Speaker A
meter datos en otra tabla me voy a copiar un insert para tenerlo por aquí preparado otra tabla que debía tener datos era la tabla de compañías la tabla de compañías la tenemos aquí una tabla que únicamente tiene el ID de la
Speaker A
compañía y el nombre okay Así que si yo quisiera venir por aquí insertar algo dentro de compañía haría compan y lo único que quiero insertar ya que el Company ID también es autoincremental lo único que haría aquí sería insertar el
Speaker A
nombre name y cuál sería el valor en este caso el valor vale en este caso el valor estaría relacionado con el nombre de la empresa hay una cosa que he hecho mal dejarme que en la tabla de relaciones voy a crear aquí un apartado
Speaker A
para los insert Por qué Porque me quería guardar todos estos datos que he guardado en la base de datos para que también los tengáis como referencia dejarme que lo replique Aquí muy rápidamente estos son los datos que había insertado así me los guardo y así
Speaker A
también tenéis un poco en mente los datos que yo le he metido listo vamos con las compañías ahora en este caso vamos a guardar compañías pues una compañía es mouredev otra compañía pues es Apple otra compañía es Google vale
Speaker A
tres compañías sin más voy a pillarme estas compañías vamos a ejecutar esto y vamos a lanzar una Select y vamos a ir viendo Pues mira se ha insertado la compañía mouredev se ha insertado la compañía Apple y se ha insertado la
Speaker A
compañía Google si ahora vengo por aquí vemos que tenemos tres compañías si yo ahora vengo y me quiero hacer el listo y le digo Mira Quiero insertar pero ahora el Company ID y lo que quiero insertar es el id5 vengo por aquí lo lanzo y esto
Speaker A
Peta Por qué Porque el nombre de la compañía es obligatorio así que me voy a guardar Por aquí esto para que sepamos también todo lo que hemos guardado consultamos la tabla una vez más para que lo tengáis en mente aquí la compañía
Speaker A
ya está Qué pasa con las compañías las compañías Con qué estaban relacionadas las compañías estaban relacionadas con los usuarios veis que en la clase anterior habíamos creado un campo Company ID para acabar de alguna forma relacionando los usuarios que nosotros
Speaker A
teníamos en la tabla users en la tabla de de usuarios que vamos a entender que es como una tabla de trabajadores Pues en qué compañía trabajaban Si ahora consultamos la tabla de trabajadores de usuarios vemos que ninguno tiene
Speaker A
compañía Qué significa que no existen relaciones que hay empresas pero que las empresas en realidad no tienen ningún trabajador vamos a asignarle alguna empresa a alguno de los trabajadores que teníamos aquí a Paco a María control alguno de ellos para que veáis cómo
Speaker A
tenéis que usar el curso cuando estamos aprendiendo vale si nos vamos a tablas si nos vamos a la parte de escritura digo Ah vale cómo actualizaba yo un campo aquí lo tenemos hemos visto una lección hemos tenido una clase donde se
Speaker A
nos decía Cómo actualizar un registro concreto de una tabla de de base de datos vengo por aquí en la en la tabla usuarios Pues bueno qué Quiero actualizar users qué campo qué atributo qué columna Quiero actualizar pues la
Speaker A
columna que Quiero actualizar es Company ID aquí lo tenemos Y qué dato quiero meter dentro de Company ID pues por ejemplo le voy decir que le voy a asignar el ID de compañía uno a qué usuario al usuario moure a mí mismo Cuál
Speaker A
es el user ID el uno si yo ahora ejecuto esto esto funciona si yo ahora consulto la tabla de base de datos que vemos y lo veis que ahora bryce tiene Bueno un campo que se ha cubierto que tiene el
Speaker A
identificador uno el Company ID 1 de esta forma estamos Estableciendo una relación entre el usuario y la compañía ahora de repente bryce moure trabaja en mouredev que era la compañía número uno que quiero meter otras relaciones venga vamos a crear unas cuantas pues eh el
Speaker A
usuario número tres que era Carlos el usuario número cco que era Miriam y el usuario número 7 que era control Pues voy a poner que control por supuesto va a trabajar en mouredev va a estar Carlos que va a trabajar en Apple y va a estar
Speaker A
Miriam que va a trabajar en Google le estoy dando diferentes identificadores de compañías vengo por aquí me pongo a ejecutar todo esto venga ejecutamos esto lanzamos la tabla Y qué tenemos ahora pues tenemos que Carlos trabaja la compañía dos que me he equivocado Aquí
Speaker A
he puesto el identificador Ah el usuario cuatro bueno puse el usuario catro lo que he hecho es que savitar ahora trabaje para Google y control ahora trabaje para mur vale Ya tenemos una relación más establecida con otra tabla
Speaker A
Cómo hemos metido estos datos Y ya nos queda solo un par de tablas tenemos otra tabla por aquí que es la tabla de lenguajes la tabla de lenguajes tenía un ID de lenguaje y un nombre insertamos lenguajes venga vamos a insertarlos muy
Speaker A
rápido vengo por aquí queremos insertar dentro de la tabla lenguajes en el campo nombre y voy a meter lenguajes Swift V vamos a meter unos cuantos Swift cing javascript Java python csharp Y cobel si yo ahora selecciono todos estos
Speaker A
registros y los lanzo y consultamos la tabla aquí lo tenéis autoincremental identificador principal y aquí lo veis Cómo se están Estableciendo cada una de estas relaciones Ya solo nos faltaría una única tabla Cuál es la última tabla que tenemos que rellenar pues user
Speaker A
languages la tabla de usuarios y lenguajes la tabla inter media ya que estamos ante una relación nm que es capaz de relacionar qué usuario sabe qué lenguajes Y qué lenguajes sabe qué usuarios Por eso tenemos el ID principal
Speaker A
que es un ID autoincremental este nos da igual pero sí que tenemos dos Campos para relacionar que el usuario uno por ejemplo sabe el lenguaje 1 2s y 3 qué tendríamos que hacer aquí vamos también a meter unos insert y vamos a ver cómo
Speaker A
tendríamos que hacer en este caso en la tabla de usuarios lenguajes ya hemos dicho que estas tablas intermedias estas tablas de de relación suele tener el nombre formado por las dos tablas que relacionan como relaciona por un lado a
Speaker A
la tabla usuarios y por otro lado a la tabla lenguaje por eso se llama user languages no vamos a ver cómo haríamos el insert en esta tabla usuarios lenguajes queremos insertar el user ID user ID este es uno de los campos y el
Speaker A
otro campo es el Language ID lenguaje en singular ID y aquí tendríamos que meter los ids vamos a pensar una cosa a ver cómo seríamos capaces de escribir en una tabla intermedia en una tabla de relación nm Yo soy brce qué
Speaker A
identificador tiene brce el user ID de brce es el uno Este es una de las tablas que vamos a utilizar Aquí Cuál es la otra tabla que vamos a utilizar la tabla de lenguajes bryce sabe el lenguaje Swift el lenguaje codling y el lenguaje
Speaker A
python deir el lenguaje con identificador uno el lenguaje con identificador 2s y el lenguaje co identificador 5 Cómo tendría yo que escribir en esta tabla esa relación Pues sería bastante fácil simplemente diciendo que el user ID bryce el uno
Speaker A
sabe Swift Okay es decir que sabría el valor por un lado del user ID y por otro lado del Language ID pero bryce también sabe colding es decir el usuario uno también sabe el lenguaje 2 pero bryce también sabe python cuál era python el
Speaker A
identificador número cinco es que claro al ser de muchos a muchos Por eso yo tengo que estar creando un registro por cada una de esas relaciones pensar cómo tendríamos que modelar esto si tuviéramos Solo dos tablas Claro no
Speaker A
sería factible o si lo hiciéramos sería una chapuza y No tendríamos relaciones ni limitaciones en la tabla para que esa tabla fuera m segura o fuera robusta yo ahora ejecuto esto y en la tabla de lenguajes ahora vamos a tener tres
Speaker A
registros identificando que Bray sabe el lenguaje 1 2 y cco pero yo ahora también me puedo encontrar que hay otro usuario el usuario dos ejemplo el usuario 2 que era Carlos Carlos voy a decirle que sabe javascrip pero que también sabe python
Speaker A
cómo escribiríamos esto el usuario número dos sabe javascript y python javascript tiene el identificador 3 hasta ahora aquí aún no tendríamos nadie que sabe el mismo lenguaje dos veces no pero en este caso Carlos voy a decir que
Speaker A
también sabe python Ahora Tendremos que Carlos sabe javascript que bry no lo sabe Pero que Carlos sabe python que bry sí que lo sabe aquí tenemos la relación nm en el otro sentido como python un único lenguaje es sabido por varios
Speaker A
desarrolladores por varios usuarios igual que varios usuarios Pueden saber el mismo lenguaje aquí tenemos la relación nm qué creamos con una relación nm pues estamos creando Campos que en ningún caso estos dos identificadores que sirven para relacionar las dos
Speaker A
tablas de la relación Nunca van a poder ser el mismo nunca vamos a poder volver a encontrar o No deberíamos poder volver a encontrar una misma relación dejadme que copie esto que vamos a hacer un par de pruebas para entender Cuáles son
Speaker A
también las restricciones que nosotros establecimos en la clase anterior en la tabla vengo por aquí voy volver a intentar insertar la relación 11 la relación de que Bris sabe swit que creo que era el primer lenguaje podemos pensar a priori que esto debería
Speaker A
funcionar pero ya vemos que salta aquí un error Por qué Porque nosotros cuando hemos creado esa tabla dejarme buscarla le hemos indicado esto user ID y Language esta tupla este conjunto de dos datos tiene que ser único por qué porque
Speaker A
no tiene ningún sentido que yo vuelva a repetir en la tabla que bryce sabe Swift ya lo he puest una vez para qué me valdría tener dos registros Exactamente igual por eso nos ha fallado el inserto pero yo ahora también podría pensar y
Speaker A
digo mira solo voy a meter el ID de usuario voy a meterle aquí el uno solo Vamos a lanzar sobre esto esto funciona qué ha pasado Vámonos a la tabla y vamos a ver qué tenemos aquí lo veis he creado
Speaker A
una relación que no se ha finalizado es decir tenemos un dato que en realidad no tiene mucho sentido qué hemos hecho mal seguramente cuando creamos la tabla que cuando nosotros creamos este ID y este Language ID nosotros no le hemos
Speaker A
indicado que no sea nulo vale No le hemos dicho que este campo debería no ser nulo para que de verdad no pasen estas cosas yo le estoy diciendo que Okay las claves son correctas que tienen que ser únicas estas relaciones pero no
Speaker A
le he indicado que no sea nulo si queréis lo podemos actualizar muy rápido desde aquí me vengo a la tabla o me voy a la información de la tabla y aquí Oy no en lenguajes Perdón en user languages
Speaker A
aquí veis esto sí sí puesto que no sea nulo el ID principal pero no puesto que no sea nulo por un lado el usuario y que no sea nulo el lenguaje para así no permitirme insertar datos que en
Speaker A
realidad sean inconsistentes voy a hacer esta modificación le voy dar aplicar y veis lo que tenemos Ahora aquí column not nul not nul Así es como deberíamos haber creado inicialmente la tabla bueno Esto lo metemos dentro del curso porque
Speaker A
yo que también os quería Enseñar cómo incluso creando una tabla que parece que está bien creada de relación y Okay qué bonito en realidad eh podríamos haber metido datos de forma incorrecta Así que voy a actualizar la tabla y me dice Uy
Speaker A
hay un error Por aquí pues qué puede ser al final que tengamos este error vamos a hacer una cosa vamos a limpiarlo a ver si esto lo podemos tener bien Vamos a borrar en primer lugar el campo que
Speaker A
nosotros hemos metido mal voy a venir por aquí voy a pillar este dato y le voy a decir mira Row vamos a eliminarte vamos a aplicarlo vamos a actualizarlo me lo cargo desde aquí no hace falta ni que lancemos el comando ahora voy a
Speaker A
volver a la tabla a esta tabla de lenguajes le voy a decir que no era nulo users languages esta era y vamos a intentar lanzar esto y vamos a ver que hay un error y vamos a ver cuál es el
Speaker A
problema aquí dice venga Qué estamos viendo aquí vemos cómo se están actualizando esta tabla Aquí esta tabla aquí pero tenemos un problema tenemos un problema que nosotros hemos creado una clave poránea vemos aquí no podemos eliminar esto que vemos aquí estas
Speaker A
claves que tenemos a las dos tablas con lo cual vamos a entender cuál es nuestro problema por qué no podemos estar obligándole que no sea nulo vamos a la tabla de user ID me voy a la tabla de
Speaker A
user ID donde estamos tenemos la tabla de user ID con este identificador tenemos la tabla de lenguajes por este lado con el identificador pero el problema que nosotros tenemos ahora es que en el momento que nos venimos aquí e
Speaker A
intentamos modificar la tabla dejarme que lo vuelva a crear por aquí que tenemos la expresión por defecto espera toy el ID el ID not null Vale ahora ya lo tenemos porque antes lo que estaba haciendo referencia es al dato que no
Speaker A
habíamos borrado Vámonos ahora tabla usuarios lenguajes volvemos otra vez aquí venga volvamos ahora a intentar hacer lo mismo de antes voy a venir por aquí y voy a intentar insertar únicamente ese ID de usuario qué vemos ahora error lo veis en realidad si
Speaker A
nosotros metemos el user ID ahora en la tabla de usuarios y lenguajes lo que se nos está indicando es que vale usuario y lenguaje tienen que ser únicos pero aparte ahora También tienen que sern nulos así que no se te ocurra guardar
Speaker A
una relación que no tiene sentido okay Así que ya veis como hemos hecho a propósito en la clase anterior una tabla que parecía de relación que estaba mal y como la hemos tenido que arreglar ahora porque aunque sí que podíamos guardar
Speaker A
datos podríamos cometer errores guardando los datos en cambio de esta forma y para eso es para lo que tenemos las bases de datos para acabar haciendo que nuestros datos se conserven de la manera más íntegra y que yo como
Speaker A
programador que igual se va a poner aquí a escribir o a guardar datos o yo que sé pues no pueda liarla no puede equivocarse y guardar en esta tabla intermedia un dato Sí y otro no no tendría ningún sentido para una tabla de
Speaker A
relación okay de esta manera ya tenemos datos en todas las [Música] tablas y esto ya nos da pie a lo que verdaderamente nos ocupa en esta clase que es los join Okay los join básicamente para que para lo que nos
Speaker A
vale es una instrucción es un Comando que nos va a servir para relacionar dos o más tablas nos va a servir para combinar de una forma que ya veremos los datos que hay en dos tablas vamos al caso práctico y vamos a empezar a
Speaker A
entender los diferentes join que hay con las diferentes tablas que tenemos y sus diferentes relaciones Así que lo primero que me voy a hacer es venir para aquí crear una nueva carpeta No aquí y le voy a llamar join okay Y aquí vamos a
Speaker A
empezar a ver los diferentes tipos de joins aplicados a la diferentes tablas que tenemos básicamente a nivel de joins vamos a ver cuatro más un quinto Okay pero bueno oficialmente vamos a ver cuatro y después otro tipo de comando
Speaker A
que nos sirve también para unir los datos pero una de siguiendo un concepto distinto a los join pero que también lo veremos en el grupo de joins Por decirlo muy rápido tipos de joins tenemos el Inner join el right join el left join el
Speaker A
full join y el quinto ese que os digo por ahí que vamos a acabar viendo es lo que llamamos el Union Okay que nos sirve también para unir dos tablas Pero bueno lo iremos viendo muy poco a poco no os
Speaker A
preocupéis a a un por esto vamos con el primer join vamos a ir entendiendo los diferentes tipos de join y cuál es el resultado que obtienen estos join voy ir por aquí y el primer join es el llamado
Speaker A
Inner joint Inner join vale Qué es el Inner join vamos a partir por la teoría porque creo que es la mejor manera también de entenderlo el Inner joint es un comando que nos sirve para obtener los datos comunes de ambas tablas nos va
Speaker A
a servir para relacionar inicialmente dos tablas si nosotros ejecutamos el Inner joint sobre más tablas nos va a servir para consultar pues datos de muchas más tablas por supuesto vamos a verlo con un ejemplo porque creo que también es la manera de que entendamos
Speaker A
bien Qué es eso del lner join el Inner join Al final nos va a retornar las filas de dos o más tablas cuando hay coincidencias en ambas tablas Okay vamos entender Qué hace el join y cómo lo montaría relación uno a uno que teníamos
Speaker A
aquí que era la tabla de usuarios por un lado y la tabla de dnis Imagínate que ahora por los requisitos de nuestra aplicación o los datos que yo necesito o lo que sea yo ahora lo que quiero traerme es todos los usuarios con sus
Speaker A
dnis hemos visto que aquí teníamos un problema que los usuarios están en la tabla users y que los dni están en la tabla dni Cómo hago para acabar trayéndome de de bases de datos recuperando en base de datos los
Speaker A
usuarios junto a su dni porque yo igual llegó un momento en mi aplicación que tengo que listar usuario su dni por lo que sea claro alguien que no sabe nada de sql qué haría y que sí que sabe
Speaker A
programación qué haría pues me traigo por un lado un Select con los usuarios me traigo por otro lado hago una primera consulta Select de todos los usuarios me traigo los usuarios Select de la tabla dni y ya tengo por un lado el usuarios y
Speaker A
el dni y empiezo a intentar con código con un for intentando ver pues qué usuario de Qué dni es por identificador Pues no sé qué Pero por supuesto la base de datos nos va a permitir hacer este tipo de operaciones de una manera mucho
Speaker A
más simple mucho más segura y muchísimo más óptima vale Y para eso es para lo que tenemos el join en el momento que nos tenemos que traer datos de dos o más tablas empezamos a utilizar el join Cómo
Speaker A
montaría un join entre las tablas usuario y dni en primer lugar yo quiero decir que voy a seleccionar los datos para eso ya habíamos visto la instrucción Select qué voy a selec ionar todo Nada me hago un Select asterisco y
Speaker A
después si queréis ya vemos cómo lo refin de qué tabla es la que yo voy a acabar haciendo esta consulta en realidad los join pueden ir en ambos sentidos okay Porque veremos que después Nosotros también podemos hacerle diferentes restricciones pero imagínate
Speaker A
que yo lo que quiero hacer es vale inicialmente me voy a traer los usuarios la tabla users voy a seleccionar todos los usuarios de la tabla users si yo lanzara esta consulta me traigo todo los usuarios pero yo ahora estos usuarios
Speaker A
los os Quiero unir con los dni Cómo haría para unir con los dni aquí es donde entra el primero de los joins después veremos las diferencias entre los distintos joins pero el join más habitual es el Inner joint Inner joint
Speaker A
el Inner join como os he dicho nos acaba devolviendo los datos coincidentes Cómo tengo que acabar yo especificando el Inner join pues le tengo que acabar especificando la tabla con la que yo quiero hacer join Cuál es la tabla con
Speaker A
la que yo quiero hacer join pues la tabla con la que yo quiero hacer join es la ta habla dni pero ahora aquí faltaría algo más imagínate que yo ahora quiero lanzar este Comando veis lo que tengo aquí en realidad Este es un join que nos
Speaker A
trae absolutamente todo veis que esto ya ejecuta este Inner join lo veis aquí nos trae absolutamente todos los datos me voy a guardar esto porque esto en realidad acabará tomando otro nombre pero os lo voy a dejar aquí representado
Speaker A
veis que ahora lo que tengo aquí es user ID name apellido es decir todos los datos de la tabla usuario y todos los datos de la tabla dni y vemos nulo por ahí por el medio Cómo se relacionan
Speaker A
vemos un montón de datos repetidos decir esto no tiene mucho sentido vemos como muchas cosas repetidas en realidad un join siempre va a tener que acabar Estableciendo Cuál es el campo que va a utilizar para realizar esa Unión Cuál es
Speaker A
la unión nosotros tenemos que indicarle con la cláusula on primero de la tabla usuarios users Cuál es el campo que yo voy a intentar Buscar en la tabla de dni pues yo voy a intentar Buscar que el campo usuario que teníamos user ID vale
Speaker A
es lo que yo voy a igualar de la tabla dni qué campo el mismo campo user ID es el campo con el que nosotros establecí la relación yo ahora lanzo esto y vamos a empezar a ver diferentes problemas Qué
Speaker A
encontramos aquí aquí podemos Ya empezar a ver que decimos Uy hay un error hay una columna que no sabe muy bien Cuál es por qué Porque yo he puesto user punto dni vengo por aquí y lo vuelvo a lanzar
Speaker A
qué tenemos aquí Este es el resultado de Inner join un únicamente las filas coincidentes solo teníamos tres usuarios si nos vamos a la tabla dni a la que a los que le habíamos definido el dni Y a qué usuario pertenecían ves que tenemos
Speaker A
este dni con id4 pero no le habíamos dicho A qué usuario pertenecía Entonces qué dni tenemos vamos a acabar retornando el 111 222 333 Esto es lo que veis aquí como bryce tiene el dni 111 como Sara tiene el dni 222 y como Carlos
Speaker A
tiene el dni 333 y nos hemos traído absolutamente todos los campos Este es un Inner joint representado con un gráfico cómo sería el Inner joint Imagínate que yo tengo aquí la tabla usuarios y yo tengo aquí la tabla dni
Speaker A
Qué hace el Inner joint el Inner join se queda con esta parte se queda con los datos que son comunes entre ambas tablas nunca nos va a traer usuarios que no tienen dni y nunca nos va a traer dni
Speaker A
que no tienen usuarios asignados por eso el Inner joint por el campo de Unión que es el ID de usuario que es así como modelamos nuestra base de datos es únicamente esto que estamos viendo aquí en el centro son usuarios con Denis Okay
Speaker A
esto es el Inner joint entender lo siguiente que en la gran mayoría de bases de datos escribir Inner join es lo mismo que escribir join Ahora lanzo esto veis que no he puesto Inner join he puesto solo join es exactamente lo mismo
Speaker A
en la gran mayoría de motores de base de datos Esto es lo mismo aquí tenemos ese primer join el Inner join con como tal vamos a seguir con el Inner joint pero vamos a verlo reflejado ahora en una
Speaker A
tabla de relación no1 n o n1 nos da igual También podríamos ver otra cosa pensar que ahora si yo ahora esta tabla la quiero ordenar alfabéticamente si quiero seleccionar otros Campos ya sabéis que sql es un lenguaje que al fin
Speaker A
y al cabo lo que nos permite es cada vez crear consultas más complejas hemos visto a lo largo del curso como yo veía el Select después le veía la selección de Campos le veía las restricciones le veía las ordenaciones le veía las
Speaker A
funciones y lo íbamos añadiendo todo y hacíamos queris mucho más grandes aquí tampoco os quiero liar pero lo que tenéis que pensar es que todos estos comandos que vimos de lectura que es el hing que si gr bik todo esto los alias
Speaker A
El el average lo que sea que de alguna forma hemos visto por separado esto todo después lo Vais a aplicar a los join pensar que esto lo único que está generando es una tabla más esto lo único que hace es darnos una una serie de
Speaker A
columnas que nosotros hemos consultado Entonces nos da igual que sea de una tabla de dos que de 100 yo le voy poder meter modificadores en esta Select para traerme los datos de la manera que a mí me dé la gana si quisiera ordenar los
Speaker A
campos alfabéticamente por la edad pues le hago un order Buy por por la edad y ya está yo vengo aquí y digo cómo era el order buy a ver Ah mira le metía el we le decía order Buy por la edad no sé qué
Speaker A
yo ahora vengo por aquí le digo Tengo este campo a ver esto simplemente por intuición le digo que el campo nombre name o el campo age quiero utilizarlo para ordenar lanzo esto que vemos edad descendente vemos que coincide con estos
Speaker A
usuarios Pero si yo ahora le pusiera age ask 15 20 36 ya no está por orden según van apareciendo ahora el orden que sigue esta tabla es edad creciente igual que podríamos tener esto vengo aquí una restricción y digo Mira yo en realidad
Speaker A
tampoco es que me quiero liar mucho lo que me quiero traer es el campo name y el dni number vengo por aquí lo lanzo y ya está tendría la tabla que yo acabo de generar con estos resultados porque a mí
Speaker A
Lo único que me interesaba era tener los nombres junto al dni y encima ordenados por la edad de forma ascendente que yo no muestro ni la edad pero en realidad yo me los quiero traer así porque es el
Speaker A
criterio o es la funcionalidad que tengo en mi aplicación Okay pues bueno para que veáis que podemos hacer estos join todo lo complejos que nosotros querramos con todos los comandos que hemos aprendido anteriormente aquí teníamos la relación uno a uno pero ahora Vamos a
Speaker A
ponernos en el caso que queremos aplicar este join en una tabla con relación 1 a n Cuál era la tabla con relación 1 a n teníamos que por aquí los usuarios podían estar trabajando en diferentes compañías o lo que fuera recordáis venga
Speaker A
Vámonos a hacer un Select asterisco de la tabla usuarios vamos a hacerle ahora en join con una tabla que dijimos de relación 1 an que era la tabla compañías companies y cuáles son los campos que unen las compañías con los usuarios pues
Speaker A
más de lo mismo teníamos por aquí antes usábamos user user ID y ahora tenemos el usuario y las compañías pero es el user ID lo que lo relaciona si yo me voy a compañías vemos que el campo de relación
Speaker A
aquí teníamos el Company ID si yo me voy a usuarios vemos que el campo de relación con la compañía es Company ID Así que esta clave por un lado en compañías primari y clave foránea en usuarios será Company ID lanzo esto qué
Speaker A
tengo por aquí fijaos aquí tenemos a Bris que trabaja en mouredev aol que también trabaja en mouredev a Carlos que trabaja en Apple y a savitar que trabaja en Google no ha cambiado el join si os fijáis el join lo hemos hecho de la
Speaker A
misma manera lo que pasa es como esta tabla tiene otro tipo de relación interna Pues aquí sí que vemos datos repetidos cosa que antes con los dnis no iba a poder pasar pero como aquí tenemos que en una compañía pueden trabajar
Speaker A
diferentes personas en una única compañía vemos que aquí el name de la compañía es distinto porque trabajan bry y control en la misma compañía me guardo esto alguien puede pensar y si lo hago al revés yo digo Mira Quiero hacer el
Speaker A
Select de compañías pero de la tabla users Qué pasa si lanzo esto vamos a ver por aquí veis que ahora la primera tabla es la que aparece de primera como yo he empezado consultando en la tabla de compañías los primeros los primeros
Speaker A
Campos que me aparecen ya que estoy seleccionando todo ya que estoy haciendo un Select asterisco son los datos de la compañía y después me vienen los datos del usuario Pero y si yo ahora igual que tengo esto invierto que lo quiero hacer
Speaker A
la ID de compañías por un lado y de users por aquí esto cambiaría algo en realidad esto no va a cambiar absolutamente nada no pasa nada esto lo que tenéis que pensar es que igual según los datos que queréis consultar o cómo
Speaker A
queréis que sea más óptimo pues igual podéis hacer estos intercambios de consultar primero una tabla después otra tabla lo que sea vale en este caso Qué sería lo más lógico si yo quiero traerme pues las compañías Con qué usuarios
Speaker A
trabajan dentro Pues igual lo mejor es empezar consultando por compañía y yo vengo por aquí y me quedo con el companies aquí companies name y con el users name ves que en este caso lo mejor es que ya que tenemos el mismo nombre en
Speaker A
este caso hago referencia al nombre de la compañía en este caso hago referencia al nombre del usuario entonces digo vale si yo lo que quiero tener es primero las compañías porque lo que quiero ver es esta relación Pues venga lo pongo
Speaker A
primero pero ya veis que le podríamos dar vueltas lo habitual Es que en la gran mayoría de los casos Aunque invirtamos el consultar de una tabla y hacer relación con otra va a ser igual de óptima hay casos muy concretos en los
Speaker A
que sí que podría ser diferente Pero esto creo que ya son conocimientos mucho más avanzados en principio quedaros con que estos tipos de relaciones 11 1 n como en realidad lo único que nos estamos quedando es la parte común que
Speaker A
os pinté antes en el círculo pues no tiene mucho más le podemos dar algunas vueltas Así que listo una vez ya tenemos esto seguimos nos queda un tipo de tabla más hemos visto relaciones un a n hemos visto relaciones uno a uno pero qué pasa
Speaker A
en el caso complejo recordáis en el caso que vamos a tener los lenguajes y en el caso que tenemos también por aquí las relaciones Cómo Tendremos que hacer porque ahora sí que pasa algo cómo funcionaban las relaciones muchos a
Speaker A
muchos namam teníamos la tabla intermedia con lo cual ahora lo que tendremos que hacer es un join de tres tablas las dos tablas con los datos principales más la tabla que Guarda las relaciones cómo podremos hacerlo vamos a
Speaker A
ello vamos a hacerle un Select Select asterisco de dónde cómo lo teníamos antes pues mira de la tabla si queréis para visualizarlo más rápido voy a intentar quedarme con la tabla de relación from Cuál era la tabla de
Speaker A
relación user languages esto por un lado Esta es la tabla que va a ser capaz de unir la tabla de usuarios por un lado y la tabla de lenguajes por otro lado Cómo haríamos el join pues así de fácil
Speaker A
haciéndole un join en este caso un Inner join estoy poniendo join pero pensar que es lo mismo que si yo pusiera Inner join no sé cómo lo estoy representando en estas tablas estoy poniendo join pero para que sepáis que es lo mismo creo que
Speaker A
no tiene mucho sentido que yo ponga Inner join si en realidad yo lo puedo representar con join pero quedaros con que Inner join es join Okay Cuáles son las tablas que yo tendría que unir Pues por un lado tendría que unir la tabla
Speaker A
users Y cómo uniría la tabla users por un lado con el identificador del ID usuario Cómo era user ID era sí user ID por un lado okay Con qué con el usuario la tabla users también user ID así ya
Speaker A
tendríamos la unión por un lado yo podría lanzar esto y Qué encontramos aquí pues bueno la tabla de relación primero y los usuarios que entran dentro de la taba de relación pero esto casi no me está valiendo para nada Por qué
Speaker A
Porque aún no tenemos los lenguajes tengo identificadores pero no tengo el nombre de los lenguajes que es lo que a mí me importa qué tendríamos que hacer lanzar un segundo join un segundo join Con qué tabla con la otra tabla que nos
Speaker A
falta con la tabla de lenguajes Y cómo sería la relación pues igual que aquí la tabla de user languages pero en este caso con el Language ID y con qué lo vamos a relacionar pues con la tabla lenguajes lenguajes Con qué campo con el
Speaker A
Language ID Language ID lanzo esto ahora que tenemos las relaciones Esto es lo que yo buscaba la tabla de relación la vemos aquí que nos puede sonar un poco aquí a kingon porque no sabemos Qué significa pero si Seguimos avanzando
Speaker A
vemos que bry sabe Swift que brce sabe colding que brce sabe python que Sara sabe javascript y que Sara sabe python esta es un poco un poco las relaciones que nosotros hemos establecido Cuando hacemos un join o habitualmente Cuando
Speaker A
hacemos consultas en general no solemos hacer Select de asterisco porque eso al final tenemos todos los datos que la mitad pueden ser inútiles Qué sería lo mejor en este caso pues venir por aquí y decir que yo de la tabla users me voy a
Speaker A
quedar con el nombre de usuario y de la tabla lenguajes me voy a quedar también con el nombre si yo ahora lanzo esto vemos algo mucho más asumible vemos bry sa Swift colding y python y Sara sabe javascript y python mismo join tres
Speaker A
tipos de relaciones distintos y por supuesto igual que veis aquí como estamos añadiendo joins si tenemos criterios para seguir uniendo tablas podemos unir todo lo que nos dé la gana join es un comando para poder unir tablas en base a un criterio ya tenemos
Speaker A
el join el Inner join el join que se quedaba con la parte común pero os he dicho que tenemos más tipos de joins el siguiente join que yo quiero ver por aquí vamos a crear un nuevo fichero el
Speaker A
siguiente join que a mí me gustaría ver es es el llamado left joint que ya podemos empezar casi a intuir cómo puede ser antes de pasar al left joint deciros también una cosa que a veces para entenderlo mejor en el from podemos
Speaker A
poner la tabla de Unión pero pensar que yo ahora hago esta modificación igual que hicimos antes que yo lo que quiero utilizar en el Select este para realizar esta primera Unión voy a partir desde la tabla usuarios Entonces yo hago el from
Speaker A
de la tabla usuarios y el join la hago con la tabla de usuarios lenguajes yo ahora lanzo esto y me va a dar Exactamente lo mismo veis que que yo aquí modifique el orden en realidad a veces ya digo puede llegar a afectar a
Speaker A
la performance pero no suele ser lo habitual de hecho en realidad lo habitual a veces suele ser partir de una tabla e ir desplazándonos hacia la tabla de Unión y hacia la tabla final pero creo que a veces para explicarlo por lo
Speaker A
menos al principio se entiende mejor si pillamos la tabla de Unión y nos desplazamos a los lados y buscamos las otras dos tablas vale pero aquí lo estáis viendo que yo cambie el orden que yo ahora pusiera aquí el users y aquí
Speaker A
pusiera el user languages y que finalmente me quedara con la última tabla de lenguajes iba a dar exactamente los mismos resultados me puedo guardar este dato esta consulta o si la queréis tener de referencia pero también para que entendáis que habitualmente van a
Speaker A
funcionar después a nivel de performance ya es otra cosa que tenemos que acabar estudiando porque ahora lo que quiero ver es el siguiente tipo de join decíamos que teníamos el Inner joint que se quedaba con los datos comunes antes
Speaker A
de probar el left joint creo que os lo voy a porque creo que sí también se entiende recordad lo que teníamos antes la tabla usuarios y la tabla dni vale que esta era la primera tabla la primera relación de tablas el Inner join se
Speaker A
quedaba con los datos comunes Pero qué va a hacer el left join el left join en realidad siempre se va a traer todo lo que tiene la tabla de la izquierda esto que vemos por aquí decir el left join se
Speaker A
queda siempre con la primera tabla que nosotros le hacemos la relación con los datos que tiene común pero no se trae los datos de la tabla de la derecha en este caso por qué Porque en nuestra aplicación por ejemplo aplicado a
Speaker A
usuarios y dnis en nuestra aplicación tenemos el requisito que tenemos que mostrar a todos los usuarios y su dni lo tengan o no lo tengan Así que vamos a ver cómo montaría en este caso un left joint para entender el left joint creéis
Speaker A
que hay que darle muchas vueltas a todo esto vengo por aquí me voy a copiar el primer Select que hicimos de la tabla de dnis era este por ejemplo que era un Select muy facilito que nos traíamos todo de la tabla de usuarios voy a venir
Speaker A
por aquí lanzamos esto y lo que teníamos era eso únicamente los usuarios con sus dnis Pero si yo ahora en vez de hacer un Inner join hago un left join lo lanzo qué tenemos aquí fijaos me he traído
Speaker A
todo el usuarios todo toda la tabla de la izquierda la tabla de la izquierda la interpretamos como la tabla que consultamos la primera tabla es decir tiene a todos los Us arios Pero dnis por supuesto vienen los dnis que sí que
Speaker A
tienen relación que era estos que veíamos aquí Bray Sara Carlos que sí que tienen dni pero en el caso de los usuarios que no tienen el dni Con qué se nos cubre con nul decir Paco no habíamos definido el dni suyo ni de lejos qué
Speaker A
tiene Pues todos los campos nulos si yo ahora vengo y lo preciso aquí un poquito y digo que me quedo solo con el name y el D number y lo lanzo vemos lo que tenemos Pues bueno todos los usuarios de
Speaker A
nuestra base de datos Y en el en el caso que tiene el dni pues viene cubierto y en el caso que no lo tiene Pues nos manda un null est un Inner join nunca nos lo haría solo se nos quedaría con
Speaker A
estos datos pero el left join ya que la tabla de la izquierda así entrecomillado ya que la primera tabla es la de usuarios siempre nos trae todos los usuarios y rellena con nulos las no coincidencias de la tabla dni que es el
Speaker A
criterio de Unión que nosotros le estamos indicando así que vengo por aquí dejarme que me guarde este left joint y también que me guarde el left joint con asterisco igual que lanzamos todos los Inner join podemos probar todos los los
Speaker A
left join No creo que tenga mucho sentido hacer esto pero sí que puede tener sentido que veamos Este ejemplo ahora voy a intercambiar las tablas voy a hacer que la tabla de la izquierda sea dni y que la tabla de la derecha sea la
Speaker A
de users a ver qué pasa en este caso lo veis claro Cuáles son todos los campos de la tabla de la izquierda todos los campos de la tabla de la izquierda son los dnis Por qué la tabla de la
Speaker A
izquierda ahora apece de segunda porque yo estoy haciendo un Select en lo que lo primero que estoy pintando es el nombre y después el dni qué ha pasado en este caso nuestra tabla izquierda Aunque aquí se muestra a la derecha son los dnis
Speaker A
tenemos cuatro dnis metidos el uno el do el tres y el cuatro Qué hace rellenar con nulos los nombres de los usuarios que es la tabla de la derecha que no tienen coincidencias con el dni el dni 4
Speaker A
no se lo habíamos asignado a nadie no se nos muestra y ya está sin ningún problema vale aquí lo tenéis es decir siempre se está quedando con los datos de la tabla de la izquierda como tabla principal aunque le estemos dando aquí
Speaker A
la vuelta pasa a ser una nueva tabla la de izquierda que queremos Probar con el resto no importaría tantito igual que si yo me vengo por aquí me voy a ir al caso más complejo Que es el el el join de la
Speaker A
relación nm que quizás sera la más complicada si ahora vengo por aquí Imagínate que empiezo a lanzar aquí left join como un loco podría hacer esto claro qué acabamos teniendo exactamente la misma relación fíjate tenemos el usuario que sí que tiene varias entradas
Speaker A
de lenguajes de programación y rellenos con nulos los usuarios que no hanan que no saben ningún lenguaje de programación podríamos hacer algo tan loco como esto que yo ahora me pongo combinar y hago left joint con join fíjate qué acabo
Speaker A
teniendo estoy restringiendo esta relación con lo cual ya no hay left join que valga por eso aquí nos volvemos tener algo parecido a un join estoy haciendo un left join inicialmente pero después casi lo estoy deshaciendo porque estoy restringiendo esa relación así que
Speaker A
esto son cosas que también tenemos que tener en cuenta igual que existe el left join qué otro join Existirá pues existe el right join venga vamos a crear aquí uno nuevo Cómo probamos el right joint vamos a probarlo casi con el mismo
Speaker A
ejemplo que el left joint vamos al caso más simple tabla de usuario relacionada con dni yo ahora en vez de hacer un left joint hago right joint lo lanzo Y qué veo por aquí pues en este caso dejarme
Speaker A
que lo pinte teníamos esto vengo por aquí podemos tener nuestra tabla de usuarios nuestra tabla usuarios nuestra tabla dni el join se queda siempre con lo común el left se queda con la parte con la primera tabla con la tabla
Speaker A
izquierda y el right se queda con la tabla de la derecha Okay el concepto es exactamente el mismo Solo que la tabla que está utilizando para traerse todos sus datos en este caso es la tabla de la derecha vale es como si hiciéramos el
Speaker A
left join antes cuando invertimos las tablas sería algo muy parecido vale cómo lo vemos aquí representado superfácil esta representación vemos que en realidad se vienen todos los dnis tiene todos los datos de la tabla de la derecha la tabla dni y como los datos de
Speaker A
la izquierda aunque no los tenga Pues los rellena con nulos que aquí tenemos right joint hago el r joint ahora ya solo de estos elementos más de lo mismo me quedo con los datos de la de la derecha y los datos de la taba izquierda
Speaker A
relleno con nulos cuando no los tengo nos vamos a este que también era así un poquito más complicado El right join pero en este caso invirtiendo las tablas qué tenemos Ahora aquí pues otra vez todos los usuarios y los dnis esto en
Speaker A
realidad pensar que podemos acabar consiguiendo lo mismo eh con el right joint lo mismo que con el left join pero a nivel de optimización y a nivel de tratamiento de datos sí que tiene sentido a veces utilizar uno y utilizar
Speaker A
otro y sobre todo también para que nosotros lo comprendamos mejor Cuál es la relación que estamos Estableciendo a la hora de unir los datos de esas dos tablas vale Y el último caso el distinto la nm estas que teníamos por aquí si yo
Speaker A
lo lanzo Pues veis lo mismo como en realidad aquí tenemos a los usuarios y como está rellenando con nulos Cuando no tenemos un usuario asignado a uno de los lenguajes vemos que el lenguaje se puede repetir si un mismo si varios usuarios
Speaker A
saben el mismo lenguaje pero en el caso de que ningún usuario como es el caso de Java o de cobol o de csharp que ningún usuario sabe estos lenguajes pues lo rellena con null y se queda tan ancho
Speaker A
que este es el concepto de right join el último join que quiero ver igual que tenemos r join para quedarnos con la derecha con la izquierda voy a venir por aquí 04 es lo que llamamos el full join
Speaker A
que ya os podéis estar imaginando que va a hacer un full join qué va a hacer un full join Pues básicamente eh se va a quedar con todo también deciros que los términos igual que el liner joint habitualmente lo podemos emplear
Speaker A
únicamente escribiendo join en algunas bases de datos el r joint el left joint y el full join lo podemos encontrar como igual wr outer join con esta palabra sin la H outer join Okay podemos encontrar right ou join left outer joint y full ou
Speaker A
join vale en algunos motores de base de datos pues lo utilizamos así de ahí el problema de que en qué cambia esta base de datos con esta base de datos los cambios suelen ser bastante simples vamos por aquí ahora hacer un ejemplo de
Speaker A
un full joint qué va a hacer un full joint nada que no os hayáis imag nada tabla usuarios tabla dni Inner join me quedo con esta parte left join me quedo con esta parte y con lo común right join
Speaker A
me quedo con lo común y la tabla de la derecha full join pues ya está pintado el full join el full join en realidad se queda con todo tenga datos hacia un lado o no el full join hay que tener
Speaker A
muchísimo cuidado a la hora de utilizar fijos voy a venir por aquí y hago Select asterisco de usuarios Cómo hago el join así cómo hago el r join r Cómo hago el full join full join Con qué voy a hacer
Speaker A
el full join con la tabla de dni y cuál es esa relación que voy a establecer entre las dos tablas esto Exactamente igual que antes por la relación que voy a establecer es por un lado que la tabla
Speaker A
users tiene el user ID y que la tabla dni tiene el campo user ID from faltaba el from Perdón lanzo esto vamos a ver fallo Cuál es el fallo que tengo por aquí tengo Select tengo el from tengo la
Speaker A
tabla tengo el full join tengo el de users y de dni error sin leerlo por aquí sin leerlo vamos a la tabla users vamos a las columnas y vemos user ID y dni user ID Cuál es el fallo Ya lo hemos
Speaker A
visto Cuál es el fallo si yo me vengo por aquí lo veis hago aquí aquí hago Aquí vemos que sigue fallando yo le he cambiado el full full join y parece que no va por qué no va Aquí lo he cambiado
Speaker A
y he utilizado una consulta de las que tenía antes alguien puede pensar Pues será ouder join no acordáis que antes decía el udder este que teníamos por aquí que se podía escribir que se podía a pasar qué creis que nos falta ya os
Speaker A
digo Este aer no es necesario os lo explico ya que estábamos hablando de conceptos a nivel de diferentes bases de datos El problema del full join básicamente es que el full join como tal no existe conceptualmente en sql existe
Speaker A
el r joint el F joint el Inner joint el full joint pero en mysql en concreto no existe ese concepto la forma a la que nosotros tendríamos de que hacer ese full join Pues podría ser haciendo un join completo recordáis cuando yo antes
Speaker A
hice y al principio que yo decía Mira Imagínate que yo le hago un join de absolutamente todo que yo vengo aquí lanzo esto esto empieza a duplicar datos claro todos estos que tenemos por aquí esto es que está uniendo todo con todo
Speaker A
esto no tiene ningún sentido Pero ahora vamos a refinarlo un poquito ya que el full join a mí me gustaría que trajera todo lo que tiene hacia la derecha todo lo que tiene hacia la izquierda vamos a venirnos por aquí qué ten teníamos algo
Speaker A
así como el lner joint pero si nosotros queríamos irnos a cada uno de los lados hacíamos algo así y ahora yo vengo aquí y digo vale voy a intentar traerme left join con unos datos y veíamos Esto vale
Speaker A
pero yo también quería que completara con los datos que no son nulos en el otro sentido y si yo ahora viniera por aquí y hago right join esto sería una locura eh Alguien podría pensar que esto Podría tener sentido Pero se acabó esto
Speaker A
tampoco tiene sentido Porque alguien puede pensar vale hago hacia la derecha hacia la izquierda con una con tres tablas podríamos acabar consiguiéndolo pero con dos tablas no podemos acabar consiguiendo esto a qué quiero llegar con esto que este full join yo lo que
Speaker A
voy a acabar renombrando aquí es por Union vale Por qué Union porque sí que tenemos otro tipo de comando llamado Union yo ahora lo que quiero es tener todo lo que hay en una tabla más todo lo que hay en otra tabla vengo por aquí y
Speaker A
hago Select asterisco de la tabla que sea from users y quiero unirlo con los datos de otra tabla Union Y qué me quiero traer de la otra tabla Pues también todo lo de la otra tabla pero en este caso de la tabla dni voy a lanzar
Speaker A
esto y me dice brce dónde vas esto tampoco va dec este ya me lo he estado reservando para el final para que veáis cómo podemos acabar llegando a casos más raros Qué problemas tenemos en este caso pues los problemas que tenemos en este
Speaker A
caso es que estamos intentando obtener datos de diferentes tablas pero que no tienen absolutamente ninguna relación entre ellas la documentación yo creo que nos lo va a explicar Nos vamos aquí a los join a ver si tiene el Junior vale
Speaker A
lo veis vemos las columnas vemos la tabla inicialmente parece que está bien pero si nos vamos ahora aquí veis lo que está haciendo está seleccionando llegado el caso por aquí la ciudad de una tabla y llegado el caso está seleccionando la
Speaker A
ciudad de otra tabla cómo lo traducimos esto a lo nuestro Cuáles son los campos que yo tenía en común por ejemplo de la tabla users que también voy a tener dentro de la tabla de pues teníamos algo que era el user ID y que en la tabla dni
Speaker A
yo también tenía el user ID lo lanzo ya pinta algo lo veis ya empieza a sacar diferentes datos por lo menos ya no falla la query Pero qué tendría que acabar yo ahora haciendo Aquí vamos a intentar seleccionar más cosas vengo por
Speaker A
aquí y voy a seleccionar el name Qué hace esto fallo Por qué está fallando esto porque ahora cuando yo estoy intentando relacionar los datos de la tabla dni el nombre sí que no está en ningún lado con con en la tabla de dni
Speaker A
por eso no es capaz de crear esa relación por eso aquí lo que nos dice es Y si yo intentara hacer un Union all volvemos a lo mismo vuelvo para atrás ready y voy a intentar lanzar el Union
Speaker A
all vemos lo que tenemos aquí parece que se lanza pero no cambia nada Y si yo ahora en este caso le metiera el name que tiene la tabla de usuarios y lo lanzo Qué pasa vuelve a fallar es
Speaker A
incapaz de unir ni por separado ni aunque sean todos los datos Porque este name no tiene ninguna relación y por eso aquí nos Vino muy bien Buscar este último caso porque el Union siempre hay que hacerlo con mucho cuidado porque es
Speaker A
susceptible de que traiga demasiados datos si intentamos hacer un Union si intentamos quedarnos con absolutamente todo Aquí vemos que sí que se está quedando con un dato concreto con lo cual Esto no es difícil pero aquí creo que nos lo explica bastante bien en un
Speaker A
caso que vi yo aquí veis que lo que estamos haciendo es Union pero haciendo por un lado el right y por otro lado el left de esta parte y Estableciendo alias vemos aquí con las tablas la tabla 13 la
Speaker A
tabla 17 otra vez aquí la tabla 13 como Estableciendo estas tablas con los diferentes valores sí que es capaz de acabar uniéndolas todas vamos a ver este ejemplo porque este ejemplo para acabar haciendo ese Union de de de todo
Speaker A
básicamente si quisiéramos acabar pues m no sé obteniendo todos los datos que tenemos en un lado y acabar representándolos en otro no es tan habitual hacer este tipo de consultas Pero que sepáis que existe y que nosotros podríamos trabajar con datos de
Speaker A
una forma un poco más masiva vamos a intentar razonar lo que nos pide aquí nos pide un valor de una tabla y otro valor de otra tabla y le está dando un alias y vemos como está haciendo el join
Speaker A
esto lo podíamos acabar traduciendo por la tabla de usuarios que hacía el join con la tabla de dni y que users la relación que tenía era el user ID con el dni que tenía la misma relación de user
Speaker A
ID okay Y aquí veis que se le da como estos diferentes alias vemos este Val 13 que vemos que aquí lo va a utilizar después para unirlo en columnas AC estemos viendo yo lo voy a hacer hasta este Word sin el order y aquí le voy a
Speaker A
llamar que en esta tabla users con el user ID esta tabla dni con el user ID para irme a algo verdaderamente más complicado a la hora de entenderlo y Esto va a ser el u user ID y este va a
Speaker A
ser el D user id para guardar estas diferencias voy a lanzar solo esta parte inicialmente porque esto inicialmente Debería ser un left joint de toda la vida pero ahora nos aparece el comando Union y volvemos otra vez a lo mismo
Speaker A
ahora en este caso nos vamos a ir el 13 vuelve a ser la tabla de usuarios seleccionamos el usuario le damos el identificador seleccionamos el dni le damos el identificador y vamos a quedarnos con el user ID pero en este
Speaker A
caso esta t13 que lo teníamos Aquí vemos que ahora vamos a hacer exactamente lo mismo también nos vamos a ir a la tabla usuarios el join se va a hacer con la tabla dni voy a poner de la misma forma
Speaker A
que nosotros lo representábamos el join y el on cómo va a ser el on es este mismo ahora vamos lanzarlo hasta aquí aquí tenemos el Union tenemos este we dni users y de la tabla users user ID ahora sí que nos ha dado un [ __ ] y no
Speaker A
nos debería dar dónde he metido yo la pata Ah users value perdón estaba haciéndole mal la selección Vale fijaos qué tenemos Ahora aquí esto es justo lo que queríamos Cómo nosotros podemos acabar haciendo un join en ambos sentidos vale como nosotros tenemos los
Speaker A
usuarios que por un lado tienen el dato e incluso Cómo podemos llegar a usuarios que no tienen nada ni por un lado ni por otro lado pero en este caso ya veis la manera Bueno este We no nos haría falta
Speaker A
en realidad venir por aquí y lo podríamos dejar así vemos que lo que hace es ese right joint left joint que yo tenía inicialmente en la cabeza que era como para acabar bando bifurcado todo esto igual que si lanzo el Union AC
Speaker A
vamos teniendo Exactamente lo mismo Esta es la forma como nos quedamos con todo hacia la derecha nos quedamos con todo hacia la izquierda y Lo acabamos uniendo y esto sería el Union que que en realidad yo creo que es el más difícil
Speaker A
de todos de los join y también el menos Okay repaso creo si no me equivoco por todos los joins qué os tocaría ahora a vosotros Pues igual que hemos visto estos join aunque ya os digo que tranquilos con los Union porque cuando
Speaker A
hacemos un junion lo hacemos como muy controlado queréis incluso que lo pruebe con el asterisco venga va veis aquí nos va a dar Pues bueno un montón de datos Al fin y al cabo en este caso hay algo
Speaker A
que el join parece que no es un junion porque siempre tenemos datos de usuario pero en realidad se estaría quedando con todos hacia la derecha y con con todos hacia la izquierda en este caso que también lo podríamos guardar aquí qué os
Speaker A
corresponde ahora a vosotros estos cuatro joins que existen aquí empezar a combinarlos empezar a combinarlos con las diferentes tablas con las diferentes relaciones empezar a meterle restricciones empezar a meterle funciones y entendiendo bien cómo funciona todo esto es la mejor manera de
Speaker A
acabar entendiendo los join Cómo funcionan las relaciones primero hemos tenido que entender Cuáles son los tipos de relaciones crear las tablas nutrir las tablas y ahora ya empezamos a trabajar con esas tablas Y esta es la verdadera forma en la que nosotros
Speaker A
trabajamos con una base de datos ya a nivel también de joins a nivel de relaciones más profundas entre las [Música] tablas voy a crearme aquí un nuevo directorio le voy a llamar 06 y le voy a llamar Advanced porque aquí estarán las
Speaker A
cosas que vamos a dar hoy que como digo por organizarlas de alguna forma sin más le vamos a llamar conceptos avanzados voy a venir por aquí y vamos a hablar del primer concepto avanzado 01 y Index sql voy a dejar también abierto por aquí
Speaker A
mysql workbench en mysql workbench es el cliente que estamos utilizando para consumir nuestra base de datos que se llama Hello my sequel y aquí donde teníamos pues estas diferentes tablas donde le metimos datos donde hicimos los join donde un poco llevamos trabajando
Speaker A
con esta base de datos a lo largo de todo el curso vale vamos a hablar del primer concepto que os quería decir el concepto de índice Qué es el concepto de índice pues vamos a explicarlo ya digo no se trata de que nos hagamos expertos
Speaker A
en todos estos conceptos Porque podríamos estar horas hablando en detenimiento de cada uno de ellos pero lo más importante y en lo que quiero que os centré es que por lo menos debéis conocer que existen para que llegado el
Speaker A
caso cuando vosotros tengáis que trabajar con bases de datos tengáis que administrar o no estos conceptos por lo menos al saber que existen los Vais a tener en cuenta para hacer uso de ellos cuando os hagan falta Qué es un índice
Speaker A
Pues un índice lo primero que tenemos que pensar es un elemento que se puede crear en una tabla de base de datos Y si hacemos un símil Qué es un índice en un libro Pues básicamente algo que nos
Speaker A
permite pues llegar a datos a una página antes yo sé que en la página 10 está algo en la página 20 está algo la página 35 empieza otro capítulo de un libro lo que sea pues un índice en sql
Speaker A
básicamente es una estructura de datos que nos va a permitir lo que llamamos indexar la tabla Con qué cometido Pues básicamente con el mismo que el de un libro para poder consultar datos Y para poder realizar operaciones sobre esa
Speaker A
tabla de base de datos mucho más rápido al final nos permite encontrar rápidamente esa información sin tener que leer todas las páginas o todos los datos vale en sql el índice lo que va a hacer es permitir al sistema de gestión
Speaker A
de bases de datos en este caso a mysql pues va a permitir encontrar los datos de esa tabla siempre que nos basemos en el índice y lo va a hacer de forma más rápida va a mejorar el rendimiento
Speaker A
quedaros con eso que los índices se utilizan para para acelerar la búsqueda de los registros sin más y tendremos diferentes tipos de índices pero claro si yo ahora digo Entonces bry qué sentido tiene no crear índices Porque si
Speaker A
me estás hablando qué más quiero yo que lo que yo lanzo en una base de datos se devuelva de forma más rápida entonces diría cuándo Hay que crear índices siempre y sobre qué Hay que crear índices sobre toda la tabla de base de
Speaker A
datos así me aseguro que me va a resolver todo muchísimo más rápido y va a ser más óptimo no obviamente si esto es un concepto que tenemos aquí y que por defecto no lo hemos creado es porque tiene su razón de ser y porque también
Speaker A
tiene su razón de no ser para que os quedéis solo con este concepto sabemos lo que es el índice hay diferentes tipos de índices y después os hablaré de cuándo Sí y de cuándo no hay índices primarios que al final es que está
Speaker A
vinculado con la clave primaria de la tabla esto es un concepto que ya vimos hay lo que se llaman los índices únicos bueno los índices primarios eh les solemos Llamar primary Index los índices únicos le llamamos un Index vale Y esto
Speaker A
lo que va a hacer el índice único es que asegura que dos filas de la tabla al final no tengan valores duplicados Y por último ya los índices compuestos que lo que van a permitir es que se utilicen
Speaker A
dos o más columnas por qué hay diferentes índices porque Los criterios de búsqueda de una tabla pueden ser diferentes a los de otra y aquí es donde de verdad entra lo importante que es por qué Hay que crear índices Y cuándo no
Speaker A
hay que crear índices primero el crear índices hace que la tabla pese más va a ocupar más espacio básicamente porque va a haber algo que nosotros vamos a asociar vamos a crear ese índice que va a hacer que la tabla tenga un espacio
Speaker A
adicional bueno Esto necesariamente no tiene por qué ser malo pero ya sabéis que si algo es más grande en peso seguramente sea más ineficiente en según qué momentos Dónde está el punto que sí creamos índices y los índices nos van a
Speaker A
ayudar a que los datos según qué datos asociados a ese índice Cuando hacemos una consulta se nos puedan devolver más rápido pero por el contrario lo que va a hacer es que cuando nosotros escribamos datos en esa tabla esa escritura va a
Speaker A
ser más lenta Por qué Porque se van a escribir datos Y de paso que se escribe el dato se va a tener que regenerar el índice para ahora tener en cuenta ese nuevo dato el índice asociado y volver
Speaker A
crear otra vez ese mecanismo así que ya vemos que hay una cosa muy buena que puede la tabla funcionar de forma más rápida en lectura pero de forma más lenta en escritura vale Y por supuesto lo mismo creación eliminación lo vamos
Speaker A
poder hacer con los índices pero todo eso pueda acabar repercutiendo la tabla Así que hay que tener mucho cuidado y hay que estudiar muy bien una tabla a la hora de decidir crear o no índice y en qué columnas o en qué Campos o en qué
Speaker A
atributos o en qué registros Al fin y al cabo eh Son los que nos afectan para decidir si queremos crear o no el índice Así que eso es muy muy importante en resumen básicamente los índices son herramientas eh Muy potentes Al fin y al
Speaker A
cabo pero el rendimiento de la tabla puede verse impactado vamos ahora a ver un ejemplo un poco más real me voy a venir por aquí a alguna tabla vamos a venirnos por ejemplo a la tabla de usuarios y vamos a ver pues por ejemplo
Speaker A
la tabla que teníamos aquí qué teníamos en esta tabla yo me podía venir por aquí vamos a traernos toda la tabla vale cuál era teníamos users por aquí esta tabla yo tengo toda esta tabla en esta tabla vamos a ver los datos que teníamos Pues
Speaker A
básicamente teníamos diferentes atributos teníamos el user ID el nombre el apellido la edad esta fecha inicio el email el ID de la compañía Porque ya teníamos una relación vale cuál sería el paso previo a decidir si nosotros queremos crear un índice o varios
Speaker A
índices o índices como dije antes primarios únicos compuestos o yo que sé pues tendríamos que primero revisar esta tabla y pensar cómo operamos Nosotros con esta tabla porque Alguien podría pensar si solo Leo la primera parte digamos de la definición digo Pues mira
Speaker A
voy crear índice en todos los campos así me da igual que consulte usuarios por email que por no hombre que por edad que a tope a mí me va a ir genial lo voy a crear en todos y no aquí se vería muy
Speaker A
penalizada Vale ahora imaginemos que la lógica de nuestra aplicación es que habitualmente cuando nosotros consultamos esta tabla y queremos ir por un campo en concreto en lo que nos solemos centrar es en que solemos pedir el usuario por eh nombre imagínate
Speaker A
porque la lógica de nuestra aplicación lo que nos dice es que habitualmente de cuando yo tengo que hacer búsquedas eh nunca permito Buscar al usuario por ejemplo por apellido obligo a buscar siempre por nombre entonces puedo decir Ey ojo hay muchas búsquedas o la gran
Speaker A
mayoría de búsquedas que hacemos el campo que tenemos en cuenta es el nombre y ahí podría decir Ah Mira pues igual ahí es un punto susceptible para que yo eh le pueda meter un índice al nombre ya que ya digo todo esto en un caso
Speaker A
ficticio presuponemos que hacemos búsqueda por nombre Vale pues cómo crearíamos un índice fácil créate Index Esta es la instrucción que hay que hacer para crear un índice al índice le Tendremos que dar un nombre habitualmente el nombre del índice le
Speaker A
podríamos dar el que nos diera la gana pero suele tener este prefijo que es idx gu baj para que cuando estamos revisando los atributos de la tabla veamos idx gu baj y rápidamente ya asociemos que lo que tenemos ahí es un índice Entonces
Speaker A
como buena práctica yo os recomendaría que hicierais esto vale eh Qué nombre le vamos a dar el índice se lo voy a asociar al nombre Entonces le voy a llamar idx y el mismo campo del nombre que es name y ahora aquí ya lo último
Speaker A
que tendríamos que hacer es y en qué tabla lo tenemos que hacer on nombre de la tabla Cuál es el nombre de la tabla users y después tendríamos que acabar indicándole el campo al que nosotros lo asociamos este índice name una vez ya
Speaker A
tengo esto ya sabéis que las instrucciones tienen que ir con punto y coma tal Qué podría hacer voy a lanzar esto ha funcionado veis aquí en verde create Index Okay pues esto lo lo que ya nos va a indicar si nos vamos a esta
Speaker A
tabla de usuarios si revisá la información Incluso si nos fuéramos a los índices a los índices índices a los índices vemos que claro ya hay algunos índices por ejemplo asociado a la clave primaria ya teníamos eso habitualmente e
Speaker A
las claves primarias suelen ser índices para realizar búsquedas un poco más rápidas cuando empezamos a traernos todos los datos cuando los relacionamos asociamos etcétera Pero ahora como yo sé que muchas búsquedas digo Ey yo la suelo hacer aquí por el nombre Pues venga
Speaker A
ahora tenemos este y de xname que nos va a decir aquí que no es único vale es un campo que en principio no era único si nosotros quisiéramos que los índices fueran únicos o lo que sea tendríamos que realizar un pequeño cambio que el
Speaker A
Index este tendría que ser Unique Index vale Y así pasaríamos de hacer un índice Al fin y al cabo único como tal o un índice general vale igual que el índice primario del que estaba hablando antes aún así Si quisiéramos que tuviera más
Speaker A
Campos los podríamos concatenar con comas podría podamos meterle más vale si le hago create Index y este índice se lo quiero asociar al nombre y al apellido porque me viene bien porque yo hago búsquedas por los dos pues haría name
Speaker A
surname le pasaría los dos nombres y esto ya sería suficiente para poder asociarle el índice a estos dos Campos vale Y así ya tendríamos ese índice compuesto de alguna forma pero en mi caso os decía que el ejemplo que quiero
Speaker A
llevar a cabo pues es este índice así sin más el índice ya se creó y ya está funcionando qué nos va a dar esto como resultado que si yo ahora mismo hiciera un Select asterisco de la tabla pues
Speaker A
from users Dónde está users si yo hiciera users Where el name es igual a Por ejemplo bryce si yo ahora lanzara esta consulta lo que nos va a asegurar que exista un índice creado Es que de alguna forma ya va a tener referenciado
Speaker A
para acceder rápidamente a los datos que tenía la tupla la fila asociada a todos los nombres Así que esto con los con Los pocos datos que tenemos prácticamente no lo vamos a anar pero en realidad si tuviéramos muchísimos datos y las
Speaker A
consultas habituales fueran por nombre esto nos daría muchísimo mejor rendimiento así que por favor tener muy en cuenta el concepto de índice y dejarme que me guarde aquí algunos ejemplos para indicaros Cómo son los diferentes índices que podemos crear
Speaker A
Unique por aquí si lo quisiéramos crear para varios imagínate name surname vale Y entonces así también lo podríamos hacer para varios y bueno en principio sería una manera de que pudiéramos ir creando varios si fuera en este caso
Speaker A
como lo estoy enseñando aquí lo lógico es que se llamar así name surname Okay así ya podríamos hacer algo un poquito más profesional de cara al nombre que queremos Borrar el índice muy fácil yo ahora vengo por aquí y hago Drop Index
Speaker A
le tengo que acabar indicando Cuál es el nombre del índice si recordáis idx name y en qué tabla users si yo ahora vengo por aquí hago esto aquí lo tenemos ejecutado correctamente se ha borrado el índice si ahora yo me vengo aquí a los
Speaker A
índices vemos que ya no está el índice que habíamos creado antes vamos a ver este índice compuesto que tenía por aquí veis que ahora se ha creado otra vez el compuesto ahora vamos simplemente para que veáis cómo estaba creado aquí lo
Speaker A
tenemos y vemos columnas ya vemos que ahora afecta dos columnas y esto ahora lo que ya hace es que claro este índice al ser una reunión de dos columnas ya lo que está haciendo es que tengamos esa restricción de unicidad de alguna forma
Speaker A
ya vemos aquí como lo tenemos el índice asociado a estos dos concepto de índice más o menos entendido el concepto de índice da para muchísimo pero lo vuelvo a decir no quiero tirarme hablando pues una clase completa de los índices lo voy
Speaker A
a borrar y voy a dejar por ejemplo para que quede como ejemplo voy a dejar creado este índice lo vamos a dejar creado para que así queda referenciado y también después podéis acceder a él Así que primer concepto índice tenerlos
Speaker A
siempre en cuenta a la hora de trabajar con bases de datos Porque nunca se sabe cuando igual estéis trabajando con una base de datos Y de repente digáis Jo Qué lenta va o en este caso concreto que está pasando pues digáis Ey si no le
Speaker A
tengo un índice creado y mira cuántas consultas están lando lanzando siempre asociadas estos datos Pues venga que ya lo tengáis que ya os salte automáticamente y digáis venga es hora de poner en práctica el concepto de índice siguiente concepto que quiero
Speaker A
tener aquí en cuenta vamos a crear nuevo fichero 02 y vamos a hablar ahora del concepto avanzado llamado Trigger vale triggers por aquí Qué son los triggers un Trigger si lo traducimos Así un poco de manera eh lineal un Trigger es un
Speaker A
disparador Y si intentamos presuponer Para qué nos vale Ya podemos asociar que un Trigger un disparador de hecho Incluso si nos vamos hasta la base de datos vemos que a ver a ver Mira voy a abrir abrir la tabla users Ah mira si
Speaker A
hay algo que dice triggers Ah bueno pero está vacío yo aquí en triggers pues parece que no tengo nada Pero en cambio sí que tengo índices sí que tengo las columnas las claves foráneas pero justo la parte de triggers lo tenemos aquí
Speaker A
vacío Entonces qué serán estos disparadores pues Vale al fin y al cabo son instrucciones que se Ejecutan automáticamente cuando ocurren eventos en la tabla es decir no son consultas que nosotros lancemos sino que nosotros programamos un evento que queremos que
Speaker A
ocurra cuando pase algo en una tabla concreta vamos a presuponer un caso de uso voy a venirme otra vez por aquí dónde teníamos el Select este de antes voy a volver por aquí donde estábamos antes revisando toda esta
Speaker A
tabla Imagínate que yo quiero montar esta fantasía que de repente si un usuario actualiza su nombre que se guarde en otra tabla el nombre que tenía anteriormente Claro si no hablamos puramente de bases de datos Y pensamos en lógica de programación pura y dura
Speaker A
cuál sería el flujo yo tengo una aplicación que permite actualizar el nombre del usuario Entonces yo iría a mi aplicación y pondría eh quieres cit el nombre o el email imagínate vamos a hacerlo con el email que yo creo que
Speaker A
quizás es un poco más realista digo actualizamos el email digo vale Pero es que yo me quiero guardar el email de antes Por si hay algún problema notificarlo al email de antes o recordarle Cuál era el email de antes o
Speaker A
yo que sé la lógica que nos diera la gana básicamente yo pues Vale Cómo hago para hacer eso pues cuando el usuario actualice el email Yo después desde mi aplicación también lanzo una ejecución Que guarde el email antiguo en otra
Speaker A
tabla de base de datos pero si os digo que esto lo puede hacer directamente la base de datos pues es un Trigger un Trigger es un disparador que va a detectar que cuando se actualice el campo de email va a guardar el campo de
Speaker A
email anterior el campo viejo lo va a guardar en otra tabla de base de datos por ejemplo qué os parece es una una lógica bastante curiosa Así que vamos a ver por dónde la intentamos llevar suponemos eso quiero guardar el email me
Speaker A
voy a crear un una nueva tabla vamos a crear una nueva tabla así aunque sea de forma muy muy simple Pues mira va a tener una columna la tabla se va a llamar pues email history vale es decir
Speaker A
el histórico de emails y entonces yo aquí qué podría tener Pues igual que nosotros hemos creado el user ID el user ID o lo que sea pues yo voy a crear el el email history ID esta Va a ser una
Speaker A
clave primaria No nula única lo que nos dé la gana tampoco nos vamos a complicar mucho en hacer esta tabla no es importante son seguros los triggers los triggers son seguros dependiendo de lo bien que tú implementas el Trigger el
Speaker A
Trigger puede estar bien o puede ser algo peligroso Pero bueno tengamos en cuenta que al fin y al cabo estas cosas o todo lo que se hace en base de datos lo tenemos que hacer si estamos seguros qué más cosas Podría tener aquí pues
Speaker A
mira me voy a guardar el ID del usuario user ID me voy a guardar Por aquí y también voy a decir que tiene que ser no nulo y que en realidad tiene que ser el mismo tipo de datos un integer y aquí me
Speaker A
voy a guardar el email que el email va a ser un marchar Bueno ni me acuerdo eh vamos a ver esto qué era columnas Pues el email era un barchart de 100 pues vengo por aquí y le digo que esto
Speaker A
tendría que ser pues un barchart de 100 vengo por aquí es un barchart de 100 y en este caso sí que voy a dejar que sea nulo porque el usuario sí que podía tener el usuario el email nulo Así que
Speaker A
yo tengo esta tabla la creo desde aquí no la creo ni con sql ni nada porque simplemente es para que nosotros hagamos la prueba vale aplico aquí la tenéis Esta es un poquito la tabla vale si quisiera nos la copiamos y nos la
Speaker A
guardamos por si nos hiciera falta Pues bueno aplico la tabla se crea correctamente y ahora si todo ha ido bien Yo tengo una nueva tabla que es email history que está pues sin más aquí le tendríamos que Haber puesto que el ID
Speaker A
es auto incrementado Así que dejarme que haga el autoincremento así porque así lo vamos a tener creo que un poquito mejor representado porque cada vez que se meta un dato por lo menos que sea Se incrementa automáticamente y así tampoco
Speaker A
tenemos problema autoincremental vale hemos creado esta tabla a modo histórico fijaos que si tuvierais dudas sobre cualquier cosa recordar que por ejemplo hablamos de cuando creá las tablas fijaos aquí cóm le íbamos metiendo los datos el no nulo llegamos a un punto que
Speaker A
era el autoincremento si tenéis dudas porque por ejemplo ahora mismo cuando creamos este campo nos le metimos el autoincremento fijaos que en cierto modo está todo explicado vale tenemos esta tabla ahora vamos a lo importante Cómo puedo hacer para crear un Trigger venga
Speaker A
vamos a explicar cómo crear un un Trigger en la tabla usuarios cuando se está cambiando el email Cómo crearemos un Trigger secuencia create Trigger le tendríamos que dar un nombre al Trigger el Trigger pues nombre un poco el que
Speaker A
nos dé la gana aquí no existe tanto un convenio porque el Trigger sin más como es algo que lo vamos a asociar aparte hay gente que le he visto que le pone tg para nombrarlos Bueno ya sabéis tú un
Speaker A
poco A dónde que llegar vale nombre del Trigger el Trigger que le queremos dar Pues voy a poner tg email porque es un Trigger que yo voy a asociar al al email y ahora aquí tendría que acabar diciéndole vale Yo estoy creando un
Speaker A
Trigger Pero cuándo lo quiero crear antes o después de la ejecución Yo podría ahora decirle before o after podría acabar indicándole si yo lo quiero ejecutar antes o después y en qué acción Pues cuando el usuario esté haciendo un insert cuando el usuario
Speaker A
esté haciendo un update cuando el el usuario está haciendo un delete y después tendríamos que hacerle on y en qué tabla en la tabla users y cómo voy a refinar esto Pues mira le voy a decir cuándo quiero acabar lanzando esto pues
Speaker A
lo quiero hacer después es decir primero que actualice el email Entonces le voy a decir after Y cuándo cuando estoy insertando no no no cuando Estoy actualizando estoy acotando el Trigger Quiero un Trigger llamado tg email después de que se haya hecho un update
Speaker A
no antes y no cuando se hace un insert y no cuando se hace un delete Y dónde lo quiero aplicar pues lo quiero aplicar en esta tabla after update en la tabla users y para quién lo quiero aplicar
Speaker A
Pues para eso tengo una instrucción que es for each Row de esta manera le podría indicar que quiero que se ejecute en todas las filas vale Y ahora tendríamos que hacerle la propia instrucción desde un begin hasta un end este bloque
Speaker A
dejarme que esto lo limite así qué tendríamos que hacer ahora aquí Pues básicamente dentro del begining el end lo que tenemos que acabar situando es la lógica que queremos aplicar Entonces qué podría hacer Pues mira si el email que
Speaker A
yo quiero insertar es distinto del nuevo email qué podría hacer den esto al final estamos siguiendo una lógica un flujo como si estuviéramos casi programando no si tenemos esto qué haría Pues insertarlo en la nueva tabla pero claro
Speaker A
Cuál es el email antiguo Cuál es el email moderno nosotros podemos hacer referencias al Estado de los campos al valor de los campos si yo hago old pun email emil este será el valor del email viejo Y si hago nu email este será el
Speaker A
valor del nuevo email que nos acaban de actualizar entonces veis que tenemos un montón de referencias con que tengáis básicamente la estructura de crear Trigger antes o después y en qué situación para cada fila y después la propia instrucción Y qué quiero hacer
Speaker A
quiero insertar en la nueva tabla Pues yo vengo aquí y hago insert y qué voy a insertar insert into En qué tabla en la tabla email history y que quiero acabar insertando pues quiero acabar insertando el user ID el user ID y quiero acabar
Speaker A
insertando el email Cuáles son al final estos datos Cómo al final tenemos que acabar trabajando todos estos valores Pues mira vengo por aquí el email y los valores sin más sería values esto Esto es un insert si nos vamos a cuando
Speaker A
nosotros nos pusimos a hablar de hacer un insert right insert aquí tenemos como insertamos inser into la tabla y los values lo mismo que estamos haciendo aquí inser into la tabla los valores que queremos tocar y ahora le vamos a ir a
Speaker A
los values values y cuáles son los valores que quiero acabar insertando aquí pues el valor que quiero acabar insertando por ejemplo es el ID del usuario old o New nos da igual old user ID que este en realidad no ha cambiado y
Speaker A
lo que queremos acabar metiendo aquí es all email el email que teníamos anteriormente vale aquí lo tenemos y una vez acabamos esta condición en If vale de alguna forma acabaría cerrando así todo el flujo y en este en If después de
Speaker A
una ejec también la acabamos metiendo la acabamos metiendo Este puntico vale esta sería un poco la idea cuando nosotros nos ponemos a montar triggers o cualquier cosa Esto es una estructura que de alguna forma tenéis que tener en
Speaker A
mente para cualquier tipo de ejecución vale aquí veis que nos están apareciendo fallos y veremos ahora por no están apareciendo fallos por favor siempre siguiendo documentación y aunque tengáis conceptos generales la forma de repasarlo es de esta manera yo digo vale
Speaker A
en If parece que me está dando un fallo y me dice que lo tengo mal Y cómo me dice que lo tengo mal en realidad vale me vengo por aquí vemos que hasta parece que nos está dando aquí un [ __ ] y nos
Speaker A
dice ey parece que falta ese punto y coma los delimitadores al final lo único que está haciendo es guardando esta referencia por separado la lanzo se me crea el Trigger ahora vamos a actualizar la tabla users vengo por aquí me vengo a
Speaker A
la tabla users la refresco y ahora veis que ya aparece algo en el campo triggers okay Ya lo tenemos por aquí vale tenemos un Trigger un Trigger que hace una lógica pero esta lógica funciona no funciona decimos vale Yo ahora quiero
Speaker A
hacer un update Cómo hago un update vamos a tirar milla rápido vengo por aquí me lanzo un update un update de qué del campo email vale del campo email para el user ID qué usuario es el que yo
Speaker A
quiero acabar teniendo aquí en cuenta Pues venga miramos todos los usuarios Quiero actualizarle el email a eh bryce al user ID número uno pues vengo por aquí le meto el usuario número uno y el email nuevo que yo quiero meterle es
Speaker A
mouredev @gmail.com entonces imaginaos que yo ahora lanzo este update yo he lanzado este update si yo ahora me fuera a la a la tabla users el email de bry ya no puede ser mour bry mour @mor comom lo lanzo y es mouredev
Speaker A
@gmail.com Pero qué pasaría Ahora si consulto la tabla de email history Pues si consulta la tabla de email history veis lo que tengo por aquí de repente se ha insertado un nuevo campo que dice que el ID de usuario un uno de los emails
Speaker A
anteriores que tuvo fue bry moure @mor d.com veis la manera en la que se ha lanzado el Trigger automáticamente Cómo fuimos capaces de guardar la referencia al dato que teníamos anteriormente Okay así que bueno ahí tenemos una cosa más
Speaker A
tratada como pequeño concepto avanzado más cosas que nosotros podemos ver aquí dejarme que esto os lo deje todo por aquí referenciado vamos a venirnos por aquí creamos esta tabla creamos el Trigger que vemos por aquí le hicimos en
Speaker A
la lanzamiento del usuario y ahora es cuando aparece guardado el otro entonces triggers pasemos a un nuevo concepto avanzado vamos a pasar al concepto de views voy a venir por aquí y voy a crear un archivo 03 que sea views vi.su una
Speaker A
View para que nos entendamos muy rápido es una representación virtual de una o más tablas es decir es como una tabla pero que en realidad no es una tabla sino que es el resultado de una consulta Cómo se representaría en formato tabla
Speaker A
las vistas eh básicamente las utilizamos para simplificar consultas complejas ocultar complejidad para revisar datos de forma muy rápido al fin y al cabo para simplificar sobre todo y securizar entonces imaginaos ahora también vuelvo por aquí vistas a ver si yo me vengo
Speaker A
aquí a a todas mis tablas Ah mira igual que teníamos antes los triggers parece que hay algo que tengo aquí que son las views Entonces no tengo ninguna View creada Así que Vamos a ponernos el la lógica de cómo sería crear una vista
Speaker A
para crear una vista create View tendríamos que darle un nombre a la vista vamos a hacerlo con v- bajo y vamos a darle un nombre a la vista Imagínate que yo ahora hay una vista muy concreta en la que yo siempre quiero
Speaker A
mostrar los usuarios con la edad imagínate porque es una representación que yo lanzo muchas veces y que al fin y al cabo a mí me interesa tenerla almacenada porque lo consulto muchísimas ve veces Hay muchísimas veces en mi aplicación que yo me quiero traer
Speaker A
los datos de cómo se vería representado el usuario y el y su edad entonces esto es como también crear como esa tabla intermedia que nos guarda esos datos pero de manera ficticia No se crea una tabla pero sí que tiene la
Speaker A
representación de esa tabla Así que creo una vista V por ejemplo user age user ages por ejemplo y le tengo que decir a quién le voy a asociar esta vista pues vamos a seleccionar los campos name y el
Speaker A
campo ag el campo H de qué tabla from users esta tabla Imagínate que yo ahora tengo todo esto y Where la condición Mira aún lo vamos a hacer mejor age user aún mejor adult users es decir Quiero una vista donde yo lo que me gustaría es
Speaker A
representar nombre de usuario y la edad de solo los usuarios que son mayores de edad entonces yo vengo aquí H mayor o igual que 18 Imagínate que lo representamos así entonces ahora Yo vengo por aquí y lanzo esto y ya me dice
Speaker A
vale se ha creado la vista vamos a las vistas refrescamos la tabla ahora ya tengo una vista adult users cómo consultaría yo la vista pues tan fácil como hacer Select de lo que sea from el nombre de la vista cuál es el nombre de
Speaker A
la vista este ya está ahora si lanzo esta consulta qué tengo Oh sospechosamente tres usuarios bry Sara y control Vámonos a las tablas Vámonos a los usuarios vamos a ver que Carlos por ejemplo es menor de edad Miriam es menor
Speaker A
de edad pero en la vista no están entonces si yo ahora quisiera consultar rápidamente esos usuarios y su representación asociada por nombre y edad de los que son mayores de edad se estaría guardando en esta vista automáticamente resultado y así ya de
Speaker A
alguna forma a mí ya me está viniendo bien ya me está ayudando a que esa vista guarde la relación con los datos que yo quiero eso sería un poquito la idea vamos a hacer algo me voy a venir a la
Speaker A
tabla de usuarios que yo tenía por aquí y ahora Miriam que por ejemplo era menor le voy a poner 30 vale es decir le voy a cambiar la edad a Miriam ejecuto se guarda Miriam ya tiene 30 años voy a
Speaker A
volver a consultar los datos vemos lo que ha pasado de repente Miriam aparece aquí es donde De verdad está esa pequeña penalización esto nos pasa algo parecido que con los índices las vistas Al fin y al cabo se tienen que acabar regenerando
Speaker A
Así que en el momento que nosotros tocamos la tabla por la que se ve afectada la vista o de la que la vista está consultando datos la vista se tiene que regenerar Y eso al final está penalizando a la base de datos qué
Speaker A
tenemos que hacer Pues lo mismo un buen administrador de base de datos al final Tiene que sacar esas conclusiones de en qué momento merece la pena la vista o no merece la pena no podemos crear vistas si se consultan una vez al año pero si
Speaker A
todos los días están lanzando consultas concretas Y estos son los datos que nos queremos tratar seguramente es mucho más fácil consultar la vista que hacer una consulta que sea este selet que vemos aquí es mucho más óptimo consultar de la
Speaker A
vista si lanzamos cientos de veces esta consulta que lanzar siempre esta consulta okay Entonces pensar que hay ahí una pequeña penalización sobre todo de Cara a regenerar la vista y ya está y aún así también lo que nos permite y
Speaker A
esto es con lo que está relacionado el siguiente concepto avanzado que vamos a ver que es que muchas veces no nos Tendremos que ni que andar liando en ver cuál era la consulta porque esto estoy poniendo ejemplos s superfáciles pero
Speaker A
pensar que esto lo podríamos llevar sobre un comportamiento muy complejo sobre una query super looca Pues venga consulto la vista tengo los datos Y ya está y no tengo que andar muchas veces quedándome con cuál era todo ese proceso
Speaker A
que había que montar para acabar sacando esos datos vale Pero aún así el cometido de esto es que nosotros queremos consultar habitualmente esta vista no tiene sentido crear vistas si no se consultan habitualmente igual que no tiene sentido crear índices Si no los
Speaker A
consultamos habitualmente Así que dejarme guardar esto asociado a las vistas no hicimos una cosa Se me olvidó se me olvidó una cosa Se me olvidó una cosa no hemos visto Cómo eliminar un Trigger perdonarme que me lo salte pero
Speaker A
si quisiéramos eliminar un Trigger sería tan fácil como hacer Drop Trigger Vale y el nombre del Trigger sin más si consultamos el Trigger que habíamos creado antes era de Gmail no lo voy a ejecutar porque no lo quiero borrar
Speaker A
porque creo que queda bien ahí pero bueno que sepáis que esta es la manera de borrar un Trigger me he acordado porque ahora lo último que os iba a enseñar de las vistas era Cómo eliminar vistas vale Y ya nos podemos hacer una
Speaker A
idea que si yo hacía do Trigger y el nombre del Trigger si yo quiero cargarme una vista hago Drop viw y el hbre de la View y ya está y con esto sería suficiente para cargarme la vista Así
Speaker A
que os lo dejo también aquí para que no os olvidéis de ello siguiente concepto que quiero ver concepto de procedimiento almacenado Qué es un procedimiento almacenado alguien puede incluso hasta pensar que es como una vista Pero no veremos similitudes pero para nada Es lo
Speaker A
mismo voy a crear el nuevo fichero stored procedures lo que llamamos traducido procedimiento almacenado un procedimiento almacenado sin más no deja de ser una query que Nosotros acabamos como guardando en favoritos a ver si se acaba entendiendo esto Imagínate que hay
Speaker A
una query también que utilizamos mucho o una query que es compleja o una query que estoy cansado de estar montando para lanzar pues por ahí es cuando aparecen los procedimientos almacenados vamos a ver un par de Procedimientos almacenados
Speaker A
porque hay como un par de tipos digamos vamos a crear un procedimiento simple llevado al absurdo pero entenderlo que lo podríais acabar sustituyendo por lo que quisiéramos vamos a crear un procedimiento créate procedure Esta es la sentencia para crear el procedimiento
Speaker A
y le tendría que dar el nombre al procedimiento almacenado pues procedimiento almacenado que le voy a llamar esto sería una tontería no procedimiento all users le voy a llamar por qué Porque en este procedimiento almacenado as lo que yo voy a hacer es
Speaker A
consultar todos los usuarios es una tontería es una tontería por supuesto pero esto lo podríamos llevar a donde nosotros nos diera la gana vale from users y aquí le acabo metiendo Go y acabamos lanzando con el Go acabamos
Speaker A
creando el procedimiento almacenado vamos a ver un poco Hacia dónde nos va a llevar todo esto El As vemos que nos está dando un fallo y nos dice Uy qué está pasando el As funciona el As no funciona si yo ahora lo quiero lanzar
Speaker A
vemos que da un fallo qué está pasando y nos dice ey tienes un error y el As nos dice mira espera un paréntesis por aquí qué me quiere decir que yo tendría que meter esta consulta entre paréntesis No
Speaker A
lo sé no tiene pinta No qué pensáis que puede estar fallando por aquí pues bueno nos está indicando que algo no tenemos bien en el procedimiento almacenado Y esto qué quiere decir que igual tenemos que crear los delimitadores que eso es
Speaker A
algo que nos pasó antes que lo tenemos que meter entre un begining entre un end Ah mira Entonces es distinto tendría que yo hacer begining end y esto Ahora aquí Esto es lo que me acaba indicando cómo yo acabo lanzando el proceso Pues no lo
Speaker A
sé Ah mira y el Select tenemos que acabar metiendo Pues el punto y coma venimos le metemos el punto y coma el n necesita un punto y coma pues puede que lo necesite qué más cosas vale procedure tenemos los delimitadores creamos
Speaker A
delimitadores podemos crearlos venga pero aún así nos sigue diciendo esto falta el paréntesis Por qué Porque quizás nosotros cuando tenemos que acabar quedando el procedimiento en mysql no llega con el nombre vengo por aquí intentamos lanzar procedure por
Speaker A
aquí está creado venga vamos a actualizar vamos a refrescar y ahora veis que ya tengo un procedimiento por aquí creado p all users ya tengo un proceso ya tengo un procedimiento almacenado Y si yo lo quiero ejecutar Qué pasaría si yo lo quiero ejecutar
Speaker A
pues vamos a llamar exec para ejecutar este procedimiento almacenado y le voy a pasar el nombre del procedimiento almacenado Cuál es el nombre del procedimiento almacenado este y parece que llevaba esta parte vamos a hacer a quitar esta parte me la voy a guardar
Speaker A
aquí dice esto funciona no funciona vale para ejecutar el proceso almacenado parece que el exec no vale Pero si a mí me dijo la documentación genérica de sql que esto es lo que yo tengo que acabar lanzando Entonces qué nos va a pasar
Speaker A
dice Ah exec aquí dice col Ah bueno pues entonces igual exec que era algo que lloviera que era genérico o lo que fuera pues igual no me vale vamos a llamar a col y vamos a llamarlo incluso y los
Speaker A
paréntesis Ah mira acaba de lanzar mi procedimiento almacenado Ya está fijáis no es tan complicado Al fin y al cabo parece que era suficiente con simplemente poner call ya tenemos esta parte del procedimiento almacenado qué más cosas podemos hacer con los
Speaker A
procedimientos almacenados que esto si os fijáis en la documentación ya se coló antes en la documentación estaba hablando también de los parámetros mira aquí dice without params Pero va a haber una parte en la que nosotros también le
Speaker A
podamos meter parámetros que nosotros le vamos a poder acabar indicando cómo queremos hacer la consulta vamos a crear ahora otro procedimiento basado en este Pero ahora sí con parámetros vengo por aquí voy a crear otro nuevo procedimiento all users no le voy a
Speaker A
llamar Imagínate que yo lo que quiero consultar age users porque Quiero consultar usuarios por una edad básicamente algo así como que yo me viniera aquí y le metiera Where ag igual a lo que sea decir que yo le quiero
Speaker A
acabar metiendo un parámetro Por qué Porque ahora ya voy a tener la consulta montada y en el procedimiento almacenado lo único que tengo que hacer es Mira a mí me da igual cuá fuera cuál sea la consulta yo solo te voy a pasar el
Speaker A
parámetro que quiero acabar consultando y veis lo que me dice aquí que le puedo meter el in el nombre de lo que yo quiero acabar parametrizando y el tipo de dato con lo cual vengo in le digo h y
Speaker A
le digo que esto era un valor entero y esto ya nos va a servir para al final pasárselo aquí nosotros vamos a tener acceso al fin y al cabo al campo parametrizable con lo cual cuando yo ahora primero voy a crear este
Speaker A
procedimiento almacenado que se crea correctamente cuando yo ahora haga el Call pero en este caso de H users Ahora aquí entre paréntesis Imagínate que yo Quiero consultar los usuarios que tienen edad 30 años pues esto podría ser algo
Speaker A
parecido a una función digo Uy esto se lanza Y qué ha pasado veis como que empieza a sacar todos los datos por qué lo de siempre vengo por aquí he creado el filtro una vez ya tengo esta parte
Speaker A
Cómo tengo que acabar haciendo la llamada tengo el Call pero en concreto tengo esta llamada qué ha pasado aquí Por qué si yo ahora vengo por aquí from Select from user Where h = a H Qué estamos haciendo mal cuando nos nosotros
Speaker A
hacíamos los we las labores de lectura todo esto que veíamos por aquí aquí hemos fallado en algo qué creéis que hemos fallado para eso vamos a ver cómo nos cargamos el procedimiento porque hemos hecho algo mal y os voy a contar
Speaker A
ahora mismo qué es lo que hemos hecho mal vamos a hacerle un Drop como hacíamos antes igual que teníamos por aquí las vistas no sé qué Pues mira me quiero cargar este procedimiento almacenado tengo que pasarle procedures si os fijáis en las vistas teníamos el
Speaker A
view en el Trigger teníamos el Trigger y yo estaba estaba haciendo el Drop Ah vale estábamos especificando le tenemos que indicar siempre Drop Qué tipo es y el nombre algo muy normal vamos a volver a crear el procedimiento y qué podemos
Speaker A
tener mal voy a ponerle Ahora aquí otro nombre h filter o H param y lo voy a igualar a este H param y ahora lo voy a lanzar esto se lanza vengo por aquí vamos ahora a hacer la llamada del
Speaker A
procedimiento almacenado lo que teníamos antes el Call con el nombre del procedimiento almacenado y con lo que yo le quería pasar antes por aquí por el medio voy aquí lo lanzo Pero qué ha cambiado le he cambiado solo el nombre
Speaker A
al parámetro por qué ahora sí que el procedimiento almacenado funciona bien y me filtra solo la gente de 30 Y antes no pues bueno básicamente fijaos y no cometais ese error aquí lo tenéis Dónde está mi error H era el nombre del
Speaker A
parámetro pero H también es el nombre del propio atributo del propio campo y lo que estoy igualando aquí es H = H el propio H que yo estoy comparando no estoy igualando este H de aquí arriba por eso tenemos que darle siempre un
Speaker A
nombre distinto H param y yo ahora cuando le paso este ya lo estoy igualando al que le estoy pasando en cambio este H que tenía yo antes era justo el propio campo H que yo intentaba Buscar por eso el campo H de una fila
Speaker A
Siempre es igual a su propio campo age por eso me traí a todos fijaos qué error que podría ser un poco así raro Al fin y al cabo nos acabamos dando cuenta y por supuesto igual que podemos pasarle un
Speaker A
parámetro le podemos pasar varios parámetros procedimientos almacenados otro conocimiento avanzado del que os quería hablar hoy ahora vamos a hablar a nivel teórico de otros dos conceptos que quiero que lo tengáis en cuenta el primer concepto es el de transacción
Speaker A
vale Esto es algo que solo lo voy a nombrar pero que por favor sepáis que existe este concepto Qué es una transacción la transacción es un concepto eh fundamental en base de datos vale Y al final en sistemas que lo que
Speaker A
necesitan es una consistencia que que sean fiables que las operaciones que nosotros le estamos lanzando que no la acabemos liando parda con ellas vale Qué es una transacción una transacción es algo que se está ejecutando en bloque vale Y aseguran que lo que nosotros
Speaker A
queremos ejecutar solo se ejecute en el caso de que nosotros consideremos que se ha hecho bien esa ejecución esto Qué significa que nosotros en sql podemos indicarle Iniciar una transacción lanzar toda la ejecución que nosotros querramos después acabar revisando si lo que
Speaker A
nosotros hemos hecho es está bien o mal por qué Porque igual hemos hecho una actualización de un campo por algo que nosotros no queremos permitir de ninguna forma Imagínate que tenemos una base de datos para un banco y que de repente yo
Speaker A
Estoy actualizando el saldo de una cuenta a negativo y yo en esa cuenta por la lógica de negocio de esa cuenta nunca puede tener dinero negativo y eso es algo que yo por ejemplo no tengo controlado yo le podría decir que ya el
Speaker A
campo solo aceptara números n números positivos o lo que fuera pero imagínate que permite números negativos pero que ahora justo Yo lo que quiero comprobar es una transacción que ni de broma se vaya a meter un número negativo pues
Speaker A
lanzo la actualización y puedo acabar comprobando si el campo ese ha acabado teniendo por ejemplo un número negativo con lo cual para mí eso sería una transacción no válida Y qué podría hacer yo con eso podría hacer lo que se llama
Speaker A
un rollback es decir volver o devolver la base de datos a antes de que se ejecutara esa transacción por el contrario realizo los cambios en la base de datos Considero que son correctos pues lo que yo podría hacer es decir
Speaker A
transacción correcta comit Así que esto simplemente os lo voy a dejar por aquí un poco nombrado este nuevo fichero 05 le voy a llamar transacciones vengo por aquí y básicamente una transacción sería algo así como algo que yo tengo que
Speaker A
acabar etiquetando como un Start transaction aquí empezaríamos la transacción en el momento que nosotros la quisiéramos arrancar esa transacción pero nosotros tendríamos que acabar declarando Cuál es el flujo de toda esa transacción Lo importante es que nosotros definimos una transacción
Speaker A
ejecutamos y después nosotros tenemos estos dos conceptos que es el concepto de comit o el concepto de rollback si queréis saber un poquito más por favor aquí Os pido que leáis porque ya digo es un concepto un poquito más avanzado así
Speaker A
que sin más Esto es lo único no tenía pantalla porque no había básicamente nada que Mostrar simplemente os estoy dejando puestos los datos principales que tenéis que tener en cuenta si queréis saber más sobre este tema que es
Speaker A
iniciar transacciones comite o rollback para acabar deshaciendo la transacción bueno para no finalizar la transacción para hacer rollback y y mandar la base de datos al Estado de antes sin más creo que esto es un concepto pues del que se
Speaker A
puede hablar mucho y que no tendría mucho sentido ahora también ponernos a desarrollarlo pero por favor tenerlo presente es otro concepto muy muy importante otro concepto del que os quiero hablar también ahora sí también a nivel teórico es el concepto de
Speaker A
concurrencia Qué pasa cuando varios usuarios intentan hacer lo mismo en una base de datos Qué pasaría en ese caso pues bueno las bases de datos y la gran mayoría de los motores de base de datos permiten configurar diferentes reglas de
Speaker A
concurrencia las bases de datos lo que suele hacer es que Oye si yo estoy escribiendo un dato Eh Pues voy a bloquear ese campo dos usuarios no van poder actualizar un mismo dato a la vez seguro que hay un usuario que ha entrado
Speaker A
antes y entonces en ese momento se bloquea la tabla o se bloquea la fila y se escribe se modifica la fila y cuando se acaba esa transacción interna de la propia base de datos el otro usuario acaba ejecutando lo que tenía las bases
Speaker A
de datos son inteligentes si lo hicieran a la vez al final lo que podríamos acabar teniendo son Incluso el concepto que se llama interbloqueo que es algo que también quiero que os suene que lo que va a hacer es que hostias estoy
Speaker A
intentando hacer dos cosas a la vez eh No sé muy bien qué hacer Pues el interbloqueo al final lo que va a acabar haciendo es el propio motor de base de datos va a acabar haciendo un deadlock el de lock es interbloqueo y tiene el
Speaker A
mecanismo para resolver los deadlocks que generalmente es mira como se han intentado hacer dos cosas en una misma fila y fueron concurrentes puras y y y y no sé muy bien Qué ha pasado Aquí voy a acabar deshaciendo la transacción de una
Speaker A
de ellas porque los dos creo que podría acabar creando una inconsistencia entonces simplemente deshago una transacción y que solo haya funcionado una de ellas pero para eso hay muchos mecanismos Por qué tampoco esto os lo quiero enseñar a grano fino Porque estos
Speaker A
mecanismos de concurrencia es algo ya mucho más propio del propio administrador de la base de datos de cómo al final quiere que la base de datos funcione cómo quiere que eh exista esa concurrencia entre versiones o cómo eh podamos hacer lo que se llaman esas
Speaker A
lecturas sucias que yo puedo estar leyendo una base de datos Aunque por el camino se esté modificando o lo que sea o por otro lado hacer también esos bloqueos o esos aislamiento de transacciones Eso ya depende mucho del
Speaker A
propio motor de base de datos como funcione pero que sepáis que las bases de datos permiten configurar también ese tipo de ajustes para no acabar liándola Okay esa es un poquito es un poquito la idea Este era el otro concepto el
Speaker A
concepto de aparte de las transacciones el concepto de la concurrencia en bases de [Música] datos Ahora quiero pasar a algo que creo que puede ser más interesante que es Y si yo Quiero consultar una base de datos desde código Qué pasa si yo por ejemplo
Speaker A
que uso python Ahora quiero acabar consultando una base de datos qué tendría que acabar haciendo pues vamos a ver un pequeño ejemplo que ya es la parte de consulta vale la parte de lo que se llaman conectores Así que vamos a
Speaker A
volver por aquí voy a crear otro fichero 06 y le voy a llamar connectors y en este caso va a ser un fichero python por qué porque os voy Enseñar cómo hacerlo con python de verdad esto lo puede hacer
Speaker A
absolutamente cualquier lenguaje de programación que nadie piense que esto es algo propio de python no sin más lo que suelen hacer todos los proveedores de motores de base de datos es dar las facilidades para que tú puedas atacar la
Speaker A
base de datos desde un lenguaje de programación que yo estoy montando un backend con python con javascript con Java con php con lo que sea pues Qué pasa si yo me quiero Conectar a la base de datos y traerme los datos Porque
Speaker A
igual los quiero devolver al frontend para acabar pintándose vale vamos a ver un ejemplo en python lo importante de esto es que tenéis que tener en mente que existe el concepto de conector y que en el momento que vosotros tenéis un
Speaker A
conector instalado por ejemplo fijaos mira my sequel no sé qué veo aquí como diferentes conectores os voy a enseñar una cosa por el camino y es que nosotros en su día si os vais a retos deprogram punc com y a los ejercicios de 2023 mira
Speaker A
veis que hay un ejercicio uno de los retos que resolvemos todos los los lunes que se llama la base de datos aquí lo que os propuse es que me teníais que acabar montando vosotros mismos la conexión o una base de datos que yo
Speaker A
había creado y por si alguien tiene dudas si os vais a este reto que es el reto número 23 de 2023 el reto que se llama la base de datos si no lo buscáis por el nombre veis que ya tenemos
Speaker A
ejemplos en la comunidad de todos estos lenguajes si nos vamos al ejemplo que yo propuse por ejemplo a python y a mouredev que estará por aquí mi solución veis esto que veis por aquí base import my sequel connector una serie de cosas
Speaker A
Me lo voy a copiar porque os lo voy a explicar porque ya digo no se trata de ver el código porque esto depende mucho de Cuál es el lenguaje que queréis acabar utilizando pero fijaos yo he utilizado una librería que es mysql
Speaker A
connector es el conector básicamente es una librería que ya me va a permitir hacer cosas sobre un mysql como tenemos en este caso vemos que aquí teníamos diferentes datos veis datos datos usuario database contraseña Esto me lo voy a borrar todo porque lo importante
Speaker A
es lo que os voy a enseñar aquí tenemos que empezar a meter los datos y cuáles son los datos de nuestra base de datos recordáis yo tengo aquí mi base de datos que veíamos Hello my sequel si yo edito
Speaker A
la conexión aquí teníamos como diferentes datos el Host pues parece que estaba en mi propio local Host el username parece que era esto que veíamos aquí username este de aquí contraseña admin 1 2 3 4 si no me equivoco es la la
Speaker A
que acabábamos creando el puerto Aquí lo tengo también y la base de datos Hello my sequel para conectarme ya veis que son los mismos datos que nosotros de alguna forma vimos desde el principio tenemos la configuración una vez tenemos
Speaker A
la configuración ya vuelvo a repetir dependiendo del lenguaje Tendremos que pasársela al conector con lo cual estableceremos la conexión y nos situaremos en la base de datos una vez ya tenemos la base de datos tenemos la posibilidad de ejecutar una query Y de
Speaker A
esa query obtener los datos vale Cuál es la query que yo quiero ejecutar pues vamos a ejecutar una query muy simple sin más de nuestra base de datos Select asterisco from users y ahora voy a lanzar esto por aquí y vamos a ver si
Speaker A
pasa algo o no pasa algo y me dice hostias acceso denegado y me dice Uy acceso denegado para rot para local Host qué está pasando tenemos algún problema aquí nos hemos comido alguna cosa eh hemos fallado en alguna cosa Pues
Speaker A
básicamente hemos fallado la contraseña rot 1 2 3 4 lanzo esto ala jar que limpie qué tengo aquí si son exactamente los datos de la base de datos si son los datos de cada una de las filas veis lo
Speaker A
fácil que resulta Y al igual que he puesto esta query podríamos Haber puesto cualquier otra query ahora también está el punto de De qué manera limitamos el acceso de un usuario a la base de datos etcétera Pero como esta la tenemos
Speaker A
básicamente toda abierta ya veis lo fácil que ha sido desde un lenguaje de programación realizar la conexión si nos fuéramos a los otros lenguajes que en su día resolvió la comunidad fíjate Java por ejemplo Pues mira es otro código
Speaker A
ligeramente diferente Pero que al final no deja de ser un conector sql con un Driver que tenemos los datos de la de la base de datos le pasamos la seret y al final los acabamos imprimiendo y cerrando la conexión ya está es decir es
Speaker A
una dinámica es unos pasos muy comunes independientemente de que sea un lenguaje o otro y por eso teniendo en cuenta esta parte aquí es donde quiero entrar ya en otro concepto más que es que muy bien Nosotros ahora hemos hecho
Speaker A
una conexión de base de datos desde código Pero alguien alguna vez ha escuchado el concepto sql injection sobre todo si tenéis ahí alguna parte de seguridad alguna parte de hacking diría yo alguien le suena ese concepto de sql
Speaker A
injection esto simplemente es una de las formas más comunes en las que un atacante se puede acabar haciendo con datos de nuestra base de datos vamos a llevarlo todo a un entorno un poco más seguro Imagínate que yo ahora todo es
Speaker A
Esto me lo llevo a una función Def y que yo lo que quiero acabar obteniendo es un usuario hago get user le voy a acabar pasando el usuario Okay imagínate o print user sin más vale Yo tengo esta
Speaker A
función vengo por aquí y imaginaos que esto está expuesto en un Api que Alguien podría acabar Llamando a print user y yo como soy muy listo le he dicho no no no aquí solo se le puede acabar pasando el
Speaker A
usuario Así que le voy a pasar el usuario brise con lo cual yo Podría tener aquí una query que fuera Select asterisco from users Where user o we name igual y ahora Aquí le voy a concatenar el usuario Vale y ahora vamos
Speaker A
a lanzar mi programa y me dice Uy tienes un error en la sintaxis por qué porque tenemos from users weare name lo vuelvo a lanzar qué me da aquí Uy Parece que la columna no se encuentra igual a users
Speaker A
parece que está dando ahí algún problema Qué pasa esto lo tenemos mal tenemos bien Qué puede estar pasando por aquí tenemos tu usuario dice un colum bry work Close Qué estamos poniendo Select asterisco fromont users Where name igual
Speaker A
al usuario esta query está bien está mal dice faltan comillas no faltan comillas Ah bueno podrían faltar comillas quién sabe no le podríamos le podríamos meter comillas o quizás no Bueno en realidad venga comilla y más comilla vale Ya
Speaker A
tengo esto incluso después aquí al final pues le podría poner el punto y coma perfecto no podríamos hacer Esto vale Voy a lanzarlo Ah era esto muy bien ya tengo mi usuario aquí lo veis bry con lo cual dices Bueno qué es eso de esquel
Speaker A
injection quién me va a hacer algo malo en mi base de datos cuando yo ya lo que le estoy haciendo es una función donde solo le pueden pasar el nombre y ya está Vale pero imaginaos que alguien es muy
Speaker A
listo y ahora aquí en vez de pasar esto lo voy a comentar alguien viene por aquí y dice porque sabe que es posible que exista un campo para edad y digo Select users from user y le digo que lo que yo
Speaker A
le quiero pasar aquí es esto o algo extra le podría pasar algo extra alguien se le ocurre una forma de cómo podríamos hacer algo más yo imagínate que ahora vengo por aquí y le paso esto vacío y le
Speaker A
digo vale hay que pasarle un usuario Entonces yo le digo que genial A mí me vale todo esto le voy a pasar un usuario pero le voy a cerrar esta coma y aparte le voy a pasar el punto y coma y ahora
Speaker A
voy a lanzar aquí otra query qué query Pues imagínate que yo quiero hacer Pues un update este update que teníamos por aquí vengo por aquí le meto un update y le digo que de users le quiero hacer set
Speaker A
age a 21 brce qué edad tenía vamos por aquí lo vimos antes no teníamos por aquí a brce dónde está vamos a conectarnos vamos a lanzar la tabla de usuarios y bryce tenía 36 años y yo ahora le voy a
Speaker A
decir que le quiero meter 15 años esto qué qué estoy haciendo aquí porque esto así visto Así de buenas a primeras parece una locura Pero qué estamos haciendo aquí fijaos lo que yo estoy haciendo aquí o incluso dejarme que le
Speaker A
haga un print a la query que va a acabar resultante para que os os acabéis dando cuenta de lo que voy a hacer yo aquí lanzo Esto vale y vemos Que en principio tenemos Select Word name y se ha lanzado
Speaker A
un update de un usuario qué tenemos aquí el punto y coma lo veis Select por aquí no pasa nada vale update user set age edad 15 Where user igual a un pero vemos como esta comilla por aquí Ah claro es
Speaker A
que esta comilla seguramente hizo fallar o algo así Y si yo le digo que lo que está después de eso es un comentario con dos guiones vamos a volver lanzar Esto vale Ahora hay como un comentario que ya
Speaker A
sabéis que comentamos con dos guiones y lo que hay después de esto Pues teóricamente no le debería afectar lo que tenemos que entender es que yo Podría empezar a pasarle por aquí combinaciones bastante peligrosas como yo le estoy permitiendo concatenar un
Speaker A
Stream a lo que tenemos aquí sin más yo Podría empezar a hacerle muchas cosas quien le manda esto le podría estar mandando un Drop a la tabla y podría estar cargándose toda la tabla directamente Vale entonces por favor
Speaker A
esto son cosas que tenemos que tener muy en cuenta y como que yo venga aquí y que el usuario sea capaz de ejecutar esta query le estamos dando totalmente libertad a que el usuario ejecute lo que le de la gana Así que vengo por aquí
Speaker A
Cuál sería la forma de resolverlo correctamente porque por supuesto hay una forma correcta de hacer todo esto y es que nosotros Al fin y al cabo podemos acabar en cierto modo securizado todos estos datos vale nosotros Cuando hacemos
Speaker A
el execute por aquí en vez de pasar los datos directamente ejecutando la query nosotros el execute puede acabar llevando estos diferentes parámetros que nosotros le pasamos para acabar realizando la ejecución esto depende muchísimo del conector que vosotros estéis usando
Speaker A
pero la manera más normal o la manera más habitual de nosotros poder hacer esto es que yo si ahora me vengo por aquí le quito todo esto y esta query que yo antes parece como que estaba limitando de una forma muy concreta o lo
Speaker A
que fuera yo lo único que le acabo indicando es mira aquí lo que vas a acabar recibiendo es un parámetro es un parámetro de tipo String pero ese parámetro de tipo String ahora lo que voy a hacer es pas pasártelo desde el
Speaker A
propio secute y así de esta forma Yo me puedo acabar asegurando que esto habría que leer la documentación esto Habría que ver cómo hace la ejecución cada uno de los conectores que tenéis pero básicamente lo que tenéis que hacer es
Speaker A
realizar sustituciones dentro de la query y Buscar el mecanismo que tenga el conector para que esto que le estáis pasando por aquí este parámetro lo trate verdaderamente como un parámetro y no lo trate como una cadena de de texto que se
Speaker A
lo va a concatenar a toda la query Y yo que sé qué puede pasar ahí vale entonces yo puedo venir aquí ahora esto lo ejecutarías y podríamos tener problemas si decíamos Ey name user no está definido Por qué Porque yo ahora tengo
Speaker A
esto de aquí sql connector y por ejemplo no me está diciendo Cómo Hay que hacerlo qué tendríamos que hacer con nuestro conector me busco el conector que es y Busco sql injection porque seguro que alguien va a tener un ejemplo para
Speaker A
acabar ejecutando toda esta parte y vemos esto y nos dice Ah vale tengo ejecutar tengo la query y aparte le podría pasar pues parece que como una tupla dice Ah vale una tupla de un único elemento Y cómo le paso yo una tupla de
Speaker A
un único elemento me dice que se va a pasar con el user y así con un único elemento Esto será suficiente Pues no lo sé Ah sí Ahora sí fijaos Ahora ya me lo ha traído bien y ahora todo lo que yo le
Speaker A
quisiera insertar por el medio si yo ahora me vuelvo a mi ataque malicioso me vuelvo aquí a cóm Yo me quería acabar cargando la base de datos vengo por aquí esta parte vemos lo que hay no en realidad esta ejecución no se va a
Speaker A
llevar a cabo porque siempre que nosotros hacemos el execute de esta forma y tenemos una sustitución esta sustitución va a tratarlo como un parámetro y esto se va a dar cuenta a la propia base de datos que esto no es un
Speaker A
parámetro Okay que esto sin más es una cadena de texto que está haciendo referencia a lo que sea pero que no es un parámetro así que por favor mucho mucho mucho mucho cuidado con la técnica de la inyección sql Y cuando os pongáis
Speaker A
a utilizar desde código que sepáis Cuál es la forma correcta de hacerlo y cuál es la forma [Música] incorrecta quiero hacer un repaso por diferentes herramientas que tenemos para visualizar nuestra base de datos si nosotros Nos vamos aquí al curso hemos
Speaker A
hecho Prácticamente todo el curso con my sequel workbench vale esto es una herramienta oficial de la propia gente de mysql que nos sirve para visualizar la base de datos para trabajar con ella es donde estábamos lanzando las queries
Speaker A
es dond un poco interactuamos con la base de datos aquí lo tenemos no Este era el esquema que teníamos donde estuvimos creando las tablas metiéndole datos haciendo relaciones bla bla bla todo lo que estuvimos haciendo en las clases anteriores pero por supuesto yo
Speaker A
os puse esta herramienta por el hecho de que es como la oficial para mysql que es gratuita que todo el mundo la puede descargar porque corre en cualquier sistema operativo pero aquí también suele surgir la siguiente duda Pero bry
Speaker A
y si yo no quiero usar esa Y si mi empresa están usando la otra de verdad creéis que eso Es verdaderamente algo que os va a dificultar las cosas para nada Por eso quiero hacer un pequeño repaso por algunas de las herramientas
Speaker A
Por alguno de los clientes gráficos que nosotros podemos utilizar y que soporta maql deb visualizer por aquí por si queréis probar alguna por si lo queréis Descargar la gran mayoría son gratuitas o lo que suelen tener es una parte
Speaker A
gratuito y una parte de pago pero que para proyectos más personales suelen ser más que suficientes por si de verdad veis esto y de ostras me gusta más Star feature o Mira esto se ve mucho más bonito o creo que puedo hacer más cosas
Speaker A
con ella nos da Exactamente igual sería tan fácil como que yo vengo por aquí me lo descargo y meterle los datos y echar a correr esto es como el editor de código Por qué utilizo el editor de código a en vez del B pues seguramente
Speaker A
por lo cómodo que meula a mí la gran mayoría suelen tener soporte tanto para Mac como para Windows y también en algunos casos para para Linux me bajo una cualquiera imagínate deb visualizer le puedo dar aquí a descargar ya veis
Speaker A
para Windows para Linux para Mac Pues venga voy a bajar para Apple silicon que tengo por aquí y vamos a ver qué implicaría que yo ahora me baje otra herramienta que no es por ejemplo my squel warch que es con lo que estuvimos
Speaker A
trabajando si de verdad Esto me hace volver a aprender todo desde el principio si esto significa que el curso está limitado o qué vamos a ver que ahora os apetece utilizado otra cosa deb visualizer vengo por aquí y lo arrastro
Speaker A
ya está bueno esto porque lo estoy instalando en Mac en Windows siguiente siguiente lo que os dé la gana como tengáis que instalarlo me lo voy a abrir por aquí y vamos a ver sin yo saber nada Qué pasaría si yo ahora quiero utilizar
Speaker A
este gestor en vez de My squel workbench entro por aquí vamos a la Home de workbench tengo la posibilidad de crear unas nuevas conexiones en las conexiones que ya tengo pues existe la posibilidad de revisar los datos para que lo veamos
Speaker A
vale me voy a ir aquí a la nueva herramienta que yo me he bajado y que os prometo que prácticamente son todos iguales y que yo os he dicho cinco seis pero si ahora os ponéis a pensar o gente
Speaker A
que ya haya trabajado anteriormente con esto me podéis decir otros 20 más y yo aquí no voy a decir que es mejor este que es mejor el otro que es mejor cada persona esto es como los lenguajes de
Speaker A
programación esto es como los ides como los frameworks habrá eh de todo y a cada persona le irá mejor uno u otro vamos a ver esto crear conexión a base de datos pues seguramente Esto es lo que tenemos
Speaker A
que hacer si yo me me Quiero crear si yo me quiero Conectar a a una base de datos dice mira creo una nueva conexión que incluso Tenemos aquí pues información para ver la guía lo que sea eh instalar
Speaker A
una base de datos customizar la apariencia que vemos por aquí pues Bueno mira me lo voy a poner en modo oscuro ya está da igual que que al final pueden ser ligeras variaciones pero no necesariamente algo que nos implique
Speaker A
reaprender cosas Mira le di a crear una nueva conexión veis todas las bases de datos que soporta lo estáis viendo aquí una no la gran mayoría si yo pongo mysql vemos aquí mysql 8 mysql 5 no sé qué si
Speaker A
no tenéis ni idea de En qué versión está corriendo o lo que sea siempre fijaros en cuando instalamos el servidor en la primera clase cuál es si me vengo por aquí la versión de My sequel y yo digo
Speaker A
vale esto es un my sequel Eh La versión 8 Pues venga selecciono my sequel 8 y ahora me voy a venir por aquí y vamos un poco a leer qué pasaría con todo esto le voy a dar un nombre test por ejemplo a
Speaker A
esta conexión o Cómo se lo dimos si quisiéramos copiar exactamente aquí pues mira Hello my sequel vale le meto el nombre notas si le Quisiera dar notas aquí que detectara que es mysql cuál es el servidor Dónde está si queréis el
Speaker A
hostname nos vamos por aquí y digo Mira yo voy a poner directamente la IP porque es lo que me decía que configurara el puerto el 33000 el 3306 el 3306 que es el de por defecto la base de datos Pues
Speaker A
yo le puedo decir que el esquema al que me Quiero conectar es este el hellow mys sql eh database user ID Root y la password que era Root 1 2 3 4 si no recuerdo mal listo estoy por aquí botón
Speaker A
conectar o le puedo hacer pin al servidor para que me diga si los datos son correctos y me dic vale parece que se ha verificado que el puerto es accesible no sé qué no sé cuánto pues Vale ahora le voy a dar a conectar a ver
Speaker A
si conecta ha conectado lo veis aquí no ya tengo el acceso a la base de datos Vamos a entrar en database encontramos el esquema con el que nosotros estuvimos trabajando sí Hello my Y si nos vamos a tabla que tenemos obviamente las tablas
Speaker A
veis que esto cambie mucho eh prácticamente es lo mismo que yo ahora me vengo a cualquier tabla puedo seleccionarla puedo ver la Data en cada una de las tablas quizás la tabla de users es la que más teníamos aquí lo
Speaker A
veis información de la tabla las columnas que si quisiéramos editar alguna información de las columnas los índices la primar Key no sé qué más de lo mismo aquí tenemos absolutamente todo el ddl los triggers la propia navegación bueno incluso aquí cómo está relacionada
Speaker A
lo vemos en un esquema cosas que en algún caso podemos tener cosas que en otro caso pues podemos Eh no tener qué queremos lanzar comandos Aquí está bueno pues podemos lanzar comandos vengo por aquí hago Select asterisco prom users
Speaker A
esta era una de las tablas de datos que teníamos lanzo la consulta resultado de la consulta Ya está no hay más lo dicho y si ahora nos pusiéramos a descargar otros clientes gráficos nos íbamos a acabar encontrando prácticamente lo
Speaker A
mismo como la herramienta sí eh cambia que te gusta más ahora esta que Word bench que workbench igual vemos así más clásico igual ya nos gusta solo el look and feld de la app o encontramos que justo Una de las Apps tiene una feature
Speaker A
que nos llama la atención pues ya está No creo que nos importe cambiar eso así que tema diferentes clientes de bases de datos para conectarnos etcétera yo creo que tema zanjador un problema que queráis probar otro nuevo o que la empresa a la que
Speaker A
lleguéis o lo que sea o el curso que estáis haciendo que utiliza base de datos de repente utilice otro otro editor Así que e descargaros ese problema porque no hay [Música] ninguno siguiente cosa quiero desmentir también la creencia de brce es que como
Speaker A
hemos aprendido mysql esto significa que si ahora llego una empresa y me piden posg sql María db tv2 sql server lo que sea yo no voy a saber no me ha servido no me ha servido porque claro Yo no
Speaker A
podemos ser así Y esto también es uno de los males del programador Junior es que tenemos que aprender a obtener bases de conocimiento y con esas bases de conocimiento nosotros ser capaces de hacer el resto de nada vale Y nadie
Speaker A
quiere un programador que lo único que sepa hacer es programar lo que ya ha programado anteriormente no Al fin y al cabo nosotros tenemos que salir de esa zona de seguridad y si tú has aprendido a hacer una aplicación Imagínate que se
Speaker A
trae la pokeapi y pinta Pokémon ya no sabrías hacer lo mismo si te tienes que Conectar a una base de datos que lo que hace es pintar películas si no eres capaz de hacer esto es que aún te queda
Speaker A
estudio y aún te queda práctica entonces Nosotros hemos aprendido los fundamentos de sql lo repito por no sé centésima vez en el curso sql es un estándar es un estándar regulado y después están diferentes empresas que lo acomodan a
Speaker A
sus necesidades para potenciar diferentes aspectos de sus motores de base de datos así que ya que pogre es una de las bases de datos que más está de moda que más se pide las empresas que más escucháis hablar y como My sequel
Speaker A
Lleva más años decís no no no yo ahora Quiero saber lo moderno lo que se pide no sé qué Vale pues Ahora nos vamos a poner en la situación de que bryce no tiene ni idea de pogre y de repente
Speaker A
aparece un proyecto y dicen tú has hecho el curso de bry de sql sé que era con my sequel pero en nuestro proyecto trabajamos con posg y bry se va a poner aquí a ver si con sus conocimientos y
Speaker A
vosotros que habéis hecho el curso o que lo estáis haciendo podéis también juzgarme a ver o podéis juzgar a grandes rasgos si de verdad con todo lo que hemos visto podemos meternos en otros motores de base de datos que al final
Speaker A
sean sql si nos vamos a la primera clase pues hacíamos ahí la parte de instalación que si my sequel que si no sé qué ahora me dicen que es pogre pues yo me voy a pogre me voy a la página web
Speaker A
de pogre y digo vale Yo no tengo ni idea Pero esto es una base de datos Al fin y al cabo yo la voy a tener que acabar instalando en mi máquina y Tendré que ver si de verdad esto de crear tablas o
Speaker A
hacer Select o yo que sé es muy distinto Así que vamos a intentar sacar nuestras conclusiones Yo vengo por aquí y mira es que ya lo primero que voy a ver es download y quien dice Este ejemplo lo
Speaker A
diría con cualquier otro tipo de base de datos que a la cara me dice Ah vale tiene soporte para todos Yo necesariamente ahora mismo no sé ni si posg es mejor para a o para B con respecto a mysql esto ya un poco forma
Speaker A
parte de lo que querrás estudiar cada tipo de base de datos y que entendáis bien por qué os tenéis que ir por una base de datos o por qué elegir otra después si queréis os comento por encima en qué cosas eh suele ser mejor pogre y
Speaker A
en qué cosa suele ser mejor mejor mysql aunque todo eso como siempre es muy discutible Pero imaginemos eso Ya está Tú vas con unos conocimientos básicos de sql con unos conocimientos básicos en concreto de mysql Y ahora te dicen que
Speaker A
vas a trabajar con pogre y tú te echas a llorar porque eso no lo has visto en el curso Vale pues vamos a ver lo tengo que descargar yo tengo Mac vengo por aquí y me dice tienes que bajar el instalador
Speaker A
será la forma de instalar la base de datos de pogre en concreto en nuestra máquina igual que lo hicimos con mysql en su momento pues para Linux para macos para Windows pues yo me lo bajo para macos me viene por aquí pues mira A la
Speaker A
web donde tenemos que descargarlo y aquí en principio se empezaría a descargar una vez ya lo tengo descargado un ejecutable abrimos el ejecutable esto por supuesto por favor yo lo estoy haciendo rápido pero si queréis aprender sobre una base de datos sobre lo que sea
Speaker A
os venís a la documentación empezáis a leer empezáis a revisar Oye estudiarlo de manera seria no pero vamos a lo mismo que ahora lo que queréis hacer es postgre pues bueno me bajé el instalador Aquí tengo que acabar poniendo mi
Speaker A
contraseña administrador lo que sea vale a ver si esto me acaba arrancando un instalador o qué Y a ver si esto es tan distinto si yo al final lo comparo con mysql Vale tengo aquí un instalador Setup next vale mira me dice que aquí
Speaker A
puedo decidir instalar diferentes cosas Qué es cada una de las cosas Si las podríamos modificar bueno el server de pogre esto seguramente es lo que va a ser capaz de levantar y alojar nuestra base de datos en local aquí tenemos
Speaker A
admin admin ya dice es una interfaz gráfica recordáis que teníamos sql workbench para trabajar para trabajar de forma gráfica con la base de datos con mysql la gente de pogre también tiene su propio workbench que se llama pg admin
Speaker A
un Star builder las command Lines etcétera Bueno le digo que lo voy a instalar siguiente vamos a ver dónde se puede instalar Ah vale me dice que ya he encontrado un directorio bueno porque yo ya tengo postgre pero no pasa nada le
Speaker A
pego aquí para adante dice ya está instalado siguiente esto se va a instalar sin más digo incluso sin conocimientos incluso sin leerme documentación que por supuesto todo esto la documentación oficial de pogre está documentado para que tú sigas el proceso
Speaker A
de instalación vale Ya lo tenemos y me dice que en realidad yo podría ahora pedir ejecutar el stack builder el stack builder eh Ya lo vemos por aquí vale para descargar e instalar Tools adicionales drivers aplicaciones complementarias a la instalación de
Speaker A
postgre vale esto ya es como si queremos instalar una parte más avanzada inicialmente a nosotros esto no nos va a hacer falta con ver hasta qué punto es diferente postgre de My sequel y darnos cuenta si los fundamentos nos valen para
Speaker A
algo o no es suficiente vale Ya tengo todo esto en principio ya está instalado Cómo se llamaba el administrador pg admin pues vamos a arrancar este administrador igual que el sql workbench que teníamos antes a ver esto Qué
Speaker A
significa si yo ahora mismo tengo una conexión a pogre igual que la tenía con mysql y a ver cómo me creo yo la base de datos o lo que sea aquí tenemos el admin editor gráfico bueno se parece a
Speaker A
workbench ligeramente no tenemos un nuevo server podríamos crearlo configurar el admin por aquí No tendríamos diferentes cosas lo que sea ya veis que estos gestores de base de datos al final son muy grandes y es lo que os he dicho esto no significa que
Speaker A
sea 100% Exacto a mysql por supuesto postgres tiene muchas peculiaridades pero veremos si a grandes rasgos es algo totalmente distinto vale me dice aquí que podría acabar creando un nuevo servidor dice veis aquí el servidor la conexión los parámetros
Speaker A
intentamos crear uno desde cero o lo que fuera mira tengo aquí un pogre que me dice pogre sql 16 tenemos esta conexión esto lo que os va a hacer la primera vez que os instalé os va a decir que os
Speaker A
creéis un servidor por defecto igual que lo que hicimos con my sequel y aquí dice y ponme la contraseña para postgres esto con una instalación limpia también os va a aparecer Y cómo le quieres llamar al usuario administrador de la base de
Speaker A
datos lo que fuera y tú le vas a tener que decir pues mira le llamo Root o le llamo como a mí me de la gana entonces siempre tener en cuenta que esto es algo que también tendríamos que hacer lo
Speaker A
mismo en mysql vale Tengo este porque ya lo he creado o que ahora quisiera crear aquí dentro que quisiera eh meter otra instancia o que ahora aquí mismo quisiera deployar la instancia o lo que fuera tengo esta conexión creada por
Speaker A
defecto Cuál es el nombre del usuario que nosotros Le tuvimos que dar pues seguramente aquí el usuario es postgres Pero cuál es la contraseña Root 1 2 3 4 y le voy a dar a Ok y vemos todo esto
Speaker A
que salta por aquí por qué Porque a mí la instalación me pregunta también por y Cuál es la contraseña que tú le quieres crear a la base de datos en local que estás levantando perfecto yo le puse rot
Speaker A
1 2 3 4 ya anteriormente para que tuviéramos Exactamente lo mismo le pondríais la contraseña de administración que quisiera vamos a leer un poco Qué hace pogre a ver si están distinto a my sequel triggers esquemas tables má triggers views procedures
Speaker A
funions dais cuenta que esto es básicamente lo mismo que tenemos en My sequel por eso lo de siempre esto es un estándar y aquí tenemos esquemas recordáis que el esquema nosotros podemos crear nuevo esquema ya desde aquí podríamos podemos utilizar ya este
Speaker A
esquema y si yo quisiera crear una tabla en base de datos o lo que fuera vemos que aquí tenemos las tablas y qué tengo en Tablas Pues básicamente nada Quiero crear una tabla pues Quiero crear una tabla a ver lo distinto queres crear una
Speaker A
tabla en postgre aquí tenemos el usuario el esquema donde la queremos crear y la tabla vamos a intentar hacer algo parecido a la tabla que yo ya tenía en mysql que a priori es otro motor de base de datos Pues voy a venir por la tabla
Speaker A
voy a venirme a la tabla de users y voy a ver un poco qué es lo que tenía en la tabla de users aunque no la hagamos completa pero para que vos un poco qué hay por aquí la tabla se llamaba users
Speaker A
vale users vengo por aquí columnas ya tengo aquí columnas Y tenemos aquí el botoncito para crear una nueva columna a ver Cuál eran las columnas que yo tenía user ID pues vengo por aquí hago user ID muy bien Y de qué tipo es esto es otro
Speaker A
motor de base de datos Mirad Cuántos tipos esto puede que tenga más tipos Pero si yo ahora vengo por aquí y Busco integer un int un campo de tipo numérico vemos que existe igual que le podemos dar precisión aquí era un entero normal
Speaker A
y que le podemos decir nulab no no que no sea nulo es la primary Key nosotros decimos que es la primary Key le podemos decir dónde empieza también lo podríamos hacer y si editamos la Row podríamos hacerlo de manera avanzada general
Speaker A
tenemos esto aquí tenemos la definición pu si le quisiéramos dar más cosas las constraints el tipo etcétera las variables que tenemos por por aquí a nivel de seguridad y vemos identity Y qué dice identity Always por defecto incremento Ah mira y si le digo que
Speaker A
incrementa de uno en uno esto es muy posible que sea el autoincremento que tenemos Aquí vemos que igual son nombres distintos o algún campo medio raro pero que al fin y al cabo lo que van a acabar haciendo es exactamente lo mismo que
Speaker A
esto igual tiene más opciones puede ser que esto Igual me deja configurar mínimo y Máximo y hasta una parte de caché o donde empieza Pues también pero eso también lo podemos hacer en mysql pero al fin y al cabo aquí generado que
Speaker A
pudiéramos dar una expresión para autogenerar o lo que fuera tengo esto quiero Añadir más datos Pues voy a venir por aquí qué más datos teníamos el name y yo ahora aquí puedo buscar el campo name era marchar Ah no tengo marchar
Speaker A
pero sí tengo algo que se llama text Ah mira un text y aquí si yo tuviera un text que fuera incluso hasta un rray o lo que fuera también lo podríamos hacer que me da la gana de buscar cuál es la
Speaker A
similitud entre uno y otro aquí por ir por ir rápido sin más voy a decirle que lo que me quiero guardar es un texto y que sin más va a ser no nulo y ya está otro campo vengo por aquí a ver qué más
Speaker A
tenía el H y aquí teníamos el integer por ejemplo Que lo queremos editar que queremos revisar más Campos lo que fuera lo podemos meter por aquí sin ningún problema sin más yo los voy a dejar así un poco tontos para que no perder tiempo
Speaker A
porque lo importante no es replicar lo que tenemos sino entender que yo me enfrento contra esto y que de verdad no estoy viendo algo totalmente nuevo que seguramente si te lees la documentación y y como tú ya has entendido mysql puede
Speaker A
que los campos en vez de llamarse int se llame integer pero que es un campo para enteros no tiene más ya tengo todo esto lo grabo qué tenemos por aquí users ahora ya tengo una tabla Y qué tenemos
Speaker A
por aquí tres columnas en la tabla constrains con índices con reglas con triggers Exactamente igual que teníamos ya antes y yo podría venir por aquí y veo query tool Ah mira si puedo intentar también lanzar consultas o lo que fuera
Speaker A
Será muy distinto todo esto Pues seguimos con la idea de que aquí bry no tiene ni idea de lo que es pogre documentación Ah mira tengo documentación tengo manuales tengo hasta tutoriales si quisiera seguir y aquí dentro de los tutoriales uno de los más
Speaker A
conocidos es este vale aquí tenéis paso a paso cómo empezar hacer todo con pgre Y cómo entender que es Exactamente igual que mysql quitando sus propias peculiaridades pero que a nivel de fundamentos es lo mismo vamos a leerlo
Speaker A
un poco por encima Select alias order by we limit fetch between join left join Inner join natural join Group by having Union qué más all exist update import autoincrement Drop primary key foreign key os dais cuenta que básicamente
Speaker A
tenemos lo mismo fijaos tipos de datos char barchart lo que hablamos antes textos No lo sé yo sin tener ni idea dije Bueno texto será un texto pues ya está No pasa nada leyendo así como muy en diagonal y con como muy muy rápido
Speaker A
qué hemos encontrado que tenemos las instrucciones prácticamente iguales que mysql por qué Porque sql es un estándar voy a inventarme que yo ahora quiero lanzar una consulta nos vamos a venir por ejemplo a nuestro vs code donde nosotros
Speaker A
habíamos creado por cada una de las consultas Mira los comentarios Esto será un comentario Si yo pongo aquí comment No lo sé será un comentario esto y si yo pongo esto O si lo copio y lo pego entendemos que esto seran comentarios
Speaker A
tiene toda la pinta por cómo lo está dibujando vale esto es igual y si yo quisiera hacer un Select Mira Select asterisco from users me lo voy a copiar por aquí Ah mira si ya me lo colorea y
Speaker A
parece como que esto como si fuera válido vamos a lanzarlo lanzo por aquí la ejecución Ah mira me ha traído la tabla con lo cual tiene pinta de que el Select es Exactamente igual y si yo ahora quisiera meterle datos Cómo era el
Speaker A
meterle datos a ver un writing insert into vamos a venir por aquí un insert que yo tenía de mysql tabla users el ID el nombre y Cuál era el otro H verdad le habíamos dado en columnas entonces Le
Speaker A
quiero meter el identificador lo hemos puesto que autog genere Entonces nosotros podríamos hacerle Mira le voy a meter solo el nombre y la edad a ver si es capaz de autogenerar El identificador primario y aquí le voy a poner que
Speaker A
quiero Añadir brce y que la edad es 36 y esto también podría ir con un punto y coma no sé qué voy a lanzar esta instrucción dice vale insert 0 1 a ver no sé si esto ha funcionado si no ha
Speaker A
funcionado voy a hacer un Select hago un Select Oh sorpresa ya auto ha generado el primer identificador incrementa de uno brce 36 cambia es distinto es complejo No pues bueno lo que os vais a acabar encontrando es que si hacéis un
Speaker A
repaso a prácticamente todas las instrucciones que hemos visto en el curso si no es al 100% iguales serán al 90 por que igual alguna alguna palabra reservada cambia que igual pogre puede hacer esto de esta manera y que my squel lo hacía
Speaker A
de la otra manera pero que la realidad es que es todo igual vale así que de verdad eh olvidaros Y también perder ese miedo a que os tengáis que enfrentar a otra base de datos distinta Es simplemente seguir tutoriales y como ya
Speaker A
Vais a tener todo el conocimiento anterior os va a resultar s simple de entender users y ahora le voy a meter un Word we H = 36 que justo es el campo que metimos antes si yo ahora lanzar a esto
Speaker A
aquí lo tenemos tengo por aquí Hala dejar que Lance Este vale aquí lo tenéis como he lanzado otro más para insertar uno más y ahora si hago el Word por el H me vienen los dos puedo editar desde
Speaker A
aquí por supuesto puedo editar desde aquí vengo por aquí y le cambio que ahora sea 37 y ahora si yo vuelvo a lanzar esta query por aquí me dice no has guardado los cambios los quieres guardar no quiero descartarlos Fíjate
Speaker A
que siempre tendrías que guardar también esto lo teníamos en mysql que también era la forma que nos decía tú quieres ejecutar todo esto si nosotros lo queremos guardar veis esto guardar cambios Vale ahora ya los he guardado si
Speaker A
yo ahora vuelvo a lanzar esta consulta Me dice ya solo un campo obviamente esto es muy muy por encima Pero que al fin y al cabo nos deja claro que no hay que darle muchísimas vueltas a enfrentarnos a otro tipo de motor de base de datos
Speaker A
distinto quizás a mysql que es el que estuvimos aprendiendo esto simplemente os lo voy a decir como dato no Al fin y al cabo mysql pogre son sistemas de gestión de base de datos son los dos muy populares igual que otros que hemos
Speaker A
nombrado y que por supuesto tienen diferencias mysql es de Oracle y en realidad Aunque tiene una licencia pública hay una parte privativa En cambio pogre es totalmente de código abierto Entonces eso puede ser una diferencia mysql suele ser más rápido en
Speaker A
operaciones de lectura Pero en cambio pogre es mucho más rápido en escritura pues dependiendo de nuestro proyecto si tenemos que hacer más de unas que de otras Pues igual ahí tenemos que empezar a valorar si nosotros también queremos
Speaker A
pensar que necesitamos un sistema muy configurable muy extensible pues seguramente sea pogre pero si igual lo que queremos es esa facilidad de uso porque no vamos a tener muchos datos o por el equipo por propio proyecto pues igual es mejor mysql bajo mi experiencia
Speaker A
y bajo mi realidad es que quitando en proyectos muy profesionales básicamente os va a dar igual la q6 Lo siento mucho No quiero ofender a ningún administrador de base de datos pero quitando proyectos muy muy grandes que tengan que escalar
Speaker A
muchísimo que de verdad tengan muchísimos usuarios Cuando digo muchísimos hablo de miles y miles y miles y miles y miles que no tengamos un montón de concurrencia que la base de datos no esté super estresada que no tengamos tablas con millones de
Speaker A
registros o lo que sea a grandes rasgos que elijamos una u otra u otra u otra tampoco va a ser algo que nos va a penalizar Porque seguramente le ganaremos por un lado le perderemos por el otro y ya está así que que tampoco
Speaker A
sobre todo en fase de aprendizaje que no os quite el sueño que se utilice una u otra que el día de mañana pues sois expertos en bases de datos sois administradores en base de datos estáis trabajando en proyectos de Big Data que
Speaker A
necesitan lo que sea vale [ __ ] ahí habrá que ponerse serios o estáis trabajando para una gran empresa que necesita trabajar con los datos de así y tal ahí ya hasta se suelen tomar otras decisiones que es igual estos datos este
Speaker A
este este y este se guardan en esta base de datos que es un db2 y este dato y este y este y este y este se guardan en un [ __ ] de b y este y este y este y
Speaker A
este este se guardan en un Server serverless en realtime database de firebase y lo que se hace Es casi Buscar exactamente el tipo de base de datos que mejor le viene a los datos concretos pero claro ahí ya cuando nos estamos
Speaker A
especializando mucho estemos tranquilos que esto estamos en un curso de de fundamentos que eso no es algo que a día de hoy aprendiendo nos tenga que importar o tenga que ser lo que de verdad nos importa ya hemos visto aquí
Speaker A
Este ejemplo super tonto haciéndome como que no tengo ni idea de pogre y [ __ ] tiras millas y acabas encontrando similitudes prácticamente iguales a lo que teníamos con mysql por supuesto Cuanto más aprendamos en profundidad cóm funciona mysql y pogre más diferencias
Speaker A
podremos acabar encontrando pero para el uso normal de aprendizaje y de fundamentos que vimos en el curso nos dan Exactamente igual estas dos que hemos visto como cualquier [Música] otra y ahora sí que ya quería enganchar una última parte y esta última parte es
Speaker A
hablar de qué pasa si yo ahora quiero desplegar mi base de datos nos vamos a sacar ya lo de pogre por ejemplo bersel permite alojar por ejemplo pogre por daros un dato sin más pues en bsel podéis alojar un postgre de forma
Speaker A
gratuita si queréis Hacerlo con un my sequel o con otro tipo de base de datos o lo que sea habrá que acabar buscando pues qué proveedores hay cuáles son gratuitos Cuáles tienen coste hablábamos de rayola que por ejemplo rayola
Speaker A
networks nos patrocina a nosotros Ellos tienen un servicio de Hosting si vosotros tenéis un servidor autoadministrado pues prácticamente Vais a poder instalar la base de datos que os de la gana pero a veces y sobre todo para aprender se intentan Buscar estos
Speaker A
servicios que nos ayudan un poquito que nos intentan solucionar la vida bastante fácil estábamos diciendo de versel por ejemplo para pogre entonces versel con postgres tenemos por aquí hay Tas gratuitos en Prácticamente todo otro servicio que nos puede servir para
Speaker A
desplegar pogre ya que hemos a ha hablado de él eh Y esto es posible que os suene sup abis se está poniendo muy de moda Estos son como una plataforma que tiene diferentes pequeños servicios pues fijaos base de datos de lo que más
Speaker A
intentan tirar es de postgre Pues aquí también tenéis una plataforma donde os va a permitir desplegar un postgre hablábamos antes de rayola Claro en rayola nosotros podemos alquilar un servidor podemos eh un servidor dedicado un vps un Hosting normal y corriente
Speaker A
Claro en estos servidores nosotros podemos acabar arrancando nuestra base de datos también sin ningún problema Y si queréis por ejemplo hoy para hacer alguna prueba y con mysql que es donde hemos desarrollado más el curso os voy a
Speaker A
hablar de dos proveedores que son gratuitos y que los podéis utilizar el primero es muy top planet scale planet scale es una plataforma que casi en exclusiva se dedica a darnos un serverless de My sequel Entonces si os
Speaker A
queréis desatender un poquito y no preocuparos por servidor y que scal y que no sé qué pues pensar que puede ser una buena solución Planet es tiene ya lo veis que si este dashboard empresas que lo utilizan por aquí nos da como muchas
Speaker A
facilidades como muy plug and Play Mira detecciones de picos [ __ ] es es un sistema muy muy Guay veis empresas que lo están utilizando es algo muy serio y lo más importante Tiene un plan que es gratuito 5 GB hasta un billón de filas
Speaker A
leídas por mes 10 millones de filas escritas cada mes no está mal no este producto gratuito Eso sí si no me equivoco creo que es un servicio que os pedía meter la la tarjeta de crédito para que no haya fraude sobre todo pero
Speaker A
no os van a cobrar ni un duro y este es un servicio 100% confiable esto es una de las grandes compañías que hay ahora mismo ofreciendo servicios desatendidos de mysql pero para que nadie se queje vamos a hablar de otro servicio que aquí
Speaker A
sí que no tenéis que meter nada que os dice lo de la tarjeta pero si no queréis meter la tarjeta tampoco pasa nada y lo podemos utilizar de forma gratuita clever Cloud es también otro servicio que nos va a permitir alojar pues
Speaker A
diferentes servicios diferentes bases de datos pero que también pero que también entre todos estos servicios que nos deja uno de ellos pues es un my sequel Okay entonces vamos a ir rápidamente voy a hacer login plataforma eh gratuita sin
Speaker A
más Vamos a ver qué tendría que hacer si yo ahora quiero desplegar mi base de datos en un entorno de producción igual lo que yo ya tenía vemos Que aquí hay como diferentes servicios creever Cloud es un Cloud en toda regla se le puede
Speaker A
meter un montón de aplicaciones distintas Pero entre todas estas uno de ellos si nos vamos aquí a create yo me creé una cuenta en blanco dentro de los también tenéis pogre aquí si quisieres meterlo Pero bueno uno de los servicios
Speaker A
es mysql Imagínate que yo ahora Quiero crear un mysql aquí tenéis los precios para crear bases de datos Pues mira hasta 10000 vale 900 GB no sé cuánto Pero por eso os digo que esto está Guay hay uno
Speaker A
de los servicios que está a cero Entonces ya lo veis cinco conexiones la base de datos pues 10 megas bueno que para hacer pruebas para aprender para trabajar incluso para proyectos pequeños os puede valer sin ningún problema Incluso si ya os queréis a ir a algo
Speaker A
profesional fijaos 5 eur ya por 500 megas y en 500 megas creerme que una base de datos se puede guardar muchísimas más cosas Bueno yo voy a seleccionar gratuito sin más le voy a dar a next y vamos a ver qué podríamos
Speaker A
hacer podría seleccionar diferentes proveedores vemos que un servidor en Francia por ejemplo de cever Cloud o uno de de ovh en Canadá Pues bueno me voy a ir al de Francia me da igual y si vosotros buscáis más proveedores de
Speaker A
Cloud o más proveedores de ma sql Vais a encontrar muchos más vale vengo por aquí le quiero dar un nombre cómo lo llamamos antes Hello my sequel le voy a llamar así a miado para darme yo cuenta next
Speaker A
venimos por aquí y de repente veis todo lo que tenemos aquí se ha creado la base de datos tenemos un Host tenemos un nombre para la base de datos claro esto si estuviéramos en versiones de pago no sé qué podríamos editar cambiar yo que
Speaker A
sé no pasa nada Esto es una prueba al fin y al cabo pero para que entendamos Qué significará ahora replicar en remoto la base datos que nosotros tenemos en local me da igual los datos que nos haya autogenerado no pasa nada si yo quiero
Speaker A
ir a un editor como tal vemos que la podemos resetear matar todas las conexiones generar un nuevo password incluso Cuáles son los datos de la colección al click lo que sea pero antes vamos a ver cómo podríamos cargar
Speaker A
nuestros datos en la base de datos lo más cómodo Aunque hay servicios que permiten conectarse a tu base de datos extraer los datos después replicarlos lo que sea perfecto pero vamos a hablar como del mecanismo más más clásico bás
Speaker A
yo me voy a venir a mi base de datos a la base de datos con la que estuvimos trabajando todo el curso y en la propia base de datos nosotros tenemos opciones para exportar la Data vengo por aquí y digo Mira Quiero
Speaker A
exportar mi base de datos Y qué quiero exportar Pues imagínate que yo quisiera exportar todos estos esquemas voy a hacerlo a a las bravas porque lo lógico en muchos casos a veces exportar tablas pero igual e ciertos procesos
Speaker A
almacenados igual no exportarlos O no meter todo Bueno yo voy a meter todo intentar explicarla completa y después si falla alguna cosa pues tampoco es que le vayamos dar importancia porque no es como tal meternos justo en ese proceso
Speaker A
de migración pero para que entendáis Qué es la exportación de una base de datos Y qué es la importación también de una base de datos vengo por aquí y digo Mira yo lo que quiero es la estructura y la
Speaker A
Data podría ser toda la Data solo la Data solo la estructura puedo seleccionar aquí pues mira los objetos que teníamos en el esquema Test en el esquema gilon mql bueno en nuestro caso lo que tendría más sentido sería solo
Speaker A
exportar las tablas con las que nosotros trabajamos porque las otras son las que ha creado nuestro sistema local y eso me da un poquito igual Vale pues tenemos también aquí veis esto Si quieres los procesos almacenados eh los eventos los
Speaker A
triggers yo voy a meter todo como si quisieras portar todo loco y le voy a decir que quiero guardar el fichero entonces Bueno aquí tenemos puede ser solo en un fichero puede ser en varios por si fuera muchos datos y yo puedo
Speaker A
acabar seleccionando Pues dónde quiero acabar guardando esto lo voy a guardar en el desktop al final te va a generar un fichero sql y y le voy a llamar deb sin más y le voy dar a guardar una vez
Speaker A
ya tengo todo esto seleccionado configurado lo que a mí me de la gana lo que tú quieras exportar al final arrancas la exportación y vemos ya se ha exportado ya está Y esto qué acabaría desencadenando mira lo voy a abrir Pues
Speaker A
con Sublime text para que veamos el texto puro y duro ves lo que tenemos por aquí pues al fin y al cabo lo que vamos a acabar encontrando o la propia exportación simplemente son todas las queries que hay que lanzar para replicar
Speaker A
nuestro esquema de base de datos fíjate por aquí primero borr las tablas después intentan crear tablas la tabla la veis la dni recordáis que teníamos la tabla dni le mete los datos que nosotros teníamos en la dni por ejemplo con la
Speaker A
users a ver si nos vamos a la users que la acabábamos de ver hace nada fijaos Cómo crea la tabla users le mete las relaciones y le empieza a cascar todos los datos que tiene la tabla users Al
Speaker A
fin y al cabo esto lo que tiene es un fichero con todo el churro de instrucciones sql que son necesarias para que si yo borr a la base de datos o si yo tuviera una base de datos nueva si
Speaker A
quisiera volver a ejecutar todo lo que yo ya tengo en base de datos Al fin y al cabo eso es lo que he exportado vale me vengo a la base de datos que he creado el remoto y me voy a ir al administrador
Speaker A
gráfico al php my admin Me podría Conectar a ella Desde consola lanzarlo desde terminal lo que fuera bueno vamos a irnos algo gráfico también para entenderlo eh En este caso este mysql el editor gráfico ese cliente no es el
Speaker A
workbench es php my admin porque funciona desde la web esto puede que os suene al fin y al cabo lo que tenemos es más de lo mismo el esquema de base de datos que se ha creado por defecto aquí
Speaker A
tenemos la base de datos exportar importar configuración que si tendremos tablas que pero de primeras está vacío Imagínate que yo ahora quiero importar mi base de datos que acabo de exportar de local pues me voy a importar me voy a
Speaker A
ir a mi fichero me voy ir al desktop y a mi base de datos y le digo vale a ver alguna cosa que podría configurar permite la interrupción de una importación caso de que el Script detecte que se ha acercado al límite de
Speaker A
tiempo php bueno podría omitir lo que fuera habilitar la revisión de cabes foráneas el formato es sql lo que yo voy a insertar por aquí otras eh modalidades lo bueno Me da igual ya digo esto es casi lo de menos me voy a ponerme a
Speaker A
importar Y me dice Hala dice e no hay una base de datos seleccionada ostras igual he creado algo mal vale Voy volver aquí a importar qué estoy haciendo mal si yo me vengo aquí ahora ya he seleccionado una base de datos si yo me
Speaker A
fuera ahora aquí a importar quizás ya me dejaría porque ya he seleccionado una base de datos vamos a volver a probar porque yo estoy lanzando un sql que el sql podría ser algo genérico para modificar otro tipo de cosas vale vuelvo
Speaker A
por aquí y me dice Hala se han lanzado cosas pero han fallado otras y me dice ey no tienes privilegios Y esto es algo no es propio del curso como tal Pero esto también suele ser importante esta tabla de base de datos en concreto Pues
Speaker A
con los privilegios con el que nos ha creado pues no nos permite lanzar eh Por ejemplo la creación de un Trigger lo hemos visto aquí veis esto dice Root local Host claro nosotros tendríamos que acabar cambiando para que esta ejecución
Speaker A
no fuera contra local Host lo que fuera entonces a veces sobre estos esquemas sobre todo lo que estamos exportando y que después nosotros queremos importar tenemos que revisar Pues si puede haber cosas que tenemos que cambiar o lo que
Speaker A
sea vale veis aquí en concreto que Justo nos ha fallado un Trigger porque yo le he dado a exportar todos los triggers pero vamos a quedarnos aunque esto no sea importante con las tablas que tenemos por aquí ahora de repente ya nos
Speaker A
han aparecido tablas companies dni email history languages users y si yo me vengo por aquí a las tablas companies dni email history users Language vemos que claro nos ha quedado una tabla sin importar porque nosotros teníamos este Trigger no sé qué qué podría hacer yo
Speaker A
pues cuando yo estaba realizando la exportación pues digo mira mejor no me metas los Trigger porque igual este es un problema que yo tengo para acabar ejecutando no sé qué y digo vuelveme a exportar a ver si esto Me vale o puedo
Speaker A
realizar alguna modificación o lo que sea sobre esta importación bueno eh Como hemos hecho con toda la base de datos al final hay que buscar estas relaciones me meto otra vez con el fichero tengo aquí otro nuevo le doy a importar es posible
Speaker A
que falle por otra cosa y nos dice ey es que ahora ha fallado este proceso Vale pues revisa que no tengas problemas con exportación de procesos volvemos otra vez a lo mismo que aquí lo que tiene este Root local Host y nosotros ahora
Speaker A
que estamos es en eh remoto claro nos dice acceso denegado tú necesitas los privilegios cuál es el problema problema que nuestra base de datos nuestro usuario no se llama Root nosotros podríamos hacer las modificaciones donde está apareciendo Root y donde está
Speaker A
apareciendo el Host y lo que nosotros tendríamos que hacer es cambiarlo por la información de la propia base de datos que nosotros teníamos aquí configurada aquí lo veis tenemos el usuario tenemos password por aquí tenemos Host por aquí
Speaker A
tenemos usuario por aquí habría que hacerle pequeños cambios en el fichero en el que yo os he enseñado por aquí que estamos viendo rot ostras pues mira si me está apareciendo aquí que quiere acabar ejecutando contra Root Pues igual
Speaker A
no lo podemos hacer contra Root lo tengo que hacer contra el usuario de la base de datos que tengo aquí y me vengo por aquí y me cambio Pues todos los rot por todo estos Root que estamos viendo aquí
Speaker A
antes Dónde está rot Pues todo esto rot 1 2 3 4 bueno tres o cuatro que vemos por aquí y fijaos que uno justo es el el el propio procedimiento este lo teníamos también aquí claro algunas cosillas a
Speaker A
veces hay que hacer Bueno este al final es un comentario pero por si lo queremos dejar así cambiado en todos vale Hay algún Root más que nos haya quedado este que es un comentario también Algún Root más no vuelvo por aquí que quiero otra
Speaker A
vez importar me vuelvo al php admin son cosas que sí que es cierto que con el paso del tiempo pues vamos aprendiendo pero que no deja de ser pequeñas modificaciones que simplemente atienden a adaptarlo a básicamente lo que
Speaker A
nosotros tenemos que ejecutar aquí me voy a ir a importar Y me dice companies ey es que no está seleccionando una tabla una base de datos dice No database selected por qué Porque cuando yo estoy seleccionando aquí una base de datos
Speaker A
Seguramente me estoy quedando con el esquema principal y yo ahora tengo una base de datos que en realidad tiene un nombre concreto lo que fuera vengo por aquí a information Así que fijaos que cuando se empiecen a dar estos fallos lo
Speaker A
que tendremos que tener en cuenta es que ahora mismo hay otros datos hay otros datos de conexión nuestra base de datos no tiene Exactamente lo mismo que cuando estábamos en local si la suele ser algo muy muy costoso hay una
Speaker A
estructura que es simplemente Select le metéis el database y ya está y esto empezaría a tirar tampoco es cuestión de echar eh muchísimo tiempo sobre esto os quiero enseñar también eh otra cosa más Vámonos a la base de datos como tal al
Speaker A
php admin a ver si por lo menos lo que funcionó qué es lo que tenemos ahí me vengo por aquí tabla users que ya conocemos bastante bien a ver la tabla users a ver lo que tengo la tabla users
Speaker A
ID name veis que es exactamente cómo se habían creado nuestra base de datos local y lo tienes sin más si nos fuéramos a sql y yo hiciera eh Select asterisco from vamos a ponerlo mayúscula from eh users vengo por aquí y lanzo
Speaker A
esta consulta me dice Ey qué ha pasado dice no ha seleccionado una base de datos Ah vale Pues venga me voy a ir a la tabla me voy a venir por aquí me voy a situar en la base de datos como tal Y
Speaker A
le voy a hacer un Select de users ahora ya estando la en esa tabla de base de datos si no podríamos utilizar un alias okay estos son los datos son los datos que teníamos en nuestra tabla bry Sara
Speaker A
Carlos savitar Miriam lo veis ha replicado Prácticamente todo esto cuándo suele fallar los pequeños fallos que vimos ahí precisamente cuando Está realizando tareas de administrador la creación de procesos almacenados la creación de Trigger suele ser un problema pero ya veis que en el momento
Speaker A
que ya cambié el usuario root ya nos falló porque no habíamos seleccionado la base de datos Y esto simplemente sería pasarle en el fichero en ese Script que hemos generado ponerle el nombre de la nueva base de datos Y ya estaría y con
Speaker A
esto estaría migrado vamos a ver lo siguiente vamos a ir aquí a una de las cosas que hiciéramos en la clase de avanzado con el conector recordáis que yo había creado aquí un conector donde hacíamos una consulta donde teníamos
Speaker A
esta configuración yo ahora ya tengo una base de datos en remoto una nueva configuración y vamos a ver si somos capaces ahora de conectarnos en nuestra base de datos el remoto Pues si esto también cambia o no cambia o qué vamos a
Speaker A
ir por aquí esto sería todo completo pero vamos a hacerlo poco a poco el usuario Cuál era el usuario root ahora es este usuario la contraseña la tenía antes por aquí password Me la voy a copiar también y voy a meter la
Speaker A
contraseña la base de datos veíamos aquí Incluso el Host que antes el Host nos conectándote Select asterisco por el usuario bry voy a lanzar Mi código en en python veis price moure 36 la fecha y el email a dónde se ha conectado esto ya se
Speaker A
ha conectado a nuestro servidor aquí tenemos los datos del servidor cóm simplemente cambiamos los datos de conexión de lo que teníamos en local pero en realidad nosotros ya tenemos un servidor remoto para consumir desde un cliente desde una app desde una web
Speaker A
desde yo que sé ya tendríamos para consumir nuestra base de datos sin problema qué os parece voy a dejar esto comentado simplemente para que veáis que estos podrían ser otros datos Y ya está no habría mucho más se puede crear un
Speaker A
nuevo usuario y password Por supuesto que se pueden crear nuevos usuarios y password Qué pasa que esto según la plataforma que tengáis según que sea gratuita o de pago etcétera pues va a haber más o menos restricciones porque
Speaker A
claro Al fin y al cabo nadie te quiere regalar un Hosting qué ganan ellos por regalarte un Hosting Entonces en este caso como hemos puesto o os he enseñado el plan gratuito para que todo el mundo lo pueda probar pues es posible que os
Speaker A
encontréis con restricciones a medida que los sistemas de base de datos Y que el Hosting son más profesionales o si vosotros tenéis vuestro propio servidor lo que hablábamos antes en en rayola o lo que sea ahí Vais a poder configurar
Speaker A
lo que os dé la gana lo Vais a poder configurar con todas las mismas facilidades y con todas las mismas opciones que cuando la configuraba en local que éramos como los Super administradores aquí para restringir noos un poco el acceso pues ya nos crea
Speaker A
el usuario y ya nos hace algunas cosas para que nosotros tampoco nos nos volvamos muy locos Y seguramente si entramos en el php my admin Aquí vamos a encontrar otras limitaciones Mira entro en la base de datos Bueno pues habrá
Speaker A
cosas que yo podré cambiar Que no podré cambiar y habrá cosas es que también tendréis esas limitaciones incluso que igual yo no soy hasta el super administrador de la base de datos para que yo no pueda andar reventando y no
Speaker A
pueda hacer cosas demás en cambio Si ya la pago Pues igual puedo hacer un poquito [Música] más también os quería hablar as un poco también para ir sanjando el curso de Y qué cosas más podría ver yo por mi
Speaker A
cuenta o en vistas de que sigamos este curso algún día futuro para seguir mejorando vale lo primero yo os diría Es que de verdad os pusiera is a leer y a estudiar sobre diseño de base de datos aquí hemos diseñado una base de datos
Speaker A
por qué yo no hablo de diseño de bases de datos primero porque esto es un curso desde cero para principiantes y el diseño de base de datos ya suele ser algo que suele estar ya reservado para alguien que ya conoce o que tiene un
Speaker A
conocimiento más avanzado sobre base de datos para la gente que se va a dedicar a administrarla para gente que se dedica Justo a diseñar la base de datos y que conoce estos sistemas muchísimo mejor Qué es el diseño de base de datos es que
Speaker A
yo tengo unas necesidades en mi aplicación que yo quiero montar Facebook y Alguien tiene que decidir vale Y qué tablas creamos porque no es cuestión de ir a lo loco y decir bu me creo esta tabla igual mañana la relaciono con esta
Speaker A
no se suele hacer Ese diseño de base de datos por lo menos en fase inicial para entender Qué necesidades vamos a tener de base de datos de tablas de campos de relaciones de propios recursos de cómo vamos a escalar nuestra propia base de
Speaker A
datos así que por favor leer algo sobre diseños de base de datos sobre Cuáles serían esos casos de uso o algún ejemplo de casos de uso que si yo tengo estos requisitos o estas necesidades en mi proyecto Cómo tendría que acabar creando
Speaker A
mi base de datos nosotros fuimos creando diferentes ejemplos un poco sobre la marcha sobre las necesidades que nosotros teníamos para que yo os pudiera ir explicando cosas pero en un proyecto es ligeramente distinto nosotros entendemos primero Cuál es la lógica de
Speaker A
negocio del proyecto y en base a eso pues intentamos crear la base de datos que mejor se adapta a las necesidades de nuestro proyecto y aquí también entra algo muy importante Ya no solo creamos el esquema y las tablas y las relaciones
Speaker A
sino que incluso según las necesidades de nuestra negocio nosotros también acabamos eligiendo Qué motor de base de datos utilizamos porque otra gran pregunta Entonces bry por qué existe mysql Por qué existe db2 Por qué existe sql server Porque existe Marí db lo que
Speaker A
comentábamos antes Por qué existen tantos dije Bueno primo primo porque cada una quiere tener su base de usuarios Pero fundamentalmente porque cada una hace cosas bien y hace cosas mal igual si nosotros tenemos la necesidad A y C para nuestro proyecto es
Speaker A
mejor elegir mysql Y si nuestro proyecto los datos que vamos a guardar la lógica de negocio es de otro tipo Pues igual lo que necesitamos es un postgress Okay entonces entendamos todo lo que significa elegir una base de datos y
Speaker A
diseñar también todo lo que será el propio esquema de base de datos esa es una parte ya un pelín más avanzada y que yo os diría también que revisara las bases de datos son la principal fuente de datos para cuando hablamos de Big
Speaker A
Data que cuando se empieza a tratar Ah Big Data no sé qué Ah vale pues bueno las bases de datos son un punto fundamental ya que la el Big Data está tanto de moda y otras dos últimas cosas
Speaker A
sobre el que quiero también que estudié es concurrencia que lo nombramos en la clase anterior un poquito pero que es muy muy muy importante tener en cuenta cómo funciona la concurrencia Y también cómo funcionan las transacciones Qué significa una base de datos que dos
Speaker A
usuarios intenten escribir que haya que bloquear uno que haya que hacer rollback que nos equivoquemos que después hagamos comit o que le demos para atrás a la propia transacción eh eso también es algo muy importante y es un concepto
Speaker A
algo más avanzado y ya como último la parte de seguridad software y seguridad tienen que ir de la mano igual si tú eres Junior la parte de seguridad pues no es algo que te vayan a estar pidiendo todos los días a nivel de base de datos
Speaker A
pero Cuanto más sepas y os puse un ejemplo también en la clase pasada de lo que significaba el sql injection esa es una parte de seguridad y es un error que podemos cometer cualquier tipo de persona sobre todo cuando estamos
Speaker A
empezando así que por favor leer también un poquito sobre qué implica la seguridad en base de datos la seguridad en base de datos primero eh a la hora de diseñar nuestra base de datos y de securizar y segundo a la hora de
Speaker A
interactuar con ella nunca conectarse desde un cliente que si usuarios contraseñas en claro que si tú puedes crear un usuario de base de datos que igual solo lea esta tabla y solo lo escriban esta tabla para hacerlo mucho
Speaker A
más seguro Por qué vamos a tener un único usuario en base de datos no igual si tú tienes unos clientes concretos que lo único que tienen que hacer es leer datos Y nunca los van a escribir pues la
Speaker A
forma más segura es que tú las conexiones a la base de datos desde el cliente que solo tiene que leer datos es con un usuario de base de datos que no tenga permisos de escritura así como mucho Te roban datos pero no te borran
Speaker A
la base de datos No ese tipo de cosas así que de verdad eh leer Leer sobre seguridad sobre Big Data sobre transacciones sobre concurrencia y sobre diseño de base de datos es como un poco si queréis seguir por favor darle caña a
Speaker A
eso y también lo más importante sql os dije que era un lenguaje y que incluso podemos debatir si es un lenguaje de programación no no voy a entrar en este debate es una tontería y es un eh es un
Speaker A
debate absurdo en la gran mayoría de los casos porque al final lo importante es que nosotros tenemos un lenguaje que es capaz de entregarnos datos un lenguaje creado para eh interactuar con un sistema de base de datos perfecto me da
Speaker A
igual si esto es un lenguaje de programación o no llegado el caso está más cerca de serlo que de no serlo pero ya digo no nos vamos a poner a discutir para nada eso pero lo que os quiero
Speaker A
decir que eh con esto es que como todo en programación la forma de aprenderlo por mucho que leamos por muchos cursos que hagamos por muchas veces que os veáis este curso es practicando por favor no os quedéis solo con los
Speaker A
ejemplos que yo pongo inventar os ejemplos intentar resolverlos buscar otro otros casos de uso y intentar ponerle solución con lo que habéis aprendido y a base de eso a base de pelear a base de que igual yo os enseñé
Speaker A
Cómo hacer un filtrado para no sé qué Pues plantearos otro caso que sea un filtrado Pero que sea de otros Campos que sea de otras tablas que sea otrro tipo de relaciones que sea lo que sea y a ver si sois capaces de resolverlo
Speaker A
vosotros cuando seáis capaces de también esos casos de uso que aparecen fuera del contexto del curso también resolverlo vosotros Ese es el no sé es el signo inequívoco de que estáis aprendiendo verdaderamente cómo trabajar con bases de datos Así que practicar muchísima
Speaker A
práctica de verdad muchísima práctica muchísima práctica y ahora sí con todo esto con todo este último repaso em tenemos el curso Este es el curso de sql desde fundamentos Enhorabuena por finalizar el curso y muchísimas gracias por llegar hasta aquí déjame en
Speaker A
comentarios Qué te ha parecido Recuerda que tienes toda la información en el repositorio de gidh y que si aún no lo has hecho hagas estar en el repositorio y compartas para apoyar el proyecto recuerda seguirme en redes sociales en
Speaker A
Twitch donde hago directos de lunes a viernes y unirte al servidor de discord de la comunidad de Nuevo Muchísimas gracias por tu tiempo suscríbete al Canal y activa la campanita Para no perderte los vídeos semanales Ahora te toca poner en práctica todo lo aprendido
Speaker A
y seguir mejorando tu conocimiento sobre sql y bases de datos Espero verte muy pronto por aquí hasta [Música] luego than [Música]
Topics:
SQL
bases de datos
MySQL
PostgreSQL
programación
curso para principiantes
consultas SQL
desarrollo software
Brais Moure
MoureDev