Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Taller 2 de MBD SQL 02062020

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 15

MODELADO DE BASE DE DATOS TALLER 2

Elementos Avanzados de BD y Modelado de BD

El objetivo de la presente Taller 2 es ir leyendo, ver los


ejemplos y realizar cada uno de los ejercicios que se van
presentando los cuáles deben ser explicados y mostrar
los resultados obtenidos en un documento aparte (Se
debe utilizar el SGBD Postgres). Una vez realizado cada
uno de los ejercicios los resultados ser enviados por
correo con los datos del participante.
CREATE DATABASE: Crea una nueva base de datos PostgreSQL. El creador se
transforma en el propietario de la nueva base de datos.
CREATE DATABASE nombre_base_de_Datos;
Para crear base de datos se requiere ser usuario administrador de base de datos (en
este caso postgres) o tener el privilegio especial CREATEDB

DROP DATABASE: Elimina una base de datos.


DROP DATABASE nombre_base_de_datos;

CREATE SCHEMA: Una base de datos contiene uno o más esquemas (schema), los
esquemas (schema) contienen objetos de base de datos como por ejemplo tablas. Para
definir un esquema (schema) sobre una base de datos se usa la sentencia CREATE
SCHEMA.

Un schema (esquema) es similar a un directorio a nivel de sistema operativo, es un


mecanismo de organización de información.

Ejemplo 1:

CREATE SCHEMA myschema;


La siguiente sentencia permite la creación de un objeto en un nuevo esquema (schema):

CREATE TABLE myma.mytable (


...
);
Para crear o acceder a objetos en un esquema (schema), se escribe un nombre calificado
que incluye el nombre del esquema (schema) y el nombre del objeto de base de datos
separado por un punto.

Ejercicio 1: Cree un es esquema utilizando la instrucción anterior, muestre el


resultado.

Ejemplo 2:

nombre_esquema.nombre_objeto

Profesor: Vladimir A Peña S. Correo: vladimirpenas@yahoo.es


MODELADO DE BASE DE DATOS TALLER 2

Elementos Avanzados de BD y Modelado de BD

DROP SCHEMA: Esta sentencia permite eliminar un esquema (schema) sí está vació
(todos los objetos han sido eliminados).

DROP SCHEMA myschema;

contiene:

DROP SCHEMA myschema CASCADE;

Ejercicio 2: Elimine un es esquema que haya creado utilizando la instrucción


anterior, muestre el resultado.

CREATE TABLE: Esta sentencia es utilizada para crear una tabla y definir columnas.
Sintaxis:

CREATE TABLE nombre_tabla( LIKE otra_tabla);


CREATE [ TEMPORARY | TEMP ] TABLE nombre_tabla (
nombre_columna tipo [restricción_columna[ ...
]][,...]
[, restricción_tabla [, ... ]]
);
restricción_columna:
[ CONSTRAINT nombre_restricción ]
{NOT NULL|NULL|UNIQUE|PRIMARY KEY|DEFAULT value|CHECK
(condición)|
REFERENCES nombre_tabla [ ( columna ) ]
[ ON DELETE CASCADE ] [ ON UPDATE CASCADE ]
}
restricción_tabla :
[ CONSTRAINT nombre_restricción]
{ UNIQUE (nombre_columna [, ... ] ) |
PRIMARY KEY (nombre_columna [, ... ] ) |
CHECK ( condición ) |
FOREIGN KEY (nombre_columna [, ... ] ) REFERENCES
nombre_tabla [ ( columna [, ... ] ) ]
[ ON DELETE CASCADE]
}
Restricciones:
NOT NULL (NO NULO)
Impide que columnas tengan valores nulos (NOT NULL)

NULL (NULO)
Indica que la columna puede contener valores nulos (NULL) (esta restricción está por
defecto).

Profesor: Vladimir A Peña S. Correo: vladimirpenas@yahoo.es


MODELADO DE BASE DE DATOS TALLER 2

Elementos Avanzados de BD y Modelado de BD

UNIQUE (UNICO)
Especifica que un grupo de una o más columnas de una tabla contienen valores únicos,
en una restricción único (unique) los valores nulos (NULL) no son iguales.

PRIMARY KEY (CLAVE PRIMARIA)


La restricción clave primaria (PRIMARY KEY) define que una columna o varias
columnas de una tabla deben contener un único valor (no duplicados) y valores no nulos
(NOT NULL).
Sobre una tabla sólo puede ser definida una clave primaria la cual puede ser simple o
compuesta.

CHECK (CHEQUEO)
La cláusula de chequeo (CHECK) especifica una expresión que produce un resultado
booleano (Boolean), de una inserción o actualización.
La condición en la cláusula de chequeo (CHECK) no puede contener subconsultas, ni
puede referenciar a variables ni a otra columna en una fila.

FOREIGN KEY (CLAVES FORÁNEAS)


REFERENCES o FOREIGN KEY
FOREIGN KEY (nombre_columna [, ... ] ) REFERENCES tabla [
( columna [, ... ] ) ]
[ ON DELETE CASCADE]

Esta cláusula especifica una restricción de clave foránea, la cual requiere que un grupo
de una o más columnas de una tabla, deben contener valores que están presentes en
otra tabla.

Además, cuando los datos referenciados son cambiados, ciertas acciones pueden
tomar lugar. La cláusula ON DELETE especifica la acción a ejecutar cuando una fila
referenciada es eliminada.

CASCADE
Elimina todas las filas referenciadas en otras tablas.

Ejemplo 3:

3.1)

CREATE TEMPORARY TABLE gastos(


id integer NOT NULL PRIMARY KEY,
motivo char(25),
fecha date,
monto decimal (10,2));

Ejercicio 3: Cree la Tabla Temporal utilizando anterior 3.1) , cual es el resultado.

TEMPORARY o TEMP
Tanto los datos como la estructura de las tablas temporales son eliminadas de manera
automática al terminar la sesión de usuario actual.

Profesor: Vladimir A Peña S. Correo: vladimirpenas@yahoo.es


MODELADO DE BASE DE DATOS TALLER 2

Elementos Avanzados de BD y Modelado de BD

3.2) CREATE TABLE


empleado(id serial,
nombre char(50),
salario numeric(9,2));

3.3) CREATE TABLE cliente


(
id_cliente INTEGER NOT NULL,
nombre CHAR(20),
PRIMARY KEY(id_cliente));

En los Sistemas de Gestión de Base de Datos como MySQL la restricción NOT NULL es
opcional cuando se especifica la columna como primary key (Está implícita con primary
key).

3.4) CREATE TABLE


copia_cliente(like
cliente);

Ejercicio 4: Ejecute las instrucciones mostradas en 3.2) y


3.3) y 3.4) explique cada una de ellas, muestre sus
resultados.

ÍNDICES

CREATE INDEX construye un índice sobre una tabla especificada. Los índices son
principalmente usados para mejorar el rendimiento de acceso a los datos.
Sintaxis:
CREATE [ UNIQUE ] INDEX nombre_indice ON
nombre_tabla(columnas);

Ejemplo 5

CREATE TABLE emp (id serial,


nombreemp char(50) UNIQUE,
salario numeric(9,2) NOT NULL,
nrotelefono CHAR(20),
moneda varchar(4) DEFAULT 'BLV');
CREATE UNIQUE INDEX telindex ON emp(nrotelefono);

En este ejemplo, se crea un índice llamado telindex sobre la tabla emp. El índice en
este ejemplo es usado para almacenar y ordenar valores únicos.

Ejercicio 5: Ejecute las instrucciones mostradas en el


Ejemplo 5 explique que se está haciendo, muestre sus
resultados.

Profesor: Vladimir A Peña S. Correo: vladimirpenas@yahoo.es


MODELADO DE BASE DE DATOS TALLER 2

Elementos Avanzados de BD y Modelado de BD

DROP INDEX:
Para eliminar un índice de una columna, se usa DROP INDEX

Sintaxis:

DROP INDEX nombre_indice [, ...]

Ejemplo 6:

DROP INDEX telindex;

Ejercicio 6: Ejecute las instrucciones mostradas en el


Ejemplo 6, explique cual es el resultado.

ALTER TABLE:

La sentencia ALTER TABLE es usada para ejecutar múltiples operaciones. Con ALTER
TABLE se puede agregar columnas, eliminar columnas, cambiar el tipo, etc.

Sintaxis:

Ejemplo 7:

Esta sentencia permite agregar una columna país del tipo VARCHAR(10) a la tabla

ALTER TABLE emp ADD COLUMN pais CHAR(10);


Si se desea seleccionar un valor por defecto para la columna, ejecute la siguiente
sentencia:

Ejercicio 7: Ejecute las instrucciones mostradas en el


Ejemplo 7, explique cual es el resultado.

Ejemplo 8:

ALTER TABLE emp ALTER COLUMN pais SET DEFAULT 'VNZ';

Con ALTER TABLE es posible cambiar el nombre de una tabla, el siguiente ejemplo lo
ilustra:

Ejercicio 8: Ejecute las instrucciones mostradas en el


Ejemplo 8, explique cual es el resultado.

Profesor: Vladimir A Peña S. Correo: vladimirpenas@yahoo.es


MODELADO DE BASE DE DATOS TALLER 2

Elementos Avanzados de BD y Modelado de BD

Ejemplo 9:

ALTER TABLE emp RENAME TO oldemp;

Las columnas también pueden ser renombradas:

ALTER TABLE oldemp RENAME COLUMN salario TO sal;


Cambiar el propietario de una tabla:

ALTER TABLE oldemp OWNER TO ibm_user;


Agregar una restricción de no nulo (NOT NULL) a número telefónico:
ALTER TABLE oldemp ALTER nrotelefono SET NOT NULL;
Otros ejemplos:

9.1) ALTER TABLE cliente


ADD COLUMN salario
INTEGER;

9.2) ALTER TABLE cliente


DROP COLUMN salario;

9.3) ALTER TABLE cliente


ADD COLUMN salario DOUBLE
PRECISION;

Ejercicio 9: Ejecute las instrucciones mostradas en el


Ejemplo 9, muestre y explique cada uno de los resultados
obtenidos.

DROP TABLE: La sentencia DROP TABLE permite eliminar una o más tablas de una
base de datos. Sólo el propietario de esta puede eliminar la tabla.

DROP TABLE remueve los índices, disparadores (triggers) y las restricciones que
existen sobre la tabla.
Sintaxis:

DROP TABLE nombre_tabla [, ...];

Ejemplo 10

DROP TABLE personal, asegurados;

Ejercicio 10: Explique el resultado de ejecutar la sentencia


del Ejemplo 10.

Profesor: Vladimir A Peña S. Correo: vladimirpenas@yahoo.es


MODELADO DE BASE DE DATOS TALLER 2

Elementos Avanzados de BD y Modelado de BD

INSERT: Sentencia usada para insertar datos en una tabla.

Sintaxis:
INSERT INTO nombre_tabla [ ( columna [, ...] ) ]
{ DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) |
Consulta_SELECT }
Es posible usar INSERT con SELECT para insertar muchas filas en una sola sentencia.
INSERT INTO nombre_tabla1 (col1,col2,...) SELECT
col1,col2,.. FROM nombre_tabla2;

Ejemplo 10.1

INSERT INTO cliente values (1,'Juancho',54121);


INSERT INTO cliente values (2, 'Luis',45687.25);
INSERT INTO cliente values (3,'Pedro',5487.54);
INSERT INTO cliente values (4,'Pedro',54877.59);
INSERT INTO cliente values (5,'Pedro',54875.25);
INSERT INTO cliente values (6,'Pablo',125478.25);
INSERT INTO cliente values (7,'Nelson',12657.36);
INSERT INTO cliente values (8,'Nelson',54875.25);
INSERT INTO cliente values (9,'Jesus',5647.25);
INSERT INTO cliente values (10,'Jesus',5487);
INSERT INTO cliente values (11,'Miguel',45877);
INSERT INTO cliente values (12,'Miguelina',45877);
INSERT INTO cliente values (13,'Pedrito',458377);

Ejercicio 10.1: Ejecute cada una de las instrucciones del


ejemplo 10.1, muestre el resultado.

CARGAR DATOS MASIVOS (COPY): Para cargar datos en una tabla desde un archivo
externo se usa el comando COPY. Este comando también puede ser utilizado para
copiar el contenido de una tabla a la salida estándar o llevar ese contenido a un archivo
externo.
Sintaxis:

COPY table
FROM { 'filename' | stdin }
[ [USING] DELIMITERS 'delimiter' ]
COPY table
TO { 'filename' | stdout }
[ [USING] DELIMITERS 'delimiter' ]
Por defecto, el delimitador de columnas es la tabulación (\t) y el delimitador de filas o
registros es el salto de línea [enter (\n)].

Ejemplo 11:

Copiar el contenido de una tabla en la salida estándar (pantalla):


COPY cliente TO STDOUT WITH DELIMITER ';' ;

Profesor: Vladimir A Peña S. Correo: vladimirpenas@yahoo.es


MODELADO DE BASE DE DATOS TALLER 2

Elementos Avanzados de BD y Modelado de BD

Ejercicio 11: Ejecute cada una de las instrucciones del


ejemplo 11, muestre el resultado.

Copiar el contenido de una tabla en un archivo:


COPY cliente TO '/home/db2admin/tabla.txt';
(La ruta usada /home/db2admin puede cambiar, recuerde que db2admin es un usuario
del sistema operativo).
Liste el contenido del archivo tabla.txt.
Ejercicio 11.1: Ejecute cada una de las instrucciones del
ejemplo anterior, muestre el resultado.
Copiar el contenido de un archivo en una tabla:
El archivo contiene los siguientes datos (cliente.txt):
15 José Pérez 2545.45
16 Luís Marín 5487.78
17 Pedro Feliz 5487.78

UPDATE: La sentencia UPDATE es usada para actualizar valores de columnas de una


tabla. La cláusula SET indica cuál o cuáles columna(s) va(n) a ser modificada(s) y
el(los) nuevo(s) valor(es).
La cláusula WHERE es usada para especificar las filas que van a ser afectadas.
Sintaxis:
UPDATE nombre_tabla
SET nombrecol1=valor, [nombrecol2=valor, ...]
[WHERE Condición]

Ejemplo 12:

UPDATE cliente
SET nombre='Luis'
Where id_cliente=1;

DELETE: La sentencia DELETE es usada para eliminar registros de una tabla.


Sintaxis:
DELETE FROM table [ WHERE condición ]
Ejemplo:
DELETE FROM cliente WHERE id_cliente=5;
que procesa la tarea rápidamente, esta es TRUNCATE:
Sintaxis:
TRUNCATE [ TABLE ] nombre_tabla

Ejercicio 12: Ejecute cada una de las instrucciones del


ejemplo 12, muestre el resultado.

Ejemplo 13 :

Profesor: Vladimir A Peña S. Correo: vladimirpenas@yahoo.es


MODELADO DE BASE DE DATOS TALLER 2

Elementos Avanzados de BD y Modelado de BD

TRUNCATE TABLE emp;

Realice la siguiente actividad

13.1) Cree la siguiente tabla

CREATE TABLE personal(


no_personal INTEGER NOT
NULL PRIMARY KEY,
nombre_personal
VARCHAR(20),
cargo VARCHAR(20),
salario DOUBLE PRECISION,
no_division INTEGER );

CREATE TABLE automovil(


serial_motor INTEGER NOT
NULL PRIMARY KEY, placa
VARCHAR(10),
marca VARCHAR(20), modelo
VARCHAR(20), año
VARCHAR(4), kilometraje
VARCHAR(20), no_personal
INTEGER,
FOREIGN KEY (no_personal)
REFERENCES
personal(no_personal) );

13.2) Ejecute las siguientes sentencias de inserción de datos en las tablas antes creadas:

INSERT INTO personal values


(1,'DOUGLAS BRAVO','ANALISTA',5487.36,1);
INSERT INTO personal values
(2,'MARCO DIPOTO','GERENTE DIVISION',58795.54,1);
INSERT INTO personal values
(3,'ENMANUEL GIVA','COORDINADOR',345766.58,2);
INSERT INTO personal values
(4,'JOSE RUBIO', 'ANALISTA',98574.54,3);
INSERT INTO personal values
(5,'RUBEN GAVIRIA','DIRECTOR',87547.5,4);
INSERT INTO personal values
(6,'JOSE FREITES','JEFE DEPART',7854.34,5);
INSERT INTO personal values
(7,'NELSON ARIAS','COORDINADOR',566567.4,5);
INSERT INTO personal values
(8,'DIEGO PINEDA','GERENTE DIVISION',56784.98,2);
INSERT INTO personal values
(9,'MIREYA VILLEGAS','JEFE DEPART',5687.25,3);
INSERT INTO personal values

Profesor: Vladimir A Peña S. Correo: vladimirpenas@yahoo.es


MODELADO DE BASE DE DATOS TALLER 2

Elementos Avanzados de BD y Modelado de BD

(10,'SEVASTIAN PINEDA','DIRECTOR', 56875.25,4);

INSERT INTO automovil values (123456,'AAA-


12A','CHEVROLET','IMPALA','2001','10000 KM',5);
INSERT INTO automovil values (123457, 'AAA-
13A','CHEVROLET', 'TRAIL-BLAZER', '2004', '100 KM',2);
INSERT INTO automovil values (123458, 'AAA-
14A','CHEVROLET', 'OPTRA', '2005', '3500 KM',6);
INSERT INTO automovil values (123459, 'AAA-
15A','CHEVROLET', 'GRAN VITARA', '2003', '15000 KM',8);
INSERT INTO automovil values (123587, 'AFA-12A','FORD',
'EXPEDITION', '2005', '10 KM',10);
INSERT INTO automovil values (123588, 'AFA-13A','FORD',
'FOCUS', '2006', '3 KM',9);

Ejercicio 13: Ejecute cada una de las instrucciones del


ejemplo 13 explique cual es el resultado, realice las
actividades 13.1) y 13.2) y muestre los resultados .

Ejemplo 14:

SELECT automovil.no_personal,placa,marca,modelo,año,kilometraje
FROM personal INNER JOIN automovil ON
(personal.no_personal=automovil.no_personal);

En el ejemplo anterior la columna no_personal existe en las dos tablas, por lo tanto se
debe colocar el nombre de la tabla de donde se va a extraer la información, existe una
sintaxis alternativa que permite obtener el mismo resultado sin tener que especificar las
columnas en la condición.
SELECT * FROM personal NATURAL JOIN automovil;

Ejercicio 14: Ejecute cada una de las instrucciones del


ejemplo 14, muestre el resultado.

Profesor: Vladimir A Peña S. Correo: vladimirpenas@yahoo.es


MODELADO DE BASE DE DATOS TALLER 2

Elementos Avanzados de BD y Modelado de BD

RIGHT OUTER JOIN: La sentencia Right Outer JOIN hace corresponder los registros
de la tabla del lado derecho con los registros de la tabla del lado izquierdo basándose
en la igualdad de valores que se especifica en la condición JOIN. Además, también
incluye aquellos registros presentes en la tabla del lado derecho que no están
asociados con los registros de la tabla del lado izquierdo.
Este tipo de JOIN es llamado Right Outer JOIN porque el valor de la columna de la tabla
del lado derecho es la base con la cual se realiza la comparación y la operación JOIN.
Si no hay valor asociado, se muestra el valor NULL.

Ejemplo 15:

SELECT * FROM personal RIGHT OUTER JOIN automovil ON


(personal.no_personal=automovil.no_personal);

Puede ser escrito como:


SELECT * FROM personal RIGHT OUTER JOIN automovil
USING(no_personal);

Ejercicio 15: Ejecute cada una de las instrucciones del


ejemplo 15, muestre el resultado.

LEFT OUTER JOIN: La sentencia Left Outer JOIN hace corresponder los registros de
la tabla del lado izquierdo con los registros de la tabla del lado derecho, basándose en
la igualdad de valores que es especificada en la condición JOIN. Además, también
incluye aquellos registros presentes en la tabla del lado izquierdo, que no están
asociados con los registros de la tabla del lado derecho.
Este tipo de JOIN es llamado Left Outer JOIN porque el valor de la columna de la tabla
del lado izquierdo es la base con la cual se realiza la comparación y la operación JOIN.
Para hacer la correspondencia de los registros de la segunda tabla, si no se puede
realizar la equivalencia de los valores, se muestra un valor NULL.

Ejemplo 16:

SELECT * FROM personal LEFT OUTER JOIN automovil ON


(personal.no_personal=automovil.no_personal);
Puede ser escrito como:
SELECT * FROM personal LEFT OUTER JOIN automovil USING
(no_personal);

Ejercicio 16: Ejecute cada una de las instrucciones del


ejemplo 16, muestre el resultado.

Profesor: Vladimir A Peña S. Correo: vladimirpenas@yahoo.es


MODELADO DE BASE DE DATOS TALLER 2

Elementos Avanzados de BD y Modelado de BD

Usuarios y Privilegios
Cada cluster de base de datos contiene un conjunto de usuarios de base de datos. Un
usuario es propietario de un objeto de base de datos (por ejemplo: una tabla) y puede
otorgar privilegios sobre estos objetos a otros usuarios.

Para crear un usuario se utiliza la sentencia SQL CREATE USER:

CREATE USER name [WITH opción];


Opción

CREATEDB: Puede crear base de datos

CREATEUSER: Puede crear usuarios

Para remover un usuario existente, se usa el comando DROP USER:


DROP USER name;

Consultando la tabla pg_user se obtienen los usuarios existentes.


SELECT usename FROM pg_user;

El metacomando \du ejecutado desde la línea de comandos del psql lista los usuarios
de base de datos disponibles.

Grupos: Los grupos son una manera lógica de agrupar usuarios para administración
sencilla de privilegios, los privilegios pueden ser otorgados o revocados a todo un
grupo. Para crear un grupo se emplea el comando CREATE GROUP.
CREATE GROUP name;

Con la sentencia ALTER es posible agregar o eliminar usuarios de un grupo:


ALTER GROUP name ADD USER uname1, ... ;

ALTER GROUP name DROP USER uname1, ... ;


Para eliminar un grupo (no elimina los miembros del grupo), use el comando DROP
GROUP:

DROP GROUP name;

Examinando la tabla pg_group es posible obtener los grupos de usuarios disponibles.

SELECT groname FROM pg_group;

El metacomando \dg ejecutado desde la línea de comandos del psql lista los grupos de
usuarios de base de datos disponibles.

Privilegios: Los privilegios no son más que derechos que reciben usuarios sobre
objetos de base de datos, estos derechos permiten realizar operaciones diversas como
por ejemplo: eliminar datos de tablas, crear tablas, definir restricciones, etc.
El propietario de un objeto es generalmente el usuario que ejecutó la sentencia de

Profesor: Vladimir A Peña S. Correo: vladimirpenas@yahoo.es


MODELADO DE BASE DE DATOS TALLER 2

Elementos Avanzados de BD y Modelado de BD

creación, es posible otorgar privilegios sobre objetos de base de datos a otros usuarios,
esto se realiza haciendo uso del comando GRANT, algunos de los privilegios que
pueden ser otorgados y revocados son: SELECT, INSERT, UPDATE, DELETE,
REFERENCES, TRIGGER, CREATE y TEMPORARY.

etc.) sobre un objeto de base de datos a uno o más usuarios.

GRANT { { SELECT | INSERT | UPDATE | DELETE | RULE |


REFERENCES | TRIGGER }
[,...] | ALL [ PRIVILEGES ] }
ON [ TABLE ] nombre_tabla [, ...]
TO { usuario | GROUP nombre_grupo | PUBLIC } [, ...] [
WITH GRANT OPTION ]
GRANT { { CREATE | TEMPORARY | TEMP } [,...] | ALL [
PRIVILEGES ] }
ON DATABASE basededatos [, ...]
TO { usuario | GROUP nombre_grupo | PUBLIC } [, ...] [
WITH GRANT OPTION ]

La palabra PUBLIC indica que el privilegio es otorgado a todos los usuarios disponibles,
incluyendo aquellos que sean creados posteriormente.

Si WITH GRANT OPTION es especificado, el usuario que recibe el privilegio podría


otorgarlo a otros usuarios, “grant options” puede ser solamente otorgado a usuarios
individuales no a grupos o a PUBLIC.
Algunos de los posibles privilegios son listados abajo:

SELECT: Permite extraer información de una tabla o vista.


INSERT: Permite ingresar una nueva fila a una tabla.
UPDATE: Permite actualizar datos de una tabla.
DELETE: Permite eliminar una fila de una tabla.
REFERENCES: Para crear claves foráneas, es necesario tener este privilegio en
ambas tablas referenciadas.
TRIGGER: Permite la creación de disparadores en una tabla.
CREATE: Para base de datos permite la creación de nuevos schemas
(esquemas). Para schemas (esquemas) permite la creación de nuevos objetos.
TEMPORARY o TEMP: Permite crear tablas temporales mientras se usa una
base de datos.
ALL PRIVILEGES: Otorga todos los privilegios disponibles.

Ejemplos:

Otorgar el privilegio INSERT sobre la tabla cinta a todos los usuarios:


GRANT INSERT ON cinta TO PUBLIC;
Otorgar todos los privilegios disponibles al usuario marcos sobre la tabla monitores:
GRANT ALL PRIVILEGES ON monitores TO marcos;

Profesor: Vladimir A Peña S. Correo: vladimirpenas@yahoo.es


MODELADO DE BASE DE DATOS TALLER 2

Elementos Avanzados de BD y Modelado de BD

Características Avanzadas de PostgreSQL


Vistas: PostgreSQL soporta la definición de vistas (view), las vistas en sí no son tablas
físicas, generalmente se usan vistas para restringir el acceso a la información.

Ejemplo 17:

CREATE VIEW mi_personal AS


SELECT no_personal, nombre_personal, no_division
FROM personal;
SELECT * FROM mi_personal;

Hacer uso de vistas es un aspecto clave de un buen diseño de base de datos. Las
vistas permiten encapsular los detalles de la estructura de las tablas.

Herencia: La herencia es una característica de los manejadores de base de datos


orientados a objetos, permite la reutilización de código, es decir definir la estructura de
una tabla a partir de una ya creada.

Ejercicio 17: Ejecute cada una de las instrucciones del


ejemplo 17, muestre el resultado.

A continuación se presenta el siguiente ejemplo:

Ejemplo 18

Cree dos tablas: ciudades y capitales. Las capitales son ciudades, así si se quiere
mostrar las capitales, implícitamente se están listando ciudades:

CREATE TABLE ciudades (


nombre text,
cantidadpoblacion integer,
codigoarea varchar(4),
pais varchar(20),
estado varchar(20),
capital boolean
);

Si se desea consultar todas las ciudades, se construye la siguiente vista para obtener la
información:

CREATE VIEW vista_ciudades AS

Profesor: Vladimir A Peña S. Correo: vladimirpenas@yahoo.es


MODELADO DE BASE DE DATOS TALLER 2

Elementos Avanzados de BD y Modelado de BD

SELECT nombre, codigoarea, pais, estado FROM ciudades;


Si se quiere obtener sólo las ciudades que son capitales es posible construir otra vista
para obtener el resultado:
CREATE VIEW vista_capitales AS
SELECT nombre, codigoarea, pais, estado FROM ciudades
WHERE

Ejercicio 18: Ejecute cada una de las instrucciones del


ejemplo 18, muestre el resultado.

Profesor: Vladimir A Peña S. Correo: vladimirpenas@yahoo.es

También podría gustarte