Listado completo de tutoriales
24 - Columnas calculadas. |
Es posible obtener salidas en las cuales una columna sea el resultado de un cálculo y no un campo de una tabla.
Si queremos ver los títulos, precio y cantidad de cada libro escribimos la siguiente sentencia:
select titulo,precio,cantidad from libros;
Si queremos saber el monto total en dinero de un título podemos multiplicar el precio por la cantidad por cada título, pero también podemos hacer que MySQL realice el cálculo y lo incluya en una columna extra en la salida:
select titulo, precio,cantidad,precio*cantidad from libros;
Si queremos saber el precio de cada libro con un 10% de descuento podemos incluir en la sentencia los siguientes cálculos:
select titulo, precio,precio*0.1,precio-(precio*0.1) from libros;
Ingresemos al programa "Workbench" y ejecutemos el siguiente bloque de instrucciones SQL donde generamos columnas calculadas en los comandos select:
drop table if exists libros; create table libros( codigo int unsigned auto_increment, titulo varchar(40) not null, autor varchar(30), editorial varchar(15), precio decimal(5,2) unsigned, cantidad smallint unsigned, primary key (codigo) ); insert into libros (titulo,autor,editorial,precio,cantidad) values('El aleph','Borges','Planeta',15,100); insert into libros (titulo,autor,editorial,precio,cantidad) values('Martin Fierro','Jose Hernandez','Emece',22.20,200); insert into libros (titulo,autor,editorial,precio,cantidad) values('Antologia poetica','Borges','Planeta',40,150); insert into libros (titulo,autor,editorial,precio,cantidad) values('Aprenda PHP','Mario Molina','Emece',18.20,200); insert into libros (titulo,autor,editorial,precio,cantidad) values('Cervantes y el quijote','Borges','Paidos',36.40,100); insert into libros (titulo,autor,editorial,precio,cantidad) values('Manual de PHP', 'J.C. Paez', 'Paidos',30.80,100); insert into libros (titulo,autor,editorial,precio,cantidad) values('Harry Potter y la piedra filosofal','J.K. Rowling','Paidos',45.00,500); insert into libros (titulo,autor,editorial,precio,cantidad) values('Harry Potter y la camara secreta','J.K. Rowling','Paidos',46.00,300); insert into libros (titulo,autor,editorial,precio,cantidad) values('Alicia en el pais de las maravillas','Lewis Carroll','Paidos',null,50); select titulo, precio,cantidad,precio*cantidad from libros; select titulo, precio,precio*0.1,precio-(precio*0.1) from libros;
Que nos generan una salida similar a esta: