Gabriel Díaz
Cristian Orozco Benjumea
David Campos
Arath Jimenez
Miguel Ángel Rodríguez Romero
sebastian felipe herrera sanchez
Gustavo Torres
Geordano González Rabadán
Carlos Reyero
Pedro Ramón Sánchez Chacón
Pablo Acuña
Oscar Pérez González
Alejandro Giraldo Londoño
Reinaldo Mendoza
Edgar Alfredo Hernández Peña
Jesús Israel Contreras Urquiola
Alejandro Giraldo Londoño
Ramon Magaña Carrillo
Andres Evaristo Ruiz Gonzalez
Braian Peña
Angel Perez
Fabricio González Guasque
Reinaldo Mendoza
Irvin Cabal
Smerlyn Javier Eusebio Bonifacio
Reinaldo Mendoza
John Jairo Caranton Ruiz
Pedro Alberto De La Cruz Hernandez
Wilson Fernando Antury Torres
Angel de Jesus Quintero Pereira
Edith Giselle Lopez Lopez
Javier Romero
Cristian Henao
Sebastian Ruiz Garcia
Elder Adán Chub Col
Jesús Rubén Esparza Soto
Alexander Velasco
Buzu B
Andres Enrique Espinosa
Luis Andrade
Francisco Raymundo Reynoso Banderas
Facundo Nicolás García Martoni
ProfesorFernando Huamán Santamaria
Descripción gráfica, vacio vs null
 NOT NULL, year INTEGER UNSIGNED NOT NULL DEFAULT 1900, lenguage VARCHAR(2) NOT NULL DEFAULT 'es' COMMENT 'ISO 639-1 Lenguage', cover_url VARCHAR(500), price DOUBLE (6,2) NOT NULL DEFAULT 10.0, sellable TINYINT(1) DEFAULT 1, copies INTEGER NOT NULL DEFAULT 1, description TEXT, PRIMARY KEY (book_id) );
El video del curso no cumple con la versión actual del manejador MariaDB. la ubicación de la Query para determinar la llave primaria no va al inicio. Gracias Gustavo por aclarar la sintaxis correcta.
Veo que también da error dejar el campo Author sin ninguna especificación de formato.
No es posible limpiar pantalla mysql en Windows porque no han creado el comando todavía, si de algo les sirve para los que intentan cls, clear, ctrl + L, entre otros.
Gracias! Ahora entiendo porque no me funcionaba nada de lo que encontraba en los foros 😃
lo que hago para hacer el efecto de limpiar es bajar el escroll a lo ultimo, y presiono la telca “inicio”
RESUMEN:
iniciamos con---> CREATE DATABSE platzi_operation;
creamos DB----> CREATE DATABASE IF NOT EXISTS platzi_operation; Si ay existe, dirá que el Query es OK, está blindado y no será arrojado como error
muestra---> SHOW warnings. La DB no peude crearrse por que ya existe.
CREATE DATABSE platzi_operation; Me arroja un ERROR como un error porque ya existe.
Nota: Cuando te arroja empty sets quiere decir que no hay nada de data en lo que estás consultando.Cuando te conectas en un driver las tuplas son nulas.
Tip: Cada tabla se llame en el plural del sustantivo que vamos a guardar. Si guardas libros pues la tabla deberá llamarse LIBROS. Y de preferencia en ingles. Convention over configuration. Tip: No se gurdan archivos binarios en la base de datos relacional, nunca guardar una imagen, pero si una referencia. Tip: Lo que necesita toda tabla es un ID. para ubicar a cada tupla de manera única, un entero autoincremental.
CREATE TABLE IF NOT EXIST books ( book_id INTEGER UNSIGNED PRIMARY KEY AUTO_INCREMENT, author, // Se deja sin indicar debido a que posteriormente tendrá un campo numérico ID en una tabla distinta. title VARCHAR(100) NOT NULL, // Estamos diciendole que exija un dato no nulo, es decir que exista algo, asi sea un espacio, pues los espacios aunque invisibles ocupan memoria. year INTEGER UNSIGNED NOT NULL DEFAULT 1900, // Si no le envío nada por defecto me pondrá un valor determinado. (1900), lenguaje VARCHAR (2) NOT NULL DEFAULT 'es' COMMENT// Convencion de idiomas en dos letras, comentarios solo los ven los que tienen acceso a la estructura. cover_url VARCHAR (500), price DOUBLE (6,2) NOT NULL DEFAULT 10.0,// Decimales. Escribame 6 digitos, y 2 decimales. Por lo que tengo 4 en las unidaes y 2 decimales.
________BANDERAS: sellable TINYINT (1) DEFAULT 1, // Se puede vender si o no. copies INTEGER NOT NULL DEFAULT 1, description TEXT
);
Llave primaria autoincremental. Al borrar una tupla el número autoincremental lo que hace es que sigue con el número en el que iba, MySQL no detecta la tupla eliminada. El número que existe en esta columna no necesariamente es la Cardinalidad de la tabla. La cardinaldiad es el número de elementos de un conjunto en esta tabla.
Podemos hacer que un INTEGER sea +/- o, Solo positivo: No almacena en el campo de byte el signo, por lo que sea horran potencias de dos para mejorar el espacio. UNSIGNED No almacena el simbolo por lo que almacena solo positivo.
NOTA: Los datos numéricos pueden ser del tipo TINYINT,SMALLINT,MEDIUMINT,INT O INTEGER, BIGINT. El tipo de dato entero que hoy en día circula en algunos contextos ya pasó la capacidad del tipo de dato INTGER existente,esto en casi cualquier lenguaje de programción, y si decidieramos almacenarla como string y luego castearla a int tendríamos un problema de overhead.
Tremendo resumen, buenísimo
me da mal sabor de boca cuando iniciando un curso el docente no se toma el tiempo suficiente o no entrega los ++paso a paso para instalar el laboratorio de prácticas IDÉNTICO al que el utiliza++ sin objeción debería ser un vídeo, lo mismo o igualmente las herramientas que ellos usan en los vídeos.
laboratorio de prácticas IDÉNTICO ---> creo que en este caso es una consola unix
entonces el cursos ya no es práctico porque las herramientas en los diferentes S.O son distintas (comandos y demás / no veo feedback para las preguntas de los estudiantes en este tema de configuración) y el curso se vuelve solo ver vídeos y vídeos, lo mismo me paso en el curso anterior "Curso de introducción a la terminal y línea de comandos" donde me toco instalar linux en windows entonces el directorio no era el mismo, el docente tenía ya en su máquina una serie de archivos y configuraciones en donde realizo practicas pero los estudiantes quedamos plop, entonces fue terminar de ver los vídeos y ya..
no se si la mayoría de cursos son así pues solo llevo realizados los cursos de esta ruta de aprendizaje? Y los 2 primero fueron EXCELENTES y no quiero ni imaginar si me pasara con un curso más técnico.
ESPERO ESTO MEJORE A MEDIDA QUE AVANZO EN PLATZI.
es lo mas básico de utilizar una consola para base de datos, en la segunda clase esta como instalar mysql en windows y mac, los que usan linux ya saben como hacerlo por eso me imagino que no lo explican, pero si lo explicaron.
no es idéntico porque cada quien personaliza su terminar (linea de comandos) pero es parecido.
Tienes razón en algo, y es en que siempre hará falta información para contextualizarse mejor de los ejercicios. Pero también quiero contarte algo Edgar, Hoy empecé este curso y si vas a la clase 3 de "consola de MySQL" y revisas el material de aporte de tus compañeros, notarás algo... todos, todos pasamos por el mismo descontexto que tu,( gasté 5 horas del día en solucionar algo y empezar a ver el curso). La montaña del aprendizaje es tan inclinada como tu mismo te la pongas, y te aseguro que entre más inclinada esté te hará un mejor desarrollador. La excelencia no es más que una suma de fallos, dolroes de cabeza y días de esfuerzo, todo hasta que no hay fallos. Si no entiendes algo ve y busca, pregunta a la comunidad. Estamos para ti. Y un saludo bro.
INTEGER: Es un entero,Ocupa 4 bytes.
AUTO_INCREMENT: Hace enteros que se auto incrementan, se meten a una dupla y detecta el numero para hacerlo crecer automáticamente. *Al borrar un dato de MYSQL no lo nota y sigue aumentando números, EJEMPLO 1 2 4, si se elimina el 3 no le importa y sigue contando.
UNSIGNED: hace que un entero sea positivo o negativo o solo positivo. (perdón no lo comprendí bien).
TINYINT: Ocupa 1 byte.
SMALLINT: Ocupa 2 byes.
-Varchar: Tu le tienes que indicar el numero de caracteres a almacenar de texto.EJEMPLO VARCHAR(2) SI.
-NOTNULL: Es decirle a MYSQL que no almacene algo ,algo nulo es que no existe información, en otras palabras es nada.
Year: 10/11/1900
DEFAULT: Es que no le mando información por defecto debe poner el valor que se agrega después del mismo.
COMMENT: Comentario a la columna, que solo se ve al revisar el código.
DOUBLE: Almacena los números enteros y los decimales. *DOUBLE (6,2) esto hace que de los 6 números que le estamos diciendo 2 de ellos los use solo para decimales.
FLOAT: Es un numero que esta almacenando hasta 6 decimales, es para cálculos precisos.
TEXT: Es meter tanto como se pueda. EJEMPLO Descripción de un libro
Al ponerle unisgned, solo aceptará enteros positivos. Saludos.
Gracias por el aporte .
Muchas gracias, no me salia el warning hasta que lo puse como vos WARNINGs. Excelente!
cool
NO ejecuten el script todavía, ESPEREN al siguiente video
jajaja
Una buena practica Nombre de la tabla usar el sustantivo en plural de lo que contiene la tabla en ingles
Asi es
Buenas prácticas:
6- Comando Create
El comando create sirve para crear ya sea tablas o bases de datos, al agregar la instrucción “if not exists” estamos blindando el query, al hacer esto sí la bases de datos existe nuestro RDBMS nos arrojaría un query ok, en vez de query ERROR. A vece cuando hacemos un querys como “show tables”, nuestro RDBMS nos marca por consola empty set que significa que no hay nada. Se debe tomar en cuenta que a veces cuando nos conectamos a través de un driver la respuesta es cero o NULL esto se debe a por que la tuplas afectadas es cero. Al momento de declarar una valor de tipo entero o punto flotante podemos decidir sí guardar el signo en la cadena de bytes.
/*Crear Bases de datos*/ CREATE DATABASE IF NOT EXISTS platzi_operations DEFAULT CHARSET utf8 ;
/*muestra bases de datos*/ SHOW DATABASES;
/*Usar bases de datos*/ USE platzi_library;
/*mostrar bases de datos usada*/ SELECT DATABASE();
/*Mostrar tablas*/ SHOW TABLES;
/*muestra el mensaje de advertencia*/ SHOW WARNINGS;
/*Creación de la tabla*/ CREATE TABLE IF NOT EXISTS `books` ( `book_id` INTEGER UNSIGNED PRIMARY KEY AUTO_INCREMENT, `title` VARCHAR(100) NOT NULL, `year` INTEGER UNSIGNED NOT NULL DEFAULT 1900, `language` VARCHAR(2) NOT NULL DEFAULT 'es' COMMENT 'ISO 639-1 Language', `coverurl` VARCHAR (500), `price` DOUBLE(6,2) NOT NULL DEFAULT 10.0, `sellable` TINYINT(1) NOT NULL DEFAULT 1, `copies` INTEGER UNSIGNED NOT NULL DEFAULT 0, `descirption` TEXT ) ;
Excelente aporte amigo
gracias es un buen aporte amigo
Hay un error y es que DOUBLE permite una mayor precisión en la cantidad de decimales, que FLOAT
Además de eso FLOAT permite una presición de 0 a 23 mientras que DOUBLE la maneja de 24 a 53
y según la documentación de MySQL se recomienda usar para los precios el tipo de dato Decimal(m,n) m cantidad de bits en total, n cantidad en decimal.
No se recomienda usar FLOAT o DOUBLE por que no se guardan de una manera tan fiable, y puede que si guardas un 4, te arroje un 3.99999999999
Listado de cada uno de los tipos de dato numéricos en MySQL, su ocupación en disco y valores.
INT (INTEGER): Ocupación de 4 bytes con valores entre -2147483648 y 2147483647 o entre 0 y 4294967295. SMALLINT: Ocupación de 2 bytes con valores entre -32768 y 32767 o entre 0 y 65535. TINYINT: Ocupación de 1 bytes con valores entre -128 y 127 o entre 0 y 255. MEDIUMINT: Ocupación de 3 bytes con valores entre -8388608 y 8388607 o entre 0 y 16777215. BIGINT: Ocupación de 8 bytes con valores entre -8388608 y 8388607 o entre 0 y 16777215. DECIMAL (NUMERIC): Almacena los números de coma flotante como cadenas o string. FLOAT (m,d): Almacena números de coma flotante, donde ‘m’ es el número de dígitos de la parte entera y ‘d’ el número de decimales. DOUBLE (REAL): Almacena número de coma flotante con precisión doble. Igual que FLOAT, la diferencia es el rango de valores posibles. BIT (BOOL, BOOLEAN): Número entero con valor 0 o 1.
QUE EDITOR SE USA EN ESTA PARTE DICULPEN
Puedes utilizar el que tu desees, lo unico que necesitas es poder escribir texto plano, para posteriormente pegarlo en la terminal.
Podría ser desde Notepad hasta VSCode.
Brackets es mi favorito!
Coincido con el profesor. No guarden binarios en la BD. Es de lo primero que aprendí hace años cuando inicié a trabajar con bases de datos.
realmente me parece importante verlo ejecutar el código del que habla, porque la teoria esta pero no vemos la creacion en proceso
¿Como soluciono este error?
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AUTO_INCREMENT,
Mi query
CREATE TABLE IF NOT EXISTS products (
product_id INTEGER PRIMARY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
stock INTEGER UNSIGNED NOT NULL DEFAULT 0,
price INTEGER UNSIGNED NOT NULL DEFAULT 0,
)
Eliminando la palabra PRIMARY de tu product_id
en MySQL debes colocarlo de esta forma
CREATE TABLE IF NOT EXISTS products (
product_id INTEGER NOT NULL AUTO_INCREMENT
…
…
PRIMARY KEY(product_id)
)
y NOT NULL es para que no contenga valores nulos
No es necesario que elimines la palabra PRIMARY, simplemente debes agregar KEY después 😉
APUNTES:
CREATE TABLE IF NOT EXISTS 'name'
CREATE DATABASE IF NOT EXISTS 'name'