hola que tal soy lukas y voy a ser tu instructor en este curso de bases de datos de sql para hacer este curso no necesitas ningún conocimiento previo lo vamos a ver todo totalmente de cero y vamos a aprender desde cómo diseñar una base de datos hasta el desarrollo de consultas bastante complejas si quieres realizar este curso tan solo te pido que le des like que te suscribas y activar la campanita para que estés informado cada vez que suba un vídeo y además si quieres ayudarme puedes compartirlo con alguna otra persona que tenga tantas ganas de programar como tú estás preparado comenzamos hola amigos como estan en este vídeo vamos a hablar sobre bases de datos vamos a conocer los principios fundamentales y para comenzar bueno hay que entender que es una base de datos a mí no me gusta cuando se lían demasiado con estos conceptos de diccionarios no se termina entendiendo que es así que bueno que es una base de datos básicamente un lugar en donde podemos guardar datos de una forma ordenada es así de simple ahora por ejemplo la base de datos más simple que conoció en mi vida recuerdo que había jugado un videojuego en el año cuando fue de 2005 por ahí que el videojuego se llamaba herbert era un juego en línea y en un momento yo quería levantar servidores online de este juego y me llamó mucho la atención que toda la base de datos del juego eran archivos de texto como ven acá tenemos un bloc de notas en donde podemos ver cómo estaba diseñada la información de un personaje entonces básicamente esto es un bloc de notas que guarda todos los datos que tiene un personaje en mapa en el que se encuentra el nombre que tiene el personaje la posición xy en la ubicación del mapa bueno esto ya es muy de videojuegos pero la cantidad de energía que tenía al nivel todo y así eran las bases de datos antes eran simplemente archivos de bloc de notas en donde se guardaba la información y también se organizaba por carpetas en este caso cada personaje tenía un archivo de texto diferente y todo esto lo iba leyendo un programa y esto era una base de datos por más simple que parezca ahora que sucede con el tiempo fueron cambiando mucho las bases de datos ya dejaron de ser lo que eran ya no son bloc de notas ni archivos sueltos sino que empezaron a aparecer programas especializados para organizar los datos siempre sucede esto con la programación es como que al principio quizás alguien se encarga de hacer prácticamente todo pues empieza a salir la especialización como sucedió de ser webmaster haber front-end y back end y the front then después empezaron a salir frame books es como que empiezan a ver especializaciones y eso sucedió con las partes las bases de datos y entonces así como guardamos datos en un bloc de notas y aquí tendríamos un slot una entidad mínima de la base de datos y así como tenemos lo que notas un excel también podría guardar datos y no no estoy diciendo que un excel necesariamente una base de datos pero mucha gente lo usa como si fuera una base de datos ahora cuando nosotros armamos un programa o un sistema que quiera gestionar todo esto la verdad que se hace bastante difícil el poder hacer que esto funcione rápido leer todos estos datos de bloc de notas de excel y cosas por el estilo es como que requiere mucha programación y a la vez no es tan rápido el procesamiento no es tan optimizado y por esta razón es que empezaron a salir más 100 especializados solamente para esto pero en donde guardamos todos estos datos bueno básicamente lo guardamos en computadoras es así de simple ahora que sucede conforme fueron apareciendo estos sistemas de gestión de bases de datos fueron evolucionando el hardware para optimizar lo más posible los servidores así que de aquí nacen los primeros data centers que es básicamente eso en un conjunto de computadoras que permiten proveer el servicio de base de datos y los primeros data centers se diseñaron siguiendo las arquitecturas clásicas de informática de red en la que los equipos eran apilables en mesas armarios formando racks cierto y la necesidad de la fácil gestión y de la optimización del espacio hicieron que se apilarán cada vez más las bases de datos pero bueno básicamente ahí es donde se guardan los datos en este en estos datos centers pero se suma ahora una nueva tecnología que la conocemos como block change que básicamente block change vendría a ser una base de datos descentralizada qué significa esto que imaginemos que tenemos varias computadoras en distintos lugares del mundo y tenemos nuestra base de datos replicado en cada una de estas computadoras a diferencia de cómo eran los data centers anders en donde teníamos nuestra base de datos en un solo lugar específico y al tener la base de datos replicada en varias computadoras diferentes a no estar centralizada en un solo lugar nos garantiza de que si se modifica la información en una no afecte o se verifique que sea real que sea verídico pero bueno eso ya es tema bastante avanzado se lo vamos a ver por ahora solamente nos quedamos con estos conceptos [Música] y si hablamos de estos sistemas modernos de base de datos qué tipo de base de datos existen bueno se dividen en dos grupos principalmente en relacionales y en no relacionales una base de datos relacional es aquella que se basa en las relaciones que los datos tienen entre sí y no se tienen en cuenta su orden de almacenamiento en este modelo relacional los datos se guardan en un conjunto de tablas compuesto por filas y columnas si vemos aquí el ejemplo de pantalla podemos ver lo siguiente por un lado tenemos la tabla producto por otro lado tenemos la tabla proveedor también tenemos la tabla presentación marca y zona ok y entonces cada una de estas tablas están relacionadas entre sí de esta forma lo que se logra es poder optimizar los datos y no tener que estar repitiendo todo el tiempo la misma información entonces por ejemplo tenemos aquí la tabla proveedor ahora el proveedor va a tener solamente dos columnas aquí se representan de esta forma porque solamente la estructura de datos una columna va a ser la descripción en donde vamos a poner el nombre del proveedor no cierto y después tenemos el aire como que vendría a ser un número para identificar ese proveedor un número único ahora que sucede en nuestra tabla de producto en donde vamos a ir almacenando todos los productos tenemos por un lado el líder del producto que es para representar ese producto único el identificador vendría a ser tenemos después el precio la descripción del producto cuánto y en esto que él iba todos estos datos pero qué sucede cuando nosotros queremos guardar el proveedor en esta tabla tenemos y de proveedor no es que estamos almacenando siempre el nombre del proveedor repetidamente sino que simplemente guardamos un numerito que va a hacer referencia a esta otra tabla y por eso vienen principalmente esto de tabla relación de bases de datos relacionales porque se hacen relaciones y de esta forma se optimiza muchísimo la información ahora esta es solamente la estructura que va a tener nuestra base de datos pero después si nosotros queremos guardar información consultar información o eliminarla normalmente se hace con un lenguaje que es conocido como sql que ya lo vamos a ver un poco más adelante pero esto es solamente con un pantallazo inicial como para que comencemos con este tema bueno y qué tipos de base de datos relacionales existen tenemos mysql que también existe la versión maria debe simplemente cambió de nombre por unas cuestiones burocráticas pero no importa tenemos ahora que el plc ql sql light que esto es más para mobile principalmente transa que sql que es la versión de microsoft también tenemos web sql que bueno de esta a ser la versión web y por eso como ven casi todos tienen de nombre en algún lado sql pasa que este es el lenguaje que utiliza para poder hacer las consultas y poder agregar modificar y eliminar información [Música] por otro lado tenemos las bases de datos no relacionales o también conocidas como no sql estas bases de datos están diseñadas para modelos de datos específicos y tienen esquemas flexibles para aplicaciones modernas son fáciles de desarrollar tienen muy buen rendimiento y además son escalables ahora cuando nosotros estamos usando alguna aplicación de celular o algún sistema es muy normal que envía información al servidor en formato de jason estado que vemos aquí a la derecha es jason es una forma de ordenar la información a johan los kers son se le ocurrió lo siguiente ya que todos nuestros sistemas se comunican utilizando jason porque no hacemos una base de datos que guarde directamente este jason y en el año 2009 en un evento open source se introdujo todos estos conceptos digo reintroducir porque estos conceptos son viejos solamente que no se utilizaban sucedió lo mismo con la inteligencia artificial todos los conceptos existían [Música] sucedió lo mismo con la inteligencia artificial todos los conceptos existían desde los años 80 solamente que tuvieron que pasar varios años para que el poder de cómputo sea lo suficientemente fuerte como para sacarle provecho entonces estas bases de datos no tienen una estructura definida es muy fácil agregar campos nuevos a diferencia de la base de datos sql en que el guardado es un poco más complejo aquí el guardado es muchísimo más simple la utilizaron principalmente las redes sociales como 'facebook' para poder guardar mucha información de una manera simple y además para poder escalar con escalar me refiero a poder tener varios tipos de base de datos distribuidos en un montón de servidores y que estén funcionando de manera sincronizada no me refiero a que tengan sincronizar los datos pero que sí puedan funcionar a la par qué base de datos no relacionales existen bueno la más famosa de todas es mongodb después tenemos también coach de bien que a diferencia de mongodb ésta está más preparada para la sincronización cuando tenemos por ejemplo una aplicación que funciona sin internet pero que en un momento tiene internet y tiene que sincronizar toda su información bueno esta base de datos está más preparada para que no haya corrupción entre esos datos por otro lado tenemos fire veis que buenos aires no vendría a ser una base de datos es más un server leds que también permite almacenar a bases de datos relacionales pero esto es como para hacer un pequeño resumen ahora a qué tipo de base de datos existen bueno principalmente tenemos de base de datos relacionales mongodb y que es la más famosa de todas también tenemos coach de beat que vendría a ser parecido a div y con la diferencia de que es muy bueno para la sincronización por ejemplo cuando tenemos una aplicación que funciona offline y está almacena datos y después cuando tiene internet tiene que sincronizar estos datos bueno a coach tv es muy bueno porque controla todos los tipos de conflictos que podrías llegar a tener también tenemos base de datos como hadoop casandra voldemort esos nombres que eligieron para las bases de datos pero bueno ahora tenemos una comparativa entre sql versus no sql las principales ventajas de las bases de datos relacionales son las siguientes primero la madurez ya que tienen demasiados años estando en el mercado por otro lado tenemos la comicidad esto quiere decir que si en el proceso de hacer alguna operación de guardado o eliminación surge algún tipo de error esto puede revertir la operación sin ningún tipo de problemas se realiza al 100% o no se realiza los estándares también están muy bien definidos todos se escriben bajo el estándar de sql y también tiene una sencillez en la escritura que bueno es su principal aceptación ya que la escritura se asemeja mucho al lenguaje humano la comprensión de las operaciones y la forma en que se escribe ya lo vamos a ver cuando veamos más sql y si hablamos de las desventajas la principal desventaja es el crecimiento cuando estas bases de datos tienden a crecer demasiado el almacenamiento y el mantenimiento es sumamente difícil y costoso y suelen presentar fallas en el tiempo de la respuesta por otro lado tenemos cambios en la estructura si tenemos que cambiar la estructura de la base de datos suele ser bastante complicado a veces no causa problemas pero si ya tiene la base de datos funcionando con muchos datos y tienes que hacer un cambio importante la verdad que se vuelve sumamente complicado hacer una refacturación ahora si hablamos de no sql las principales ventajas es que es versátil es sumamente simple y fácil cambiar la estructura del esquema que hayamos armado podemos agregar nuevos campos sin ningún tipo de problema y es justamente por esto que se hizo bastante famoso y se empezó a utilizar muchísimo a qué me refiero a que si por ejemplo tenemos un documento no te estamos guardando datos de una persona y queremos a crear un campo nuevo como puede ser pasaporte lo agregamos y ya sin ningún problema y se guarda porque es como ese documento aislado que se está guardando otra ventaja muy importante es el crecimiento horizontal soportan una escalabilidad descentralizada es decir soportan estructuras distribuidas si durante la operación se ve que el desempeño de los servidores tienden a bajar un poco se instalan nuevos nodos operativos para que balance en la carga del trabajo ya esto se lo conoce como crecimiento horizontal o sea en vez de tener un solo servidor que se le va agregando más memoria ram más disco duro es simplemente se van creando muchos servidores de manera horizontal por otro lado otra ventaja que tiene es la optimización los sistemas no sql tienen un algoritmo interno para reescribir las consultas escritas por los usuarios con las aplicaciones programadas esto con el fin de no sobrecargar el rendimiento de los servidores y mantener un nivel óptimo de todas las operaciones ahora si hablamos un poco sobre las desventajas la principalmente desventaja puede ser la comicidad que justamente es que no todas las bases de datos contienen la característica de la comicidad en la información esto quiere decir que la información en ocasiones no es consistente puede ser diferente en cada uno de los nodos replicados pero bueno esto depende obviamente del proyecto en proyecto y qué tipo de base de datos conviene utilizar en mi proyecto bueno cada proyecto es un mundo y va a depender mucho de cómo esté organizado y qué quieren hacer por ejemplo si estás diseñando un proyecto que es más del estilo de una red social en donde puedes guardar todo tipo de información y todo tipo de datos y además puede tener una escalabilidad en el lado del servidor de importante quizás lo mejor sea utilizar algo como montgó dv o sea una base de datos no relacional en cambio si tu proyecto es más un sistema de gestión en donde toda la información está bien estructurada y definida quizás lo mejor sería algo más como una base de datos mysql no cierto una base de datos relacional bueno amigos espero que les haya sido muy útil esta información si les gustó háganmelo saber con un comentario y nos vemos en el próximo vídeo hola amigos en este vídeo tutorial vamos a aprender cómo diseñar una base de datos relacional la primera pregunta que nos tenemos que hacer es en qué momento del proyecto tenemos que diseñar la base de datos bueno en la mayoría de los proyectos en que trabaje principalmente se comienza definiendo los requerimientos que va a tener el sistema todo el scope o sea que es lo que va a ser que funcionalidad va a cubrir todo esto después se desarrollan pantallas de cómo se vería el sistema por ejemplo si estamos desarrollando una aplicación mobile vamos a hacer el inicio de sesión después cómo se va a ver el dashboard cómo se abre la gestión de usuarios y se va viendo todo el flujo de pantalla en pantalla recién después ya estamos como más preparados como para armar un primer diseño de nuestra base de datos la idea es que a la hora de diseñar la base de datos es identificar todos los componentes e ir armando la estructura de cómo debería ser ahora no tienen que cometer el error que muchas veces se cometen y diseñar la base de datos y ya ejecutar todo todo el código sea crear la base de datos con toda esa estructura definida lo ideal es primero diseñar una base de datos el diseño solamente y después ir creando partes de las bases de datos conforme se vayan programando los componentes así que el primer paso a la hora de diseñar una base de datos es identificar los componentes que va a tener nuestro sistema pueden ser por ejemplo que tenga usuarios que tenga clientes que tengan un control de stock lo vamos anotando solamente como para tener más o menos una idea de todos los componentes que va a tocar el sistema y ya después lo vamos a ir dividiendo parte por parte para definir la estructura de tablas que debería tener lo importante a la hora de diseñar la base de datos es tratar de predecir lo más posible todos los componentes que vamos a necesitar en nuestro sistema pero es muy difícil predecir absolutamente todo no crean que con un primer diseño se van a tener definidas totalmente su base de datos lo ideal es bueno tratar de adelantarse lo más posible pero bueno si no cubren todo no importa eso ya se va a ir viendo conforme se vaya progresando el desarrollo ahora supongamos el siguiente ejemplo digamos que tenemos que desarrollar la base de datos para academias educativas entonces nosotros estudiando identificamos que tenemos que guardar los datos de profesores de alumnos de cursos las notas que van a tener los alumnos pero en este caso en que vamos a hacer la base de datos no para una sola academia sino que van a poder haber varias academias educativas en nuestro sistema también vamos a identificar el componente academia ok ahora cómo diseñamos las tablas para almacenar todos estos datos si nosotros quisiéramos por ejemplo imaginar esto en excel lo podríamos ver de la siguiente forma por un lado tendríamos aquí tenemos armado el listado de materias ponemos bueno el nombre que tiene cada materia matemática física historia bien y bueno le ponemos un identificador a cada materia como para diferenciarla un número de identificación después podremos tener el listado de alumnos no es cierto en donde tenemos nombre apellido y luego dejo ahí nomás solamente en este ejemplo pero obviamente podría tener dirección teléfono número de documento fecha de nacimiento es importante que en las bases de datos hay que tratar de no guardar resultados sino datos ya formados como puede ser la fecha de nacimiento o sea en vez de guardar la edad de la persona que cada año ese dato va a cambiar es preferible guardar la fecha de nacimiento ya que con la fecha de nacimiento se puede calcular siempre la edad de esa persona y por otro lado aquí tenemos el listado de calificaciones que va a tener cada alumno entonces podemos ver que tenemos la materia matemáticas y pedro- moyano se sacó un 7 o que tenemos física y eduardo garcía se sacó un 8 y así con cada nota no es cierto ahora que suceden en el diseño de bases de datos relacionales la idea justamente es tratar de optimizar todo este espacio a la hora de crear filas de las tablas si vemos estamos repitiendo mucha información aquí estamos poniendo las materias repetidamente y el nombre de los alumnos también eduardo garcía figuraba varias veces y todo esto son caracteres que pesan en nuestro disco duro y cuando tenemos millones de datos y varias tablas hay un momento en que todo esto repercute negativamente y además la actualización de los datos se hace muy difícil si yo le quiero cambiar por ejemplo el nombre a pedro moya no no es cierto porque me equivoqué al ahora no era pedro era juan lo tengo que modificar en esta tabla y también lo tengo que modificar en esta otra tabla en todas las tablas en donde figura ese nombre bueno la idea justamente de las bases de datos relacionales y resolver este problema manejándose por ahí this entonces un ejemplo simple no cierto sería el siguiente en cada listado cada alumno tendría una idea que lo identifica por ejemplo pedro moya no tiene el número uno y cada materia también tiene una idea y lo identifica y a la hora de utilizar las calificaciones en vez de utilizar el nombre vamos a utilizar esta idea y en vez de almacenar el nombre completo ponemos por ejemplo alumno aidé y el número que lo representa este uno va a estar haciendo referencia a este alumno de aquí a pedro moción ahora el alumno con haití 2 va a hacer referencia al número dos eduardo garcía y lo mismo con las materias en la materia hay de uno hace referencia matemáticas la materia hay de dos hace referencia física y vamos guardando las notas a su vez también podemos tener una idea para reemplazar para representar esta transacción que se hizo de la calificación siempre es mucho más fácil diferenciar cada pila agregada en una tabla a través de un identificador cada columna tiene un tipo de datos como podemos ver ahí tiene número nombre y apellido tiene textos y en los sistemas de base de datos tenemos los siguientes tipos de datos ahora puede ser que varía un poco dependiendo el sistema normalmente en mysql y oracle varía un poco pero en general la mayoría de las bases de datos de sistemas relacionales se manejan con estos tipos de datos en primer lugar podemos ver que tenemos el tipo de datos char que éste hace referencia a un carácter entonces aquí podemos guardar un conjunto de caracteres le podemos desear un tamaño y este tamaño puede ir entre 0 y 256 entonces podríamos guardar palabras y textos muy pero muy cortitos como un tweet puede ser si un libro que alcanza la cantidad de caracteres por otro lado tenemos texto que text te permite guardar textos prolongados no no se queda pensando bueno pero qué necesidad de tener char y text si context puedo guardar todo lo que abarca char y muchísimo más lo que sucede lo siguiente si diseñas una base de datos que funciona todo context al poner un campo en text está reservando un espacio muy prolongado para un dato que quizás no lo necesite por ejemplo si tienes género género lo puedes guardar efe como femenino y m como masculino y si le pones un tipo de dato un text a esto está reservando mucho espacio para algo que no lo va a usar y qué sucede cuando empiezas a tener miles de transacciones millones de filas guardadas todo esto va a hacer una suma de peso muy grande y la base de datos va a ser muy pesada por eso es importante saber qué tipo de datos usar en cada caso seguido de char tenemos también marchar que básicamente es un conjunto de caracteres muchísimo más grande abarca desde 0 hasta 65.000 después ya pasamos a los números el primero es el team int que vendría a ser un número muy pequeño y este número puede ir de menos 128 a 127 esta cantidad de justamente por un byte un baile puede abarcar del 0 256 pero para que abarque un número negativo bueno se lo corta a la mitad y ya no es más 128 porque el 0 también cuenta pero bueno es muy técnico o sea esto este último punto este número normalmente sirve para guardar también valores julián os puedes guardar por ejemplo si algo es truco falls simplemente como poniendo un 1 para verdadero y 10 para falso puede ser por ejemplo si tienes una columna que se llama es administrador y le pones 1 significa que si es administrador y si le pones 0 significa que no así de simple ahora ya para números mucho más extensos mayores que 127 se utiliza inta que como ven es bastante amplio acá no logró diferenciar cuánto es creo que son unos 2 mil millones en menos dos mil millones hasta más 2.000 millones que sucede es bastante extenso pero quizás no suficiente dependiendo del tipo de dato que estés usando si si estás guardando el peso de planetas en kilos quizás te quede pequeño en algunos casos cuánto pesará el sol pero quizás no sea el tipo de dato más apropiado para eso en ese caso deberías pasar a un número mucho más grande y utilizar viking que bueno a quizás no voy a tratar de tratar de pronunciar este número pero es muchísimo mayor ahora si tienes que guardar números con coma lo ideal sería utilizar doble hay un tipo de dato más que es float que es para números con coma más pequeño pero con doble abarcas ya prácticamente los números más grandes no es cierto si estás haciendo transacciones económicas sería ideal no tener ningún tipo de error a la hora de guardar el número de dinero que tiene un cliente por ejemplo ya que si en algún momento hay una equivocación de esto no queremos errores en ese lugar así que para coman lo ideal para números con coma lo ideal es utilizar doble ahora para fechas tenemos el tipo de datos que solamente abarca la fecha el año mes y día nada más pero si quisiéramos guardar la hora minutos y segundos ahí deberíamos pasar al tipo de datos del time que justamente hace es guardar la fecha más el momento y también hay otro tipo de datos que se llama timestamp que también funciona como day time te permite guardar el año el mes y la hora y también los minutos segundos y el día no es cierto pero la diferencia con gaitán es que time star va a funcionar hasta el año 2038 y a mí me sorprende porque hay muchos programadores que no saben esto y están diseñando todas sus bases de datos con time time y en el año 2038 muy probablemente tengamos un colapso de bases de datos pero bueno seguramente empezaron a salir que iu tours y cosas para solucionarlo como sucedió con la crisis del año 2001 cierto pero bueno un dato interesante así que ya saben para fecha y hora traten de utilizar data [Música] para armar el diseño de la base de datos y de todas las tablas puedes hacerlo como quieras puedes hacerlo con bloc de notas con paint con papel y lápiz se quiere como te quede más cómodo yo últimamente empecé a utilizar esta herramienta que la verdad está bastante interesante se llama sql dbm puntocom que te permite armar este diseño de base de datos entonces cuando entramos a un proyecto nuevo simplemente hacemos lo siguiente le damos clic derecho y ponemos agregar tabla entonces volviendo al ejemplo de la academia vamos a tener por un lado primero una academia así que vamos a crear la tabla se va a llamar academias aquí está poniendo pk columna no es cierto hace referencia a primar y que entonces aquí vamos a guardar el dato el identificador así que le pongo el nombre a id si hago clic acá me pone el tipo de dato le voy a poner integrar ahí lo tenemos entonces ya tenemos nuestra primer y que ahora aquí abajo me deja poner una columna nuestra academia que va a tener bueno tiene que tener un nombre así que le pongo nombre ahora el tipo de dato vamos a poner marchar y con una longitud digamos de 100 caracteres como para no quedarnos cortos y más puede tener nuestra academia puede tener un teléfono el teléfono en vez de guardarlo como un número puede ser que tenga un + un numeral puede variar mucho de lugar en lugar no puede utilizar paréntesis y además si informan de que sea un número concreto si no vas a hacer ninguna operación con ese número lo ideal es guardarlo como texto ya que no es que vas a sumar un teléfono más otro teléfono así que le voy a poner de marchar y le voy a dejar bueno 45 creo que está bien y podría tener una página web la academia así que voy a poner mi nombre web marchar y también le vamos a poner 100 caracteres ok por ahora lo vamos a dejar ahí bien simple ahí tenemos nuestra tabla de academia creada bien y ahora tenemos que crear la tabla de profesores ok entonces tengo profesores a ver que se me movió aquí perfecto le damos editar y ahí está al igual que academias también va a tener un identificador le voy a poner de nombre hay de tipo de dato integral de columna un profesor puede tener un nombre también le ponemos un marchar en el bar eso es uno de los tipos más utilizados en nombre no estoy seguro cuándo le voy a dejar 80 por si tiene segundo tercero o cuarto nombre uno nunca sabe y apellido también marchar de 80 ahora el profesor también podría tener un email para los emails la máxima longitud que puede tener un email es de 255 me acuerdo que había leído esto en alguna vez si no bueno búsquenlo pero creo que era eso también puede tener un teléfono y la longitud que le voy a poner al teléfono la voy a mantener en 45 para que sea consistente con el teléfono que pusimos en academia bien otro dato importante tendría que ser que el profesor pertenece a una academia si no tendremos un registro de profesores y no sabríamos a qué academia pertenece cada profesor agregamos una columna más que se llame academia guión bajo hay d el tipo de datos va a ser indagados ya que es una idea de esta forma integral recordemos que son números aciertos y ahora para hacer que esta academia se asocie a este aire vamos a hacer lo siguiente ponemos editamos academia y hacemos que haití tenga una relación sip en academia y me creó una nueva vamos entonces voy a editarlo y a esta última la voy a borrar y la voy a agregar aquí y queda mejor a ver ahora sí de esta forma está haciendo una relación a esta tabla entonces profesores va a tener una academia perfecto ya que le pone la efe acá que significa for in que ya tenemos profesores vamos a agregar en la tabla de alumnos ponemos alumnos un alumno es bastante parecido en una idea el tipo integral vamos a tener el nombre que pueda tomar char apellido [Música] nombre y bar char tiene que tener 80 para que sea consistente con la tabla de profesores ya que en profesores usamos esos dos tipos de datos [Música] email no sé 255 que más teléfono puede ser que tenga teléfono para contactarlo y ahí lo tenemos bien ahí tenemos nuestra tabla de alumnos ahora este alumno también va a pertenecer a una academia como para diferenciarlo así que aquí editamos academias nuevamente hacemos un reflexión sip y esta vez con la tabla de alumnos y ahí nos creó el aire le vamos a cambiar el nombre y le voy a poner a academia guión bajo aire normalmente en el diseño de base de datos bueno no se pueden utilizar espacios pero en vez de utilizar el camr cakes como es en programación que se pone cada palabra mayúscula si escribes por ejemplo hola cómo estás esto es camel case en bases de datos se suele utilizar el guión bajo que es muchísimo más fácil de leer ok entonces ahí tenemos nuestra tabla de alumnos ahora tenemos cursos creamos una tabla más que se llame cursos también va a tener una idea y ponemos integrar que tenemos un nombre del curso el nombre le voy a poner sin caracteres y quizás podríamos tener una descripción del curso en donde se detalle bien todo lo que se va a ver y todo lo que se va a aprender y esta descripción al ser un texto grande le voy a dejar text como para que sea muy prolongado y ahí lo tenemos perfecto ahora a este curso lo va a dictar un profesor así que un profesor va a estar asociado a un curso le damos el religión sí y le hacemos clic ahí y ahí nos creó esta columna que va a ser venida del profesor así que editamos de vuelta y a ver que me está quedando un poquito alejado ahí está necesitamos devuelta y en donde dice aquí le vamos a poner profesor y ahí lo tenemos perfecto mientras vamos diseñando una base de datos es muy importante hacernos la siguiente pregunta si esta tabla tiene muchos de esta otra por ejemplo un alumno puede tener muchas academias bueno en nuestro diseño no un alumno solamente puede tener una sola academia y si preguntamos una academia puede tener muchos alumnos bueno en ese caso si entonces en la tabla alumnos va a tener academia y de solamente este por qué academia hay una sola pero alumnos hay muchos los mismos sucede con casi todo profesor es un profesor puede tener muchas academias no va a tener solamente una academia y va a pertenecer a una sola pero una academia puede tener muchos profesores entonces también profesor tiene la academia idea y academia sería uno solo y profesores muchos ahora con los cursos qué sucede con los cursos un profesor puede dictar muchos cursos bueno yo creo que sí que podría dictar muchos cursos pero un curso puede tener un solo profesor o varios profesores bueno en ese caso un curso solamente puede ser dictado por un solo profesor entonces por eso aquí estamos poniendo profesora eddy y entonces hay un solo profesor por cada curso tenemos muchos cursos pero un profesor por cada curso ahora supongamos el siguiente caso como asignamos un alumno a un curso acá sucede lo siguiente un alumno puede tener varios cursos si un alumno puede estar cursando varios cursos tranquilamente y un curso puede tener varios alumnos también acá estamos en el caso de mary tumen y se llama en inglés que es cuando una tabla puede tener muchos de otra tabla entonces para solucionar esto lo que se hace es crear una tabla intermedia así que creamos una tabla más en este lugar y de nombre le voy a poner en alumnos bajo breve por cursos de esta forma puede tener cualquier nombre pero la idea es que se entienda que acá vamos a guardar alumnos y cursos y esto va a tener una idea para identificar cada transacción el tipo de dato también integral y antes de continuar le vamos a hacer la relación que debería tener entonces primero hay de mantener una relación sip con esta tabla ahí está alumnos y ahora le cambia el nombre aquí y esto va a ser alumno y de esta forma ok entonces en esta tabla estamos guardando el alumno bien cursos también no hacemos el reflexión sin nuestra forma y se le asignamos aquí y me creó en la nueva columna le voy a poner de nombre curso hay de perfecto entonces en esta tabla vamos a poder almacenar la información de qué curso está realizando cada alumno y ahí lo tenemos ya va tomando una forma más compleja esta base de datos solamente nos falta almacenar las notas creo que en el diseño a esto le había puesto de nombre en vez de cursos le había puesto en materias pero bueno se entiende más o menos lo mismo ok ahora creamos una tabla más y de nombre le vamos a poner notas también va a tener siempre una idea podría no tenerlo si identificamos como clave primaria al alumno y al curso pero la verdad no vamos a terminar liando demasiado así que yo la verdad siempre aconsejo tratar de crear una idea independientemente de la tabla así que por cada tabla creamos una idea de esta forma y esto va a tener bueno va a tener una nota una nota como dijimos puede tener un valor con coma sí así que le vamos a poner un tipo de datos doble y ya aunque doble el zoom es para un número muy grande con coma acá estamos hablando del 1 al 10 cuando mucho a nacional antes del 1 hacían siendo pero para el número más chicos podemos usar float ahí lo tenemos ok ya tenemos la nota ahora tenemos que asignarle un alumno vamos aquí lección sip con notas perfecta les cambiamos el nombre alumno ha ido y ahora vamos a agregarle un curso le ponemos andry lección si la vuelta y ahí tenemos un curso lo editamos curso aire y perfecto bueno ya tenemos nuestro primer diseño de base de datos más o menos terminado esto seguramente con el tiempo va a ir cambiando se van a ir agregando tablas más columnas pero bueno ahora esta página bueno de una herramienta bastante útil que si vamos aquí en esta parte nos deja generar el código sql para poder utilizar estas tablas y vamos a ver bien en profundidad cómo es el código sql pero está bueno para que lo sepan entonces eso sí selecciono por ejemplo a ver alumnos y pongo en play aquí me generó el código sql para crear la tabla alumnos automáticamente no me deja seleccionar varias porque ahí ya es un plan para do pero podemos ser ir haciendo una por una si hago alumnos por cursos ahí tengo el código sql automáticamente y ya vamos a entrar en detalle de qué hace este código ya tenemos el diseño de la base de datos terminado pero todavía no tenemos una base de datos en sí no tenemos algo creado y funcional bueno para dar el primer paso en esto de diseño de base de datos vamos a trabajar con php mayor min para eso tenemos que descargar un programa que probablemente yo lo tenga que se llama samp es cierto simplemente le dan descargar realidad instalar y siguen los pasos es lexnet next así de simple y ya está una vez que lo hayan descargado lo que tenemos que abrir ponemos en inicio sham y ahí se está ejecutando para que se abrió en la otra ventana ahí lo tenemos aquí tenemos sham vamos a levantar por un lado mysql podemos estar ya tenemos nos dice que levanto mysql en el puerto 33 06 entonces ahora necesitamos un programa para conectarnos a este puerto 33 06 y conectarnos a la base de datos de mysql en vez de utilizar un programa samsa nos trae otro definido qué bueno funcionaba con hp así que levantamos este de aquí que se llama apache le damos start tenemos un momento y ahí levantó en el puerto 80 qué sucede si le dieron clic en start y no le funcionó y muy probablemente sea que tengan algún proceso que lo está bloqueando como puede ser skype bm water que otra vía no creo que esos son los principales de sucedido de que tenía que cerrar esos procesos como para que funcione esto pero vayan probando y de seguro que no funcione porque ya tenemos levantado el puerto 80 del apache así que ahora vamos a chrome y buscamos escribimos localhost barra php by admin de esta forma y presionamos center si están utilizando otro y de quizás tengan que escribir en la m en mayúscula y la en mayor pero con esto les debería funcionar perfecto entramos a esta página entonces lo que hicimos a ver levantar un servidor local y que nos trae esta herramienta que se llama php miami y este gestor nos permite crear bases de datos modificarlas armar tablas todo una manera muy simple y también ejecutar código sql que es para gestionar las bases de datos así que aquí a la izquierda tenemos las bases de datos vamos a crear una nueva asignatura aquí y de nombre le vamos a poner academias ahora en el tipo de datos vamos a utilizar un tc 8 donde lo tenemos etc 8 bien que normalmente no nos va a traer problemas pero con esto debut f 8 significa el tipo de caracteres con los que va a guardar la base de datos que como saben varía en chino árabe en américa maría bastante pero con el f8 bien bajo bien no van a tener ningún tipo de problemas sea el lenguaje que sea así que con esto creamos la base de datos esto se podría haber hecho con comandos también con todo código sql pero como para comenzar creo que está bueno primero hacerlo con una interfaz gráfica y qué tenemos que hacer bueno vamos a crear las tablas lo que sí hay que hacerlo en un orden especial aquí tenemos nuestras tablas si creamos primero la tabla notas vamos a tener que poner el alumno haití y el curso haití y esas columnas todavía no existen así que se nos va a ser complicado poder referenciar las así que tenemos que arrancar por tablas que no tengan ningún tipo de ranking de clave foránea en la primera va a tener que ser academias entonces ponemos el nombre de la tabla academias a ver cuántas columnas tiene tiene 1 2 3 y el 4 4 columnas perfecto [Música] bien el primer nombre hay de el tipo de datos interior si vamos más a la derecha acá vamos a tener una letra que es ahí que esto significa auto incremento que básicamente es esto para que vaya aumentando la 1 cada vez que se cree un registro nuevo va a ser uno después dos después tres y ese va a ser el aire que lo va a diferenciar del resto ok entonces ese auto incrementa y cuando le ponemos auto incrementa automáticamente nos puso que era primary que o sea clave primaria el próximo nombre ponemos nombre marchar y qué tipo de datos 100 ok perfecto el siguiente teléfono igual teléfono web marchar sean marcharse era así 1 teléfono 45 ahí lo tenemos una vez que pusimos todos estos datos ahora le tenemos que dar clic aquí abajo de todo en save hay a primera vista es un poco complicado ver tantos botones y inputs distribuidos por todos lados pero después de usarlo mucho tiempo se acostumbran le ponemos 6 [Música] y listo ahí nos creó la tabla academias perfecto ahora vamos a crear otra tabla más y la próxima puede ser cualquiera que solamente integre la academia saidi o sea puede ser profesores o alumnos bueno vamos a crear profesores tiene 1 2 3 4 5 6 columnas porque ahí donde estábamos acá vamos a crear una más bien haga me creo las columnas por defecto les faltan dos así que pongo dos más go y ahí tenemos las seis columnas nombre de la tabla profesores también tenemos de nombre he sido teléfono email y tenemos academia haití aunque hay de va a ser igual que la otra auto incremento tenemos nomás la primer y que este es el tipo de indexar in the índice nombres marchar decidido marchar teléfono marchar email marchar nombre creo que era cien teléfono 45 el nombre era 8 80 apellido 80 y 1.255 bien ahora qué sucede con la cadena pero esta columna vamos a hacer lo siguiente primero creamos la tabla le damos clic en save de esta forma ahí lo tenemos perfecto ahí tenemos profesores y si vamos aquí a profesores vamos a tener el campo estructura aquí arriba le damos clic bien ahí tenemos la estructura de la tabla nuevamente vemos acá la columna el tipo de dato y aquí tenemos una parte que dice relation view que bueno es la vista de relación le damos clic aquí y acá nos deja hacer una relación a la otra tabla así tenemos que ponerle un nombre a esta relación que está haciendo le podemos poner academia y un bajo efe acá de fortín que lo que hay acá tenemos que elegir la columna la cual está utilizando ponemos a cadena de haití después hace referencia a la tabla a la base de datos academias a la tabla academias ya la columna ay de no la pone por defecto y esto de dónde late un update significa lo siguiente qué sucede si nosotros intentamos eliminar una fila de la tabla profesores o sea tratamos de por ejemplo intentamos eliminar una academia pero esa academia tiene profesores qué acción va a tomar bueno podemos elegir acá lo que queremos que haga si ponemos street significa que si se trata de eliminar una academia y tiene profesores va a impedir que se haga esto no va a funcionar si nosotros ponemos cascada lo que va a hacer es eliminar todos los profesores que tengan o sea si eliminamos en una fila no es cierto que sea de una academia determinada automáticamente me va a eliminar todos los profesores que la contengan en este caso lo que se suele practicar es algo que se llama soft elite o bueno que en español sería eliminar bueno esto es algo español eliminación suave sería bueno no lo dejamos en sutil y que básicamente esto lo que hace es poner un dato más por ejemplo una columna que se llame está activo o no o sea un valor buljan o si está activo significa que está ok y si no está activo significa que está eliminado entonces verdaderamente cuando alguien intenta eliminar una fila o algo por el estilo no se está eliminando nunca simplemente se está cambiando este valor por activo o inactivo y por eso cuando tú crees que estás borrando todas las publicaciones que hiciste de facebook no se están borrando verdaderamente están guardadas en una base de datos solamente que no te las están mostrando pero bueno si quieren eso lo vemos más adelante en más detalle por ahora lo vamos a dejar así en restricto y le damos a guardar perfecto ahí ya tenemos nuestra base nuestra tabla profesores creada y ahora tenemos que continuar con la tabla de alumnos así que creamos otra tabla que se llame alumnos repetimos lo mismo es más de lo mismo nombre apellido que más quemas email agregamos una fila más teléfono el aire y también tiene que ser auto incremente y no tenemos en nombre de variar apellido bar char y mel también teléfono también 55 80 80 para que mantenga la congruencia y teléfono 45 me faltó algún dato hablar vamos a ver bueno la academia y de también tiene que tener así que lo agregamos academia va a ser del tipo de interior perfecto y lo guardamos ahí tenemos nuestra tabla de alumnos y alumnos va a estar relacionada a academias así que le voy a poner también una academia eficaz no voy a poner academia y un bajo alumno para poder diferenciar lo que columna academia y de base referencia a la base de datos academias a la tabla academias y hay de perfecto lo guardamos y listo siguiente ya tenemos la tabla profesores así que podemos hacer la tabla curso que cursos tiene un profesor solamente acá no es necesario asignarle una academia en la tabla cursos ya que podemos saber a qué academia pertenece un curso por por las conexiones que va haciendo si un curso tiene un profesor y un profesor pertenece a una academia ya sabemos a qué academia pertenece bien vamos a crear esta tabla le ponemos de nombre cursos hay de nombre y más tenía descripción y profesor profesor un bajo haití traten siempre de evitar los acentos en los números de columnas porque bueno puede traer problemas [Música] vamos a la derecha auto incrementa descripción era del tipo text ya que va a guardar textos grandes nombre mantenemos bar char de 100 caracteres y profesor lo dejamos [Música] además guardar [Música] tenemos cursos vemos estructura flexión set y le creamos el constraints el alumno va a ser curso [Música] acá le ponemos profesora y de en claro esta sería profesor curso entrante tabla profesores y aire guardamos perfecto que nos falta ahora si tenemos que asignar alumnos y cursos debemos retirar esta tabla intermedia ok vamos a crear una tabla más que se llame como en el nombre alumnos por cursos alumnos por cursos vamos a tener una idea un alumno hay de un curso aire de esta forma la primera va a ser auto incremento y el resto queda así como esta y le damos guardar [Música] perfecto le damos el replay sión sip el nombre le vamos a poner me quedo mal el nombre me quedo alumnos con una equis bueno les vamos a cambiar el nombre a ver dónde se hace esto bueno no veo la opción por acá así que creo que va a ser más fácil ejecutar un código sql que es súper simple si vamos aquí a la parte de sql acá podemos escribir el código para hacer todo lo que hicimos pero bueno desde consola vamos a poner en los siguientes ponemos pri name el nombre de la tabla alumnos está con la equis es como está ahora copió esto y le voy a poner tú y le quitó la equis de esta forma bien acá me parece que debería funcionar es falta una palabra frame table renombrar tabla este nombre a este otro estas cosas no es necesario que están pero bueno yo los dejo ahí y le doy aquí abajo la derecha de todo dice go clicka ahí y ahí me lo renombró perfecto acá no se ve porque no está actualizado si le doy clic en academias ahí sí está actualizado o sea si le damos un respuesta nos veríamos ahí está perfecto creo que nos habíamos quedado en el reflexión si ponemos alumno alumnos cursos de acá y esto va a hacer referencia el alumno haití a la tabla alumnos ahí lo tenemos agregamos una más y esta va a ser al revés curso alumno y ponemos curso hay de base de datos academias corro si se ve mejor perfecto [Música] tabla cursos y ahí queda aire ok ahí lo tenemos y guardamos perfecto qué sucede si no hacemos estas relaciones bueno la base de datos también funcionaría podríamos guardar datos y podríamos hacer las consultas para que traigan la información necesaria lo que si al hacer estas relaciones a especificar exactamente cómo se relaciona una tabla con otra tabla a la hora de hacer consultas va a ser muchísimo más rápido más que nada para base de datos grandes cuando se tienen cientos de miles de registros que nos falta notas hacemos notas y ya estaríamos veamos una tabla más las notas [Música] el valor de la nota habíamos dicho que iba a ser de hoy lo tenemos en curso y alumno y le ponemos un auto increment al aire perfecto guardamos ok ahora notas le agregamos también las relaciones y ponemos en la nomenclatura que eligen aquí pagan o como quieran como se les haga más fácil voy a poner nota alumno más referencia a la columna alumna idea la tabla alumnos si hay de agregamos una más que sea para el curso así como leemos no está curso a quien bajó fk para indicar que son por en qué le indicamos curso hay de bueno en esta parte de la derecha elijo cursos ahí nos quedan perfecto le damos guardar y ya está ya tenemos diseñada toda nuestra base de datos el chepe miami nos permite también agregar datos modificarlos y eliminarlos sigamos por ejemplo a academias no nos va a estar mostrando ningún dato porque no tenemos nada cargado podemos ir a insert y aquí podemos agregar información a una nueva fila a esta tabla el nombre de la academia podemos ponernos en academia online de argentina por ejemplo el teléfono escribimos el número de teléfono página web academia online argentina puntocom y después bueno todo esto es como para crear otro dato más pero no hace falta como dijimos demasiado porque sesión automáticamente le damos go y listo ahí nos creó automáticamente este código sql que inserta una nueva fila en esa tabla y ahora sí vamos a academias podemos ver que ya hay una academia creada en nuestra base de datos la podríamos editar tranquilamente eliminar o bueno hacer lo que nosotros querramos a esta base de datos si queremos la podríamos exportar tranquilamente hacemos clic aquí en exportar va a tardar un momento ahí lo tenemos y elegimos el formato en que queremos que se exporte puede ser en ccb en jason puede generar un pdf pero el más normal de todos es en sql ok y le damos que nos genere todo le damos go aquí abajo la derecha de todo y ahí nomás nos generó este archivo sql que es toda nuestra base de datos si la abro a quien visual studio code vamos a lograr un momento ok aquí lo tengo éste es más o menos el código que generó podemos ver que crea la tabla academias que hace un inserto en la tabla academias que es este valor que pusimos pero bueno no hay ninguna otra tabla solamente está la tabla academias eso es más que nada porque creo que aquí nos seleccione para que exporte todo claro al estar posicionado en la tabla academias me exportó solamente esa tabla si quisiéramos que no se exporte toda la base de datos tenemos que ir a la base de datos academias y ahí si hacer clic en export y ahora si es otra historia digamos go a ver qué está generando ahí lo tenemos ahora sí tenemos todo nuestro código sql para diseñar esta base de datos y tranquilamente podríamos irnos a la versión de producción a la versión online que tengamos e importamos este diseño de base de datos en otro lado simplemente haciendo clic en importar así que esto la verdad es que es bastante útil muchas veces lo utilice cuando diseñé alguna página web localmente y la tenía que subir al servidor simplemente las portaba de aquí la importaba de del otro lado bueno amigos hasta aquí este vídeo ya en los próximos vídeos vamos a aprender muchísimo más acerca del lenguaje sql y cómo crear consultas a la base de datos así que bueno nos vemos en el próximo vídeo en esta sección vamos a aprender a utilizar sql es el lenguaje que nos permite hacer consultas a la base de datos crear tablas modificar tablas modificar datos todo en inglés bueno significa extractor query linguas que traducido vendría a ser lenguaje de consultas estructurado y lo interesante de sql es que se inventó en 1976 ya tiene aproximadamente 50 años de creación bueno y si ves este vídeo mucho más adelante posiblemente más años todavía y para que vean lo sólido y rígido que es este lenguaje que todavía se sigue utilizando por tantos años que tenga lo invento ibm en 1970 había hecho una base de datos que se llamaba sistema erre y para poder consultar a esa base de datos y extraer información inventó este lenguaje que se llama sql pero recién en 1979 la empresa oracle vio potencial en sql y decidió inventar su propia base de datos y también sus propios sql modificado y lo comercializó y los llegó bueno al máximo potencial lo que quiero que entiendan es que ese q eres un lenguaje no una base de datos nosotros podemos tener diferentes tipos de base de datos como bueno la de microsoft sql server la de oracle ese q el light que está es más para celulares y mysql y que sucede estos son tipos de bases de datos y el lenguaje sql sirve para consultar estas bases de datos ahora lo que si el lenguaje sql varía un poco entre cada una de estas bases de datos no es lo mismo el sql de ahora aquí que el de sql de mysql si mantienen aspectos generales muy parecidos pero varía un poco cuando comienzas a aprender no notas casi diferencia pero cuando vas a un nivel muy avanzado si hay bastantes diferencias de todas formas si tienes que adaptarte de por ejemplo de sql de mysql al de oracle es fácil no es que es demasiado complicado si ya tienes los conceptos bien estudiados aparte sin ningún problema ahora vamos a los tipos de consultas que podemos hacer con sql primero la vamos a dividir en dos categorías por un lado las consultas que se encargan de la estructura de la base de datos y por otro lado el tipo de consultas que es más para modificar información o extraer información de la base de datos ok para definir la estructura de la base de datos tenemos las siguientes consultas por un lado create dave veis que básicamente sirve para crear una base de datos ya lo vamos a ver bien ahora ejemplos bien prácticos pero como para que vayamos viendo a grandes rasgos después tenemos brokeback veis que básicamente sirve para eliminar una base de datos y después tenemos create table para crear una tabla en donde vamos a guardar todos nuestros registros después podemos usar álter table para modificar esa tabla si quisiéramos agregar nuevas columnas o eliminar columnas y por último tenemos drop table que es para eliminar una tabla después si quisiéramos consultar o modificar información vamos a usar los dientes con mano primero select select es el comando más importante de todos nos sirve para hacer una búsqueda para seleccionar datos contar la cantidad de usuarios que hay registrados hacer consultas agrupando a los usuarios todo lo que sea algo de extraer información de las bases de datos ya sea que sea para mostrar un listado para armar estadísticas o para armar un reporte lo que sea se utiliza con el select ahora después tenemos por otro lado el insert que nos sirve para agregar datos a la base de datos después vamos a tener el update que sirve para modificar datos y por último el delete que bueno sirve para eliminar datos con estas consultas abarcamos la mayoría de uso de una base de datos con sql hay más tipos de consultas pero por el momento la verdad no nos va a hacer falta ok vamos a analizar estas consultas en más profundidad primero veamos la creación de una base de datos para crear la base de datos es súper simple simplemente tenemos que escribir create take beige y el nombre de nuestra base de datos bueno y al final punto coma el nombre es importante que no tenga espacios y la forma de escritura normalmente para todo lo que es base de datos se utiliza el guión bajo o sea en vez de utilizar un espacio siempre ponemos el guión bajo después para eliminar la base de datos escribimos drop the page el nombre de la base de datos y punto coma esto que dice efe existe es opcional no es necesario ponerlo pero si lo ponemos va a funcionar tanto por si existe la base de datos o por si no existe ya que si intentamos eliminar una base de datos que no existe escribiendo drop dead veis sistema veterinaria y no existe esa base de datos nos va a devolver un error en cambio agregando esto ya evitamos que devuelve ese error y que ejecuta la acción solamente si existe bueno supongamos el siguiente ejemplo digamos que queremos diseñar esta tabla por un lado tenemos el aire que va a ser el número que identifique cada una de estas filas por un lado tenemos el 1 el 2 y va a ir aumentando así constantemente después tenemos el nombre el apellido y bueno la fecha de nacimiento en esta tabla no se podría ser de usuarios de empleados es como algo simple de ejemplo ahora lo curioso es que a la fecha en sql se escribe de la siguiente forma se pone primero el año después un guión después el mes el día y recién después la hora ok si quisiéramos hacer esta tabla el comando sería el siguiente ponemos primero create table el nombre que va a tener nuestra tabla en este caso le puse usuarios abrimos paréntesis y bueno aquí va todo el código relacionado con las columnas pero lo que quiero que vean es que aquí se cierra el paréntesis y se pone un punto como siempre por cada comando que ejecutamos de sql le agregamos un punto y como al final que eso indica que ahí terminó ese comando bien ahora en la información de cada columna la vamos poniendo una a la vez y la vamos separando por coma ponemos primero que va a tener un aire ok después le indicamos el tipo que va a ser esa columna en este caso va a ser de tipo íntegro que sería un número y entre paréntesis y le pone el once ya que bueno ese sería como el tamaño máximo del número después le podemos agregar esto que está en rojo es opcional no te nulo significa que ese valor nunca puede ser nulo y en el caso del aire que va a ser el número que identifique a esta fila nunca puede ser nulo y también para el aire se le puede agregar esto también es opcional este valor que significa auto incremento que significa que va a ir aumentando de a uno ahora este lenguaje que estamos viendo aquí es propio de mysql si quisiéramos hacer un auto incremento en la base de datos de oracle de pl sql es diferente no se puede poner es tomando aquí sino que hay que hacer algo diferente una secuencia por separado que bueno si quieren lo podemos ver en otro vídeo pero nos vamos a centrar más que nada en el lenguaje para mysql después acá creamos una columna nueva que se llama nombre el tipo de dato es marchar con un tamaño de 80 marchar bueno ya dijimos que son los textos no es cierto con una máxima cantidad de caracteres de 80 le puse que no es normal pero podría tener noble eso es como ustedes quieran el apellido también el tamaño de caracteres fíjense que siempre separado con una coma si no le ponen esta coma les va a dar un error y el último dato fecha nacimiento el tipo de dato que le puse es daytime no estoy utilizando tanques tan ya que times stamp tiene un límite que es en el año 2038 o sea está y está tan están no va a funcionar correctamente para ese año aunque muy probablemente todas las bases de datos se parchean de alguna forma y los solucionen y se va a poder seguir utilizando pero por eso recomiendo utilizar day time y también esto guarda fecha y hora en este caso lo dejo como nulo porque bueno puedo permitir que este valor sea nulo y por último al final de la consulta de crédito bold empiezan a ver más indicaciones sobre las columnas en este caso la única indicación que le estoy poniendo es esto que es primary king y entre paréntesis le pongo el aire con esto le indicó que el aire va a ser la clave primaria va a ser la forma en que va a identificar la tabla que esa columna es la que diferencia a cada fila este comando es importantísimo que se lo sepan de memoria para nada yo la verdad sea no sé tengo como 10 años programando y todavía no me acuerdo este comando siempre que lo tengo que escribir lo termino buscando en google o luego por el estilo pero está bueno saber entender la lógica de cómo funciona después si queremos borrar una tabla simplemente escribimos drop table y el nombre de la tabla usuarios y también terminamos con punto y coma este y sexies también es opcional que significa que si la tabla existe la va a borrar y si no existe no hace nada ya que si la tabla no existía y tratamos de hacer un drop table de una tabla que no existía nos va a devolver un error entonces siempre ponemos esto nos evitamos cualquier tipo de errores ok y qué pasa si ya tenemos nuestra tabla creada ya la tenemos llena de datos todo y queremos modificar algún valor de esa tabla o sea queremos agregar más columnas no vamos a borrar la tabla con todos los datos y crear de vuelta la tabla con esas columnas agregadas para eso tenemos los comandos que nos permiten modificar tablas si quisiéramos agregar nuevas columnas tenemos que poner alter table el nombre de la tabla en este caso usuarios a gollum y la columna que queremos agregar por ejemplo quisiéramos agregar un teléfono y le indicamos después los tipos de datos propios de la columna igual que en el punto anterior podemos variar el tamaño que va a tener este texto o sea va a ser de 45 caracteres y después vienen los valores opcionales en este caso le pongo null que significa que ese valor podría estar nulo y no pasa nada y cerramos la consulta con un punto y coma ahora si quisiéramos eliminar una columna lo que tenemos que hacer es escribir alter table en el nombre de la tabla después ponemos drop y el nombre de la columna y por último bono punto coma entonces si ejecutamos estos dos comandos vamos a estar agregando la columna teléfono y después eliminando line no vamos a ver hecho nada y como hacemos si quisiéramos modificar una columna existente bueno el comando es bastante parecido a agregar columnas simplemente tenemos que poner alter table el nombre de la tabla y después alter columna para modificar la columna o sea alter es como modificar no cierto elegimos el nombre de la columna y las propiedades que va a tener ahora esta columna en este caso la estoy achicando antes era de 45 y ahora lo modificó a 35 y qué sucede si a un texto que era de 45 lo acortó a 35 y tenía datos que eran de 45 caracteres bueno lo que va a hacer con todos los datos viejos por ejemplo digamos en este caso que teníamos teléfonos que llegan hasta los 45 caracteres y ahora modificamos esa columna poniéndole un tamaño de 35 lo que va a hacer es cortarlos simplemente así que hay que tener cuidado con esto del alter table y hacerlo muy seguro de acuerdo a lo que vas a hacer y estar seguro de que no vas a perder datos que es lo menos que queremos hacer lo que vamos a hacer ahora es poner en práctica los comandos que aprendimos a utilizar lo que sí vamos a necesitar un nido para poder trabajar en el vídeo anterior aprendimos a utilizar php my admin si quieren pueden utilizar tranquilamente s&d si no también está esta página web que está bastante buena que el link es sql fit la puntocom aquí los tienen si lo quieren ver y está buena porque entras y sirve justamente para esto para practicar puedes elegir el tipo de base de datos que quieres mysql ahora que la que tú quieras y escribes directamente las consultas aquí haciendo aquí clic aquí puedes generar las tablas a cabo ya genera una tabla para que vean y en la parte de la derecha se puede ejecutar el código sql la verdad que está bastante bueno si hacen clic en browser también pueden ver la tabla y todos los datos de front creando ahora la herramienta por excelencia para utilizar mysql sword bench vamos a ver cómo se instala si quieres utilizar algunos estos de estos ideas que acabo de decir usarlo y saltear de esta parte pero profesionalmente la que más se utiliza es el líder de word bndg así que vamos a google ponemos workbench download porque aquí lo tenemos vienen eligen en su sistema operativo y le damos descargar bueno acá nos va a pedir iniciar sesión inicia sesión o se registran porque ahí me da para descargarlo después de haber iniciado sesión y ahí lo tenemos medio seguro workbench bueno la instalación es bien simple es como casi cualquier programa hay que ir dándole next todo el tiempo y se instala le ponemos completa le damos clic en instalar y ya está en este caso yo no voy a continuar porque bueno ya lo tengo instalado bueno una vez que dentro de word bench lo que vamos a hacer es lo siguiente aquí vamos a tener un icono de más que es para crear una nueva conexión mysql le hacemos clic aquí y lo que vamos a hacer es conectarnos al servidor mysql que querramos ya sea que esté online o localmente localmente nosotros podemos utilizar samp que lo vimos también en un vídeo anterior nada aquí lo tenemos esta aplicación ekiza mpp control panel es muy fácil de utilizar le damos clic en start a mysql y listo ahí ya no nos levantó y acá nos está indicando el puerto que está utilizando en este caso es el 33 06 no sé si se ve bien pero bueno así que vamos a poner puerto 330 6 ya vienen por defecto ese porque es el común de las bases de datos este host name que está poniendo es la dirección ip en donde se encuentra nuestro servidor en este caso el 127 puntos 0.01 por defecto es el local host o sea vendría a ser como la conexión local dentro de nuestra máquina si nuestro servidor bueno está en otro lugar en europa en eeuu algo que sea vamos a tener un número ip diferente y tenemos que escribir que ese número ip para podernos conectar el usuario por defecto que utilizamos con samp el nombre es rut y la contraseña no tiene contraseña viene vacía así de simple entonces ya con eso nos podemos conectar acá cuando dice default esquema está haciendo referencia en realidad a la base de datos a la que se va a conectar como todavía no tenemos una base de datos creada para este ejemplo no vamos a poner nada si ponemos desconexión y revisamos que esté todo bien acá nos dice que hay una discrepancia entre la versión de mysql que estamos utilizando el sham y la de que tiene que utilizar worldbench las marcas que no importan le damos continuar de todas formas y ahí dice que funciona correctamente ok y pensamos no le puse un nombre acá le vamos a poner de nombre del local host ya tenemos root ip todo perfecto ok y ahí lo tenemos ahora cuando le damos doble clic aquí se va conectar a esta base de datos perdón a esta conexión de maíz de mysql y ahí lo tenemos a la izquierda bueno vamos a tener todas las bases de datos que tenemos en mi caso ya tengo algunas creadas posiblemente tú tengas una por defecto como php en miami y lo que vamos a hacer ahora es crear una nueva base de datos el primer comando que vimos era create rate beige y le ponemos el nombre de ejemplo usuarios [Música] perdón el nombre le voy a poner curso por ejemplo ahora seleccionamos todo esto y le damos a ejecutar a ver agrandó un poco esto así se ve mejor la línea de comandos aire a tener perfecto este botón entonces lo que hace es ejecutar en la línea de comando y este otro ejecuta lo que esté seleccionado se está solucionado esto solamente va a ejecutar eso ahora para ver la base de datos le damos clic aquí en este botón que dice actualizar ahí está y a la izquierda les debería aparecer la nueva base de datos en este caso acá tenemos curso [Música] ok ahora vamos a crear una tabla en este curso en esta base de datos ponemos create table el nombre de la tabla usuarios abrimos paréntesis y cerramos paréntesis y cerramos con punto coma y aquí dentro vamos a poner los nombres de las columnas le voy a poner la primera idea que va a ser bueno la de identificación le ponemos de tipo integral con un tamaño de 11 va a ser nulo ya que no puede estar vacío y va a ser auto incrementa para que vaya aumentando a 1 le ponemos el nombre el tipo de dato marchar para que sea de texto y este también va a ser requerido así que le ponemos en el notebook agregamos apellido marchar 80 y fecha de nacimiento fecha de nacimiento con el bajo de esta forma y este es un dato ok este es y le dijo no porque no es necesario que estén nos falta agregar el primer y que ponemos el mar y qué los paréntesis y el aire a ver aunque ya que me falta una coma ahí lo tenemos le damos a ejecutar ahí está para ver si se ejecutó correctamente desplazamos esto de aquí abajo y ahí en la última ok me está dando un error que dice que la base de datos no está seleccionado si nosotros creamos las tablas sino más hay dos cosas que tenemos que hacer una exponer al principio de la tabla el nombre de la base de datos podríamos poner curso punto y así sabe que tiene que crear esta tabla en esa base de datos y la otra que también es muy común utilizarlo es antes de hacer cualquier cosa voy a cortar este comando quisimos escribir yus y el nombre de la base de datos que vamos a utilizar en este caso curso ahora le doy a ejecutar a esto y a partir de ahora todos los comandos que vayamos a ejecutar se van a utilizar con la base de datos cursos así que borro esto luego de igual de este comando y ahí creamos la tabla usuarios ven ahí se ejecuta bien esta vez no la vemos aquí le damos en refresh y ahora sí podemos expandir este panel que dice tables y ahí tenemos la tabla usuarios y la expandimos vamos a ver todas las columnas ahí están para borrar esta tabla bueno muy simple escribimos drop table usuarios y le damos a ejecutar ahí la borró correctamente y si le damos a ejecutar nuevamente nos da un error porque ya no existe y si no queremos que nos devuelva un error ponemos if existe ahí lo tenemos y ahí va a ejecutar bien el comando sin que devuelva ningún error por más de que exista o no exista bueno creamos nuevamente la tabla ahí la tenemos y ahora lo que vamos a hacer es agregar una columna más a esta tabla le vamos a agregar un el teléfono así que ponemos alter table usuarios le ponemos haz con un teléfono y este va a ser del tipo marchar con un espacio de 45 caracteres y del tipo nulo así de esta forma o sea que si no ponen este dato no es obligatorio si quisiéramos que fuera obligatorio le ponemos no tiene así que lo ejecutamos [Música] y se ejecutó bien si queremos ver los cambios actualizamos y ahí tenemos la columna teléfono agregada perfecto si quisiéramos modificar esta columna simplemente cambiamos el lado por modify así de simple y donde dice variar 45 le vamos a poner que sea ahora de 30 caracteres y recordemos que si teníamos datos los va a cortar a todos los que superen más de 30 caracteres le damos a ejecutar ahí se ejecutó correctamente actualizamos y ahora si vemos el teléfono aquí abajo el izquierdo no sé si se va a llegar a ver dice teléfono marchar 30 así que anduvo correctamente el próximo paso es poder agregar datos a esa tabla también poder consultarlos y modificarlos la verdad que es bastante simple para agregar datos tenemos que utilizar la sentencia in share y se escribe de la siguiente forma ponemos insert into y escribimos el nombre de la tabla en este caso usuarios abrimos paréntesis y después aquí en esta parte cerramos el paréntesis y dentro de estos paréntesis vamos a poner el no todas nuestras columnas recuerden que no importa si está dividido en saltos de línea aquí lo puse entre renglones pero podría estar tranquilamente en un renglón no no afecta así agregan en persona las columnas que vamos a agregar van a ser las que vamos a insertar valores en este caso puse nombre apellido fecha nacimiento y teléfono pero tranquilamente podría haber sido sin teléfono ahora no estoy indicando el aire porque el aire se va a agregar automáticamente ya que habíamos puesto que sea auto increment ok después de cerrar el paréntesis se utiliza la sentencia values de esta forma abrimos paréntesis y bueno aquí en el final se cierra estos paréntesis y en cada en cada parte vamos poniendo el valor que va a tener cada columna entonces para nombre le voy a poner el valor lukas por apellido voy y aquí para fecha nacimiento esta fecha de nacimiento es importante que esté escrita de esta forma la fecha de nacimiento ya que es el de sql 1º año después mes después días después hora minutos signos o key y por último teléfono también vean que estoy poniendo una comida simple entre cada palabra si el dato que ha sido un número podrían haber puesto el número directamente y también podrían haber puesto el número entre comillas simple así para no equivocarse nunca simplemente utilice en comillas simples siempre y ya está nunca le van a ver ok de esta forma se agrega una nueva fila a la tabla en un momento lo vamos a probar pero antes vamos a revisar un poco más cómo son los demás comandos si quisiéramos eliminar una fila simplemente tenemos que escribir este ponemos delete y tenemos que indicar a qué tabla queremos accionar así que ponemos from y el nombre de la tabla usuarios entonces con esta parte estamos diciendo bueno vamos a hacer un delete en la tabla usuarios y acá hay que tener sumamente cuidado de no ejecutar un delito usuarios y no haber terminado la sentencia porque qué sucede si pones delete promo usuarios borraste todos los usuarios de la base de datos es así de simple y es un error muy típico que es bueno a todos en alguna vez nos pasó pero que no te pase en un proyecto o en un trabajo no cierto después tenemos que indicar aquí el web no es cierto con el guard vamos indicar la condición que se tiene que cumplir para que esté delete active entonces aquí indicó que el aire tiene que ser igual a 1 si el aire es igual a 1 le va a eliminar el usuario entonces de esta forma solamente va a aplicar al usuario que tenga esa idea podría haber usado cualquier cosa podría haber puesto que el nombre sea igual a lukasz entonces va a borrar solamente los usuarios que tengan de nombre lucas eso sí si hay más de un usuario con el nombre lucas no va a eliminar continuamos ahora si quisiéramos modificar un dato lo que tenemos que hacer es utilizar la acción de sentencia lo que no me gusta de sql es que no tiene un patrón entre el insert y el update hubiera estado bueno que hubieran decidido hacerlo de una forma que sea igual para los dos entonces es como difícil acordarse el orden y la forma de escribir cada consulta pero bueno siempre recuerden que pueden consultarlo en google o buscarlo en cualquier momento cuando lo tengan que utilizar así que para hacer una modificación de una fila se hace lo siguiente tenemos que escribir update indicamos el nombre de la tabla en este caso usuarios y después ponemos la sentencia set y en este caso en la diferencia del inserten que primero elegimos las columnas y después ponemos los valores acá vamos a elegir la columna y el valor hay uno al lado del otro así que ponemos nombre iguala y también siempre entre comillas simples el nombre que queremos utilizar ahora ponemos pp si queremos agregar un valor más hay que poner la coma así que ponemos coma después apellido igual a otro apellido diferente en cellini y aquí sucede lo mismo que con el delete si ejecutan esta sentencia sin un buen lo que les va a pasar es que va a modificar toda la base de datos poniéndole esos datos en todas las filas que tengan así que aquí se indica también un web y se les pone ahí de igual a uno y de esta forma solamente va a modificar a la fila que tenga el aire 1 para poder extraer los datos de una base de datos se hace lo siguiente se utiliza la sentencia select que es la sentencia más utilizada de todo sql y funciona de esta forma escribimos select después ponemos un asterisco que este asterisco es como un comodín lo que está haciendo es indicar que traiga absolutamente todo entonces no vamos a diferenciar de que traiga solamente el nombre o solamente el apellido con el asterisco hace que me traiga todos los datos de esa tabla después ponemos from para indicar a que te hablábamos hacer referencia y el nombre de la tabla en este caso o usuarios y siempre recordemos terminar con un punto y coma entonces de esta forma lo que hacemos es traer todos los usuarios de esa base de datos ahora si quisiéramos buscar un usuario en concreto se describe de la siguiente forma ponemos select asterisco para traer todos los datos de su usuario from la tabla usuarios y acá le indicamos el web de la misma forma que está en delete y que está en update o sea es igual la sentencia en esta parte a partir del word siempre es igual entonces le indicó el aid y igual a 1 y me va a traer solamente los usuarios que tengan el aid y 1 y como la idea es algo que se pone automáticamente y va a auto incrementando me va a traer un usuario o bueno a ninguno al menos que esté eliminado después si quisiéramos solamente traer el nombre y apellido de un usuario ponemos select y en vez del asterisco escribimos nombre ponemos como ya que vamos a poner más elementos apellido y ahí traemos el nombre y apellido del usuario con haití 1 ahora lo vemos en la práctica si queda mucho más claro que quizás hayan viéndolo acá no no se logra apreciar todo cómo funciona esto ok comenzamos primero agregando una fila aquí lo voy a copiar de la filmina directamente si no perdemos tanto tiempo y aquí la tenemos hacemos un inserto en la tabla usuarios abrimos paréntesis y lo cerramos ponemos todas las columnas - el aire y después ponemos values y vamos poniendo el valor de cada una de esta forma y aquí tenemos el año escrito en esta en este orden perfecto vamos a ejecutarlo y vean qué pasa si lo ejecuta un par de veces no bueno ahi agregue unas cuantas filas agregue tres filas o cuatro no estoy seguro bueno ya están agregadas a la base de datos ahora cómo hacemos para ver esas filas para ver qué hay en la base de datos hacemos un select ponemos select te disco from usuarios lo ejecutamos y aquí nos muestra todos los resultados [Música] tenemos tres usuarios creados y el aire fue incrementando automáticamente tenemos el inning 123 y los datos de cada uno perfecto si quisiéramos ver solamente los aires en belt asterisco podemos poner ahí de y nos va a mostrar solamente el aire y si ponemos ahí de como nombre como apellido ahí nos va a mostrar el aire el nombre y el apellido en esta forma ok ahora vamos a eliminar una fila ponemos delete from usuarios muere ay de igual a 1 de esta forma ahí se ejecutó y si queremos ver de vuelta los datos hacemos nuevamente el select y ahí lo tenemos ya no está más la primera fila y ahora para modificar ponemos update usuarios y le indicamos las columnas voy a borrar esto de aquí set nombre no escribí marc ahí está igual a otro un valor lo voy a poner pp como apellido igual a angelini cierro con la comida siempre where recordemos siempre de usar el guard cuando hacemos una vez no tengamos el error del delito y de iguala en este caso le voy a poner 2 para modificar el que tenga la línea 2 ahí está y si ejecutamos bueno ahí no vamos a ver nada ponemos de vuelta el select y lo tenemos si hace un control entero también se los ejecuta en el momento si hubiera puesto no se le quitó el select nos dejamos así así vemos qué pasa a ver no no me gustó ok lo bueno de estos sistemas modernos es lo siguiente aquí me sale un error si vemos dice que al intentar hacer un update sin el guard dice estás intentando hacer una play sin sin un buen entonces el sistema este workbench nos lo detecta como un error y por lo tanto no te lo deja ejecutar si quieres puedes cambiarlo desde preferencias para que te lo deje ejecutar pero es como una prevención que se hace automáticamente ya que es un error tan típico que bueno evita que lo hagas eso sí sí a la consulta está ejecutando desde el código de programación bueno ahí no hay nadie que te detenga desde worldbench también cuando hacemos un select promo usuarios con el valor asterisco podemos modificar directamente los datos desde esta tabla como para facilitarnos el uso y no tener que siempre escribir comandos podemos hacer doble clic aquí en apellido en el primero le voy a poner mi apellido le pongo un entero y ahora si me aparece este botón que dice apply que es para aplicar los cambios me muestra la consulta que está por ejecutar entonces de esta forma se está generando automáticamente esa consulta aplicar y listo ahí me realizó estos cambios y ahora a la hora de realizar esta consulta si yo escribo select promisorios y pongo buen apellido igual a boy y ejecutamos me va a traer estos dos y si quisiera agregar un filtro más puedo poner and así y poner algo más lo voy a poner aquí debajo así se ve bien nombre igual a lucas ah y ahora está cumpliendo esa condición de que el apellido sea moi y que el nombre sea lucas pero también tenemos la condición en vez de am podemos usar org que ahora significa bueno justamente eso o si no entonces si ejecutamos me va a traer los dos ya que el primero tiene de apellido móvil y el segundo bueno tiene de apellido moi y también de lucas de nombre lucas se cumplen las dos sentencias ahora si quisiéramos contar la cantidad de filas que hay podemos poner lo siguiente escribimos aquí count de esta forma abrimos paréntesis y cerramos paréntesis y le dejamos el asterisco aquí en el medio y al ejecutar esta sentencia nos dice dos pero es la cantidad que se cumple con este web en este caso son solamente dos si hubiéramos dejado el lnd de esta forma este count no hubiera devuelto uno solo ahora este com aquí se ve bastante feo es como que no se entiende muy bien que está diciendo el nombre de la columna lo que podemos hacer es aquí agregar as ponemos comillas simples y el nombre de la columna que querramos le voy a poner de nombre en cantidad y ejecutamos nuevamente y ahí queda muchísimo más prolijo este as lo podemos hacer con cualquier columna si hubiéramos puesto por ejemplo nombre más cantidad me va a traer solamente los nombres y le pone de nombre cantidad ua aunque ahí no tiene mucho sentido volvemos a un momento él se le caracterizó porque ahí lo tenemos nos está trayendo una sola fila ya que estamos usando una ahora si quisiéramos hacer una búsqueda no es cierto en que escribe un texto y quiero que me traiga los resultados de esa búsqueda lo que se suele hacer es lo siguiente vamos a poner solamente por nombre por ahora pongo nombre igual perdón en vez de igual vamos a poner like abrimos comillas y si ponemos lucas hasta ahora esto sigue funcionando igual que esto si esto fuera un igual si yo escribo no sé por ejemplo look no me trae nada en cambio si agregó un símbolo de porcentaje de esta forma al ejecutar esto ahí sí me lo va a encontrar lo que está haciendo es buscar los textos en la columna nombre que comiencen con luke y después con esto significa que sigan como quieran es como una especie de expresión regular no si yo hubiera puesto puse solamente de esta forma no me hubiera traído nada porque está diciendo que el texto comience con un si yo pongo el símbolo de porcentaje al principio de esta forma me va a buscar todos los textos que tengan alguna palabra kong e hice lo mismo con apellido vamos a poner ha crecido y ponemos una ahí me trae estos dos porque tienen una en el medio algo para tener en cuenta y tuvieran millones de datos en esta tabla y se les hace muy pesada la búsqueda una forma de optimizar es intentar hacer que su sistema no use este primer símbolo de porcentaje de esta forma va a ser muchísimo más rápido si la búsqueda va a tener que siempre arrancar con las letras exactas pongo m o de esta forma me va a traer todos los apellidos que comiencen con m o pero esto hace que vaya pero muchísimo más rápido la base de datos obviamente solamente se los recomiendo si les están dando muy lento las consultas y le está tardando ya varios segundos bueno creo que es suficiente como para tener una introducción a todo este mundo de sql pero lo que quiero que se queden es que este web funciona igual dando para el select para el dealer y para el update o sea que habíamos tenido este update podríamos haber tenido steuer tranquilamente de esta forma entonces se hubieran modificado todos los datos poniendo este nombre y este apellido siempre que se cumpla esta sentencia y de la misma forma con el delito podríamos haber tenido así delete como usuarios y también se pudo haber ejecutado esta sentencia lo que nos está faltando ahora que lo pienso es lo de las claves foráneas o sea como creamos una tabla que apunte a otra tabla bueno es muy simple es casi más o menos lo mismo que estuvimos viendo aquí vamos a crear una tabla más que se llame publicaciones y entonces es una tabla donde cada usuario va a poder guardar sus publicaciones no sé como notas que escriban esta tabla tiene primero una idea que es igual que la otra que creamos es del tipo int porque si o si tiene que existir y auto incremento para que vaya aumentando de a uno a la vez después ahora vamos a ir acá tiene título el tipo es variar lo vamos a modificar un poco más largo 150 y el texto en vez de marchar va a ser del tipo text perfecto este texto no puede ser nulo el título tampoco puede ser nulo pero además le sumamos el autor aydin que de esta forma hacemos referencia al usuario podríamos haber puesto también un usuario guión bajo haití como para tener más o menos el nombre de la tabla pero de esta otra forma también está bien que tienen es de tipo integral de esta forma y no va a ser nulo nada más ahora para indicar que hace referencia a otra tabla lo que tenemos que hacer es lo siguiente primero indicamos el primer y kim para indicar que el aire es la clave primaria ponemos una coma porque vamos a seguir escribiendo y acá tenemos que escribir por in king que es la clave foránea y entre paréntesis indicamos la columna de nuestra tabla que va a estar apuntando a otra en este caso autora y de iba a ser referencias a la tabla usuarios a la columna por ahí uno cuando lo escribe directamente en código es como que se le salió en la cabeza y piensa bueno esta tabla está apuntando a esta o esta tabla está pugnando de esta otra por eso es bueno primero bajarlo a papel o a un diseño en que veamos bien cómo están diagramadas todas las tablas cómo se conectan cada una para que después sea muchísimo más fácil de ejecutar este código así que le damos a ejecutar ahí lo tenemos actualizamos acá y ahora si vemos las tablas ahí tenemos publicaciones y usuarios ok si quisiéramos agregar una publicación ponemos insert into publicaciones agregamos los valores veamos las columnas que habíamos puesto okay tenemos autor hay de título i [Música] vamos a aprender un poco más de cómo hacer consultas a nuestra base de datos hasta ahora estuvimos haciendo consultas simples pero bueno ahora vamos a hacer algunas un poco más complejas en esta primer tabla de este ejemplo tenemos bueno nuestros usuarios en donde guardamos el ied y el nombre el apellido y la fecha de nacimiento y por otro lado tenemos la tabla de publicaciones que tenemos además de haití y título y texto un autor haití que en realidad está haciendo referencia a un usuario entonces este uno vendría a ser la primera fila de aquí cuando consultamos a publicaciones nos está trayendo este número pero como podemos hacer para que nos traiga el nombre y no solamente el número en una sola consulta bueno lo podremos hacer de la siguiente forma tenemos esta consulta de aquí ahora para leer esta consulta lo que quiero que presten atención primero en este punto en la parte del from estamos poniendo dos tablas no estamos poniendo una sola como veníamos haciendo entonces aquí ponemos publicaciones le ponemos una p que en realidad esto es como una abreviatura para poder utilizar esta abreviatura en el resto de la consulta ponemos una coma y decimos que además vamos a seleccionar la tabla usuarios y le pongo una u como para premiar esa tabla y poder llamarla más fácil en el resto de los campos y ahora bueno en vez del agua y de la pep podría haber sido cualquier letra pero bueno yo elegí hasta ahora en la parte del web estoy bueno lo podremos hacer de la siguiente forma mira en esta consulta lo primero que quiero que vean es la parte del from hasta ahora nosotros tuvimos trabajando eligiendo una sola tabla pero en este from en esta consulta estamos eligiendo dos tablas primero elegimos publicaciones y después elegimos usuarios se le pone una coma como para separarlos ahora está p y estado son abreviaciones que elegir para poder utilizar la más simple en el resto de la consulta entonces p hace referencia a publicaciones y la letra a usuarios podrían haber elegido cualquier letra nación ley esas ok una vez que sabemos esto tenemos que ver lo siguiente cuando vamos al select lo que estamos poniendo es un p punto asterisco entonces qué está haciendo acá primero que lo que hace es elegir bueno la tabla publicaciones que ya dijimos que la abreviatura con el punto es como que bueno nos metemos dentro de esa tabla y asterisco es el comodín entonces lo que dice acá es seleccionar todas las columnas de la tabla publicaciones perfecto ahora nosotros podríamos poner coma y poner un punto nombre y va a elegir la columna del nombre o podremos poner también como punto apellido y elegir la columna del apellido pero vamos a hacer algo diferente en este caso además lo que vamos a hacer es tratar de concatenar el nombre y el apellido en una sola columna como para que me muestre ya ese dato unido unificado y no tener que devolver dos columnas diferentes para eso usamos esta función que se llama con catch entonces escribimos con kant abrimos paréntesis y estos paréntesis se cierran aquí y dentro de estos paréntesis vamos poniendo todo lo que querramos concatenar o sea si ponemos en nombre y apellido me va a poner el nombre y el apellido pegados pero qué sucede necesitamos un espacio así no va a quedar lukas muy todo pegado entonces ponemos nombre lo siguiente que agregó es entre comillas le pongo un espacio así se puede en una separación le ponemos como para que agregar un dato más y después el apellido si quisiéramos podríamos seguir concatenando poniendo coma e ir agregando más cosas como ustedes quiero ahora lo siguiente es utilizar el as esto es para darle un nombre al local a la columna si no utilizaríamos este as el nombre de la columna sería con cat abre paréntesis y todo esto y la verdad quedaría muy feo entonces con esto le indicó que el nombre va a ser autor bien es un poquito complejo pero creo que se entiende falta una cosa más si ejecutamos esto es como que no saben que la idea del autor corresponde a la idea del usuario cierto es como que la consulta no tiene esa lógica para que se dé cuenta de eso se hace lo siguiente en el web ponemos que de las publicaciones el autor haití tiene que ser igual del usuario el aire y de esa forma ya hacemos que estén coordinados los dos aires de ambas tablas y solamente nos muestre lo necesario de esas tablas si volvemos a workbench acá tenemos la consulta que acabamos de escribir la ejecutamos y vemos lo siguiente primero nos trae todo lo que tenga la publicación nos trae la idea de la autora y de el título el texto hasta acá es todo lo que tiene la publicación lo siguiente es solamente mostrar el autor acá está concatenando el nombre y el apellido y de esta forma queda el autor de esta forma todo junto ahora quizás podríamos decir bueno pero si ya tengo este dato no me interesa ver el autor hay de y si es cierto en ese caso lo que tendremos que hacer es hacer una selección de lo que exactamente qué es lo que queramos ver entonces ponemos p punto de punto título qué más texto y si ejecutamos todo esto ahí solamente vemos eso primero la idea después el título después el texto y después bueno esta concatenación miren para que quede más claro esta última parte si hubiera puesto un punto nombre y punto apellido de esta forma está cómo está de más lo hubiéramos visto así bien separado por cada uno y ahora agreguemos algo más si hubiera puesto un punto aire me estaría trayendo en la idea del usuario y el aire y de la publicación y se ve de esta forma tendríamos estas dos columnas con el nombre ok perfecto entonces con esto del con cut podemos ver todo en una sola columna si no hubiéramos agregado el guard y lo hubiéramos dejado así de simple hubiéramos tenido el siguiente inconveniente es como que no sabe por dónde enganchar el aire y trae todos los datos entonces es como que repite la información trae la publicación dos veces pero para una letra un autor y para otra letra el otro autor y eso no es correcto ya que este autor este de aquí debería ser hay de dos entonces ahí no estaría funcionando por eso es importante poner el web de esta forma y así podemos enlazar las tablas a través del lugar en realidad este wer que estamos utilizando aquí para enlazar tablas no es lo más óptimo para sql porque sucede lo siguiente si nosotros tuviéramos que estas dos tablas tienen cientos de miles de datos esta consulta sería un poco lenta más que nada esto pasa porque cuando nosotros ponemos lógica en el lado del web justamente es es lógica lo que hace es procesarla en tiempo real y entonces va haciendo la comparación en el momento de ejecutar la consulta y es medio lento justamente por eso creamos claves foráneas para enlazar una tabla con otra la idea de esas claves foráneas es utilizarlas para saber qué tiene ese índice ya generado y puede asociar una tabla con la otra de una manera totalmente rápida si no hubiera creado esas claves foráneas en estas dos tablas o sea si no estuvieran enlazadas pero de todas formas una tiene el iii de autor esta consulta seguiría funcionando perfectamente porque lo está haciendo una manera lógica la idea de crear esas claves foráneas es para utilizarlos jones que es algo que vamos a ver ahora que son consultas que utilizan estos índices para que estén muy optimizadas y sean muy rápidas vamos a ver un ejemplo simple el más simple de los saints supongamos que tenemos esta consulta y en vez de utilizar este web queremos usar estos índices para que sea muchísimo más rápido entonces lo que tenemos que modificar lo siguiente sabemos qué publicaciones se va a conectar a usuarios así que en vez de esta coma voy a poner inner joint de esta forma y así le estamos diciendo que publicaciones se va a conectar con usuarios y en vez de web vamos a poner la palabra on y ahí quedó la regla que va a aplicar en esta conexión es que el autor hay de sea igual al usuario aire y de esta forma la consulta queda muchísimo más optimizada y va a ser muchísimo más rápido si tenemos cientos de miles de filas en realidad existen muchísimos más joint pero siempre es muy difícil acordarse de qué es lo que hace cada uno y en qué momento utilizarlos así que me encanta esta imagen porque te resume todo de una manera súper simple esta imagen es como para agarrar las imprimirla y pegarla en una ficha si en tu habitación porque es algo que uno siempre termina consultando en algún momento funciona de la siguiente forma mira el son que acabamos de hacer el del ejemplo de recién es este de aquí el del medio si vemos aquí en esta parte dice inmersión y cómo funciona esto bueno lo que dice es que de un conjunto a y lo consultamos con un conjunto b va a tomar las dos cosas que tengan en común un cierto que era lo que estamos haciendo región digamos que estos son las publicaciones y que ve son los autores entonces solamente va a devolver las filas que coincidan exactamente la condición que pusimos que o sea que el aire del autor sea igual a la idea el usuario esta es la más simple de todas entonces si nosotros vemos bueno yo lo que necesito es que coincidan los datos o sea que estamos en esta franja del medio para ese caso tengo que usar un inmersión en el ejemplo que me da aquí abajo ahora qué sucede ahí como ven todo tipo de escasos vamos a este de aquí abajo a la derecha que puede ser exactamente lo contrario yo había puesto que en la idea del autor sea igual a la did al aire del usuario en este otro caso lo que me va a seleccionar es todo menos eso o sea todos los usuarios y todas las publicaciones que no coincidan eso es lo que me va a devolver bernie a que me trae en la parte de afuera y él ve exactamente lo opuesto a lo que hicimos recién la verdad ahora no no se me ocurre un ejemplo práctico en qué momento utilizar esto pero me sucedió a veces de que tenía que hacer bueno pero necesito esto lo que tengo pero lo opuesto bueno consulta esta imagen a eso lo que necesito y lo único que había que cambiar era en vez de usar la palabra inmersión había que usar la palabra full autor joint ya que y bueno y acá también te da el ejemplo bien escrito para mí lo más importante de los saints es tener esta imagen por referencia siempre en algún momento la vas a usar así que lo que te propongo es que intentes jugar un poco con cada una de estas opciones que dice pruebe usar el reacción elección llena tus dos tablas de datos y bebiendo aquí es lo que te devuelve en cada caso así bueno va interiorizando cómo es que está funcionando esto obviamente en la mayoría de los casos te diría el 90% vas a utilizar el liner sión en el que se seleccionan exactamente lo que necesitas pero es importante saber que todo esto también existe es muy común utilizar sql para hacer estadísticas para sacar cuál es el precio más alto el precio más bajo algún promedio y para todo esto lo más normal es utilizar las siguientes funciones bueno nosotros ya conocemos la función count esa la vimos que lo que hace es contar la cantidad de filas y así como tenemos esta función count tenemos varias más por otro lado tenemos la max que lo que hace es devolvernos el valor máximo de la columna que le indiquemos si nuestra tabla por ejemplo tiene una columna que se llama apuntarse y a la hora de escribir la consulta ponemos más puntaje bueno nos va a devolver el puntaje máximo si ponemos min qué bueno va a ser lo contrario nos va a devolver el puntaje mínimo y en el caso de que pongamos a bg de esta forma esto lo que nos va a ser va a devolvernos el puntaje promedio osea que si por ejemplo tenemos un puntaje de 10 y otro de 4 y nada más lo que va a hacer es devolvernos 7 ya que hace días más 4 te da 14 / 2 por la cantidad de puntaje que hubo nos da 7 o sea el promedio no es que no va a decir cuál es el que más veces se repite por otro lado también tenemos sum que lo que hace es una sumatoria constante podríamos tener por ejemplo el caso de una tabla de facturas y quisiéramos ver que haga la sumatoria de todos los precios de cada producto que compró entonces ahí hace la sumatoria y ahí saca el resultado vamos a hacer un ejemplo simple de esto así queda bien claro voy a crear una tabla nueva ok y de nombre le vamos a poner productos ahí está [Música] va a tener una columna que sea ahí de el tipo integral [Música] hacemos que sea noche y auto increment ahora se me dio como escribir todo en minúsculas pero da igual en realidad ok vamos a crear entonces una columna más que se llame nombre el nombre del producto para hacer del tipo marcharle pronuncian y por último un precio como para dejarlo bien simple precio le voy a poner del tipo doble y ya ahora hay que agregar el primer y key [Música] que va a ser el aire y ahí lo tenemos ejecutó esto perfecto si actualizamos aquí podemos ver que ahí se creó la tabla de productos vamos a agregarle algunos valores lo podemos hacer de una forma diferente para no tener que escribir la consulta ya ponemos el from productos así y lo voy a agregar directamente desde aquí que bueno se me hace mucho más simple bueno el primer producto le voy a poner del hombre de zapatillas y de precio le ponemos 30 dólares después el segundo pantalones y de precio 34 dólares ahora ponemos una camisa lo dejamos hacer un 23 y por último pantuflas y le ponemos de precio 8 así bien simple aquí abajo a la derecha le doy clic en aplicar y como vemos me genera automáticamente todas las consultas necesarios bien aimé hacen incer a la base de datos producto silvio con el nombre y presa le doy a explicar y ahí ya me lo ejecutó si ejecutó el select y nos trae todo bien entonces cuando ponemos count acá nos va a traer el total ahí vemos 4 si ponemos máx y precio de esta forma ahí vemos cuál es el precio máximo de ahí sería 34 si ponemos min muestra el precio mínimo y si ponemos a vejez ahí nos está calculando el precio promedio porque si decimos la sumatoria de todo y lo dividimos por la cantidad total nos da 23 75 y por último dijimos que teníamos el zoom que hace la sumatoria de todo si sumamos todos los precios nos da 95 o sea que si una persona hubiera comprado un producto de cada cosa hubiera tenido que pagar 95 dólares bueno creo que ya estamos preparados para aprender sobre sus consultas que es bueno suele complicarse bastante porque es un tema complejo así que vamos a hacer lo siguiente vamos a crear una cuerda en la que vamos a escribir safe from the publicaciones de esta forma y vamos a buscar por un ide de autor supongamos que el haití queremos que sea del autor número 2 ahí está en este caso bueno está registrado el usuario con state y el 2 así que si ejecutamos esto no nos devuelve nada porque no tenemos ninguna publicación con esa idea pero si quisiéramos que fuera del aid y 2 y además también del aire y 3 acá deberíamos poner en vez de una igual deberíamos utilizar un link de esta forma y entre paréntesis les pasamos los valores que queramos por ejemplo puede ser 1 2 y 3 y si él el aire del autor está dentro de estos valores va a aparecer así que cuando ejecutamos ahí lo tenemos en este caso el ahí del autor es el 3 la idea de las sub consultas es que no pongamos estos valores más coreados sino que los podamos obtener de una manera dinámica así que los voy a borrar de esta forma y aquí dentro vamos a escribir la sub consulta ponemos se le vamos a buscar a través de la idea del autor ponemos ahí de broma autor y bueno traemos todos entonces de esta forma va a traer todos los autores y va a traer el valor aire entonces cuando haga stain va a verificar que coincida el aire del autor con alguno de estos aire que trae en este lugar entonces al ejecutar esto ahí a ver qué sucede aquí me equivoqué acá en el nombre de la tabla no es autor es usuario se me confundió ejecutamos nuevamente y ahora sí ahí lo tenemos pero bueno la idea es que tenga algo de lógica en este caso no tendría tanto sentido sobre una su consulta pero si quisiéramos por ejemplo obtener en los usuarios que comiencen con la letra l por ejemplo ponemos web nombre like y entre comillas ponemos l y después un símbolo de porcentaje entonces con este símbolo de porcentaje vendría a ser como el comodín indicándole que tiene que arrancar con l y después puede continuar cualquier cosa si ejecutamos esto nuevamente ahí sí nos está trayendo esto si hubiera sido por p o sea que el nombre comience por p no hubiera traído nada otra forma que podríamos haber hecho una sub consulta como ésta es utilizando el not in con not in the indicamos que me traiga todas las publicaciones de los autores que no tengan él o sea lo contrario a esto en este caso bueno no tenemos ninguna ya que todas las publicaciones están con el nombre de lucas y ésta vendría a ser una de las sub consultas más simples que existen pero les aseguro que esto se puede completar de una forma inmensa aunque ahora vamos a aprender cómo concatenar dos consultas diferentes primero vamos a hacer un ser común de usuarios ahí está lo escribí mal curso usuarios ahí lo tenemos y voy a buscar de vuelta los usuarios que comiencen con el nombre supongamos l de vuelta ahí está y ahora digamos que tengo otra consulta igual a esta pero que comienzan con el nombre de p y yo quiero poder concatenar estas dos consultas diferentes son dos consultas en plantas de esta forma para hacer eso se utiliza la palabra unión y hay que recordar que cuando ponemos esto no hay que poner el punto coma en la primer consulta pero en la segunda ya sí se puede poner y todo esto sería una sola consulta si ejecutamos esto ahí no se ejecuta primero esta consulta y después la concatena con esta segunda consulta si hubiéramos puesto tres unión de esta forma y ejecuta vamos nos sigue trayendo dos filas porque al haber datos repetidos no los repite es como que esto intenta evitar de que se repitan datos esta la verdad es bastante simple no tiene mucho más que eso simplemente agarra una consulta y la unifica con otra por último vamos a aprender cómo utilizar el grupo by lo escribimos de vuelta a una consulta simple así no nos complicamos y ahora lo que vamos a hacer es poder agrupar estos usuarios si nosotros ponemos group buy y elegimos por ejemplo nombra el resultado final lo va a ir agrupando por los distintos nombres que hayan en este caso tenemos los nombres diferentes así que el resultado se va a mantener igual pero si lo hubiéramos hecho por apellido acá tenemos el mismo apellido vamos a ponerlo así necesitamos y agrupa por apellido como ven solamente va a mostrar una fila en la cual coincida des apellido si hubiéramos tenido apellidos diferentes bueno voy a mostrar distintos apellidos o sea lo único que se encarga el uruguay es que no se repita el apellido elegido esto suele ser muy útil en realidad en este ejemplo no pero si por ejemplo para una fecha si nosotros quisiéramos agrupar por un mes simplemente ponemos mont de esta forma abrimos paréntesis y le pasamos la fecha de nacimiento entonces de esta forma vamos a agrupar usuarios de acuerdo a la fecha de nacimiento si ejecutamos ahí nos muestra un solo valor porque bueno tenemos la misma fecha en este caso miren lo vamos a modificar así le ponemos una fecha diferente en el caso de lucas le pongo otro año 89 mayo y esta y lo aplicamos flight finch ok y ahora ponemos de vuelta el club by y cuando ejecutamos bueno ahí nos muestra las fechas diferentes porque está agrupando solamente por mes y esto es muy útil por ejemplo si queremos saber cuántos hay en ese mes le podemos poner un count de esta forma también quiero traer la fecha de nacimiento para saber cuál es la que está agrupando y ahí está acá me dice que en esta fecha de nacimiento bueno en este caso en ese mes sería ayuno si queremos saber exactamente el mes también ponemos montt de esta forma así y ahí nos pone que para este mes el mes 4 hubieron tantos y para el mes 5 mayo hubo uno solo también si le ponemos un as acá le podemos cambiar el nombre esta columna así queda más claro y le pongo mes you can count as cantidad y cuando ejecutamos queda mucho más prolijo y miren le vamos a poner el mismo mes así se ve como quedaría voy a hacer otro select común curso punto usuarios y lo vamos a modificar ambos van a ser el mayor le pongo a camacho y además están en diferentes años ahora cuando ejecuto esto sé que en mayo en el mes 5 hubieron esta cantidad bueno amigos llegamos al fin del curso espero que lo hayan disfrutado que le hayan sacado provecho de gm en los comentarios que les pareció y qué cosas podríamos mejorar y nos vemos en el próximo curso chao