01 - SQL - Exercícios

fevereiro 21, 2019


Linha de Comandos SQL


Exercício:
Crie dois usuários, garanta direitos à eles, e, faça com que eles possam ver e inserir dados na tabela um do outro.


Bora lá?


Passo 1
Inicie sua database.


Passo 2
Conecte-se na linha de comando:
conn system/system;


Beleza, mas o que esse comando significa? Isto:
CONECTE(-se à) usuárioX/senhaTal;


Passo 3
Crie usuário e senha:
CREATE USER camila IDENTIFIED BY senhaDaCamila;
CREATE USER bruno IDENTIFIED BY senhaDoBruno;


Beleza, mas o que esse comando significa? Isto:
CRIE USUÁRIO camila IDENTIFICADA POR senhaTal;


Passo 4
Garanta direitos à eles, para que possam se conectar e criar na database:
GRANT CONNECT, RESOURCE TO camila;
GRANT CONNECT, RESOURCE TO bruno;


Beleza, mas o que esse comando significa? Isto:
CONCEDA (permissão de) CONECTIVIDADE, RECURSOS PARA camila;


Passo 5
Crie a tabela para cada um deles:
CREATE TABLE camila.tabelaX(col1 varchar(10));
CREATE TABLE bruno.tabelaY(col1 varchar(10));


Beleza, mas o que esse comando significa? Isto:
CONCEDA (permissão de) CONECTIVIDADE, RECURSOS PARA camila;


Perceba que, usamos o nome de usuário seguido de um ponto e então o nome da tabela que queremos criar!


Passo 6
Dê direitos para que eles possam ver e inserir dados na tabela um do outro:
GRANT SELECT, INSERT ON camila.tabelaX TO bruno;
GRANT SELECT, INSERT ON bruno.tabelaX TO camila;


Beleza, mas o que esse comando significa? Isto:
CONCEDA (permissão de) SELECIONAR, INSERIR EM bruno.tabelaX PARA camila;


- BÔNUS -
E caso seja necessário retirar direitos de alguém inserir dados em uma tabela? Use o REVOKE. Como? Siga o Yoda:


REVOKE INSERT ON tabelaX FROM camila;
Beleza, mas o que esse comando significa? Isto:
RETIRE (permissão de) INSERIR NA tabelaX DA camila;




---


Beleza, mas se tiver um monte de gente e queira dar permissão para todos. Vou ter que fazer as permissões um a um? Não necessariamente. Você pode criar uma ROLE, que nada mais é do que um papel/função onde todos que estão ali têm as mesmas permissões e por aí vai. Mas tu também podes  fazer o processo um a um caso esteja muito disposto ou queira dormir com um jeito diferente de contar ovelhas ¯\_(ツ)_/¯ .


Passo 1
Crie uma ROLE:
CREATE ROLE aula;
Beleza, mas o que esse comando significa? Isto:
CRIE ROLE(papel/função) aula;


Passo 2
Garanta que a ROLE possa fazer algo:
GRANT CONNECT, RESOURCE TO aula;
Beleza, mas o que esse comando significa? Isto:
CONCEDA (permissão de) CONECTIVIDADE, RECURSOS PARA aula;


Passo 3
Coloque os usuários na ROLE:
GRANT aula TO camila;
Beleza, mas o que esse comando significa? Isto:
CONCEDA aula PARA camila;




Os próximos comandos, dependem do que você quer. Mas, a ideia da ROLE, é que, dada determinada função, todo mundo que está naquela ROLE, devem fazer a mesma coisa. Como se fosse uma patotinha de intervalo escolar. Por falar em patotinha...


 Exemplo lúdico:
 Ana está no rolê com a patotinha do Balão. Ana não pode saber de porra nenhuma que está acontecendo no rolê da patotinha do Limão porque está no rolê com a patotinha do Balão.


Agora, bora dar um rolê com os roles?


~ ROLÊ com EXERCÍCIOS ROLE ~

Crie uma role chamada TESTE_AULA, e, atribua a esta role o direito de SELECT, INSERT, UPDATE e DELETE na tabela TABELA_1 do USER_1.


Passo 1

CREATE ROLE teste_aula;
CREATE USER user_1 IDENTIFIED BY senhaQualquer;


Passo 2
GRANT SELECT, INSERT, UPDATE, DELETE ON  user_1.tabela_1 TO teste_aula;


Crie um usuário novo na base, e, conceda a ROLE criada para ele. Escreva os comandos para testar as funcionalidades.


Passo 3
CREATE USER newUser IDENTIFIED BY senhaQualquer;
GRANT CONNECT, teste_aula TO newUser;


Passo 4
CONN newUser/senhaQualquer;


Logado como USER_1 crie a tabela EMPREGADO, com os seguintes dados:
IDEMPREGADO: numeric (10)
NOME_EMP: varchar(50)
FUNCAO: varchar(20)
SALARIO: numeric(10.2)


Passo 5
Logar com o user_1:
CONN user_1/senhaQualquer;


Passo 6
Criar tabela com os dados:
CREATE TABLE empregado (IDEMPREGADO numeric(10) NOT NULL, NOME_EMP varchar(50) NOT NULL, FUNCAO varchar(20), SALARIO numeric(10,2));


Passo 7
Adicione a primary key (vulgo PK):
ALTER TABLE user_1.empregado ADD PRIMARY KEY (IDEMPREGADO);

Crie uma VIEW chamada EMPREGADOS com todas as colunas da tabela EMPREGADO, menos o salário.


Para criar uma view, tu precisa dar privilégio para o user_1. Para tal, entre como adm e conceda ao user_1 esse direito:
CONN system/system;
GRANT CREATE VIEW TO user_1;


Passo 8
Crie a view:
CREATE VIEW user_1.empregados AS
SELECT IDEMPREGADO, NOME_EMP, FUNCAO
FROM empregado;


Para conferir se foram criadas, use:
SELECT VIEW_NAME FROM USER_VIEWS;




Conceda SELECT na VIEW EMPREGADOS para a ROLE TESTE_AULA


Passo 9
GRANT SELECT ON empregados TO teste_aula




E é isso aê, obrigada pelos peixes e até mais ;)

You Might Also Like

0 comentários

Obrigada por dar seu feedback ;)

Popular Posts

Like us on Facebook

Flickr Images