linguagem SQL: subconjuntos DCL, DDL e DML

Propaganda
BANCO DE DADOS WEB
AULA 4
linguagem SQL: subconjuntos DCL, DDL e DML
professor Luciano Roberto Rocha
www.lrocha.com
O que é SQL?
Structured Query Language, ou Linguagem de Consulta
Estruturada ou SQL, é uma linguagem de pesquisa declarativa
para banco de dados relacional.
Muitas das características originais do SQL foram inspiradas na
álgebra relacional
Foi desenvolvido originalmente no início dos anos 70 nos
laboratórios da IBM.
Tinha por objetivo demonstrar a viabilidade da implementação
do modelo relacional proposto por Edgar Codd.
Seu nome original era SEQUEL, acrônimo para "Structured
English Query Language"
2
SQL (principais características)
A linguagem SQL é um grande padrão de banco de dados.
Por ser uma linguagem declarativa (não procedural), uma consulta
SQL especifica a forma do resultado e não o caminho para chegar a
ele.
Apesar de ser originalmente criada pela IBM, muitos
desenvolvedores foram criando "dialetos" para ela. Essa expansão
levou à necessidade de ser criado e adaptado um padrão para a
linguagem.
Em 1986/87 a linguagem SQL foi padronizada pela ANSI e ISO
sendo revisada nos anos de 1992, 1999 e 2003.
Normalmente a linguagem pode ser aportada de plataforma
para plataforma sem mudanças significativas em sua estrutura.
3
Estrutura da linguagem SQL
A linguagem SQL é dividida em subconjuntos de acordo com as
operações que se deseja efetuar sobre um banco de dados. Os
principais subconjuntos são:
DDL - Data Definition Language (Linguagem de Definição de Dados)
Principais comandos: CREATE, ALTER e DROP
DML - Data Manipulation Language (Linguagem de Manipulação de Dados)
Principais comandos: SELECT, INSERT, UPDATE, DELETE, TRUNCATE e outros.
DCL - Data Control Language (Linguagem de Controle de Dados)
Principais comandos: GRANT, REVOKE e SET.
4
DDL Linguagem de Definição de Dados
O conjunto de comandos da linguagem DDL é usado para a
definição das estruturas de dados, fornecendo as instruções
que permitem a criação, modificação e remoção de objetos
de banco de dados (base de dados, esquemas, tabelas,
índices etc.).
A maioria dos bancos de dados comerciais tem extensões
proprietárias no DDL.
Os comandos básicos da DDL são:
■ CREATE: cria um objeto (uma Tabela, por exemplo) dentro da base de dados.
■ DROP: apaga um objeto do banco de dados.
■ ALTER: permite ao usuário alterar um objeto, por exemplo, adicionando uma coluna a
uma tabela existente.
5
DML Linguagem de Manipulação de Dados
É o grupo de comandos dentro da linguagem SQL utilizado para a
recuperação, inclusão, remoção e modificação de informações
em bancos de dados.
Os comandos básicos da DML são:
■ SELECT: permite ao usuário especificar uma consulta ("query") como uma descrição do
resultado desejado.
■ INSERT é usada para inserir um registro (formalmente uma tupla) a uma tabela
existente.
■ UPDATE para mudar os valores de dados em uma ou mais linhas da tabela existente.
■ DELETE permite remover linhas existentes de uma tabela.
■ TRUNCATE: remove rapidamente todas as linhas da tabela, esvaziando-a.
■ COMMIT: efetiva a transação atualmente executada.
■ ROLLBACK:desfaz a transação corrente, fazendo com que todas as modificações
realizadas pela transação sejam rejeitadas.
6
DCL Linguagem de Controle de Dados
É o grupo de comandos que permitem ao administrador de banco
de dados gerenciar os aspectos de autorização de dados e
licenças de usuários para controlar quem tem acesso para ver ou
manipular dados dentro do banco de dados.
Alguns exemplos de comandos DCL são:
■ GRANT: concede privilégios a um ou mais usuários para acessar ou realizar determinadas
operações em um objetos de dados.
■ REVOKE: revoga (remove) ou restringe a capacidade de um usuário de executar
operações.
■ SET: Define parâmetros em tempo de execução, como por exemplo, o tipo de
codificação do cliente e o estilo de representação de data e hora.
■ LOCK: Bloqueia explicitamente uma tabela fazendo o controle de acessos concorrente.
7
BANCO DE DADOS WEB
AULA 4
criação de papéis (Roles): usuários e grupos
professor Luciano Roberto Rocha
www.lrocha.com
Criação de Usuários
CREATE USER: cria uma conta de usuário do banco de dados
Descrição
Adiciona um novo usuário ao agrupamento de bancos de dados do PostgreSQL.
Apenas os superusuários do banco de dados podem usar este comando.
Sinopse
CREATE USER nome [ [ WITH ] opção [ ... ] ]
onde opção pode ser:
|
|
|
|
|
CREATEDB | NOCREATEDB
CREATEUSER | NOCREATEUSER
IN GROUP nome_do_grupo [, ...]
[ ENCRYPTED | UNENCRYPTED ] PASSWORD 'senha'
VALID UNTIL 'data_e_hora'
9
Criação de Usuários
Parâmetros
nome
O nome do usuário.
CREATEDB - NOCREATEDB
Estas cláusulas definem a permissão para o usuário criar banco de dados. Se for
especificado CREATEDB, o usuário sendo definido terá permissão para criar seus
próprios bancos de dados. Se for especificado NOCREATEDB, nega-se ao usuário a
permissão para criar banco de dados. Se nenhuma destas cláusulas for especificada, o
padrão é NOCREATEDB.
CREATEUSER - NOCREATEUSER
Estas cláusulas determinam se o usuário pode ou não criar novos usuários.
CREATEUSER também torna o usuário um superusuário, o qual pode passar por cima
de todas as restrições de acesso. Se nenhuma destas cláusulas for especificada, o
padrão é NOCREATEUSER.
10
Criação de Usuários
Parâmetros
nome_do_grupo
O nome de um grupo existente onde o usuário será incluído como um novo membro.
Podem ser especificados nomes de vários grupos.
senha
Define a senha do usuário. Esta opção pode ser omitida, mas o usuário não poderá
mais se conectar se for decidido mudar para autenticação por senha. A senha poderá
ser definida ou mudada posteriormente através do comando ALTER USER.
ENCRYPTED - UNENCRYPTED
Estas cláusulas controlam se a senha será armazenada criptografada, ou não, nos
catálogos do sistema; Se não for especificada nenhuma destas cláusulas, o
comportamento padrão será determinado pelo parâmetro de configuração
password_encryption.
data_e_hora
A cláusula VALID UNTIL define uma data e hora após a qual a senha do usuário não é
mais válida. Se esta cláusula for omitida, a conta será válida para sempre.
11
Criação de Usuários
Exemplos
Criar um usuário sem senha:
CREATE USER jonas;
Criar um usuário com senha no grupo desenvolvedores:
CREATE USER manuel PASSWORD 'jw8s0F4' IN GROUP desenvolvedores;
Criar um usuário com uma senha válida até o fim de 2009. Após o primeiro segundo de
2010 a senha não será mais válida.
CREATE USER miriam PASSWORD 'jw8s0F4' VALID UNTIL '2010-01-01';
Criar uma conta onde o usuário pode criar bancos de dados:
CREATE USER manuel PASSWORD 'jw8s0F4' CREATEDB;
Criar um superusuário:
CREATE USER “Altair” CREATEUSER CREATEDB PASSWORD 'jw8s0F4';
12
Alteração de Usuários
ALTER USER: altera uma conta de usuário do banco de dados
Descrição
Altera os atributos de uma conta de usuário do PostgreSQL. Os atributos não
mencionados no comando permanecem com suas definições anteriores.
Somente um superusuário do banco de dados pode alterar qualquer uma destas
configurações para qualquer usuário. Os usuários comuns podem apenas alterar suas
próprias senhas.
Sinopse
ALTER USER nome [ [ WITH ] opção [ ... ] ]
ALTER USER nome RENAME TO novo_nome
ALTER USER nome SET parâmetro { TO | = } { valor | DEFAULT }
ALTER USER nome RESET parâmetro
13
Alteração de Usuários
Exemplos
Mudar a senha do usuário:
ALTER USER marcos PASSWORD 'hu8jmn3';
Mudar a data de expiração da senha do usuário:
ALTER USER manuel VALID UNTIL 'Jan 31 2030';
Mudar a data de expiração da senha, especificando que a senha expira ao meio dia de 4
de maio de 2010:
ALTER USER cristiane VALID UNTIL 'May 4 2010 12:00:00';
Tornar o usuário válido para sempre:
ALTER USER andrea VALID UNTIL 'infinity';
Dar ao usuário permissão para criar outros usuários e novos bancos de dados:
ALTER USER luizete CREATEUSER CREATEDB;
14
Exclusão de Usuários
DROP USER: remove uma conta de usuário do banco de dados
Descrição
O comando DROP USER remove o usuário especificado. Não remove as tabelas, visões
ou outros objetos pertencentes ao usuário. Se o usuário possuir algum banco de dados
uma mensagem de erro é gerada.
Sinopse
DROP USER nome
Parâmetro
nome
O nome do usuário a ser removido.
15
Exclusão de Usuários
Observações
O PostgreSQL inclui o aplicativo dropuser que possui a mesma funcionalidade deste
comando (na verdade, chama este comando), mas que pode ser executada a partir da
linha de comandos.
Para remover um usuário que possui um banco de dados, primeiro o banco de dados deve
ser removido ou mudado de dono.
Não se aconselha remover um usuário que possua algum objeto de banco de dados, ou
que tenha permissões concedidas para objetos. Atualmente isto só é verificado no caso
dos donos de bancos de dados, mas é provável que as versões futuras do PostgreSQL
verifiquem os outros casos.
Exemplos
Para remover uma conta de usuário:
DROP USER marcos;
16
Criação de Grupos
CREATE GROUP: cria um grupo de usuário do banco de dados
Descrição
O comando CREATE GROUP cria um grupo de usuários. É necessário ser um
superusuário do banco de dados para executar este comando.
Deve ser observado que tanto os usuários quanto os grupos são definidos no nível de
agrupamento de bancos de dados e, portanto, são válidos em todos os bancos de dados
do agrupamento.
Sinopse
CREATE GROUP nome [ [ WITH ] opção [ ... ] ]
onde opção pode ser:
| USER
nome_do_usuário [, ...]
17
Criação de Grupos
Parâmetros
nome
O nome do grupo.
nome_do_usuário
A lista dos usuários a serem incluídos no grupo. Os usuários devem existir.
Exemplos
Criar um grupo vazio:
CREATE GROUP colaboradores;
Criar um grupo com membros:
CREATE GROUP vendas WITH USER jonas, marcela;
obs: Não existe o comando CREATE GROUP no padrão SQL. O conceito de “papéis” (roles) é semelhante
ao de grupos.
18
Alteração de Grupos
ALTER GROUP: altera um grupo de usuários
Descrição
O comando ALTER GROUP altera os atributos de um grupo de usuários.
As duas primeiras variantes abaixo adicionam ou removem usuários de um grupo,
respectivamente. A terceira forma muda o nome do grupo.
Somente os superusuários do banco de dados podem utilizar este comando.
Para conhecer o conjunto de grupos existentes, deve ser consultada a
t a b e l a d o s i s t e m a “ p g _ g r o u p ” c o m o s e g u i n t e c o m a n d o : SELECT groname FROM pg_group; Sinopse
ALTER GROUP nome_do_grupo ADD USER nome_do_usuário [, ... ]
ALTER GROUP nome_do_grupo DROP USER nome_do_usuário [, ... ]
ALTER GROUP nome_do_grupo RENAME TO novo_nome
19
Alteração de Grupos
Parâmetros
nome_do_grupo
O nome do grupo a ser modificado.
nome_do_usuário
Os usuários a serem adicionados ou removidos do grupo. Os usuários devem existir; o
comando ALTER GROUP não cria nem remove usuários.
novo_nome
O novo nome do grupo.
Exemplos
Adicionar usuários a um grupo:
ALTER GROUP arquitetura ADD USER joana, alberto;
Remover um usuário de um grupo:
ALTER GROUP engenharia DROP USER margarida;
20
Exclusão de Grupos
DROP GROUP: remove um grupo de usuários
Descrição
O comando DROP GROUP remove um grupo de usuários especificado.
Os usuários que fazem parte do grupo não são removidos.
Somente os superusuários do banco de dados podem utilizar este comando.
Sinopse
DROP GROUP nome
21
Exclusão de Grupos
Parâmetros
nome_do_grupo
O nome do grupo a ser removido.
Exemplos
Para remover um grupo:
DROP GROUP arquitetura;
Obs.: Não se aconselha remover um grupo que tenha permissões concedidas para
objetos. Atualmente isto não é exigido, mas é provável que as versões futuras do
PostgreSQL verifiquem este erro.
22
Download