lunes, 18 de marzo de 2013

[Informática] Base de Datos y sentencias para realizar acciones en Postgres

Bueno, el día de hoy les vengo a dejar un ejemplo muy sencillo de una base de datos y su tabla en Postgres.

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:

ingrese los datos que desee:
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";

2) Mostramos los titulos, autores y editoriales de todos los libros, al último campo lo queremos con mayusculas.

  select "titulo","autor", upper("editorial") from "Libros";


3) Mostrar todos los títulos de los libros rellenando con el caracter '-' a la derecha.

  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



Copyright © 2014 Black Moral Яesistance | Designed With By Blogger Templates | Distributed By Gooyaabi Templates
Scroll To Top