Biblioteca

create database biblioteca; use biblioteca; Show databases; create table libros( codigo int unsigned auto_increment, tit

Views 442 Downloads 2 File size 19KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

create database biblioteca; use biblioteca; Show databases; create table libros( codigo int unsigned auto_increment, titulo varchar(40) not null, autor varchar(30) not null default 'Desconocido', codigoeditorial tinyint unsigned not null, precio decimal(5,2) unsigned, cantidad smallint unsigned default 0, primary key (codigo) ); create table editoriales( codigo tinyint unsigned auto_increment, nombre varchar(20) not null, primary key(codigo) ); Cargamos algunos registros en la tabla "editoriales": insert insert insert insert

into into into into

editoriales editoriales editoriales editoriales

(nombre) (nombre) (nombre) (nombre)

values('Paidos'); values('Emece'); values('Planeta'); values('Sudamericana');

Cargamos algunos registros en la tabla "libros": 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,300); insert into libros (titulo, autor,codigoeditorial,precio,cantidad) values('Aprenda Java en 10 minutos','Lopez Juan',5,28,100); Mostramos todos los datos de la tabla "libros": select * from libros; Queremos tambi�n el nombre de la editorial, necesitamos ambas tablas: select * from libros join editoriales on libros.codigoeditorial=editoriales.codigo; Por ello, si hacemos referencia a un campo de una tabla que tiene el mismo nombre que el campo de la otra tabla consultada, debemos especificar a cu�l tabla pertenece dicho campo. Para simplificar la sentencia podemos usar un alias para cada tabla:

select * from libros as l join editoriales as e on l.codigoeditorial=e.codigo; En la consulta anterior, el c�digo de la editorial aparece 2 veces, desde la tabla "libros" y "editoriales". Podemos solicitar que nos muestre algunos campos: select titulo,autor,nombre from libros as l join editoriales as e on l.codigoeditorial=e.codigo; Si queremos ver el c�digo del libro, al presentar el campo "codigo", debemos especificar de qu� tabla, porque el campo "codigo" se repite en ambas tablas ("libros" y "editoriales"): select l.codigo,titulo,autor,nombre from libros as l join editoriales as e on l.codigoeditorial=e.codigo; _________________________________________________________ Para obtener la lista de todas las editoriales y los libros de las mismas, incluso de las cuales no tenemos libros usamos: select * from editoriales left join libros on editoriales.codigo=libros.codigoeditorial; Recuerde que es importante la posici�n en que se colocan las tablas en un "left join", la tabla de la izquierda es la que localiza registros en la tabla de la derecha. Por lo tanto, estos "join" no son iguales: select * from editoriales left join libros on editoriales.codigo=libros.codigoeditorial; Para encontrar los valores de c�digo de la tabla "editoriales" que est�n presentes en la tabla "libros" usamos un "where": select nombre,titulo from editoriales as e left join libros as l on e.codigo=l.codigoeditorial where l.codigoeditorial is not null; Para mostrar las editoriales que no est�n presentes en "libros": select e.nombre,l.titulo from editoriales as e left join libros as l on e.codigo=l.codigoeditorial where l.codigoeditorial is null;