Você está na página 1de 22

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 caractersticas originais do SQL foram inspiradas na lgebra relacional Foi desenvolvido originalmente no incio dos anos 70 nos laboratrios da IBM. Tinha por objetivo demonstrar a viabilidade da implementao do modelo relacional proposto por Edgar Codd. Seu nome original era SEQUEL, acrnimo para "Structured English Query Language"
2

SQL (principais caractersticas)


A linguagem SQL um grande padro de banco de dados.
Por ser uma linguagem declarativa (no procedural), uma consulta SQL especifica a forma do resultado e no o caminho para chegar a ele. Apesar de ser originalmente criada pela IBM, muitos desenvolvedores foram criando "dialetos" para ela. Essa expanso levou necessidade de ser criado e adaptado um padro 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 mudanas significativas em sua estrutura.

Estrutura da linguagem SQL


A linguagem SQL dividida em subconjuntos de acordo com as operaes que se deseja efetuar sobre um banco de dados. Os principais subconjuntos so:
DDL - Data Definition Language (Linguagem de Definio de Dados)
Principais comandos: CREATE, ALTER e DROP

DML - Data Manipulation Language (Linguagem de Manipulao 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.

DDL Linguagem de Definio de Dados


O conjunto de comandos da linguagem DDL usado para a definio das estruturas de dados, fornecendo as instrues que permitem a criao, modificao e remoo de objetos de banco de dados (base de dados, esquemas, tabelas, ndices etc.). A maioria dos bancos de dados comerciais tem extenses proprietrias no DDL. Os comandos bsicos da DDL so:
CREATE: cria um objeto (uma Tabela, por exemplo) dentro da base de dados. DROP: apaga um objeto do banco de dados. ALTER: permite ao usurio alterar um objeto, por exemplo, adicionando uma coluna a uma tabela existente.
5

DML Linguagem de Manipulao de Dados


o grupo de comandos dentro da linguagem SQL utilizado para a recuperao, incluso, remoo e modificao de informaes em bancos de dados. Os comandos bsicos da DML so:
SELECT: permite ao usurio especificar uma consulta ("query") como uma descrio 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 transao atualmente executada. ROLLBACK:desfaz a transao corrente, fazendo com que todas as modificaes realizadas pela transao 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 autorizao de dados e licenas de usurios para controlar quem tem acesso para ver ou manipular dados dentro do banco de dados. Alguns exemplos de comandos DCL so:
GRANT: concede privilgios a um ou mais usurios para acessar ou realizar determinadas operaes em um objetos de dados. REVOKE: revoga (remove) ou restringe a capacidade de um usurio de executar operaes. SET: Define parmetros em tempo de execuo, como por exemplo, o tipo de codificao do cliente e o estilo de representao de data e hora. LOCK: Bloqueia explicitamente uma tabela fazendo o controle de acessos concorrente.
7

BANCO DE DADOS WEB

AULA 4
criao de papis (Roles): usurios e grupos
professor Luciano Roberto Rocha
www.lrocha.com

Criao de Usurios
CREATE USER: cria uma conta de usurio do banco de dados
Descrio
Adiciona um novo usurio ao agrupamento de bancos de dados do PostgreSQL. Apenas os superusurios do banco de dados podem usar este comando.

Sinopse
CREATE USER nome [ [ WITH ] opo [ ... ] ] onde opo pode ser: | | | | | CREATEDB | NOCREATEDB CREATEUSER | NOCREATEUSER IN GROUP nome_do_grupo [, ...] [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'senha' VALID UNTIL 'data_e_hora'

Criao de Usurios
Parmetros
nome O nome do usurio. CREATEDB - NOCREATEDB Estas clusulas definem a permisso para o usurio criar banco de dados. Se for especificado CREATEDB, o usurio sendo definido ter permisso para criar seus prprios bancos de dados. Se for especificado NOCREATEDB, nega-se ao usurio a permisso para criar banco de dados. Se nenhuma destas clusulas for especificada, o padro NOCREATEDB. CREATEUSER - NOCREATEUSER Estas clusulas determinam se o usurio pode ou no criar novos usurios. CREATEUSER tambm torna o usurio um superusurio, o qual pode passar por cima de todas as restries de acesso. Se nenhuma destas clusulas for especificada, o padro NOCREATEUSER.
10

Criao de Usurios
Parmetros
nome_do_grupo O nome de um grupo existente onde o usurio ser includo como um novo membro. Podem ser especificados nomes de vrios grupos. senha Define a senha do usurio. Esta opo pode ser omitida, mas o usurio no poder mais se conectar se for decidido mudar para autenticao por senha. A senha poder ser definida ou mudada posteriormente atravs do comando ALTER USER. ENCRYPTED - UNENCRYPTED Estas clusulas controlam se a senha ser armazenada criptografada, ou no, nos catlogos do sistema; Se no for especificada nenhuma destas clusulas, o comportamento padro ser determinado pelo parmetro de configurao password_encryption. data_e_hora A clusula VALID UNTIL define uma data e hora aps a qual a senha do usurio no mais vlida. Se esta clusula for omitida, a conta ser vlida para sempre.

11

Criao de Usurios
Exemplos
Criar um usurio sem senha: CREATE USER jonas; Criar um usurio com senha no grupo desenvolvedores: CREATE USER manuel PASSWORD 'jw8s0F4' IN GROUP desenvolvedores; Criar um usurio com uma senha vlida at o fim de 2009. Aps o primeiro segundo de 2010 a senha no ser mais vlida. CREATE USER miriam PASSWORD 'jw8s0F4' VALID UNTIL '2010-01-01'; Criar uma conta onde o usurio pode criar bancos de dados: CREATE USER manuel PASSWORD 'jw8s0F4' CREATEDB; Criar um superusurio: CREATE USER Altair CREATEUSER CREATEDB PASSWORD 'jw8s0F4';
12

Alterao de Usurios
ALTER USER: altera uma conta de usurio do banco de dados
Descrio
Altera os atributos de uma conta de usurio do PostgreSQL. Os atributos no mencionados no comando permanecem com suas definies anteriores. Somente um superusurio do banco de dados pode alterar qualquer uma destas configuraes para qualquer usurio. Os usurios comuns podem apenas alterar suas prprias senhas.

Sinopse
ALTER USER nome [ [ WITH ] opo [ ... ] ] ALTER USER nome RENAME TO novo_nome ALTER USER nome SET parmetro { TO | = } { valor | DEFAULT } ALTER USER nome RESET parmetro
13

Alterao de Usurios
Exemplos
Mudar a senha do usurio: ALTER USER marcos PASSWORD 'hu8jmn3'; Mudar a data de expirao da senha do usurio: ALTER USER manuel VALID UNTIL 'Jan 31 2030'; Mudar a data de expirao 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 usurio vlido para sempre: ALTER USER andrea VALID UNTIL 'infinity'; Dar ao usurio permisso para criar outros usurios e novos bancos de dados: ALTER USER luizete CREATEUSER CREATEDB;
14

Excluso de Usurios
DROP USER: remove uma conta de usurio do banco de dados
Descrio
O comando DROP USER remove o usurio especificado. No remove as tabelas, vises ou outros objetos pertencentes ao usurio. Se o usurio possuir algum banco de dados uma mensagem de erro gerada.

Sinopse
DROP USER nome

Parmetro
nome O nome do usurio a ser removido.
15

Excluso de Usurios
Observaes
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 usurio que possui um banco de dados, primeiro o banco de dados deve ser removido ou mudado de dono. No se aconselha remover um usurio que possua algum objeto de banco de dados, ou que tenha permisses concedidas para objetos. Atualmente isto s verificado no caso dos donos de bancos de dados, mas provvel que as verses futuras do PostgreSQL verifiquem os outros casos.

Exemplos
Para remover uma conta de usurio: DROP USER marcos;
16

Criao de Grupos
CREATE GROUP: cria um grupo de usurio do banco de dados
Descrio
O comando CREATE GROUP cria um grupo de usurios. necessrio ser um superusurio do banco de dados para executar este comando. Deve ser observado que tanto os usurios quanto os grupos so definidos no nvel de agrupamento de bancos de dados e, portanto, so vlidos em todos os bancos de dados do agrupamento.

Sinopse
CREATE GROUP nome [ [ WITH ] opo [ ... ] ] onde opo pode ser: | USER nome_do_usurio [, ...]
17

Criao de Grupos
Parmetros
nome O nome do grupo. nome_do_usurio A lista dos usurios a serem includos no grupo. Os usurios devem existir.

Exemplos
Criar um grupo vazio: CREATE GROUP colaboradores; Criar um grupo com membros: CREATE GROUP vendas WITH USER jonas, marcela;
obs: No existe o comando CREATE GROUP no padro SQL. O conceito de papis (roles) semelhante ao de grupos.

18

Alterao de Grupos
ALTER GROUP: altera um grupo de usurios
Descrio
O comando ALTER GROUP altera os atributos de um grupo de usurios. As duas primeiras variantes abaixo adicionam ou removem usurios de um grupo, respectivamente. A terceira forma muda o nome do grupo. Somente os superusurios 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 : SELECTgronameFROMpg_group;

Sinopse
ALTER GROUP nome_do_grupo ADD USER nome_do_usurio [, ... ] ALTER GROUP nome_do_grupo DROP USER nome_do_usurio [, ... ] ALTER GROUP nome_do_grupo RENAME TO novo_nome
19

Alterao de Grupos
Parmetros
nome_do_grupo O nome do grupo a ser modificado. nome_do_usurio Os usurios a serem adicionados ou removidos do grupo. Os usurios devem existir; o comando ALTER GROUP no cria nem remove usurios. novo_nome O novo nome do grupo.

Exemplos
Adicionar usurios a um grupo: ALTER GROUP arquitetura ADD USER joana, alberto; Remover um usurio de um grupo: ALTER GROUP engenharia DROP USER margarida;
20

Excluso de Grupos
DROP GROUP: remove um grupo de usurios
Descrio
O comando DROP GROUP remove um grupo de usurios especificado. Os usurios que fazem parte do grupo no so removidos. Somente os superusurios do banco de dados podem utilizar este comando.

Sinopse
DROP GROUP nome

21

Excluso de Grupos
Parmetros
nome_do_grupo O nome do grupo a ser removido.

Exemplos
Para remover um grupo: DROP GROUP arquitetura; Obs.: No se aconselha remover um grupo que tenha permisses concedidas para objetos. Atualmente isto no exigido, mas provvel que as verses futuras do PostgreSQL verifiquem este erro.

22