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

Introduccin 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.

Diseo de base de datos

UTCD

1. Crear una Base de Datos: Clik derecho sobre Database y seleccionar la opcin 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 opcin delete/drop.., de la ventana Object browser y y seleccionamos la opcin SI del cuadro de dialogo, esta sentencia tambin sirve para borrar una tabla que veremos ms adelante.

Sentencia SQL: DROP DATABASE "Alquileres"

Diseo de base de datos

UTCD

3. Crea una tabla (Entidad)dentro de la Base de Datos Alquileres: clik sobre database alquileres, luego Clik sobre la opcin Schemas, Public, luego sobre tables de la ventana Object browser, all le damos clik derecho y elegir la opcin 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 opcin Schemas, Public, luego tables de la ventana Object browser, all le damos clik tables, clik derecho sobre columns y elegimos la opcin New columns.., le ponemos el nombre a la columna, el tipo de dato, la definicin 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;

Diseo de base de datos

UTCD

5. Crear Clave Primaria dentro de la tabla Barrio: Seguimos los mismos pasos anterior, clik sobre database alquileres, luego Clik sobre la la opcin Schemas, Public se ubica el iconos de tables y dentro Barrio, constraints , de la ventana Object browser, damos clik derecho a constraints, elegimos la opcin 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 opcin 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 opcin 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');

Diseo de base de datos

UTCD

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 opcin Schemas, Public se ubica el iconos de tables y dentro Barrio, constraints , de la ventana Object browser, damos clik derecho a constraints, elegimos la opcin 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 opcin 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 opcin 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); Diseo de base de datos UTCD

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 tambin 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_apellido like '%a%'; per_telefono from tb_persona where

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);
Diseo de base de datos UTCD

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 lneas 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 mnimo de una columna de una tabla.

select min(per_nro) as Vminimo from tb_persona;


18. MAX. Retorna el valor mximo de una columna de una tabla.

select max(per_nro) as Vminimo from tb_persona;

Diseo de base de datos

UTCD

FUNCIONES ESCALARES DE TEXTO


19. UPPER. Retorna en mayscula 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 funcin 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 funcin 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;

Diseo de base de datos

UTCD

Promedio de una columna o atributo.

select avg(per_id) from tb_persona group by per_activo;


INDICE
23. Es usado para agilizar la bsqueda de seleccin 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 creacin 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.

Diseo de base de datos

UTCD

Lenguaje SQL. Recursos


Lenguaje de Definicin de Datos DDL (Data Definition Language) Es un lenguaje proporcionado por el sistema de gestin de base de datos que permite a los usuarios de la misma, llevar a cabo las tareas de definicin de las estructuras que almacenarn los datos as como de los procedimientos o funciones que permitan consultarlos.

Lenguaje de Manipulacin de Datos DML (Data Manipulation Language) Es un lenguaje proporcionado por el sistema de gestin de base de datos que permite a los usuarios llevar a cabo las tareas de consulta o manipulacin 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 gestin 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.

Diseo de base de datos

UTCD

Lenguajes de Definicin de Datos DDL

Este comando crea un objeto dentro de la base de datos. Puede ser una tabla, vista, ndice, trigger, funcin, procedimiento o cualquier otro objeto que el motor de la base de datos soporte.
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 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_fornea] 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 ]

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] [, ] ;

Diseo de base de datos

UTCD

Crear una base de datos denominada db_agenda, cuyo propietario deber ser el usuario postgres, con codificacin UTF8, sin limite de conexin 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';

Diseo de base de datos

UTCD

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 per_documento per_nombre per_apellido per_telefono per_activo serial character varying (15) character varying (30) character varying (30) character varying (20) bolean valores nulos. nica con el campo

Los campos per_documento y per_nombre no debern permitir El campo per_activo tendr como valor predeterminado true. Crear una clave primaria con el campo per_id, y una clave

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) );

Diseo de base de datos

UTCD

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 situacin 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;

Diseo de base de datos

UTCD

Lenguajes de Definicin 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 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

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;

Accin ADD COLUMN Agregue la columna per_sexo a la tabla tb_persona, con las caractersticas 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';

Diseo de base de datos

UTCD

Accin ADD CONSTRAINT Agregue una restriccin 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.

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

Diseo de base de datos

UTCD

Lenguajes de Definicin de Datos - DDL


Este comando elimina un objeto de la base de datos. Puede ser una tabla, vista, ndice, trigger, funcin, procedimiento o cualquier otro objeto que el motor de la base de datos soporte. Se puede combinar con la sentencia ALTER.

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;

Elimine la vista vw_persona_01 y vuelva a crearla, incluyendo el campo per_id, en la primera posicin 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

Diseo de base de datos

UTCD

Lenguajes de Manipulacin de Datos - DML


Es un lenguaje proporcionado por el sistema de gestin de base de datos que permite a los usuarios llevar a cabo las tareas de consulta o manipulacin de los datos, organizados por el modelo de datos adecuado. Incluye las sentencias siguientes: Sentencia INSERT Inserta una columna en la tabla UPDATE Actualiza datos en la tabla DELETE Elimina columnas de la tabla SELECT Recupera columnas desde una tabla o vista Sintaxis INSERT INTO table [ ( column [, ...] ) ] { DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) [, ...] | query } [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ] 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 FROM [ ONLY ] table [ [ AS ] alias ] [ USING usinglist ] [ WHERE condition | WHERE CURRENT OF cursor_name ] [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ] 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 2343235 Pedro 3456765 Estela 4567544 Jose 1230005 Mariza Nombres Cantero Sanabria Leiva Vera Apellidos M F M F Sexo true true false true Activo

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);

Diseo de base de datos

UTCD

Selecciona de la tabla tb_persona el registro que cumpla la siguiente condicin: per_documento = 4567544

SELECT * FROM tb_persona WHERE per_documento = 4567544;

Toma el valor de per_id, retornado de la consulta anterior. Luego, actualiza el campo per_nombre con el dato Jos Ramn, cuando el per_id sea igual al valor del per_id recuperado. 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);

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

DELETE FROM tb_persona WHERE per_activo = false;

DELETE FROM tb_persona WHERE !per_activo;

Diseo de base de datos

UTCD

Lenguajes de Control de Datos - DCL


GRANT Define privilegios de acceso
El comando GRANT tiene dos variantes bsicas: una que otorga privilegios sobre una base de datos objeto (cuadro, columna, vista, secuencia, la base de datos, servidor extranjero, la funcin, 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 ms funciones. La palabra clave PUBLIC se refiere al grupo implcito 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 ]

Diseo de base de datos

UTCD

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';

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

CREATE ROLE nombre_usuario LOGIN VALID UNTIL 'infinity'; GRANT rl_abm TO nombre_usuario; Conceder permiso de SELECT, UPDATE, INSERT y DELETE, sobre la tabla tb_persona al rol de grupo rl_abm.

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;

Diseo de base de datos

UTCD

Lenguaje de manipulacin de datos (I) Consulta de datos, el proceso ms importante que podemos llevar a cabo en una base de datos es la consulta de los datos. De nada servira una base de datos si no pudiramos consultarla. Es adems la operacin que efectuaremos con mayor frecuencia. Para consultar la informacin SQL pone a nuestra disposicin 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 ALL Palabra clave que indica que la sentencia de SQL que queremos ejecutar es de seleccin. Indica que queremos seleccionar todos los valores.Es el valor por defecto y no suele especificarse casi nunca. Indica la tabla (o tablas) desde la que queremos recuperar los datos. En el caso de que exista ms de una tabla se denomina a la consulta "consulta combinada" o "join". En las consultas combinadas es necesario aplicar una condicin de combinacin a travs de una clusula WHERE. Especifica una condicin que debe cumplirse para que los datos sean devueltos por la consulta. Admite los operadores lgicos AND y OR. Especifica la agrupacin que se da a los datos. Se usa siempre en combinacin con funciones agregadas. Especifica una condicin que debe cumplirse para los datosEspecifica una condicin 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 condicin debe estar referida a los campos contenidos en ella. Presenta el resultado ordenado por las columnas indicadas. El orden puede expresarse conASC (orden ascendente) y DESC (orden descendente). El valor predeterminado es ASC.

DISTINCT Indica que queremos seleccionar slo los valores distintos. FROM

WHERE
GROUP BY

HAVING

ORDER BY

Diseo de base de datos

UTCD

Para formular una consulta a la tabla tCoches (creada en el captulo de tablas) y recuperar los campos matricula, marca, modelo, color, numero_kilometros, num_plazas debemos ejecutar la siguiente consulta. Los datos sern 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 sern recuperados de la tabla tCoches. Podramos haber especificado mas de una tabla, pero esto se ver en el apartado de consultas combinadas. Tambin podramos haber simplificado la consulta a travs del uso del comodn 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 clusula WHERE
Diseo de base de datos UTCD

La clusula WHERE es la instruccin que nos permite filtrar el resultado de una sentencia SELECT. Habitualmente no deseamos obtener toda la informacin existente en la tabla, sino que queremos obtener slo la informacin que nos resulte util es ese momento. La clusula WHERE filtra los datos antes de ser devueltos por la consulta. En nuestro ejemplo, si queremos consultar un coche en concreto debemos agregar una clusula WHERE. Esta clusula especifica una o varias condiciones que deben cumplirse para que la sentencia SELECT devuelva los datos. Por ejemplo, para que la consulta devuelva slo los datos del coche con maricula M-1525-ZA debemos ejecutar la siguiente sentencia:

SELECT matricula, marca, modelo, color, numero_kilometros, num_plazas FROM tCoches WHERE matricula = 'M-1525-ZA'; Cuando en una clusula where queremos incluir un tipo texto, debemos incluir el valor entre comillas simples.

Adems, podemos utilizar tantas condiciones como queramos, utilizando los operadores lgicos 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' ;

Adems una condicin WHERE puede ser negada a travs del operador lgico NOT. La siguiente consulta devolver todos los datos de la tabla tCohes menos el que tenga matricula M1525-ZA.

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

Diseo de base de datos

UTCD

Podemos tambin 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 slo queremos os valores distintos del par formado por los campos marca y modelo.

La clusula ORDER BY Como ya hemos visto en los ejemplos anteriores podemos especificar el orden en el que sern devueltos los datos a travs de la clusula 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 ordenacin ascendente o descendente a travs de las palabras clave ASC y DESC. La ordenacin depende del tipo de datos que este definido en la columna, de forma que un campo nmerico ser ordenado como tal, y un alfanmerico se ordenar de la A a la Z, aunque su contenido sea nmerico. De esta forma el valor 100 se devuelve antes que el 11. Tambin podemos especificar el en la clusula ORDER BY el ndice nmerico del campo dentro del la sentencia SELECT para la ordenacin, el siguiente ejemplo ordenara 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,

Diseo de base de datos

UTCD

num_plazas FROM tCoches ORDER BY 2;

El resto de opciones que podemos especificar al construir sentencias SELECT se irn presentando en los siguientes captulos de este tutorial.

Diseo de base de datos

UTCD

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