LABORATÓRIO DE BANCO DE DADOS
DCL – LINGUAGEM DE CONTROLE DE DADOS
A DCL – Linguagem de controle de Dados é a sub-linguagem da SQL que disponibiliza
comandos para controlar o acesso a dados em um ambiente de SGBD.
Nas descrições abaixo as palavras entre colchetes representam parâmetros opcionais
1 - CREATE USER
Este comando permite criar um usuário para que este tenha acesso ao SGBD. No postgres
este comando tem o mesmo efeito de create role ( comando que será vista abaixo) nas versões
recentes de SGBD não existe mais o "user" , somente o "role" . Ao executar o comando "create
user" o postegres cria um "role".
Sintaxe:
Create user nom_usuario [ WITH opções]
As opções variam de SGBD para SGBD
Exemplo no postgres:
CREATE USER sidney WITH PASSWORD 'abcd'
Cria o usuario sidney com senha abcd
CREATE USER user_sidney WITH LOGIN PASSWORD 'abbcd' VALID UNTIL '2008-01-01'
Cria o usuario sidney que possui permissão de efetuar login com senha abcd , valido até
'2008-01-01'
CREATE USER sidney WITH PASSWORD 'abcd' CREATEDB
Cria o usuario sidney com senha abcd , que tem permissão para criar base de dados
CREATE USER sidney WITH PASSWORD 'abcd' CREATEUSER
Cria o usuario sidney com senha abcd , que tem permissão para criar usuários
CREATE USER sidney WITH PASSWORD 'abcd' SUPERUSER
Cria o usuario sidney com senha abcd , que tem poderes de superusuario
2 - CREATE VIEW
Este comando permite a criação de uma visão que envolve dados de uma ou mais tabelas
do banco de dados. A visão passa a ser tratado, pelo usuário final como uma tabela, porém ela
não retem dados ela obtem os dados no momento da consulta com o select descrito na criação da
visão
Sintaxe:
CREATE VIEW nome_visao [( nome_do_campo [, ...] ) ]
Nota de Aula
Prof. Sidney Vieira
1
AS SELECT Tabi.campo1, Tabk.campo2, ... Tabj.campon
FROM Tabi, Tabk , Tabj
[WHERE <condições>];
Obs: Os nomes dos campos na visão são opcionais caso queira que os campos da visão tenha m
os mesmos nomes das respectivas tabelas basta omitir a declaração.
exemplo:
Criação de visão sem definição de campos
CREATE VIEW func_dep
AS SELECT f.nome_func, d.nome
FROM funcionario f, departamento d
WHERE f.cod_depto = d.cod_depto;
Criação de visão com definição de campos
CREATE VIEW func_dep(nome, departamento)
AS SELECT f.nome_func, d.nome
FROM funcionario f, departamento d
WHERE f.cod_depto = d.cod_depto;
Para usar visão basta fazer o select tratando a visão como uma tabela
select na visão sem definição de campos
select na visão com definição de campos
select * from func_dep
select * from func_dep
select f.nome_fun
from func_dep
select nome
from func_dep
3 - GRANT
O comando GRANT f tem por objetivo permite que o proprietário( usuário que cria a base
de dados por meio do comando CREATE DATABASE) de uma base de dados dê acesso a base
a outros usuários.
Tipos de concessão de acessos:
• manipulação de tabelas e visões
• execução de trigger e stored procedure
Manipulação de tabelas e visões
Sintaxe:
GRANT privilegio1, …, privilegion on tablename1 , …, tablenamen to user1 , user2…, usern
Os privilégios são: select, insert, delete, update [col,col..], references e all
Update é o privilégio para atualizar uma tabela que pode, opcionalmente, ser restringido para
uma ou mais colunas da tabela.
Nota de Aula
Prof. Sidney Vieira
2
references é o privilégio que permite definir numa outra tabela, uma chave estrangeira para
a Chave Primária da tabela em questão.
all – representa todos os 5 privilégios acima
Os users descrevem um ou usuários do SGBD. Se é usado public significa: todos os usuários
do sistema SGBD.
Exemplos:
grant all on funcionario to public
(todos os usuarios cadastrados no SGBD possuem os 5 privilégios)
grant delete on funcionario to user23
(o usuário user23 possui privilegio para eliminar linhas da tabela projeto)
grant update nome_fun on funcionario to Sidney
(o usuário Sidney pode atualizar a coluna nome_fun da tabela funcionario)
grant select, insert, update, delete on departamento user12;
grant references on funcionario to user22
(O usuário user22 pode definir Chave Estrangeira em sua(s) tabelas(s) referenciando a
Chave Primária de Funcionario)
Execução de procedure e trigger
Para que usuários possam executar uma stored procedure o seu criador deve conceder o
privilégio de execução dessa stored procedure a esses usuarios.deevndo para isto dar a
instrução:
grant execute on procedure1, ... , proceduren to user1 , user2.,..., usern
Para que outras stored procedures ou triggers possam chamar a stored procedure procname o
criador de procname deve dar a instrução:
grant execute on procname to otherprocname(s) | triggername(s)
Para permitir que uma stored procedure ou trigger possa executar operações de
acesso/atualização sobre uma tabela o criador da tabela ou o criador da stored procedure, deve
dar a instrução:
grant privilegio1, … , privilegion on tablename to procedure nome_procedure
4 - ROLE
O comando ROLE faz parte da DCL - DATA CONTROL LANGUAGE, uma sub-linguagem
da DML da SQL.
Role representa um papel que usuários podem assumir no acesso ao SGBD. Este papel é
criado atribuindo um conjunto de privilégio(s) para uma ou mais tabelas ou visões e deve ser
concedido,via comando Grant, a um ou mais usuários.
Etapas para criação de um ROLE:
1.Create role nome_role
2.Grant privilegio(s) on tabela(s) to nome_role
3.Grant nome_role(s) to user(s)
Nota de Aula
Prof. Sidney Vieira
3
Obs:
Usuário ao se conectar a uma base de dados pode especificar o rolename desejado
EX:
Create role gerente
Grant select, insert on funcionario, departamento to gerente
Grant gerente to sidney, joao, pedro
5 - REVOKE
o comando Revogação de privilégios, revoga privilégios fornecidos por meio do comando Grant
e feita pelo comando revoke.
Sintaxe:
REVOKE privilegio1, …, privilegion on tablename1 , …, tablenamen from user1 , user2…,
usern
Exemplo:
revoke delete on projeto from user23
Obs:
neste caso o comando: Grant delete on projeto to user23 deve ter sido dado
anteriormente.
Restrição sobre revogação de privilégios:
•
Apenas o usuário que concede privilégio(s) (via grant ) pode revogá-lo(s) de um ou
mais usuários.
Nota de Aula
Prof. Sidney Vieira
4
Download

SQL-DCL ( linguagem de Controle de Dados)