objetivo: a. Crear tabla a partir de otra (Create – Insert) b. Crear tabla a partir de otra (Create – Insert - Join) c. Insertar datos en una tabla buscando un valor en otra (Insert – select) MariaDB [createinsert]> select * from primer_ejercicio; +----+----------------------+--------------------+--------+ | id | Nombre | DetalleArea | Valor | +----+----------------------+--------------------+--------+ | 1 | Calculo 1 | Matematicas | 80000 | | 2 | Matematicas Avanzada | Matematicas | 90000 | | 3 | Introduccion al Pc | Informatica | 120000 | | 4 | Redes y Telematica | Informatica | 65000 | | 5 | Geografia Colombiana | Sociales | 60000 | | 6 | Ciencias sextos | Ciencias Naturales | 60000 | | 7 | Etica y valores | Humanidades | 150000 | +----+----------------------+--------------------+--------+ 7 rows in set (0.00 sec) *********************************************************************** A) Crear tabla a partir de otra (Create – Insert) *********************************************************************** Crear una tabla a partir de la tabla primer_ejercicio con las diferentes areas a a las que pertenecen los libros ANALISIS 1. que nombre le daremos a la nueva tabla ejemplararea 2. que campo(campos conitiene la inforamcion solicitada) y de que tabla Campo: DetalleArea Tabla: primer_ejercicio 3. diseñar la sintaxis mysql Mostrar cuales son las areas: MariaDB [createinsert]>select DetalleArea from primer_ejercicio; +--------------------+ | DetalleArea | +--------------------+ | Matematicas | | Matematicas | | Informatica | | Informatica | | Sociales | | Ciencias Naturales | | Humanidades | +--------------------+ 7 rows in set (0.00 sec) Que se debe hacer para que no se repitan las areas: MariaDB [createinsert]> select distinct DetalleArea from primer_ejercicio; +--------------------+ | DetalleArea | +--------------------+ | Matematicas | | Informatica | | Sociales | | Ciencias Naturales | | Humanidades | +--------------------+ 5 rows in set (0.00 sec) Se procede a crear la tabla asi: MariaDB [createinsert]> Create table ejemplararea select distinct DetalleArea as nombre from primer_ejercicio; Query OK, 5 rows affected (0.12 sec) Records: 5 Duplicates: 0 Warnings: 0 MariaDB [createinsert]> select * from ejemplararea; +--------------------+ | nombre | +--------------------+ | Matematicas | | Informatica | | Sociales | | Ciencias Naturales | | Humanidades | +--------------------+ 5 rows in set (0.00 sec) MariaDB [createinsert]> show tables; +------------------------+ | Tables_in_createinsert | +------------------------+ | area | | ejemplar | | ejemplararea | | primer_ejercicio | +------------------------+ 4 rows in set (0.00 sec) **************************************************************************** También se puede crear una tabla a partir de una consulta cargando los campos con los valores de otra tabla y una columna calculada. *********************************************************************************** crear una tabla a partir de una consulta que visualice la cantidad de libros por Area ANALISIS 1. que nombre le daremos a la nueva tabla cantidadejemplares 2. que campo(campos conitiene la inforamcion solicitada) y de que tabla Campo: DetalleArea Tabla: primer_ejercicio 3. diseñar la sintaxis mysql Crear la consulta MariaDB [createinsert]>select DetalleArea as nombre, count(*) as cantidad from primer_ejercicio group by DetalleArea; +--------------------+----------+ | nombre | cantidad | +--------------------+----------+ | Ciencias Naturales | 1 | | Humanidades | 1 | | Informatica | 2 | | Matematicas | 2 | | Sociales | 1 | +--------------------+----------+ Procedimiento para Crear la Tabla MariaDB [createinsert]> create table cantidadejemplares select DetalleArea as nombre, count(*) as cantidad from primer_ejercicio group by DetalleArea; Query OK, 5 rows affected (0.11 sec) Records: 5 Duplicates: 0 Warnings: 0 MariaDB [createinsert]> select * from cantidadejemplares; +--------------------+----------+ | nombre | cantidad | +--------------------+----------+ | Ciencias Naturales | 1 | | Humanidades | 1 | | Informatica | 2 | | Matematicas | 2 | | Sociales | 1 | +--------------------+----------+ 5 rows in set (0.00 sec) *********************************************************************************** Ejercicio: Crear una nueva tabla a partir de la tabla primer_ejercicio que visualice el valor total de los libros de cada àrea y debe llevar por nombre valor total libros Acontonuaciòn relaciono la consulta: MariaDB [createinsert]> select detalleArea, sum(valor) 'Valor Total' from primer_ejercicio group by detalleArea; +--------------------+-------------+ | detalleArea | Valor Total | +--------------------+-------------+ | Ciencias Naturales | 60000 | | Humanidades | 150000 | | Informatica | 185000 | | Matematicas | 170000 | | Sociales | 60000 | +--------------------+-------------+ 5 rows in set (0.00 sec) Una vez realizado la consulta se crea la tabla: MariaDB [createinsert]> create table valortotal select detalleArea, sum(valor) 'Valor Total' from primer_ejercicio group by detalleArea; Query OK, 5 rows affected (0.22 sec) Records: 5 Duplicates: 0 Warnings: 0 MariaDB [createinsert]> select * from valortotal; +--------------------+-------------+ | detalleArea | Valor Total | +--------------------+-------------+ | Ciencias Naturales | 60000 | | Humanidades | 150000 | | Informatica | 185000 | | Matematicas | 170000 | | Sociales | 60000 | +--------------------+-------------+ 5 rows in set (0.00 sec) *********************************************************************** B) CREAR TABLA A PARTIR DE OTRA (CREATE – INSERT - JOIN *********************************************************************** MariaDB [createinsert]> show databases; +--------------------+ | Database | +--------------------+ | alquiler | | basedatosii | | basedatosiii | | cadena | | createinsert | | cursos | | enum_set_blob_text | | information_schema | | luz | | mysql | | performance_schema | | phpmyadmin | | sociedades_sa | | test | | | +--------------------+ 15 rows in set (0.00 sec) MariaDB [createinsert]> select * from ejemplar; +----+-----------------------+---------+--------+--------+ | id | Nombre | CodArea | valor | NroPag | +----+-----------------------+---------+--------+--------+ | 1 | Calculo 1 | 001 | 80000 | 42 | | 2 | Matematicas Avanzadas | 001 | 90000 | 80 | | 3 | Introducci¢n al Pc | 002 | 120000 | 240 | | 4 | Redes y Telematica | 002 | 65000 | 58 | | 5 | Goegrafia Colombiana | 004 | 40000 | 82 | | 6 | Ciencias Sexto | 003 | 60800 | 46 | | 7 | Etica y Valores | 005 | 150000 | 100 | +----+-----------------------+---------+--------+--------+ 7 rows in set (0.00 sec) MariaDB [createinsert]> select * from area; +---------+--------------------+ | CodArea | Descripcion | +---------+--------------------+ | 001 | Matematicas | | 002 | Informatica | | 003 | Ciencias Naturales | | 004 | Sociales | | 005 | Humanidades | +---------+--------------------+ 5 rows in set (0.00 sec) **************************************************************** Podemos realizar una consulta con Join **************************************************************** Realizar una consulta que visualice el numero de ejemplares por area MariaDB [createinsert]> select a.descripcion,count(*) from ejemplar as e join area as a on e.CodArea=a.CodArea group by a.descripcion; +--------------------+----------+ | descripcion | count(*) | +--------------------+----------+ | Ciencias Naturales | 1 | | Humanidades | 1 | | Informatica | 2 | | Matematicas | 2 | | Sociales | 1 | +--------------------+----------+ 5 rows in set (0.02 sec) ************************************************************************** Crear una nueva tabla Con el comando create – insert - join ************************************************************************** ANALISIS 1. que nombre le daremos a la nueva tabla numerodeejemplaresporarea 2. que campo(campos conitiene la inforamcion solicitada) y de que tabla Campo: Descripcion Tabla: Area 3. Que tablas estan involucradas en la consulta y como se relacionan Tablas: Area y ejemplar Relacion: ejemplar.CodArea=area.CodArea 4. diseñar la sintaxis mysql MariaDB [createinsert]> create table numerodeejemplaresporarea select a.descripcion,count(*) as cantidad from ejemplar as e join area as a on e.CodArea=a.CodArea group by a.descripcion; Query OK, 5 rows affected (0.14 sec) Records: 5 Duplicates: 0 Warnings: 0 MariaDB [createinsert]> select * from numerodeejemplaresporarea; +--------------------+----------+ | descripcion | count(*) | +--------------------+----------+ | Ciencias Naturales | 1 | | Humanidades | 1 | | Informatica | 2 | | Matematicas | 2 | | Sociales | 1 | +--------------------+----------+ 5 rows in set (0.00 sec) ***************************************************************************** C. Insertar datos en una tabla buscando un valor en otra (Insert – select) ************************************************************** MariaDB [createinsert]> show tables; +---------------------------+ | Tables_in_createinsert | +---------------------------+ | area | | cantidadejemplares | | ejemplar | | ejemplararea | | numerodeejemplaresporarea | | primer_ejercicio | +---------------------------+ 6 rows in set (0.00 sec) MariaDB [createinsert]> select * from ejemplar; +----+-----------------------+---------+--------+--------+ | id | Nombre | CodArea | valor | NroPag | +----+-----------------------+---------+--------+--------+ | 1 | Calculo 1 | 001 | 80000 | 42 | | 2 | Matematicas Avanzadas | 001 | 90000 | 80 | | 3 | Introducci¢n al Pc | 002 | 120000 | 240 | | 4 | Redes y Telematica | 002 | 65000 | 58 | | 5 | Goegrafia Colombiana | 004 | 40000 | 82 | | 6 | Ciencias Sexto | 003 | 60800 | 46 | | 7 | Etica y Valores | 005 | 150000 | 100 | +----+-----------------------+---------+--------+--------+ 7 rows in set (0.00 sec) MariaDB [createinsert]> show tables; +---------------------------+ | Tables_in_createinsert | +---------------------------+ | area | | cantidadejemplares | | ejemplar | | ejemplararea | | numerodeejemplaresporarea | | primer_ejercicio | +---------------------------+ 6 rows in set (0.00 sec) MariaDB [createinsert]> select * from ejemplar; +----+-----------------------+---------+--------+--------+ | id | Nombre | CodArea | valor | NroPag | +----+-----------------------+---------+--------+--------+ | 1 | Calculo 1 | 001 | 80000 | 42 | | 2 | Matematicas Avanzadas | 001 | 90000 | 80 | | 3 | Introducci¢n al Pc | 002 | 120000 | 240 | | 4 | Redes y Telematica | 002 | 65000 | 58 | | 5 | Goegrafia Colombiana | 004 | 40000 | 82 | | 6 | Ciencias Sexto | 003 | 60800 | 46 | | 7 | Etica y Valores | 005 | 150000 | 100 | +----+-----------------------+---------+--------+--------+ 7 rows in set (0.00 sec) MariaDB [createinsert]> select * from area; +---------+--------------------+ | CodArea | Descripcion | +---------+--------------------+ | 001 | Matematicas | | 002 | Informatica | | 003 | Ciencias Naturales | | 004 | Sociales | | 005 | Humanidades | +---------+--------------------+ 5 rows in set (0.00 sec) ************************************************************************ INSERTAR DATOS EN UNA TABLA BUSCANDO UN VALOR EN OTRA (INSERT – SELECT) ************************************************************************ Procedimiento ************************************************************************ Inserte en la tabla ejemplar el registro 8, el cual le pertenece al libro BD II, cuya area es informatica,con un valor de 45000 y un numero de paginas de 120. Busque el valor del código del area en la tabla area cuando la descripción corresponda a informatica. Analisis 1. En que tabla se van a insertar los datos ejemplar 2. que campo(campos conitiene la informacion solicitada) y de que tabla Campo: Descripcion Tabla: Area 3. Codicione(s) si las hay: descripcion='informatica' 4. Que tablas estan involucradas en la insercion Tablas: Area y ejemplar 4. diseñar la sintaxis mysql MariaDB [createinsert]> insert into ejemplar(id,nombre,CodArea,valor,nropag) select '8','BD II',CodArea,45000,120 from area where descripcion='informatica'; Query OK, 1 row affected (0.05 sec) Records: 1 Duplicates: 0 Warnings: 0 MariaDB [createinsert]> select * from ejemplar; +----+-----------------------+---------+--------+--------+ | id | Nombre | CodArea | valor | NroPag | +----+-----------------------+---------+--------+--------+ | 1 | Calculo 1 | 001 | 80000 | 42 | | 2 | Matematicas Avanzadas | 001 | 90000 | 80 | | 3 | Introducci¢n al Pc | 002 | 120000 | 240 | | 4 | Redes y Telematica | 002 | 65000 | 58 | | 5 | Goegrafia Colombiana | 004 | 40000 | 82 | | 6 | Ciencias Sexto | 003 | 60800 | 46 | | 7 | Etica y Valores | 005 | 150000 | 100 | | 8 | BD II | 002 | 45000 | 120 | +----+-----------------------+---------+--------+--------+ 8 rows in set (0.00 sec) https://angie-castro0.webnode.es/parcial-i/