Manuel Silva Guevara
Samuel Rojas Rojas
Syddar Bujato Herrera
Angel de Jesus Quintero Pereira
Daniel Andrés Giraldo Benites
Juan Francisco Hernández Martínez
Alexis Alva Nuñez
Sebastián Pineda Duque
Alexis Alva Nuñez
Jose Ramon Garcia Sterling
David De la Cruz
Oscar Javier Castelblanco Quintero
Javier Romero
Orlando Antonio Camiro Ramírez
Sebastián Pineda Duque
German Dario Ramirez Tamara
Perla Godinez Castillo
Víctor Julián González Estrada
Julián Andrés Santos Méndez
Antony Dixon Albites Tapia
Yezid Garcia Medina
Andrés David Ríos Ramirez
Edith Giselle Lopez Lopez
Miguel Torres
Perla Godinez Castillo
César González
Gabriel De Andrade
Javier Romero
Nicolas Rocha
Sebastian Baez Ramos
Alexander Román
Sebastian Baez Ramos
Juan Carlos Carvalho Betancur
S. C.
leticia vargas
Daniel Andrés Giraldo Benites
Fabiola Dayana Acarapi Alvarez
Andrés David Lizarazo Becerra
Carlos Espinoza Obando
Christian Arturo Rios Mock
Moisés Cedeño
Acá un poco mas de info sobre la diferencia entre los tipos de datos DATE, DATETIME y TIMESTAMP
DATE solo incluye fecha, pero no hora. DATE usa el formato ‘YYYY-MM-DD’. Con un rango de ‘1000-01-01’ a ‘9999-12-31’.
DATETIME incluye fecha y hora, Usa el formato ‘YYYY-MM-DD HH:MM:SS’. Con un rango de ‘1000-01-01 00:00:00’ a ‘9999-12-31 23:59:59’.
TIMESTAMP incluye fecha y hora. Con un rango de ‘1970-01-01 00:00:01’ UTC a ‘2038-01-19 03:14:07’ UTC.
Gracias manuelsilva.
buen aporte
EL no colocar AUTO_INCREMENT a la columna que es PRIMARY KEY simplemente vuelve el proceso de asignar id a una forma manual o se puede asignar desde otra capa de negocios. UNIQUE, la columna que tenga el constraint unique garantiza que el valor que se guarda en esa columna sea único
-. TIMESTAMP Está basado en el número epoch que es el 1 enero de 1970 hasta la fecha y es donde se determina el inicio de las computadoras y es un número entero que se guarda en segundos y permite hacer operaciones sobre el.
-. DATETIME Este tipo de datos puede guardar cualquier valor de tipo fecha sin restricción. Incluso anterior a nuestra era. es por eso que las fechas de nacimiento de usuarios debe utilizar este valor para garantizar que podemos registrarlos con la fecha adecuada.
TIMESTAMP vs DATETIME: hay que resaltar que un, 1.TIMESTAMP "NO PUEDE HACER TODO LO DE DATETIME pero DATETIME SÍ PUEDE HACERLO DE UN TIMESTAMP", 2.DATETIME no está guardado en segundos y no es tan eficiente para hacer cálculos.
-.Active Es buena práctica no eliminar registros de una bases de datos es por ello que se crea una columna como active que es un valor booleano dicho valor sirve para para decir si el registro está activo o no.
-. created_ad y updated_ad
Es buena práctica tener una columna que permite saber el momento exacto en el que se crea un registro o se actualiza. Este tipo de dato se comporta más como una meta-información y nos puede ayudar por ejemplo a cuántos usuarios fueron creados en una fecha en específico, saber cuando una tupla se actualizó
created_ad Es una columna de buena práctica que permite saber cuando se creó un registro. Está utilizará un conjunto de propiedades llamada entre ella se colocará DEFAULT CURRENT_TIMESTAMP . Cuando se realiza un insert sí el valor de esta columna viene vacío colocará en la tupla el valor de la fecha en que se creó de manera automática .
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
/*Tabla clientes*/ CREATE TABLE `clients` ( `client_id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(50) DEFAULT NULL, `email` varchar(100) NOT NULL, `birthdate` date DEFAULT NULL, `gender` enum('M','F') DEFAULT NULL, `active` TINYINT(1) NOT NULL DEFAULT 1, `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`client_id`), UNIQUE KEY `email` (`email`) ) ENGINE=InnoDB AUTO_INCREMENT=101 DEFAULT CHARSET=utf8;
/*Tabla transactions*/ CREATE TABLE `transactions` ( `transaction_id` int(10) unsigned NOT NULL AUTO_INCREMENT, `book_id` int(10) unsigned NOT NULL, `client_id` int(10) unsigned NOT NULL, `type` enum('lend','sell') NOT NULL, `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `modified_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `finished` tinyint(1) NOT NULL DEFAULT '0', `active` TINYINT(1) NOT NULL DEFAULT 1, PRIMARY KEY (`transaction_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
me parede que al type debemos agregarle la opcion de devuelto tal como lo indica al final del video:
`type` enum('lend', 'returned', 'sell') NOT NULL,
Coincido con Daniel, hay un estatus más que cierra la operación cuando el libro es prestado.
Disculpe, ¿Para qué sirve el ON UPDATE CURRENT_TIMESTAMP?
Sirve para que cuando tú actualices algún dato de esa tupla se actualice (ON UPDATE)con la hora que toma del computador en el momento de la actualización (CURRENT_TIMESTAMP)
Les recomiendo esta pagina, que sirve para hacer inspeccion del codigo.
Muy útil, Gracias por el aporte.
OYE ESTA SUPER--------!!!
Hola amigos de platzi aquí les dejo un aporte para que aprendan a como crear un usuario,listarlo y eliminarlo sigan los pasos tal como esta en la imagen espero les sirva.
CREATE TABLE IF NOT EXISTS operations( operation_id INTEGER UNSIGNED PRIMARY KEY AUTO_INCREMENT, book_id INTEGER UNSIGNED, client_id INTEGER UNSIGNED, ´type´ ENUM('borrowed','returned','sold') NOT NULL, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, update_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, finshed TINYINT(1) NOT NULL );
Disculpe, ¿Para qué sirve el ON UPDATE CURRENT_TIMESTAMP?
Hola ** spineda_ ** , el ON UPDATE CURRENT_TIMESTAMP es un Extra, y su función es actualizar automáticamente el campo update_at con la fecha actual, sí ocurrio algun cambio dentro del registro, ejemplo: supongamos que insertamos el nombre de una persona, pero nos equivocamos y se decide actualizar, al momento de realizar el cambio, el campo update_at se actualiza con la fecha y hora tomada desde el pc.
Teniendo en cuenta lo anterior
Yo sugiero en nunca configurar el calendario del pc de forma manual, sino que este se sincronice con el
CREATE TABLE operations( operation_id INTEGER UNSIGNED PRIMARY KEY AUTO_INCREMENT NOT NULL, book_id INTEGER UNSIGNED NOT NULL, client_id INTEGER UNSIGNED NOT NULL, type ENUM('V','P', 'D' ) NOT NULL COMMENT 'V: Vendido -P:Prestado -D: Devuelto', created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, finished TINYINT(1) NOT NULL );```
'type' ENUM('V','P', 'D' ) NOT NULL COMMENT 'V: Vendido -P:Prestado -D: Devuelto',
En Colombia se le suele decir a las tuplas -> registros y a las columnas -> campos.
CREATE TABLE IF NOT EXISTS operations(
operation_id INTEGER UNSIGNED PRIMARY KEY AUTO_INCREMENT,
author_id INTEGER UNSIGNED,
book_id INTEGER UNSIGNED,
´type´ ENUM(‘B’,‘S’,‘R’) COMMENT ‘B=BORROWED,S=SOLD,R=RETURNED’,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
update_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
finshed TINYINT(1) NOT NULL
)
Hice algo diferente a lo de mis compañeros respecto al “TYPE”,pienso
que es mejor solo un carácter para optimizar la indexación.
buena idea :-)
Acá como lo "solucioné", nota de color interesante para la Base de Datos no es lo mismo usar ( ` ) en los nombres que usar ( ' ), lo aprendí a las malas.
CREATE TABLE `operation` ( `operation_id` int(10) unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT, `book_id` INT(10) unsigned NOT NULL, `client_id` INT(10) unsigned NOT NULL, `operation_type` enum('PRESTAMO', 'DEVOLUCIÓN', 'VENTA'), `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `finished` TINYINT(1) NOT NULL, UNIQUE KEY `operation_id` (`operation_id`) );```
Gracias
Gracias, no entendía por qué no me salía. :D
CREATE TABLE clients ( client_id INTEGER UNSIGNED PRIMARY KEY AUTO_INCREMENT, `name` VARCHAR(50) NOT NULL, email VARCHAR(100) NOT NULL UNIQUE, birthdate DATETIME, gender ENUM('M', 'F', 'ND') NOT NULL, active TINYINT(1) NOT NULL DEFAULT 1, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP );```
Me encanta este profe!
También dicta el Curso de Expresiones Regulares :D
++Ahi les dejo el significado de los tipos de datos con fecha o tiempo++ Tipo Fecha DATE : Fecha con formato AAAA-MM-DD TIME : Hora con formato hh:mm:ss DATETIME : Fecha y hora con formato AAAA-MM-DD hh:mm:ss TIMESTAMP : Lapso de tiempo con formato AAAA-MM-DD-hh-mm-ss. YEAR : Año con formato AAAA
Resumen de la clase: Tips: Auto Increment es una buena práctica Siempre crear columna created_at cuando se tiene una base de datos catalogo - operación. Ninguna tupla se borra jamás, se usa columna active con bandera booleana
Tipo de Datos: UNIQUE: valor de llave donde el valor de la columna es único. TIMESTAMP: basado en EPOC, guarda enteros el valor de 1970 a la fecha. DATETIME: ideal para cunpleanos, cualquier valor, no tan eficiente al calcular. ENUM: enumeración de datos, solo se recibe una de las opciones.
Código Reto:
CREATE TABLE IF NOT EXISTS operations ( operation_id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, book_id INT UNSIGNED, client_id INT UNSIGNED, `type` ENUM('borrowed', 'sold', 'returned') NOT NULL, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, finished TINYINT(1) NOT NULL );
Tengo la duda hace un par de clases sobre el uso de las llaves foráneas y el porqué no las hemos utilizado.
Igualmente
Al final del curso lo sabrás. Spoiler: implicitamente se están usando.
Profe no todos los estudiantes son de despues de los 70
x2
Algo tan simple como DATETIME y TIMESTAMP puede explicarse con un esquema de forma muy simple, no hay necesidad de tanta palabrería.
aveces es necesario brindar conceptos completos, la teoría nunca esta de más pero me alegra que pudieras entenderlo fácilmente
CREATE TABLE IF NOT EXISTS authors ( author_id INTEGER UNSIGNED PRIMARY KEY AUTO_INCREMENT, name VARCHAR(100) NOT NULL, nationality VARCHAR(3) ); //MOSTRAR LAS COLUMNAS DE LAS tablas describe authors; desc books; // MOSTRAR COMENTARIOS show full comuns from books //nombre de una columa y reservarla con comillas `integer_column ` `year` CREATE TABLE clients( id_client INTEGER UNSIGNED PRIMARY KEY AUTO_INCREMENT, `name` VARCHAR(50) NOT NULL, email VARCHAR(100) NOT NULL UNIQUE, birthdate DATETIME, gender ENUM('M','F', 'ND') NOT NULL, active TINYINT(1) NOT NULL DEFAULT 1, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); ********NOTA************* DATETIME cualquier fecha como 1800-01-01 00:00:00 TIMESTAMP es un valor desde 1970 hasta ahora, global. Para calculos ('yyyy-mm-dd hh:mm:ss') The DATETIME type is used when you need values that contain both date and time information. MySQL retrieves and displays DATETIME values in 'YYYY-MM-DD HH:MM:SS' format. The supported range is '1000-01-01 00:00:00' to '9999-12-31 23:59:59'. The TIMESTAMP data type has a range of '1970-01-01 00:00:01' UTC to '2038-01-09 03:14:07' UTC. It has varying properties, depending on the MySQL version and the SQL mode the server is running in. ... ENUM ( '','','') An ENUM is a string object with a value chosen from a list of permitted values that are enumerated explicitly in the column specification at table creation time. ********END NOTA**********```
created_ad y updated_ad Es buena práctica tener una columna que permite saber el momento exacto en el que se crea un registro o se actualiza. Este tipo de dato se comporta más como una meta-información y nos puede ayudar por ejemplo a cuántos usuarios fueron creados en una fecha en específico, saber cuando una tupla se actualizó
¿No es buena práctica siempre agregar el "IF NOT EXISTS" a las tablas? O es algo más opcional?
Lo considero una buena práctica, imagina llegar a un nuevo trabajo te den base datos para trabajar y escribas CREATE TABLE Usuarios(insertar los datos) y sobreescribiste en toda la data.
En ese caso, si la tabla ya existe no se creará y te dará un error no va a sobreescribir las tablas.