Вы находитесь на странице: 1из 26

Configuración del servicio Postgresql con PgAdmin

Al momento de iniciar nos muestra la siguiente pantalla

Ahora hacemos clic en el icono del enchufe para configurar nuestro servicio de
Postgresql sea local o remoto y nos muestra la siguiente pantalla.

En las pestañas de propiedades registramos los siguientes campos:


• Name: define el nombre que va a mostrar en la lista de servidores en el pgAdmin3
• Host: Especifica el servidor a conectar, puede ser local, en este caso localhost,
especificando una conexión interna con la maquina, aunque pueden existir conexiones
locales o remotas.
• Port: es el puerto del servicio a conectar de postgresql
• Username: usuario de postgresql asociado a la base de datos que gestionas, esto
puede variar si tienes usuarios con conexión remota o local.
• Password: es la clave asociada al usuario.

La conexión debe mostrarse de la siguiente forma:

Creación de base de datos:


• Desplegamos las opciones en SERVERS y luego en nuestro servidor SERVIDOR
LOCAL
• Seleccionamos databases, clic derecho y seleccionamos New Database

Registramos los campos:


Name: el nombre de la base de datos
Owner: el propietario de la base de datos

En la pestaña de SQL podemos visualizar la sentencia SQL para crear nuestra base de datos

Luego de crear la base de datos nuestra interfaz debe mostrar lo siguiente:


Cuando tiene el símbolo de una X roja significa que la interfaz está desconectada de esa
base de datos.

Ahora vamos a especificar los elementos que conforman la base de datos en la interfaz del
PgAdmin

• Catalogs: Son las configuraciones básicas del gestor de base de datos para
administrar las tablas.
• Event Triggers: Acciones ejecutadas luego de un evento (registrar, modificar, eliminar
en la base de datos).
• Schemas: Muestra los distintos tipos de esquemas que existen en la base de datos,
de esta manera es posible gestionar la base de datos, como por “replicas” dando
acceso a las mismas de forma limitada con usuarios y roles.
Abordaremos los siguientes elementos de las schemas:
• sequences: Son metodos que nos permiten auto incrementar una variable
• Tables: Muestra las tablas que contine base de datos

Procedemos a crear nuestra primera tabla: clic derecho en Tables y luego clic izquierdo en
New Table.
En la pestaña Properties los campos:
• Name: especificamos el nombre de la tabla
• Owner: el propietario de la tabla
• Schema: el esquema al que pertenece la tabla

En la pestaña Columns añadimos las columnas o campos a nuestra tabla, clic izquierdo en
add:
En la pestaña Properties los campos:
• Name: especificamos el nombre del campo
• Data type: el tipo de dato
• Length: la longitud de caracteres que puede almacenar el campo

En la pestaña Definition los campos:


• Collaction: Es el tipo de codificación para el texto en el campo
• Not Null: para que el campo no acepte registros en blanco
Luego de configurar todos los campos debe quedar de esta manera

Ahora debemos asociar la clave primaria a una columna, vamos a la pestaña Contraints,
verificamos que este seleccionado en la lista desplegable Primary Key, luego clic izquierdo
en el botón ADD
En la pestaña Properties los campos:
• Name: especificamos el nombre de la clave primaria

En la pestaña Columns los campos:


• Seleccionamos en el campo que sera clave primaria y luego clic en ADD
Debe quedar de la siguiente manera:

La sentencia sql para crear la tabla es la siguiente:

CREATE TABLE public.estudiante


(
ci character varying(25) COLLATE pg_catalog."es_VE.utf8" NOT NULL,
nombre character varying(150) COLLATE pg_catalog."es_VE.utf8" NOT NULL,
apellido character varying(150) COLLATE pg_catalog."es_VE.utf8" NOT NULL,
direccion character varying(250) COLLATE pg_catalog."es_VE.utf8" NOT NULL,
carrera character varying(100) COLLATE pg_catalog."es_VE.utf8" NOT NULL,
edad character varying(5) COLLATE pg_catalog."es_VE.utf8" NOT NULL,
CONSTRAINT pk_estudiante PRIMARY KEY (ci)
)
Esta sentencia es visible en la consola inferior luego de seleccionar la tabla

Registro en tablas:
existen dos formas de realizar registros en una tabla por comandos SQL y por la vista
de datos
• SQL

en la parte superior buscamos el icono consola SQL y dentro copiamos el


siguiente código:

insert into Estudiante (ci,nombre,apellido,direccion,carrera,edad) values


('3498','Maria','crispin','noche
triste','contabilidad','17');
insert into Estudiante (ci,nombre,apellido,direccion,carrera,edad) values
('3499','Jonathan','Garcia Lopez
','morelos no 7','alimentos','17');
insert into Estudiante (ci,nombre,apellido,direccion,carrera,edad) values
('6295','roberto','Sanchez
Mejia','flor de azalia SN','agrobiotecnologia','20');
insert into Estudiante (ci,nombre,apellido,direccion,carrera,edad) values
('3452','Paola','Cervantes
Castillo','Av. Zaragoza','contabilidad','18');
insert into Estudiante (ci,nombre,apellido,direccion,carrera,edad) values
('3792','mayra','Hernandez
Sanchez','Allende No 3','alimentos','22');
insert into Estudiante (ci,nombre,apellido,direccion,carrera,edad) values ('6296','ivan','Trejo
Aragon','Galeana
No23','contabilidad','19');
insert into Estudiante (ci,nombre,apellido,direccion,carrera,edad) values
('2441','Alexander','Borregero
Cerero','Guerrero No8','contabilidad','18');
insert into Estudiante (ci,nombre,apellido,direccion,carrera,edad) values ('3456','Erick', 'Diaz
olalde','Puerta
Norte No6','agrobiotecnologa','18');
insert into Estudiante (ci,nombre,apellido,direccion,carrera,edad) values ('2444','luis', 'Chaltel
Gaspar','noche triste','paramedicos','19');
insert into Estudiante (ci,nombre,apellido,direccion,carrera,edad) values ('3432','Enrique',
'Aldama
Leyte','ahuehuetes ','tic-si','22');
insert into Estudiante (ci,nombre,apellido,direccion,carrera,edad) values ('3495','raul', 'Valdez
Alanes',
'noche triste No9','administrador','17');
insert into Estudiante (ci,nombre,apellido,direccion,carrera,edad) values ('1077','Sandra' ,
'Guzman
Agurre','Hidalgo No12','contabilidad','20');
insert into Estudiante (ci,nombre,apellido,direccion,carrera,edad) values
('3892','Maricruz','Crispin
Claveria','Mariano Matamoros SN','contabilidad','19');
insert into Estudiante (ci,nombre,apellido,direccion,carrera,edad) values ('1075','Gabriel', '
Liberato
Cuacuamoxtla','Cuauhtemoc','administracion','23');
insert into Estudiante (ci,nombre,apellido,direccion,carrera,edad) values ('2443','Marisol',
'Jimenez
Jimenez','Los pinos No15','tic-si','20');
Así nos debe quedar la consolar:

Luego ejecutamos la sentencia con el botón:

La Consola debe mostrar lo siguiente:

Creación de la tabla Libro, en esta oportunidad lo haremos con la consola SQL


CREATE TABLE public.libro
(
titulo character varying(30),
autor character varying(30),
editorial character varying(15),
precio float,
codigo serial,
CONSTRAINT "codigoPK" PRIMARY KEY (codigo)
)

Es posible que luego de crear la tabla no se muestre en la interfaz

Para recargar clic en el botón y refrescara el registro de los elementos que se


seleccionaron.
Registro de libros por consola

insert into libro (titulo,autor,editorial,precio)


values ('El aleph','Borges','Emece',24.50);
insert into libro (titulo,autor,editorial,precio)
values ('Martin Fierro','Jose Hernandez','Emece',16.00);
insert into libro (titulo,autor,editorial,precio)
values ('Aprenda PHP','Mario Molina','Emece',35.40);
insert into libro (titulo,autor,editorial,precio)
values ('Cervantes y el quijote','Borges','Paidos',50.90);

insert into libro (titulo,autor,editorial,precio)


values ('HTML5 CSS3 Y JS','Borges','Emece',15.50);
insert into libro (titulo,autor,editorial,precio)
values ('ecmascript 8','Jose Hernandez','Emece',60.00);
insert into libro (titulo,autor,editorial,precio)
values ('Laravel 5','Mario Molina','Emece',10.40);
insert into libro (titulo,autor,editorial,precio)
values ('Node JS','Borges','Paidos',25.90);

SQL estructura de la tabla:


select table_name,column_name,udt_name,character_maximum_length
from information_schema.columns
where table_name = 'libro';

SQL consulta el título, autor y editorial de todos los libros especificando los nombres
de los campos separados por comas:
select titulo,autor,editorial from libro;

Con la siguiente sentencia seleccionamos los títulos y precios de todos los libros:
select titulo,precio from libro;
Veamos si el registro se guardó:
select * from libro;

Seleccionamos los registros cuyo autor sea diferente de 'Borges':


select * from libro where autor<>'Borges';

Seleccionamos los registros donde su precio sea mayor a 16


select * from libro where precio > '16';

Creación de la tabla Prestamo

Luego de crear las columnas procedemos a crear las claves foráneas, en la pestaña
Constraints
En la pestaña Properties los campos:
• Name: especificamos el nombre de clave foránea

En la pestaña Columna los campos:


• Reference: especifica la tabla de donde se obtiene la clave primarias
• Local Column: especifica el campo de la tabla actual que sera asociada la clave
foranea(en este caso la de libro)
• Referencing: Especifica la columna o campo de la tabla remota de donde se obtiene
la clave primaria

En la pestaña Actions las opciones:


• NO ACTION: No realiza ninguna acción si se elimina o actualiza el registro.
• RESTRICT: En un caso particular actualizara o eliminara solo el valor que coincida
entre la clave primaria y foránea
• CASCADE: Realiza una eliminación o actualización en cascada

Actividad crear la clave foránea de estudiantes

Sentencia SQL para crear la tabla prestamo:

CREATE TABLE public.prestamo


(
codigo integer NOT NULL DEFAULT nextval('prestamo_codigo_seq'::regclass),
fk_libro integer,
fk_estudiante character varying(25) NOT NULL,
fecha_prestamo character varying(10) NOT NULL,
fecha_devuelto character varying(10) NOT NULL,
CONSTRAINT pk_prestamo PRIMARY KEY (codigo),
CONSTRAINT fkr_estudiante FOREIGN KEY (fk_estudiante)
REFERENCES public.estudiante (ci) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT fkr_libro FOREIGN KEY (fk_libro)
REFERENCES public.libro (codigo) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE
)

Insertar registros por SQL


insert into Prestamo (fk_libro, fk_estudiante, fecha_prestamo, fecha_devuelto) values
(2,'6295','08/04/2012','10/04/2012');
insert into Prestamo (fk_libro, fk_estudiante, fecha_prestamo, fecha_devuelto) values
(3,'3792','08/04/2012','10/04/2012');
insert into Prestamo (fk_libro, fk_estudiante, fecha_prestamo, fecha_devuelto) values
(4,'3892','07/05/2012','09/05/2012');
insert into Prestamo (fk_libro, fk_estudiante, fecha_prestamo, fecha_devuelto) values
(3,'2441','09/05/2012','11/05/2012');
insert into Prestamo (fk_libro, fk_estudiante, fecha_prestamo, fecha_devuelto) values
(2,'1075','25/05/2012','28/05/2012');
insert into Prestamo (fk_libro, fk_estudiante, fecha_prestamo, fecha_devuelto) values
(4,'2443','12/06/2012','14/06/2012');
insert into Prestamo (fk_libro, fk_estudiante, fecha_prestamo, fecha_devuelto) values
(1,'6296','13/06/2012','15/06/2012');
insert into Prestamo (fk_libro, fk_estudiante, fecha_prestamo, fecha_devuelto) values
(2,'3499','14/01/2013','16/01/2013');
insert into Prestamo (fk_libro, fk_estudiante, fecha_prestamo, fecha_devuelto) values
(4,'3452','16/02/2013','18/02/2013');
insert into Prestamo (fk_libro, fk_estudiante, fecha_prestamo, fecha_devuelto) values
(3,'3892','20/02/2013','22/02/2013');
insert into Prestamo (fk_libro, fk_estudiante, fecha_prestamo, fecha_devuelto) values
(2,'6296','11/03/2013','13/03/2013');
insert into Prestamo (fk_libro, fk_estudiante, fecha_prestamo, fecha_devuelto) values
(3,'3792','27/03/2013','29/03/2013');
insert into Prestamo (fk_libro, fk_estudiante, fecha_prestamo, fecha_devuelto) values
(4,'3892','08/04/2013','10/04/2013');
insert into Prestamo (fk_libro, fk_estudiante, fecha_prestamo, fecha_devuelto) values
(2,'3452','08/04/2013','10/04/2013');
Practica consultas SQL

La instrucción SQL básica está compuesta por el comando y clausulas, es posible agregarle
más componentes a la instrucción SQL como los operadores y funciones.

Comandos: Create, Select, Insert, Delete, entre otros.


Clausulas: From, Where, Group By, Order By, entre otros.
Operadores: <>, <, >, >=, <=, =, between, in y like.

Una Estructura basica de una Instruccion SQL es la siguiente:

Comando + Clausula (From) + Clausula (Where) + Clausula (Group By) + Clausula (Order
By)

Al inicio de la guiá realizamos algunas instrucciones SQL para ver el funcionamiento de la


interfaz gráfica utilizando algunos operadores.

• Operadores y Clausulas

Seleccionamos los registros cuyo autor sea diferente de 'Borges':


SELECT * FROM libro WHERE autor<>'Borges';

Seleccionamos los registros donde su precio sea mayor a 16


SELECT * FROM libro WHERE precio > '16';

Utilizaremos ahora el operador AND y OR :

Seleccionamos los registros donde el precio del libro sea entre 15 y 36 con los
operadores < , > y AND
SELECT titulo, autor, precio FROM libro WHERE precio>15 AND precio<36

Ahora en el caso del OR seleccionaremos los autores Borges o Mario Molina


SELECT titulo, autor, precio FROM libro WHERE autor='Borges' OR autor='Mario
Molina'

Seleccionamos los registros donde el precio del libro sea entre 15 y 36 con los
operadores < , > y BETWEEN
SELECT titulo, autor, precio FROM libro WHERE precio BETWEEN 15 AND 36

Utilizando las clausulas Order By


SELECT titulo, autor, precio FROM libro WHERE precio BETWEEN 15 AND 36
ORDER BY titulo ASC

• Funciones:

Sumar los valores de un campo


SELECT SUM(precio) FROM libro

Calcular el promedio de un campo


SELECT avg(precio) FROM libro

Contar la cantidad de registros en un campo


SELECT count(precio) FROM libro

Obtener el valor maximo de un campo


SELECT max(precio) FROM libro

Obtener el valor minimo de un campo


SELECT min(precio) FROM libro

Utilizando la agrupación de campos para sumar cada uno de ellos, sumando


todos los precios de los libros con el mismo autor
SELECT autor, SUM(precio) FROM libro GROUP BY autor

Utilizando la instrucción SQL anterior asignamos un nuevo nombre a la funcion


de suma
SELECT autor, SUM(precio) AS suma_precio FROM libro GROUP BY autor

Utilizando la instrucción SQL anterior ordenamos los registros por el campo


suma_precio
SELECT autor, SUM(precio) AS suma_precio FROM libro GROUP BY autor ORDER
BY suma_precio ASC

Utilizando la instrucción SQL anterior contamos la cantidad de libros sumados


SELECT autor, SUM(precio), COUNT(precio) AS suma_precio FROM libro GROUP BY
autor ORDER BY suma_precio ASC

• Subconsultas SQL
Una subconsulta en SQL consiste en utilizar los resultados de una consulta dentro de
otra, que se considera la principal. Esta posibilidad fue la razón original para la palabra
“estructurada” en el nombre Lenguaje de Consultas Estructuradas (Structured Query
Language, SQL ).

Calculamos el promedio en la subconsulta y en la consulta utilizamos el


promedio para obtener los precios que se encuentre por encima del promedio
SELECT titulo, autor, precio FROM libro WHERE precio>(SELECT AVG(precio) FROM
libro)

Operadores lógicos ANY y ALL .

El operador ALL también se utiliza con los operadores aritméticos para comparar un
valor de la expresión formada a partir de la consulta principal con cada uno de los
valores de datos producidos por la subconsulta. Si todos los resultados de las
comparaciones son ciertos ( TRUE) , ALL devuelve un valor cierto ( TRUE) .

SELECT titulo, autor, precio FROM libro WHERE precio > ALL (SELECT precio FROM
libro WHERE autor='Mario Molina')

El operador ANY con uno de los seis operadores aritméticos compara el valor de la
expresión formada a partir de la consulta principal con valores producidos por la
subconsulta. Si alguna de las comparaciones individuales produce un resultado
verdadero ( TRUE) , el operador ANY devuelve un resultado verdadero( TRUE).

SELECT titulo, autor, precio FROM libro WHERE precio > ALL (SELECT precio FROM
libro WHERE autor='Mario Molina')

SELECT libro.codigo, libro.autor, libro.titulo, libro.precio, estudiante.nombre FROM


estudiante, libro, prestamo WHERE estudiante.ci = prestamo.fk_estudiante AND
libro.codigo = prestamo.fk_libro AND estudiante.ci IN (SELECT ci FROM estudiante
WHERE nombre='Maricruz')
• Operador LIKE es otra palabra clave que se utiliza en la cláusula WHERE,
Básicamente, LIKE le permite hacer una búsqueda basada en un patrón en vez
de especificar exactamente lo que se desea (como en IN) o determinar un rango
(como en BETWEEN). La sintaxis es la siguiente

Para obtener los libros con los títulos que inicien con la letra ‘e’
SELECT titulo, autor, precio FROM libro WHERE titulo LIKE 'e%';

Para obtener los libros con los títulos que finalice con la letra ‘e’
SELECT titulo, autor, precio FROM libro WHERE titulo LIKE '%e';

Para obtener los libros con los títulos que contengan letra ‘e’
SELECT titulo, autor, precio FROM libro WHERE titulo LIKE '%e%';
• Clave Primaria y Clave Foraneas

Primero creamos la base de datos:

CREATE DATABASE "biblioteca"


WITH OWNER = postgres
ENCODING = 'UTF8'
TABLESPACE = pg_default
LC_COLLATE = 'en_US.UTF-8'
LC_CTYPE = 'en_US.UTF-8'
CONNECTION LIMIT = -1;

Una clave primaria es un campo (o varios) que identifica un solo registro (fila) en una tabla.
Para un valor del campo clave existe solamente un registro.

CREATE TABLE estudiante


(
cedula character varying(30),
nombre character varying(30),
edad character varying(30),
CONSTRAINT estudiante_pkey PRIMARY KEY (cedula)
)

CREATE TABLE libro


(
codigo serial,
titulo character varying(30),
autor character varying(30),
editorial character varying(15),
precio double precision,
CONSTRAINT "codigoPK" PRIMARY KEY (codigo)
)

Lo que hacemos agregar restricción CONSTRAINT seguido del alias que tendra esa
restriccion, luego de la definición, "primary key" se coloca entre paréntesis, el nombre del
campo que será clave primaria.

Claves Foraneas:
Un campo que no es clave primaria en una tabla y sirve para enlazar sus valores con otra
tabla en la cual es clave primaria se denomina clave foránea, externa o ajena.

REFERENCES: permite referenciar la tabla y campo a relacionar con la clave primaria

Hay tres tipos de concordancia:


MATCH FULL no permitirá que una columna de una clave externa de varias columnas sea
nula a menos que todas las columnas de clave externa sean nulas; si son todos nulos, no
es necesario que la fila tenga una coincidencia en la tabla a la que se hace referencia.
MATCH SIMPLE permite que cualquiera de las columnas de clave externa sea nula; si
alguno de ellos es nulo, no es necesario que la fila tenga una coincidencia en la tabla a la
que se hace referencia.
MATCH PARTIAL aún no está implementado. (Por supuesto, las restricciones NOT NULL
se pueden aplicar a la (s) columna (s) de referencia para evitar que surjan estos casos).

ON UPDATE: son las acciones que se ejecutaran al momento de actualizar registros en la


tabla maestra

ON DELETE: son las acciones que se ejecutaran al momento de eliminar registros en la


tabla maestra

LAS ACCIONES A EJECUTAR SON LAS SIGUIENTES:

CASCADE: elimine o actualice la fila de la tabla primaria y elimine o actualice


automáticamente las filas coincidentes en la tabla secundaria. Tanto ON DELETE CASCADE
como ON UPDATE CASCADE son compatibles. Entre dos tablas, no defina varias cláusulas
ON UPDATE CASCADE que actúan en la misma columna en la tabla principal o en la tabla
secundaria.

SET NULL: elimine o actualice la fila de la tabla primaria y establezca la columna o columnas
de la clave externa en la tabla secundaria en NULL. Ambas cláusulas ON DELETE SET
NULL y ON UPDATE SET NULL son compatibles.

Si especifica una acción SET NULL, asegúrese de que no haya declarado las columnas en la
tabla secundaria como NOT NULL.

RESTRICT: rechaza la operación de eliminación o actualización para la tabla padre.


Especificar RESTRICT (o NO ACTION) es lo mismo que omitir la cláusula ON DELETE o ON
UPDATE.

NO ACTION:echaza la operación de eliminación o actualización para la tabla primaria si hay


un valor de clave externa relacionado en la tabla referenciada. Algunos sistemas de bases de
datos tienen controles diferidos, y NO ACCIÓN es un cheque diferido.
CREATE TABLE prestamo
(
codigoP serial,
fecha_prestamo date,
fecha_devuelto date,
codigo_libro integer,
cedula_estudiante character varying(30),
CONSTRAINT pk_prestamo PRIMARY KEY (codigoP),
CONSTRAINT fk_estudiante FOREIGN KEY (cedula_estudiante)
REFERENCES estudiante (cedula) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fk_libro FOREIGN KEY (codigo_libro)
REFERENCES libro (codigo) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE
)

Insertamos los registros

INSERT INTO estudiante (cedula,nombre,edad) VALUES (31233,'Berk Forbes',24),


(23450,'Axel Grimes',20),(23452,'Wade Johnson',19),(23453,'Virginia Grimes',22),
(23456,'Ruby Dunn',19),(234123,'Bruce Richard',25),(23123123,'Cameran Casey',22),
(2312234,'Josephine Oneal',22),(2312321,'Chastity Juarez',22);

INSERT INTO libro (titulo,autor,editorial,precio) VALUES ('NodeJs','Colby


Kinney','visor',50), ('ReactJS','Brent Hooper','Letter',60), ('CSS3','Wynne
Schmidt','Letter',22), ('HTML5','Wynne Schmidt','Programing',12);

INSERT INTO prestamo ( fecha_prestamo, fecha_devuelto, codigo_libro,


cedula_estudiante) VALUES ('2017-10-10', '2017-10-15', 2, 23456), ('2017-10-10', '2017-
10-15', 3, 23456);

Вам также может понравиться