Estudo do Sistema de Gestão de Bases de Dados PostgreSQL. André Ricardo Carlos Nobre Cristiano Lopes Nº Nº Nº 17662

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

Download "Estudo do Sistema de Gestão de Bases de Dados PostgreSQL. André Ricardo Carlos Nobre Cristiano Lopes Nº 31208 Nº 31211 Nº 17662"

Transcrição

1 Estudo do Sistema de Gestão de Bases de Dados PostgreSQL André Ricardo Carlos Nobre Cristiano Lopes Nº Nº Nº 17662

2 Índice 1 Introdução Introdução histórica e aplicabilidade do sistema estudado Notas sobre a instalação do sistema 6 2 Cobertura do SQL DDL Data Definition Language CREATE DATABASE CREATE TABLE CONSTRAINTS CREATE INDEX CREATE VIEW CREATE TRIGGER CREATE FUNCTION ALTER DATABASE ALTER TABLE ALTER INDEX ALTER VIEW ALTER TRIGGER ALTER FUNCTION DROP DATABASE DROP TABLE DROP INDEX DROP VIEW DROP TRIGGER DROP FUNCTION DML Data Manipulation Language INSERT UPDATE DELETE TRUNCATE SELECT 29 3 Armazenamento e Estrutura de ficheiros Armazenamento Organização Tabela de sistema Sistema de ficheiros e gestão de buffer Organização do shared buffer Funcionamento do shared buffer Performance e tuning Estrutura de ficheiros 40

3 3.2.1 Representação interna dos ficheiros Tabela Free Space Map Visibility Map Tabela Toast Conclusão 42 4 Indexação e hashing Indexação B-Tree Hash GiST GIN Índices multi-coluna Ordenação de índices Combinação de vários índices Índices únicos Índices em expressões Índices parciais Classes e famílias de operadores Análise ao uso dos índices 55 5 Processamento e optimização de perguntas Ciclo de uma query no PostgreSQL Fase de ligação Fase de parsing Fase de rescrita Fase de planeamento e optimização Fase de execução Dicas de performance no PostgreSQL Conclusão 71 6 Gestão de transacções e controlo de concorrência Atomicidade, consistência, isolamento e durabilidade 72

4 6.2 Conclusão 78 7 Suporte para bases de dados distribuídas 79 8 Outras características do PostgreSQL Tipos de dados Linguagens procedimentais Extensibilidade do PostgreSQL XML e funções de suporte 92 9 Bibliografia 98

5 1 Introdução No seguimento do estudo efectuado ao longo da disciplina de Sistemas de Bases de Dados, acerca das metodologias utilizadas na implementação dos mesmos, surge o relatório seguinte, que visa consolidar e alargar conhecimentos, e principalmente efectuar uma confrontação entre as várias opções teóricas disponíveis e decisões de implementação tomadas na prática num sistema concreto. 1.1 Introdução histórica e aplicabilidade do sistema estudado Escolha do sistema a estudar Dada a liberdade quase total para a escolha do sistema a estudar foi necessário tomar uma decisão, tendo a nossa escolha recaído sobre o sistema PostgreSQL. A decisão foi tomada, depois de alguma pesquisa acerca dos sistemas mais utilizados actualmente, tendo pesado grandemente na decisão factores como a qualidade da documentação, a facilidade de acesso à mesma, a utilização do sistema para dar resposta a cenários de grande escala e o reconhecimento da existência do factor inovação na implementação do mesmo. O PostgreSQL pareceu-nos ser bastante competente em todos os critérios que definimos, sendo utilizado em sistemas de grande escala (e.g skype ver Link, imdb), bem documentado, com documentação disponível na web, e com algumas inovações/demarcações de alguns sistemas concorrentes. Breve introdução histórica O sistema PostgreSQL nasceu de um projecto académico da Universidade de Berkley (Califórnia) liderado pelo Professor Michael Stonebraker, com o objectivo de explorar conceitos objecto-relacionais em bases de dados. Na altura, entre 1986 e 1994 o sistema evoluiu ainda com a denominação de Postgres (curiosamente ainda utilizada hoje em dia por razões óbvias) no seio académico, tendo sido objecto de desenvolvimento activo por parte de alunos e professores com a introdução de características ainda presentes na versão actual, como regras, procedimentos índices de tipo extensível entre outros. Em 1995 e sob o comando de dois alunos, Andrew Yu e Jolly Chen, foi substituída a linguagem utilizada para efectuar queries, por uma outra que implementava a especificação SQL, tendo também o nome do sistema evoluído para Postgres95. Em 1996 é dado o grande salto por parte do Postgres95 com a adesão em massa de vários programadores provenientes do mundo open-source,que impulsionaram o desenvolvimento do sistema permitindo que nele surgissem funcionalidades que hoje lhe dão fama, como seja o modelo MVCC utilizado para garantir propriedades ACID, extensão das construções SQL, melhoramento da performance, para apenas mencionar algumas. Estávamos nesta altura na versão 6 do sistema, que continuou a evoluir graças ao esforço da comunidade open-source que com a chegada da versão 7 já incluía muitos melhoramentos como Write Ahead Log para implementar durabilidade e consistência de forma melhorada,tabelas TOAST para tuplos muito grandes, suporte para várias linguagens procedimentais entre tantas outras estudadas ao longo deste relatório. 5

6 Actualmente o sistema encontra-se na versão 8.4 tendo entrado definitivamente no mercado empresarial, e também no mundo Windows, mas mantendo-se open-source e com o mesmo espírito de inovação original com que foi criado na Universidade de Berkley. O mundo PostgreSQL O sítio de referência para o PostgreSQL é encontrado no endereço a partir do qual pode ser encontrada toda a documentação base do sistema e também uma wiki onde são apresentados diversos artigos sobre o mesmo. Estão também disponíveis várias mailing lists onde são discutidos vários assuntos relacionados com o PostgreSQL e onde qualquer pessoa pode obter resposta para as questões que tenha. O código fonte do sistema pode ser obtido a partir do sítio indicado acima e instaladores para rapidamente por o sistema a funcionar podem ser encontrados em Pode também ser interessante, no contexto de utilização do sistema num ambiente web, consultar que providência pacotes prontos a utilizar com o PostgreSQL, php e o servidor web apache. É ainda de potencial interesse o programa de administração pgadmin que pode ser encontrado em 1.2 Notas sobre a instalação do sistema A instalação do sistema é bastante simples, pois estão disponíveis instaladores para todos os sistemas operativos mais utilizados (unix-based, windows).o sistema é licenciado através da licença BSD que basicamente permite que o sistema seja utilizado de forma gratuita, com permissão para modificar, copiar e distribuir sem qualquer tipo de problema, desde que a licença seja mantida. O código fonte está disponível e pode ser compilado seguindo os passos indicados no link. Alguma das opções de configuração aquando do momento da compilação são apresentadas no decurso do relatório, mas para uma utilização de teste recomenda-se a utilização dos instaladores que contêm os binários e uma configuração sólida de base. 6

7 2 Cobertura do SQL Neste capítulo vamos abordar a cobertura que o sistema de base de dados PostgreSQL faz do standard SQL. Vamos abordar em primeiro lugar a cobertura a nível de DDL Data Definition Language e depois a cobertura do DML Data Manipulation Language. 2.1 DDL Data Definition Language Neste capítulo vamos abordar o processo de criação das estruturas das bases de dados e também como é que o PostgreSQL cobre o standard SQL nesse capítulo em particular CREATE DATABASE CREATE DATABASE name [ [ WITH ] [ OWNER [=] dbowner ] [ TEMPLATE [=] template ] [ ENCODING [=] encoding ] [ LC_COLLATE [=] lc_collate ] [ LC_CTYPE [=] lc_ctype ] [ TABLESPACE [=] tablespace ] [ CONNECTION LIMIT [=] connlimit ] ] O comando CREATE DATABASE cria uma nova base dados no PostgreSQL. name representa o nome da base de dados que se vai criar, dbowner é o nome do utilizador que será dono da nova base de dados, dbowner também pode ser definido como DEFAULT, ou seja, o utilizador que executa o comando. Sempre que o comando CREATE DATABASE é chamado o sistema vai na realidade criar uma cópia duma base de dados já existente. É a partir deste template que as novas bases de dados serão criadas. Por defeito é feita uma copia duma base de dados padrão chamada template1. É ainda possível fazer modificações neste template1 que terão depois repercussões nas futuras bases de dados geradas a partir desse template. Para além do template1 existe outro padrão que pode ser usado, nomeadamente, o template0, este padrão é uma cópia exacta do template1 inicial, ou seja, contém apenas os objectos predefinidos pelo PostgreSQL para uma base de dados. O template0 por razões óbvias nunca deve ser alterado. O PostgreSQL permite ainda a criação de mais padrões caso sejam necessários. Com encoding é possível definir qual o tipo de codificação de caracteres que se pretende usar. No standard SQL não se encontra presente o comando CREATE DATABASE, a implementação deste é feita pelos sistemas de base de dados. 7

8 2.1.2 CREATE TABLE CREATE [ [ GLOBAL LOCAL ] { TEMPORARY TEMP } ] TABLE table_name ( [ { column_name data_type [ DEFAULT default_expr ] [ column_constraint [... ] ] table_constraint LIKE parent_table [ { INCLUDING EXCLUDING } { DEFAULTS CONSTRAINTS INDEXES } ]... } [,... ] ] ) [ INHERITS ( parent_table [,... ] ) ] [ WITH ( storage_parameter [= value] [,... ] ) WITH OIDS WITHOUT OIDS ] [ ON COMMIT { PRESERVE ROWS DELETE ROWS DROP } ] [ TABLESPACE tablespace ] onde column_constraint é: [ CONSTRAINT constraint_name ] { NOT NULL NULL UNIQUE index_parameters PRIMARY KEY index_parameters CHECK ( expression ) REFERENCES reftable [ ( refcolumn ) ] [ MATCH FULL MATCH PARTIAL MATCH SIMPLE ] [ ON DELETE action ] [ ON UPDATE action ] } [ DEFERRABLE NOT DEFERRABLE ] [ INITIALLY DEFERRED INITIALLY IMMEDIATE ] e table_constraint é: [ CONSTRAINT constraint_name ] { UNIQUE ( column_name [,... ] ) index_parameters PRIMARY KEY ( column_name [,... ] ) index_parameters CHECK ( expression ) FOREIGN KEY ( column_name [,... ] ) REFERENCES reftable [ ( refcolumn [,... ] ) ] [ MATCH FULL MATCH PARTIAL MATCH SIMPLE ] [ ON DELETE action ] [ ON UPDATE action ] } [ DEFERRABLE NOT DEFERRABLE ] [ INITIALLY DEFERRED INITIALLY IMMEDIATE ] index_parameters em UNIQUE e PRIMARY KEY são: [ WITH ( storage_parameter [= value] [,... ] ) ] [ USING INDEX TABLESPACE tablespace ] O comando CREATE TABLE cria uma uma nova tabela, com nome table_name, inicialmente vazia, na base de dados actual. TEMPORARY ou TEMP permitem indicar que a tabela que vai ser criada é temporária. As tabelas temporárias são automaticamente eliminadas no fim de uma sessão, ou opcionalmente no fim de cada transacção caso a cláusula ON COMMIT tenha sido especificada. A cláusula ON COMMIT serve precisamente para controlar o comportamento das tabelas temporárias no fim de uma transacção. Em caso de omissão o sistema considera por defeito que nenhuma acção é executada no fim de cada transacção e a tabela só é eliminada no fim da sessão, este comportamento pode ser indicado explicitamente incluindo o comando PRESERVE ROWS. Caso se queira apagar todas as linhas da tabela temporária, ou seja, esvaziar a tabela no fim de cada transacção, então deve-se incluir o comando DELETE ROWS, e por último, se for necessário apagar a tabela temporária no fim da transacção deve-se incluir o comando DROP. É necessário especificar quais são as colunas que a nova tabela vai ter. Isto é feito indicando uma lista de column_names, data_type e column_constraint com esta 8

9 última sempre opcional. column_name representa o nome da coluna que será criada na nova tabela e data_type representa o tipo de dados que essa coluna poderá armazenar. Sobre os tipos de dados suportados pelo sistema de base de dados PostgreSQL deve-se consultar o Capítulo 8. colum_constraint representa uma restrição aplicada a essa coluna. Trata-se de uma cláusula opcional que define um determinado número de condições que tanto as novas linhas, como as antigas ao serem actualizadas, devem respeitar. Uma restrição é um objecto SQL que ajuda a definir qual o conjunto de valores válidos para uma determinada tabela. Para além de column_constraint também é possível definir outro tipo de restrições, desta feita associadas não só a uma coluna em particular mas à tabela em geral, isto é feito mais concretamente com a cláusula opcional table_constraint. table_constraint, como já foi referido, não se encontra ligada a nenhuma coluna em particular, este tipo de restrição pode referir-se a qualquer conjunto de colunas presente na tabela. Como consequência deste facto todas as column_constraint podem ser escritas como table_constraint, aliás, column_constraint existe apenas para simplificar o processo de escrita de restrições que apenas se aplicam a uma coluna. A cobertura que o sistema de base de dados PostgreSQL faz das restrições será abordada adiante com mais detalhe. A cláusula opcional INHERITS permite especificar uma lista de tabelas, das quais a nova tabela irá herdar automaticamente todas as colunas. Isto cria uma relação persistente entre a tabela original e a nova tabela. Por sua vez, a cláusula LIKE, permite especificar uma tabela que servirá como padrão para aquela que se está a criar. A nova tabela vai copiar automaticamente de parent_table o nome das colunas, o tipo de dados de cada uma e caso existam as suas restrições. Ao contrário de INHERITS, a nova tabela e a parent_table não terão qualquer relação. As modificações feitas na coluna original não terão qualquer efeito na nova tabela. É ainda oferecida liberdade de definir algumas características que queremos ver na nova tabela. Através das palavras reservadas INCLUDING e EXCLUDING podemos definir se queremos incluir ou não, os valores por defeito de cada coluna com INCLUDING/EXCLUDING DEFAULTS, as restrições de cada coluna com INCLUDING/EXCLUDING CONSTRAINTS e por último, os índices da tabela original com INCLUDING/EXCLUDING INDEXES. WITH permite especificar parâmetros opcionais de armazenamento para uma tabela ou índice. O comando CREATE TABLE usado no sistema PostgreSQL cobre todo o standard SQL, com algumas excepções que é importante referir. Apesar da sintaxe de CREATE TEMPORARY TABLE ser semelhante à do standard, o efeito não é o mesmo. No standard, as tabelas temporárias são definidas apenas uma vez e existem, mesmo que inicialmente se encontrem vazias, em todas as sessões em que são necessárias. No PostgreSQL pelo contrário é necessário em cada sessão inserir o comando CREATE TEMPORARY TABLE por cada tabela temporária que se vá usar. Isto permite que diferentes sessões usem de forma diferente o mesmo nome da tabela temporária, enquanto que no standard a tabela temporária terá sempre a mesma estrutura em todas as sessões. A noção de CREATE TEMPORARY TABLE do standard SQL é ignorada por praticamente todos os sistemas de base de dados e neste caso o PostgreSQL não foge à regra. 9

10 A distinção feita pelo standard entre tabelas temporárias globais e locais não se encontra incluída no PostgreSQL visto que essa distinção está dependente do conceito de módulos, conceito esse que o PostgreSQL não inclui. De qualquer forma o PostgreSQL aceita as palavras reservadas GLOBAL e LOCAL na declaração de tabelas temporárias por razões de compatibilidade, mesmo não tendo qualquer efeito prático. A cláusula ON COMMIT para tabelas temporárias também é semelhante à presente no standard SQL mas com algumas diferenças. Se a cláusula ON COMMIT for omitida, o SQL define que o comportamento por defeito deve ser ON COMMIT DELETE ROWS, enquanto que no PostgreSQL é ON COMMIT PRESERVE ROWS. É também importante salientar que o comando ON COMMIT DROP é uma extensão do PostgreSQL. O standard SQL indica que as restrições de colunas do tipo CHECK só podem referir-se à coluna para a qual foram definidas e que apenas as restrições da tabela é que podem referir-se a várias colunas. O PostgreSQL não impõe estão restrição e trata as restrições de tabelas e colunas de forma semelhante. O conceito de múltiplas heranças através da cláusula INHERITS é uma extensão do PostgreSQL. O standard SQL define desde 1999 o conceito de herança mas com sintaxe e semântica diferente. Este conceito do standard não é suportado ainda pelo PostgreSQL. O PostgreSQL permite criar tabelas sem colunas, isto é uma extensão ao standard SQL, que não permite que tal aconteça. A cláusula WITH também é uma extensão do PostgreSQL. Não existem parâmetros de armazenamento no standard SQL. Para além da cláusula WITH, as cláusulas TABLESPACE e USING INDEX TABLESPACE também são extensões CONSTRAINTS Na grande maioria das situações, as restrições impostas pelas definições de tipo de dados são demasiado simples e limitadas para garantir aquilo que é desejado. Para contornar esta limitação o SQL permite definir restrições para colunas e tabelas. O sistema de base de dados PostgreSQL suporta vários tipos de restrições, nomeadamente, restrições CHECK, restrições NOT NULL, restrições UNIQUE, restrições de chave primária e restrições de chave estrangeira. As restrições do tipo CHECK são as mais genéricas de todas, permitem especificar que os valores duma determinada coluna têm de satisfazer uma determinada expressão booleana. CREATE TABLE example ( a integer, b integer, c integer, CHECK (a > 0), CHECK (c < b) ); 10

11 As restrições do tipo NOT NULL apenas permitem especificar que uma determinada coluna não pode armazenar valores nulos. Este tipo de restrição é sempre escrita como uma restrição duma coluna e nunca duma tabela. Uma restrição NOT NULL é equivalente a uma restrição do tipo CHECK (column_name IS NOT NULL), mas no PostgreSQL criar uma restrição do tipo NOT NULL acaba por ser mais eficiente. Para além das restrições do tipo NOT NULL também é possível definir uma restrição para uma coluna do tipo NULL, esta não obriga a que uma coluna seja nula mas sim que pode ou não ser nula. Este tipo restrições não se encontra no standard SQL, é uma extensão do PostgreSQL que foi adicionada meramente por questões de compatibilidade com outros sistemas de base de dados. CREATE TABLE example ( a integer NOT NULL, b integer, c integer NOT NULL ); As restrições do tipo UNIQUE garantem que a informação presente numa determinada coluna é única para todas as linhas, ou seja, garantem que para a dada coluna não existem valores iguais. A excepção a este caso trata-se dos casos em que existem valores nulos em mais do que uma linha da coluna, os valores nulos não são considerados como iguais nesta comparação. Este comportamento encontra-se de acordo com o standard SQL. CREATE TABLE example ( a integer UNIQUE ); CREATE TABLE example2 ( a integer, b integer, c integer, UNIQUE (a, c) ); As restrições de chaves primárias no fundo são uma combinação de outros dois tipos de restrições, nomeadamente, uma restrição do tipo NOT NULL e uma restrição do tipo UNIQUE. A restrição PRIMARY KEY é equivalente a UNIQUE NOT NULL. Uma PRIMARY KEY indica que uma coluna ou grupo de colunas pode ser usado como identificador único para linhas da tabela. No máximo uma tabela só pode ter uma PRIMARY KEY, podem existir várias UNIQUE NOT NULL mas só uma pode ser identificada como PRIMARY KEY. CREATE TABLE example ( a integer PRIMARY KEY ); CREATE TABLE example2 ( a integer, b integer, c integer, PRIMARY KEY (a, c) ); Restrições de chave estrangeira garantem que os valores numa coluna ou num grupo de 11

12 colunas têm de existir numa outra coluna de outra tabela. Este tipo de restrições é feito através da cláusula REFERENCES para restrições especificadas em colunas ou através de FOREIGN KEY (column_name) REFERENCES other_table (column_name) para restrições da tabela. De notar que nas restrições de tabela podem ser referenciados grupos de colunas: CREATE TABLE example ( a integer REFERENCES other_table (c1) ); CREATE TABLE example2 ( a integer PRIMARY KEY, b integer, c integer, FOREIGN KEY (b, c) REFERENCES other_table (c1, c2) ); CREATE INDEX CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] name ON table [ USING method ] ( { column ( expression ) } [ opclass ] [ ASC DESC ] [ NULLS { FIRST LAST } ] [,...] ) [ WITH ( storage_parameter = value [,... ] ) ] [ TABLESPACE tablespace ] [ WHERE predicate ] CREATE INDEX permite criar um índice com nome name na tabela table. Um índice é um instrumento usado principalmente para melhorar a performance de uma base de dados, é importante também mencionar que um uso incorrecto pode por outro lado levar a um decréscimo na performance). Para especificar o INDEX é necessário indicar nomes de colunas, column, da tabela, table, ou então expressões baseadas numa ou mais colunas da tabela, normalmente escritas dentro de parêntesis, expression. UNIQUE garante que o sistema verifica a existência de valores duplicados na tabela quando o INDEX é criado e sempre que for inserida informação. Todas as tentativas de inserir informação já existente resultam em erro. CONCURRENTLY garante o PostgreSQL não bloqueia quaisquer operações de INSERT, UPDATE ou DELETE durante a criação do INDEX. Sem esta opção o sistema bloqueia todas as operações de escrita durante a criação do INDEX. As operações de leitura são sempre permitidas, com ou sem CONCURRENTLY. USING method permite especificar o método de indexação que deve ser usado pelo sistema de base de dados. O PostgreSQL disponibiliza os seguintes métodos: B-tree, hash, GiST e GIN. Para além destes métodos o PostgreSQL permite também que o utilizador defina os seus próprios métodos. ASC e DESC designam os ordens de ordenação disponíveis, ASC para ascendente e DESC 12

13 para descendente. ASC é o comportamento assumido por defeito pelo sistema. NULLS FIRST e NULLS LAST especificam a ordem em que os valores nulos surgem. NULLS FIRST especifica que os valores nulos aparecem em primeiro lugar, este é o comportamento assumido pelo sistema quando DESC é especificado. NULLS LAST especifica que os valores nulos aparecem depois dos valores não nulos, este é o comportamento assumido pelo sistema quando DESC não é especificado. Quando a cláusula WHERE é especificada é criado um INDEX parcial. Um INDEX parcial é um INDEX que contém apenas entradas para um subconjunto da tabela, normalmente um subconjunto que seja mais útil para indexação que toda a tabela. A expressão predicate que é usada em WHERE permite especificar o subconjunto desejado. Em predicate podemos referenciar várias colunas da tabela e não só aquelas que vão ser alvo de indexação. CREATE UNIQUE INDEX table_index ON table (a); CREATE INDEX é uma extensão do PostgreSQL. O standard SQL não disponibiliza índices CREATE VIEW CREATE [ OR REPLACE ] [ TEMP TEMPORARY ] VIEW name [ ( column_name [,...] ) ] AS query O comando CREATE VIEW permite criar uma nova VIEW de uma dada query. name representa o nome da nova VIEW e query pode tanto ser uma operação de SELECT como uma operação VALUES. A VIEW não cria qualquer tipo de dados em disco, simplesmente executa a query sempre que a VIEW é usada. CREATE OR REPLACE garante que caso uma VIEW com o mesmo nome já exista, esta vai ser substituída pela nova. É possível definir, apesar de ser opcional, uma lista de nomes, column_name, a serem usadas pelas colunas da VIEW, caso nenhuma lista seja definida o sistema deduz os nomes a partir da query. O PostgreSQL permite a criação de views temporárias com o comando TEMPORARY ou TEMP. Estas views são automaticamente eliminadas do sistema no fim de cada sessão. Caso alguma das tabelas referenciadas pela VIEW for temporária então esta também será automaticamente temporária, mesmo sem a inclusão do comando TEMPORARY ou TEMP. O standard SQL contém algumas funcionalidades adicionais para o comando CREATE VIEW. Por enquanto o PostgreSQL não permite operações de INSERT, UPDATE e DELETE numa VIEW. CREATE OR REPLACE VIEW é uma extensão do PostgreSQL, assim como é o conceito de VIEW temporária. 13

14 2.1.6 CREATE TRIGGER CREATE TRIGGER name { BEFORE AFTER } { event [ OR... ] } ON table [ FOR [ EACH ] { ROW STATEMENT } ] EXECUTE PROCEDURE funcname ( arguments ) CREATE TRIGGER cria um novo TRIGGER com nome name que fica associado à tabela table e que executa uma função funcname quando um evento event ocorre. É possível definir se o TRIGGER é disparado antes ou depois de event, isto é feito recorrendo aos comandos BEFORE e AFTER. funcname, como já foi referido, representa a função que será chamada, a esta função pode ainda ser passada uma lista de argumentos, arguments. Este tema será amplamente discutido mais adiante. event pode ser um dos seguintes tipos de operações: INSERT, UPDATE, DELETE ou TRUNCATE. É ainda possível definir definir vários eventos usando OR. É possível definir quantas vezes o TRIGGER é disparado, com FOR EACH ROW presente, o sistema vai disparar o TRIGGER uma vez por cada linha que seja afectada por event, com FOR EACH STATEMENT apenas é disparado uma vez por cada operação. Caso nenhum for especificado o sistema considera FOR EACH STATEMENT como sendo o comportamento por defeito. Para o caso de operações de TRUNCATE deve-se, ou não definir nenhuma das duas opções e assim deixar o sistema usar o comportamento por defeito, ou então definir FOR EACH STATEMENT explicitamente. Para a operação de TRUNCATE não pode ser usado o comando FOR EACH ROW. Isto deve-se ao facto de TRUNCATE afectar todas as linhas da tabela, assim seria extremamente ineficiente disparar o TRIGGER uma vez por cada linha existente na tabela. Se vários TRIGGER do mesmo tipo forem definidos para a mesma tabela e responderem ao mesmo evento, então eles serão disparados por ordem alfabética. Para criar TRIGGERS numa determinada table o utilizador tem de ter privilégios para tal. O comando CREATE TRIGGER na base de dados PostgreSQL implementa um subconjunto das funcionalidades que o standard SQL oferece. As seguintes funcionalidade encontram-se ausentes do PostgreSQL: Permitir que os TRIGGER sejam disparados quando determinadas colunas são actualizadas. O standard SQL permite referir-se ao estado de uma linha antes duma operação e depois duma operação, isto é feito recorrendo às palavras chave old e new, como o PostgreSQL permite que os procedimentos dos TRIGGER sejam definidos num sem número de linguagens, os acessos à informação são feitos de formas diferentes consoante a linguagem usada. O PostgreSQL apenas permite que sejam chamadas funções criadas pelo utilizador quando o TRIGGER é disparado, o standard permite chamar um sem número de comandos SQL, como por exemplo CREATE TABLE. Este aspecto é facilmente contornável, basta o utilizador definir uma função que chame o comando SQL desejado. Como já foi referido anteriormente o PostgreSQL despoleta os TRIGGER por ordem alfabética, por sua vez o standard define que devem ser despoletados por ordem de criação. A capacidade de especificar várias acções para um só TRIGGER e a possibilidade de 14

15 definir TRIGGERS para a operação TRUNCATE são extensões do PostgreSQL CREATE FUNCTION CREATE [ OR REPLACE ] FUNCTION name ( [ [ argmode ] [ argname ] argtype [ { DEFAULT = } defexpr ] [,...] ] ) [ RETURNS rettype RETURNS TABLE ( colname coltype [,...] ) ] { LANGUAGE langname WINDOW IMMUTABLE STABLE VOLATILE CALLED ON NULL INPUT RETURNS NULL ON NULL INPUT STRICT [ EXTERNAL ] SECURITY INVOKER [ EXTERNAL ] SECURITY DEFINER COST execution_cost ROWS result_rows SET configuration_parameter { TO value = value FROM CURRENT } AS 'definition' AS 'obj_file', 'link_symbol' }... [ WITH ( attribute [,...] ) ] CREATE FUNCTION cria uma nova função, CREATE OR REPLACE FUNCTION cria uma nova função ou substitui uma já existente. É possível existirem várias funções com o mesmo nome desde que os seus argumentos sejam diferentes. A função é definida através do seu nome, representado por name, e por uma lista de argumentos. Cada argumento incluído nesta lista pode ser definido pelas cláusulas opcionais argmode e argname e pela cláusula obrigatória argtype. argmode representa o modo do argumento, por defeito é IN mas pode-se ser definido das seguintes formas: IN, OUT, INOUT e VARIADIC. argname é o nome do argumento. argtype é o tipo de dados do argumento da função. O retorno da função é definido com a cláusula RETURNS rettype ou com RETURNS TABLE ( colname coltype [,...] ) ]. Quando existem argumentos com modo OUT ou INOUT a cláusula RETURNS pode ser omitida. rettype é o tipo de dados do valor que será devolvido. Com RETURNS TABLE é possível definir uma tabela como retorno da função, esta tabela é definida através de uma lista de colunas, com cada coluna definida por colname, o nome da coluna, e coltype, o tipo de dados da coluna. O PostgreSQL permite a definição de funções num sem número de linguagens diferentes, alguns exemplos são: SQL, C, internal (funções escritas em C que foram estaticamente ligadas ao servidor PostgreSQL) ou até numa linguagem procedimental criada pelo utilizador. Para tal é necessário indicar qual a linguagem usada. Isto é feito com a cláusula langname. WINDOW indica que uma função é uma window function em vez de uma simples função. Isto é só útil para funções escritas em C. As cláusulas IMMUTABLE, STABLE e VOLATILE servem para informar o processador de 15

16 querys acerca do comportamento da função. Apenas uma das cláusulas pode ser especificada, também é possível ignorar esta questão e não incluir nenhuma das cláusulas. Neste caso o comportamento por defeito do sistema é assumir VOLATILE. IMMUTABLE indica que uma função não pode modificar a base de dados e que devolve sempre o mesmo resultado se lhe forem passados os mesmos argumentos, ou seja, é uma função que não usa qualquer informação presente na base de dados e não usa qualquer informação que não esteja presente na sua lista de argumentos. STABLE indica que a função não pode modificar a base de dados e que durante um varrimento duma tabela irá sempre devolver os mesmos resultados para os mesmos argumentos dados. VOLATILE indica que o valor da função pode mudar até mesmo durante o varrimento duma tabela, desta forma nenhuma optimização pode ser feita. Este como já foi referido é o comportamento por defeito. CALLED ON NULL INPUT, que é o comportamento por defeito em caso de omissão, indica que uma função deve ser chamada normalmente mesmo quando algum dos argumentos é nulo. RETURNS NULL ON NULL INPUT ou STRICT indica que a função irá devolver sempre um valor nulo quando um dos seus argumentos for nulo, o que acontece na realidade é que ao verificar que um dos argumentos é nulo, é logo devolvido nulo como resultado, nenhuma operação é processada. COST execution_cost é um número positivo que representa o valor estimado do custo de execução da função. Caso seja devolvida uma colecção de resultados então é assumido que execution_cost representa o custo por cada entrada na colecção. Caso nenhum execution_cost seja definido o sistema assume por defeito 1 unidade para funções em C e 100 unidades para funções noutras linguagens. ROWS result_rows é um número positivo que representa o número estimado de linhas que o plano de execução deve esperar para o resultado da função. Isto só é permitido quando a função é declarada para retornar uma colecção. Em caso de omissão é assumido um valor igual a O comando CREATE FUNCTION encontra-se definido no standard SQL desde A versão implementada pelo PostgreSQL é similar mas não totalmente compatível. O standard, por exemplo, não permite definir funções em várias linguagens diferentes. Por questões de compatibilidade com outros sistemas de base de dados, argmode pode surgir antes ou depois do argname, mas apenas a primeira é que se encontra de acordo com o standard SQL. 16

17 2.1.8 ALTER DATABASE ALTER DATABASE name [ [ WITH ] option [... ] ] onde option pode ser: CONNECTION LIMIT connlimit ALTER DATABASE name RENAME TO newname ALTER DATABASE name OWNER TO new_owner ALTER DATABASE name SET TABLESPACE new_tablespace ALTER DATABASE name SET configuration_parameter { TO = } { value DEFAULT } ALTER DATABASE name SET configuration_parameter FROM CURRENT ALTER DATABASE name RESET configuration_parameter ALTER DATABASE name RESET ALL ALTER DATABASE permite modificar os atributos duma base de dados. De entre as várias modificações que o comando ALTER permite fazer a uma base de dados, as mais importantes são: Com RENAME TO newname é possível modificar o nome da base de dados, através de OWNER TO new_owner pode-se definir outro utilizador como responsável pela base de dados, é possível ainda limitar o número de conexões concorrentes à base de dados com CONNECTION LIMIT connlimit. Com RESET ALL é possível reiniciar todas as características da base de dados. O comando ALTER DATABASE é uma extensão do sistema de base de dados PostgreSQL. 17

18 2.1.9 ALTER TABLE ALTER TABLE [ ONLY ] name [ * ] action [,... ] ALTER TABLE [ ONLY ] name [ * ] RENAME [ COLUMN ] column TO new_column ALTER TABLE name RENAME TO new_name ALTER TABLE name SET SCHEMA new_schema onde action pode ser um de: ADD [ COLUMN ] column type [ column_constraint [... ] ] DROP [ COLUMN ] column [ RESTRICT CASCADE ] ALTER [ COLUMN ] column [ SET DATA ] TYPE type [ USING expression ] ALTER [ COLUMN ] column SET DEFAULT expression ALTER [ COLUMN ] column DROP DEFAULT ALTER [ COLUMN ] column { SET DROP } NOT NULL ALTER [ COLUMN ] column SET STATISTICS integer ALTER [ COLUMN ] column SET STORAGE { PLAIN EXTERNAL EXTENDED MAIN } ADD table_constraint DROP CONSTRAINT constraint_name [ RESTRICT CASCADE ] DISABLE TRIGGER [ trigger_name ALL USER ] ENABLE TRIGGER [ trigger_name ALL USER ] ENABLE REPLICA TRIGGER trigger_name ENABLE ALWAYS TRIGGER trigger_name DISABLE RULE rewrite_rule_name ENABLE RULE rewrite_rule_name ENABLE REPLICA RULE rewrite_rule_name ENABLE ALWAYS RULE rewrite_rule_name CLUSTER ON index_name SET WITHOUT CLUSTER SET WITH OIDS SET WITHOUT OIDS SET ( storage_parameter = value [,... ] ) RESET ( storage_parameter [,... ] ) INHERIT parent_table NO INHERIT parent_table OWNER TO new_owner SET TABLESPACE new_tablespace ALTER TABLE permite modificar a definição de uma tabela criada anteriormente. De entre as modificações que o comando ALTER permite efectuar numa tabela anteriormente criada, as mais relevantes são: Com RENAME TO new_name é possível modificar o nome da tabela de name para new_name, é possível renomear as colunas da tabela com RENAME [ COLUMN ] column TO new_column. Com ALTER TABLE tanto se pode adicionar novas colunas à tabela como se pode eliminar colunas já existentes, isto é feito com ADD COLUMN e DROP COLUMN respectivamente. Pode-se alterar o tipo de dados das colunas com SET DATA TYPE, alterar ou remover os valores por defeito das colunas com SET/DROP DEFAULT e alterar se uma coluna aceita valores nulos ou não com SET/DROP NOT NULL. Permite adicionar uma restrição à tabela com ADD table_constraint, ou eliminar uma restrição já existente com DROP CONSTRAINT. Com DISABLE/ENABLE [ REPLICA ALWAYS ] TRIGGER permite configurar o despoletar ou não de triggers pertencentes à tabela. Mais à frente os triggers serão abordados com mais profundidade. Permite ainda definir as relações de herança entre tabelas com a cláusula INHERIT 18

19 parent_table ou eliminar relações já existentes com NO INHERIT parent_table. É ainda possível alterar o nome do utilizador que é considerado como sendo o dono da tabela com a cláusula OWNER TO new_owner, em que new_owner é o nome do novo dono. Os comandos ADD, DROP, SET DEFAULT e SET DATA TYPE (sem USING) encontram-se de acordo com o standard SQL. As outras formas são extensões do sistema de base de dados PostgreSQL. A capacidade de definir mais de uma alteração no mesmo comando ALTER TABLE também é uma extensão do sistema estudado. ALTER TABLE DROP COLUMN pode ser usado para eliminar a única coluna de uma tabela, deixando-a sem colunas. Isto, como já foi anteriormente referido, trata-se de uma extensão ao standard por parte do PostgreSQL, no standard isto não é aconselhado ALTER INDEX ALTER INDEX name RENAME TO new_name ALTER INDEX name SET TABLESPACE tablespace_name ALTER INDEX name SET ( storage_parameter = value [,... ] ) ALTER INDEX name RESET ( storage_parameter [,... ] ) ALTER INDEX permite modificar a definição de um INDEX criado anteriormente. Este comando é bastante limitado, permite renomear o INDEX, alterar o TABLESPACE, os parâmetros de armazenamento e pouco mais. Todas estas operações podem ser feitas também com o comando ALTER TABLE. ALTER INDEX é uma extensão do sistema de base de dados PostgreSQL ALTER VIEW ALTER VIEW name ALTER [ COLUMN ] column SET DEFAULT expression ALTER VIEW name ALTER [ COLUMN ] column DROP DEFAULT ALTER VIEW name OWNER TO new_owner ALTER VIEW name RENAME TO new_name ALTER VIEW name SET SCHEMA new_schema ALTER VIEW permite modificar a definição de uma VIEW criada anteriormente. O comando RENAME TO new_name permite renomear a VIEW, o comando OWNER TO new_owner permite alterar o dono da VIEW, é ainda possível definir ou eliminar os valores padrão para uma coluna através do comando SET/DROP DEFAULT. ALTER VIEW é uma extensão do sistema de base de dados PostgreSQL ao standard SQL. 19

20 ALTER TRIGGER ALTER TRIGGER name ON table RENAME TO newname ALTER TRIGGER permite modificar a definição de um TRIGGER criado anteriormente para a tabela table. Com a cláusula RENAME é possível renomear o TRIGGER de name para newname. Trata-se na realidade de um comando bastante limitado, só permitindo mesmo a modificação do seu nome. Caso seja necessário activar ou desactivar o TRIGGER em questão deve-se recorrer ao comando ALTER TABLE, como já foi mencionado antes. ALTER TRIGGER é uma extensão do PostgreSQL ao standard SQL ALTER FUNCTION ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [,...] ] ) action [... ] [ RESTRICT ] ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [,...] ] ) RENAME TO new_name ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [,...] ] ) OWNER TO new_owner ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [,...] ] ) SET SCHEMA new_schema onde action é um de: CALLED ON NULL INPUT RETURNS NULL ON NULL INPUT STRICT IMMUTABLE STABLE VOLATILE [ EXTERNAL ] SECURITY INVOKER [ EXTERNAL ] SECURITY DEFINER COST execution_cost ROWS result_rows SET configuration_parameter { TO = } { value DEFAULT } SET configuration_parameter FROM CURRENT RESET configuration_parameter RESET ALL ALTER FUNCTION permite modificar a definição de uma função criada anteriormente. É possível renomear a função com RENAME TO new_name, com OWNER TO new_owner pode-se alterar o dono da função e para além destas opções bastante simples pode-se ainda através da definição de uma action alterar um leque vasto de opções da função. Com action é possível definir que tipo de tratamento é dado à função quando é chamada com argumentos nulos, se CALLED ON NULL INPUT, se RETURNS NULL ON NULL INPUT ou STRICT. É possível redefinir IMMUTABLE, STABLE e VOLATILE. O significado destes diferentes modos foi amplamente discutido no CREATE FUNCTION. É ainda possível modicar os valores estimados de execution_cost e result_rows para qualquer valor que se deseje. O comando ALTER FUNCTION encontra-se parcialmente compatível com o presente no standard SQL. Por exemplo o standard permite que mais propriedades de uma função sejam modificadas mas não permite renomear uma função ou alterar o seu dono. 20

Regras de Integridade. Profa. Késsia Marchi

Regras de Integridade. Profa. Késsia Marchi Regras de Integridade Restrições de Integridade Integridade refere-se a precisão ou correção de dados em um banco de dados; Restrição refere-se a impor uma condição para qualquer atualização. Antes de

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

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

Structured Query Language (SQL)

Structured Query Language (SQL) Structured Query Language (SQL) SQL-Breve Histórico : # CREATE, ALTER e DROP; # BEGIN TRANSACTION, ROLLBACK e COMMIT; # GRANT, REVOKE e DENY; 1 Structured Query Language (SQL) Desenvolvida pelo departamento

Leia mais

Comandos DDL. id_modulo = id_m odulo

Comandos DDL. id_modulo = id_m odulo Comandos DDL Estudo de Caso Controle Acadêmico Simplificado Uma escola contém vários cursos, onde cada aluno possui uma matricula num determinado curso. Estes cursos, por sua vez, possuem módulos, aos

Leia mais

BANCO DE DADOS: SQL. Edson Anibal de Macedo Reis Batista. 27 de janeiro de 2010

BANCO DE DADOS: SQL. Edson Anibal de Macedo Reis Batista. 27 de janeiro de 2010 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

Leia mais

Trabalho de SBD Estudo do sistema POSTGRESQL

Trabalho de SBD Estudo do sistema POSTGRESQL Trabalho de SBD Estudo do sistema POSTGRESQL João Miguel Vaz, 31644 Ricardo Vaz Alves, 31229 Vasco Jorge Pessanha, 31235 Índice 1. Introdução:... 4 1.1. História dos SGBDs... 4 1.2. História do PostgreSQL...

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

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com - Aula 11-1. INTRODUÇÃO TRIGGERS (GATILHOS OU AUTOMATISMOS) Desenvolver uma aplicação para gerenciar os dados significa criar uma aplicação que faça o controle sobre todo ambiente desde a interface, passando

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

Bases de Dados 2012/2013 Restrições de Integridade em SQL. Helena Galhardas 2012 IST. Bibliografia

Bases de Dados 2012/2013 Restrições de Integridade em SQL. Helena Galhardas 2012 IST. Bibliografia Bases de Dados 2012/2013 Restrições de Integridade em SQL Helena Galhardas Bibliografia Raghu Ramakrishnan, Database Management Systems, Cap. 3 e 5 1 1 Sumário Restrições de Integridade (RIs) em SQL Chave

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

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

Sistemas de Base de Dados 2010/11 GRUPO 10 ANDRÉ MOURÃO Nº 35008 EDUARDO COSTA Nº 355049 RICARDO MARQUES Nº 35048

Sistemas de Base de Dados 2010/11 GRUPO 10 ANDRÉ MOURÃO Nº 35008 EDUARDO COSTA Nº 355049 RICARDO MARQUES Nº 35048 DEPARTAMENTO DE INFORMÁTICA TRABALHO FINAL POSTGRESQL Sistemas de Base de Dados 2010/11 Mestrado em Engenharia Informática GRUPO 10 ANDRÉ MOURÃO Nº 35008 EDUARDO COSTA Nº 355049 RICARDO MARQUES Nº 35048

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

SQL - Criação de Tabelas

SQL - Criação de Tabelas SQL - Criação de Tabelas André Restivo Faculdade de Engenharia da Universidade do Porto February 24, 2012 André Restivo (FEUP) SQL - Criação de Tabelas February 24, 2012 1 / 25 Sumário 1 Introdução 2 Tabelas

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

PostgreSQL 8.0. Diogo Biazus

PostgreSQL 8.0. Diogo Biazus PostgreSQL 8.0 Diogo Biazus PostgreSQL 7.X Totalmente ACID MVCC Tipos e operadores customizáveis Diversas linguagens procedurais Hot backup Código aberto (BSD) Facilidade de extensão PL/pgSQL, PL/Python,

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

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

Triggers em PostgreSQL. Linguagem de Programação de Banco de Dados. Triggers em PostgreSQL. Triggers em PostgreSQL

Triggers em PostgreSQL. Linguagem de Programação de Banco de Dados. Triggers em PostgreSQL. Triggers em PostgreSQL Prof. Ms. Luiz Alberto Contato: lasf.bel@gmail.com Linguagem de Programação de Banco de Dados Triggers em PostgreSQL Todos os bancos de dados comerciais possuem uma linguagem procedural auxiliar para a

Leia mais

trigger insert, delete, update

trigger insert, delete, update 1 Um trigger é um conjunto de instruções SQL armazenadas no catalogo da BD Pertence a um grupo de stored programs do MySQL Executado quando um evento associado com uma tabela acontece: insert, delete,

Leia mais

Sistemas de Informação

Sistemas de Informação Sistemas de Informação Rules and Triggers André Restivo Sistemas de Informação 2006/07 Rules e Triggers Nem todas as restrições podem ser definidas usando os mecanismos que estudamos anteriormente: - CHECK

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

Triggers. um trigger permite que uma determinada sequência de comandos SQL seja accionada quando um determinado evento ocorre.

Triggers. um trigger permite que uma determinada sequência de comandos SQL seja accionada quando um determinado evento ocorre. Triggers um trigger permite que uma determinada sequência de comandos SQL seja accionada quando um determinado evento ocorre. o evento pode ser INSERT, UPDATE, ou DELETE. o trigger pode ser accionado imediatamente

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

Linguagem SQL Sub-linguagem DDL

Linguagem SQL Sub-linguagem DDL Linguagem SQL Sub-linguagem DDL 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 Language para suas

Leia mais

Tarefa Orientada 15 Manipulação de dados

Tarefa Orientada 15 Manipulação de dados Tarefa Orientada 15 Manipulação de dados Objectivos: Criação de tabelas teste Comando INSERT INTO Inserção de dados Comando INSERT Actualização de dados Comando UPDATE Eliminação de dados Comando DELETE

Leia mais

LINGUAGEM SQL. SQL Server 2008 Comandos iniciais

LINGUAGEM SQL. SQL Server 2008 Comandos iniciais 1 LINGUAGEM SQL SQL Server 2008 Comandos iniciais SQL - STRUCTURED QUERY LANGUAGE Quando os Bancos de Dados Relacionais estavam sendo desenvolvidos, foram criadas linguagens destinadas à sua manipulação.

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

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

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

Triggers e Regras. Fernando Lobo. Base de Dados, Universidade do Algarve

Triggers e Regras. Fernando Lobo. Base de Dados, Universidade do Algarve Triggers e Regras Fernando Lobo Base de Dados, Universidade do Algarve 1 / 14 Triggers Um trigger permite que uma determinada sequência de comandos SQL seja accionada quando um determinado evento ocorre.

Leia mais

Structured Query Language (SQL) Aula Prática

Structured Query Language (SQL) Aula Prática Structured Query Language (SQL) Aula Prática Linguagens de SGBD Durante o desenvolvimento do sistema R, pesquisadores da IBM desenvolveram a linguagem SEQUEL, primeira linguagem de acesso para Sistemas

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

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

PostgreSQL Performance

PostgreSQL Performance PostgreSQL Performance André Restivo Faculdade de Engenharia da Universidade do Porto February 24, 2012 André Restivo (FEUP) PostgreSQL Performance February 24, 2012 1 / 45 Sumário 1 Armazenamento 2 Índices

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

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

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

0 1 5 5 _ B A S E D E D A D O S P A R A I N T E R N E T ( S E R V E R S I D E )

0 1 5 5 _ B A S E D E D A D O S P A R A I N T E R N E T ( S E R V E R S I D E ) 0 1 5 5 _ B A S E D E D A D O S P A R A I N T E R N E T ( S E R V E R S I D E ) EFA NÍVEL SECUNDÁRIO TECNOLOGIAS DE INFORMAÇÃO E COMUNICAÇÃO MULTIMÉDIA (TICM) 04-05-2011 0155_Base de dados para Internet

Leia mais

SQL SQL BANCO DE DADOS 2. Componentes do SQL (1) Componentes do SQL (2) DDL Criação de banco de dados. Padrões de SQL

SQL SQL BANCO DE DADOS 2. Componentes do SQL (1) Componentes do SQL (2) DDL Criação de banco de dados. Padrões de SQL BANCO DE DADOS 2 SQL (CREATE TABLE, CONSTRAINTS, DELETE, UPDATE e INSERT) Prof. Edson Thizon SQL SQL ( structured query language ) é uma linguagem comercial de definição e manipulação de banco de dados

Leia mais

SQL92 DDL( RIS, ACTUALIZAÇÕES E VISTAS) DML (QUERIES, SUBQUERIES,JUNÇÕES, E OPERAÇÕES SOBRE CONJUNTOS)

SQL92 DDL( RIS, ACTUALIZAÇÕES E VISTAS) DML (QUERIES, SUBQUERIES,JUNÇÕES, E OPERAÇÕES SOBRE CONJUNTOS) SQL92 DDL( RIS, ACTUALIZAÇÕES E VISTAS) DML (QUERIES, SUBQUERIES,JUNÇÕES, E OPERAÇÕES SOBRE CONJUNTOS) SQL SQL, é uma linguagem de programação que foi desenvolvida para questionar bases de dados relacionais

Leia mais

PL/pgSQL por Diversão e Lucro

PL/pgSQL por Diversão e Lucro PL/pgSQL por Diversão e Lucro Roberto Mello 3a. Conferência Brasileira de PostgreSQL - PGCon-BR Campinas - 2009 1 Objetivos Apresentar as partes principais do PL/pgSQL Apresentar casos de uso comum do

Leia mais

Programação SQL. Introdução

Programação SQL. Introdução Introdução Principais estruturas duma Base de Dados: Uma BD relacional é constituída por diversas estruturas (ou objectos ) de informação. Podemos destacar: Database: designa a própria BD; Table/Tabela:

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

SQL BÁSICO. Introdução. Prof. Suelane Garcia. Linguagem SQL (Structured Query Language)

SQL BÁSICO. Introdução. Prof. Suelane Garcia. Linguagem SQL (Structured Query Language) SQL BÁSICO Prof. Suelane Garcia Introdução 2 Linguagem SQL (Structured Query Language) Linguagem de Consulta Estruturada padrão para acesso a Banco de Dados. Usada em inúmeros Sistemas de Gerenciamento

Leia mais

2008.1 SQL. Autor: Renata Viegas

2008.1 SQL. Autor: Renata Viegas SQL Autor: Renata Viegas 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

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

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

EXERCÍCIOS PRÁTICOS. Banco de Dados

EXERCÍCIOS PRÁTICOS. Banco de Dados EXERCÍCIOS PRÁTICOS Banco de Dados Introdução ao uso do SQL Structured Query Language, considerando tanto DDL Data Definition Language quanto DML Data Manipulation Language. Banco de Dados selecionado:

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

BD Oracle. Licenciatura em Engenharia Informática e Computação. Bases de Dados 2003/04

BD Oracle. Licenciatura em Engenharia Informática e Computação. Bases de Dados 2003/04 BD Oracle SGBD Oracle Licenciatura em Engenharia Informática e Computação Bases de Dados 2003/04 BD Oracle Introdução aos SGBD Base de Dados Colecção de dados que descrevem alguma realidade Sistema de

Leia mais

BANCO DE DADOS WEB AULA 4. linguagem SQL: subconjuntos DCL, DDL e DML. professor Luciano Roberto Rocha. www.lrocha.com

BANCO DE DADOS WEB AULA 4. linguagem SQL: subconjuntos DCL, DDL e DML. professor Luciano Roberto Rocha. www.lrocha.com BANCO DE DADOS WEB AULA 4 linguagem SQL: subconjuntos DCL, DDL e DML professor Luciano Roberto Rocha www.lrocha.com O que é SQL? Structured Query Language, ou Linguagem de Consulta Estruturada ou SQL,

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

SQL. Structured Query Language

SQL. Structured Query Language SQL Structured Query Language Construções básicas Junção de Tabelas Join O uso da operação JOIN numa cláusula FROM especifica como se deseja que as tabelas sejam vinculadas. Use INNER JOIN para associar

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

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

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

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

SQL Gatilhos (Triggers)

SQL Gatilhos (Triggers) SQL Gatilhos (Triggers) Laboratório de Bases de Dados Gatilho (trigger) Bloco PL/SQL que é disparado de forma automática e implícita sempre que ocorrer um evento associado a uma tabela INSERT UPDATE DELETE

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

Bases de Dados 2007/2008. Aula 9

Bases de Dados 2007/2008. Aula 9 Bases de Dados 2007/2008 Aula 9 1. T-SQL TRY CATCH 2. TRATAMENTO ERROS RAISERROR 3. TRIGGERS 4. EXERCÍCIOS Sumário Referências http://msdn2.microsoft.com/en-us/library/ms189826.aspx (linguagem t-sql) http://www.di.ubi.pt/~pprata/bd/bd0405-proc.sql

Leia mais

Programação SQL. Manipulação de Dados. DML Data Manipulation Language

Programação SQL. Manipulação de Dados. DML Data Manipulation Language Programação SQL Manipulação de Dados DML Data Manipulation Language Manipulação de Dados (DML) Os comandos INSERT, UPDATE, DELETE, são normalmente classificados como pertencendo a uma sublinguagem da linguagem

Leia mais

Roteiro 9 - SQL Básico: chave estrangeira, operadores de comparação e operadores booleanos

Roteiro 9 - SQL Básico: chave estrangeira, operadores de comparação e operadores booleanos Roteiro 9 - SQL Básico: chave estrangeira, operadores de comparação e operadores booleanos Objetivos: Criar restrições para atributos, chaves primárias e estrangeiras; Explorar consultas SQL com uso de

Leia mais

SQL DDL Criando Tabelas e Restrições

SQL DDL Criando Tabelas e Restrições SQL DDL Criando Tabelas e Restrições Fernanda Baião UNIRIO Material parcialmente extraído a partir das notas de aula de Maria Luiza M. Campos, Arnaldo Rocha e Maria Cláudia Cavalcanti Comandos de Definição

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

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

GBC043 - Sistemas de Banco de Dados SQL DDL e Implementação no PostgreSQL

GBC043 - Sistemas de Banco de Dados SQL DDL e Implementação no PostgreSQL GBC043 - Sistemas de Banco de Dados SQL DDL e Implementação no PostgreSQL Ilmério Reis da Silva ilmerio@facom.ufu.br www.facom.ufu.br/~ilmerio/sbd UFU/FACOM/BCC Página 2 Programa Teórico Visão Panorâmica

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

BANCO DE DADOS. info 3º ano. Prof. Diemesleno Souza Carvalho diemesleno@iftm.edu.br www.diemesleno.com.br

BANCO DE DADOS. info 3º ano. Prof. Diemesleno Souza Carvalho diemesleno@iftm.edu.br www.diemesleno.com.br BANCO DE DADOS info 3º ano Prof. Diemesleno Souza Carvalho diemesleno@iftm.edu.br www.diemesleno.com.br Na última aula estudamos Unidade 4 - Projeto Lógico Normalização; Dicionário de Dados. Arquitetura

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

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

SQL. Histórico BANCO DE DADOS. Conceito. Padrões de SQL (1) Componentes do SQL (1) Padrões de SQL (2) (DDL: CREATE TABLE, CONSTRAINTS)

SQL. Histórico BANCO DE DADOS. Conceito. Padrões de SQL (1) Componentes do SQL (1) Padrões de SQL (2) (DDL: CREATE TABLE, CONSTRAINTS) BANCO DE DADOS SQL (DDL: CREATE TABLE, CONSTRAINTS) Prof. Edson Thizon Histórico Entre 1974 e 1979, o San José Research Laboratory da IBM desenvolveu um SGDB relacional que ficou conhecido como Sistema

Leia mais

DBMS%Performance% Carlos%Soares% (baseado%em%materiais%gen8lmente%cedidos% por%andré%res8vo,%joão%correia%lopes%e%do% livro%ramakrishnan%&%gehrke)% %

DBMS%Performance% Carlos%Soares% (baseado%em%materiais%gen8lmente%cedidos% por%andré%res8vo,%joão%correia%lopes%e%do% livro%ramakrishnan%&%gehrke)% % DBMS%Performance% Carlos%Soares% (baseado%em%materiais%gen8lmente%cedidos% por%andré%res8vo,%joão%correia%lopes%e%do% livro%ramakrishnan%&%gehrke)% % Plano% Contexto% Índices% Carga%da%base%de%dados%%

Leia mais

Os dados no MySQL são armazenado em tabelas. Uma tabela é uma colecção de informação relacionada e consiste em colunas e linhas.

Os dados no MySQL são armazenado em tabelas. Uma tabela é uma colecção de informação relacionada e consiste em colunas e linhas. MySQL 101 Recapitulando Os dados no MySQL são armazenado em tabelas. Uma tabela é uma colecção de informação relacionada e consiste em colunas e linhas. As bases de dados são úteis quando necessitamos

Leia mais

Linguagem SQL (Parte II)

Linguagem SQL (Parte II) Universidade Federal de Sergipe Departamento de Sistemas de Informação Itatech Group Jr Softwares Itabaiana Site: www.itatechjr.com.br E-mail: contato@itatechjr.com.br Linguagem SQL (Parte II Introdução

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

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

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

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

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

SQL. Hélder Antero Amaral Nunes

SQL. Hélder Antero Amaral Nunes SQL Hélder Antero Amaral Nunes 2 Introdução Desenvolvida pelo departamento 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

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

SQL Structured Query Language. SQL Linguagem de Definição de Dados. SQL Structured Query Language. SQL Structured Query Language

SQL Structured Query Language. SQL Linguagem de Definição de Dados. SQL Structured Query Language. SQL Structured Query Language Pós-graduação em Ciência da Computação CCM-202 Sistemas de Banco de Dados SQL Linguagem de Definição de Dados Profa. Maria Camila Nardini Barioni camila.barioni@ufabc.edu.br Bloco B - sala 937 2 quadrimestre

Leia mais

Sistemas de Base de Dados

Sistemas de Base de Dados Sistemas de Base de Dados Análise do SGBD PostgreSQL Bruno Barão nº28061 Fábio Afonso nº30218 Hugo Fernandes nº28062 Índice de Conteúdos Índice de Conteúdos...ii Introdução... 1 Introdução Histórica...

Leia mais

Consistem num conjunto de apontadores para instâncias especificas de cada relação.

Consistem num conjunto de apontadores para instâncias especificas de cada relação. Mecanismo usado para mais fácil e rapidamente aceder à informação existente numa base de dados. Bases de Dados de elevadas dimensões. Consistem num conjunto de apontadores para instâncias especificas de

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

Introdução às funções e procedimentos. SQL suporta funções e procedimentos úteis com tipos de dados específicos

Introdução às funções e procedimentos. SQL suporta funções e procedimentos úteis com tipos de dados específicos Bases de Dados Stored procedures e triggers Introdução às funções e procedimentos SQL suporta funções e procedimentos úteis com tipos de dados específicos p.ex. objectos geométricos, imagens intersecção

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

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

Tarefa Orientada 12 Junção Externa, Auto-Junção e União

Tarefa Orientada 12 Junção Externa, Auto-Junção e União Tarefa Orientada 12 Junção Externa, Auto-Junção e União Objectivos: Junção externa (Outer JOIN) Junção externa à esquerda (LEFT Outer JOIN) Junção externa à direita (RIGHT Outer JOIN) Junção externa completa

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 Os comandos SQL podem ser agrupados em 3 classes: DDL Data Definition Language Comandos para a Definição

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

SQL DDL Criando Tabelas e Restrições Instituto Militar de Engenharia IME Material extraido parcialmente de notas de aula de Maria Luiza Campos e Arnaldo Vieira Comandos de Definição de Dados Aplicação

Leia mais

SQL Server Triggers Aprenda a utilizar triggers em views e auditar as colunas atualizadas em uma tabela

SQL Server Triggers Aprenda a utilizar triggers em views e auditar as colunas atualizadas em uma tabela SQL Server Triggers Aprenda a utilizar triggers em views e auditar as colunas atualizadas em uma tabela Certamente você já ouviu falar muito sobre triggers. Mas o quê são triggers? Quando e como utilizá-las?

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

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

Capitulo 2. Prof.º Espc. Fábio Margarito Martins de Barros - Tecnologia de banco de dados

Capitulo 2. Prof.º Espc. Fábio Margarito Martins de Barros - Tecnologia de banco de dados Capitulo 2 1. MODELO LÓGICO DE BANCO DE DADOS... 2 1.1 Definição... 2 1.2 Mapeando o modelo conceitual para o modelo lógico... 2 1.2 Dicionário de dados... 3 2. MODELO FÍSICO DO BANCO DE DADOS... 4 2.1

Leia mais

Tarefa Orientada 20 Cursores

Tarefa Orientada 20 Cursores Tarefa Orientada 20 Cursores Objectivos: Declarar cursores Utilizar cursores Utilizar funções do sistema para trabalhar com cursores Actualizar dados através de cursores Um cursor é um objecto da base

Leia mais