Creación de tablas mediante arquitectura de información (buenas practicas)
Clase 17 de 23 • Curso de SQL y MySQL 2016
Contenido del curso
Oscar Téllez
Raul Montano
Carlos
Luis Carlos Cárdenas
Carlos Armando Velandia Robayo
Javi Puc
jorge ivan reyes valencia
José Miguel Dueñas Torres
Usuario anónimo
JOSUE PONCE DE LEON CARREÑO
Hinder Adrian Alvarez Perlaza
Ricardo Martin Gomez
Javier
Jero Pizarro
Pedro Alberto De La Cruz Hernandez
José Miguel Dueñas Torres
Tatiana Andrea Aramburo Morales
Leonardo Cano
Santiago Intriago A.
Kevin Andrés Cornejo Surichaqui
Joaquin Araujo
Rubén Amaury Melo Carballo
Pedro Alberto De La Cruz Hernandez
William Reaño Reyes
Angel Rebaja
Marco Antonio Ludeña Farje
Jose Rodríguez
Elioth Monroy
Nilson .
Leandro Avila
Elioth Monroy
Leonel Mena
Hector Fabio Cabrera
Leandro Avila
Marco
Alex Henrry Naupay Ferrer
Aquí les dejo los datos que se insertaron en la clase a la base de datos:
INSERT INTO users(name, email) VALUES ('Ricardo', 'ricardo@hola.com'), ('Laura', 'laura@hola.com'), ('Jose', 'jose@hola.com'), ('Sofia', 'sofia@hola.com'), ('Fernanda', 'fernanda@hola.com'), ('Jose Guillermo', 'memo@hola.com'), ('Maria', 'maria@hola.com'), ('Susana', 'susana@hola.com'), ('Jorge', 'jorge@hola.com');
INSERT INTO publishers(publisher_id, name, country) VALUES (1, 'OReilly', 'USA'), (2, 'Santillana', 'Mexico'), (3, 'MIT Edu', 'USA'), (4, 'UTPC', 'Colombia'), (5, 'Platzi', 'USA');
INSERT INTO books(publisher_id, title, author, description, price, copies) VALUES (1, 'Mastering MySQL', 'John Goodman', 'Clases de bases de datos usando MySQL', 10.50, 4), (2, 'Trigonometria avanzada', 'Pi Tagoras', 'Trigonometria desde sus origenes', 7.30, 2), (3, 'Advanced Statistics', 'Carl Gauss', 'De curvas y otras graficas', 23.60, 1), (4, 'Redes Avanzadas', 'Tim Bernes-Lee', 'Lo que viene siendo el Internet', 13.50, 4), (2, 'Curvas Parabolicas', 'Napoleon TNT', 'Historia de la parabola', 6.99, 10), (1, 'Ruby On (the) Road', 'A Miner', 'Un nuevo acercamiento a la programacion', 18.75, 4), (1, 'Estudios basicos de estudios', 'John Goodman', 'Clases de datos usando MySQL', 10.50 , 4), (4, 'Donde esta Y?', 'John Goodman', 'Clases de datos usando MySQL', 10.50, 4), (3, 'Quimica Avanzada', 'John White', 'Profitable studies on chemistry', 45.35, 1), (4, 'Graficas Matematicas', 'Rene Descartes', 'De donde viene el plano', 13.99, 7), (4, 'Numeros Importantes', 'Leonard Euler', 'De numeros que a veces nos sirven', 10, 3), (3, 'Modelado de conocimiento', 'Jack Friedman', 'Una vez adquirido, como se guarda el conocimiento', 29.99, 2), (3, 'Teoria de juegos', 'John Nash', 'A o B?', 12.55, 3), (1, 'Calculo de variables', 'Brian Kernhigan', 'Programacion mega basica', 9.50, 3), (5, 'Produccion de streaming', 'Juan Pablo Rojas', 'De la oficina ala pan', 23.49, 9), (5, 'ELearning', 'JFD & DvdH', 'Diseno y ejecucion de educacion online', 23.55, 4), (5, 'Pet Caring for Geeks', 'KC', 'Que tu perro aprenda a programar', 18.79, 3 ), (1, 'Algebra basica', 'Al Juarismi', 'Esto de encontrar X o Y, dependiendo', 13.50, 8);
Thank you.
uffff es el primer punto que doy... se lo lleva con like y todo (y)
NUNCA almacenen otra cosa que no sean datos. En la uní e inclusive algunos colegas guardan imágenes o pdfs en la base de datos. Error garrafal!!!
oye siempre he tenido esa duda si no es en BD que otras alternativas hay??
Me ah tocado ver campos en tablas de una base de datos que guardan pdfs, imágenes u otros archivos como tipo BLOB y no solo la ruta hacia el archivo.
-- tabla que englobe la operacion --
-- creacion de tabla actions --
create table actions
(
action_id integer unsigned primary key auto_increment,
book_id integer unsigned not null,
user_id integer unsigned not null,
action_type enum('venta','prestamo','devolucion')
not null,
create_at timestamp not null default current_timestamp
);
desc actions;
-- insertar valores --
insert into publishers(name,country) values('platzi','USA');
-- mostrar datos registrados --
select * from publishers;
-- contar registros --
select count(*) from publishers;
-- segunda forma --
select count(publisher_id)from publishers;
-- eliminar dato y meta datos --
truncate table publishers;
-- cambio enla tabla books--
Drop table books;
create table books
(
book_id integer unsigned primary key auto_increment,
publisher_id integer unsigned not null,
title varchar(60) not null,
author varchar(100)not null,
description text,
price decimal(5,2),
copies int not null default 0
);
-- insertar usuarios --
insert into users(name, email) values
('Ricardo', 'ricardo@hola.com'),
('Laura', 'laura@hola.com'),
('Jose', 'jose@hola.com'),
('Sofia', 'sofia@hola.com'),
('Fernanda', 'fernanda@hola.com'),
('Jose Guillermo', 'memo@hola.com'),
('Maria', 'maria@hola.com'),
('Susana', 'susana@hola.com'),
('Jorge', 'jorge@hola.com');
-- insertar editoriales --
insert into publishers(publisher_id, name, country) values
(1, 'OReilly', 'USA'),
(2, 'Santillana', 'Mexico'),
(3, 'MIT Edu', 'USA'),
(4, 'UTPC', 'Colombia'),
(5, 'Platzi', 'USA');
-- insertar books--
INSERT INTO books(publisher_id, title, author, description, price, copies) VALUES
(1, 'Mastering MySQL', 'John Goodman', 'Clases de bases de datos usando MySQL', 10.50, 4),
(2, 'Trigonometria avanzada', 'Pi Tagoras', 'Trigonometria desde sus origenes', 7.30, 2),
(3, 'Advanced Statistics', 'Carl Gauss', 'De curvas y otras graficas', 23.60, 1),
(4, 'Redes Avanzadas', 'Tim Bernes-Lee', 'Lo que viene siendo el Internet', 13.50, 4),
(2, 'Curvas Parabolicas', 'Napoleon TNT', 'Historia de la parabola', 6.99, 10),
(1, 'Ruby On (the) Road', 'A Miner', 'Un nuevo acercamiento a la programacion', 18.75, 4),
(1, 'Estudios basicos de estudios', 'John Goodman', 'Clases de datos usando MySQL', 10.50 , 4),
(4, 'Donde esta Y?', 'John Goodman', 'Clases de datos usando MySQL', 10.50, 4),
(3, 'Quimica Avanzada', 'John White', 'Profitable studies on chemistry', 45.35, 1),
(4, 'Graficas Matematicas', 'Rene Descartes', 'De donde viene el plano', 13.99, 7),
(4, 'Numeros Importantes', 'Leonard Euler', 'De numeros que a veces nos sirven', 10, 3),
(3, 'Modelado de conocimiento', 'Jack Friedman', 'Una vez adquirido, como se guarda el conocimiento', 29.99, 2),
(3, 'Teoria de juegos', 'John Nash', 'A o B?', 12.55, 3),
(1, 'Calculo de variables', 'Brian Kernhigan', 'Programacion mega basica', 9.50, 3),
(5, 'Produccion de streaming', 'Juan Pablo Rojas', 'De la oficina ala pan', 23.49, 9),
(5, 'ELearning', 'JFD & DvdH', 'Diseno y ejecucion de educacion online', 23.55, 4),
(5, 'Pet Caring for Geeks', 'KC', 'Que tu perro aprenda a programar', 18.79, 3 ),
(1, 'Algebra basica', 'Al Juarismi', 'Esto de encontrar X o Y, dependiendo', 13.50, 8);
Aquí les dejo el SQL de la inserción de los datos de la tabla books, espero les sirva:
*----------------------------------------*INSERT INTO books(publisher_id, title, author, description, price, copies)
VALUES
(1, 'Mastering MySQL', 'John Goodman', 'Clases de bases de datos usando MySQL', 10.50, 4),
(2, 'Trigonometria avanzada', 'Pi Tagoras', 'Trigonometria desde sus origenes', 7.30, 2),(3, 'Advanced Statistics', 'Carl Gauss', 'De curvas y otras graficas', 23.60, 1),
(4, 'Redes Avanzadas', 'Tim Bernes-Lee', 'Lo que viene siendo el Internet', 13.50, 4),
(2, 'Curvas Parabolicas', 'Napoleon TNT', 'Historia de la parabola', 6.99, 10),
(1, 'Ruby On (the) Road', 'A Miner', 'Un nuevo acercamiento a la programacion', 18.75, 4),
(1, 'Estudios basicos de estudios', 'John Goodman', 'Clases de datos usando MySQL', 10.50 , 4),
(4, 'Donde esta Y?', 'John Goodman', 'Clases de datos usando MySQL', 10.50, 4),
(3, 'Quimica Avanzada', 'John White', 'Profitable studies on chemistry', 45.35, 1),
(4, 'Graficas Matematicas', 'Rene Descartes', 'De donde viene el plano', 13.99, 7),
(4, 'Numeros Importantes', 'Leonard Euler', 'De numeros que a veces nos sirven', 10, 3),
(3, 'Modelado de conocimiento', 'Jack Friedman', 'Una vez adquirido, como se guarda el conocimiento', 29.99, 2),
(3, 'Teoria de juegos', 'John Nash', 'A o B?', 12.55, 3),
(1, 'Calculo de variables', 'Brian Kernhigan', 'Programacion mega basica', 9.50, 3),
(5, 'Produccion de streaming', 'Juan Pablo Rojas', 'De la oficina ala pan', 23.49, 9),
(5, 'ELearning', 'JFD & DvdH', 'Diseno y ejecucion de educacion online', 23.55, 4),
(5, 'Pet Caring for Geeks', 'KC', 'Que tu perro aprenda a programar', 18.79, 3 ),
(1, 'Algebra basica', 'Al Juarismi', 'Esto de encontrar X o Y, dependiendo', 13.50,
8);
----------------------------------------
incluir la fecha de creación del registro - created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
Hola a todos, aporto con la estructura de la base de datos (libreria) tomando en cuenta los campos en español, así como los INSERT que se ven en esta lección y agrego un TIP EXTRA para trabajar en consola y no ver desordenados los datos al hacer un SELECT
-- Base de datos Libreria Español-- CREATE DATABASE libreria; CREATE TABLE libros( id_libro INTEGER UNSIGNED PRIMARY KEY AUTO_INCREMENT, id_editor INTEGER UNSIGNED NOT NULL, autor VARCHAR(100) NOT NULL, titulo VARCHAR(60) NOT NULL, descripcion TEXT, precio DECIMAL(5,2), copias INT NOT NULL DEFAULT 0 ); CREATE TABLE editores( id_editor INTEGER UNSIGNED PRIMARY KEY AUTO_INCREMENT, nombre VARCHAR(100) NOT NULL, pais VARCHAR(20) ); CREATE TABLE usuario( id_usuario INTEGER UNSIGNED PRIMARY KEY AUTO_INCREMENT, nombre VARCHAR(100) NOT NULL, email VARCHAR(100) NOT NULL UNIQUE ); CREATE TABLE acciones( id_accion INTEGER UNSIGNED PRIMARY KEY AUTO_INCREMENT, id_libro INTEGER UNSIGNED NOT NULL, id_usuario INTEGER UNSIGNED NOT NULL, tipo_accion ENUM('Venta','Prestamo','Devolucion') NOT NULL, creado_en TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ); -- Insert en Editores 1 registro por Query-- INSERT INTO editores(nombre,pais) VALUES ('Platzi','USA'); INSERT INTO editores(id_editor,nombre,pais) VALUES (10,'Santillana','MX'); INSERT INTO editores(nombre,pais) VALUES ('MIT','USA'); -- Insert en Usuarios varios registro por Query-- INSERT INTO usuario(nombre, email) VALUES ('Ricardo', 'ricardo@hola.com'), ('Laura', 'laura@hola.com'), ('Jose', 'jose@hola.com'), ('Sofia', 'sofia@hola.com'), ('Fernanda', 'fernanda@hola.com'), ('Jose Guillermo', 'memo@hola.com'), ('Maria', 'maria@hola.com'), ('Susana', 'susana@hola.com'), ('Jorge', 'jorge@hola.com'); --Insert en editores varios registro por Query-- INSERT INTO editores(id_editor, nombre, pais) VALUES (1, 'OReilly', 'USA'), (2, 'Santillana', 'Mexico'), (3, 'MIT Edu', 'USA'), (4, 'UTPC', 'Colombia'), (5, 'Platzi', 'USA'); --Insert en libros varios registro por Query-- INSERT INTO libros(id_editor,titulo,autor,descripcion,precio,copias) VALUES (1, 'Mastering MySQL', 'John Goodman', 'Clases de bases de datos usando MySQL', 10.50, 4), (2, 'Trigonometria avanzada', 'Pi Tagoras', 'Trigonometria desde sus origenes', 7.30, 2), (3, 'Advanced Statistics', 'Carl Gauss', 'De curvas y otras graficas', 23.60, 1), (4, 'Redes Avanzadas', 'Tim Bernes-Lee', 'Lo que viene siendo el Internet', 13.50, 4), (2, 'Curvas Parabolicas', 'Napoleon TNT', 'Historia de la parabola', 6.99, 10), (1, 'Ruby On (the) Road', 'A Miner', 'Un nuevo acercamiento a la programacion', 18.75, 4), (1, 'Estudios basicos de estudios', 'John Goodman', 'Clases de datos usando MySQL', 10.50 , 4), (4, 'Donde esta Y?', 'John Goodman', 'Clases de datos usando MySQL', 10.50, 4), (3, 'Quimica Avanzada', 'John White', 'Profitable studies on chemistry', 45.35, 1), (4, 'Graficas Matematicas', 'Rene Descartes', 'De donde viene el plano', 13.99, 7), (4, 'Numeros Importantes', 'Leonard Euler', 'De numeros que a veces nos sirven', 10, 3), (3, 'Modelado de conocimiento', 'Jack Friedman', 'Una vez adquirido, como se guarda el conocimiento', 29.99, 2), (3, 'Teoria de juegos', 'John Nash', 'A o B?', 12.55, 3), (1, 'Calculo de variables', 'Brian Kernhigan', 'Programacion mega basica', 9.50, 3), (5, 'Produccion de streaming', 'Juan Pablo Rojas', 'De la oficina ala pan', 23.49, 9), (5, 'ELearning', 'JFD & DvdH', 'Diseno y ejecucion de educacion online', 23.55, 4), (5, 'Pet Caring for Geeks', 'KC', 'Que tu perro aprenda a programar', 18.79, 3 ), (1, 'Algebra basica', 'Al Juarismi', 'Esto de encontrar X o Y, dependiendo', 13.50, 8); -- Regresa Todo de la Tabla editores-- SELECT * FROM editores; -- Regresa Todo de la Tabla libros PERO del registro con id_libro=6 -- SELECT * FROM libros WHERE id_libro = 6; --Cardinalidad en editores SELECT count(id_editor) FROM editores; --TIPS TERMINAL -- Regresa Todo de la Tabla libros PERO del registro con id_libro=6 -- --Nos muestra por "tarjetas (/G) " SELECT * FROM libros WHERE id_libro = 6 \G -- Regresa Todo de la Tabla libros -- --Nos muestra TODOS los registros ORDENADOS " EXPLAIN SELECT * FROM libros
Muchas gracias por tu aporte.
TRUNCATE es una sentencia DDL y DELETE es una sentencia DML
Donde suben los archivos de la clase ?
al principio del curso
o sigue este enlace:
Es importante saber cuando es bueno usar ENUM, esto con el fin de evitar complicaciones futuras en nuestra base de datos.
Hola, donde esta el archivo que habla en el video? Gracias
create table books (
book_id integer unsigned primary key auto_increment,
book_publisher varchar(100) not null,
book_title varchar(100) not null,
book_author varchar(100) not null,
book_price decimal (9,3) not null
);
create table publishers (
publisher_id integer unsigned primary key auto_increment,
publisher_name varchar(100) not null,
publisher_country varchar (50) not null
);
create table users(
user_id integer unsigned primary key auto_increment,
user_name varchar(100) not null,
user_country varchar (50) not null,
user_email varchar(100) not null unique
);
Aquí les dejo un buen enlace para los que quieran usar comandos como lo hace @beco.
no funk
La cardinalidad es el número de elementos de un conjunto 😃
CREATE TABLE actions ( action_id INTEGER UNSIGNED PRIMARY KEY AUTO_INCREMENT, book_id INTEGER UNSIGNED NOT NULL, user_id INTEGER UNSIGNED NOT NULL, action_type ENUM('venta', 'prestamo', 'devolucion') NOT NULL, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP );
INSERT INTO publishers (name, country) VALUES ('Platzi', 'USA');
SELECT [*] FROM [table-name]; Imprime los registros almacenados en una tabla.SELECT [*] FROM [table-name] WHERE [column] = ['valor'] \G Imprime el (o los) registro(s) que coincida con la instrucción dada. La \G al final le indica a MySQL que los datos se debe mostrar con un “diseño” de tarjeta.SELECT count([*]) FROM [table-name]; Imprime la cardinalidad (número) de un conjunto de elementos.TRUMCATE [table-name]; Elimina todas las filas de una tabla y reinicia el contador de la clave primaria (en caso de estar “automático”), en otras palabras, TRUMCATE borra todo lo que exista dentro de la tabla menos la definición de la misma.DROP TABLE [table-name]; Elimina una tabla por completo de la base de datos (en la que se encuentra posicionado).Nota: Los asteriscos determinan que se seleccionarán todas las columnas de una tabla. El asterisco puede ser reemplazado por una columna en particular, así se optimizará el tiempo de respuesta.
Si necesitas una guía y resumen del curso aquí la tienes.
alguien tiene los archivos .sql que hizo @beco?
Aqui puedes encontrar el sql de este modulo:
en vez de borrar toda la tabla se pudo usar alter table add campo y añadir los campos que faltaban respectivamente
alguien tiene el archivo donde aparecen los datos para llenar el catalogo?
La misma pregunta donde se encuentran los datos del catalogo
ENUM podría servir una aplicación pequeña donde asigno los privilegios de los usuarios? (admin, consultas, usuario.)
Si, si se podría usar.
Considerando que esos vayan a ser tus únicos tipos de usuarios, como comentas que es una aplicación pequeña. creo que si sería la mejor opción
El ENUM también podría utilizarse desde el lado de la aplicación, por ejemplo C# lo soporta.
Las funciones y estructuras entre SQL y Mysql son muy parecidas o practicamente iguales como por ejemplo: select * from users ,como tambien insert into XX () Values
Porque MySQL es un motor de bases de datos SQL
Jajajajajajaja
Me parece excelente la forma de explicar la diferencia entre las funciones DELETE, TRUNCATE y DROP
Delete Elimina todas las filas de la tabla únicamente.
Truncate Elimina todas las filas de la tabla sin borrar la tabla y
resetea los contadores de auto incremento
Drop Elimina los datos y estructura de la tabla.
@beco porque usas PHPmyadmin para los scripts o uso general del programa cuando se puede palicar directamente desde mysql o como seria igual el caso de SQL Server studio management, tiene algun motivo lo que haces?
Estoy usando MariaDB, cuando hice la inserción del segundo elemento que añade en la tabla publishers, la insertó a pesar de que no puse el nombre cuando había definido esa propiedad NOT NULL, alguién? en el video es 15:40
link:

Es el modo de trabajo de MySql