Eejercicios Pantalla Inicial Del PgAdmin III

26
Facultad de Ciencias y Tecnologías –UNICAN Taller II (H.S) Introducción al PostgreSQL. Trabajando con Interface grafica Pantalla inicial del pgAdmin III, que es la interface grafica que permite el mantenimiento de la base de datos en PostgreSQL. Para ingresar la clave y empezar a trabajar con pgAdmin III, doble clik sobre PosgreSQL 9.1 (localhost:5432), o clik derecho y connect, ingresar la clave y OK. La siguiente pantalla aparece una vez que se haya ingresado la clave y aquí estamos en condiciones de trabajar con base de datos, en postgreSQL.

Transcript of Eejercicios Pantalla Inicial Del PgAdmin III

Page 1: Eejercicios Pantalla Inicial Del PgAdmin III

Facultad de Ciencias y Tecnologías –UNICAN Taller II (H.S)

Introducción al PostgreSQL. Trabajando con Interface grafica Pantalla inicial del pgAdmin III, que es la interface grafica que permite el mantenimiento de la base de datos en

PostgreSQL.

Para ingresar la clave y empezar a trabajar con pgAdmin III, doble clik sobre PosgreSQL 9.1 (localhost:5432), o clik

derecho y connect, ingresar la clave y OK.

La siguiente pantalla aparece una vez que se haya ingresado la clave y aquí estamos en condiciones de trabajar con

base de datos, en postgreSQL.

Page 2: Eejercicios Pantalla Inicial Del PgAdmin III

Facultad de Ciencias y Tecnologías –UNICAN Taller II (H.S)

1. Crear una Base de Datos: Clik derecho sobre Database y seleccionar la opción New Database.., de la

ventana Object browser.

Sentencia SQL: CREATE DATABASE "Alquileres"

2. Borrar una Base de Datos: Clik derecho sobre la base de datos en el ejemplo, Alquileres y seleccionar la opción

delete/drop.., de la ventana Object browser y y seleccionamos la opción SI del cuadro de dialogo, esta

sentencia también sirve para borrar una tabla que veremos más adelante.

Sentencia SQL: DROP DATABASE "Alquileres"

Page 3: Eejercicios Pantalla Inicial Del PgAdmin III

Facultad de Ciencias y Tecnologías –UNICAN Taller II (H.S)

3. Crea una tabla (Entidad)dentro de la Base de Datos Alquileres: clik sobre database alquileres, luego Clik

sobre la opción Schemas, Public, luego sobre tables de la ventana Object browser, allí le damos clik

derecho y elegir la opción New Tables.., le ponemos el nombre a la tabla y ok, a partir de aquí podemos

crear sus columnas (Atributos).

Sentencia SQL: CREATE TABLE "Barrio"

4. Crear columnas ( Atributos) dentro de la tabla Barrio; seguimos los mismos pasos anterior, clik sobre

database alquileres, luego Clik sobre la la opción Schemas, Public, luego tables de la ventana Object

browser, allí le damos clik tables, clik derecho sobre columns y elegimos la opción New columns.., le

ponemos el nombre a la columna, el tipo de dato, la definición de not null si corresponde, y ok.

Sentencia SQL: ALTER TABLE "Barrio" ADD COLUMN "bar_cod" integer;

ALTER TABLE "Barrio" ALTER COLUMN "bar_cod" SET NOT NULL;

ALTER TABLE "Barrio" ADD COLUMN "bar_nombre" character(20) NOT NULL;

Page 4: Eejercicios Pantalla Inicial Del PgAdmin III

Facultad de Ciencias y Tecnologías –UNICAN Taller II (H.S)

5. Crear Clave Primaria dentro de la tabla Barrio: Seguimos los mismos pasos anterior, clik sobre database

alquileres, luego Clik sobre la la opción Schemas, Public se ubica el iconos de tables y dentro Barrio,

constraints , de la ventana Object browser, damos clik derecho a constraints, elegimos la opción New

objeto.., luego Primary Key, y en el cuadro de dialogo la columna se adiciona (ADD) y ok.

Sentencia SQL: ALTER TABLE "Barrio" ADD CONSTRAINT "bar_Codigo" PRIMARY KEY("bar_codigo" );

COMMENT ON CONSTRAINT "bar_Codigo" ON "Barrio" IS 'Clave primaria de la Entidad barrio';

6. Insertar datos dentro de la tabla Barrio: Seguimos los mismos pasos anterior, clik sobre database

alquileres, luego Clik sobre la opción Shemas, Public, se ubica el iconos de tables y luego barrio, de la

ventana Object browser, allí le damos clik derecho sobre barrio y elegimos la opción scripts y luego Insert

Scripts, allí cargamos los valores de los atributos de la tabla.

Sentencia SQL: INSERT INTO "Barrio" ("bar_codigo", "bar_nombre") VALUES (1,'centro');

Page 5: Eejercicios Pantalla Inicial Del PgAdmin III

Facultad de Ciencias y Tecnologías –UNICAN Taller II (H.S)

7. Crear Clave extranjera, primero vamos a crear una tabla (Entidad) de FUNCIONARIO, con atributos y clave

primaria, para luego crear la clave extranjera en esta, dentro de la tabla funcionario: Seguimos los mismos

pasos para crear una clave primaria, clik sobre database alquileres, luego Clik sobre la opción Schemas,

Public se ubica el iconos de tables y dentro Barrio, constraints , de la ventana Object browser, damos

clik derecho a constraints, elegimos la opción New objeto.., luego New foreing key.., y en el cuadro de

dialogo la columna se adiciona (ADD) y ok.

Ahora ya podemos crear las columnas (atributos) dentro de la entidad FUNCIONARIO.

Sentencia SQL ALTER TABLE "Funcionario" ADD CONSTRAINT "Clave extranjera" FOREIGN KEY

("Fun_Codigobarrio") REFERENCES "Barrio" (bar_cod) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE

NO ACTION;

8. Insertar datos dentro de la tabla FUCIONARIO: Seguimos los mismos pasos anterior, clik sobre database

alquileres, luego Clik sobre la opción Shemas, Public, se ubica el iconos de tables y luego FUNCIONARIO,

de la ventana Object browser, allí le damos clik derecho sobre FUNCIONARIO y elegimos la opción scripts y

luego Insert Scripts, allí cargamos los valores de los atributos de la tabla.

Sentencia SQL: INSERT INTO "Funcionario" ("Fun_cod", "Fun_nombre", "Fun_sexo", "Fun_salario",

"Fun_Codigobarrio") VALUES (1, 'Fernando', 'M',1200, 1);

Page 6: Eejercicios Pantalla Inicial Del PgAdmin III

Facultad de Ciencias y Tecnologías –UNICAN Taller II (H.S)

9. Prueba de integridad, Se intenta borrar un atributo de la entidad Barrio, cuya clave primaria es clave

extranjera, o sea atributo de la entidad Funcionario, aquí se nota que no se puede violar la integridad esta

perfecta.

Sentencia SQL: DELETE FROM "Barrio" WHERE bar_cod = 1;

Sentencias y funciones SQL

10. Sentencia SELECT, Es una sentencia muy potente y útil para el manipuleo de los datos, en una base

de datos, como por ejemplo, ver, clasificar, ordenar, etc., se utiliza también con Like, betwen.

select *from tb_persona

select per_id, per_apellido, per_telefono from tb_persona where per_nro

>=2 and per_nro <=8 ;

select per_id, per_apellido, per_telefono from tb_persona where

per_apellido like '%a%';

select per_id, per_apellido, per_telefono from tb_persona where per_nro

between 2 and 5;

select per_id, per_apellido, per_telefono from tb_persona where per_nro

in(1,2);

select per_id, per_apellido, per_nro, per_telefono from tb_persona

where per_nro not in(1,2);

Page 7: Eejercicios Pantalla Inicial Del PgAdmin III

Facultad de Ciencias y Tecnologías –UNICAN Taller II (H.S)

11. Sentencia ALTER, Permite insertar/eliminar atributos en la tablas ya existentes.

alter table tb_persona add per_apodo varchar (30) ;

select * from tb_persona

alter table tb_persona alter column per_apodo type varchar (10) ;

select * from tb_persona

12. Sentencia DELETE, Permite borrar un registro de de una tabla (entidad).

delete from tb_persona where per_id = 1 ;

13. Sentencia RENAME, Permite renombrar el nombre de una columna (atributo) de una tabla (entidad).

alter table tb_persona rename column per_apodo to per_ndedejo ;

select * from tb_persona

FUNCIONES

14. AVG. Retorna la madia de una columna de una tabla.

select avg(per_nro) as media from tb_persona;

15. COUNT. Cuenta la cantidad de líneas de una tabla.

select count(per_nro) from tb_persona;

16. SUM. Suma valores de una columna de una tabla.

select sum(per_nro) as valor from tb_persona;

17. MIN. Retorna el valor mínimo de una columna de una tabla.

select min(per_nro) as Vminimo from tb_persona;

18. MAX. Retorna el valor máximo de una columna de una tabla.

select max(per_nro) as Vminimo from tb_persona;

Page 8: Eejercicios Pantalla Inicial Del PgAdmin III

Facultad de Ciencias y Tecnologías –UNICAN Taller II (H.S)

FUNCIONES ESCALARES DE TEXTO

19. UPPER. Retorna en mayúscula los textos contenidos en una columna de la tabla.

select per_id,upper(per_apellido) as apellido, per_nro from tb_persona

20. LOWER. Retorna en minuscula los textos contenidos en una columna de la tabla.

select per_id,lower(per_apellido) as apellido, per_nro from tb_persona

CONCATENAR

21. Esta función SQL une en una única secuencia de caracteres una o mas columnas (Atributos) de la tabla

select per_id || '-' || per_apellido as "Nro y Apellido " from tb_persona

GROUP BY (Agrupar Por)

22. Su función es agrupar datos de cualquier Base de Datos

select per_activo as situacion,

count(per_activo) as cuenta from tb_persona group by per_activo ;

Verificar resultado

select * from tb_persona ;

o

select * from tb_persona order by per_activo;;

De otra forma que podemos utilizar

select 'por situacion' || per_activo || ' tiene registrados', count(Per_nro)

as "estadisticas"

from tb_persona group by per_activo;

Page 9: Eejercicios Pantalla Inicial Del PgAdmin III

Facultad de Ciencias y Tecnologías –UNICAN Taller II (H.S)

Promedio de una columna o atributo.

select avg(per_id) from tb_persona group by per_activo;

INDICE

23. Es usado para agilizar la búsqueda de selección de datos en una tabla (entidad).

create index ind_ident on tb_persona(per_id)

DOMINIO (DOMAIN)

24. Son tipo de dato creados para que puedan ser reaprovechados por los usuarios y facilitar la padronizacion

para la creación de tablas (Entidades)

create domain "DM CLAVE" as integer

check(value > 0) not null;

Back up / Restore

25. copia y restaura base de datos, en PgAdmin.

Page 10: Eejercicios Pantalla Inicial Del PgAdmin III

Facultad de Ciencias y Tecnologías –UNICAN Taller II (H.S)

Lenguaje SQL. Recursos Lenguaje de Definición de Datos – DDL (Data Definition Language) Es un lenguaje proporcionado por el sistema de gestión

de base de datos que permite a los usuarios de la misma,

llevar a cabo las tareas de definición de las estructuras

que almacenarán los datos así como de los

procedimientos o funciones que permitan consultarlos.

Lenguaje de Manipulación de Datos – DML (Data

Manipulation Language)

Es un lenguaje proporcionado por el sistema de gestión

de base de datos que permite a los usuarios llevar a cabo

las tareas de consulta o manipulación de los datos,

organizados por el modelo de datos adecuado.

Lenguaje de Control de Datos – DCL (Data Control Language) Es un lenguaje proporcionado por el sistema de gestión

de base de datos que incluye una serie de comandos SQL

que permiten al administrador controlar el acceso a los

datos contenidos en la base de datos.

Page 11: Eejercicios Pantalla Inicial Del PgAdmin III

Facultad de Ciencias y Tecnologías –UNICAN Taller II (H.S)

Lenguajes de Definición de Datos - DDL

SINTAXIS: CREATE DATABASE: Crea una base de datos CREATE DATABASE name [ [ WITH ] [ OWNER [=] dbowner ] [ TEMPLATE [=] template ] [ ENCODING [=] encoding ] [ LC_COLLATE [=] lc_collate ] [ LC_CTYPE [=] lc_ctype ] [ TABLESPACE [=] tablespace ] [ CONNECTION LIMIT [=] connlimit ] ]

SINTAXIS: CREATE VIEW: Crea una nueva vista

CREATE OR REPLACE VIEW nombre_vista AS SELECT nombre_columna_1 [ AS alias_columna_1] [, … ] FROM nombre_tabla1 [ALIAS] [, … ] WHERE condicion1 [, … ] [ UNION SELECT nombre_columna_1 [ AS alias_columna_1] [, … ] FROM nombre_tabla1 [ALIAS] [, … ] WHERE condicion1 [, … ] ] ORDER BY nombre_campo1 [ASC | DESC] [, … ] ;

Este comando crea un objeto dentro de la base de datos. Puede ser una tabla, vista, índice, trigger, función,

procedimiento o cualquier otro objeto que el motor de la base de datos soporte.

SINTAXIS: CREATE TABLE: Crea un nueva tabla CREATE TABLE nombre_tabla ( nombre_columna_1 tipo_dato_1 [DEFAULT default_expr] [NOT NULL] , nombre_columna_n tipo_dato_n [DEFAULT default_expr] [NOT NULL] , [CONSTRAINT nombre_clave_primaria] PRIMARY KEY (nombre_columna [ USING INDEX TABLESPACE tablespace ] , [CONSTRAINT nombre_clave_unica] UNIQUE (nombre_columna [,…. ]) [ USING INDEX TABLESPACE tablespace ], [CONSTRAINT nombre_clave_foránea] FOREIGN KEY (nombre_columna ] [CONSTRAINT nombre_chk CHECK (condicion1, [,… ] ) ] ; REFERENCES nombre_tabla_referencia (nombre_campo_referencia) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE action ] [ ON UPDATE action ] } [ DEFERRABLE | NOT DEFERRABLE ] [INITIALLY DEFERRED | INITIALLY IMMEDIATE ]

Page 12: Eejercicios Pantalla Inicial Del PgAdmin III

Facultad de Ciencias y Tecnologías –UNICAN Taller II (H.S)

Crear una base de datos denominada db_agenda, cuyo propietario deberá ser el usuario postgres, con codificación UTF8, sin limite de conexión y que esté basada en la plantilla template1. Agregar un comentario con el texto siguiente “Primera Base de Datos”

CREATE DATABASE db_agenda WITH OWNER = postgres ENCODING = 'UTF8' LC_COLLATE = 'Spanish, Paraguay' LC_CTYPE = 'Spanish, Paraguay' CONNECTION LIMIT = -1; COMMENT ON DATABASE db_agenda IS 'Primera Base de Datos';

Page 13: Eejercicios Pantalla Inicial Del PgAdmin III

Facultad de Ciencias y Tecnologías –UNICAN Taller II (H.S)

Crear una tabla denominada tb_persona, que deberá estar contenida dentro de la base de datos db_agenda, y que posea los campos siguientes:

per_id serial per_documento character varying (15) per_nombre character varying (30) per_apellido character varying (30) per_telefono character varying (20) per_activo bolean

Los campos per_documento y per_nombre no deberán permitir valores nulos. El campo per_activo tendrá como valor predeterminado true. Crear una clave primaria con el campo per_id, y una clave única con el campo per_documento. Cargar la Tabla, con la sentencia insert del scripts.

CREATE TABLE tb_persona ( per_id serial, per_documento character varying(15) NOT NULL, per_nombre character varying(30) NOT NULL, per_apellido character varying(30), per_telefono character varying(15), per_activo boolean DEFAULT true, CONSTRAINT per_id_pkey PRIMARY KEY (per_id), CONSTRAINT per_documento_ukey UNIQUE (per_documento) );

Page 14: Eejercicios Pantalla Inicial Del PgAdmin III

Facultad de Ciencias y Tecnologías –UNICAN Taller II (H.S)

Crear una vista de la tabla tb_persona, denominada vw_persona_01. La vista deberá contener los campos per_documento, per_apellido y per_nombre. Deberá esta ordernada por per_apellido y per_nombre y solo deberá contener personas con situación Activa (per_activo = true).

CREATE OR REPLACE VIEW vw_persona_01 AS SELECT per_documento, per_nombre, per_apellido FROM tb_persona WHERE per_activo ORDER BY per_apellido, per_nombre;

Page 15: Eejercicios Pantalla Inicial Del PgAdmin III

Facultad de Ciencias y Tecnologías –UNICAN Taller II (H.S)

Lenguajes de Definición de Datos - DDL

Este comando permite modificar la estructura de un objeto- Se pueden agregar / quitar campos a una tabla,

modificar el tipo de un campo, agregar / quitar índices a una tabla, etc.

ALTER TABLE, cambia los atributos de una tabla SINTAXIS: ALTER TABLE name action [, ... ]

Donde las acciones pueden ser: RENAME [ COLUMN ] column TO new_column RENAME TO new_name SET SCHEMA new_schema DROP CONSTRAINT name_constraint; DROP COLUMN name_column; ALTER name_column TYPE type; ADD COLUMN per_nuevo integer;

Acción ADD COLUMN Agregue la columna per_sexo a la tabla tb_persona, con las características siguientes:

No deberá aceptar valores nulos

El valor predetermiando del campo deberá ser M

ALTER TABLE tb_persona ADD COLUMN per_sexo character varying(1) NOT NULL DEFAULT 'M';

ALTER DATABASE, cambia los atributos de una base de datos SINTAXIS: ALTER DATABASE name [ [ WITH ] option [ ... ] ] Las opciones pueden ser: CONNECTION LIMIT connlimit ALTER DATABASE name RENAME TO newname ALTER DATABASE name OWNER TO new_owner ALTER DATABASE name SET TABLESPACE new_tablespace ALTER DATABASE name SET configuration_parameter { TO | = } { value | DEFAULT } ALTER DATABASE name SET configuration_parameter FROM CURRENT ALTER DATABASE name RESET configuration_parameter ALTER DATABASE name RESET ALL

Page 16: Eejercicios Pantalla Inicial Del PgAdmin III

Facultad de Ciencias y Tecnologías –UNICAN Taller II (H.S)

ALTER TABLE tb_persona ADD CONSTRAINT per_sexo_chk CHECK (per_sexo = 'M' or per_sexo = 'F');

Acción ADD CONSTRAINT Agregue una restricción a la tabla tb_persona, en el campo per_sexo. El mismo deberá aceptar solo los valores ‘M’ o ‘F’; que indicaran el sexo Masculino o Femenino.

Page 17: Eejercicios Pantalla Inicial Del PgAdmin III

Facultad de Ciencias y Tecnologías –UNICAN Taller II (H.S)

Lenguajes de Definición de Datos - DDL

Este comando elimina un objeto de la base de datos. Puede ser una tabla, vista, índice, trigger, función,

procedimiento o cualquier otro objeto que el motor de la base de datos soporte. Se puede combinar con la

sentencia ALTER.

Elimine la vista vw_persona_01 y vuelva a crearla, incluyendo el campo per_id, en la primera posición de la misma.

Drop view vw_persona_01; CREATE OR REPLACE VIEW vw_persona_01 AS SELECT per_id, per_nombre, per_apellido FROM tb_persona WHERE per_activo ORDER BY per_apellido, per_documento;

Elimine el campo per_telefono de la tabla tb_persona

ALTER TABLE tb_persona DROP COLUMN per_telefono

El comando DROP es utilizado para eliminar tablas, vistas, funciones, y la propia base de datos. SINTAXIS: DROP TABLE nombre_tabla; ROP VIEW nombre_vista; ROP DATABASE nombre_database; LTER TABLE nombre_tabla DROP COLUMN nombre_columna;

Page 18: Eejercicios Pantalla Inicial Del PgAdmin III

Facultad de Ciencias y Tecnologías –UNICAN Taller II (H.S)

Lenguajes de Manipulación de Datos - DML

Sentencia Sintaxis

INSERT

Inserta una columna en la tabla

INSERT INTO table [ ( column [, ...] ) ] { DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) [, ...] | query } [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]

UPDATE

Actualiza datos en la tabla

UPDATE [ ONLY ] table [ [ AS ] alias ] SET { column = { expression | DEFAULT } | ( column [, ...] ) = ( { expression | DEFAULT } [, ...] ) } [, ...] [ FROM fromlist ] [ WHERE condition | WHERE CURRENT OF cursor_name ] [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]

DELETE

Elimina columnas de la tabla

DELETE FROM [ ONLY ] table [ [ AS ] alias ] [ USING usinglist ] [ WHERE condition | WHERE CURRENT OF cursor_name ] [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]

SELECT

Recupera columnas desde una tabla o vista

SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ] * | expression [ [ AS ] output_name ] [, ...] [ FROM from_item [, ...] ] [ WHERE condition ] [ GROUP BY expression [, ...] ] [ HAVING condition [, ...] ] [ { UNION | INTERSECT | EXCEPT } [ ALL ] select ] [ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST | LAST } ] [, ...] ] [ LIMIT { count | ALL } ]

Inserte los siguientes datos en la tabla tb_persona: Documento Nombres Apellidos Sexo Activo 2343235 Pedro Cantero M true 3456765 Estela Sanabria F true 4567544 Jose Leiva M false 1230005 Mariza Vera F true

INSERT INTO tb_persona(per_id, per_documento, per_nombre, per_apellido, per_sexo, per_activo) VALUES (default, ‘2343235’, ‘Pedro’, ‘Cantero’, ‘M’, true); INSERT INTO tb_persona(per_id, per_documento, per_nombre, per_apellido, per_sexo, per_activo) VALUES (default, ‘3456765’, ‘Estela’, ‘Sanabria’, ‘F’, true); INSERT INTO tb_persona(per_id, per_documento, per_nombre, per_apellido, per_sexo, per_activo) VALUES (default, ‘4567544’, ‘Jose’, ‘Leiva’, M’, false); INSERT INTO tb_persona(per_id, per_documento, per_nombre, per_apellido, per_sexo, per_activo) VALUES (default, ‘1230005’, ‘Mariza’, ‘Vera’, ‘F, true);

Es un lenguaje proporcionado por el sistema de gestión de base de datos que permite a los usuarios llevar a

cabo las tareas de consulta o manipulación de los datos, organizados por el modelo de datos adecuado.

Incluye las sentencias siguientes:

Page 19: Eejercicios Pantalla Inicial Del PgAdmin III

Facultad de Ciencias y Tecnologías –UNICAN Taller II (H.S)

SELECT * FROM tb_persona WHERE per_documento = ‘4567544’;

UPDATE tb_persona SET per_nombre= ‘Jose Ramon’ WHERE per_id = 3;

UPDATE tb_persona SET per_nombre= ‘Jose Ramon’ WHERE per_id = (select per_id from tb_persona where per_documento = ‘4567544’);

DELETE FROM tb_persona WHERE per_activo = false;

DELETE FROM tb_persona WHERE !per_activo;

Selecciona de la tabla tb_persona el registro que cumpla la siguiente condición: per_documento = ‘4567544’

Toma el valor de per_id, retornado de la consulta anterior. Luego, actualiza el campo per_nombre con el dato “José Ramón”, cuando el

per_id sea igual al valor del per_id recuperado.

Elimina los registros de la tabla tb_persona, cuyo campo per_activo sea igual a false.

Page 20: Eejercicios Pantalla Inicial Del PgAdmin III

Facultad de Ciencias y Tecnologías –UNICAN Taller II (H.S)

Lenguajes de Control de Datos - DCL

GRANT — Define privilegios de acceso

El comando GRANT tiene dos variantes básicas: una que otorga privilegios sobre una base de datos objeto (cuadro, columna, vista,

secuencia, la base de datos, servidor extranjero, la función, lenguaje procedural, esquema o tablas), y que otorga un pertenencia a un rol.

REVOKE — Remueve privilegios de acceso asignados

El comando REVOKE retira los privilegios concedidos anteriormente a partir de una o más funciones. La palabra clave PUBLIC se refiere al

grupo implícito definido para todos los roles.

GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER } [,...] | ALL [ PRIVILEGES ] } ON [ TABLE ] tablename [, ...] TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ] GRANT { { SELECT | INSERT | UPDATE | REFERENCES } ( column [, ...] ) [,...] | ALL [ PRIVILEGES ] ( column [, ...] ) } ON [ TABLE ] tablename [, ...] TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ] GRANT { { USAGE | SELECT | UPDATE } [,...] | ALL [ PRIVILEGES ] } ON SEQUENCE sequencename [, ...] TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ] GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] } ON DATABASE dbname [, ...] TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ] GRANT { USAGE | ALL [ PRIVILEGES ] } ON FOREIGN DATA WRAPPER fdwname [, ...] TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ] GRANT { USAGE | ALL [ PRIVILEGES ] } ON FOREIGN SERVER servername [, ...] TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ] GRANT { EXECUTE | ALL [ PRIVILEGES ] } ON FUNCTION funcname ( [ [ argmode ] [ argname ] argtype [, ...] ] ) [, ...] TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ] GRANT { USAGE | ALL [ PRIVILEGES ] } ON LANGUAGE langname [, ...] TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ] GRANT { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] } ON SCHEMA schemaname [, ...] TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ] GRANT { CREATE | ALL [ PRIVILEGES ] } ON TABLESPACE tablespacename [, ...] TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ] GRANT role [, ...] TO rolename [, ...] [ WITH ADMIN OPTION ]

Page 21: Eejercicios Pantalla Inicial Del PgAdmin III

Facultad de Ciencias y Tecnologías –UNICAN Taller II (H.S)

REVOKE [ GRANT OPTION FOR ] { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER } [,...] | ALL [ PRIVILEGES ] } ON [ TABLE ] tablename [, ...] FROM { [ GROUP ] rolename | PUBLIC } [, ...] [ CASCADE | RESTRICT ] REVOKE [ GRANT OPTION FOR ] { { SELECT | INSERT | UPDATE | REFERENCES } ( column [, ...] ) [,...] | ALL [ PRIVILEGES ] ( column [, ...] ) } ON [ TABLE ] tablename [, ...] FROM { [ GROUP ] rolename | PUBLIC } [, ...] [ CASCADE | RESTRICT ] REVOKE [ GRANT OPTION FOR ] { { USAGE | SELECT | UPDATE } [,...] | ALL [ PRIVILEGES ] } ON SEQUENCE sequencename [, ...] FROM { [ GROUP ] rolename | PUBLIC } [, ...] [ CASCADE | RESTRICT ] REVOKE [ GRANT OPTION FOR ] { { CREATE | CONNECT | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] } ON DATABASE dbname [, ...] FROM { [ GROUP ] rolename | PUBLIC } [, ...] [ CASCADE | RESTRICT ] REVOKE [ GRANT OPTION FOR ] { USAGE | ALL [ PRIVILEGES ] } ON FOREIGN DATA WRAPPER fdwname [, ...] FROM { [ GROUP ] rolename | PUBLIC } [, ...] [ CASCADE | RESTRICT ] REVOKE [ GRANT OPTION FOR ] { USAGE | ALL [ PRIVILEGES ] } ON FOREIGN SERVER servername [, ...] FROM { [ GROUP ] rolename | PUBLIC } [, ...] [ CASCADE | RESTRICT ] REVOKE [ GRANT OPTION FOR ] { EXECUTE | ALL [ PRIVILEGES ] } ON FUNCTION funcname ( [ [ argmode ] [ argname ] argtype [, ...] ] ) [, ...] FROM { [ GROUP ] rolename | PUBLIC } [, ...] [ CASCADE | RESTRICT ] REVOKE [ GRANT OPTION FOR ] { USAGE | ALL [ PRIVILEGES ] } ON LANGUAGE langname [, ...] FROM { [ GROUP ] rolename | PUBLIC } [, ...] [ CASCADE | RESTRICT ] REVOKE [ GRANT OPTION FOR ] { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] } ON SCHEMA schemaname [, ...] FROM { [ GROUP ] rolename | PUBLIC } [, ...] [ CASCADE | RESTRICT ] REVOKE [ GRANT OPTION FOR ] { CREATE | ALL [ PRIVILEGES ] } ON TABLESPACE tablespacename [, ...] FROM { [ GROUP ] rolename | PUBLIC } [, ...] [ CASCADE | RESTRICT ] REVOKE [ ADMIN OPTION FOR ] role [, ...] FROM rolename [, ...] [ CASCADE | RESTRICT ]

Crear un rol de grupo denominado rl_abm, con tiempo de validez indefinido.

CREATE ROLE rl_abm VALID UNTIL 'infinity';

CREATE ROLE nombre_usuario LOGIN VALID UNTIL 'infinity'; GRANT rl_abm TO nombre_usuario;

GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE tb_persona TO GROUP rl_abm; GRANT ALL ON TABLE tb_persona_per_id_seq TO GROUP rl_abm;

Crear un rol de login (nombre_usuario), que sea miembro del rol rl_abm y que solo pueda recibir herencia

Conceder permiso de SELECT, UPDATE, INSERT y DELETE, sobre la tabla tb_persona al rol de grupo rl_abm.

Page 22: Eejercicios Pantalla Inicial Del PgAdmin III

Facultad de Ciencias y Tecnologías –UNICAN Taller II (H.S)

Lenguaje de manipulación de datos (I)

Consulta de datos, el proceso más importante que podemos llevar a cabo en una base de datos es la consulta de los datos. De nada serviría una base de datos si no pudiéramos consultarla. Es además la operación que efectuaremos con mayor frecuencia.

Para consultar la información SQL pone a nuestra disposición la sentencia SELECT.

La sentencia SELECT nos permite consultar los datos almacenados en una tabla de la base de datos. El formato de la sentencia select es:

SELECT [ALL | DISTINCT ] <nombre_campo> [{,<nombre_campo>}] FROM <nombre_tabla>|<nombre_vista> [{,<nombre_tabla>|<nombre_vista>}] [WHERE <condicion> [{ AND|OR <condicion>}]] [GROUP BY <nombre_campo> [{,<nombre_campo >}]] [HAVING <condicion>[{ AND|OR <condicion>}]] [ORDER BY <nombre_campo>|<indice_campo> [ASC | DESC] [{,<nombre_campo>|<indice_campo> [ASC | DESC ]}]]

Veamos por partes que quiere decir cada una de las partes que conforman la sentencia.

Significado

SELECT Palabra clave que indica que la sentencia de SQL que queremos ejecutar es de selección.

ALL Indica que queremos seleccionar todos los valores.Es el valor por defecto y no suele especificarse casi nunca.

DISTINCT Indica que queremos seleccionar sólo los valores distintos.

FROM

Indica la tabla (o tablas) desde la que queremos recuperar los datos. En el caso de que exista más de una tabla se denomina a la consulta "consulta combinada" o "join". En las consultas combinadas es necesario aplicar una condición de combinación a través de una cláusula WHERE.

WHERE Especifica una condición que debe cumplirse para que los datos sean devueltos por la consulta. Admite los operadores lógicos AND y OR.

GROUP BY Especifica la agrupación que se da a los datos. Se usa siempre en combinación con funciones agregadas.

HAVING

Especifica una condición que debe cumplirse para los datosEspecifica una condición que debe cumplirse para que los datos sean devueltos por la consulta. Su funcionamiento es similar al de WHERE pero aplicado al conjunto de resultados devueltos por la consulta. Debe aplicarse siempre junto a GROUP BY y la condición debe estar referida a los campos contenidos en ella.

ORDER BY Presenta el resultado ordenado por las columnas indicadas. El orden puede expresarse conASC (orden ascendente) y DESC (orden descendente). El valor predeterminado es ASC.

Page 23: Eejercicios Pantalla Inicial Del PgAdmin III

Facultad de Ciencias y Tecnologías –UNICAN Taller II (H.S)

Para formular una consulta a la tabla tCoches (creada en el capítulo de tablas) y recuperar los campos matricula, marca, modelo, color, numero_kilometros, num_plazas debemos ejecutar la siguiente consulta. Los datos serán devueltos ordenados por marca y por modelo en orden ascendente, de menor a mayor.

SELECT matricula, marca, modelo, color, numero_kilometros, num_plazas FROM tCoches ORDER BY marca,modelo;

La palabra clave FROM indica que los datos serán recuperados de la tabla tCoches. Podríamos haber especificado mas de una tabla, pero esto se verá en el apartado de consultas combinadas.

También podríamos haber simplificado la consulta a través del uso del comodín de campos, el asterisco "*".

SELECT * FROM tCoches ORDER BY marca,modelo;

El uso del asterisco indica que queremos que la consulta devuelva todos los campos que existen en la tabla.

La cláusula WHERE

Page 24: Eejercicios Pantalla Inicial Del PgAdmin III

Facultad de Ciencias y Tecnologías –UNICAN Taller II (H.S)

La cláusula WHERE es la instrucción que nos permite filtrar el resultado de una sentencia SELECT. Habitualmente no deseamos obtener toda la información existente en la tabla, sino que queremos obtener sólo la información que nos resulte util es ese momento. La cláusula WHERE filtra los datos antes de ser devueltos por la consulta.

En nuestro ejemplo, si queremos consultar un coche en concreto debemos agregar una cláusula WHERE. Esta cláusula especifica una o varias condiciones que deben cumplirse para que la sentencia SELECT devuelva los datos. Por ejemplo, para que la consulta devuelva sólo los datos del coche con maricula M-1525-ZA debemos ejecutar la siguiente sentencia:

Además, podemos utilizar tantas condiciones como queramos, utilizando los operadores lógicos AND y OR . El siguiente ejemplo muestra una consulta que devolverá los coches cuyas matriculas sean M-1525-ZA o bien M-2566-AA.

SELECT matricula, marca, modelo, color, numero_kilometros, num_plazas FROM tCoches WHERE matricula = 'M-1525-ZA' OR matricula = 'M-2566-AA' ;

Además una condición WHERE puede ser negada a través del operador lógico NOT. La siguiente consulta devolverá todos los datos de la tabla tCohes menos el que tenga matricula M-1525-ZA.

SELECT matricula, marca, modelo, color, numero_kilometros, num_plazas FROM tCoches WHERE NOT matricula = 'M-1525-ZA' ;

SELECT matricula, marca, modelo, color, numero_kilometros, num_plazas FROM tCoches WHERE matricula = 'M-1525-ZA';

Cuando en una cláusula where queremos incluir un tipo texto, debemos incluir el valor entre comillas simples.

Page 25: Eejercicios Pantalla Inicial Del PgAdmin III

Facultad de Ciencias y Tecnologías –UNICAN Taller II (H.S)

Podemos también obtener las diferentes marcas y modelos de coches ejecutando la consulta.

SELECT DISTINCT marca, modelo FROM tCoches;

La ver los valores distintos. En el caso anterior se devolveran lpalabra clave DISTINCT indica que sólo queremos os valores distintos del par formado por los campos marca y modelo.

La cláusula ORDER BY

Como ya hemos visto en los ejemplos anteriores podemos especificar el orden en el que serán devueltos los datos a través de la cláusula ORDER BY.

SELECT matricula, marca, modelo, color, numero_kilometros, num_plazas FROM tCoches ORDER BY marca ASC,modelo DESC;

Como podemos ver en el ejemplo podemos especificar la ordenación ascendente o descendente a través de las palabras clave ASC y DESC. La ordenación depende del tipo de datos que este definido en la columna, de forma que un campo númerico será ordenado como tal, y un alfanúmerico se ordenará de la A a la Z, aunque su contenido sea númerico. De esta forma el valor 100 se devuelve antes que el 11.

También podemos especificar el en la cláusula ORDER BY el índice númerico del campo dentro del la sentencia SELECT para la ordenación, el siguiente ejemplo ordenaría los datos por el campo marca, ya que aparece en segundo lugar dentro de la lista de campos que componen la SELECT.

SELECT matricula, marca, modelo, color, numero_kilometros,

Page 26: Eejercicios Pantalla Inicial Del PgAdmin III

Facultad de Ciencias y Tecnologías –UNICAN Taller II (H.S)

num_plazas FROM tCoches ORDER BY 2;

El resto de opciones que podemos especificar al construir sentencias SELECT se irán presentando en los siguientes capítulos de este tutorial.