Curso Completo de Bases de Datos

November 14, 2023 | Author: Anonymous | Category: N/A
Share Embed Donate


Short Description

Download Curso Completo de Bases de Datos...

Description

Gslunac-3Sección: 1 Introducción - Acerca de este Curso Hola, bienvenidos a este curso completo de base de datos, Mi nombre es Pablo Tilotta, Soy un profesional de hace más de 30 años en el mundo de los sistemas, soy programador profesional, He trabajado muchísimos años con bases de datos, con las dos bases de datos que más he trabajado son SQL Server y con MySQL, estas son dos bases relacionales, son de las más famosas que existen; hay otras bases también famosas como Oracle PostgreSQL. Pero en este curso nos vamos a enfocar en quizás la más exitosa de todas y la más popular que es MySQL, desde 1996 que fue creada hasta el día de hoy es la base de datos que sin dudas ha tenido más usuarios en la comunidad de desarrolladores. Nosotros vamos a ver en este curso, no solo sobre MySQL sino que también vamos a aprender todo el lenguaje completo de bases de datos y vamos a aprender buenas prácticas, a normalizar nuestras bases de datos y a generar bases de datos profesionales y versátiles en cuestión de minutos. Les quiero hablar brevemente acerca de mi carrera, de lo que son mis credenciales para estar hoy en día frente a ustedes enseñándoles, hace 30 años que trabajo para empresas grandes, para grandes cadenas de sucursales y actualmente me encuentro trabajando en una de las empresas de software más importantes de Argentina. Me refiero a la firma AXOFT, los creadores de El famoso software TANGO (Tango Gestión) es el equipo en el que estoy trabajando y estamos haciendo un trabajo muy profesional así que bueno los invito a este curso completo, No los voy a defraudar y se van a sentir muy a gusto con todo lo que vamos a aprender a lo largo de estas 60 clases. Sin más, Los invito a que sigamos y a que comencemos de una vez el curso.

Sección 2, Clase 2 ¿Que son las Bases de Datos? Hola bienvenidos al capítulo número 2 de este curso completo de base de datos. En este capítulo responderemos la pregunta, qué es una Base de Datos, una base de datos no es más que una gran colección de datos ordenados y organizados de tal manera que nos permita luego acceder rápidamente y fácilmente a ellos, El ejemplo más común y previo a las computadoras que hemos conocido de base de datos es la guía telefónica, en ella están ordenados y organizados los datos siguiendo una estructura prefijada y clara que nos permite acceder en sólo segundos a la información que estamos necesitando por sobre miles o millones de resultados En el desarrollo de software, Los programadores se dieron cuenta que con solo grabar datos en archivos no bastaba porque luego cuando querían acceder a la información precisa de una manera rápida se les dificultaba.

Es ahí donde nacieron las bases de datos y se fueron perfeccionando de tal manera que hoy es imposible imaginar un desarrollo de software sin interactuar con alguna de ellas, A lo largo de este curso vamos a profundizar al máximo cada concepto y conocimiento acerca de ellas. Te invito a continuar con el curso y seguir nuestro capítulo número 3, estaremos hablando de los motores de base de datos.

Sección 2, Clase 3 Conceptos de Motores de Bases de Datos Bienvenidos al capítulo número 3 de este curso completo de base de datos. En este capítulo responderemos la pregunta. Qué son los motores de Bases de Datos, sabemos que las bases de datos son grandes colecciones de datos ordenadas y organizadas de una manera inteligente. Los motores de bases de datos son herramientas de software o sistemas que nos ayudarán en la búsqueda, la organización y la creación de esos datos. Cada motor organiza los datos de una manera diferente y transparente al usuario. Cada motor nos regala un set de utilitarios adicionales que para realizar todo tipo de operaciones tanto de mantenimiento de nuestros datos como de Backup y los motores más grandes y potentes nos permiten generar reportes y también tienen su propio lenguaje de programación. Le dan al desarrollador profesional un inmenso set de opciones. Los motores más conocidos en el mercado son MySQL, Microsoft SQL Server, Microsoft Access, Oracle, DB2 de IBM. PostgreSQL, MaríaDB y los nuevos MongoDB, hay otros. En esta oportunidad nos vamos a enfocar en el más popular e imbatible MySQL. Te invito a nuestro siguiente capítulo, luego de estos conceptos teóricos que hemos tenido donde ya comenzaremos a trabajar puntualmente todo sobre bases de datos.

Sección 2, Clase 4 Conceptos de Tablas Hola bienvenidos a este nuevo capítulo del curso completo de base de datos. Ahora nos vamos a meter de lleno con los ejemplos, con las ejercitación es más que con las teorías. En esta oportunidad vamos a saber todo sobre tablas, Las tablas son colecciones de datos unidos para un fin común, Son parte de las bases de datos. Si tuviéramos que desglosar una base de datos diríamos que el primer elemento por el cual podemos desglosarlas son las tablas, para que se den un ejemplo.

Si pensamos en una tabla llamada clientes encontraremos campos o columnas relacionados a esa ficha de clientes. Vamos a ver un ejemplo si aquí tengo un ejemplo vamos a hacer de cuenta que tenemos una base de datos llamada El veloz S.R.L que es nuestra empresa, nuestro negocio y que está dividida en tablas. Vamos a ver por ejemplo una tabla, clientes que sería como la sección dedicada a los clientes, Las tablas son precisamente colecciones de datos que le vamos a poner un nombre sin datos específicos, los datos que vamos a recoger para clientes no van a ser los mismos que los datos que vamos a recoger para productos,por ejemplo les ponemos un nombre en la tabla clientes y luego tenemos otro desglose, Las tablas pueden desglozarse y separarse en campos. Vamos a hablar sobre los campos en el capítulo 5 o sea en el siguiente capítulo, Ahora vamos simplemente enfocarnos en lo que tienen que ver las tablas y los campos de esta tabla. Los campos de esta tabla dijimos por ejemplo son diferentes a los datos que vamos a guardar en la Tabla Productos, podríamos tener una tabla proveedores una tabla facturas y así conformar nuestra base de datos. Estos campos que serían como las columnas de una planilla Excel pueden ser el ID del cliente, El nombre del cliente el domicilio el teléfono y cada uno de estos datos vamos a saber en profundidad en el capítulo que habla de los campos, El tipo de datos y qué posibilidades tenemos de acuerdo al motor que vamos a estudiar en este curso, a cada uno de estos datos se le llama campos o columna todos ellos juntos conforman un registro. Si ustedes abren un Excel en una fila, esa fila sería un registro en una base de datos Ocurre lo mismo una sucesión de campos y datos provenientes de un solo cliente o de un solo producto conforma un registro. Entonces los datos de un cliente se alojarán en un registro conformado por todos sus datos, Si miramos esto en un formato de grilla Excel diríamos que la tabla es toda la hoja cuyo nombre figura en la solapa inferior. Cada fila es un registro, cada columna corresponde a un campo diferente entonces cada tabla constituye una entidad determinada con sus características y se Teos independientes de otros estados. Nuestra base de datos entonces es una colección de tabla, Cuando pensemos en una base de datos tenemos que pensar que es una colección de distintas tablas. Las tablas son colecciones de registros definidos por campos índices y Seteos independientes. Todo esto lo vamos a ver con mayor profundidad a lo largo de este curso. No deben preocuparse, ahora por los registros son formados por campos o columnas determinadas y en cada campo finalmente se alojará un valor propio de ese registro. Por ejemplo para el registro cliente número dos en el campo nombre se alojará el dato de Marcos Medina

y en su campo teléfono se alojará el dato correspondiente al teléfono de Marcos Medina para registro número tres del cliente. Vamos a grabar el campo nombre y se va a alojar el dato de otro cliente y así sucesivamente. Es responsabilidad luego de los programadores el generar las herramientas u opciones necesarias para adicionar actualizar borrar o consultar los datos de estos registros en el próximo vídeo. Te voy a explicar todo sobre los campos y sus características.

Clientes

Productos

ID Nombre Domicilio Teléfono Email

ID Descripción Color Medida Stock

Dijimos que los datos de clientes iban a ser diferente a los datos que íbamos a guardar en la tabla productos, podríamos tener otras tabla como proveedores, una tabla facturas y así conformar nuestra Base de Datos. A cada uno de estos datos se les llama campos o columna y todos ellos juntos conforman un registro, si abrimos Excel y vemos una fila, esa fila sería un registro en bases de datos ocurre lo mismo. Una sucesión de campos y datos provenientes de un solo cliente o de un solo producto, conforman un registro, entonces los datos de un cliente se alojaran en un registro conformado por todos sus datos. Si miramos esto en un formato de grilla de Excel diríamos que la tabla es toda la hoja, cuyo nombre figura en la solapa inferior; cada fila es un registro y cada columna corresponde a un campo diferente. Cada tabla entonces constituye una entidad determinada con sus características se theos independientes de otras tablas. Nuestra Base de Datos es entonces una colección de tablas. Cuando pensemos en una base de datos tenemos que pensar que es una colección de distintas tablas.

Las tablas son colecciones de registros, definidos por campos, índices y se theos independientes. Los registros son formados por campos o columnas determinadas y en cada campo finalmente se alojara un valor propio de este registro. (Ejemplo en el campo nombre se alojara el nombre del cliente, y en el campo teléfono, se alojara el teléfono respectivo de ese cliente). Es responsabilidad luego de todos los programadores el generar las herramientas u opciones necesarias para adicionar, actualizar, borrar o consultar los datos de estos registros y tablas.

Sección 2, Clase 5 Concepto de Campos. Las bases de datos se desglosan en tablas y las tablas se desglosan en campos. Los campos conforman nuestro registro de datos y como vimos en el ejemplo anterior en nuestra agenda telefónica o nuestra planilla Excel que mostraba cada columna un dato diferente, podemos decir que los campos son esas columnas de la planilla Excel. Como ya sabemos, las tablas son colecciones de registros. En un principio podríamos tener tablas vacías, es decir sin datos aun grabados en ellas, pero lo que si ya tienen nuestra tablas es la definición de como estarán conformados esos registros, es decir, cuando creamos nuestras tablas, el segundo paso es diseñar su registro o colecciones de campos; estos campos son datos individuales donde en su interior solo puede haber un valor alojado. En comparación con una planilla Excel, podríamos asemejar a un campo a una columna determinada. En la siguiente imagen podemos ver una definición de los campos de una tabla en Mysql.

Veremos en secciones siguientes sobre la importancia de prestar cuidado y detalle a la creación de nuestros campos, para que nuestros datos se encuentren optimizados o como se dice en base de datos NORMALIZADOS. Pero siguiendo con el ejemplo de nuestra tabla llamada clientes, podríamos listar los campos que vemos en la imagen como indispensables. Si prestamos atención, ya se están aplicando algunas reglas de Normalización que veremos más adelante y refiere que debemos en lo posible nombrar nuestros campos de manera organizada, legible y siguiendo alguna norma, en este caso y teniendo en cuenta que una base de datos poseerá seguramente numerosas tablas y miles de campos, es conveniente que el mismo nombre del campo nos dé una idea de que se trata. Si en lugar de Cli_nombre, lo llamáramos simplemente nombre deberíamos ver a que tabla se refiere el campo para darnos cuenta de que es el nombre del cliente y no un proveedor. De esta forma el nombre podría darnos rápidamente noción de su origen, seguramente con solo leer el nombre de estos campos se dará una idea de que valor contienen y a que se refiere dicho valor. El nombre que les demos a nuestros campos es fundamental para una correcta interpretación de nuestras tablas, campos y valores almacenados. Debe ser costumbre que el campo comience con 4 caracteres o quizás algunos más que denoten de que tabla proviene dicho campo. Los prefijos:

Cli_ Provienen de clientes. Pro_ provienen de proveedores. Art_ provienen de artículos o productos. Venta_ proviene de la tabla maestra ventas. Son algunos ejemplos de posibles tablas de nuestra base de datos pero que nos dan una idea acerca de que tabla provienen y se una Guion Bajo ( _ ) para separar el prefijo del nombre. El otro aspecto que debemos atender, es el tipo de datos de cada campo, no es lo mismo una descripción que debe ser de tipo char o Vachar. Un campo fecha, un campo numérico cada uno debe ser configurado de forma correcta y teniendo en cuenta que para cada valor mínimo y máximo encontraremos el tipo de dato correcto. EJ: si nuestro campo es número de sucursal, sabemos que a lo sumo la empresa tendrá un máximo de 100 sucursales. No usaremos para ese campo un dato de tipo entero (INT) que ocupa 4 bytes y cuyo valor máximo es 4294967295 millones de valore posibles, sería un derroche de espacio en la tablas, sino que usaremos un campo TINYINT que es el dato entero más pequeño posible que ocupa solo 1 bytes y cuyo valor máximo es de 255.

Es indispensable saber que ante la posibilidad de que algún día nuestro campo se quede corto, es decir que algún valor alojado exceda el máximo permitido para el tipo de dato, podremos sin perjuicio de la información grabada hasta ese momento ampliar o cambiar el tipo de datos, no nos debemos preocupar en este momento de lo que va a pasar dentro de años porque siempre vamos a podemos modificar el tipo de datos y vamos a seguir manteniendo los datos en nuestra base de datos. Ejemplo: Hemos usado para un campo de número de sucursal el campo TINYINT cuyo valor máximo es 255 y por una expansión global, mundial de nuestra compañía, adquiere 300 sucursales de golpe, nos ha quedado chico, hay mismo podemos cambiar el campo por un tipo de dato SMALLINT que ocupa 2 bytes en lugar de 1, y tiene un valor máximo de 65535, y solucionamos el inconveniente, nuestro campo columna ahora soporta números más grandes. No hizo falta hacer nada en el sistema, ni modificar programas, salvo que internamente tuvieran validaciones que limitaran el tamaño del campo, ni hacer Backups adicionales a la base de datos, con solo un segundo y grabando los cambios en la tabla seguimos nuestro camino. Siempre habrá la posibilidad de ampliar y mejorar la tabla, pero que en un comienzo usen datos concretos que manejen límites normales y coherentes, porque esto va a depender del tamaño que va a tomar nuestra tabla, el espacio que va a ocupar el disco, el tiempo que va a insumir las búsquedas puede ser que sea medido en milisegundos, pero si tuviéramos que buscar millones de registros, cuanto creen que vamos a tardar teniendo un campo que ocupas 2 bytes contra 1 que ocupa 1 bytes. A nadie se le ocurriría por ejemplo, crear un campo Cli_nombre, indicar al motor que dicho campo tendrá un largo de 300 caracteres, no existe ninguna persona cuyo nombre y apellido tenga 300 caracteres, imagínese nuestra tabla con 1000 de clientes y por cada uno de ellos reservando e espacio de 300 caracteres, serían unos 300000 bytes para alojar 1000 nombres. Sería mejor sestearlo de 60 caracteres, cada campo puede ser inicializado con un valor por default, es decir que si uno no le mueve explícitamente un valor, el campo será inicializado con un valor en concreto.

Puedo crear un campo Estado, que tiene el estado 0 o 1, y puede indicar que ante nuevos registros todos los nuevos registros le fuercen un 0 al campo estado, en los del campo numéricos ese valor Default generalmente 0 o espacios cuando es de tipos carácter o string y vamos a ver mucho más sobre los campos conforme vayamos avanzando en este curso, no deben preocuparse ahora.

Sección 2, Clase 6 Conceptos de índices Cuando pensamos en la palabra índice, se nos viene a la mente los índices de los libros que no son más que un listado de temas apuntados a un número de páginas determinado, esto fue creado y pensado para que los para que los lectores que deseen solo abordar rápidamente el tema no tengan que leerse todo el libro completo para encontrarlo; entonces, si tengo en mis manos un libro completo sobre programación Java pero quiero ver solamente el tema que habla de tipos de datos en java voy ir al índice y en pocos segundos encontrar el tema que necesito. En una base de datos, los índices funcionan de manera muy similar y nos permiten determinar qué campo serán índices, también solemos llamarlos clave.

Por ejemplo: la clave principal de la tabla clientes debe ser si o si el ID cliente, como vemos en el siguiente ejemplo, al definirlo como índice.

Cuando le pidamos a la base de datos que nos ubique el cliente N. 2, que creen que hará el motor de bases de datos, recorrer toda la tabla clientes, hasta encontrarlo o ir a la ubicación del disco rígido donde se encuentra el registro correspondiente al cliente N. 2.

Lo bueno es que podemos tener tantos índices en cada tabla como deseemos, aunque luego veamos en la sección de Normalización de bases de datos aspectos importantes a tener en cuenta a la hora de determinar un índice.

Hay principalmente 3 tipos de índices importantes: 1. El Primary Key o Clave Principal 2. Unique Key o Clave Única sin repetición. 3. Key solamente que es la clave, una clave cualquiera que puede estar duplicada.

Vamos a ver cómo funcionan estos 3 amigos de la optimización:

1. El Primary Key: es la Clave Principal de cada tabla, es una muy buena práctica que cada tabla tenga su Primary Key, por cuestiones de performance y tiene la restricción de que no puede duplicarse, es decir por ejemplo: En el ejemplo que vimos no podemos tener 2 registros con el Cli_ID igual a 2, se supone que es la clave irrepetible con la que identificadores inequívocamente a nuestro cliente. Esto mismo aplica a proveedores, artículos, cualquier entidad que tengamos usuarios, cualquier entidad que tengamos grabada en la base de datos; la Primary Key tiene la posibilidad de autogenerarse con una propiedad llamada Autoincremento, cuando indicamos a nuestra tabla que nuestra Primary Key usara

un autoincremento significa que su valor se ira autoincrementado conforme creemos nuevos registros.

En estos casos, no tenemos que mover ningún valor a ese campo, cuando creemos nuevos registros. El motor asignara a la Primary Key el próximo valor automáticamente, entonces podemos crear el cliente Juan y el motor e pondrá el número 1, luego creamos el cliente pedro y el motor le asignara el número 2.

Esta funcionalidad no viene por default (Defecto), uno tiene que tildar la casilla que diga auto-increment, en la Primary Key para que tenga este comportamiento.

2. Unique Key o Clave Única sin repetición: Comparte al igual que las Primary Key el hecho de que no pueden haber valores duplicados en el campo o en el conjunto de datos señalados.

Cabe destacar que una clave no necesariamente debe estar formada por un solo campo, quizás queremos crear una clave única uniendo para ello los campos de por

ejemplo Numero de factura más código de producto y evitar que un mismo producto se duplique en una factura.

A diferencia de las Primary Key, las Unique Key no tiene la propiedad Autoincremento habilitada.

3. Key: Son Claves simples que admiten valores duplicados.

Ejemplo: Para una tabla Producto para el Campo Art_proID, si quisiéramos listar todos los productos del proveedor 52, el motor solo debe consultar el índice y ver en qué registro poner el foco. Si en este ejemplo, Art_proID no fuera una clave, el motor no tendría otro remedio que leer los miles y miles de registros de todos los productos que comercializamos para separar los que correspondan al proveedor número 52 ocasionando un problema de performance considerable. Entonces vemos que los índices fueron creados para lograr buenas performance accediendo a datos más representativos.

El Consejo es que si en total hay campos que son referencias a otros maestros, los conviertas en índices sí o sí.

Ejemplo: durante una venta tenemos que alimentar 2 tablas, la tabla de cabecera, de facturas y la tabla de detalle de facturas. Este modelo lo vamos a ver bien cuando veamos sobre las tres formas normales de optimización de bases de datos. En la tabla de cabecera seguramente tengamos algunos de estos datos que vemos ahora en pantalla:

FacM_Id FacM_Fecha FacM_Prefijo FacM_NroFac Terminando con FacM_CliID Que son estos campos: FacM_Id

 Primary Key y Auto-Incremental.

FacM_Fecha  Fecha de la Factura. FacM_Prefijo  es el prefijo de la factura, son 4 o 5 dígitos dependiendo del país que representan al punto de venta de la factura. FacM_NroFac  Numero de factura, son 8 dígitos del número de factura. FacM_CliID  ID de cliente, aquí no voy a grabar el nombre del cliente, sería una práctica horrible muy poco profesional grabar en una cabecera de factura el nombre del cliente y ocupar todo el espacio que ocupa un nombre, cuando puedo tener el ID que es un número que me va a llevar a la tabla maestra de clientes y hay voy a tener todos los datos que necesite como Nombre. Email, dirección, y eso tiene que ver con las buenas prácticas y con las optimizaciones de tablas; es bueno aprender las optimizaciones que necesitan las tablas En la tabla detalles de facturas que vemos a continuación, tenemos solamente 3 campos porque esto es un ejemplo: FacD_Id

 ID tabla de detalles, Primary Key y Auto-Incremental

FacD_FacMID  ID que me lleva hacia mi tabla maestra. Esto es fundamental, a que llamamos detalle de una factura, a cada uno de los ítems, a cada uno de los productos que vendí. Entonces en mi tabla detalle tengo que tener un ID que me apunte a mi tabla maestra. Este producto que se vendió en la tabla de ventas se factura, a que factura corresponde, aquí no voy a repetir en la tabla de detalles, no voy a repetir la fecha, el número de clientes, el número de factura, no puedo repetir los datos, no puedo duplicar la información, es una práctica totalmente condenable y propia de amateur de bases de datos repetir información. Y por último tenemos: FacD_ArtID  ID de mi tabla de productos.

Nuevamente en la tabla de detalles de facturas, no voy a poner la descripción del producto con el código, con la descripción, color, la medida, no voy a duplicar información. Si yo quiero saber que producto es, en base al ID que fue grabado aquí, me voy a la tabla de productos y traigo toda la información. Esto es básicamente un ejemplo de cómo usar ID y como optimizar bases de datos con un breve ejemplo. Es importante entender que aparte de la Primary Key, la fecha del campo cabecera también conviene asignarle propiedades de índice, de clave porque es común buscar las facturas que van de tal fecha a tal fecha, en un rango de fecha. El Prefijo no sería importante, el número de factura habría que estudiarlo y si el ID de cliente va a tener que ser claro, yo quiero todas las facturas del cliente número 2 y me va a ir exclusivamente a esos registros. Imaginemos que el campo cliente no es clave, quiero todas las facturas del cliente2 del año pasado, al motor no le va a quedar otra que recorrer cada una de las facturas del año pasado sean del cliente 2 o no, esto va a causar muchos segundos de demora, a veces hasta minutos. Para eso se crearon los índice, para bajar consultas que nos tomaría minutos sin obtener una respuesta en solo milisegundos. Estas consultas van a demorar milisegundos aun si la tabla tuviera millones de registros, así que es muy importante el tema. Ahora nos vamos a enfocar a partir de esta clase en lo que es optimización de tablas. Sección 3, Clase 7 ¿Qué es MySQL? Es un gestor de bases de datos y fue creado en el año de 1995 para ser más exactos en el mes de mayo y a partir de ahí fue creciendo y creciendo en la comunidad de Web máster, siendo utilizados en servidores Web y prácticamente se hizo el más importante y famoso de los Gestores, porque tiene una versatilidad que no tienen otros gestores gratuitos. El hecho de que los motores gestores de contenido más importantes como Worpress, Sunga y tantos otros lo hayan adoptado como la base principal, ha hecho que los Web masters y luego las empresas adopten este motor de base de datos que es increíble, puede soportar millones y millones de registros y aun así trabaja con una versatilidad y con un tiempo de respuesta y fiabilidad enormes.

Oracle compro en el año 2010 a MySQL, hay una versión gratuita y una versión de pago, con la versión gratuita van a poder trabajar tranquilamente incluso desarrollar software sin ningún tipo de limitante. Vamos a la página de Oracle y descargamos MySQL e instalamos en nuestro equipo para empezar a trabajar.

Sección 3, Clase 8 Instalación MySQL en mi PC. Lo que vamos a hacer en este momento es instalar MySQL., es muy simple, vamos a abrir el navegador, abrimos la página www.mysql.com y nos va a llevar a la página de Oracle, lo que tenemos que hacer es ir a la opción Dowloads (Descargas) hacemos click y vamos a ver que las primeras versiones son las comerciales, obviamente van a querer vender primero antes que regalar, así que vamos a desplazarnos hacia abajo con el Mouse y vamos a ir al último Link Community (GPL) Downloads », le hacemos click, vamos a ir nuevamente para abajo y vamos a ir hasta MySQL on Windows (Installer & Tools) , si ustedes tienen repositorios de Linux, vana a elegir la opción que ustedes necesitan inclusive en algún lugar que no hayan visto por aquí pero se ha visto por otro lado, está el instalador de Mac, pero nosotros nos estamos apoyando en la versión de Windows, hacemos click y vamos a hacer nuevamente click en MySQL Installer. Cuando quieren regalar algo la hacer difícil, por eso yo quiero mostrarles el paso a paso. Porque si no pueden ser que terminen mareándose. Bajamos un poquito, nos detecta que tenemos Windows, a pesar de que si tenemos un y procesador de 64 bits, solo nos permite descargar la versión de 32 bits, hacemos click en Downloads, nos oculta, fíjense que interesante, parece que si uno no se loguea y no se registra no lo puede descargar, nos desplazamos un poquito y le decimos No thanks, just start my download. (Que no gracias, que solo queremos descargar el MySQL), en breve segundos se descarga, estamos descargando la versión completa de 200 Mb, si no el instalador simplemente de 16 Mb. Abrimos nuestra descarga, confirmamos, les aclaro que durante la instalación les pueden aparecer mensajes de error, vuelvan a intentarlo hasta que le permita la instalación sin ningún problemas, tenemos que darle los permisos de administrador, y el instalador va a aparecer

Sección 3, Clase 10 Instalando Heidi SQL en mi PC

Lo que vamos hacer ahora es descargar nuestro gestor de bases de datos, el software que nos va a permitir manejar la base de datos, crear tablas, crear campos hacer nuestras consultas SQL. Y vamos a aprender todo el lenguaje SQL utilizando esta herramienta (Heidi SQL). Lo único que tenemos que hacer es ir a la página de Heidi SQL (heidisql.com), y vamos a la solapa Downloads hacemos click y vamos a bajar nuestro instalador, tenemos 2 opciones vamos a elegir Installer, 32/64 bit combined, esto significa que independientemente de cual sea nuestro sistema operativo, nuestro procesador se va a adaptar perfectamente, hacemos click y comienza la descarga, son un poquito más de 15 Mb, esto demora un poco, ya podemos abrir nuestro instalador. Que buenos que es te software, a todo le damos siguiente, instalar y rápidamente vamos a ver que tenemos instalado en nuestro Heidi SQL.

Sección 3, Clase 11 Conectando al servidor de Bases de Datos con Heidi SQL Como quedamos en el capítulo anterior, vamos a ya a ponernos a trabajar, se acabó tanta teoría en el aire, vamos a empezar a volcar todos los conocimientos y vamos a aprender muchísimo a partir de ahora, como les dije vamos a ir de menor a mayor Lo primero que vamos a hacer con nuestro Heidi SQL abierto, es conectarnos a nuestra base de datos, la que hemos instalado, vamos a ir a donde dice nueva, vamos a llamarlo local, ustedes pueden ponerle el nombre que quieran. De por sí, pode default el Heidi SQL me traen esta dirección IP de Local Host, esto significa que cuando ustedes vean esta dirección, esta está apuntando hasta nuestra propia PC, colocar esta IP es lo mismo que colocar la palabra Local Host y el usuario por default que trae mi base de datos siempre es root, este usuario es el que crea automáticamente cuando ustedes instalan el MySQL, y si recuerdan en el instalador le ha pedido la contraseña para que ustedes definan una contraseña, ustedes van a colocar la contraseña que ya han definido y vamos a darle el botón abrir, previamente ustedes pueden guardarlo para que ya quede guardado, ya se ha quitad la marca de conexión nueva, esta conexión queda guardada en nuestro software para que nosotros podamos conectarnos en todo momento, ya tiene guardado nuestras credenciales para no volver a pedirla, Si por un tema de seguridad, ustedes tuvieran que compartir la maquina con otras personas y no quieren y no quieren que estas personas ingresen en su Base de datos, pueden dar donde dice pedir credenciales y esto haría que ante cada nuevo intento de conexión a la base de datos les va a pedir por pantalla el nombre de usuario y contraseña, es una medida de seguridad, por supuesto si ustedes están

en una PC, en donde ustedes no comparten con nadie las conexiones y demás lo más fácil, lo más fácil y lo más cómodo es que no pidan las credenciales y estén grabadas, así entran directamente a la bases de Datos. Vamos a dar abrir, y vamos a ver que nos aparece ya nuestra conexión local y todo esto que ven ustedes con este icono son bases de Datos, hay bases de datos que son del sistema, que son propias del motor como information_schema, son propias del sistema y tienen toda la información de la Base de Datos que ustedes crean. Information_schema.. Esta base de datos es muy usada en programación, cuando desde programación queremos sondear cuantas tablas hay creadas, como son los campos, que nombres de campos, es para lo único que se usa esta base de datos. Luego tiene una base de datos (MySQL) por default creada, que tiene una serie de seteos propios de MySQL. Perfomance_schema- después tiene otra tabla también perfomance que más tiene que ver con una serie de tablas que nos sirven para reportes del uso de la base de datos, generalmente todo esto que se está mencionando no van a tener que usarse, si simplemente lo que quieren hacer es crear una base de datos, grabar información y luego recuperarla, esto es algo ya más avanzado para gente de sistemas que quieren hacer un desarrollo especial que tenga que ver con desconocerla base de datos en a que me estoy conectando y poder desde programación capturar la información de las tablas, los campos y demás. No vamos a hacer uso de esto día a día. Sys- Luego hay una base también adicional que es sys de sistemas y tampoco la vamos a usar. Y últimamente en las nuevas instalación tanto de Heidi sql como de MySQL, están viniendo 2 bases de datos de ejemplo esto es algo muy nuevo, les diría que hasta hace unos meses atrás no estaba, es una base de datos llamada: Shakila - es una base de datos que tiene que ver con entretenimiento y mucha información, son base de datos de muestra que vienen para que ustedes las recorran. Las base de datos llamada: World  que es una base de datos con nombres de países y ciudades y cierta información, son base de datos que les van a servir para hacer prácticas, para insertar registros, para realizar consultas SQL, pero nosotros en el curso vamos a tener nuestra propia base de datos. Ya nos hemos conectado a nuestra base de datos local, ustedes lo deben estar viendo por sus propios medios también, me gustaría que a medida que yo vaya haciendo cosas, ustedes las puedan replicar en sus PC.

Sección 3, Clase 12 Creando nuestra primera Base de Datos

Sección 3, Clase 13

Sección 3, Clase 14

Sección 3, Clase 15

Sección 3, Clase 16

Sección 3, Clase 17

Sección 4 NORMALIZACION DE BASE DE DATOS Sección 4, Clase 20 Empezaremos a ver el tema de: OPTIMIZACION DE BASES DE DATOS Vamos a hablar de:     

Como deberíamos crear nuestras tablas. Nuestros campos. Que reglas respetar para ganar en optimización y en performance. Cuáles son las malas prácticas y errores. Cuáles son las buenas prácticas, han creadas luego de décadas de trabajo con bases de datos por miles de expertos.

Existe algo llamado las 3 formas normales, es como el ABC, lo primero que tendría que aprender todo estudiante de bases de datos para no cometer errores. Y da cuenta de una serie de reglas extremadamente importantes que se debe cumplir al diseñar nuestras bases de datos y nuestras tablas y sus campos.

La primera forma Normal 

Primer Forma Normal: Dice  “No se deben repetir datos en una tabla”,

Nos referimos al famoso Maestro y detalle (Tabla Maestra, tabla de detalle) Ejemplo, vamos a empezar con una tabla que está muy mal hecha, fijémonos en esta tabla, se le ha puesto el nombre de ventas mal para que nos demos cuenta.

Tenemos una tabla de ventas, esta tabla de ventas me está mezclando cabecera con detalle, tiene muchos errores, y si hablamos de la primera forma normal vemos que estamos repitiendo información para una misma venta: 1. El número de factura lo estoy repitiendo Muchas veces. 2. El nombre del cliente lo estoy repitiendo muchas veces. 3. Y como lo verán está muy mal incluir en una tabla de ventas el nombre del cliente ya habíamos hablado esto, el nombre del producto. 4. Y estamos repitiendo datos, la fecha de la factura va a ser la misma para todos sus ítems, si tengo una factura donde vendí 10 productos diferentes, no puedo repetir 10 veces la fecha. Para eso se ha separado de acuerdo a la primera forma normal la factura de la cabecera y el detalle de factura, así que vamos a ver por ejemplo como se puede mejorar esta tabla, vamos a hacer una mejora pero no quiero extenderme mucho porque estaría pisando la segunda forma normal, lo vamos a ver y lo vamos a continuar la siguiente clase.

Tenemos una tabla llamada ventasmasomenos que mostramos a continuación:

Significa que yo ya algo he mejorado, si ustedes nos en ventasmal:

  

Solamente tengo la Primary Key, no tengo ningún campo indexado. Tengo mi producto que es un Varchar de 60 o un texto. Mi cliente que es Varchar de 60, que es otro texto.

En la tabla masomenos,

  

Ya se ha modificado el producto, ya se puso como numérico y se ha cambiado el nombre por productoID. Y se ha hecho lo mismo con clientes y ahora es un dato numérico. Además los he convertido en índices para poder buscarlos rápidamente en mi tabla de facturas.

Pero esto sigue estando mal, porque estoy repitiendo información en el campo de número de factura, vamos a ver cómo quedaría bien. Estas mismas tablas se van a mostrar en la segunda forma normal, no es una incoherencia pero quiero que ustedes vean esto mismo, me voy a explicar en la segunda forma normal que se extiende un poquito más y que me da más información de cómo optimizar las tablas. Ahora, cuál sería el resultado de ver nuestras tablas correctamente:

Yo tengo que dividir estos 4 registros en facturas de cabecera y en factura de detalle, vamos a ver cómo quedaría: Si vamos a la tabla de ventasCab (de cabecera):

Vemos que tenemos menos campos, porque son los campos que se van a repetir y yo no tengo que repetir, aquí en definitiva tengo 2 facturas: la factura 150 y la factura 152, como son 2 facturas diferentes puede ser que la fecha coincida, no hay ningún problema, puede ser que la fecha se repita y puede ser que yo tenga una factura hecha como al cliente número 15 y que tenga una próxima factura con el cliente número 15, no hay nada de malo que aquí la información se repita porque está apuntando a 2 operaciones diferentes. Ahora vamos a ver nuestra tabla de ventasdet (De detalle):

Nuestra tabla de ventas de detalle tiene:  

Por supuesto una Primary Key, que es auto numérico. Tiene una columna (ventasD_ventasM) que no hemos incluido en nuestras columnas de ventasmal y vetasmasomenos, que tiene que ver con apuntar al registro de cabecera de la tabla de cabecera.

Fíjense:

Tengo una Primary Key número 1, cuando yo tenga que exponer los ítems vendidos en la factura 150, voy a tener que decirles que esos ítems pertenecen a la factura con el ID 1, no puse el número de factura, siempre conviene apuntar al Primary Key es una manera de unir tablas. Entonces volvemos a la tabla de detalles: Yo tengo que la factura con el Primary Key número 1, tuvo 3 productos. Si hubiera vendido 15 productos en una sola factura habría 15 registros con el Primary Key de las facturas VentasM con el número 1. 

Luego tenemos nuestros 3 ID de productos, hacemos de cuenta que hemos facturado nuestros 3 primeros productos con sus cantidades y con sus precios. Está bien que la cantidad y el precio unitario del producto pertenezca al detalle y no pertenezca a la cabecera.

A lo sumo en la cabecera voy a tener un campo total, con el total de la factura, no tenemos que unir esos 2 mundos, la cabecera con sus datos de cabecera, recuerden que estos son ejemplos, en una cabecera de factura generalmente hay 20 o 30 columnas con impuestos, con la fecha, la hora, quien fue el usuario que hizo la venta, quien fue el vendedor, muchísima información, muchas claves y muchos ID apuntando a tablas maestras. Vamos a ir al diseño de la tabla ventasdet:

Tenemos todos los campos que apuntan a un maestro, los tenemos como índices tanto de la tabla maestra de cabecera (ventas_id), como la del producto (ProductoID).

Y a su vez en cabecera:

Tenemos la fecha como índice, no porque apunte a ninguna tabla, sino porque lo quiero poner como índice porque cuando quiera atraerme en una consulta todas las

facturas que el mes de enero me va a dejar el índice hacerlo rápidamente sin tener en cuenta millones de registros que no tienen que ver con el mes de enero, por eso fueron creados los índices. Y también tengo el ID de mi cliente para que vaya a la tabla maestra de cliente, para unir la cabecera de factura con la tabla clientes, el día que yo quiera hacer una consulta de mi venta pero que quiero que me traiga el nombre del cliente, voy a unir ambas tablas y voy a decirle, bueno, vamos a unir la tabla cabecera con la tabla clientes y el punto de unión es el campo CliID, las va a unir perfectamente, las va a machar y me va a traer todas las columnas y los campos que yo necesite tanto de la tabla de cabecera como de la tabla cliente. Esto es la primera forma Normal Sección 4, Clase 21 La segunda forma Normal Segunda Forma Normal: Dice  “Cada campo, cada columna de la tabla debe depender de la clave principal”. Esto significa que nuestra tabla cabecera debe tener campos que solamente tengan que ver con la cabecera, esos campos tienen que depender de la clave principal, del ID autoincremental de la cabecera, no tenemos que poner ahí cantidades de productos, no tenemos que poner productos, porque estamos hablando de la cabecera de una factura. Del mismo modo y esto está más orientado al Detalle que a la cabecera o al maestro, del mismo modo en el detalle no tengo que repetir, ni incluir ningún dato, ningún campo, ninguna columna que tenga que ver con otra cosa que no sea el detalle de producto. Del mismo modo no vamos a incluir en la tabla clientes registros o campos que tengan que ver con otra tabla, solamente vamos a incluir campos específicos, optimizados en cuanto a su tipo de dato que tengan que ver con el ID de la tabla principal. Esto es muy importante, este es el famoso fecha de factura en el detalle, el famoso número de factura, eso es lo que estaba mal, eso fue lo que se le cambio en el ejemplo y esos es lo que se ve a continuación en la tabla de cabecera.

Así que lo que se ha hecho en el ejemplo anterior es optimizar la tabla de acuerdo a la primera y a la segunda forma Normal de bases de satos

Sección 4, Clase 22 La tercera forma Normal 

Tercera Forma Normal: Dice  “No puede haber datos derivados”.

¿Que son los datos derivados? Cuando nosotros tenemos en una tabla un campo identity, un campo ID, que apunta hacia otra tabla,

Sección 4, Clase 23 Buenas practicas – más tablas – menos columnas

Sección 4, Clase 24 Buenas practicas – más registros – menos columnas

Sección 4, Clase 25 Buenas practicas – usar valores Default

Sección 4, Clase 26 Usar campos de estado

Sección 4, Clase 27 Buenas Prácticas - Use Índices para cada campo Significativo

Sección 4, Clase 28 Buenas prácticas - Tablas Resumen

Sección: 5 Lenguaje SQL Sección 5, Clase 29 Introducción al Lenguaje de Bases de Datos Hola qué tal, bienvenidos a esta nueva sección del curso completo de base de datos, y llegamos finalmente a la sección del lenguaje SQL, el lenguaje de base de datos, un lenguaje que va a permitir que ustedes logren cualquier tipo de consulta, cualquier tipo de operación sobre su base de datos y fue creado precisamente para poder interactuar con las bases de datos de manera ágil, versátil, y muy muy velozmente.

SQL significa Structured Query Language o sea lenguaje estructurado de consultas, es un lenguaje que fue creado inicialmente teniendo una visión y luego fue tan popular y tan exitoso que fue adoptado por todos los motores de bases de datos relacionales, hicieron con esto algo que no lograron quizás con lenguajes de programación, lograron que todas las empresas y todos los motores comerciales adoptaran como un estándar este lenguaje. Es por eso que es tan necesario aprenderlo y por eso que es tan potente y que les va a venir muy bien a ustedes aprenderlo de manera profesional y es lo que vamos a hacer a lo largo de este curso. Así que sin más, bienvenidos a esta nueva sección y vamos a comenzar con todo con el lenguaje estructurado de consultas de base de datos. Nos vemos en la siguiente clase.

Sección 5, Clase 30 Consultar nuestras tablas (Sentencia SELECT) Hola, bienvenidos a este nuevo capítulo del curso completo de base de datos y vamos a comenzar a partir de ahora a conocer el lenguaje SQL. Vamos a comenzar con la instrucción madre del lenguaje SQL, la más importante quizás, la que hace que tenga sentido el lenguaje SQL qué es nuestra instrucción

SELECT.

La instrucción SELECT es la instrucción que se usa para consultar la base de datos y si nos guiamos por el inglés, ya que todo el mundo dice que el lenguaje SQL es como hablar en inglés, el lenguaje nos dice que esta instrucción lo que hace es seleccionar los datos que vamos a obtener en pantalla o en archivos o en lo que nosotros necesitemos. Vamos a ver un poquito de su sintaxis: Vamos a tomar nuestra primer tabla que es la tabla clientes que es la más sencilla, tenemos un ID de cliente, y un nombre:

Y vamos a hacer una simple instrucción SELECT, la más fácil de todas: SELECT * FROM Clientes

SELECT * FROM Clientes

   

Siempre empieza con esta palabra. Significa traerme todos los campos de la tabla. Me indica de qué tabla debe tomar la información. De la tabla clientes.

Y lo voy a ejecutar recuerden que para ejecutar o dar F 9 o hacen clic en el botoncito de reproducir, automáticamente me trae todos los registros de la tabla clientes. Eso es lo que hace esta sintaxis, la sintaxis del SELECT es:

SELECT qué campos quiero tomar, Luego viene la cláusula FROM de donde los quiero tomar y luego vamos a ver la clase que viene como empieza a tomar forma nuestra sentencia SELECT para hacer cosas más complejas porque es muy probable que ustedes no quieran obtener todos los campos o todos los registros de nuestra tabla. Con respecto a los campos, es una mala práctica, es algo no aconsejable el uso del asterisco (*) porque si ustedes tuvieran una tabla con 30 campos y solamente lo que quieren consultar es el número de CUIT, o el número de teléfono, o el email de un cliente no tiene sentido forzar al motor para que nos traiga todos los campos, todas las columnas porque están digamos, generando un un Izu de performance le dice así en sistemas porque están haciendo que el procesador trabaje más de lo que debe trabajar, están generando más tráfico en la red, Imaginen que pueden tener un servidor en un servidor web, en un recurso compartido en la web y en la web Todo lo que tiene que ver con transferencia de archivos o de datos tiene su costo en tiempo y en procesador, entonces no tiene sentido pedirle que me traiga todos los campos; es lo más fácil es lo más cómodo sí, pero no es lo que debe hacer un profesional. Entonces si yo solamente quiero la razón social coloco, que me traiga solamente la razón social: SELECT Cli_RazonSocial FROM Clientes y si solamente quisiera el Id: SELECT Cli_Id FROM Clientes Ejecuto y solamente me trae la columna Id, no sólo es más rápido el motor no se esfuerza tanto recolectando todos los campos y todas las columnas de mi registro, por cada uno de los registros; imagínense que esta es una tabla de prueba donde tenemos poquitos registros 2400 filas, Pero imagínense que tuviéramos tablas con millones de registros, sería forzar demasiado, esperar unos segundos para que venga la información y realmente no tiene sentido.

Entonces la sintaxis, Como les dije SELECT, el campo o campos, de que tabla o tablas, y luego continúa con una serie de cláusulas que tiene la sentencia SELECT que las vamos a aprender a partir de ahora. Bueno este es el comienzo de la cláusula SELECT, la cláusula más importante y vamos ahora a nuestro próximo capítulo donde vamos a empezar a hacerla cada vez más versátil y completa. Los espero.

Sección 5, Clase 31 Clausula WHERE Hola bienvenidos a este nuevo capítulo del curso completo de base de datos y seguimos con el lenguaje SQL, seguimos con nuestra instrucción SELECT y vamos a ver a la madre de todas las cláusulas, una cláusula de la sentencia SELECT, que si no existiera no tendría sentido nada del lenguaje de base de datos, nos referimos a la cláusula WHERE, la cláusula WHERE es la que nos va a permitir filtrar nuestros datos de consulta. Vamos a ver cómo funciona: SELECT Cli_Id FROM Clientes A la sintaxis de la Sentencia SELECT, le vamos a agregarle una nueva cláusula, a continuación (el orden siempre tiene que ser respetado, siempre comienza con SELECT), el nombre de los campos, La cláusula FROM, de donde provienen los campos y luego a continuación viene la cláusula WHERE. Por ejemplo: SELECT Cli_Id FROM Clientes WHERE Cli_Id>10

CLI aided sea mayor a 20 a 10 perdón fíjense cómo ahora sólo me ha traído los Eiriz mayores a 10. No es condición necesaria que la cláusula Wear haga mención a un campo que nosotros tenemos en la lista de valores podríamos vamos a verlo en otra tabla o en esta misma. Vamos a ver cómo nosotros podemos usar aquí un campo en nuestra cláusula Wear que no ha sido incluido en nuestra lista de campos por ejemplo que razón social sea mayor a la letra no tiene mucho sentido

esto pero es para mostrar nos trae todos porque porque todos tienen al menos un texto más complejo que una simple letra. Esto es para simplemente no tiene sentido la consulta pero es para que ustedes vean como yo tengo independencia en mi cláusula wear con respecto a mi lista de campos a mostrar no hace falta incluirlo yo puedo aquí vamos a tomar otra tabla la tabla productos por ejemplo vamos a borrar nuestra consulta y vamos a decirle que traiga la columna descripción creo que se llamaba así. Vamos a ver si Prot descripción que me traiga todas las descripciones de productos de la Tabla Productos donde por ejemplo nuestro precio sea mayor a cero y me trae todos los productos. Todas las descripciones de los productos vamos a ver los datos. Fíjense que hay una columna de. No todos tienen precio. Solo algunos tienen precio. Por ejemplo este Energizer a 27. Vamos a buscarlo para ver que es cierto vamos a ordenarme permite hacer esto el G10 se huele. Hago click en la columna y me ordenan los datos. Vamos rápidamente a buscar Energizer a 27. Se dan cuenta. Esto es muy potente y vamos a ver que no queda ahí la cosa porque qué pasa si vamos a agregar un par de campos más pero Deivid precio vamos a ejecutarlo. Aquí tenemos para que ustedes puedan ver que el precio no he mentido. Solamente me trae los productos que tienen precio mayor a cero. Ahora supongamos que nosotros queremos hacer una consulta compuesta no solo por una condición si no

que tenemos varias condiciones. Entonces nosotros queremos vamos a la vez sólo para este caso voy a poner un asterisco. Vamos a ver todos los campos ok. Vamos a hacer así el G10 se cuela me permite no hace falta que esté todo en una sola línea en el Jaydy ese vuelo lo va a interpretar bien y lo va a ejecutar sin problemas. Ahora yo quiero algo más complejo quiero que me traiga todos los productos cuyo precio sea mayor a cero que tengan estátus cero y cómo uno de esos dos. Esas dos condiciones. Nosotros vamos a usar los operadores lógicos and y or si nosotros tenemos que la condición es que tiene que ser mayor a cero y además tiene que tener un estatus de cero. Vamos a tener que usare Landa esto sería traeme todos los campos de quién. De productos Werdum donde donde el precio sea mayor a cero y el campo produce Status Estatus sea igual a cero. Lo ejecutamos y fíjense en milisegundos como me trajo sin que sean estamos ojo que estamos haciendo consultas de dos campos que no tienen nada que ver con los índices no son índices y me los ha traído sin ningún problema y no es que tenemos dos registros tenemos 7200 registros. Fíjense lo veloz que opera este motor de base de datos. Bueno aquí tenemos ya nuestros productos filtrados con estátus cero y el precio pero vamos a hacerlo más complejo todavía y para eso vamos a tener que usar los paréntesis porque recuérdense en las ecuaciones matemáticas cuando nosotros creemos que primero evalué una condición la metemos entre paréntesis y le

va a dar prioridad. Yo quiero que me traiga los productos que tengan precio mayor a cero y que me traigan los productos cuyo estatus sea igual a cero o los productos cuyo estatus sea igual a uno y el proveedor sea igual. Me la voy a jugar diciendo No sé si esto va a qué es lo que va a hacer esto eso la consulta quiere que traigamos sí o sí los precios que sean mayor a cero eso no se negocia y además que lo filtre por los productos cuyo estatus sea igual a cero o que no sea igual a cero que sea igual a uno pero que pertenezcan al proveedor 97 una cosa o la otra. Vamos a ejecutar nos perdones Prov hoy día no es Prov tiene razón me equivoqué. Ahí está bueno. Fíjense cumplió las dos condiciones solamente cuando encontró que el estatus era uno se aseguró que el proveedor sea 97. No me trajo el estatus el estatus uno de otro proveedor no me trajo el estatus uno del proveedor 41 o del 110 solamente incluyo los productos de estratos 1 cuando el proveedor era 97 para el resto solamente me trajo de cualquier proveedor pero el estatus tiene que ser cero. Se entiende esto. Esto no tiene límites. Podrían escribir una cláusula Wer del tamaño de un libro agregándole condiciones parentesis y que cuál es la idea. Cuál es la idea del lenguaje se cuelen si la idea del lenguaje se cuele es que ustedes con una sola escritura de una sentencia sea simple o compleja puedan obtener el cien por cien de la información que necesitan.

No tengan que sobre esa información volver a filtrar nuevamente. La idea es que con un solo disparo ya tengan todo lo que necesiten les envían todo esto al motor el motor lo resuelve a un muy bajo nivel. Estamos hablando de código máquina y les devuelven los registros que ustedes necesitan sea cual sea la unión de tablas las condiciones lo quiero ordenado los quiero agrupados vamos todo eso lo vamos a ir aprendiendo a lo largo de estas clases. Pero fíjense qué potente que es la cláusula Wear no sólo funciona con datos numéricos. Vamos a ver luego todos los todos los chiches que nos da el lenguaje SQL para trabajar con descripciones con nombres con fechas y a ver si tenemos alguna con fecha. Quiero que ustedes vean bueno aquí tenemos vamos a colocar todas las columnas tenemos una tabla que nuestra tabla ventas donde manejamos fechas. Vamos a hacer un pequeño ejercicio vamos a vamos a traer de nuestra tabla ventas por ejemplo nos interesa la fecha no sé si está así escrito sin ventas y bajo fecha ventas el número de cliente y vamos a colocar un campo más que es el total from Verduga vamos a probar que esto funciona funciona perfecto me traen mis tres campos. Todavía no tengo claúsula Wear y ahora vamos a colocar una cláusula Wear donde yo quiero los registros de venta de la fecha que sea superior. Vamos a ver qué fechas tenemos al 3 de enero ok y vamos a poner ventas fecha cuando sea mayor las fechas van con comilla simple siempre en mi ciclo las fechas van con comilla simple y van con el año Hyon el mes y en el día siempre Este es el formato de fecha de mi ciclo lo tienen que aprender porque no va ni él ni el día barra al mes barre el año no se los va a rebotar.

Este es el único formato posible de fecha cuando el ejecuto fijense me filtró a partir del 4 en adelante y yo podría hacerlo más compuesta yo puedo decirle que la fecha sea mayor a tres y la ventas fecha. Vuelvo a repetir el campo no hay problema sea menor a pero al día 10 fíjense día 4 5 6 8 9 y se terminó la historia. Y a esto que me trae le podría agregar otras cosas. Por ejemplo y además de eso que el cliente sea distinto de uno el mayor y el menor es lo que usamos para indicar que un valor sea diferente. Nuestro cliente 1 es consumidor final ya lo conocemos no necesitamos las ventas de los consumidores finales queremos las ventas de los clientes que tienen un Eiriz registrado y una ficha de cliente para poder cobrarles para poder llamarlos para poder hacer lo que nosotros queramos lo ejecutamos y fíjense que mi campo ventas Clea y Dib ya no es uno me ha filtrado y me sigue filtrando y yo ahora quiero además de esto y le doy Enter. Que me traiga no solo las ventas entre el día 4 y 9 de enero y de mis clientes que no sean consumidor final sino que también quiero saber solamente las ventas que superen los 1000 pesos o mil dólares o en qué esté expresado la moneda de acuerdo a cómo Uds. la han interpretado simplemente mayor a mil fijense es un pestañear es algo que no es algo buenísimo es algo con lo que van a trabajar y se van a encantar y tengo 54 registros Fíjense aquí me dice tres columnas 54 registros y yo lo podría ir todavía complejizando más pero esto jueguen ustedes. Les pido que empiecen a usar CL fueron Wer con los con los operadores aun y con las tablas que tienen empiecen a practicar porque esto se va a ir a complejizando y tenemos que ir afianzando conocimientos.

Por supuesto también pueden preguntarme sin ningún problema fíjense estos 54 registros ahora y cuántos registros tenemos una ventas Thaçi 7200 registros de ventas 7200 registros de venta. Vamos a limpiar nuestro filtro. Fíjense la rapidez de esto con la rapidez con la que ha hecho esto 7200 registros de ventas y es un pestañear y ya la consulta cuando lo hago por segunda vez como ya lo había hecho me demora nada. Vamos a ver cuánto demoró la anterior. Vamos a agrandará un poquito esto. La anterior de 54 registros me tardó 15 milisegundos pero no tardó 15 milisegundos en mostrarme 54 registros tardó 15 milisegundos en recorrer 7200 registros y filtrar solamente por los que yo necesitaba. Fíjense lo potente que es esto así que vamos a continuar en la clase que viene mucho más metiéndonos en el mundo de la sentencia C.L y vamos a ver cómo se va enriqueciendo con operadores con cláusulas y con condiciones que vamos a ir metiendo en nuestra gran estrella sentencia del lenguaje se cuele nos vemos en la clase que viene.

Sección 5, Clase 32 Unión de Tablas con la cláusula WHERE Sección 5, Clase 33 Clausula Order By Sección 5, Clase 34 Funciones Sum() Count() Max() AVG() min() Sección 5, Clase 35 Clausula Group By

Me permite segmentar la información y en base a cada segmento voy a poder sumar

Sección 5, Clase 36 Clausula IN / NOT IN En este capítulo vamos a aprender 2 cosas: 1. Obtener valores únicos en nuestras tablas. 2. Subconsultas (Instrucciones Select metidas en otras instrucciones Select). Para que una consulta Select, se convierta en Subconsultas deben pasar 3 cosas: 1. Figurar entre paréntesis dentro de otra sentencia Select, además si o si debe de haber un solo campo en el área de datos.

8. }SELECT Prod_Id AS Codigo, Prod_Descripcion AS Nombre_Producto_que_Nunca_he_vendido FROM productos WHERE Prod_Id NOT IN(select DISTINCT(VD_ProdId) FROM Ventas_detalle)

9. SELECT Prod_Id AS Codigo, Prod_Descripcion AS Nombre_Producto_que_no_me_han_vendido_a_prtir_del_2018 FROM productos WHERE Prod_Id NOT IN(select DISTINCT(VD_ProdId) FROM Ventas_detalle, ventas WHERE VD_VentasId=ventas_Id AND Ventas_Fecha > '2018-01-01')

Sección 5, Clase 37 Clausula BETWEEN Nos va a dar valores entre un rango de fechas, de valores, de números de string de lo que ustedes quieran.

SELECT Ventas_Fecha, Ventas_CliId, Ventas_total FROM ventas WHERE Ventas_CliId BETWEEN 2 AND 100

Sección 5, Clase 38 Clausula LIKE Nos permite buscar en campos string, un texto

SELECT Prod_Id, Prod_Descripcion, Prod_color FROM Productos WHERE CONCAT(Prod_Descripcion, Prod_Color) LIKE '%AD%'

Sección 5, Clase 39 Clausula INNER JOIN (Unión de Tablas) SELECT Ventas_Fecha, Ventas_NroFactura, Ventas_CliId, Cli_RazonSocial, VD_ProdId, Prod_Descripcion, Prod_ProvId, Prov_nombre, VD_cantidad, VD_precio, (VD_cantidad * VD_Precio) AS parcial FROM ventas JOIN Ventas_Detalle ON VD_VentasId = ventas_Id JOIN productos ON VD_ProdId=Prod_Id JOIN Proveedores ON Prod_ProvId=Prov_Id JOIN Clientes ON Ventas_CliId=Cli_Id

Sección 5, Clase 40 Clausula LEFT, RIGHT y FULL JOIN (Union de Tablas) Sección 5, Clase 41 Funciones básicas en MySQL Sección 5, Clase 42 Instrucción INSERT (adicionando datos a nuestras tablas) Hola qué tal. Bienvenidos a este nuevo capítulo del curso completo de base de datos. Y llegó el momento de salir de nuestra sentencia SELECT y meternos en la ejecución de comandos en nuestra base de datos. Nos espera tres comandos, tres instrucciones que tienen una misión muy definida cada uno. El primero y el que vamos a ver en este capítulo es la sentencia INSERT, para insertar datos en nuestra base de datos. Si no existiera esta sentencia no tendría sentido La base de datos, es la sentencia con la que vamos a alimentar las tablas y vamos a crear registros en nuestra base de datos y vamos a verlo lo más completo posible con todos los condimentos que tiene esta instrucción INSERT, La sintaxis es muy simple, se le dice insertar en donde, en una tabla.

Vamos a hacer un ejemplo con la tabla alumnos vamos a ver aquí nuestra tabla de alumnos vamos a tener que saber los campos a ver si tienen algún valor predeterminado. Vamos a achicar esto un poquito el único dato que vamos a ingresar es nombre por qué. Porque sabemos que nuestro Id es un campo que lo va a llenar automáticamente el motor. Nosotros no tenemos que moverle ningún valor así que vamos a empezar de lo más sencillo a lo más complejo: INSERT INTO alumnos (alumno_nombre) y lo que va después del paréntesis es la lista de los campos en los que vamos a insertar valores. En este caso, vamos alumno, nombre Cierro paréntesis. Por qué. Por qué no tengo más campos. Si tuviera más campos para insertar los separo por comas dentro del paréntesis. Pero ya lo vamos a ver en otro ejemplo luego va una cláusula llamada VALUES inmediatamente abro otro paréntesis para indicar los valores ok. En el primer conjunto de paréntesis tenemos los campos en el segundo conjunto a la derecha de válidos tenemos los valores tan simple como eso y como el nombre es un campo de tipo string el valor tiene que estar encerrado entre comillas simple no comilla doble. Un ejemplo ejecutamos perfecto no nos dio ningún error aquí abajo no nos dice que hay una fila afectada y que duró. Fíjense que las inserciones duran más tardan más en hacerse que los. La sentencia C.L. Esto es porque al haber índices tiene que armar la tabla de índices y tiene que armar la tabla de datos.

Vamos a nuestros datos y tenemos ya nuestro quinto registro que es Pedro Narvaja. Fíjense qué fácil. Ustedes sólo tienen que aprenderse esta estructura INSERT INTO la tabla. Los campos encerrados entre paréntesis valioso y los datos vamos a ver ahora algo más complejo pero no complejo porque cambie sino porque va a hacer más campos porque van a ver que es muy fácil. Tenemos la Tabla Productos ahora todos mis todos mis campos de la tabla productos tienen un valor predeterminado. Esto significa que yo podría obviar todos y hacer simplemente un insert de la Tabla Productos pero le vamos a colocar al menos una descripción para que vean el registro si no no van a ver nada. Vamos a cambiar aquí y aquí le vamos a poner una descripción no sé mesa y cuatro sillas insertamos. Y fíjense cuál es cuál es la diferencia de alumnos a productos alumnos. Yo tenía solo un campo para ingresar valores en productos tengo muchos campos pero sin embargo aproveché los logos los datos predeterminados y lo que hice fue alivianar mi sentencia y solamente ingresar la descripción. Aquí está mi mesa y cuatro sillas. Fíjense que ya me dio un número de producto una idea de producto una descripción en color tiene un valor por defecto de nada de un espacio me puso un estatus 1 porque es mi valor por defecto. Aquí lo tenemos. Me puso un precio en cero seguramente muy bien tengo el Heydi de proveedor mi valor por defecto es un Nul o sea no va a tener forma de enlazar este registro con una tabla proveedores y el resto de mis campos con valor por defecto. Fíjense lo que yo les comentaba en mi consejo de optimización de base de datos de lo rápido que puede resultar en tablas que tienen muchísimos campos cuando ustedes tengan que hacer operaciones sobre ella cuando solamente tengan que incluir o mencionar los campos que no tengan valores por defecto y yo podría hacer una inserción tranquilamente de un registro más obviando la descripción pero hacer

un registro sin sentido porque también la descripción tiene un valor por defecto y me va a crear un registro con una idea nada más sin ningún tipo de valor sustancial. Esto es todo lo que ustedes tienen que saber de insert vamos a hacer algo más completo para que ustedes vean vamos a agregar a nuestra descripción además el color y esto es igual separo por comas abro comillas blancos de color blanco para mi mesa y cuatro sillas y aquí podemos poner la mesa sola para no repetir lo voy a poner aquí puedo usar funciones obviamente no puedo poner un cais y me va a convertir en mayúscula el dato que yo le ponga. Imagínense que esto viene de va a venir y se va a ejecutar desde aplicaciones ustedes no van a ir a insertar sus registros a mano van a tener aplicaciones donde el usuario rellena unos unos campos unos textbook van a apretar el botón Grabar van a hacer clic en grabar y todo esto se va a armar una sentencia INSERT en memoria y se va a enviar a la base de datos para alimentar sus bases de datos. Vamos a darle ejecutar aquí nuevamente fíjense que ahora tardó unas décimas unas centésimas de segundo o más. Tenemos dos campos y ahora si bajamos tenemos vamos a refrescar a recargar y aquí tenemos nuestra mesa en mayúscula color blanco y el resto de nuestros campos totalmente autocompletado. Si tuviéramos que ingresar algún algún dato de tipo numérico el orden en que yo ponga los campos no importa no interfiere. No importa que si en la tabla la descripción está antes del color yo puedo cambiar aquí y poner el orden que a mí me guste y le voy a poner un precio de 100 komas 7.50. Obviamente al usar la coma como separador de campos no puedo usar la coma como decimal. Además en mi ciclo el decimal es el punto y no la coma. Este dato también es importante. Lo voy a ejecutar vamos a ir a nuestra tabla voy a recargar y voy a tener otra mesa de color blanco por 100 con 50 y aquí me lo muestra con comas. Pero no importa no importa con qué me lo muestra me lo muestra con Koma porque para mi Windows el separador decimales la coma pero para cuando ustedes tengan que grabar instrucciones o hacer una actualización de tablas van a tener que usar el punto decimal.

Bueno esto es esto es todo el misterio de la sentencia. Como verán tiene mucho más complejidad la sentencia Cele porque es mucho más completa tiene muchas cláusulas tiene mucha mucha vuelta y recuerden que con una sola sentencia INSERT ustedes podrían traer un conjunto de datos y con funciones en el medio bastante grande. Pero la sentencia INSERT es tan simple como esto ustedes van a ver quizás en algunos ejemplos en Internet van a ver cosas así sin los campos en este caso si yo ejecutara esto ahora daría un error porque para obviar la lista de campos es necesario que los valores sí estén ordenados y no me salté ningún campo si estén ordenados de acuerdo a cómo fueron creados en la tabla en este caso yo voy a tener que incluye primero la descripción después el color después el estatus. Aquí no cuenta y esto es muy importante aquí no cuenta los valores por defecto si yo no coloco la lista de campos estoy obligado a insertar la totalidad de los campos de la tabla. Nadie usa esto. Realmente no sé ni por qué ponen el ejemplo en internet quizás para tablas que tengan dos campos para no tener que mencionarlos y yo ya sé que en un campo va un dato numérico y en el otro una string y se hace mucho más rápido pero en tablas maestras de cierta importancia. Es necesario que ustedes coloquen antes del valioso la lista de los campos así que bueno esto ha sido todo honesta en este capítulo en la clase insert hagan prácticas practiquen insertar registros en cada una de las tablas en cada una de las tablas que tienen en el curso vayan a la solapa de datos refresquen y vean qué fue lo que hizo. Jueguen con funciones y realmente cuando estén preparados pasen a la clase siguiente que la clase del aplique donde vamos a aprender a actualizar datos. Esa es un poco más completa tiene un poco más de variantes así que bueno sin más. Los veo en la próxima clase.

Sección 5, Clase 43 Instrucción UPDATE (Actualizando datos de nuestras tablas)

UPDATE productos SET prod_status = 0

UPDATE productos SET prod_status = 1 WHERE

prod_precio > 0

UPDATE productos SET prod_status = 1, Prod_VentasSuspendidas=1 WHERE prod_precio > 0

UPDATE productos SET prod_precio = 0, Prod_CompraSuspendida=1 WHERE prod_provId= 0

UPDATE productos SET prod_precio = 100 WHERE prod_provId IN (SELECT Prov_Id FROM Proveedores WHERE Prov_CompraSuspendida=0)

Sección 5, Clase 44 Instrucción DELETE (Borrando registros en la Base de Datos)

Cuestionario 4: Examen para la sección de Lenguaje SQL

Sección 6 Ejercicios puntuales de la instrucción SELECT

Sección 6, Clase 45 Ejercicios SELECT para una sola Tabla

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF