Primero crearemos una base de datos que se llame Libros:
De allí, pasaremos a dar clic en el "+" para ubicarnos en public y de allí a tables, para crear una tabla:
Crearemos una tabla que se llame "Libros" con las siguientes columnas, con codigo como llave primaria:
si no lo desea hacer en modo gráfico, realicelo manualmente en:
al ingresar allí, escriba la siguiente sentencia:
create table libros(
codigo serial,
titulo character(40),
autor character(20),
editorial character(20),
precio money (6,2),
cantidad integer,
primary key (codigo));
al haber terminado su tabla ya se a de haber creado despues de haber ejecutado la sentencia, en el símbolo de "Play", salga de esa ventana y posicionese en la principal, seleccionando la tabla "Libros" dando clic en la tabla sin filtro:
cierre esta ventana y regrese a la principal, de nuevo de clic en SQL para comenzar a escribir las sentencias:
comencemos, antes, quiero recalcar algo, en algunos postgres no es necesario dejar entre comillas el nombre de la tabla y las columnas, en mi caso si:
1) Queremos saber el monto total de dinero de cada libro:
select "titulo","precio","cantidad","precio"*"cantidad" from "Libros";
2) Queremos saber el precio de cada libro con un 10% de descuento:
select "titulo","precio","precio"-("precio"*0.1) from "Libros";
3) Actualizamos los precios con un 10% de descuento y vemos el resultado:
update "Libros" set "precio"="precio"-("precio"*0.1);
select * from "Libros";
4) Queremos una columna con el titulo, el autor y la editorial de cada libro:
select "titulo"||'-'||"autor"||'-'||"editorial" from "Libros";
Manejo de Funciones
1) Mostramos solo los 12 primeros caracteres de los titulos de los libros y sus autores, empleando la función "substring()"
select substring("titulo",1,12) as "titulo" from "Libros";
select "titulo","autor", upper("editorial") from "Libros";
select rpad("titulo",40,'-') from "Libros";
4) Imprimimos todos los libros que contienen la cadena 'en' en alguna parte del libro
select * from "Libros" where position('es' in "titulo")>0;
5) Imprimimos todos los libros que tienen un título con 10 o más caracteres.
select * from "Libros" where char_length("titulo")>=10;
6)
select "titulo","autor","precio", floor("precio") as abajo, celling("precio") as arriba from libros;
7) Recuperamos los registros ordenandolos por título.
select * from "Libros" order by "titulo";
8) ordenamos los registros por el campo "precio", referenciando el campo por su posición en la lista de selección
select "titulo","autor","precio" from "Libros" order by 3;
9) Los ordenamos por "editorial", de mayor a menor empleando "desc"
select * from "Libros" order by "editorial" desc;
10) Ordenamos por dos campos
select * from "Libros" order by "titulo","editorial";
11) Ordenamos en distintos sentidos
select * from "Libros" order by "titulo" asc,"editorial" desc;
12) Podemos ordenar un campo que no se lista en la selección
select "titulo","autor" from "Libros" order by "precio";
13) Permite ordenanar por valores calculados
select "titulo","autor","editorial","precio"+("precio"*0.1) as preciocondescuento from "Libros" order by 4;
14) Recuperamos los libros cuyo autor sea igual a "Varios Autores" y cuyo precio no supere los 500
select * from "Libros" where ("autor"='Varios Autores') and ("precio"<=500);
15) Seleccionamos los libros cuyo autor sea 'Varios Autores' y cuya editorial sea 'Trillas'
select * from "Libros" where autor='Varios Autores' or editorial='Trillas';
16) Recuperamos los libros cuya editorial NO es 'Trillas'
select * from "Libros" where not editorial='Trillas';
17) Veamos como el uso de paréntesis hace que PostgresSQL evalúe en forma diferenciada ciertas consultas aparentemente iguales
select * from "Libros" where (autor='Renata Selecl') or (editorial='Siglo XXI' and precio<20);
select * from "Libros" where (autor='Renata Selecl' or editorial='Siglo XXI') and (precio<20);
Para trabajar con JOINS, crearemos una tabla que se llame editoriales, con las siguientes columnas:
O en código:
create table editoriales(
codigo serial,
nombre varchar(20),
primary key(codigo));
ahora a obtener:
1) Realizamos un join para obtener datos de ambas tablas (titulo, autor y nombre de la editorial)
select "titulo","autor","nombre" from "Libros" join "Editoriales" on codigoeditorial="Editoriales".codigo;
2) Mostramos el código del libro, título, autor, nombre de la editorial y el precio reaizando un join y empleando alías:
select l."codigo","titulo","autor","nombre","precio" from "Libros" as l join "Editoriales" as e on codigoeditorial=e.codigo;
Espero les sirva esté ejercicio y les ayude a aprender sentencias para PostgresSQL, buen día c:
Materia: Administración de Bases de Datos
Licenciado en Informática: Janet Lopez
Instituo Técnologico de Zacatecas
Licenciado en Informática: Janet Lopez
Instituo Técnologico de Zacatecas
0 Opiniones:
Publicar un comentario