BANCO DE DADOS: SQL UERN - Universidade do Estado do Rio Grande do Norte. Departamento de Ciências da Computação. 27 de janeiro de 2010
índice 1 Introdução 2 3
Introdução SQL - Structured Query Language Linguagem de banco de dados projetada para gerenciar dados em RDBMS (relacional database management systems). Baseada na álgebra relacional e cálculo relacional. É padrão ISO desde à década de 80.
Introdução - DDL SQL - Principais funcionalidades: : Gerência objetos tais como tabelas e estruturas de índices. A maioria dos SGDB's implementam extenções proprietárias de DDL. CREATE, DROP, ALTER Exemplo:
Introdução - DML SQL - Principais funcionalidades: DML - Linguagem de Manipulação de Dados: Inserir, Atualizar ou Apagar dados. INSERT, UPDATE, DELETE Exemplo:
Introdução - DQL SQL - Principais funcionalidades: DQL - Linguagem de Consulta (Query) de Dados: É a parte mais utilizada do SQL e só possui um único comando! SELECT Exemplo:
Introdução - DCL SQL - Principais funcionalidades: DCL - Linguagem de Controle de Dados: Autoriza usuários ou grupos para acessar e manipular os dados. GRANT, REVOKE Exemplo:
Introdução - DTL SQL - Principais funcionalidades: DTL - Linguagem de Transação de Dados: Permite execução de vários comandos SQL como sendo um só. BEGIN TRANSACTION (ou start transaction), COMMIT, ROLLBACK Exemplo:
Outline Introdução 1 Introdução 2 3
Introdução do banco de dados são completamente separados dos usuários do sistema operacional no qual o banco de dados está rodando. Existe um SUPER USUÁRIO (ou root), cujo ID é 1, que no POSTGRESQL tem o mesmo nome do usuário que está rodando o servidor de BD, geralmente é o usuário 'postgres', e que tem acesso total ao banco de dados, podendo criar outros usuários. O padrão SQL deixa a denição de usuários a cargo da implementação de cada SGDB. No PostgreSQL o comando é: CREATE USER
Criando no PostgreSQL CREATE USER name [ [ WITH ] option [... ] ] onde 'option' pode ser: SYSID uid [ ENCRYPTED UNENCRYPTED ] PASSWORD 'password' CREATEDB NOCREATEDB CREATEUSER NOCREATEUSER IN GROUP groupname [,...] VALID UNTIL 'abstime'
Criando no PostgreSQL Criando um usuário sem senha: CREATE USER fulano Criando um usuário com senha: CREATE USER beltrano WITH PASSWORD '123mudar' Criando um usuário cuja senha só é válida até 2010, quando o ano de 2011 chegar essa senha não mais será válida: CREATE USER ciclano WITH PASSWORD '123mudar' VALID UNTIL '2011-01-01' Criando um usuário com permissão para criar bases de dados: CREATE USER suporte WITH PASSWORD '123mudar' CREATEDB
Alterando no PostgreSQL Podemos alterar as congurações de um usuário já criado: ALTER USER name [ [ WITH ] option [... ] ] Onde 'option' pode ser: [ ENCRYPTED UNENCRYPTED ] PASSWORD 'password' CREATEDB NOCREATEDB CREATEUSER NOCREATEUSER VALID UNTIL 'abstime' Modica os privilégios globais do usuário e congurações de autenticação. Somente o super usuário pode modicar estes privilégios e a expiração da senha. comuns podem apenas mudar seu próprio password.
Alterando no PostgreSQL Renomeando usuários: ALTER USER nome RENAME TO novonome Somente o super usuário pode usar este comando. O super usuário que está atualmente conectado não pode alterar seu próprio nome, é necessário que este se conecte com outro login de super usuário para fazer isso.
Alterando no PostgreSQL Modicando congurações padrão da sessão de usuário: ALTER USER name SET parameter { TO = } { value DEFAULT } ALTER USER name RESET parameter Quando o usuário iniciar uma nova sessão, os valores setados se tornarão 'default', sobrescrevendo qualquer valor presente no arquivo: postgresql.conf (search_path, default_tablespace, lc_monetary = 'pt_br.utf-8') comuns podem mudar apenas seus próprios valores padrão de sessão. O super usuário pode mudar os valores de todo mundo.
Alterando no PostgreSQL Mudando a senha de um usuário: ALTER USER fulano WITH PASSWORD '12fulano34' Alterando a validade da senha: ALTER USER fulano VALID UNTIL 'May 4 12:00:00 2010 +1' (A senha irá expirar ao meio dia de 4 de maio de 2010, usando um 'timezone' que está 1 hora adiantad com relação ao UTC) Tornando a senha válida para sempre: ALTER USER fulano VALID UNTIL 'innity' Dando ao usuário o poder de criar outros usuários e também de criar base de dados: ALTER USER fulano CREATEUSER CREATEDB
Deletando no postgresql É possível deletar usuários do banco de dados com um único comando: DROP USER fulano Porém, se o usuário possuir alguma base de dados em seu nome é necessário que o dono da base de dados seja modicado, ou a base seja apagada, antes de apagar o usuário (ou o comando não funcionará): ALTER DATABASE fulanodb OWNER TO ciclano DROP USER fulano
Outline Introdução 1 Introdução 2 3
Introdução O SGDB pode criar várias bases de dados e gerênciar o nível de acesso que cada usuário pode ter com relação ao BD. Somente o super usuário (ou usuários com permissão de CREATEDB) podem criar base de dados. Por padrão, o criador do BD torna-se o dono a não ser que seja especicado outro usuário através da cláusula OWNER. Sintaxe: CREATE DATABASE name [ [ WITH ] [ OWNER [=] dbowner ] [ TEMPLATE [=] template ] [ ENCODING [=] encoding ] [ LC_COLLATE [=] lc_collate ] [ LC_CTYPE [=] lc_ctype ] [ TABLESPACE [=] tablespace ] [ CONNECTION LIMIT [=] connlimit ] ]
Criando Criando uma nova base de dados: CREATE DATABASE UERN Criando uma base de dados para um usuário especíco: CREATE DATABASE LOJASRN OWNER fulano
Alterando É possível alterar os atributos de bases de dados já existentes com o comando ALTER DATABASE nomedabasededados [ [ WITH ] option [... ] ] Onde 'option' pode ser: CONNECTION LIMIT connlimit
Alterando Mudando o nome do BD: ALTER DATABASE nome RENAME TO novonome Modicando o dono do BD: ALTER DATABASE UERN OWNER TO beltrano
Deletando É possível deletar uma base de dados já criada, desde que nenhum usuário esteja no momento conectado a ela. DROP DATABASE [ IF EXISTS ] name O parâmetro 'IF EXISTS' evita que sejam geradas mensagens de erro, caso o BD não exista.
Outline Introdução 1 Introdução 2 3
Introdução Espaço lógico que armazena objetos de dados:, índices, Dados, Funções, etc... Análogo aos diretórios do sistema operacional (porém schemas não podem ser aninhados). Relaciona objetos lógicos diferentes mas que estão no mesmo banco de dados. Schema 'public': Por padrão, a cada novo banco de dados criado, o mesmo é colocado no schema public automaticamente e as tabelas criadas no banco serão criadas por padrão neste schema.
Introdução Por que usar schemas? Para permitir que diferentes usuários acessem o banco de dados sem que um interra com o outro. Para organizar os objetos (tabelas, visões, etc...) em grupos lógicos, tornando-os mais facilmente gerenciáveis. Aplicações de terceiros podem ser colocadas em diferentes schemas sem que os nomes dos objetos colidam.
Introdução só podem ser criados por super usuários (usuários com permissão para criar outros usuários). Criando um schema para um usuário: CREATE SCHEMA nanceiro AUTHORIZATION fulano Por padrão, somente o dono do schema e o super usuário tem acesso ao schema. Permitindo que outro usuário tenha acesso ao schema nanceiro que pertence a fulano: GRANT USAGE ON SCHEMA nanceiro TO beltrano REVOKE USAGE ON SCHEMA nanceiro TO beltrano < Retira a permissão dada anteriormente.
Introdução Uma vez que o privilégio de acessar um determinado schema (GRANT USAGE) seja dado a um usuário, é necessário que as permissões de acesso a cada objeto do schema sejam dadas explicitamente: GRANT SELECT ON nanceiro.pagamentos TO beltrano REVOKE SELECT ON nanceiro.pagamentos FROM beltrano Neste caso foi dada permissão de leitura na tabela pagamentos do schema nanceiro ao usuário beltrano. Logo após essa permissão foi retirada.
Introdução Se desejamos que o usuário beltrano (que não é dono do schema mas tem permissão de acessa-lo) possa criar objetos (tabelas, índices, etc) no schema nanceiro, podemos dar essa permissão: GRANT CREATE ON SCHEMA nanceiro TO beltrano REVOKE CREATE ON SCHEMA nanceiro TO beltrano
Introdução É possível dar privilégios a TODOS os usuários do BD a um determinado schema, usando a palavra reservada 'PUBLIC': GRANT ALL ON SCHEMA nanceiro TO PUBLIC ALL se refere a USAGE e CREATE. No schema padrão 'public' todos os usuários tem automaticamente privilégios de USAGE e CREATE.
Deletando Se o usuário não tiver criado ainda nenhum objeto no schema: DROP SCHEMA nanceiro Caso já existam objetos criados no schema: DROP SCHEMA nanceiro CASCADE
Outline Introdução 1 Introdução 2 3
Introdução É onde os dados são logicamente armazenados no BD. Consiste de Linhas e Colunas. O número e a ordem das colunas é xado, e cada coluna tem um nome. O número de linhas é variável, isso reete a quantidade de dados armazenados na tabela.
Criando CREATE TABLE comum.estado ( id_estado integer NOT NULL, sigla char(2) NOT NULL, nome varchar(25) NOT NULL, CONSTRAINT pk_estado PRIMARY KEY (id_estado) );
BIBLIOGRAFIA http://www.postgresql.org/docs/current/static/ddl-schemas.html http://sql-info.de/postgresql/schemas.html