Tutorial do PostgreSQL 8

Tamanho: px
Começar a partir da página:

Download "Tutorial do PostgreSQL 8"

Transcrição

1 Tutorial do PostgreSQL 8 Projeto de Tradução para o Português do Brasil (http://sourceforge.net/projects/pgdocptbr/) The PostgreSQL Global Development Group Rio de Janeiro, 29 de dezembro de 2005

2 Documentação do PostgreSQL Projeto de Tradução para o Português do Brasil (http://sourceforge.net/projects/pgdocptbr/) The PostgreSQL Global Development Group Copyright por The PostgreSQL Global Development Group Legal Notice PostgreSQL is Copyright by the PostgreSQL Global Development Group and is distributed under the terms of the license of the University of California below. Postgres95 is Copyright by the Regents of the University of California. Permission to use, copy, modify, and distribute this software and its documentation for any purpose, without fee, and without a written agreement is hereby granted, provided that the above copyright notice and this paragraph and the following two paragraphs appear in all copies. IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN AS-IS BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. Traduzido por Halley Pacheco de Oliveira Revisado por Diogo de Oliveira Biazus Marcia Tonon

3 Tutorial do PostgreSQL 8.x Bem vindo ao Tutorial do PostgreSQL. Os poucos capítulos a seguir têm por objetivo fornecer uma introdução simples ao PostgreSQL, aos conceitos de banco de dados relacional e à linguagem SQL, para os iniciantes em qualquer um destes tópicos. Somente é pressuposto um conhecimento geral sobre a utilização de computadores. Nenhuma experiência com Unix ou em programação é necessária. Esta parte tem como objetivo principal fornecer experiência prática sobre os aspectos importantes do PostgreSQL. Não há nenhuma intenção em dar-se um tratamento completo ou abrangente dos tópicos cobertos. Após ler este tutorial pode-se prosseguir através da leitura da Parte II para obter um maior conhecimento formal da linguagem SQL, ou da Parte IV para obter informações sobre o desenvolvimento de aplicativos para o PostgreSQL. Aqueles que instalam e gerenciam seus próprios servidores também devem ler a Parte III. Capítulo 1. Início 1.1. Instalação Para que se possa usar o PostgreSQL é necessário instalá-lo, obviamente. É possível que o PostgreSQL já esteja instalado na máquina, seja porque está incluído na distribuição do sistema operacional 1, ou porque o administrador do sistema fez a instalação. Se este for o caso, devem ser obtidas informações na documentação do sistema operacional, ou com o administrador do sistema, sobre como acessar o PostgreSQL. Não havendo certeza se o PostgreSQL está disponível, ou se pode ser utilizado para seus experimentos, então você mesmo poderá fazer a instalação. Proceder desta maneira não é difícil, podendo ser um bom exercício. O PostgreSQL pode ser instalado por qualquer usuário sem privilégios, porque não é necessário nenhum acesso de superusuário (root). Se for instalar o PostgreSQL por si próprio, então leia o Capítulo 14 para conhecer as instruções de instalação, e depois retorne para este guia quando a instalação estiver terminada. Certifique-se de seguir de perto a seção sobre a configuração das variáveis de ambiente apropriadas. Se o administrador do sistema não fez a configuração da maneira padrão, talvez seja necessário algum trabalho adicional. Por exemplo, se a máquina servidora de banco de dados for uma máquina remota, será necessário definir a variável de ambiente PGHOST com o nome da máquina servidora de banco de dados. Também, talvez tenha que ser definida a variável de ambiente PGPORT. A regra básica é esta: quando se tenta iniciar um programa aplicativo e este informa que não está conseguindo conectar com o banco de dados, deve ser consultado o administrador do servidor ou, caso seja você mesmo, a documentação, para ter certeza que o ambiente está configurado de maneira apropriada. Caso não tenha entendido o parágrafo anterior então, por favor, leia a próxima seção Fundamentos da arquitetura Antes de prosseguir, é necessário conhecer a arquitetura de sistema básica do PostgreSQL. Compreender como as partes do PostgreSQL interagem torna este capítulo mais claro. No jargão de banco de dados, o PostgreSQL utiliza o modelo cliente-servidor. Uma sessão do PostgreSQL consiste nos seguintes processos (programas) cooperando entre si:

4 Um processo servidor, que gerencia os arquivos de banco de dados, recebe conexões dos aplicativos cliente com o banco de dados, e executa ações no banco de dados em nome dos clientes. O programa servidor de banco de dados se chama postmaster. O aplicativo cliente do usuário (frontend) que deseja executar operações de banco de dados. Os aplicativos cliente podem ter naturezas muito diversas: o cliente pode ser uma ferramenta no modo caractere, um aplicativo gráfico, um servidor Web que acessa o banco de dados para mostrar páginas Web, ou uma ferramenta especializada para manutenção do banco de dados. Alguns aplicativos cliente são fornecidos na distribuição do PostgreSQL, sendo a maioria desenvolvido pelos usuários. 2 Como é típico em aplicações cliente-servidor, o cliente e o servidor podem estar em hospedeiros diferentes. Neste caso se comunicam através de uma conexão de rede TCP/IP. Deve-se ter isto em mente, porque arquivos que podem ser acessados na máquina cliente podem não ser acessíveis pela máquina servidora (ou somente podem ser acessados usando um nome de arquivo diferente). O servidor PostgreSQL pode tratar várias conexões simultâneas de clientes. Para esta finalidade é iniciado um novo processo (fork 3 ) para cada conexão. Deste ponto em diante, o cliente e o novo processo servidor se comunicam sem intervenção do processo postmaster original. Portanto, o postmaster está sempre executando aguardando por novas conexões dos clientes, enquanto os clientes e seus processos servidor associados surgem e desaparecem (obviamente tudo isso é invisível para o usuário, sendo mencionado somente para ficar completo) Criação de banco de dados O primeiro teste para verificar se é possível acessar o servidor de banco de dados é tentar criar um banco de dados. Um servidor PostgreSQL pode gerenciar muitos bancos de dados. Normalmente é utilizado um banco de dados em separado para cada projeto ou para cada usuário. Possivelmente, o administrador já criou um banco de dados para seu uso. Ele deve ter dito qual é o nome do seu banco de dados. Neste caso esta etapa pode ser omitida, indo-se direto para a próxima seção. Para criar um novo banco de dados, chamado meu_bd neste exemplo, deve ser utilizado o comando: $ createdb meu_bd Que deve produzir a seguinte resposta: CREATE DATABASE Se esta resposta for mostrada então esta etapa foi bem sucedida, podendo-se pular o restante da seção. Se for mostrada uma mensagem semelhante a createdb: comando não encontrado então o PostgreSQL não foi instalado da maneira correta, ou não foi instalado, ou o caminho de procura não foi definido corretamente. Tente executar o comando utilizando o caminho absoluto: $ /usr/local/pgsql/bin/createdb meu_bd O caminho na sua máquina pode ser diferente. 4 Fale com o administrador, ou verifique novamente as instruções de instalação para corrigir a situação. Outra resposta pode ser esta: 5 createdb: could not connect to database template1: could not connect to server: No such file or directory Is the server running locally and accepting

5 connections on Unix domain socket "/tmp/.s.pgsql.5432"? -- Tradução da mensagem (N. do T.) createdb: não foi possível conectar ao banco de dados template1 : não foi possível conectar ao servidor: Arquivo ou diretório inexistente O servidor está executando localmente e aceitando conexões no soquete do domínio Unix "/tmp/.s.pgsql.5432"? Significando que o servidor não foi inicializado, ou que não foi inicializado onde o createdb esperava que fosse. Novamente, verifique as instruções de instalação ou consulte o administrador. Outra resposta pode ser esta: createdb: could not connect to database template1: FATAL: user "joel" does not exist -- Tradução da mensagem (N. do T.) createdb: não foi possível conectar ao banco de dados template1: FATAL: o usuário "joel" não existe onde é mencionado o seu próprio nome de login. Isto vai acontecer se o administrador não tiver criado uma conta de usuário no PostgreSQL para seu uso (As contas de usuário do PostgreSQL são distintas das contas de usuário do sistema operacional). Se você for o administrador, obtenha ajuda para criar contas no Capítulo 17. Será necessário se tornar o usuário do sistema operacional que instalou o PostgreSQL (geralmente postgres) para criar a primeira conta de usuário. Também pode ter sido atribuído para você um nome de usuário do PostgreSQL diferente do nome de usuário do sistema operacional; neste caso, é necessário utilizar a chave -U, ou definir a variável de ambiente PGUSER, para especificar o nome de usuário do PostgreSQL. Caso se possua uma conta de usuário, mas esta conta não possua o privilégio necessário para criar bancos de dados, será exibida a seguinte mensagem: createdb: database creation failed: ERROR: permission denied to create database -- Tradução da mensagem (N. do T.) createdb: a criação do banco de dados falhou: ERRO: negada a permissão para criar banco de dados Nem todo usuário possui autorização para criar bancos de dados. Se o PostgreSQL não permitir criar o banco de dados, então o administrador deve conceder permissão para você criar bancos de dados. Consulte o administrador caso isto ocorra. Caso tenha instalado o PostgreSQL por si próprio, então conecte usando a mesma conta de usuário utilizada para inicializar o servidor, para as finalidades deste tutorial. 6 Também podem ser criados bancos de dados com outros nomes. O PostgreSQL permite a criação de qualquer número de bancos de dados em uma instalação. Os nomes dos bancos de dados devem ter o primeiro caractere alfabético, sendo limitados a um comprimento de 63 caracteres. Uma escolha conveniente é criar o banco de dados com o mesmo nome do usuário corrente. Muitas ferramentas assumem este nome de banco de dados como sendo o nome padrão, evitando a necessidade de digitá-lo. Para criar este banco de dados deve ser digitado simplesmente: $ createdb

6 Caso não deseje mais utilizar o seu banco de dados, pode removê-lo. Por exemplo, se você for o dono (criador) do banco de dados meu_bd, poderá removê-lo utilizando o seguinte comando: $ dropdb meu_bd Para este comando o nome da conta não é utilizado como nome padrão do banco de dados: o nome sempre deve ser especificado. Esta ação remove fisicamente todos os arquivos associados ao banco de dados não podendo ser desfeita, portanto esta operação somente deve ser feita após um longo período de reflexão. Podem ser encontradas informações adicionais sobre os comandos createdb e dropdb em createdb e dropdb, respectivamente Acesso a banco de dados Após o banco de dados ter sido criado, este pode ser acessado pela: Execução do programa de terminal interativo do PostgreSQL chamado psql, que permite entrar, editar e executar comandos SQL interativamente. Utilização de uma ferramenta cliente gráfica existente como o PgAccess, ou de um pacote de automação de escritórios com suporte a ODBC para criar e manusear bancos de dados. Estas possibilidades não estão descritas neste tutorial. Criação de aplicativos personalizados, usando um dos vários vínculos com linguagens disponíveis. Estas possibilidades são mostradas mais detalhadamente na Parte IV. Você provavelmente vai desejar ativar o psql para executar os exemplos deste tutorial. O psql pode ser ativado para usar o banco de dados meu_bd digitando o comando: $ psql meu_bd Se o nome do banco de dados for omitido, então será usado o nome padrão igual ao nome da conta do usuário. Isto já foi visto na seção anterior. O psql saúda o usuário com a seguinte mensagem: Welcome to psql 8.0.0, the PostgreSQL interactive terminal. Type: \copyright for distribution terms \h for help with SQL commands \? for help on internal slash commands \g or terminate with semicolon to execute query \q to quit meu_bd=> -- Tradução da mensagem (N. do T.) Bem-vindo ao psql 8.0.0, o terminal interativo do PostgreSQL. Digite: \copyright para mostrar a licença da distribuição \h para ajuda nos comandos SQL \? para ajuda nos comandos de contrabarra internos \g ou finalizar com ponto-e-vírgula para executar o comando \q para sair meu_bd=>

7 A última linha também pode ser meu_bd=# significando que o usuário é um superusuário do banco de dados, acontecendo geralmente quando se instala o PostgreSQL por si próprio. Ser um superusuário significa não estar sujeito a controles de acesso. Para as finalidades deste tutorial isto não tem importância. Caso aconteçam problemas ao inicializar o psql, então retorne à seção anterior. Os diagnósticos do psql e do createdb são semelhantes, e se um funcionou o outro deve funcionar também. A última linha exibida pelo psql é o prompt, indicando que o psql está lhe aguardando, e que você pode digitar comandos SQL dentro do espaço de trabalho mantido pelo psql. Tente estes comandos: meu_bd=> SELECT version(); version PostgreSQL on i586-pc-linux-gnu, compiled by GCC 2.96 (1 linha) meu_bd=> SELECT current_date; date (1 linha) meu_bd=> SELECT 2 + 2;?column? (1 linha) O programa psql possui vários comandos internos que não são comandos SQL. Eles começam pelo caractere de contrabarra, \. Alguns destes comandos são mostrados na mensagem de boas vindas. Por exemplo, pode ser obtida ajuda sobre a sintaxe de vários comandos SQL do PostgreSQL digitando: meu_bd=> \h Para sair do psql digite meu_bd=> \q e o psql terminará retornando para o interpretador de comandos (para conhecer outros comandos internos digite \? no prompt do psql). Todas as funcionalidades do psql estão documentadas em psql. Se o PostgreSQL tiver sido instalado corretamente, também pode-se digitar man psql na linha de comando do sistema operacional para ver a documentação. Neste tutorial não utilizaremos estas funcionalidades explicitamente, mas use por si próprio quando julgar adequado. Notas 1. distribuição Uma árvore de código fonte de software empacotada para distribuição; Desde cerca de 1996 a utilização não qualificada deste termo geralmente implica numa distribuição Linux. A forma

8 curta distro geralmente é utilizada neste sentido. The Jargon File (http://www.catb. org/~esr/jargon/html/d/distribution.html) (N. do T.) 2. Também pode ser utilizada a ferramenta de administração do PostgreSQL baseada na Web phppgadmin (http://phppgadmin.sourceforge.net/). (N. do T.) 3. fork Para criar um novo processo, o processo copia a si próprio através da chamada de sistema fork. O fork cria uma cópia do processo original que é em grande parte idêntica à ancestral. O novo processo possui um PID (identificador de processo) próprio, e suas próprias informações de contabilização. O fork possui a propriedade única de retornar dois valores diferentes. Do ponto de vista do filho retorna zero. Por outro lado, para o pai é retornado o PID do filho recém criado. Uma vez que fora isso os dois processos são idênticos, ambos precisam examinar o valor retornado para descobrir o papel a ser desempenhado. Linux Administration Handbook, Evi Nemeth e outros, Prentice Hall, (N. do T.) 4. /usr/bin/createdb no RedHat, Fedora, Mandrake e Debian. (N. do T.) 5. soquete As chamadas de sistema para estabelecer a conexão são um tanto diferentes para o cliente e para o servidor, mas ambas envolvem basicamente a construção de um soquete. O soquete é uma extremidade do canal de comunicação entre processos. Cada um dos dois processos estabelece seu próprio soquete. Para criar o soquete, o programa precisa especificar o domínio de endereço e o tipo de soquete. Dois processos podem se comunicar somente se seus soquetes são do mesmo tipo e do mesmo domínio. Existem dois domínios de endereço amplamente utilizados: o domínio Unix, no qual dois processos compartilham um arquivo do sistema em comum para se comunicar; e o domínio Internet, no qual dois processos executando em dois hospedeiros quaisquer na Internet se comunicam. Cada um destes domínios possui seu próprio formato de endereço. O endereço de soquete do domínio Unix é uma cadeia de caracteres, que é basicamente uma entrada no sistema de arquivos. O endereço de soquete do domínio Internet consiste no endereço de Internet da máquina hospedeira (todo computador na Internet possui um endereço único de 32 bits, geralmente chamado de endereço de IP). Adicionalmente, no domínio Internet, cada soquete necessita do número da porta no hospedeiro. Sockets Tutorial (http://people.cs.uchicago. edu/%7emark/51081/labs/lab6/sock.html) (N. do T.) 6. Uma explicação do motivo pelo qual isto funciona: Os nomes de usuário do PostgreSQL são distintos das contas de usuário do sistema operacional. Ao estabelecer a conexão com um banco de dados, pode ser escolhido o nome do usuário do PostgreSQL com o qual se deseja fazer a conexão; Se isto não for feito, o padrão é utilizar um nome igual ao da conta atual do sistema operacional. Como isto ocorre, sempre existirá uma conta de usuário do PostgreSQL que possui o nome igual ao do usuário do sistema operacional que inicializou o servidor; acontece, também, que este usuário sempre tem permissão para criar banco de dados. Em vez de conectar como este usuário, pode ser especificada a opção -U em todos os aplicativos para escolher o nome do usuário do PostgreSQL com o qual se deseja conectar. Capítulo 2. A linguagem SQL 2.1. Introdução Este capítulo fornece uma visão geral sobre como utilizar a linguagem SQL para realizar operações simples. O propósito deste tutorial é apenas fazer uma introdução e, de forma alguma, ser um tutorial completo sobre a linguagem SQL. Existem muitos livros escritos sobre a linguagem SQL, incluindo Understanding the New SQL e A Guide to the SQL Standard. É preciso estar ciente que algumas funcionalidades da linguagem SQL do PostgreSQL são extensões ao padrão. Nos exemplos a seguir supõe-se que tenha sido criado o banco de dados chamado meu_bd, conforme descrito no capítulo anterior, e que o psql esteja ativo.

9 Os exemplos presentes neste manual também podem ser encontrados na distribuição do código fonte do PostgreSQL, no diretório src/tutorial/. 1 Para usar estes arquivos, primeiro deve-se tornar o diretório src/tutorial/ o diretório corrente, e depois executar o utilitário make, conforme mostrado abaixo: $ cd.../src/tutorial $ make Este procedimento cria os scripts e compila os arquivos C contendo as funções e tipos definidos pelo usuário (Deve ser utilizado o make do GNU neste procedimento, que pode ter um nome diferente no sistema sendo utilizado, geralmente gmake). 2 Depois disso, para iniciar o tutorial faça o seguinte: $ cd.../src/tutorial $ psql -s meu_bd... meu_bd=> \i basics.sql O comando \i lê os comandos no arquivo especificado. A opção -s ativa o modo passo a passo, que faz uma pausa antes de enviar cada comando para o servidor. Os comandos utilizados nesta seção estão no arquivo basics.sql (./basics.sql) Conceitos O PostgreSQL é um sistema de gerenciamento de banco de dados relacional (SGBDR). Isto significa que é um sistema para gerenciar dados armazenados em relações. Relação é, essencialmente, um termo matemático para tabela. A noção de armazenar dados em tabelas é tão trivial hoje em dia que pode parecer totalmente óbvio, mas existem várias outras formas de organizar bancos de dados. Arquivos e diretórios em sistemas operacionais tipo Unix são um exemplo de banco de dados hierárquico. Um desenvolvimento mais moderno são os bancos de dados orientados a objeto. Cada tabela é uma coleção nomeada de linhas. Todas as linhas de uma determinada tabela possuem o mesmo conjunto de colunas nomeadas, e cada coluna é de um tipo de dado específico. Enquanto as colunas possuem uma ordem fixa nas linhas, é importante lembrar que o SQL não garante a ordem das linhas dentro de uma tabela (embora as linhas possam ser explicitamente ordenadas para a exibição). As tabelas são agrupadas em bancos de dados, e uma coleção de bancos de dados gerenciados por uma única instância do servidor PostgreSQL forma um agrupamento de bancos de dados Criação de tabelas Pode-se criar uma tabela especificando o seu nome juntamente com os nomes das colunas e seus tipos de dado: CREATE TABLE clima ( cidade varchar(80), temp_min int, -- temperatura mínima temp_max int, -- temperatura máxima prcp real, -- precipitação data date ); Este comando pode ser digitado no psql com quebras de linha. O psql reconhece que o comando só termina quando é encontrado o ponto-e-vírgula. Espaços em branco (ou seja, espaços, tabulações e novas linhas) podem ser utilizados livremente nos comandos SQL. Isto significa que o comando pode ser digitado com um alinhamento diferente do mostrado acima, ou mesmo tudo em uma única linha. Dois hífens ( -- ) iniciam um comentário; tudo que vem depois é ignorado até o final da linha. A linguagem SQL não diferencia letras maiúsculas e minúsculas nas palavras chave e nos identificadores, a não ser que os identificadores sejam colocados entre aspas (") para preservar letras maiúsculas e minúsculas, o que não foi feito acima.

10 No comando, varchar(80) especifica um tipo de dado que pode armazenar cadeias de caracteres arbitrárias com comprimento até 80 caracteres; int é o tipo inteiro normal; real é o tipo para armazenar números de ponto flutuante de precisão simples; date é o tipo para armazenar data e hora (a coluna do tipo date pode se chamar date, o que tanto pode ser conveniente quanto pode causar confusão). O PostgreSQL suporta os tipos SQL padrão int, smallint, real, double precision, char(n), varchar(n), date, time, timestamp e interval, assim como outros tipos de utilidade geral, e um conjunto abrangente de tipos geométricos. O PostgreSQL pode ser personalizado com um número arbitrário de tipos definidos pelo usuário. Como conseqüência, sintaticamente os nomes dos tipos não são palavras chave, exceto onde for requerido para suportar casos especiais do padrão SQL. No segundo exemplo são armazenadas cidades e suas localizações geográficas associadas: CREATE TABLE cidades ( nome varchar(80), localizacao point ); O tipo point é um exemplo de tipo de dado específico do PostgreSQL. Para terminar deve ser mencionado que, quando a tabela não é mais necessária, ou se deseja recriá-la de uma forma diferente, é possível removê-la por meio do comando: DROP TABLE nome_da_tabela; 2.4. Inserção de linhas em tabelas É utilizado o comando INSERT para inserir linhas nas tabelas: INSERT INTO clima VALUES ('São Francisco', 46, 50, 0.25, ' '); Repare que todos os tipos de dado possuem formato de entrada de dados bastante óbvios. As constantes, que não são apenas valores numéricos, geralmente devem estar entre apóstrofos ('), como no exemplo acima. O tipo date é, na verdade, muito flexível em relação aos dados que aceita, mas para este tutorial vamos nos fixar no formato sem ambigüidade mostrado acima. O tipo point requer um par de coordenadas como entrada, como mostrado abaixo: INSERT INTO cidades VALUES ('São Francisco', '(-194.0, 53.0)'); A sintaxe usada até agora requer que seja lembrada a ordem das colunas. Uma sintaxe alternativa permite declarar as colunas explicitamente: INSERT INTO clima (cidade, temp_min, temp_max, prcp, data) VALUES ('São Francisco', 43, 57, 0.0, ' '); Se for desejado, pode-se declarar as colunas em uma ordem diferente, e pode-se, também, omitir algumas colunas. Por exemplo, se a precipitação não for conhecida: INSERT INTO clima (data, cidade, temp_max, temp_min) VALUES (' ', 'Hayward', 54, 37); Muitos desenvolvedores consideram declarar explicitamente as colunas um estilo melhor que confiar na ordem implícita. Por favor, entre todos os comando mostrados acima para ter alguns dados para trabalhar nas próximas seções. Também pode ser utilizado o comando COPY para carregar uma grande quantidade de dados a partir de arquivos texto puro. Geralmente é mais rápido, porque o comando COPY é otimizado para esta finalidade, embora possua menos flexibilidade que o comando INSERT. Para servir de exemplo: COPY clima FROM '/home/user/clima.txt';

11 O arquivo contendo os dados deve poder ser acessado pelo servidor e não pelo cliente, porque o servidor lê o arquivo diretamente. Podem ser obtidas mais informações sobre o comando COPY em COPY Consultar tabelas Para trazer os dados de uma tabela, a tabela deve ser consultada. Para esta finalidade é utilizado o comando SELECT do SQL. Este comando é dividido em lista de seleção (a parte que especifica as colunas a serem trazidas), lista de tabelas (a parte que especifica as tabelas de onde os dados vão ser trazidos), e uma qualificação opcional (a parte onde são especificadas as restrições). Por exemplo, para trazer todas as linhas da tabela clima digite: SELECT * FROM clima; (aqui * é uma forma abreviada de todas as colunas ). 3 Seriam obtidos os mesmos resultados usando: SELECT cidade, temp_min, temp_max, prcp, data FROM clima; A saída deve ser: cidade temp_min temp_max prcp data São Francisco São Francisco Hayward (3 linhas) Na lista de seleção podem ser especificadas expressões, e não apenas referências a colunas. Por exemplo, pode ser escrito SELECT cidade, (temp_max+temp_min)/2 AS temp_media, data FROM clima; devendo produzir: cidade temp_media data São Francisco São Francisco Hayward (3 linhas) Perceba que a cláusula AS foi utilizada para mudar o nome da coluna de saída (a cláusula AS é opcional). A consulta pode ser qualificada, adicionando a cláusula WHERE para especificar as linhas desejadas. A cláusula WHERE contém expressões booleanas (valor verdade), e somente são retornadas as linhas para as quais o valor da expressão booleana for verdade. São permitidos os operadores booleanos usuais (AND, OR e NOT) na qualificação. Por exemplo, o comando abaixo retorna os registros do clima de São Francisco nos dias de chuva: SELECT * FROM clima WHERE cidade = 'São Francisco' AND prcp > 0.0; Resultado: cidade temp_min temp_max prcp data São Francisco (1 linha) Pode ser solicitado que os resultados da consulta sejam retornados em uma determinada ordem:

12 SELECT * FROM clima ORDER BY cidade; cidade temp_min temp_max prcp data Hayward São Francisco São Francisco Neste exemplo a ordem de classificação não está totalmente especificada e, portanto, as linhas de São Francisco podem retornar em qualquer ordem. Mas sempre seriam obtidos os resultados mostrados acima se fosse executado: SELECT * FROM clima ORDER BY cidade, temp_min; Pode ser solicitado que as linhas duplicadas sejam removidas do resultado da consulta: 4 SELECT DISTINCT cidade FROM clima; cidade Hayward São Francisco (2 linhas) Novamente, neste exemplo a ordem das linhas pode variar. Pode-se garantir resultados consistentes utilizando DISTINCT e ORDER BY juntos: 5 6 SELECT DISTINCT cidade FROM clima ORDER BY cidade; 2.6. Junções entre tabelas Até agora as consultas somente acessaram uma tabela de cada vez. As consultas podem acessar várias tabelas de uma vez, ou acessar a mesma tabela de uma maneira que várias linhas da tabela sejam processadas ao mesmo tempo. A consulta que acessa várias linhas da mesma tabela, ou de tabelas diferentes, de uma vez, é chamada de consulta de junção. Como exemplo, suponha que se queira listar todas as linhas de clima junto com a localização da cidade associada. Para se fazer isto, é necessário comparar a coluna cidade de cada linha da tabela clima com a coluna nome de todas as linhas da tabela cidades, e selecionar os pares de linha onde estes valores são correspondentes. Nota: Este é apenas um modelo conceitual, a junção geralmente é realizada de uma maneira mais eficiente que comparar de verdade cada par de linhas possível, mas isto não é visível para o usuário. Esta operação pode ser efetuada por meio da seguinte consulta: SELECT * FROM clima, cidades WHERE cidade = nome; cidade temp_min temp_max prcp data nome localizacao São Francisco São Francisco (-194,53) São Francisco São Francisco (-194,53) (2 linhas) Duas coisas devem ser observadas no resultado produzido:

13 Não existe nenhuma linha para a cidade Hayward. Isto acontece porque não existe entrada correspondente na tabela cidades para Hayward, e a junção ignora as linhas da tabela clima sem correspondência. Veremos em breve como isto pode ser mudado. Existem duas colunas contendo o nome da cidade, o que está correto porque a lista de colunas das tabelas clima e cidades estão concatenadas. Na prática isto não é desejado, sendo preferível, portanto, escrever a lista das colunas de saída explicitamente em vez de utilizar o *: SELECT cidade, temp_min, temp_max, prcp, data, localizacao FROM clima, cidades WHERE cidade = nome; Exercício: Descobrir a semântica desta consulta quando a cláusula WHERE é omitida. Como todas as colunas possuem nomes diferentes, o analisador encontra automaticamente a tabela que a coluna pertence, mas é um bom estilo qualificar completamente os nomes das colunas nas consultas de junção: SELECT clima.cidade, clima.temp_min, clima.temp_max, clima.prcp, clima.data, cidades.localizacao FROM clima, cidades WHERE cidades.nome = clima.cidade; As consultas de junção do tipo visto até agora também poderiam ser escritas da seguinte forma alternativa: SELECT * FROM clima INNER JOIN cidades ON (clima.cidade = cidades.nome); A utilização desta sintaxe não é tão comum quanto a usada acima, mas é mostrada para ajudar a entender os próximos tópicos. Agora vamos descobrir como se faz para obter as linhas de Hayward. Desejamos o seguinte: que a consulta varra a tabela clima e, para cada uma de suas linhas, encontre a linha correspondente na tabela cidades. Se não for encontrada nenhuma linha correspondente, desejamos que sejam colocados valores vazios nas colunas da tabela cidades. Este tipo de consulta é chamada de junção externa (outer join). As consultas vistas até agora são junções internas (inner join). O comando então fica assim: SELECT * FROM clima LEFT OUTER JOIN cidades ON (clima.cidade = cidades.nome); cidade temp_min temp_max prcp data nome localizacao Hayward São Francisco São Francisco (-194,53) São Francisco São Francisco (-194,53) (3 linhas) Esta consulta é chamada de junção externa esquerda (left outer join), porque a tabela mencionada à esquerda do operador de junção terá cada uma de suas linhas aparecendo na saída pelo menos uma vez, enquanto a tabela à direita terá somente as linhas correspondendo a alguma linha da tabela à esquerda aparecendo na saída. Ao listar uma linha da tabela à esquerda, para a qual não existe nenhuma linha correspondente na tabela à direita, são colocados valores vazios (null) nas colunas da tabela à direita. Exercício: Existem também a junção externa direita (right outer join) e a junção externa completa (full outer join). Tente descobrir o que fazem. Também é possível fazer a junção da tabela consigo mesma. Isto é chamado de autojunção (self join). Como exemplo, suponha que desejamos descobrir todas as linhas de clima que estão no intervalo de temperatura de outros registros de clima. Para isso é necessário comparar as colunas temp_min e temp_max de cada registro de clima com as colunas temp_min e temp_max de todos os outros registros da tabela clima, o que pode ser feito utilizando a seguinte consulta:

14 SELECT C1.cidade, C1.temp_min AS menor, C1.temp_max AS maior, C2.cidade, C2.temp_min AS menor, C2.temp_max AS maior FROM clima C1, clima C2 WHERE C1.temp_min < C2.temp_min AND C1.temp_max > C2.temp_max; cidade menor maior cidade menor maior São Francisco São Francisco Hayward São Francisco (2 linhas) A tabela clima teve seu nome mudado para C1 e C2, para permitir distinguir o lado esquerdo do lado direito da junção. Estes tipos de aliases também podem ser utilizados em outras consultas para reduzir a digitação como, por exemplo: SELECT * FROM clima w, cidades c WHERE w.cidade = c.nome; Será vista esta forma de abreviar com bastante freqüência Funções de agregação Como a maioria dos produtos de banco de dados relacional, o PostgreSQL suporta funções de agregação. Uma função de agregação computa um único resultado para várias linhas de entrada. Por exemplo, existem funções de agregação para contar (count), somar (sum), calcular a média (avg), o valor máximo (max) e o valor mínimo (min) para um conjunto de linhas. Para servir de exemplo, é possível encontrar a maior temperatura mínima ocorrida em qualquer lugar usando SELECT max(temp_min) FROM clima; max (1 linha) Se for desejado saber a cidade (ou cidades) onde esta temperatura ocorreu pode-se tentar usar SELECT cidade FROM clima WHERE temp_min = max(temp_min); ERRADO mas não vai funcionar, porque a função de agregação max não pode ser usada na cláusula WHERE (Esta restrição existe porque a cláusula WHERE determina as linhas que vão passar para o estágio de agregação e, portanto, precisa ser avaliada antes das funções de agregação serem computadas). Entretanto, como é geralmente o caso, a consulta pode ser reformulada para obter o resultado pretendido, o que será feito por meio de uma subconsulta: SELECT cidade FROM clima WHERE temp_min = (SELECT max(temp_min) FROM clima); cidade São Francisco (1 linha) Isto está correto porque a subconsulta é uma ação independente, que calcula sua agregação em separado do que está acontecendo na consulta externa.

15 As agregações também são muito úteis em combinação com a cláusula GROUP BY. Por exemplo, pode ser obtida a maior temperatura mínima observada em cada cidade usando SELECT cidade, max(temp_min) FROM clima GROUP BY cidade; cidade max Hayward 37 São Francisco 46 (2 linhas) produzindo uma linha de saída para cada cidade. Cada resultado da agregação é computado sobre as linhas da tabela correspondendo a uma cidade. As linhas agrupadas podem ser filtradas utilizando a cláusula HAVING SELECT cidade, max(temp_min) FROM clima GROUP BY cidade HAVING max(temp_min) < 40; cidade max Hayward 37 (1 linha) que mostra os mesmos resultados, mas apenas para as cidades que possuem todos os valores de temp_min abaixo de 40. Para concluir, se desejarmos somente as cidades com nome começando pela letra S podemos escrever: SELECT cidade, max(temp_min) FROM clima WHERE cidade LIKE 'S%'Œ GROUP BY cidade HAVING max(temp_min) < 40; Œ O operador LIKE faz correspondência com padrão, sendo explicado na Seção 9.7. É importante compreender a interação entre as agregações e as cláusulas WHERE e HAVING do SQL. A diferença fundamental entre WHERE e HAVING é esta: WHERE seleciona as linhas de entrada antes dos grupos e agregações serem computados (portanto, controla quais linhas irão para o computo da agregação), enquanto HAVING seleciona linhas de grupo após os grupos e agregações serem computados. Portanto, a cláusula WHERE não pode conter funções de agregação; não faz sentido tentar utilizar uma agregação para determinar quais linhas serão a entrada da agregação. Por outro lado, a cláusula HAVING sempre contém funções de agregação (A rigor, é permitido escrever uma cláusula HAVING que não possua agregação, mas é desperdício: A mesma condição poderia ser utilizada de forma mais eficiente no estágio do WHERE). 7 No exemplo anterior, a restrição do nome da cidade pode ser aplicada na cláusula WHERE, porque não necessita de nenhuma agregação, sendo mais eficiente que colocar a restrição na cláusula HAVING, porque evita realizar os procedimentos de agrupamento e agregação em todas as linhas que não atendem a cláusula WHERE Atualizações As linhas existentes podem ser atualizadas utilizando o comando UPDATE. Suponha que foi descoberto que as leituras de temperatura estão todas mais altas 2 graus após 28 de novembro de Os dados podem ser atualizados da seguinte maneira:

16 UPDATE clima SET temp_max = temp_max - 2, temp_min = temp_min - 2 WHERE data > ' '; Agora vejamos o novo estado dos dados: SELECT * FROM clima; cidade temp_min temp_max prcp data São Francisco São Francisco Hayward (3 linhas) 2.9. Exclusões As linhas podem ser removidas da tabela através do comando DELETE. Suponha que não estamos mais interessados nos registros do clima em Hayward. Então precisamos excluir estas linhas da tabela. DELETE FROM clima WHERE cidade = 'Hayward'; Todos os registros de clima pertencentes a Hayward são removidos. SELECT * FROM clima; cidade temp_min temp_max prcp data São Francisco São Francisco (2 linhas) Deve-se tomar cuidado com comandos na forma: DELETE FROM nome_da_tabela; Sem uma qualificação, o comando DELETE remove todas as linhas da tabela, deixando-a vazia. O sistema não solicita confirmação antes de realizar esta operação! Notas 1. Os arquivos basics.sql (./basics.sql) e advanced.sql (./advanced.sql) foram traduzidos e colocados como links nesta tradução. Para usá-los basta salvar os arquivos em disco, abrir o interpretador de comandos, tornar o diretório onde os arquivos foram salvos o diretório corrente, executar na linha de comando psql -s meu_bd e usar o comando \i basics.sql ou \i advanced.sql para executar o arquivo, como mostrado neste capítulo. (N. do T.) 2. Use o comando make --version para saber se o make utilizado é o make do GNU. (N. do T.) 3. Embora o SELECT * seja útil para consultas rápidas, geralmente é considerado um estilo ruim para código em produção, uma vez que a adição de uma coluna à tabela mudaria os resultados. 4. Para o Oracle 9i as palavras chave UNIQUE e DISTINCT são sinônimos, podendo ser usada qualquer uma das duas no comando SELECT. (N. do T.) 5. Em alguns sistemas de banco de dados, incluindo as versões antigas do PostgreSQL, a implementação do DISTINCT ordena automaticamente as linhas e, por isso, o ORDER BY é redundante. Mas isto não é requerido pelo padrão SQL, e o PostgreSQL corrente não garante que DISTINCT faça com que as linhas sejam ordenadas.

17 6. Oracle 9i Se for especificado o operador DISTINCT no comando SELECT, então a cláusula ORDER BY não pode fazer referência a colunas que não aparecem na lista de seleção. (Foi observado que esta restrição também se aplica ao PostgreSQL, ao DB2 e ao SQL Server). (N. do T.) 7. Consulte o Exemplo 7-1 (N. do T.) Capítulo 3. Funcionalidades avançadas 3.1. Introdução Nos capítulos anteriores foi descrita a utilização básica da linguagem SQL para armazenar e acessar dados no PostgreSQL. Agora serão mostradas algumas funcionalidades mais avançadas da linguagem SQL que simplificam a gerência, e evitam a perda e a corrupção dos dados. No final serão vistas algumas extensões do PostgreSQL. Em certas ocasiões este capítulo faz referência aos exemplos encontrados no Capítulo 2 para modificá-los ou melhorá-los, portanto recomenda-se que este capítulo já tenha sido lido. Alguns exemplos do presente capítulo também se encontram no arquivo advanced.sql (./advanced.sql) no diretório do tutorial. Este arquivo também contém dados dos exemplos a serem carregados, que não serão repetidos aqui (consulte a Seção 2.1 para saber como usar este arquivo) Visões Reveja as consultas na Seção 2.6. Supondo que a consulta combinando os registros de clima e de localização das cidades seja de particular interesse para um aplicativo, mas que não se deseja digitar esta consulta toda vez que for necessária, então é possível criar uma visão baseada na consulta, atribuindo um nome a esta consulta pelo qual será possível referenciá-la como se fosse uma tabela comum. CREATE VIEW minha_visao AS SELECT cidade, temp_min, temp_max, prcp, data, localizacao FROM clima, cidades WHERE cidade = nome; SELECT * FROM minha_visao; Fazer livre uso de visões é um aspecto chave de um bom projeto de banco de dados SQL. As visões permitem encapsular, atrás de interfaces que não mudam, os detalhes da estrutura das tabelas, que podem mudar na medida em que os aplicativos evoluem. As visões podem ser utilizadas em praticamente todos os lugares onde uma tabela real pode ser utilizada. Construir visões baseadas em visões não é raro Chaves estrangeiras Reveja as tabelas clima e cidades no Capítulo 2. Considere o seguinte problema: Desejamos ter certeza que não serão inseridas linhas na tabela clima sem que haja um registro correspondente na tabela cidades. Isto é chamado de manter a integridade referencial dos dados. Em sistemas de banco de dados muito simples poderia ser implementado (caso fosse) olhando primeiro a tabela cidades para verificar se existe a linha correspondente e, depois, inserir ou rejeitar a nova linha de clima. Esta abordagem possui vários problemas, e é muito inconveniente, por isso o PostgreSQL pode realizar esta operação por você. A nova declaração das tabelas ficaria assim: CREATE TABLE cidades ( cidade varchar(80) primary key, localizacao point );

18 CREATE TABLE clima ( cidade varchar(80) references cidades(cidade), temp_min int, temp_max int, prcp real, data date ); Agora, ao se tentar inserir uma linha inválida: INSERT INTO clima VALUES ('Berkeley', 45, 53, 0.0, ' '); ERROR: insert or update on table "clima" violates foreign key constraint "clima_cidade_fkey" DETAIL: Key (cidade)=(berkeley) is not present in table "cidades". -- Tradução da mensagem ERRO: inserção ou atualização na tabela "clima" viola a restrição de chave estrangeira "clima_cidade_fkey" DETALHE: Chave (cidade)=(berkeley) não está presente na tabela "cidades". O comportamento das chaves estrangeiras pode receber ajuste fino no aplicativo. Não iremos além deste exemplo simples neste tutorial, mas consulte o Capítulo 5 para obter informações adicionais. Com certeza o uso correto de chaves estrangeiras melhora a qualidade dos aplicativos de banco de dados, portanto incentivamos muito que se aprenda a usá-las Transações Transação é um conceito fundamental de todo sistema de banco de dados. O ponto essencial da transação é englobar vários passos em uma única operação de tudo ou nada. Os estados intermediários entre os passos não são vistos pelas demais transações simultâneas e, se ocorrer alguma falha que impeça a transação chegar até o fim, então nenhum dos passos intermediários irá afetar o banco de dados de forma alguma. Por exemplo, considere um banco de dados de uma instituição financeira contendo o saldo da conta corrente de vários clientes, assim como o saldo total dos depósitos de cada agência. Suponha que se deseje transferir $ da conta da Alice para a conta do Bob. Simplificando barbaramente, os comandos SQL para esta operação seriam: UPDATE conta_corrente SET saldo = saldo WHERE nome = 'Alice'; UPDATE filiais SET saldo = saldo WHERE nome = (SELECT nome_filial FROM conta_corrente WHERE nome = 'Alice'); UPDATE conta_corrente SET saldo = saldo WHERE nome = 'Bob'; UPDATE filiais SET saldo = saldo WHERE nome = (SELECT nome_filial FROM conta_corrente WHERE nome = 'Bob'); Os detalhes destes comandos não são importantes aqui; o importante é o fato de existirem várias atualizações distintas envolvidas para realizar uma operação bem simples. A contabilidade quer ter certeza que todas as atualizações são realizadas, ou que nenhuma delas é realizada. Não é interessante uma falha no sistema fazer com que Bob receba $ que não foi debitado da Alice. Também a Alice não continuará sendo uma cliente satisfeita se o dinheiro for debitado da conta dela e não for creditado na de Bob. É necessário garantir que, caso aconteça algo errado no meio da operação, nenhum dos passos executados até este ponto produza efeito. Agrupar as atualizações em uma transação dá esta garantia. Uma transação é dita como sendo atômica: do ponto de vista das outras transações, ou a transação acontece completamente ou nada acontece. Desejamos, também, ter a garantia de estando a transação completa e aceita pelo sistema de banco de dados, que esta fique permanentemente gravada, e não seja perdida mesmo no caso de acontecer uma pane logo em seguida. Por exemplo, se estiver sendo registrado saque em dinheiro pelo Bob não se deseja, de forma alguma, que o débito em sua conta corrente

19 desapareça por causa de uma pane ocorrida logo depois dele sair da agência. Um banco de dados transacional garante que todas as atualizações realizadas por uma transação ficam registradas em meio de armazenamento permanente (ou seja, em disco), antes da transação ser considerada completa. Outra propriedade importante dos bancos de dados transacionais está muito ligada à noção de atualizações atômicas: quando várias transações estão executando simultaneamente, cada uma delas não deve enxergar as alterações incompletas efetuadas pelas outras. Por exemplo, se uma transação está ocupada totalizando o saldo de todas as agências, não pode ser visto o débito efetuado na agência da Alice mas ainda não creditado na agência do Bob, nem o contrário. Portanto, as transações devem ser tudo ou nada não apenas em termos do efeito permanente no banco de dados, mas também em termos de visibilidade durante o processamento. As atualizações feitas por uma transação em andamento não podem ser vistas pelas outras transações enquanto não terminar, quando todas as atualizações se tornam visíveis ao mesmo tempo. No PostgreSQL a transação é definida envolvendo os comandos SQL da transação pelos comandos BEGIN e COMMIT. Sendo assim, a nossa transação bancária ficaria: BEGIN; UPDATE conta_corrente SET saldo = saldo WHERE nome = 'Alice'; -- etc etc COMMIT; Se no meio da transação for decidido que esta não deve ser efetivada (talvez porque tenha sido visto que o saldo da Alice ficou negativo), pode ser executado o comando ROLLBACK em vez do COMMIT para fazer com que todas as atualizações sejam canceladas. O PostgreSQL, na verdade, trata todo comando SQL como sendo executado dentro de uma transação. Se não for utilizado o comando BEGIN, então cada comando possui um BEGIN e, se der tudo certo, um COMMIT individual envolvendo-o. Um grupo de comandos envolvidos por um BEGIN e um COMMIT é algumas vezes chamado de bloco de transação. Nota: Algumas bibliotecas cliente emitem um comando BEGIN e um comando COMMIT automaticamente, fazendo com que seja obtido o efeito de um bloco de transação sem ser perguntado. Verifique a documentação da interface utilizada. É possível controlar os comandos na transação de uma forma mais granular utilizando os pontos de salvamento (savepoints). Os pontos de salvamento permitem cancelar partes da transação seletivamente, e efetivar as demais partes. Após definir o ponto de salvamento, através da instrução SAVEPOINT, é possível cancelar a transação até o ponto de salvamento, se for necessário, usando ROLLBACK TO. Todas as alterações no banco de dados efetuadas entre a definição do ponto de salvamento e o cancelamento são desprezadas, mas as alterações efetuadas antes do ponto de salvamento são mantidas. Após cancelar até o ponto de salvamento este ponto de salvamento continua definido e, portanto, é possível cancelar várias vezes. Ao contrário, havendo certeza que não vai ser mais necessário cancelar até o ponto de salvamento, o ponto de salvamento pode ser liberado, para que o sistema possa liberar alguns recursos. Deve-se ter em mente que liberar ou cancelar até um ponto de salvamento libera, automaticamente, todos os ponto de salvamento definidos após o mesmo. Tudo isto acontece dentro do bloco de transação e, portanto, nada disso é visto pelas outras sessões do banco de dados. Quando o bloco de transação é efetivado, as ações efetivadas se tornam visíveis como uma unidade para as outras sessões, enquanto as ações canceladas nunca se tornam visíveis. Recordando o banco de dados da instituição financeira, suponha que devesse ser debitado $ da conta da Alice e creditado na conta do Bob, mas que foi descoberto em seguida que era para ser creditado na conta do Wally. Isso poderia ser feito utilizando pontos de salvamento como mostrado abaixo:

20 BEGIN; UPDATE conta_corrente SET saldo = saldo WHERE nome = 'Alice'; SAVEPOINT meu_ponto_de_salvamento; UPDATE conta_corrente SET saldo = saldo WHERE nome = 'Bob'; -- uai... o certo é na conta do Wally ROLLBACK TO meu_ponto_de_salvamento; UPDATE conta_corrente SET saldo = saldo WHERE nome = 'Wally'; COMMIT; Obviamente este exemplo está simplificado ao extremo, mas é possível efetuar um grau elevado de controle sobre a transação através do uso de pontos de salvamento. Além disso, a instrução ROLLBACK TO é a única forma de obter novamente o controle sobre um bloco de transação colocado no estado interrompido devido a um erro, fora cancelar completamente e começar tudo de novo Herança Herança é um conceito de banco de dados orientado a objeto, que abre novas possibilidades interessantes ao projeto de banco de dados. Vamos criar duas tabelas: a tabela cidades e a tabela capitais. Como é natural, as capitais também são cidades e, portanto, deve existir alguma maneira para mostrar implicitamente as capitais quando todas as cidades são mostradas. Se formos bastante perspicazes, poderemos criar um esquema como este: CREATE TABLE capitais ( nome text, populacao real, altitude int, -- (em pés) estado char(2) ); CREATE TABLE interior ( nome text, populacao real, altitude int -- (em pés) ); CREATE VIEW cidades AS SELECT nome, populacao, altitude FROM capitais UNION SELECT nome, populacao, altitude FROM interior; Este esquema funciona bem para as consultas, mas não é bom quando é necessário atualizar várias linhas, entre outras coisas. Esta é uma solução melhor: CREATE TABLE cidades ( nome text, populacao real, altitude int -- (em pés) ); CREATE TABLE capitais ( estado char(2) ) INHERITS (cidades); Neste caso, as linhas da tabela capitais herdam todas as colunas (nome, populacao e altitude) da sua tabela ancestral cidades. O tipo da coluna nome é text, um tipo nativo do PostgreSQL para cadeias de caracteres de tamanho

Tutorial do PostgreSQL 7.3.2. The PostgreSQL Global Development Group

Tutorial do PostgreSQL 7.3.2. The PostgreSQL Global Development Group Tutorial do PostgreSQL 7.3.2 The PostgreSQL Global Development Group Tutorial do PostgreSQL 7.3.2 por The PostgreSQL Global Development Group Copyright 1996-2002 The PostgreSQL Global Development Group

Leia mais

SQL é uma linguagem de consulta que implementa as operações da álgebra relacional de forma bem amigável.

SQL é uma linguagem de consulta que implementa as operações da álgebra relacional de forma bem amigável. SQL (Structured Query Language) SQL é uma linguagem de consulta que implementa as operações da álgebra relacional de forma bem amigável. Além de permitir a realização de consultas, SQL possibilita: definição

Leia mais

SQL. SQL (Structured Query Language) Comando CREATE TABLE. SQL é uma linguagem de consulta que possibilita:

SQL. SQL (Structured Query Language) Comando CREATE TABLE. SQL é uma linguagem de consulta que possibilita: SQL Tópicos Especiais Modelagem de Dados Prof. Guilherme Tavares de Assis Universidade Federal de Ouro Preto UFOP Instituto de Ciências Exatas e Biológicas ICEB Mestrado Profissional em Ensino de Ciências

Leia mais

Comandos de Manipulação

Comandos de Manipulação SQL - Avançado Inserção de dados; Atualização de dados; Remoção de dados; Projeção; Seleção; Junções; Operadores: aritméticos, de comparação,de agregação e lógicos; Outros comandos relacionados. SQL SQL

Leia mais

ORACLE 11 G INTRODUÇÃO AO ORACLE, SQL,PL/SQL. Carga horária: 32 Horas

ORACLE 11 G INTRODUÇÃO AO ORACLE, SQL,PL/SQL. Carga horária: 32 Horas ORACLE 11 G INTRODUÇÃO AO ORACLE, SQL,PL/SQL Carga horária: 32 Horas Pré-requisito: Para que os alunos possam aproveitar este treinamento ao máximo, é importante que eles tenham participado dos treinamentos

Leia mais

SQL Linguagem de Manipulação de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

SQL Linguagem de Manipulação de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri SQL Linguagem de Manipulação de Dados Banco de Dados SQL DML SELECT... FROM... WHERE... lista atributos de uma ou mais tabelas de acordo com alguma condição INSERT INTO... insere dados em uma tabela DELETE

Leia mais

SQL Structured Query Language

SQL Structured Query Language Janai Maciel SQL Structured Query Language (Banco de Dados) Conceitos de Linguagens de Programação 2013.2 Structured Query Language ( Linguagem de Consulta Estruturada ) Conceito: É a linguagem de pesquisa

Leia mais

Introdução à Banco de Dados. Nathalia Sautchuk Patrício

Introdução à Banco de Dados. Nathalia Sautchuk Patrício Introdução à Banco de Dados Nathalia Sautchuk Patrício Histórico Início da computação: dados guardados em arquivos de texto Problemas nesse modelo: redundância não-controlada de dados aplicações devem

Leia mais

ADMINISTRAÇÃO DE BANCO DE DADOS

ADMINISTRAÇÃO DE BANCO DE DADOS ADMINISTRAÇÃO DE BANCO DE DADOS ARTEFATO 02 AT02 Diversos I 1 Indice ESQUEMAS NO BANCO DE DADOS... 3 CRIANDO SCHEMA... 3 CRIANDO TABELA EM DETERMINADO ESQUEMA... 4 NOÇÕES BÁSICAS SOBRE CRIAÇÃO E MODIFICAÇÃO

Leia mais

Instituto Educacional de Castro Tecnologia em Sistemas para Internet

Instituto Educacional de Castro Tecnologia em Sistemas para Internet Instituto Educacional de Castro Tecnologia em Sistemas para Internet Profº. Luciano R. Rocha INSTALAÇÃO E MANUTENÇÃO DE BANCO DE DADOS TIPOS DE DADO Nome Aliases Descrição bigint int8 inteiro de oito bytes

Leia mais

Histórico de revisões

Histórico de revisões Apostila 3 Histórico de revisões Data Versão Descrição Autor 30/09/2011 1.0 Criação da primeira versão HEngholmJr CONTEÚDO Exclusão de registros Consultas por Dados de Resumo Group by / Having Funções

Leia mais

SQL Linguagem de Definição de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

SQL Linguagem de Definição de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri SQL Linguagem de Definição de Dados Banco de Dados SQL Structured Query Language Uma das mais importantes linguagens relacionais (se não a mais importante) Exemplos de SGBD que utilizam SQL Oracle Informix

Leia mais

Descrição Tinyint[(M)] Inteiro pequeno. Varia de 128 até +127

Descrição Tinyint[(M)] Inteiro pequeno. Varia de 128 até +127 Disciplina: Tópicos Especiais em TI PHP Este material foi produzido com base nos livros e documentos citados abaixo, que possuem direitos autorais sobre o conteúdo. Favor adquiri-los para dar continuidade

Leia mais

PROVA ESPECÍFICA Cargo 04

PROVA ESPECÍFICA Cargo 04 10 PROVA ESPECÍFICA Cargo 04 QUESTÃO 21 Analise as seguintes afirmativas: I. Uma das funções de um DBA é gerenciar os mecanismos de segurança de acesso aos dados armazenados em um SGBD (Sistema Gerenciador

Leia mais

BANCO DE DADOS Parte 4

BANCO DE DADOS Parte 4 BANCO DE DADOS Parte 4 A Linguagem SQL Introdução Desenvolvida pelo depto de pesquisa da IBM na década de 1970 (System R) Linguagem padrão de BD Relacionais; Apresenta várias padrões evolutivos: SQL86,

Leia mais

Banco de Dados. Maurício Edgar Stivanello

Banco de Dados. Maurício Edgar Stivanello Banco de Dados Maurício Edgar Stivanello Agenda Conceitos Básicos SGBD Projeto de Banco de Dados SQL Ferramentas Exemplo Dado e Informação Dado Fato do mundo real que está registrado e possui um significado

Leia mais

Banco de Dados Oracle 10g: Introdução à Linguagem SQL

Banco de Dados Oracle 10g: Introdução à Linguagem SQL Oracle University Entre em contato: 0800 891 6502 Banco de Dados Oracle 10g: Introdução à Linguagem SQL Duração: 5 Dias Objetivos do Curso Esta classe se aplica aos usuários do Banco de Dados Oracle8i,

Leia mais

Básico da Linguagem SQL. Definição de Esquemas em SQL. SQL(Structured Query Language)

Básico da Linguagem SQL. Definição de Esquemas em SQL. SQL(Structured Query Language) Básico da Linguagem SQL Definição de Esquemas em SQL SQL(Structured Query Language) Desenvolvida como a linguagem de consulta do protótipo de SGBD Sistema R (IBM, 1976). Adotada como linguagem padrão de

Leia mais

SQL - Structured Query Language, ou Linguagem de Consulta Estruturada ou SQL

SQL - Structured Query Language, ou Linguagem de Consulta Estruturada ou SQL SQL - Structured Query Language, ou Linguagem de Consulta Estruturada ou SQL Criar uma base de dados (criar um banco de dados) No mysql: create database locadora; No postgresql: createdb locadora Criar

Leia mais

SQL Linguagem de Definição de Dados. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

SQL Linguagem de Definição de Dados. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri SQL Linguagem de Definição de Dados 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

Leia mais

SQL - Banco de Dados. Disciplina: Banco de Dados. Professor: José Antônio. José Antônio - CEFET-RN 23/09/2015

SQL - Banco de Dados. Disciplina: Banco de Dados. Professor: José Antônio. José Antônio - CEFET-RN 23/09/2015 SQL - Banco de Dados 1 Disciplina: Banco de Dados Professor: José Antônio 2 Tópicos de discussão Criando um banco de dados Incluindo, atualizando e excluindo linhas nas tabelas Pesquisa básica em tabelas

Leia mais

TRANSAÇÕES. Considerando que estes comandos fazem parte de uma TRANSAÇÃO (veremos como indicar isso):

TRANSAÇÕES. Considerando que estes comandos fazem parte de uma TRANSAÇÃO (veremos como indicar isso): TRANSAÇÕES 1. Visão Geral Uma transação é uma unidade lógica de trabalho (processamento) formada por um conjunto de comandos SQL cujo objetivo é preservar a integridade e a consistência dos dados. Ao final

Leia mais

Banco de Dados I. Aula 12 - Prof. Bruno Moreno 04/10/2011

Banco de Dados I. Aula 12 - Prof. Bruno Moreno 04/10/2011 Banco de Dados I Aula 12 - Prof. Bruno Moreno 04/10/2011 Plano de Aula SQL Definição Histórico SQL e sublinguagens Definição de dados (DDL) CREATE Restrições básicas em SQL ALTER DROP 08:20 Definição de

Leia mais

Prof. Carlos Majer Aplicações Corporativas UNICID

Prof. Carlos Majer Aplicações Corporativas UNICID Este material pertence a Carlos A. Majer, Professor da Unidade Curricular: Aplicações Corporativas da Universidade Cidade de São Paulo UNICID Licença de Uso Este trabalho está licenciado sob uma Licença

Leia mais

SQL (Structured Query Language)

SQL (Structured Query Language) (Structured Query Language) I DDL (Definição de Esquemas Relacionais)... 2 I.2 Domínios... 2 I.3 Criação de Tabelas... 2 I.4 Triggers... 4 II DML Linguagem para manipulação de dados... 5 II.2 Comando SELECT...

Leia mais

Segurança de Acesso a Banco de Dados no MS SQL Server

Segurança de Acesso a Banco de Dados no MS SQL Server Segurança de Acesso a Banco de Dados no MS SQL Server Para efetuar com sucesso os exemplos que serão mostrados a seguir é necessário que exista no SQL Server uma pessoa que se conecte como Administrador,

Leia mais

Introdução à Engenharia da Computação. Banco de Dados Professor Machado

Introdução à Engenharia da Computação. Banco de Dados Professor Machado Introdução à Engenharia da Computação Banco de Dados Professor Machado 1 Sistemas isolados Produção Vendas Compras Banco de Dados Produtos... Banco de Dados Produtos... Banco de Dados Produtos... Desvantagens:

Leia mais

Structure Query Language SQL Guilherme Pontes lf.pontes.sites.uol.com.br

Structure Query Language SQL Guilherme Pontes lf.pontes.sites.uol.com.br 1. Abordagem geral Structure Query Language SQL Guilherme Pontes lf.pontes.sites.uol.com.br Em primeiro plano, deve-se escolher com qual banco de dados iremos trabalhar. Cada banco possui suas vantagens,

Leia mais

Structured Query Language (SQL)

Structured Query Language (SQL) SQL Histórico Structured Query Language (SQL) Foi desenvolvido pela IBM em meados dos anos 70 como uma linguagem de manipulação de dados (DML - Data Manipulation Language) para suas primeiras tentativas

Leia mais

SQL. Structured Query Language. Copyright 2003 2014 Prof. Edison Andrade Martins Morais http://www.edison.eti.br prof@edison.eti.

SQL. Structured Query Language. Copyright 2003 2014 Prof. Edison Andrade Martins Morais http://www.edison.eti.br prof@edison.eti. SQL Structured Query Language Copyright 2003 2014 Prof. Edison Andrade Martins Morais http://www.edison.eti.br prof@edison.eti.br Sumário 1.CREATE TABLE... 5 1.1. Sintaxe... 5 1.2. A instrução CREATE TABLE

Leia mais

Gerenciamento de um Sistema de

Gerenciamento de um Sistema de SBD Gerenciamento de um Sistema de Banco de Dados Prof. Michel Nobre Muza ua michel.muza@ifsc.edu.br Prof. Marcos Antonio Viana Nascimento Por que é importante: Motivação Participar na organização e no

Leia mais

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

AULA 2 INTERAÇÃO COM O BANCO DE DADOS AULA 2 INTERAÇÃO COM O BANCO DE DADOS BANCO DE DADOS POSTGRESQL O PostgreSQL é um sistema gerenciador de banco de dados dos mais robustos e avançados do mundo. Seu código é aberto e é totalmente gratuito,

Leia mais

Controle de transações em SQL

Controle de transações em SQL Transações Controle de transações em SQL Uma transação é implicitamente iniciada quando ocorre uma operação que modifica o banco de dados (INSERT, UPDATE ou DELETE). Uma transação pode terminar normalmente

Leia mais

UFCD 787. Administração de base de dados. Elsa Marisa S. Almeida

UFCD 787. Administração de base de dados. Elsa Marisa S. Almeida UFCD 787 Administração de base de dados Elsa Marisa S. Almeida 1 Objectivos Replicação de base de dados Gestão de transacções Cópias de segurança Importação e exportação de dados Elsa Marisa S. Almeida

Leia mais

SQL. Prof. Márcio Bueno. {bd2tarde,bd2noite}@marciobueno.com

SQL. Prof. Márcio Bueno. {bd2tarde,bd2noite}@marciobueno.com SQL Prof. Márcio Bueno {bd2tarde,bd2noite}@marciobueno.com Material dos professores Ana Carolina Salgado, Fernando Foncesa e Valéria Times (CIn/UFPE) SQL SQL - Structured Query Language Linguagem de Consulta

Leia mais

COMPETÊNCIAS ESPECÍFICAS Compreender e utilizar a linguagem SQL, na construção e manutenção de uma base de dados.

COMPETÊNCIAS ESPECÍFICAS Compreender e utilizar a linguagem SQL, na construção e manutenção de uma base de dados. PLANIFICAÇÃO DA DISCIPLINA DE SISTEMAS DE INFORMAÇÃO 12.ºH CURSO PROFISSIONAL DE TÉCNICO MULTIMÉDIA ANO LECTIVO 2013/2014 6. LINGUAGENS DE PROGRAMAÇÃO IV Pré-requisitos: - Planificar e estruturar bases

Leia mais

MySQL - Operações com SQL básico

MySQL - Operações com SQL básico MySQL - Operações com SQL básico Para testar se o MySQL esta instalado corretamente, execute a seguinte linha no prompt do DOS: c:\mysql\bin\mysql Se tudo estiver nos seus devidos lugares você vai receber

Leia mais

FEAP - Faculdade de Estudos Avançados do Pará PROFª LENA VEIGA PROJETOS DE BANCO DE DADOS UNIDADE V- SQL

FEAP - Faculdade de Estudos Avançados do Pará PROFª LENA VEIGA PROJETOS DE BANCO DE DADOS UNIDADE V- SQL Quando os Bancos de Dados Relacionais estavam sendo desenvolvidos, foram criadas linguagens destinadas à sua manipulação. O Departamento de Pesquisas da IBM desenvolveu a SQL como forma de interface para

Leia mais

Faculdade Pitágoras 16/08/2011. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet

Faculdade Pitágoras 16/08/2011. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet Faculdade Pitágoras Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL A linguagem SQL é responsável por garantir um bom nível

Leia mais

Faculdade Pitágoras. Curso Superior de Tecnologia: Banco de Dados. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL

Faculdade Pitágoras. Curso Superior de Tecnologia: Banco de Dados. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL Faculdade Pitágoras Curso Superior de Tecnologia: Banco de Dados Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL A linguagem SQL é responsável por garantir um bom nível de independência do

Leia mais

Álgebra Relacional. Conjunto de operações que usa uma ou duas relações como entrada e gera uma relação de saída. Operações básicas:

Álgebra Relacional. Conjunto de operações que usa uma ou duas relações como entrada e gera uma relação de saída. Operações básicas: Álgebra Relacional Conjunto de operações que usa uma ou duas relações como entrada e gera uma relação de saída operação (REL 1 ) REL 2 operação (REL 1,REL 2 ) REL 3 Operações básicas: seleção projeção

Leia mais

3) Palavra-chave distinct (select-from). Obter apenas os pibs distintos entre si.

3) Palavra-chave distinct (select-from). Obter apenas os pibs distintos entre si. NOME: BRUNO BRUNELI BANCO DE DADOS - ADS create database ProducaoMinerais use ProducaoMinerais create table Mineral( nome varchar(15) primary key, preco real) create table Pais( nome varchar(30) primary

Leia mais

Gabarito - Banco de Dados SQL - 30/07/2013 AULA 01

Gabarito - Banco de Dados SQL - 30/07/2013 AULA 01 Gabarito - Banco de Dados SQL - 30/07/2013 AULA 01 1 1- Bancos de dados compreendem desde agendas telefônicas até sistemas computadorizados. (Sim) 2- Só podemos instalar o SQL Server Express se tivermos

Leia mais

Núcleo de Pós Graduação Pitágoras

Núcleo de Pós Graduação Pitágoras Núcleo de Pós Graduação Pitágoras Professor: Fernando Zaidan Disciplina: Modelagem e Projeto de Banco de Dados Especialização em Tecnologia da Informação - Ênfases Março- 2009 1 Modelo Físico Introdução

Leia mais

Programação WEB II. PHP e Banco de Dados. progweb2@thiagomiranda.net. Thiago Miranda dos Santos Souza

Programação WEB II. PHP e Banco de Dados. progweb2@thiagomiranda.net. Thiago Miranda dos Santos Souza PHP e Banco de Dados progweb2@thiagomiranda.net Conteúdos Os materiais de aula, apostilas e outras informações estarão disponíveis em: www.thiagomiranda.net PHP e Banco de Dados É praticamente impossível

Leia mais

Principais Instruções em SQL. Contidas nesta apostila as principais instruções em SQL para a manutenção em Bancos de Dados.

Principais Instruções em SQL. Contidas nesta apostila as principais instruções em SQL para a manutenção em Bancos de Dados. Principais Instruções em SQL Contidas nesta apostila as principais instruções em SQL para a manutenção em Bancos de Dados. Atenção: Esta apostila foi desenvolvida com o auxílio on-line do banco MS-ACCESS,

Leia mais

ADMINISTRAÇÃO DE BANCO DE DADOS

ADMINISTRAÇÃO DE BANCO DE DADOS ADMINISTRAÇÃO DE BANCO DE DADOS ARTEFATO 03 AT03 Diversos II Page 1 of 25 Indice EXEMPLOS COM GROUP BY E COM A CLÁUSULA HAVING - TOTALIZANDO DADOS... 3 GROUP BY... 3 Cláusula HAVING com GROUP BY... 5 ENTENDENDO

Leia mais

Banco de Dados. Prof. Antonio

Banco de Dados. Prof. Antonio Banco de Dados Prof. Antonio SQL - Structured Query Language O que é SQL? A linguagem SQL (Structure query Language - Linguagem de Consulta Estruturada) é a linguagem padrão ANSI (American National Standards

Leia mais

CONCORRÊNCIA. 1. Introdução. Recursos exclusivos. Não necessita controle. Abundância de recursos compartilhados. Controle necessário mas mínimo

CONCORRÊNCIA. 1. Introdução. Recursos exclusivos. Não necessita controle. Abundância de recursos compartilhados. Controle necessário mas mínimo CONCORRÊNCIA 1. Introdução Recursos exclusivos Não necessita controle Abundância de recursos compartilhados Controle necessário mas mínimo Harmonia, provavelmente não haverá conflito Recursos disputados

Leia mais

IF685 Gerenciamento de Dados e Informação - Prof. Robson Fidalgo 1

IF685 Gerenciamento de Dados e Informação - Prof. Robson Fidalgo 1 IF685 Gerenciamento de Dados e Informação - Prof. Robson Fidalgo 1 Banco de Dados Fundamentos de SQL Structured Query Language Aula2 Apresentado por: Robson do Nascimento Fidalgo rdnf@cin.ufpe.br IF685

Leia mais

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL Prof. MSc. Hugo Souza Iniciando nossas aulas sobre

Leia mais

PostgreSQL 9.4 Primeiros Passos no Microsoft Windows

PostgreSQL 9.4 Primeiros Passos no Microsoft Windows www.masiena.com.br marcio@masiena.com.br masiena@hotmail.com PostgreSQL 9.4 Primeiros Passos no Microsoft Windows Uma das maiores dificuldades quando se começa a trabalhar com qualquer software é dar os

Leia mais

Treinamento sobre SQL

Treinamento sobre SQL Treinamento sobre SQL Como Usar o SQL Os dois programas que você mais utilizara no SQL Server são: Enterprise Manager e Query Analyzer. No Enterprise Manager, você pode visualizar e fazer alterações na

Leia mais

UNIVERSIDADE VEIGA DE ALMEIDA CURSO DE BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO CURSO SUPERIOR DE TECNOLOGIA EM PROCESSAMENTO DE DADOS BANCO DE DADOS

UNIVERSIDADE VEIGA DE ALMEIDA CURSO DE BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO CURSO SUPERIOR DE TECNOLOGIA EM PROCESSAMENTO DE DADOS BANCO DE DADOS CURSO DE BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO CURSO SUPERIOR DE TECNOLOGIA EM PROCESSAMENTO DE DADOS CLAUDIO RIBEIRO DA SILVA MARÇO 1997 2 1 - CONCEITOS GERAIS DE 1.1 - Conceitos Banco de Dados - Representa

Leia mais

Tarefa Orientada 19 Triggers

Tarefa Orientada 19 Triggers Tarefa Orientada 19 Triggers Objectivos: Criar triggers AFTER Criar triggers INSTEAD OF Exemplos de utilização Os triggers são um tipo especial de procedimento que são invocados, ou activados, de forma

Leia mais

Linguagem de Consulta Estruturada SQL- DML

Linguagem de Consulta Estruturada SQL- DML Linguagem de Consulta Estruturada SQL- DML INTRODUÇÃO A SQL - Structured Query Language, foi desenvolvido pela IBM em meados dos anos 70 como uma linguagem de manipulação de dados (DML - Data Manipulation

Leia mais

ROTEIRO. A Linguagem SQL (I parte) CEFET.PHB - PI Prof. Jefferson Silva. As partes da linguagem SQL. A Linguagem de Definição de Dados (SQL-DDL)

ROTEIRO. A Linguagem SQL (I parte) CEFET.PHB - PI Prof. Jefferson Silva. As partes da linguagem SQL. A Linguagem de Definição de Dados (SQL-DDL) CEFET.PHB - PI Prof. Jefferson Silva SQL (MySql) ROTEIRO I PARTE - INTRODUÇÃO AO SQL COMANDOS E SUAS PARTES DA LINGUAGEM SQL II PARTE ADMINSTRAÇÃO DE BANCO DE DADOS UTILIZANDO MYSQL PRINCIPAIS INSTRUÇÕES

Leia mais

Modelo de Dados Relacional Restrições de um Banco de Dados Relacional

Modelo de Dados Relacional Restrições de um Banco de Dados Relacional Modelo de Dados Relacional e as Restrições de um Banco de Dados Relacional Modelo de Dados Relacional Conceitos do Modelo Relacional Representa o banco de dados como uma coleção de relações. Comparação

Leia mais

Bases de Dados 2005/2006. Aula 5

Bases de Dados 2005/2006. Aula 5 Bases de Dados 2005/2006 Aula 5 Sumário -1. (T.P.C.) Indique diferenças entre uma tabela e uma relação. 0. A base de dados Projecto 1. SQL Join (variantes) a. Cross Join b. Equi-Join c. Natural Join d.

Leia mais

Introdução ao Derby. Version 10.2 Derby Document build: December 11, 2006, 7:16:07 AM (PST)

Introdução ao Derby. Version 10.2 Derby Document build: December 11, 2006, 7:16:07 AM (PST) Introdução ao Derby Version 10.2 Derby Document build: December 11, 2006, 7:16:07 AM (PST) Contents Direitos autorais reservados... 3 Introdução ao Derby...4 Opções de implementação...4 Requisitos do

Leia mais

1.264 Aula 7. Introdução ao SQL

1.264 Aula 7. Introdução ao SQL 1.264 Aula 7 Introdução ao SQL Linguagem Estruturada de Consulta (SQL) Aula 7 SELECT, INSERT, DELETE, UPDATE Junções Aula 8 Subconsultas Visões (tabelas virtuais) Índices Transações Segurança Desempenho

Leia mais

PostgreSQL. www.postgresql.org. André Luiz Fortunato da Silva Analista de Sistemas CIRP / USP alf@cirp.usp.br

PostgreSQL. www.postgresql.org. André Luiz Fortunato da Silva Analista de Sistemas CIRP / USP alf@cirp.usp.br PostgreSQL www.postgresql.org André Luiz Fortunato da Silva Analista de Sistemas CIRP / USP alf@cirp.usp.br Características Licença BSD (aberto, permite uso comercial) Multi-plataforma (Unix, GNU/Linux,

Leia mais

SQL TGD/JMB 1. Projecto de Bases de Dados. Linguagem SQL

SQL TGD/JMB 1. Projecto de Bases de Dados. Linguagem SQL SQL TGD/JMB 1 Projecto de Bases de Dados Linguagem SQL SQL TGD/JMB 2 O que é o SQL? SQL ("ess-que-el") significa Structured Query Language. É uma linguagem standard (universal) para comunicação com sistemas

Leia mais

Unidade III - BD Relacional

Unidade III - BD Relacional Structured Query Language (SQL) Conceitos Iniciais Álgebra Relacional - muito formal Cálculo Relacional de Tupla SEQUEL (Structured English QUEry Language) IBM - Sistema R SQL-86 SQL-92 SQL-3 102 Structured

Leia mais

Laboratório de Banco de Dados II

Laboratório de Banco de Dados II Laboratório de Banco de Dados II Esquema de um banco de dados relacional Em aulas anteriores, vocês implantaram um projeto físico de banco de dados com todos os seus elementos, inclusive tratando do projeto

Leia mais

Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R. Standards ISO e ANSI SQL-86, SQL-89, SQL-92, SQL:1999, SQL:2003

Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R. Standards ISO e ANSI SQL-86, SQL-89, SQL-92, SQL:1999, SQL:2003 Bases de Dados Introdução à linguagem SQL História Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R Renomeada para SQL (Structured Query Language) Standards ISO e ANSI SQL-86, SQL-89,

Leia mais

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

AULA 2 INTERAÇÃO COM O BANCO DE DADOS AULA 2 INTERAÇÃO COM O BANCO DE DADOS BANCO DE DADOS POSTGRESQL O PostgreSQL é um sistema gerenciador de banco de dados dos mais robustos e avançados do mundo. Seu código é aberto e é totalmente gratuito,

Leia mais

Linguagem SQL. Comandos Básicos

Linguagem SQL. Comandos Básicos Linguagem SQL Comandos Básicos Caetano Traina Júnior Grupo de Bases de Dados e Imagens Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo - São Carlos caetano@icmc.sc.usp.br Comando

Leia mais

Banco de dados 1. Linguagem SQL DDL e DML. Professor: Victor Hugo L. Lopes

Banco de dados 1. Linguagem SQL DDL e DML. Professor: Victor Hugo L. Lopes Banco de dados 1 Linguagem SQL DDL e DML Professor: Victor Hugo L. Lopes Agenda: Introdução à linguagem de dados; DDL; DML; CRUD; Introdução à linguagem SQL. 2 Por que precisamos da linguagem SQL? A algebra

Leia mais

S Q L 31/03/2010. SQL - Structured Query Language Linguagem de Consulta Estruturada

S Q L 31/03/2010. SQL - Structured Query Language Linguagem de Consulta Estruturada Gerenciamento de Dados e Informação Fernando Fonseca Ana Carolina Robson Fidalgo SQL SQL - Structured Query Language Linguagem de Consulta Estruturada Apesar do QUERY no nome, não é apenas de consulta,

Leia mais

Tarefa Orientada 16 Vistas

Tarefa Orientada 16 Vistas Tarefa Orientada 16 Vistas Objectivos: Vistas só de leitura Vistas de manipulação de dados Uma vista consiste numa instrução de SELECT que é armazenada como um objecto na base de dados. Deste modo, um

Leia mais

Introdução a SQL. Prof. Anderson Cavalcanti UFRN-CT-DCA

Introdução a SQL. Prof. Anderson Cavalcanti UFRN-CT-DCA Introdução a SQL Prof. Anderson Cavalcanti UFRN-CT-DCA Características da Structured Query Language -SQL Características da SQL SQL é uma linguagem de pesquisa declarativa para banco de dados relacional.

Leia mais

Laboratório de Banco de Dados Prof. Luiz Vivacqua. PL/pgSQL A Linguagem de programação do PostgreSQL

Laboratório de Banco de Dados Prof. Luiz Vivacqua. PL/pgSQL A Linguagem de programação do PostgreSQL Laboratório de Banco de Dados Prof. Luiz Vivacqua PL/pgSQL A Linguagem de programação do PostgreSQL 1) Visão Geral A PL/pgSQL é uma linguagem de programação procedural para o Sistema Gerenciador de Banco

Leia mais

APOSTILA BANCO DE DADOS INTRODUÇÃO A LINGUAGEM SQL

APOSTILA BANCO DE DADOS INTRODUÇÃO A LINGUAGEM SQL 1. O que é Linguagem SQL 2. Instrução CREATE 3. CONSTRAINT 4. ALTER TABLE 5. RENAME TABLE 6. TRUCANTE TABLE 7. DROP TABLE 8. DROP DATABASE 1 1. O que é Linguagem SQL 2. O SQL (Structured Query Language)

Leia mais

Structured Query Language (SQL) Ambiente Simplificado de um SGBD

Structured Query Language (SQL) Ambiente Simplificado de um SGBD Structured Query Language (SQL) Ambiente Simplificado de um SGBD 2 1 Características dos SGBDs Natureza auto-contida de um sistema de banco de dados: metadados armazenados num catálogo ou dicionário de

Leia mais

Banco de Dados. Marcio de Carvalho Victorino www.dominandoti.eng.br. Exercícios SQL

Banco de Dados. Marcio de Carvalho Victorino www.dominandoti.eng.br. Exercícios SQL Banco de Dados Exercícios SQL 1 TRF (ESAF 2006) 32. Analise as seguintes afirmações relacionadas a Bancos de Dados e à linguagem SQL: I. A cláusula GROUP BY do comando SELECT é utilizada para dividir colunas

Leia mais

S Q L 15/01/2013. Enfoques de SQL. Enfoques de SQL SQL. Usos de SQL. SQL - Origem/Histórico. Gerenciamento de Dados e Informação

S Q L 15/01/2013. Enfoques de SQL. Enfoques de SQL SQL. Usos de SQL. SQL - Origem/Histórico. Gerenciamento de Dados e Informação Enfoques de SQL Gerenciamento de Dados e Informação Fernando Fonseca Ana Carolina Valeria Times Bernadette Loscio Linguagem interativa de consulta (ad-hoc): usuários podem definir consultas independente

Leia mais

Operação de União JOIN

Operação de União JOIN Operação de União JOIN Professor Victor Sotero SGD 1 JOIN O join é uma operação de multi-tabelas Select: o nome da coluna deve ser precedido pelo nome da tabela, se mais de uma coluna na tabela especificada

Leia mais

Ex.: INSERT INTO tmpautor (CDAUTOR, NMAUTOR) VALUES (1, Renato Araújo )

Ex.: INSERT INTO tmpautor (CDAUTOR, NMAUTOR) VALUES (1, Renato Araújo ) PRONATEC - Programador de Sistemas Banco de Dados 1) Incluindo linhas nas tabelas a. Para incluir linhas em tabelas utilize o comando INSERT INTO INSERT INTO tabela [ ( coluna [, coluna,...] ) ] VALUES

Leia mais

SQL DDL. Frederico D. Bortoloti freddb@ltc.ufes.br

SQL DDL. Frederico D. Bortoloti freddb@ltc.ufes.br Banco de Dados I SQL DDL Frederico D. Bortoloti freddb@ltc.ufes.br Introdução Modelo relacional encontra-se padronizado pela indústria de informática. Ele é chamado de padrão SQL (Structured Query Language)

Leia mais

Oracle PL/SQL Overview

Oracle PL/SQL Overview Faculdades Network Oracle PL/SQL Overview Prof. Edinelson PL/SQL Linguagem de Programação Procedural Language / Structured Query Language Une o estilo modular de linguagens de programação à versatilidade

Leia mais

BANCO DE DADOS. Introdução a Banco de Dados. Conceitos BásicosB. Engenharia da Computação UNIVASF. Aula 1. Breve Histórico

BANCO DE DADOS. Introdução a Banco de Dados. Conceitos BásicosB. Engenharia da Computação UNIVASF. Aula 1. Breve Histórico Banco de Dados // 1 Banco de Dados // 2 Conceitos BásicosB Engenharia da Computação UNIVASF BANCO DE DADOS Aula 1 Introdução a Banco de Dados Campo representação informatizada de um dado real / menor unidade

Leia mais

Linguagem de Consulta Estruturada (SQL)

Linguagem de Consulta Estruturada (SQL) Linguagem de Consulta Estruturada (SQL) Conceitos sobre a versão ANSI da SQL, a sublinguagem de definição de dados (DDL) e a sublinguagem de manipulação de dados (DML) Prof. Flavio Augusto C. Correia 1

Leia mais

Exemplos de Vistas SQL. Tipos em SQL. Linguagem de Definição de Dados (DDL) CREATE VIEW todososclientes As

Exemplos de Vistas SQL. Tipos em SQL. Linguagem de Definição de Dados (DDL) CREATE VIEW todososclientes As Exemplos de Vistas SQL Considere-se a vista (com o nome todososconsumidores) contento os nomes das agências e seus clientes CREATE VIEW todososclientes As Π nomebalcao,nomecliente (temconta conta) Π nomebalcao,nomecliente

Leia mais

PROCEDIMENTOS DE BACKUP E RESTORE NO POSTGRES

PROCEDIMENTOS DE BACKUP E RESTORE NO POSTGRES PROCEDIMENTOS DE BACKUP E RESTORE NO POSTGRES Como tudo que contém dados importantes, devem ser feitas cópias de segurança dos bancos de dados do PostgreSQL regularmente. Embora o procedimento seja essencialmente

Leia mais

BANCO DE DADOS CONCEITOS BÁSICOS

BANCO DE DADOS CONCEITOS BÁSICOS Universidade Federal da Paraíba UFPB Centro de Energias Alternativas e Renováveis - CEAR Departamento de Eng. Elétrica DEE BANCO DE DADOS CONCEITOS BÁSICOS Isaac Maia Pessoa Introdução O que é um BD? Operações

Leia mais

EXEMPLOS DE COMANDOS NO SQL SERVER

EXEMPLOS DE COMANDOS NO SQL SERVER EXEMPLOS DE COMANDOS NO SQL SERVER Gerenciando Tabelas: DDL - DATA DEFINITION LANGUAG Criando uma tabela: CREATE TABLE CLIENTES ID VARCHAR4 NOT NULL, NOME VARCHAR30 NOT NULL, PAGAMENTO DECIMAL4,2 NOT NULL;

Leia mais

André Milani. Novatec

André Milani. Novatec André Milani Novatec Sumário Agradecimentos...19 Sobre o autor...21 Prefácio...23 Capítulo 1 Bem-vindo ao PostgreSQL...25 1.1 O que é o PostgreSQL?...25 1.1.1 História do PostgreSQL...26 1.1.2 Licença

Leia mais

SQL (Linguagem de Consulta Estruturada)

SQL (Linguagem de Consulta Estruturada) SQL (Linguagem de Consulta Estruturada) M.Sc. Cristiano Mariotti mscmariotti@globo.com Introdução à SQL 1 Visão Geral Introdução Comandos de Definição de Dados Comandos de Manipulação de Dados Introdução

Leia mais

SQL comando SELECT. SELECT [DISTINCT] FROM [condição] [ ; ] Paulo Damico - MDK Informática Ltda.

SQL comando SELECT. SELECT [DISTINCT] <campos> FROM <tabela> [condição] [ ; ] Paulo Damico - MDK Informática Ltda. SQL comando SELECT Uma das tarefas mais requisitadas em qualquer banco de dados é obter uma listagem de registros armazenados. Estas tarefas são executadas pelo comando SELECT Sintaxe: SELECT [DISTINCT]

Leia mais

CA Nimsoft Monitor. Guia do Probe Monitor de resposta do SQL. sql_response série 1.6

CA Nimsoft Monitor. Guia do Probe Monitor de resposta do SQL. sql_response série 1.6 CA Nimsoft Monitor Guia do Probe Monitor de resposta do SQL sql_response série 1.6 Aviso de copyright do CA Nimsoft Monitor Este sistema de ajuda online (o Sistema ) destina-se somente para fins informativos

Leia mais

BANCO DE DADOS -INTRODUÇÃO AO SQL. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

BANCO DE DADOS -INTRODUÇÃO AO SQL. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br BANCO DE DADOS -INTRODUÇÃO AO SQL Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br INTRODUÇÃO AO SQL Ferramentas brmodelo Ferramenta Case PostgreSQL versão 8 ou superior SGBD Em 1986 o American

Leia mais

PHP INTEGRAÇÃO COM MYSQL PARTE 1

PHP INTEGRAÇÃO COM MYSQL PARTE 1 INTRODUÇÃO PHP INTEGRAÇÃO COM MYSQL PARTE 1 Leonardo Pereira leonardo@estudandoti.com.br Facebook: leongamerti http://www.estudandoti.com.br Informações que precisam ser manipuladas com mais segurança

Leia mais

2008.1. A linguagem SQL

2008.1. A linguagem SQL SQL 2008.1 A linguagem SQL SQL - Structured Query Language. Foi definida nos laboratórios de pesquisa da IBM em San Jose, California, em 1974. Teve seus fundamentos no modelo relacional Sua primeira versão

Leia mais

Prof. Omero, pág. 63. Banco de Dados InterBase.

Prof. Omero, pág. 63. Banco de Dados InterBase. Prof. Omero, pág. 63 O que é o InterBase? O InterBase é um SGBDR - Sistema Gerenciador de Banco de Dados Cliente/Servidor Relacional 1 que está baseado no padrão SQL ANSI-9, de alta performance, independente

Leia mais

Capítulo 6 Regras de Integridade. Murilo S. de Camargo (Modificações M.A R. Dantas)

Capítulo 6 Regras de Integridade. Murilo S. de Camargo (Modificações M.A R. Dantas) Capítulo 6 Regras de Integridade Murilo S. de Camargo (Modificações M.A R. Dantas) 1 Restrições de Integridade ❾ Restrições de Domínio ❾ Integridade Referencial ❾ Asserções ❾ Gatilhos (Triggers) ❾ Dependências

Leia mais

Tarefa Orientada 13 Agrupamento e sumário de dados

Tarefa Orientada 13 Agrupamento e sumário de dados Tarefa Orientada 13 Agrupamento e sumário de dados Objectivos: Funções de agregação Agrupamento e sumário de dados Funções de agregação Nesta tarefa orientada iremos formular consultas que sumariam os

Leia mais

Banco de Dados. PostgreSQL

Banco de Dados. PostgreSQL Banco de Dados PostgreSQL 2010 Banco de Dados PostgreSQL Banco de Dados II Equipe: Equipe Postgre Líder: Alexandre Strauss... 01 Aline Cássia Lima dos Santos... 02 Erik Machado... 09 Fernando Gomes Brandão...

Leia mais

Disparando o interpretador

Disparando o interpretador Capítulo 2: Usando o interpretador Python Disparando o interpretador O interpretador é frequentemente instalado como /usr/local/bin/python nas máquinas onde está disponível; adicionando /usr/local/bin

Leia mais

Introdução ao SQL. O que é SQL?

Introdução ao SQL. O que é SQL? Introdução ao SQL 1 O que é SQL? Inicialmente chamada de Sequel, SQL (Structured Query Language), é a linguagem padrão utilizada para comunicar-se com um banco de dados relacional. A versão original foi

Leia mais