0% encontró este documento útil (0 votos)
7 vistas13 páginas

actividad 5 my SQL

El documento presenta un laboratorio sobre la estructura y manejo de bases de datos en MySQL, incluyendo la creación de tablas para libros y editoriales, así como la inserción de datos y el uso de comandos SQL como JOIN y ALTER TABLE. Se destacan conceptos técnicos como claves primarias, valores por defecto y la importancia de mantener la integridad referencial entre tablas. Además, se concluye que el uso de LEFT JOIN permite identificar relaciones incompletas entre los datos, facilitando la validación y análisis de la información.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
7 vistas13 páginas

actividad 5 my SQL

El documento presenta un laboratorio sobre la estructura y manejo de bases de datos en MySQL, incluyendo la creación de tablas para libros y editoriales, así como la inserción de datos y el uso de comandos SQL como JOIN y ALTER TABLE. Se destacan conceptos técnicos como claves primarias, valores por defecto y la importancia de mantener la integridad referencial entre tablas. Además, se concluye que el uso de LEFT JOIN permite identificar relaciones incompletas entre los datos, facilitando la validación y análisis de la información.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 13

Laboratorio de Mysql – estructura y base de datos –

Nombre: Luis Fernando Apellidos: González Rosas


Documento de identidad: 1024587677 Fecha presentación: 22/05/2025
Vocabulario técnico encontrado en el ejercicio Código presentado:
y sus definiciones: drop table if exists libros, editoriales;

default en autor create table libros(


si no se ingresa un autor al cargar un libro, codigo int unsigned auto_increment,
automáticamente se asignará “desconocido”. titulo varchar(40) not null,
esto evita que el campo quede vacío y da un autor varchar(30) not null default
valor por defecto. 'Desconocido',
codigoeditorial tinyint unsigned not null codigoeditorial tinyint unsigned not
este campo guarda un número positivo que null,
representa a la editorial del libro. no se precio decimal(5,2) unsigned,
permiten valores nulos, así que cada libro cantidad smallint unsigned default 0,
debe estar ligado sí o sí a una editorial. primary key (codigo)
smallint unsigned default 0 );
guarda cantidades positivas y, si no se indica
un número al insertar el libro, se toma el valor create table editoriales(
0 por defecto. útil para controlar el stock sin codigo tinyint unsigned
dejarlo vacío. auto_increment,
Join nombre varchar(20) not null,
se usa para combinar datos de dos tablas direccion varchar(30) not null,
relacionadas, como libros y editoriales, usando primary key(codigo)
una columna común );
as (alias)
sirve para darle un nombre corto o más claro a insert into editoriales (nombre,
una tabla o columna en una consulta. por direccion) values('Paidos', 'Colon 190');
ejemplo, usar l en vez de libros hace más fácil insert into editoriales (nombre,
escribir y leer las consultas. direccion) values ('Emece', 'Rivadavia
765');
insert into editoriales (nombre,
direccion) values ('Planeta', 'General
Paz 245');
insert into editoriales (nombre,
direccion) values ('Sudamericana','9 de
Julio 1008');

insert into libros (titulo, autor,


codigoeditorial, precio, cantidad)
values('El Aleph', 'Borges',3,43.5,200);
insert into libros (titulo, autor,
codigoeditorial, precio, cantidad)
Laboratorio de Mysql – estructura y base de datos –

values('Alicia en el país de las


maravillas', 'Lewis Carroll',2,33.5,100);
insert into libros (titulo, autor,
codigoeditorial, precio, cantidad)
values('Aprenda PHP', 'Mario
Perez',1,55.8,50);
insert into libros (titulo, autor,
codigoeditorial, precio, cantidad)
values('Java en 10 minutos', 'Juan
Lopez',1,88,150);
insert into libros (titulo, autor,
codigoeditorial, precio, cantidad)
values('Alicia a traves del espejo',
'Lewis Carroll',1,15.5,80);
insert into libros (titulo, autor,
codigoeditorial, precio, cantidad)
values('Cervantes y el quijote', 'Borges-
Bioy Casares',3,25.5,300);

select * from libros;

select * from libros


join editoriales
on
libros.codigoeditorial=editoriales.codig
o;

select * from libros as l


join editoriales as e
on l.codigoeditorial=e.codigo;

select titulo, autor, nombre from libros


as l
join editoriales as e
on l.codigoeditorial=e.codigo;

select l.codigo, titulo, autor, nombre


from libros as l
join editoriales as e
on l.codigoeditorial=e.codigo;
Prueba de Funcionalidad (Captura de pantalla) Conclusiones:

Se garantiza que cada libro esté


asociado a una editorial gracias a la
Laboratorio de Mysql – estructura y base de datos –

restricción not null y al uso de claves


numéricas (tinyint). Además, se aplican
valores por defecto para evitar
registros incompletos, como con autor
y cantidad.

El uso de JOIN permite unir la


información de ambas tablas y obtener
datos más completos, como el nombre
de la editorial junto al título del libro.
es posible obtener detalles como el
nombre de la editorial de cada libro.
Usar alias (AS) simplifica y ordena el
código SQL.

Referencia bibliográfica:
MySQL Documentation – https://dev.mysql.com/doc/
Programación MySQL en Paiza.IO – Entorno práctico para ejecutar SQL en línea.
Laboratorio de Mysql – estructura y base de datos –

Nombre: Luis Fernando Apellidos: González Rosas


Documento de identidad: 1024587677 Fecha presentación:
22/05/2025
Vocabulario técnico encontrado en el ejercicio y sus Código presentado:
definiciones: drop table if exists libros,
editoriales;
alter table
es una instrucción que se usa para modificar la create table libros(
estructura de una tabla ya existente. por ejemplo, codigo int unsigned
permite cambiar el tipo de dato de una columna o auto_increment,
agregar nuevas columnas. titulo varchar(40) not null,
modify autor varchar(30) not null
se utiliza junto con alter table para cambiar el tipo de default 'Desconocido',
una columna ya creada. en este caso, cambia codigoeditorial tinyint
codigoeditorial y codigo de número a texto corto unsigned not null,
char(5) precio decimal(5,2) unsigned,
es un tipo de dato que guarda una cadena de cantidad smallint unsigned
caracteres fija de hasta 5 letras o números. se suele default 0,
usar cuando los datos tienen siempre el mismo largo primary key (codigo)
o parecido, como códigos de productos o editoriales. );
join
permite combinar datos de dos tablas relacionadas create table editoriales(
por una columna común. en este caso, se usa para codigo tinyint unsigned
mostrar el título del libro junto con el nombre de su auto_increment,
editorial correspondiente. nombre varchar(20) not null,
as primary key (codigo)
da un nombre corto o alternativo a una tabla o );
columna en la consulta. hace que las instrucciones
sean más legibles y rápidas de escribir, por ejemplo, insert into editoriales values(2,
usando l en vez de libros. 'Emece');
insert into editoriales
values(15, 'Planeta');
insert into editoriales values
(23, 'Paidos');

insert into libros values(1, 'El


aleph', 'Borges',23,4.55,10);
insert into libros values(2,
'Alicia en el pais de las
maravillas', 'Lewis
Carroll',2,11.55,2);
Laboratorio de Mysql – estructura y base de datos –

insert into libros values(3,


'Martin Fierro', 'Jose
Hernandez',15,7.12,4);

alter table libros


modify codigoeditorial char(5);

select * from libros;

select l.titulo,e.nombre
from libros as l
join editoriales as e
on l.codigoeditorial=e.codigo;

alter table editoriales


modify codigo char(5);

Prueba de Funcionalidad (Captura de pantalla) Conclusiones:


Según la observación dada en
la guía, se concluye que las
claves primarias y foráneas
deben ser del mismo tipo de
dato para poder establecer una
relación válida entre tablas. Si
una de ellas se modifica, es
necesario ajustar también la
otra para garantizar que los
valores se correspondan
correctamente y que la
integridad referencial no se vea
comprometida.
Laboratorio de Mysql – estructura y base de datos –

este código trabaja con dos


tablas relacionadas (libros y
editoriales) y realiza
modificaciones en su
estructura para usar tipos de
datos de texto (char) en lugar
de números. usar alter table y
modify da flexibilidad para
adaptar la base de datos según
nuevas necesidades, como
almacenar códigos
alfanuméricos. el uso de claves
compartidas permite unir
información entre tablas
mediante join, facilitando
reportes más completos. los
alias (as) simplifican las
consultas y hacen el código
más claro. en conjunto, estas
herramientas hacen que la
base de datos sea más
adaptable, comprensible y
funcional.

modificar el tipo de dato con


alter table permite ajustar las
tablas a nuevas necesidades.
cambiar un código numérico
por uno de texto, como
char(5), puede ser útil si se
trabaja con letras o formatos
mixtos.
esto aporta flexibilidad a la
estructura.

el uso de join permite


combinar datos entre tablas
relacionadas.
gracias a esto, se pueden
obtener resultados como el
título del libro y el nombre de
Laboratorio de Mysql – estructura y base de datos –

su editorial.
as ayuda a que la consulta sea
más clara y ordenada.
Referencia bibliográfica:
MySQL Documentation – https://dev.mysql.com/doc/
Programación MySQL en Paiza.IO – Entorno práctico para ejecutar SQL en línea.

Nombre: Luis Fernando Apellidos: González Rosas


Documento de identidad: 1024587677 Fecha presentación: 22/05/2025
Vocabulario técnico encontrado en el ejercicio Código presentado:
y sus definiciones: drop table if exists libros, editoriales;

left join create table libros(


une dos tablas pero se asegura de mostrar codigo int unsigned auto_increment,
todos los registros de la primera aunque no titulo varchar(40) not null,
tengan coincidencia en la segunda. si no hay autor varchar(30) not null default
coincidencia, los campos de la segunda tabla 'Desconocido',
aparecen vacíos (null). codigoeditorial tinyint unsigned not
where ... is not null null,
se usa para filtrar y mostrar solo los registros precio decimal(5,2) unsigned,
donde hay coincidencia entre ambas tablas. es cantidad tinyint unsigned default 0,
útil para dejar fuera los resultados que no se primary key (codigo)
relacionan. );
where ... is null
muestra solo los registros que no tienen create table editoriales(
coincidencia en la tabla relacionada. por codigo tinyint unsigned
ejemplo, editoriales sin libros cargados. auto_increment,
tinyint unsigned nombre varchar(20) not null,
es un tipo de dato numérico que solo acepta primary key(codigo)
números positivos y tiene un rango pequeño );
ideal para campos como cantidad de libros.
auto_increment insert into editoriales (nombre) values
hace que un campo aumente automáticamente ('Paidos');
con cada nuevo registro, sin tener que insert into editoriales (nombre) values
ingresarlo manualmente. esto asegura que ('Emece');
cada entrada tenga un identificador único. insert into editoriales (nombre) values
('Planeta');
insert into editoriales (nombre) values
('Sudamericana');
Laboratorio de Mysql – estructura y base de datos –

insert into libros (titulo, autor,


codigoeditorial, precio, cantidad)
values('El Aleph', 'Borges',3,43.5,200);
insert into libros (titulo, autor,
codigoeditorial, precio, cantidad)
values('Alicia en el pais de las
maravillas', 'Lewis Carroll',2,33.5,100);
insert into libros (titulo, autor,
codigoeditorial, precio, cantidad)
values('Aprenda PHP', 'Mario
Perez',1,55.8,50);
insert into libros (titulo, autor,
codigoeditorial, precio, cantidad)
values('Java en 10 minutos', 'Juan
Lopez',1,88,150);
insert into libros (titulo, autor,
codigoeditorial, precio, cantidad)
values('Alicia a traves del espejo',
'Lewis Carroll',1,15.5,80);
insert into libros (titulo, autor,
codigoeditorial, precio, cantidad)
values('Cervantes y el quijote',
'Borges- Bioy Casares',3,25.5,250);
insert into libros (titulo, autor,
codigoeditorial, precio, cantidad)
values('Aprenda Java en 10 minutos',
'Lopez Juan',5,28,100);

select * from editoriales


left join libros
on
editoriales.codigo=libros.codigoeditor
ial;

select * from libros


left join editoriales
on
editoriales.codigo=libros.codigoeditor
ial;

select nombre, titulo


from editoriales as e
left join libros as l
on e.codigo=l.codigoeditorial
Laboratorio de Mysql – estructura y base de datos –

where l.codigoeditorial is not null;

select e.nombre, l.titulo from


editoriales as e
left join libros as l
on e.codigo=l.codigoeditorial
where l.codigoeditorial is null;
Prueba de Funcionalidad (Captura de pantalla) Conclusiones:
según la observación dada en la guía,
se concluye que el uso de un left join
permite conservar todos los registros
de la tabla izquierda, incluso si no
encuentran coincidencias en la tabla
derecha. en dichos casos, se genera
igualmente una fila en el resultado,
pero con los campos
correspondientes a la tabla derecha
establecidos como null. esto es útil
para detectar ausencias o relaciones
incompletas entre los datos.

este código usa correctamente la


estructura relacional entre las tablas
libros y editoriales y aprovecha el left
join para analizar tanto coincidencias
como ausencias de relación. con left
join, se pueden detectar fácilmente
editoriales sin libros o libros sin
editorial registrada, lo cual es clave en
la validación y análisis de datos.

el left join permite ver datos aunque


no tengan relación con la otra tabla.
es útil para identificar, por ejemplo,
editoriales sin libros asignados.
filtrar con is null ayuda a detectar
esos casos fácilmente.

al usar auto_increment y tinyint


unsigned, los datos se mantienen
ordenados y sin errores negativos.
esto garantiza una base de datos
limpia, confiable y preparada para
Laboratorio de Mysql – estructura y base de datos –

crecer.

Referencia bibliográfica:
MySQL Documentation – https://dev.mysql.com/doc/
Programación MySQL en Paiza.IO – Entorno práctico para ejecutar SQL en línea.

Nombre: Luis Fernando Apellidos: González Rosas


Documento de identidad: 1024587677 Fecha presentación: 22/05/2025
Vocabulario técnico encontrado en el Código presentado:
ejercicio y sus definiciones: drop table if exists comidas, postres;

cross join create table comidas(


crea todas las combinaciones posibles entre codigo tinyint unsigned
los registros de dos tablas . por ejemplo, si auto_increment,
hay 3 comidas y 3 postres, se obtienen 9 nombre varchar(30),
combinaciones. precio decimal(4,2) unsigned,
join primary key (codigo)
funciona igual que inner join: muestra solo );
las combinaciones donde ambas tablas
tienen datos create table postres(
as codigo tinyint unsigned
se usa para ponerle un nombre más claro a auto_increment,
una columna en el resultado. por ejemplo, nombre varchar(30),
darle el alias "total" a la suma de los precios. precio decimal(4,2) unsigned,
primary key (codigo)
Laboratorio de Mysql – estructura y base de datos –

precio + precio );
al sumar el precio de una comida con el de
un postre, se puede obtener el costo total de insert into comidas values (1,'milanesa y
un menú completo. fritas',3.4);
rubro insert into comidas values (2,'arroz
es una columna agregada para diferenciar primavera', 2.5);
entre tipos de comida, permitiendo trabajar insert into comidas values (3,'pollo',2.8);
todos los ítems en una sola tabla pero
categorizados. insert into postres values(1,'flan',1);
insert into postres values(2,'porcion de
torta',2.1);
insert into postres values(3,
'gelatina',0.9);

select c.*,p.*
from comidas as c
cross join postres as p;

select c.*,p.*
from comidas as c
join postres as p;

select c.nombre,p.nombre,
c.precio+p.precio as total
from comidas as c
cross join postres as p;

drop table comidas;

create table comidas(


codigo tinyint unsigned
auto_increment,
nombre varchar(30),
rubro varchar(20),/*plato principal y
postre*/
precio decimal (5,2) unsigned,
primary key(codigo)
);

insert into comidas values(1, 'milanesa y


fritas', 'plato principal',3.4);
insert into comidas values(2, 'arroz
primavera', 'plato principal',2.5);'
Laboratorio de Mysql – estructura y base de datos –

insert into comidas values(3,


'pollo','plato principal',2.8);
insert into comidas values(4, 'flan',
'postre',1);
insert into comidas values(5, 'porcion de
torta', 'postre',2.1);
insert into comidas values(6, 'gelatina',
'postre',0.9);

select
cl.nombre,c1.precio,c2.nombre,c2.preci
o
from comidas as c1
cross join comidas as c2
where c1.rubro='plato principal' and
c2.rubro='postre';

select cl.nombre, c2.nombre,


c1.precio+c2.precio as total
from comidas as c1
cross join comidas as c2
where c1.rubro='plato principal' and
c2.rubro='postre';
Prueba de Funcionalidad (Captura de Conclusiones:
pantalla) Este código combina platos principales y
postres usando cross join, lo que
permite ver todas las combinaciones
posibles y calcular menús completos
con sus precios totales.
la reestructuración final con una sola
tabla comidas y el uso de la columna
rubro facilita la gestión de distintos
tipos de comida sin tener que manejar
múltiples tablas.
esta organización es más flexible y más
fácil de mantener. además, el uso de
alias (as) y filtros por categoría permite
obtener listados claros, útiles para
calcular menús o precios en un
restaurante.
es un excelente ejemplo de cómo usar
SQL para construir lógica combinatoria a
partir de una base de datos bien
estructurada.
Laboratorio de Mysql – estructura y base de datos –

el cross join permite combinar todos los


platos principales con todos los postres.
esto es ideal para generar menús
completos y calcular el precio total por
combinación.
filtrar por rubro mejora la precisión del
resultado.
unificar platos y postres en una sola
tabla con la columna rubro hace más
simple el manejo de datos.
permite hacer consultas más potentes
sin separar la información.
además, usar as mejora la legibilidad en
los resultados.

Referencia bibliográfica:
MySQL Documentation – https://dev.mysql.com/doc/
Programación MySQL en Paiza.IO – Entorno práctico para ejecutar SQL en línea.

También podría gustarte