Você está na página 1de 5

FACULDADE CENECISTA DE VARGINHA Sistemas de Informao Banco de dados I Prof.

Mrcio Henrique Corrigido em 05/10/2012

ROTEIRO PARA CRIAO DE BANCO DE DADOS USANDO FIREBIRD Considera-se que o Firebird 2.5 ou superior esteja instalado para correta execuo dos comandos abaixo.
Site para download do Firebird: www.firebirdsql.org

01) Executar o console de comandos (cmd) Clicar em -> Executar, digitar CMD e teclar ENTER Digite CD\ para ir para a raiz da unidade C 02) Criar a pasta de trabalho que ir armazenar o banco de dados MD c:\bad1t2012 Baixar os arquivos pessoas.txt e receitas.txt disponveis em www... 03) Entrar na pasta do Firebird (WinXp) Cd \arquivos de programas\firebird\firebird_2_5\bin <Enter> (Win7_fb64) Cd \Program Files\Firebird\Firebird_2_5\bin <Enter> (Win7_fb32) Cd \Program Files (x86)\Firebird\Firebird_2_5\bin <Enter> 04) Executar o console SQL do Firebird (No executar a partir do Windows Explorer) Isql <Enter> Ser exibido o prompt SQL> 05) Definir o dialeto SQL>SET SQL DIALECT 3; O caractere ponto e vrgula indica final de comando, ou seja, quando Enter for pressionado o comando digitado ser executado. 06) Criar o banco de dados SQL>CREATE DATABASE '127.0.0.1/3050:c:\bad1t2012\CLUBE1.FDB' USER 'SYSDBA' PASSWORD 'masterkey' PAGE_SIZE 8192; Onde: 127.0.0.1 o IP do servidor. Mquina local. Pode ser usado localhost. /3050 a porta do Firebird que ser usada. Opcional. c:\bad1t2012\CLUBE1.FDB o path do banco de dados. USER 'SYSDBA' Usurio proprietrio do banco. PASSWORD 'masterkey' a senha padro do usurio SYSDBA. PAGE_SIZE 8192 o tamanho da pgina do banco de dados. Para Conectar a um banco de dados j criado utilize: CONNECT '127.0.0.1/3050:c:\bad1t2012\CLUBE1.FDB' user SYSDBA password masterkey; 07) Exibir informaes sobre o banco de dados SQL>SHOW DATABASE; 08) Criar os domnios de usurio que sero usados SQL> CREATE DOMAIN D_INTEIRO_NULL AS INTEGER; SQL> CREATE DOMAIN D_INTEIRO_NN AS INTEGER NOT NULL; SQL> CREATE DOMAIN D_DINHEIRO_NULL AS NUMERIC(15,2); SQL> CREATE DOMAIN D_DINHEIRO_NN AS NUMERIC(15,2) DEFAULT 0 NOT NULL; SQL> CREATE DOMAIN D_DATA_NULL AS DATE; SQL> CREATE DOMAIN D_DATA_NN AS DATE NOT NULL; 1

FACULDADE CENECISTA DE VARGINHA Sistemas de Informao Banco de dados I Prof. Mrcio Henrique Corrigido em 05/10/2012 SQL> CREATE DOMAIN D_TELEFONE_NULL AS VARCHAR(13); SQL> CREATE DOMAIN D_NOME_NN AS VARCHAR(40) NOT NULL; SQL> CREATE DOMAIN D_SN AS CHAR(1) DEFAULT 'S' NOT NULL CHECK (VALUE IN ('S','N')); SQL> CREATE DOMAIN D_SEXO AS CHAR(1) NOT NULL CHECK (VALUE IN ('M','F')); 09) Listar os domnios criados SQL>SHOW DOMAINS; 10) Ver os detalhes de um domnio SQL>SHOW DOMAIN D_INTEIRO_NN; 11) Modificar um domnio existente SQL> ALTER DOMAIN D_SN TO D_SIMNAO; 12) Ver os detalhes de um domnio alterado SQL>SHOW DOMAIN D_SIMNAO; 13) Criar a primeira tabela SQL> CREATE TABLE PESSOAS ( PES_CODIGO D_INTEIRO_NN NOT NULL, PES_NOME D_NOME_NN, PES_DATANASC D_DATA_NULL, PES_TELEFONE D_TELEFONE_NULL); 14) Modificar a tabela para adicionar a chave primria SQL>ALTER TABLE PESSOAS ADD CONSTRAINT PK_PESSOAS PRIMARY KEY (PES_CODIGO); 15) Adicionar um campo tabela existe (Auto relacionamento) SQL>ALTER TABLE PESSOAS ADD PES_CODTITULAR D_INTEIRO_NN; 16) Confirmar os comandos executados SQL>COMMIT WORK; 17) Inserir um registro na tabela SQL>INSERT INTO PESSOAS (PES_CODIGO, PES_NOME, PES_DATANASC, PES_TELEFONE, PES_CODTITULAR) VALUES (1, 'BONO VOX', '1960-05-10', '(44)123-12345', 1); COMMIT WORK; 18) Exibir os dados da tabela SQL>SELECT * FROM PESSOAS;
SQL> SELECT * FROM PESSOAS; PES_CODIGO PES_NOME PES_DATANASC PES_TELEFONE PES_CODTITULAR ============ ======================================== ============ ============= ============== 1 BONO VOX 1 1960-05-10 (44)123-12345

19) Alterar dados da tabela (todas as tuplas) SQL> UPDATE PESSOAS SET PES_TELEFONE='(00) 000-0000'; 20) Excluir dados da tabela (tudo) 2

FACULDADE CENECISTA DE VARGINHA Sistemas de Informao Banco de dados I Prof. Mrcio Henrique Corrigido em 05/10/2012 SQL> DELETE FROM PESSOAS; Para sair digite:QUIT;

FACULDADE CENECISTA DE VARGINHA Sistemas de Informao Banco de dados I Prof. Mrcio Henrique Corrigido em 05/10/2012

SEGUNDA PARTE
Repita os passos de 03 a 05 Execuo do ISQL Para Conectar a um banco de dados j criado utilize: SQL>CONNECT '127.0.0.1/3050:c:\bad1t2012\CLUBE1.FDB' user SYSDBA password masterkey;

21) Incluir vrios registros na tabela (O comando IN ir ler vrios comandos SQL de um arquivo e executar todos em sequncia) SQL> IN C:\BAD1T2012\PESSOAS.TXT; 22) Listar todas as pessoas que foram includas pelo comando IN SQL> SELECT * FROM PESSOAS; 23) Criar nova coluna na tabela SQL>ALTER TABLE PESSOAS ADD PES_SEXO D_SEXO; 24) Realizar alterao em alguns registros da tabela SQL> UPDATE PESSOAS SET PESSOAS.PES_SEXO = 'M'; UPDATE PESSOAS SET PES_SEXO = 'F' WHERE PES_CODIGO = 8; 25) Consultar apenas pessoas do sexo masculino SQL>SELECT * FROM PESSOAS WHERE PES_SEXO = M; 26) Consultar apenas pessoas do sexo feminino SQL>SELECT * FROM PESSOAS WHERE PES_SEXO = F; 27) Excluir determinado registro da tabela SQL>DELETE FROM PESSOAS WHERE PES_CODIGO = 2; 28) Consultar apenas os titulares SQL> SELECT PES_CODIGO,PES_NOME FROM PESSOAS WHERE PES_CODIGO=PES_CODTITULAR; 29) Consultar apenas os dependentes SQL> SELECT PES_CODIGO,PES_NOME FROM PESSOAS WHERE PES_CODIGO<>PES_CODTITULAR; 30) Consultar os dependentes e seus titulares SQL> SELECT D.PES_CODIGO,D.PES_NOME AS DEPENDENTE, (SELECT T.PES_NOME FROM PESSOAS T WHERE T.PES_CODIGO = D.PES_CODTITULAR) AS TITULAR FROM PESSOAS D WHERE D.PES_CODIGO <> D.PES_CODTITULAR; 31) Criar a segunda tabela do banco de dados SQL> CREATE TABLE RECEITAS ( REC_NUM D_INTEIRO_NN NOT NULL, REC_CODPESSOA D_INTEIRO_NN, REC_VENCIMENTO D_DATA_NN, REC_VALOR D_DINHEIRO_NN, REC_RECEBIDO D_DINHEIRO_NN, REC_OK D_SIMNAO); SQL> ALTER TABLE RECEITAS ADD CONSTRAINT PK_RECEITAS PRIMARY KEY (REC_NUM); 32) Incluir registro na segunda tabela sem integridade SQL> INSERT INTO RECEITAS (REC_NUM, REC_CODPESSOA, REC_VENCIMENTO, REC_VALOR, REC_RECEBIDO, REC_OK) VALUES (1, 2, '2009-01-01', 100, 100, 'S'); 4

FACULDADE CENECISTA DE VARGINHA Sistemas de Informao Banco de dados I Prof. Mrcio Henrique Corrigido em 05/10/2012 Observe que o campo REC_CODPESSOA aceitou um cdigo que no existe na tabela de PESSOAS. 33) Tentar criar integridade na segunda tabela SQL> ALTER TABLE RECEITAS ADD CONSTRAINT FK_REC_CODPESSOA FOREIGN KEY (REC_CODPESSOA) REFERENCES PESSOAS(PES_CODIGO) ON DELETE CASCADE ON UPDATE CASCADE USING INDEX FK_REC_CODPESSOA_IDX; Mensagem de erro: violation of FOREIGN KEY constraint "PK_PESSOAS" on table "PESSOAS" 34) Eliminar registros da segunda tabela SQL> DELETE FROM RECEITAS; COMMIT WORK; 35) Definir a integridade da segunda tabela SQL> ALTER TABLE RECEITAS ADD CONSTRAINT FK_REC_CODPESSOA FOREIGN KEY (REC_CODPESSOA) REFERENCES PESSOAS(PES_CODIGO) ON DELETE CASCADE ON UPDATE CASCADE USING INDEX FK_REC_CODPESSOA_IDX; 36) Tentar incluir regisro que viola a integridade SQL> INSERT INTO RECEITAS (REC_NUM, REC_CODPESSOA, REC_VENCIMENTO, REC_VALOR, REC_RECEBIDO, REC_OK) VALUES (1, 2, '2009-01-01', 100, 100, 'S'); 37) Incluir mais dados na segunda tabela SQL> IN C:\BAD1T2012\RECEITAS.TXT; 38) Relacionar as receitas e os titulares SQL> SELECT R.REC_CODPESSOA, R.REC_VENCIMENTO, R.REC_VALOR,R.REC_RECEBIDO,P.PES_NOME FROM RECEITAS R INNER JOIN PESSOAS P ON P.PES_CODIGO = R.REC_CODPESSOA WHERE R.REC_OK = 'S' ORDER BY REC_VENCIMENTO; 39) Somar os dbitos por titular SQL> SELECT R.REC_CODPESSOA,P.PES_NOME,SUM(R.REC_VALOR-R.REC_RECEBIDO) AS DEBITO FROM RECEITAS R INNER JOIN PESSOAS P ON P.PES_CODIGO = R.REC_CODPESSOA WHERE R.REC_OK = 'N' GROUP BY R.REC_CODPESSOA,P.PES_NOME; 40) Encerrar o console isql SQL> QUIT;