SQL em Informix Motores de Bases de Dados Informix e utilização de SQL



Documentos relacionados
trigger insert, delete, update

Sumário Introdução Breve História da Linguagem SQL l 0.3 Características da Linguagem SQL A Composição deste Livro 3

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

Sistemas de Informação

Banco de Dados II. Triggers e Functions. Prof. Moser Fagundes. Curso TSI Instituto Federal Sul-Rio-Grandense (IFSul) Campus Charqueadas

BANCO DE DADOS. info 3º ano. Prof. Diemesleno Souza Carvalho

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

Bancos de Dados I. Integridade semântica


PL/pgSQL por Diversão e Lucro

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

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

SQL Gatilhos (Triggers)

Bases de Dados 2007/2008. Aula 9

EXEMPLOS DE COMANDOS NO SQL SERVER

Banco de Dados. Marcio de Carvalho Victorino Exercícios SQL

Banco de Dados. Prof. Antonio

Comandos de Manipulação

SQL (Structured Query Language)

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

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

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

Tarefa Orientada 19 Triggers

PROGRAMA. Objectivos Gerais :

PROGRAMA. Aquisição dos conceitos teóricos mais importantes sobre bases de dados contextualizados à luz de exemplos da sua aplicação no mundo real.

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

Monitoria GDI Aula Prática. DML + PL/SQL parte 1

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

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

Histórico de revisões

PROGRAMAÇÃO EM BANCO DADOS Stored Procedure e Trigger

8. Outros tipos de Transação (Modo de Transação de Autoconfirmação e Modo Implícito)

Triggers no PostgreSQL

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

Operação de União JOIN

Banco de Dados. Maurício Edgar Stivanello

CONCORRÊNCIA. Buscando aumentar os níveis de concorrência redução da espera em detrimento do isolamento, a SQL definiu alguns níveis de isolamento.

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

Relatório. Projecto de Base de Dados Parte 2. Turno: quinta-feira, 11:30 Grupo 25: André Gonçalves Rui Barradas Hélton Miranda 68477

Formação em Banco de Dados

RECUPERAÇÃO DE CONTEÚDO BANCO DE DADOS

Tarefa Orientada 16 Vistas

Transações Seguras em Bancos de Dados (MySQL)

Formação em Banco de Dados. Subtítulo

CREATE TABLE AUTOR ( cod_autor int not null primary key, nome_autor varchar (60) )

PROCEDIMENTOS ARMAZENADOS (Stored Procedures)

Escrito por Sex, 14 de Outubro de :12 - Última atualização Seg, 26 de Março de :33

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

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

Sumário Agradecimentos Sobre.o.autor Prefácio Capítulo.1..Bem-vindo.ao.MySQL... 22

Integridade dos Dados

Treinamento PostgreSQL - Aula 03

Linguagem de Consulta Estruturada SQL- DML

Programação com ODBC 3

SQL Structured Query Language

O comando CREATE TABLE cria a tabela solicitada e obedece à seguinte forma:

PostgreSQL 8.0. Diogo Biazus

Bases de Dados 2012/2013 Funções/procedimentos e triggers. Helena Galhardas 2012 IST. Bibliografia. Manual referência PostgreSQL

Programação SQL. Introdução

António Rocha Nuno Melo e Castro

Regras de Negócios é com o Elefante!

Oracle PL/SQL Overview

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

Sumário. Capítulo 2 Conceitos Importantes Tópicos Relevantes Instance Base de Dados Conclusão... 37

FUNCTION ) RETURNS INTEGER AS $$ DECLARE

PROGRAMAÇÃO EM BANCO DADOS Store Procedure e Trigger

O que são Bancos de Dados?

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. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL

Gerência de Banco de Dados

Sistema de Bancos de Dados. Conceitos Gerais Sistema Gerenciador de Bancos de Dados

Oracle 10g: SQL e PL/SQL

Auditoria de sistemas Deixe que seu banco de dados faça o trabalho por você

Pontifícia Universidade Católica do Rio Grande do Sul FACULDADE DE INFORMÁTICA PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO.

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

André Milani. Novatec

Índice. Introdução Tutorial 1: O Microsoft Access como Sistema de Gestão de Bases de Dados Relacionais... 35

LINGUAGEM SQL. DML - Linguagem de Manipulação de Dados

Introdução a Sistemas de Bancos de Dados

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

Instituto Federal de Educação, Ciência e Tecnologia de São Paulo - IFSP

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

Banco de Dados - Senado

SQL. Hélder Antero Amaral Nunes

Administração de Usuários e Privilégios no Banco de Dados

P L A N I F I C A Ç Ã O A N U A L

António Rocha Nuno Melo e Castro

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

Banco de Dados I. Linguagem de Consulta (parte II) Recuperando Dados de Várias Tabelas (JOINS)

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

SQL Procedural. Josino Rodrigues Neto

Transcrição:

SQL em Informix Motores de Bases de Dados Informix e utilização de SQL Objectivos No final do curso os formandos deverão estar aptos a: Criar bases de dados com atenção à sua localização em disco e manipular a sua estrutura (create/alter/drop table/view/index/constraints) Realizar operações complexas de manipulação de dados e optimizar o seu funcionamento (insert/delete/update/select/explain) Controlar transanções com nível apropriado de bloqueio e isolamento (begin/commit/lock/isolation) Criar programas em SQL e desencadeá-los automaticamente (Stored Procedures e Triggers) Executar e controlar programas em SQL a partir do S.O. (dbaccess/nohup/at/crontab) Recorrer aos manuais e outros documentos apropriados às situações que encontrarem 29-03-05 SQL avançado 2

Bases de Dados e SGBDs BD:, linhas, colunas, tabelas (ficheiros), linhas (registos), colunas (campos) e dicionário Motor de Base de Dados: manipulação de estrutura manipulação de dados interface uniforme (SQL) 29-03-05 SQL avançado 3 Informix: genealogia dos SGBDR Genealogia dos produtos Informix: Informix 3.30 (SGBD + Ace, Perform) Informix SQL (SGBD + SAce, SPerform) Informix Standard Engine (SGBD isolado, ficheiros indexados+dicionário) Informix Turbo (motor avançado) Informix Online (V.5) Informix Dynamic Server (V.6-7) Informix Dynamic / Universal Server (V.9) c/ Datablades (extensibilidade) 29-03-05 SQL avançado 4

Datablades e SQL 3 Tipos standard vs. extensibilidade Select nome, morada from clientes where distance(cliente.coord, coordnossasede()) < 00 Ex: Indexação e pesquisa por parâmetros geográficos Select * from reclamacoes r where contains(r.texto, não funciona ) Ex: Indexação de texto e pesquisa imune a erros ortográficos, acentos, utilização de sinónimos, etc. 29-03-05 SQL avançado 5 Arquitectura de disco Discos, chunks, dbspaces, tablespaces, onstat -d Disco Disco 2 Disco 3 Disco 4 Chunks DBSPACE TBLSPACE TBLSPACE TBLSPACE TBLSPACE 29-03-05 SQL avançado 6

Acesso RAW / COOKED APLICAÇÃO SGBD SISTEMA OPERATIVO COOKED FILE SUBSYSTEM (FILE CACHE) RAW DEVICE SUBSYSTEM (DIRECTO) HARDWARE DISCOS 29-03-05 SQL avançado 7 Paralelismo e fragmentação QUERY CPU CPU2 Disco Disco2 CPU3 Disco3 CPU64 Disco64 29-03-05 SQL avançado 8

Transacções Logical log, physical log Begin work, Commit work, Rollback work Long transactions DBSPACE TBLSPACE TX-A TX3-A TBLSPACE TBLSPACE TX-B TX2-A TBLSPACE TX-C LOGICAL LOG TX-A TX2-A TX-B TX-C TX3-A PHYSICAL LOG PG PG2 PG3 PG4 PGN 29-03-05 SQL avançado 9 Manuais úteis IDS 9.4 Getting Started Guide, Version 9.4 Guide to SQL: Tutorial, Reference, Syntax Database Design and Implementation Guide Performance Guide Disponíveis em http://www.ibm.com/informix/ 29-03-05 SQL avançado 0

Modelos de dados Modelização de dados Normalização Indexação Relacionamento Impactos no desempenho Desnormalização: espaço vs. velocidade Indexação: velocidade das queries vs. velocidade de registo Redundância: coerência vs. rapidez de queries Agregações pré-cozinhadas: rapidez vs. actualidade 29-03-05 SQL avançado Ferramentas importantes dbaccess dbexport / dbimport dbschema SQL load e unload 29-03-05 SQL avançado 2

Criação de Bases de Dados Create Alter Drop Primary keys e Foreign keys Defaults e Checks Indexes Localização em DBSPACES Fragmentação SET CONSTRAINTS ALL DEFERRED 29-03-05 SQL avançado 3 Documentação de bases de dados Systableext / Syscolumnext DBDocumenter ERD s 29-03-05 SQL avançado 4

Users, roles, permissões Criação de utilizadores (passwd, PAM) Roles Gestão de permissões: GRANT / REVOKE GRANT DELETE ON tb TO role2 WITH GRANT OPTION 29-03-05 SQL avançado 5 Insert e Update especiais Insert de SELECT INSERT INTO t (a,b) SELECT c,d FROM t2 Update com queries co-relacionadas UPDATE t SET c=(select c2 FROM t2 WHERE t.key=t2.key) 29-03-05 SQL avançado 6

Agrupamentos e agregações Agregados (AVG, SUM, COUNT) SELECT AVG(a), SUM(b), COUNT(UNIQUE c) FROM t Agrupamentos (GROUP BY) SELECT AVG(a), SUM(b), COUNT(UNIQUE c), d FROM t GROUP BY d HAVING d<00 Sub-queries IN SELECT a FROM t WHERE b IN (SELECT b FROM t2) EXISTS SELECT a FROM t WHERE EXISTS (SELECT * FROM T2 WHERE t2.b=t.b)

Joins e Outer Joins Join simples SELECT t.a,t2.b FROM t,t2 WHERE t.k=t2.k Join com outer SELECT t.a,t2.b FROM t, OUTER t2 WHERE t.k=t2.k Join com 2 outer (t2t SELECT t.a,t2.b, t3,c FROM t, OUTER t2, OUTER t3 WHERE t.k=t2.k AND t.k2=t3.k2 Join com outer de par de tabelas (t SELECT t.a,t2.b, t3,c FROM t, OUTER (t2, t3) WHERE t.k=t2.k AND t2.k2=t3.k2 29-03-05 SQL avançado 9 Optimização de queries Set explain SET EXPLAIN ON SET EXPLAIN OFF sqexplain.out Estatísticas UPDATE STATISTICS Monitorização $ onstat -g sql sess_id 29-03-05 SQL avançado 20

Funções SQL ABS, MOD, ROUND DBINFO serials, #rows, dbspace, etc. LENGTH, SUBSTR, TRIM, REPLACE, LPAD/RPAD, UPPER, LOWER, INITCAP NVL, DECODE DATE, YEAR, MONTH, DAY, WEEKDAY, EXTEND, TODATE, TOCHAR 29-03-05 SQL avançado 2 Exercícios Com base na BD stores7: Crie uma tabela CALLS num DBSPACE alternativo, com um campo call_recording BYTE colocado num blobspace, registando a data-hora, o cliente, o assunto e, eventualmente, o número de encomenda; Invente duas chamadas (pedido de preços e efectivação) para cada encomenda, e mais algumas aleatórias Faça uma listagem dos 0 clientes mais problemáticos (factor de problematicidade é resultado NºChamadas/NºEncomendas) Faça uma listagem dos 5 fabricantes com mais encomendas (linhas de encomenda) Assumindo que a tabela STOCK tem uma nova coluna com a disponibilidade em armazém (available - smallint), faça um mapa que apresente os produtos que estão em risco de ruptura de stock nos próximos 5 dias Faça a valorização dos monos (produtos que estão em armazém mas não têm vendas há mais de mês) Faça a listagem dos pagamentos pendentes há mais de 30 dias Faça a listagem dos clientes que já deram problemas a pagar (demoraram mais de 30 dias a pagar as encomendas) Faça uma listagem de clientes que estejam numa das seguintes situações: a) não tenham encomendas há mais de 6 meses b) nunca tenham feito nenhuma encomenda

CRIAÇÃO: SPL FUNCTIONS CREATE FUNCTION F (INTEGER A) RETURNING INTEGER, INTEGER; DEFINE B, C INTEGER; LET B=2*A; LET C=3*A; RETURN B,C; END FUNCTION; DESTRUIÇÃO: DROP FUNCTION F; UTILIZAÇÃO: SQL: SELECT A, F(A) FROM T SPL: CALL F(A) RETURNING D,E; SPL CONTROLO DE FLUXO IF condição THEN bloco ELIF bloco END IF; FOR i= TO 00 STEP 2 bloco END FOR WHILE condição bloco END WHILE

CRIAÇÃO: SPL - PROCEDURES CREATE PROCEDURE P (INTEGER A); DEFINE B INTEGER; END PROCEDURE; DESTRUIÇÃO: DROP PROCEDURE P; UTILIZAÇÃO: SQL: EXECUTE PROCEDURE P(A); SPL: CALL P(A); SPL DOCUMENTAÇÃO Documentação da procedure/function: CREATE PROCEDURE P.; -- This is a comment END PROCEDURE DOCUMENT PROCESS CUSTOMER RATING, This procedure recalculates ratings WITH LISTING IN '/tmp/proc.lst'; -- warnings list Utilização: select s.procid, procname, datakey, data from sysprocedures s, sysprocbody s2 where upper(procname)="p" and datakey= D and s.procid=s2.procid order by seqno;

SPL PROCESSAMENTO DE BLOBS BLOBS só podem ser passados por referência CREATE FUNCTION imagefunc(image REFERENCES BYTE) RETURNING REFERENCES BYTE; DEFINE image2 BYTE; RETURN image2; END FUNCTION; SPL VARIÁVEIS LOCAIS BEGIN DEFINE a INTEGER; END À SEMELHANÇA DE UMA COLUNA DEFINE a LIKE t.a; GLOBAIS (POR SESSÃO/DB) DEFINE GLOBAL a INTEGER DEFAULT 0;

SPL QUERIES UMA LINHA SELECT a,b INTO va, vb FROM t WHERE k=x; VÁRIAS LINHAS FOREACH cursor FOR SELECT a,b INTO va,vb, FROM t; END FOREACH; VÁRIAS LINHAS COM UPDATE FOREACH cursor FOR SELECT a,b INTO va,vb, FROM t; UPDATE t SET d=e WHERE CURRENT OF cursor END FOREACH; SPL CURSORES E TRANSACÇÕES CREATE PROCEDURE P(); FOREACH c WITH HOLD FOR SELECT a,b FROM t BEGIN WORK; UPDATE t SET c=var WHERE CURRENT OF c; COMMIT WORK; END FOREACH

A um utilizador: SPL - PERMISSÕES GRANT EXECUTE ON p TO user; A um grupo (role): GRANT ROLE role TO user, user2, user3; GRANT EXECUTE ON p TO role; DBA temporário: CREATE DBA PROCEDURE p99(); CREATE TABLE END PROCEDURE; DEBUGGING CREATE FUNCTION f(a INTEGER) RETURNING INTEGER; DEFINE b INTEGER; SET DEBUG FILE TO "/tmp/trace.out"; TRACE "Starting f"; -- mensagem fixa TRACE ON; -- trace procedure é mais simples LET b=a*2; RETURN b; END FUNCTION;

TRATAMENTO DE ERROS CREATE PROCEDURE p ; DEFINE ON EXCEPTION IN (-206) SET errno TRACE Error: errno; CREATE TABLE ; END EXCEPTION WITH RESUME; (código) END PROCEDURE; Lista de erros: http://www-306.ibm.com/software/data/informix/pubs/library/errors_ids94.html PROVOCAÇÃO DE ERROS CREATE PROCEDURE p ; IF THEN RAISE EXCEPTION -746,0,'My error message'; END IF END PROCEDURE;

TRIGGERS - EXEMPLOS CREATE TRIGGER tr UPDATE OF col ON tab BEFORE (EXECUTE PROCEDURE p); CREATE TRIGGER tr2 INSERT ON tab2 AFTER (EXECUTE PROCEDURE p2); CREATE TRIGGER tr3 UPDATE ON t3 REFERENCING OLD AS oldt3 NEW AS newt3 FOR EACH ROW (INSERT INTO mylog VALUES(USER, CURRENT, oldt3.precious, newt3.precious)); TRIGGERS EXEMPLOS (2) CREATE TRIGGER tr4 DELETE ON t4 REFERENCING OLD AS oldt4 FOR EACH ROW (EXECUTE PROCEDURE p4(oldt4.precious)); CREATE TRIGGER tr5 SELECT OF secretcol ON secrettab REFERENCING OLD AS secretrow FOR EACH ROW (INSERT INTO secretlog VALUES(secretrow.secretcol, USER, CURRENT));

CONCORRÊNCIA Concorrência e locks implícitos PAGE/TABLE LOCK ALTER TABLE t SET LOCK MODE PAGE SET LOCK MODE TO WAIT 5 Locks explícitos, partilhados e exclusivos Níveis de isolamento SET TRANSACTION (ISOLATION) READ UNCOMMITED (DIRTY READ) LOCKS DE DADOS IGNORADOS READ COMMITED (COMMITED READ) DEFAULT Só resultados de transacções fechadas N/S (CURSOR STABILITY) Não lê linhas correntes dos cursores REPEATABLE READ (N/S) Não é standard no IDS SERIALIZABLE (REPEATABLE READ) Não lê linhas que tenham sido lidas por cursores ainda abertos Tratamento de erros de concorrência 29-03-05 SQL avançado 37 EXECUÇÃO CONTROLADA SQL na linha de comando - dbaccess Execução em background: nohup Execução diferida: at, crontab

Monitorização Informix IDS Monitorização interactiva - onmonitor Startup/shutdown: oninit, onmode k[y] Monitorização de logs Estado: onstat Verificação do disco: oncheck Desencravanços: onmode -z Monitorização de uma sessão: onstat -g sql Backup: ontape 29-03-05 SQL avançado 39