SQL
Linguagem de Definição de Dados
Profa. Maria Camila Nardini Barioni
camila.barioni@ufabc.edu.br
Bloco B - sala 937
Pós-graduação em Ciência da Computação
CCM-202 Sistemas de Banco de Dados
2° quadrimestre de 2011
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 22
SQL
Structured Query Language
2
Desenvolvida e implementada pelo
laboratório de pesquisa da IBM em San
Jose – final da década de 60 e início da
década de 70
Inicialmente chamada de SEQUEL
(
Structured English QUEry Language
)
Criada como interface entre usuários e
o primeiro SGBDR – SYSTEM R
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 3
SQL
Structured Query Language
Uma das mais importantes linguagens
relacionais (se não a mais importante)
Exemplos de SGBD que utilizam SQL
• Oracle
• Informix
• Ingress
• SQL Server
• Interbase
• SyBase
• DB2
• MySQL
• PostgreSQL
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 4
SQL
Structured Query Language
Atrativo: pequena quantidade de
comandos para realizar todas as
operações necessárias para definição e
manipulação de relações
Simplicidade
Grande poder de consulta
Padrão facilita migração
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 5
SQL
Structured Query Language
O padrão SQL
American National Standard Institute
(ANSI) e
International Organization for
Standardization
(ISO)
Versão mais recente: SQL3 (SQL99)
Principalmente conceitos de orientação a objetos
Versões anteriores
SQL2 (SQL92)
SQL1 (SQL86)
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 6
Composição do SQL
Linguagem de Definição dos Dados (DDL)
comandos para a definição, a modificação e aremoção de relações, além da criação e da remoção de índices
Linguagem Interativa de Manipulação dos
Dados (DML)
comandos para a consulta, a inserção, a remoção e a modificação de tuplas no banco de dados
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 7
Composição do SQL
Linguagem de Manipulação dos Dados
Embutida
pode ser utilizada a partir de linguagens de programação de propósito geral
Definição de visões
SQL DDL inclui comandos para a criação e a remoção de visões
Restrições de integridade
SQL DDL possui comandos para a especificação de restrições de integridade
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 8
Composição do SQL
Autorização
SQL DDL inclui comandos para a especificação de direitos de acesso a relações e visões
Gerenciamento de transações
introduz comandos para a especificação do início e do fim das transações
Recuperação de falhas
introduz comandos para utilização do arquivo de log
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 9
SQL DDL
CREATE DATABASE | SCHEMA
cria um esquema de BD relacional
DROP DATABASE | SCHEMA
remove um esquema de BD relacional
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 10
CREATE DATABASE
Cria um esquema de BD relacional
agrupa as tabelas e outros comandos que
pertencem à mesma aplicação
identifica o proprietário do esquema
Característica
o esquema inicial não possui tabelas/dados
CREATE {DATABASE | SCHEMA} nome[USER `username` [PASSWORD `password`] ] ... ;
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 11
DROP DATABASE
Remove um esquema de BD relacional
tabelas/dados
índices
arquivos de log
Usuários autorizados
proprietário do banco de dados
DBA ou usuário com privilégio de
root
DROP DATABASE {DATABASE | SCHEMA} nome[CASCADE | RESTRICT] ;
quaisquer elementos associados
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 12
CASCADE
remove um esquema de BD, incluindo
todas as suas tabelas e os seus outros
elementos
RESTRICT
remove um esquema de BD somente se
não existirem elementos definidos para
esse esquema
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 13
SQL DDL
CREATE TABLE
cria uma nova tabela (relação) no BD a nova tabela não possui dados
DROP TABLE
remove uma tabela (relação) e todas as suas instâncias do BD
ALTER TABLE
altera a estrutura de uma tabela (relação) já existente no BD
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 14
CREATE TABLE
Cria uma nova tabela (relação)
Cria os atributos da nova tabela, com
nome do atributo: A
i(1
≤
i
≤
n)
tipo de dado (domínio do atributo): D
irestrições que atuam no atributo: R
iCREATE TABLE nome_tabela ( A1 D1 R1,
A2 D2 R2,
...
An Dn Rn) ;
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 15
Exemplos de Tipos de Dados
Numéricos
smallint | integer | float | double precision decimal | numeric
Hora/Data
date | time | timestamp Booleano
TRUE/FALSE ou UNKNOWN Cadeias de Caracteres
char | character | varchar | ... Outros
blob
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 16
Restrições de Integridade
Atributo
Valor nulo
representado por NULL membro de todos os domínios
Restrição NOT NULL
especificada quando NULL não é permitido proíbe que o atributo receba valor nulo
Comparações
usar IS NULL e IS NOT NULL
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 17
Restrições de Integridade
Atributo
Cláusula DEFAULT
associa um valor default para um atributo, caso nenhum outro valor seja especificado
Cláusula CHECK
especifica um predicado que precisa ser satisfeito por todas as tuplas de uma relação
exemplos
saldo int CHECK (saldo >= 0)
nível char(15) CHECK (nível IN
(`Bacharelado`,`Mestrado`, `Doutorado`))
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 18
Restrições de Integridade
Chave
Cláusula PRIMARY KEY
identifica os atributos da relação que formam a sua chave primária
os atributos são implicitamente NOT NULL
sintaxe
PRIMARY KEY (atributo1, atributo2, ..., atributoX)
Cláusula UNIQUE
não permite valores duplicados para um determinado atributo
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 19
Restrições de Integridade
Chave
Integridade referencial
dependência existente entre a chave estrangeira de uma relação e a chave primária da relação relacionada
problemas
atualização ou exclusão de elementos da chave primária sem fazer um ajuste coordenado nas chaves estrangeiras
inclusão ou alteração de valores não nulos na chave estrangeira que não existam na chave primária
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 20
Restrições de Integridade
Chave
Cláusula FOREIGN KEY
características
elimina a possibilidade de violação da
integridade referencial
reflete nas chaves estrangeiras todas as
alterações na chave primária
sintaxe
FOREIGN KEY (atributos)
REFERENCES nome_relação (atributos)
[ON UPDATE [CASCADE | SET NULL | SET DEFAULT]] [ON DELETE [CASCADE | SET NULL | SET DEFAULT]]
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 21
DROP TABLE
Remove uma tabela existente do BD
dados
metadados
índices
gatilhos que referenciam a tabela
Usuários autorizados
proprietário do banco de dados
DBA ou usuário com privilégio de
root
DROP TABLE nome_tabela ;
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 22
Altera o esquema de uma tabela do BD
adiciona
remove
altera
ALTER TABLE
ALTER TABLE nome_tabela;
colunas ou restrições de integridade
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 23 ALTER TABLE nome_tabela
ADD (A1D1R1),
...
ADD (AnDnRn)
Exemplos: ALTER TABLE
inclui novas colunas na tabela
ALTER TABLE nome_tabela DROP A1
– elimina uma coluna já existente da tabela
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 24
Exemplos: ALTER TABLE
modifica o nome de uma coluna existente
de A
1para A
2– modifica o tipo de dado de uma coluna
ALTER TABLE nome_tabela ALTER [COLUMN] A1TO A2
ALTER TABLE nome_tabela ALTER [COLUMN] A1TYPE NOVOTIPO
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 25
SQL DDL
CREATE DOMAIN
cria um domínio para um tipo de dados
DROP DOMAIN
remove um domínio existente do BD
ALTER DOMAIN
altera a definição de domínio
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 26
CREATE DOMAIN
Cria um domínio para um tipo de dados
restrições de integridade
Característica
a definição do domínio é global ao BD
CREATE DOMAIN nome_domínio [AS] tipo_dado[DEFAULT ... ] [NOT NULL] [CHECK ...]
... ;
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 27
DROP DOMAIN
Remove um domínio existente do BD
falha caso o domínio esteja definindo o tipo
de dado de alguma coluna
Usuários autorizados
proprietário do banco de dados
DBA
usuário com privilégio de
root
DROP DOMAIN nome_domínio ;CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 28
ALTER DOMAIN
Altera um domínio existente do BD
remove ou define restrições de integridade
ALTER DOMAIN nome_domínio ... ;
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 29
Domínio no Oracle
Sintaxe para a criação de domínio:
Exemplo
CREATE TYPE meu_numero AS OBJECT ( numero integer);
CREATE TABLE tabelax (
atributo1 varchar(10) PRIMARY KEY, atributo2 meu_numero);
INSERT INTO tabelax VALUES ('teste', meu_numero(12345));
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 30
Facilita o processo de criação de identificadores
únicos de um registro em um banco de dados
É um contador automático que é acionado toda
vez que é acessado
O número gerado por ela pode ser usado para
atualizar o campo chave em uma tabela,
garantindo que não existam duas linhas com o
mesmo código
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 31
Uma seqüência padrão tem as seguintes
características
Começa sempre a partir do número 1
Tem ordem ascendente
É aumentada em 1
CREATE SEQUENCE
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 32
Sintaxe básica
CREATE SEQUENCE sequence_name
[START WITH integer_value]
[INCREMENTED BY integer_value]
CREATE SEQUENCE
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 33
Para acessar o número seqüencial gerado
é necessário trabalhar com o conteúdo
de duas pseudocolunas
CURRVAL:
Retorna o valor atual da
seqüência
NEXTVAL:
Aumenta o valor da seqüência e
retorna o próximo valor
Exemplo:
NomeSequencia.NEXTVAL
CREATE SEQUENCE
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 34
Observações importantes
Uma seqüência só está disponível para o
esquema que a criou
A primeira vez que uma seqüência é
acionada ela retorna o seu valor inicial
CREATE SEQUENCE
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 35
Para visualizar no dicionário de dados
Selecione a tabela USER_SEQUENCES
Para excluir uma seqüência
DROP SEQUENCE sequence_name
Para alterar uma seqüência
ALTER SEQUENCE sequence_name parameter_name
NÃO é possível alterar
Valor inicial
Valor mínimo não pode ser maior que o atual
CREATE SEQUENCE
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 36
SQL DDL
CREATE INDEX
cria um índice sobre uma ou mais colunas
de uma tabela
DROP INDEX
remove um índice existente do BD
ALTER INDEX
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 37
CREATE INDEX
Cria um índice sobre uma ou mais colunas
de uma tabela
Considerações
desempenho das consultas
versus
custos de atualização e de armazenamento
CREATE [UNIQUE]INDEX nome_índice
ON nome_tabela (nome_coluna [ASC | DESC] [, nome_coluna [ASC | DESC]]) ;
sintaxe SGBD Oracle
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 38
Índice
Estrutura de acesso auxiliar usada para
melhorar o desempenho na recuperação de
registros
Pesquisa
restringida a um subconjunto dos registros, em contrapartida à análise do conjunto completo
realizada em resposta a certas condições
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 39
Índice
Desvantagem
sobrecarga adicionalObservações
existe uma variedade de índices, cada qual com uma estrutura de dados particular
qualquer atributo em um arquivo pode ser usado para criar um índice
vários índices podem ser definidos para um mesmo arquivo
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 40
Índice – Exemplo baseado em árvore
Custo: log2N 5 4 2 7 15 1 3 6 16 14 A B 4 maria 3 joão 1 cecília 2 luiz 6 júlia 5 marina 7 enzo 16 rúbens 15 carlos 14 levi
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 41
Atributos Indexados
Chave
principalmente primária
Presentes em operações de seleção
valores requeridos em condições
igualdade
faixa de valores (i.e., range queries)
Participam em condições de junção
um atributo deve ser indexado?
algumas consultas podem ser processadas apenas varrendo-se o índice, sem recuperar qualquer dado
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 42
Índice sobre Vários Atributos
Condição
vários atributos de uma
relação estão envolvidos juntamente em diversas consultas
Restrição
ordem dos atributos dentro do índice deve corresponder às consultas
Exemplo
índice sobre (estilo_carro, cor)
quando deve ser criado?
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 43
DROP INDEX
Remove um índice existente do BD
Usuários autorizados
proprietário do banco de dados
DBA ou usuário com privilégio de
root
DROP INDEX nome_índice ;
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 44
ALTER INDEX
Torna um índice existente
ativo
inativo
Característica
tornar um índice inativo e depois ativá-lo
novamente gera a reconstrução e o
balanceamento do índice
ALTER INDEX nome_índice { ENABLE | DISABLE } ;
sintaxe SGBD Oracle
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 45
Exemplo
região(região_id, nome_região, mapa_região, descrição_região)
vinícola(vinícola_id, nome_vinícola, descrição_vinícola, fone_vinícola, fax_vinícola, região_id)
vinho(vinho_id, nome_vinho, tipo_vinho, ano_vinho, descrição_vinho, vinícola_id)
vinho vinícola região
região_id nome_região descrição_região mapa_região vinho_id nome_vinho tipo_vinho ano_vinho descrição_vinho é_de situada n 1 n 1 vinícola_id nome_vinícola descrição_vinícola fone_vinícola fax_vinícola
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 46
Exemplo
CREATE DATABASE loja_vinhos;
região(região_id, nome_região, mapa_região, descrição_região)
smallint varchar(100) blob blob
DEFAULT ′0′NOT NULL,
NOT NULL, , ,
PRIMARY KEY (região_id)
CREATE TABLE região( região_id
nome_região mapa_região descrição_região );
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 47
Exemplo
CREATE TABLE vinícola( vinícola_id nome_vinícola descrição_vinícola fone_vinícola fax_vinícola região_id );
vinícola(vinícola_id, nome_vinícola, descrição_vinícola, fone_vinícola, fax_vinícola, região_id)
smallint NOT NULL ,
varchar(100) NOT NULL ,
blob ,
varchar(15) ,
varchar(15) ,
smallint DEFAULT ′0′ NOT NULL,
PRIMARY KEY (vinícola_id) ,
FOREIGN KEY (região_id) REFERENCES região(região_id)
ON UPDATE SET DEFAULT ON DELETE SET DEFAULT
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 48
Exemplo
CREATE TABLE vinho( vinho_id nome_vinho tipo_vinho ano_vinho descrição_vinho vinícola_id );
vinho(vinho_id, nome_vinho, tipo_vinho, ano_vinho, descrição_vinho, vinícola_id)
smallint NOT NULL ,
varchar(50) NOT NULL ,
varchar(10) DEFAULT ′seco′NOT NULL,
integer DEFAULT ′0′ NOT NULL,
blob ,
smallint DEFAULT ′0′ NOT NULL,
PRIMARY KEY (vinho_id) ,
FOREIGN KEY (vinícola_id) REFERENCES vinícola (vinícola_id)
ON UPDATE CASCADE ON DELETE CASCADE
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 49
SQL DML
Inserção
Realizada através da especificação
de uma tupla particular
de uma consulta que resulta em um
conjunto de tuplas a serem inseridas
Valores dos atributos das tuplas
inseridas
devem pertencer ao domínio do atributo
Atributos sem valores
especificados por NULL ou valor DEFAULT
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 50
SQL DML
Inserção
Ordem dos atributos deve ser mantida
INSERT INTO nome_tabela
VALUES ( V
1, V
2, ..., V
N) ;
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 51
SQL DML
Inserção
• Ordem dos atributos não precisa ser
mantida
INSERT INTO nome_tabela (A
1, A
2, ..., A
n)
VALUES ( V
1, V
2, ..., V
N) ;
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 52
SQL DML
Inserção - Exemplos
INSERT INTO região
VALUES (12, ‘nome região’, NULL,
‘descrição’);
INSERT INTO região (região_id,
nome_região)
VALUES (12, ‘nome região’);
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 53
Comandos para Controlar
Relações - DCL
CONNECT: Permite a conexão a uma base de dados através de um gerenciador
DISCONNECT: Desconecta de uma base de dados
COMMIT: Torna permanente todas as alterações feitas desde o início da conexão
ROLLBACK: Descarta todas as alterações feitas desde o início da conexão, ou do último comando COMMIT ou ROLLBACK
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 54
Segurança do Banco de Dados
Os SGBD incluem recursos de segurança que
controlam o modo como um banco de dados
é acessado e usado
Exemplo:
Evitam o acesso ao BD sem autorização
Controlam o uso de recursos do sistema (exemplo: tempo
de CPU)
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 55
Segurança do Banco de Dados
No Oracle
Cada usuário do BD tem um esquema associado com o mesmo nome
Esquema (tabelas, visões, seqüência, índices, procedimentos, funções, etc.)
Todo usuário cria e tem acesso a todos os
objetos do esquema correspondente
A segurança pode ser classificada em duas
categorias
Segurança de sistema
Segurança de dados
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 56
Segurança do Banco de Dados
No Oracle
Segurança de sistema: inclui os
mecanismos que controlam o acesso e o
uso do BD em um determinado nível
Combinações válidas de usuário e senha
Quantidade de espaço em disco para os objetos de esquema
Limites de recurso
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 57
Segurança do Banco de Dados
No Oracle
Segurança de dados: inclui os
mecanismos que controlam o acesso e o
uso do BD no nível de objeto de esquema
Quais usuários têm acesso a um objeto específico e aos tipos de ações que cada um pode executar (exemplo: o usuário Silva pode emitir comandos SELECT e INSERT, mas não DELETE usando a tabela EMPREGADO)
As ações, se existirem, que são auditadas para cada objeto de esquema
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 58
Segurança do Banco de Dados
Mecanismos de Segurança suportados pelo
Oracle
Controle arbitrário
O privilégio apropriado deve ser atribuído por um usuário para que ele acesse um objeto de esquema
Usuários com um determinado grupo de privilégios podem concedê-los a outros segundo seu critério
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 59
Segurança do Banco de Dados
Mecanismos de Segurança suportados pelo
Oracle
Recursos
Usuários e esquemas de banco de dados
Privilégios
Papéis
Definições de cota de armazenamento
Limites de recurso
Auditoria
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 60
Mecanismos de Segurança
Usuários e Esquemas do BD
Cada BD tem uma lista de usuários, na qual cada usuário tem uma senha associada
Domínio de Segurança
São associados a cada usuárioConjunto de propriedades que determinam
Ações (privilégios e papéis) disponíveis
Espaço disponível em disco
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 61
Mecanismos de Segurança
Privilégios
Direito para executar um determinado tipo de declaração SQL
Exemplos:
Direito de Conectar-se ao BD
Direito de criar uma tabela
Direito de selecionar linhas da tabela de outro usuário
Direito de executar o procedimento de outro usuário
Podem ser divididos
Privilégios de sistema
Muitas vezes disponíveis apenas para o DBA
Privilégios do objeto de esquema
Atribuídos aos usuários finais
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 62
Mecanismos de Segurança
Privilégios
Podem ser divididos
1. Privilégios de sistema
Muitas vezes disponíveis apenas para o DBA Existem mais de 70 tipos
Exemplos:
Privilege: GRANT ANY PRIVILEGE Procedure: CREATE PROCEDURE
CREATE ANY PROCEDURE ALTER ANY PROCEDURE DROP ANY PROCEDURE EXECUTE ANY PROCEDURE
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 63
Mecanismos de Segurança
Privilégios
Podem ser divididos
2. Privilégios do objeto de esquema
Atribuídos aos usuários finais Exemplos:
ALTER: tabelas e seqüências DELETE: tabelas e visões EXECUTE: procedimentos Etc.
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 64
Mecanismos de Segurança
Concedendo Privilégios
Duas formas
Explicitamente
Exemplo: o usuário Silva pode emitir comandos
SELECT e INSERT, mas não DELETE usando a tabela EMPREGADO
Podem ser concedidos aos papéis (um grupo
nomeado de privilégios) que então são concedidos a um ou mais usuários
Exemplo: o privilégio de emitir comandos SELECT e
INSERT, mas não DELETE usando a tabela EMPREGADO pode ser concedido ao papel chamado GerenteRH, o qual pode ser concedido ao usuário Silva
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 65
Mecanismos de Segurança
Papéis
São grupos de privilégios concedidos aos
usuários ou a outros papéis
Existem diversos papéis predefinidos
Exemplos: CONNECT, RESOURCE e DBA
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 66
Mecanismos de Segurança
Papéis
Vantagens:
Concessão reduzida de privilégios Por grupos de usuários
Gerenciamento dinâmico de privilégios Se for necessário alterar privilégios de um grupo de
usuários, altera-se apenas no papel
Disponibilidade seletiva de privilégios Permite o controle específico dos privilégios de um
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 67
Mecanismos de Segurança
Auditoria
Auxilia na investigação de um suposto uso
suspeito do BD
Pode ser executada em três níveis:
Auditoria de declaração: associada com
declarações SQL específicas
Auditoria de privilégio: associada ao uso dos
privilégios
Auditoria de objeto de esquema: associada
aos acessos a objetos de esquema específicos sem levar em conta o usuário
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 68
Permite a criação de novos usuários
Sintaxe simplificada
CREATE USER username
IDENTIFIED BY password
O comando
CREATE USER
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 69
GRANT:
Permite atribuir privilégios
REVOKE:
Permite revogar privilégios
Sintaxe simplificada para atribuir privilégios de
sistema (pelo DBA)
GRANT role/privilege_name TO username/role
[WITH ADMIM OPTION]
WITH ADMIM OPTION: permite que o
usuário/papel que recebe o privilégio possa atribuí-lo a outros usuários
Os comandos
GRANT
e
REVOKE
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 70 Sintaxe simplificada para atribuir privilégios de objeto (qualquer usuário) GRANT ALL SELECT INSERT DELETE INDEX ALTER
UPDATE [(column name) ON table_name/view_name] TO username [WITH ADMIM OPTION]
A sintaxe do REVOKE é a mesma do GRANT, basta substituir
GRANT por REVOKE nos comandos apresentados
Os comandos
GRANT
e
REVOKE
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 71
Permite criar novos papéis
Sintaxe simplificada
CREATE ROLE role_name
IDENTIFIED BY password
O comando
CREATE ROLE
CCM-205 Sistema de Bancos de Dados - 2° quadrimestre de 2011 72
Para excluir um papel
DROP ROLE role_name
Para excluir um usuário
DROP USER username [CASCADE]
Para visualizar no dicionário de dados
Usuários e privilégios, selecione a tabela
ALL_USERS
Papéis, selecione a tabela
USER_ROLE_PRIVS
73 73 73 73
Bibliografia
Elmasri, Ramez; Navathe, Shamkant B. Sistemas de
banco de dados. 4 ed. São Paulo: Addison Wesley,
2005, 724 p. Bibliografia: p. [690]-714.
Material Didático produzido pelos professores Cristina Dutra de Aguiar Ciferri e Caetano Traina Júnior