apostila banco de dados

Upload: guimirandajf

Post on 10-Jan-2016

18 views

Category:

Documents


1 download

DESCRIPTION

apostila de banco de dados

TRANSCRIPT

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 1 - 133

    SISTEMAS GERENCIADORES

    DE BANCO DE DADOS

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 2 - 133

    1. CONCEITOS FUNDAMENTAIS EM SGBD E SUAS APLICAES ............................................ 5 1.1. INTRODUO ................................................................................................................................... 5 1.2. CONCEITOS ...................................................................................................................................... 5 1.3. OBJETIVOS DE UM SISTEMA DE BANCOS DE DADOS ......................................................................... 6 1.4. VANTAGENS ..................................................................................................................................... 6 1.5. DESVANTAGENS ............................................................................................................................... 6 1.6. ABSTRAO DE DADOS .................................................................................................................... 7 1.7. MODELOS LGICOS DE DADOS ........................................................................................................ 8 1.8. INFORMAES EM UM BANCO DE DADOS ........................................................................................ 8 1.9. LINGUAGEM SQL - DEFINIO E MANIPULAO DE DADOS ......................................................... 12 1.10. PAPIS HUMANOS EM UM SISTEMA DE BANCOS DE DADOS ........................................................... 13 1.11. ESTRUTURA GERAL DE UM SISTEMA DE BANCOS DE DADOS ......................................................... 14

    2. GERENCIANDO TABELAS............................................................................................................... 16 2.1. CRIANDO TABELAS ......................................................................................................................... 17 2.2. CRIANDO TABELAS USANDO SUBCONSULTA ................................................................................... 19 2.3. ALTERANDO TABELAS .................................................................................................................... 20 2.4. ELIMINANDO TABELAS ................................................................................................................... 21 2.5. REMOVENDO LINHAS DE UMA TABELA (INSTRUO TRUNCATE) ............................................... 21

    3. RESTRIES ....................................................................................................................................... 23 3.1. NOT NULL ................................................................................................................................... 23 3.2. PRIMARY KEY ............................................................................................................................ 24 3.3. UNIQUE........................................................................................................................................ 24 3.4. CHECK ......................................................................................................................................... 25 3.5. FOREIGN KEY ............................................................................................................................. 25 3.6. ADICIONANDO UMA RESTRIO .......................................................................................... 27 3.7. ELIMINANDO UMA RESTRIO ............................................................................................ 27 3.8. DESABILITANDO UMA RESTRIO ...................................................................................... 27 3.9. REABILITANDO UMA RESTRIO ........................................................................................ 27

    4. INSERO DE DADOS ...................................................................................................................... 29 4.1. ADICIONANDO LINHAS EM UMA TABELA ........................................................................................ 30 4.2. COPIANDO LINHAS PARA UMA TABELA ........................................................................................... 32

    5. MODELO DE DADOS DO CURSO ................................................................................................... 34 5.1. DIAGRAMA DE ENTIDADES E RELACIONAMENTOS ........................................................ 34 5.2. DEFINIO DAS TABELAS IMPLEMENTADAS ................................................................... 35 5.3. EXEMPLO DOS DADOS ARMAZENADOS NAS TABELAS .................................................. 36

    6. O COMANDO SELECT E SUAS VARIAES............................................................................... 39 6.1. SELECT SIMPLES ....................................................................................................................... 39 6.2. LISTANDO APENAS LINHAS DISTINTAS, SEM DUPLICATAS (DISTINCT) ..................... 40 6.3. SELECIONANDO LINHAS (WHERE) ...................................................................................... 40 6.4. OPERADORES RELACIONAIS ................................................................................................. 41 6.5. TESTE DE NULOS (IS NULL / IS NOT NULL) .......................................................................... 42 6.6. PESQUISA GENRICA (LIKE) .................................................................................................. 43 6.7. SOMA E SUBTRAO DE CONJUNTOS (IN) .......................................................................... 44 6.8. OPERAES ARITMTICAS .................................................................................................... 44 6.9. PRINCIPAIS FUNES SQL ...................................................................................................... 46 6.9.1. FUNES CARACTER ............................................................................................................... 46 6.9.2. FUNES NUMRICAS ............................................................................................................ 48 6.9.3. FUNES DE DATA ................................................................................................................... 49 6.9.4. FUNES DE CONVERSO...................................................................................................... 50 6.9.5. FUNES DE GRUPO ................................................................................................................ 55

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 3 - 133

    6.10. OPERAES COM DATA E HORA ........................................................................................... 57 6.11. TESTE COM INTERVALOS (BETWEEN) ................................................................................ 59 6.12. OPERADORES LGICOS (AND / OR) ...................................................................................... 60 6.13. CONSTANTES ............................................................................................................................. 61 6.14. CONCATENAO (||) ................................................................................................................. 61 6.15. AGRUPAMENTO DE LINHAS (GROUP BY) ............................................................................ 62 6.16. RESTRIO NO AGRUPAMENTO (HAVING) ........................................................................ 63 6.17. CLASSIFICAO DAS LINHAS (ORDER BY) ........................................................................ 64 6.18. MANIPULAO RELACIONAL DOS DADOS ........................................................................ 65 6.18.1. JUNO DE TABELAS (JOIN).............................................................................................. 65 6.18.2. AUTO-JUNO ...................................................................................................................... 68 6.18.3. PRODUTO ENTRE TABELAS (PRODUCT) ......................................................................... 68 6.18.4. UNIO DE TABELAS (UNION) ............................................................................................ 69 6.19. SUBQUERY ................................................................................................................................. 72 6.20. INTERSEO DE TABELAS ..................................................................................................... 73 6.21. TESTE DE EXISTNCIA (EXISTS) ............................................................................................ 74 6.22. DIFERENA ENTRE TABELAS (NOT IN) ................................................................................ 76 6.23. EXERCCIOS PROPOSTOS ........................................................................................................ 77

    7. ALTERANDO DADOS EM UMA TABELA ..................................................................................... 80

    8. REMOVENDO LINHAS DE UMA TABELA ................................................................................... 82

    9. TRANSAES DE BANCO DE DADOS .......................................................................................... 84 9.1. ESTADO DOS DADOS ANTES DO FIM DA TRANSAO .................................................... 85 9.2. ESTADO DOS DADOS APS O FIM DA TRANSAO .......................................................... 85 9.3. EXEMPLO DE COMMIT E ROLLBACK ........................................................................................ 86

    10. VISES ............................................................................................................................................. 88 10.1. CRIANDO VIEWS .......................................................................................................................... 89 10.2. CRIANDO VIEWS COMPLEXAS ...................................................................................................... 90 10.3. ALTERANDO VIEWS ..................................................................................................................... 90 10.4. REGRAS PARA EXECUTAR OPERAES DML EM UMA VIEW ......................................................... 90 10.5. USANDO A CLUSULA WITH CHECK OPTION ........................................................................... 91 10.6. USANDO A CLUSULA WITH READ ONLY.................................................................................. 91 10.7. REMOVENDO UMA VIEW ............................................................................................................... 91 10.8. VIEWS EM LINHA ......................................................................................................................... 92

    11. SEQNCIAS .................................................................................................................................. 94 11.1. CRIANDO SEQNCIAS ................................................................................................................... 95 11.2. PSEUDO COLUNAS NEXTVAL E CURRVAL ................................................................................ 96

    12. NDICE ............................................................................................................................................. 99 12.1. REGRAS PARA SE CRIAR UM NDICE .............................................................................................. 100 12.2. REGRAS PARA SE NO CRIAR UM NDICE ..................................................................................... 100 12.3. ELIMINANDO UM NDICE .............................................................................................................. 100

    13. PROGRAMAS (STORED PROCEDURES) ............................................................................... 102 13.1. CRIANDO UM PROCEDIMENTO ...................................................................................................... 102 13.2. ESTRUTURA DO CORPO PROCEDURAL (PL/SQL BLOCK) DE UM PROCEDIMENTO .......................... 103 13.3. PROCEDIMENTO: .......................................................................................................................... 103 13.4. FUNO: ...................................................................................................................................... 103 13.5. SEO DE DECLARAO: ............................................................................................................. 103 13.6. SEO DE EXECUO: .................................................................................................................. 104 13.7. VANTAGENS DAS FUNES .......................................................................................................... 105 13.8. LOCAIS POSSVEIS DE CHAMADA DE FUNES .............................................................................. 105 13.9. ELIMINANDO UMA FUNO ................................................................................................ 105 13.10. COMPARANDO PROCEDIMENTOS E FUNES ................................................................. 105 13.11. DECLARANDO VARIVEIS ........................................................................................................ 106

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 4 - 133

    13.12. FUNES TEIS ....................................................................................................................... 106 13.13. DIRETRIZES DE PROGRAMAO .............................................................................................. 107 13.14. INSTRUES SQL EM PL/SQL ................................................................................................ 107

    13.14.1. Instrues SELECT em PL/SQL ........................................................................................ 107 13.14.2. Instrues INSERT, UPDATE e DELETE em PL/SQL ...................................................... 108

    13.15. INSTRUES COMMIT E ROLLBACK EM PL/SQL .............................................................. 108 13.16. CURSORES ............................................................................................................................... 109 13.17. TRATANDO EXCEES EM PL/SQL ......................................................................................... 111 13.18. EXEMPLO DE UM PROCEDIMENTO ............................................................................................ 114 13.19. EXEMPLO DE UMA FUNO ..................................................................................................... 116 13.20. BENEFCIOS QUE OS PROGRAMAS ARMAZENADOS TRAZEM ..................................................... 117

    14. VISO GERAL .............................................................................................................................. 119 14.1. PRIVILGIOS: ................................................................................................................................ 119 14.2. CRIAO DE USURIO: ................................................................................................................. 120 14.3. CONCESSO DE PRIVILGIOS: ....................................................................................................... 120 14.4. CRIANDO PERFIS (ROLE): ........................................................................................................... 121 14.5. CONCEDENDO PRIVILGIOS ROLE: ........................................................................................... 121 14.6. PRIVILGIOS DE OBJETO .............................................................................................................. 121 14.7. REVOGAO DE PRIVILGIOS: ..................................................................................................... 123

    15. GATILHOS (TRIGGERS) ............................................................................................................ 125 15.1. DIRETRIZES PARA SE PROJETAR GATILHOS ................................................................................... 125 15.2. COMPONENTES DE UM GATILHO ................................................................................................... 125 15.3. GATILHO BEFORE ...................................................................................................................... 126 15.4. GATILHO AFTER ......................................................................................................................... 126 15.5. EVENTOS DE ACIONAMENTO ........................................................................................................ 126 15.6. TIPOS DE GATILHO: ...................................................................................................................... 127 15.7. CORPO DO GATILHO: .................................................................................................................... 127 15.8. SEQNCIA DE DISPARO: ............................................................................................................. 127 15.9. SINTAXE PARA CRIAO DE GATILHOS DE INSTRUO: .............................................................. 128 15.10. EXEMPLO DE GATILHO DE INSTRUO: ................................................................................... 128 15.11. USANDO PREDICADOS CONDICIONAIS: ..................................................................................... 129 15.12. SINTAXE PARA CRIAO DE GATILHOS DE LINHA:.................................................................. 130 15.13. EXEMPLO DE GATILHO DE LINHA: ........................................................................................... 130 15.14. USANDO QUALIFICADORES ANTIGOS E NOVOS: ........................................................................ 131 15.15. DIFERENAS ENTRE GATILHOS E PROCEDIMENTOS: ................................................................. 132 15.16. GERENCIANDO GATILHOS: ....................................................................................................... 132 15.17. APLICAES DOS GATILHOS: .................................................................................................. 132

    16. BIBLIOGRAFIA ............................................................................................................................ 133

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 5 - 133

    1. Conceitos Fundamentais em SGBD e suas Aplicaes

    1.1. Introduo A importncia da informao para a tomada de decises nas organizaes tem impulsionado o desenvolvimento dos sistemas de processamento de informaes. Algumas ferramentas: processadores de texto (editorao eletrnica), planilhas (clculos com tabelas de valores), Sistemas de Gerenciamento de Bancos de Dados - SGBDs (armazenamento de grandes volumes de dados, estruturados em registros e tabelas, com recursos para acesso e processamento das informaes).

    1.2. Conceitos Banco de Dados

    uma coleo de dados inter-relacionados, representando informaes sobre um domnio especfico. Exemplos: lista telefnica, controle do acervo de uma biblioteca, sistema de controle dos recursos humanos de uma empresa.

    Sistema de Gerenciamento de Bancos de Dados (SGBD) um software com recursos especficos para facilitar a manipulao das informaes dos bancos de dados e o desenvolvimento de programas aplicativos. Exemplos: Oracle, Ingres, Paradox*, Access*, DBase*., Desktop Database Management Systems.

    Tarefas: interao com o sistema de arquivos do sistema operacional, cumprimento da integridade, cumprimento da segurana, cpias de segurana (backup) e recuperao, controle de concorrncia.

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 6 - 133

    Sistema de Bancos de Dados um sistema de manuteno de registros por computador, envolvendo quatro componentes principais: dados hardware software usurios O sistema de bancos de dados pode ser considerado como uma sala de arquivos eletrnica. Existe uma srie de mtodos, tcnicas e ferramentas que visam sistematizar o desenvolvimento de sistemas de bancos de dados.

    1.3. Objetivos de um Sistema de Bancos de Dados

    Isolar os usurios dos detalhes mais internos do banco de dados (abstrao de dados). Prover independncia de dados s aplicaes (estrutura fsica de armazenamento e estratgia de acesso).

    1.4. Vantagens

    rapidez na manipulao e no acesso informao, reduo do esforo humano (desenvolvimento e utilizao), disponibilizao da informao no tempo necessrio, controle integrado de informaes distribudas fisicamente, reduo de redundncia e de inconsistncia de informaes, compartilhamento de dados, aplicao automtica de restries de segurana, reduo de problemas de integridade.

    1.5. Desvantagens Sem dispositivos de controle adequados, a segurana pode ficar comprometida; por exemplo, no caso de acesso no autorizado a dados. A integridade das informaes pode ser comprometida se no houver mecanismos de controle; por exemplo, no caso de manipulao concorrente de dados. A operao do sistema de banco de dados e o desenvolvimento de aplicaes precisam ser feitos com muita preciso para evitar que informaes no correspondam realidade. A administrao do sistema de banco de dados pode se tornar muito complexa em ambientes distribudos, com grande volume de informaes manipuladas por uma grande quantidade de usurios.

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 7 - 133

    1.6. Abstrao de Dados

    O sistema de bancos de dados deve prover uma viso abstrata de dados para os usurios. A abstrao se d em trs nveis:

    Nvel de Viso dos . . . Usurios

    Nvel do conjunto de usurios

    Nvel de Armazenamento

    Nveis de Abstrao

    o Nvel fsico: nvel mais baixo de abstrao. Descreve como os dados esto realmente armazenados, englobando estruturas complexas de baixo nvel.

    o Nvel conceitual: descreve quais dados esto armazenados e seus relacionamentos. Neste nvel, o banco de dados descrito atravs de estruturas relativamente simples, que podem envolver estruturas complexas no nvel fsico.

    o Nvel de vises do usurio: descreve partes do banco de dados, de acordo com as necessidades de cada usurio, individualmente.

    Viso 1

    Conceitual

    Viso 2

    Viso N

    Fsico

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 8 - 133

    1.7. Modelos Lgicos de Dados

    Conjunto de ferramentas conceituais para a descrio dos dados, dos relacionamentos entre os mesmos e das restries de consistncia e integridade. Divide-se em: baseados em objetos e baseados em registros.

    Modelos lgicos baseados em objetos Descrio dos dados nos nveis conceituais e de vises de usurios. Exemplos:

    Entidade-relacionamento, Orientado a objetos.

    No modelo orientado a objetos, cdigo executvel parte integrante do modelo de dados.

    Modelos lgicos baseados em registros descrio dos dados nos nveis conceituais e de vises de usurios; o banco de dados estruturado em registros de formatos fixos, de diversos tipos; cada tipo de registro tem sua coleo de atributos; h linguagens para expressar consultas e atualizaes no banco de dados. Exemplos:

    Relacional, Rede, Hierrquico.

    No modelo relacional, dados e relacionamentos entre dados so representados por tabelas, cada uma com suas colunas especficas.

    1.8. Informaes em um Banco de Dados

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 9 - 133

    No Modelo de Rede

    Os dados so representados por colees de registros e os relacionamentos por elos.

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 10 - 133

    No Modelo Hierrquico

    Os dados e relacionamentos so representados por registros e ligaes, respectivamente. Os registros so organizados como colees arbitrrias de rvores.

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 11 - 133

    No Modelo Relacional

    Tanto os dados quanto os relacionamentos so representados por tabelas. Possui fundamento matemtico slido. Prescinde de estruturas de ndice eficientes e hardware adequado para alcanar desempenho vivel em situaes prticas.

    O Banco de Dados no Nvel Conceitual (modelo ER)

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 12 - 133

    1.9. Linguagem SQL - Definio e Manipulao de Dados

    A linguagem universal para qualquer acesso a um SGBD Relacional (sistema objeto de curso) a SQL (Structured Query Language). uma linguagem para criao de bancos de dados e para recuperao e manuteno dos dados armazenados nestes.

    Caractersticas da SQL: o Usada para controlar todas as funes de um SGBD.

    o No por si s um sistema de gerenciamento de banco de dados.

    o A responsabilidade pelo armazenamento, gerenciamento fsico e recuperao dos dados no disco do SGBD.

    o uma "linguagem padro" que interage entre o SGBD e os seus componentes ou outros gerenciadores.

    o Os comandos SQL podem ser embutidos em outra linguagem e utilizados para o acesso ao banco de dados.

    o SQL no uma linguagem completa como o Delphi ou VB, pois no contm poderosos comandos como IF, GOTO ou FOR, no permitindo assim o desenvolvimento de lgicas de programao.

    o Ela composta por um conjunto de comandos especficos para o gerenciamento de banco de dados.

    o dividida em: DDL - Data Definition Language DRL - Data Retrieval Language DML - Data Manipulation Language DCL - Data Control Language

    o DDL - Data Definition Language Define a estrutura e a forma como os dados sero

    organizados. A compilao dos comandos em DDL armazenada no

    dicionrio (ou diretrio) de dados (metadados). Tambm coordena o compartilhamento dos dados entre

    usurios concorrentes, garantindo que o trabalho de um no interfira com o de nenhum outro (data sharing) e define regras de integridade em um banco de dados, protegendo-o da corrupo por atualizaes concorrentes ou falhas do sistema (data integrity).

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 13 - 133

    o DRL - Data Retrieval Language Permite a um usurio ou a um programa de aplicao

    recuperar dados armazenados no banco e utiliz-los.

    o DML - Data Manipulation Language Permite ao usurio ou ao programa de aplicao atualizar o

    banco de dados atravs da incluso de novos dados, remoo de dados antigos ou alterao de dados armazenados.

    o DCL - Data Control Language Permite restringir um usurio a recuperao, incluso,

    excluso ou alterao dos dados, protegendo assim o acesso de pessoas no autorizadas.

    1.10. Papis Humanos em um Sistema de Bancos de Dados

    Usurios do Banco de Dados Realizam operaes de manipulao de dados. programadores de aplicaes, usurios sofisticados, usurios especializados, usurios ingnuos.

    Administrador do Sistema de Bancos de Dados Pessoa (ou grupo) responsvel pelo controle do sistema de banco de dados.

    Administrador de Dados definio e atualizao do esquema do banco de dados.

    Administrador do Banco de Dados (DBA) definio da estrutura de armazenamento e a estratgia (ou mtodo) de acesso, concesso de autorizao para acesso a dados, definio de controles de integridade, definio de estratgias para cpia de segurana e recuperao, monitoramento do desempenho, execuo de rotinas de desempenho, modificao da organizao fsica.

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 14 - 133

    1.11. Estrutura Geral de um Sistema de Bancos de Dados

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 15 - 133

    GERENCIANDO TABELAS

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 16 - 133

    2. Gerenciando Tabelas

    Objetos de um banco de dados

    Um SGBD capaz de gerenciar vrios tipos de objetos, e no apenas tabelas. Cada objeto deve ser criado para que possa ser administrado. Alguns objetos de um SGBD:

    Tabela: armazena dados Viso(View): subconjunto de dados de uma ou mais tabelas Seqncia: Gera valores de chave primria ndice: Melhora o desempenho de algumas consultas Sinnimo: Atribui nomes alternativos a objetos

    Tabelas podem ser criadas e ter suas estruturas alteradas a qualquer momento, at mesmo quando os usurios estiverem usando o banco.

    O tamanho de uma tabela definido pela quantidade de espao alocada para ela no banco.

    Os SGBDs tm regras de nomeao de objetos, no Oracle por exemplo, os nomes de tabelas devem comear com uma letra e podem ter de 1 a 30 caracteres.

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 17 - 133

    2.1. Criando tabelas

    Para criar uma tabela, utilizamos a instruo DDL: CREATE TABLE.

    Sintaxe: CREATE [GLOBAL TEMPORARY] TABLE tabela ( coluna tipo_de_dados [DEFAULT expr], coluna tipo_de_dados [DEFAULT expr], ...;

    Onde: tabela o nome da tabela coluna o nome da coluna a ser criada tipo de dados o tipo de dados e o comprimento da coluna DEFAULT expr especifica um valor a ser gravado se for omitido na instruo INSERT (impede valores nulos). Deve ser do mesmo tipo de dados da coluna.

    Exemplo: ORACLE CREATE TABLE "ITR_VOO"

    ( "NR_VOO" NUMBER(3, 0) , "DT_SAIDA_VOO" DATE NOT NULL, "HR_SAIDA_VOO" DATE NOT NULL, "NR_ROTA_VOO" NUMBER(3, 0) , "CD_ARNV" VARCHAR2(5) )

    MYSQL CREATE TABLE ITR_VOO

    ( NR_VOO decimal(3,0) NOT NULL, DT_SAIDA_VOO DATE NOT NULL, HR_SAIDA_VOO TIME NOT NULL, NR_ROTA_VOO decimal(3,0), CD_ARNV VARCHAR(5) ) ;

    Para se criar uma tabela o usurio deve ter um privilgio especial para tal.

    Tipos de Dados mais comuns (podem acontecer variaes nos nomes dependendo do SGBD utilizado, como por exemplo, NUMERIC equivalente a NUMBER):

    ORACLE TIPO DE DADOS DESCRIO VARCHAR2(tam_mx) Dados de caractere de comprimento varivel (at 4 Gb) CHAR(tam_mx) Dados de caractere de comprimento fixo NUMBER(p,s) Dados numricos de comprimento varivel

    p nmero total de dgitos s nmero de casas decimais

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 18 - 133

    DATE Valores de data e hora TIME Valores de hora LONG Dados de caractere de comprimento varivel (at 2 Gb) CLOB Dados de caractere de comprimento 1b at 4 Gb RAW e LONG RAW Dados binrios brutos BLOB Dados binrios de at 4 Gb BFILE Dados binrios armazenados em um arquivo externo at 4 Gb

    MYSQL TIPO DE DADOS DESCRIO SMALLINT Nmero inteiro desde -32768 at 32767. INTEGER, INT Nmero inteiro desde -2147483648 at 2147483647. FLOAT Nmero pequeno em vrgula flutuante de preciso simples.

    Os valores vlidos vo desde -3.402823466E+38 at -1.175494351E-38.

    DECIMAL, DEC, NUMERIC

    Nmero com vrgula.

    DATE Armazena valores de datas. DATETIME Combinao de data e hora. O formato de armazenamento

    de ano-mes-dia horas:minutos:segundos. TIME armazena uma hora. O formato de armazenamento

    'HH:MM:SS'. CHAR(n) Armazena uma cadeia de tamanho fixo. A cadeia poder

    conter desde 0 at 255 caracteres. VARCHAR(n) Armazena uma cadeia de tamanho varivel. dena-se tendo

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 19 - 133

    Criando tabelas usando subconsulta

    Um segundo mtodo para criar uma tabela aplicar a clusula da subconsulta AS para criar a tabela e inserir as linhas retornadas da subconsulta.

    Sintaxe: CREATE TABLE tabela [( coluna1, coluna2, ...)] AS subconsulta;

    Onde: tabela o nome da tabela coluna o nome da coluna a ser criada subconsulta a instruo SELECT que define o conjunto de linhas a serem inseridas na nova tabela.

    Exemplo: CREATE TABLE ITR_VOO_BACKUP (

    NR_VOO DECIMAL(3, 0) , DT_SAIDA_VOO DATE NOT NULL, HR_SAIDA_VOO TIME NOT NULL, NR_ROTA_VOO DECIMAL(3, 0) , CD_ARNV VARCHAR(5)

    ) AS SELECT * FROM ITR_VOO WHERE DT_SAIDA_VOO > 01/01/2005

    O nmero de colunas especificadas dever ser igual ao nmero de colunas da instruo SELECT.

    Tabelas especiais:

    Basicamente os SGBDs possuem dois grandes conjuntos de tabelas, as tabelas de usurio que so criadas pelos usurios do banco e as tabelas do dicionrio de dados que so criadas e mantidas pelo banco e contm informaes sobre o banco de dados propriamente dito.

    As tabelas do dicionrio de dados incluem informaes como: nomes dos usurios, privilgios concedidos, nome dos objetos, restries, informaes de auditoria, etc.

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 20 - 133

    2.2. Alterando tabelas

    Para alterar a estrutura de uma tabela, utilizamos a instruo DDL ALTER TABLE, que pode adicionar uma nova coluna tabela, modificar uma coluna existente ou definir um valor DEFAULT para a nova coluna.

    Sintaxes: ALTER TABLE tabela ADD ( coluna tipo_de_dados [DEFAULT expr], coluna tipo_de_dados [DEFAULT expr], ...;

    ALTER TABLE tabela MODIFY coluna tipo_de_dados [DEFAULT expr], coluna tipo_de_dados [DEFAULT expr], ...;

    ALTER TABLE tabela DROP COLUMN coluna;

    Onde: tabela o nome da tabela coluna o nome da coluna a ser criada tipo de dados o tipo de dados e o comprimento da coluna DEFAULT expr especifica um valor a ser gravado se for omitido na instruo INSERT (impede valores nulos). Deve ser do mesmo tipo de dados da coluna.

    Exemplos (genricos): ALTER TABLE ITR_VOO_BACKUP ADD (nm_piloto VARCHAR(9))

    ALTER TABLE ITR_VOO_BACKUP MODIFY nm_piloto VARCHAR(30)

    ALTER TABLE ITR_VOO_BACKUP DROP COLUMN nm_piloto

    Quando adicionamos uma nova coluna a uma tabela ela se tornar a ltima coluna da tabela e se a tabela j possua linhas ento a nova coluna ser inicialmente nula para todas as linhas.

    Uma alterao no valor DEFAULT de uma coluna afeta somente as inseres subseqentes alterao.

    No se pode remover a(s) coluna(s) da chave primria de uma tabela.

    Ao se diminuir a largura de uma coluna devemos ter cuidado, pois valores podem ser perdidos.

    Usando a instruo ALTER TABLE com a clusula DROP COLUMN podemos eliminar uma coluna de uma tabela que pode ou no conter dados. Somente uma

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 21 - 133

    coluna pode ser eliminada por vez e no poder ser recuperada. Toda tabela deve conter pelo menos uma coluna.

    2.3. Eliminando tabelas

    Para eliminar uma tabela, utilizamos a instruo DDL DROP TABLE, que remove a definio da tabela no SGBD e remove todos os dados e ndices criados para a tabela.

    Sintaxe: DROP TABLE tabela

    Onde: tabela o nome da tabela

    Exemplo: DROP TABLE ITR_VOO_BACKUP

    Aps a eliminao da tabela:

    Todos os dados so removidos; As VIEWS e SINNIMOS ficaro invlidos; Todas as transaes pendentes sofrero COMMIT; Somente o criador da tabela ou um usurio com privilgio de DROP ANY TABLE

    poder remover uma tabela;

    Uma vez executada, a instruo DROP TABLE irreversvel.

    2.4. Removendo linhas de uma tabela (instruo TRUNCATE)

    Para remover linhas de uma tabela existe a instruo DELETE que um comando DML. Uma alternativa a essa instruo DDL o TRUNCATE que alm de remover linhas, libera o espao de armazenamento usado por esta tabela.

    Sintaxe: TRUNCATE TABLE tabela;

    Onde: tabela o nome da tabela

    Exemplo: TRUNCATE TABLE ITR_VOO

    Por ser uma instruo DDL no se pode desfaz-la (ROLLBACK), ao contrrio da instruo DELETE.

    Para usar esta instruo deve-se ser proprietrio da tabela ou ter privilgio de DELETE TABLE para truncar a tabela.

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 22 - 133

    ADMINISTRANDO RESTRIES

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 23 - 133

    3. Restries

    Podemos definir restries de integridade para forar regras de negcio nos dados das tabelas de um banco de dados. Regras de negcio especificam condies e relacionamentos que devem sempre ser verdadeiros ou falsos.

    Quando uma restrio de integridade aplicada a uma tabela, todos os dados da tabela devem obedecer regra correspondente.

    Quando uma instruo SQL que insere ou modifica dados em uma tabela submetida, o SGBD garante que o dado novo satisfaz restrio de integridade sem que o programa tenha que faz-lo.

    Restries so usadas para impedir que dados invlidos sejam inseridos nas tabelas, ou seja, para impor regras no nvel de tabela sempre que uma linha for inserida, atualizada ou apagada.

    A restrio deve ser satisfeita para a operao de manipulao de dados ser bem-sucedida, e impede que uma tabela seja apagada se houver dependncias de outras tabelas.

    Os seguintes tipos de restrio so vlidos:

    3.1. NOT NULL

    A restrio NOT NULL (no nulo) para uma coluna requer que esta coluna deva ter um valor sempre que uma linha for inserida ou atualizada.

    Use a restrio NOT NULL quando o dado requerido para a integridade do banco de dados. Por outro lado, no defina como NOT NULL se o dado pode ser desconhecido ou no existir quando linhas forem adicionadas ou modificadas.

    Por exemplo, se todos os empregados devem pertencer a um determinado departamento, ento a coluna que contm o nmero do departamento deve ser definida com uma restrio NOT NULL

    Ao contrrio de outras restries que podem ser definidas como parte da definio da coluna ou como parte da definio da tabela, a restrio NOT NULL deve ser definida apenas como parte da definio da coluna.

    A restrio PRIMARY KEY (veja a seguir) cria automaticamente uma restrio NOT NULL para a(s) coluna(s) pertencente(s) chave primria para assegurar a unicidade entre os valores.

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 24 - 133

    3.2. PRIMARY KEY

    A restrio de PRIMARY KEY (chave primria) requer que a coluna (ou conjunto de colunas) seja identificador nico para as linhas da tabela e garante que no existir nenhuma linha duplicata.

    Uma coluna de chave primria no pode conter valores nulos. Cada tabela s pode ter uma chave primria. A restrio PRIMARY KEY cria automaticamente uma restrio NOT NULL

    e uma restrio UNIQUE para a(s) coluna(s) pertencente(s) chave primria para assegurar a unicidade entre os valores.

    Use as seguintes dicas quando estiver selecionando uma chave primria: o Sempre que for prtico, crie um gerador automtico de seqncia

    numrica (SEQUENCE) para gerar valores nicos para a(s) coluna(s) da chave primria.

    o Escolha coluna(s) cujo(s) dado(s) seja(m) nico(s), porque o propsito da chave primria identificar univocamente cada linha da tabela.

    o Escolha coluna(s) cujo(s) valor(es) nunca mude(m). O valor da chave primria usado apenas para identificar uma linha, e seu valor nunca deve ser alterado.

    o Escolha coluna(s) que no contenha(m) valore(s) nulo(s). Por definio, a restrio PRIMARY KEY no permite que nenhuma linha contenha valores nulos em nenhuma coluna que pertena chave primria.

    o Escolha coluna(s) numrica e de tamanho reduzido. Chaves primrias curtas so mais fceis de teclar.

    o Evite o uso de chave primria composta (com vrias colunas) pois, apesar de permitido, elas no satisfazem as outras recomendaes.

    3.3. UNIQUE

    Uma restrio UNIQUE KEY requer que todo valor na(s) coluna(s) seja nico, ou seja, no existiro duas linhas com valores duplicados nessa(s) coluna(s).

    Escolha essas colunas com cuidado. O propsito dessas restries diferente da PRIMARY KEY.

    Restries UNIQUE KEY so apropriadas para qualquer coluna cujos valores no permitam duplicatas (inclusive permitem valores nulos).

    Restries PRIMARY KEY identifica univocamente cada linha da tabela e normalmente no tem nenhum significado a no ser de ser nico.

    Alguns exemplos onde a restrio UNIQUE so bem utilizadas: o O nmero do CPF do empregado quando a chave primria a sua

    MATRCULA. o A placa de um veculo quando a chave primria um nmero

    seqencial.

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 25 - 133

    3.4. CHECK

    Uma restrio CHECK requer que uma coluna (ou combinao de colunas) satisfaa uma determinada condio para cada linha da tabela.

    Uma restrio CHECK deve ser uma expresso BOOLEANA (que retorne verdadeiro ou falso) que avaliada usando o valor da coluna que est sendo inserido ou alterado.

    Use restries CHECK quando voc necessita forar regras de integridade baseadas em expresses lgicas, como comparaes.

    Nunca use restries CHECK quando uma das outras restries pode suprir o que se deseja.

    Exemplos: o Salrios de empregados nunca podem ser negativos. o Localizaes de departamentos quando esto limitadas a Rio de

    Janeiro, So Paulo e Belo Horizonte. o O valor da comisso nunca pode ser maior que o salrio.

    3.5. FOREIGN KEY

    Sempre que duas tabelas contm uma ou mais colunas em comum, podemos forar um relacionamento entre elas atravs de uma integridade referencial, ou seja, atravs da restrio de FOREIGN KEY (chave estrangeira).

    A tabela que inclui a chave estrangeira chamada dependente ou filha A tabela que referenciada chamada de tabela pai. Uma restrio FOREIGN KEY requer que todos os valores das colunas da

    tabela filha existam na tabela pai. Um exemplo de restrio FOREIGN KEY que a coluna de departamento da

    tabela de empregados (tabela filha) deve conter um nmero de departamento que exista na tabela de departamentos (tabela pai).

    Chaves estrangeiras podem ser compostas de mltiplas colunas, e dessa forma devem se referenciar a chaves primrias tambm compostas, com o mesmo nmero de colunas e com o mesmo tipo de dados nas colunas correspondentes, porm os nomes no precisam ser iguais.

    As restries so armazenadas no dicionrio de dados. Para que seja mais fcil fazer referncias s restries criadas, d nomes significativos a elas seno o SGBD o far dando nomes codificados. As restries podem ser definidas quando a tabela for criada ou depois de ter sido criada.

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 26 - 133

    A seguir um exemplo completo de quando a tabela criada com suas restries. O mysql implementa restries a partir da verso 5.1.

    ORACLE CREATE TABLE "EMPREGADOS" ( "MAT_EMPR" NUMBER(6,0),

    "PRIM_NOME" VARCHAR2(20),

    "ULT_NOME" VARCHAR2(25) CONSTRAINT "EMP_LAST_NAME_NN" NOT NULL ENABLE,

    "EMAIL" VARCHAR2(25) CONSTRAINT "EMP_EMAIL_NN" NOT NULL ENABLE,

    "NRO_TELEF" VARCHAR2(20), "DATA_CONTR" DATE

    CONSTRAINT "EMP_HIRE_DATE_NN" NOT NULL ENABLE,

    "NRO_CARGO" VARCHAR2(10) CONSTRAINT "EMP_JOB_NN" NOT NULL ENABLE,

    "VLR_SAL" NUMBER(8,2), "PERC_COMISS" NUMBER(2,2), "MAT_GERENTE" NUMBER(6,0), "NRO_DEPTO" NUMBER(4,0),

    CONSTRAINT EMP_SAL_MIN" CHECK (salary > 0) ENABLE,

    CONSTRAINT EMP_EMAIL_UK" UNIQUE ("EMAIL") ENABLE,

    CONSTRAINT EMP_PK" PRIMARY KEY ("MAT_EMPR ") ENABLE,

    CONSTRAINT "EMP_DEPT_FK" FOREIGN KEY ("NRO_DEPTO ") REFERENCES "DEPARTAMENTOS" ("NRO_DEPTO") ENABLE,

    CONSTRAINT "EMP_CARGO_FK" FOREIGN KEY ("NRO_CARGO") REFERENCES CARGOS" ENABLE,

    CONSTRAINT "EMP_GER_FK" FOREIGN KEY ("MAT_GERENTE" REFERENCES "EMPREGADOS" ("MAT_EMPR") ENABLE ) A restrio FOREIGN KEY impe uma restrio de integridade referencial com a tabela proprietria da(s) coluna(s) referenciada(s). Um valor de chave estrangeira deve corresponder a um valor existente na tabela me ou ser nulo. As chaves estrangeiras so baseadas nos valores dos dados, sendo puramente lgicas, e no ponteiros fsicos. A opo ON DELETE CASCADE pode ser usada e indica que quando a linha na tabela me deletada, as linhas dependentes na tabela filha tambm sero deletadas.

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 27 - 133

    Uma coluna pode ter vrias restries CHECK (que limita os valores a serem aceitos para determinada coluna).

    3.6. ADICIONANDO UMA RESTRIO

    A instruo ALTER TABLE pode ser usada para adicionar uma restrio a uma tabela, por exemplo:

    ALTER TABLE ITR_PSGR ADD CONSTRAINT ITR_PSGR_FK_002

    FOREIGN KEY (CD_PSGR_RESP) REFERENCES ITR_PSGR (CD_PSGR);

    3.7. ELIMINANDO UMA RESTRIO

    Para eliminar uma restrio usamos a instruo ALTER TABLE combinada com DROP, por exemplo:

    ALTER TABLE ITR_PSGR DROP CONSTRAINT ITR_PSGR_FK_002;

    3.8. DESABILITANDO UMA RESTRIO

    Podemos tambm desativar uma restrio, usando a clusula DISABLE CONSTRAINT, por exemplo:

    ALTER TABLE ITR_PSGR DISABLE CONSTRAINT ITR_PSGR_FK_002;

    3.9. REABILITANDO UMA RESTRIO

    Reativando uma restrio:

    ALTER TABLE ITR_PSGR ENABLE CONSTRAINT ITR_PSGR_FK_002;

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 28 - 133

    INSERO DE

    DADOS

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 29 - 133

    4. Insero de Dados

    A DML (Data Manipulation Language) uma parte essencial do SQL. Quando se quer adicionar, alterar ou remover dados de um banco de dados executa-se uma instruo DML.

    Um conjunto de instrues DML que formam uma unidade lgica de trabalho chamada de transao.

    Imagine o cliente de um banco transferindo dinheiro de uma conta de poupana para a conta corrente. Esta transao consiste de quatro operaes separadas: Abater a valor do saque da conta de poupana Acrescer a valor do saque na conta corrente Registrar o lanamento da conta de poupana Registrar o lanamento da conta corrente

    O SGBD deve garantir que todas as instrues SQL sejam executadas para que as contas estejam com saldos apropriados.

    Quando algo impedir a realizao de uma das instrues da transao, as outras instrues devem ser desfeitas.

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 30 - 133

    4.1. Adicionando linhas em uma tabela

    Para adicionar novas linhas em uma tabela, utilizamos a instruo DML INSERT.

    Sintaxe: INSERT INTO tabela [(coluna1 [, coluna2 ])] VALUES (valor1 [,valor2 ]);

    Onde: tabela o nome da tabela coluna o nome da coluna a ser preenchida valor o valor correspondente para a coluna

    Exemplos:

    INSERT INTO ITR_EQPT VALUES ('310','AIRBUS A310','JATO',2,'R',210);

    INSERT INTO ITR_EQPT VALUES ('D8S','DOUGLAS SUPER DC8-63','JATO',4,'R',null);

    INSERT INTO ITR_CMPN_AEREA VALUES ('SC','CRUZEIRO DO SUL','BR');

    INSERT INTO ITR_ROTA_VOO VALUES ('11','BOG','GIG',null);

    Esta instruo, com a clusula VALUES, adiciona somente uma linha por vez a uma tabela.

    A lista de colunas no requerida na instruo INSERT, entretanto se no for usada, os valores devero ser informados na ordem em que as colunas estiverem definidas para a tabela.

    Para melhor clareza, recomenda-se a utilizao da lista de colunas.

    Colocam-se os valores de datas e caracteres entre aspas simples. No se coloca valor numrico entre aspas simples.

    Para inserir linhas com valores nulos (devemos nos certificar de que a coluna destino permita valores nulos) existem dois mtodos: Mtodo Implcito

    Neste caso basta omitir a coluna na lista de colunas, pois qualquer coluna no listada explicitamente receber valor nulo na nova linha.

    Mtodo Explcito Informar a palavra chave NULL na lista de valores (para valores de caracteres e datas podemos informar a string vazia )

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 31 - 133

    Exerccios:

    Cadastrar o Canad na tabela de pases com o cdigo CD e a populao de 26.584.000 habitantes.

    INSERT INTO ITR_PAIS VALUES ('CA','CANADA', 26584000);

    1 row created.

    Outra soluo:

    INSERT INTO ITR_PAIS (QT_PPLC_PAIS , NM_PAIS , CD_PAIS)

    VALUES ( 26584000 , 'CANADA' ,'CA' );

    1 row created.

    INSERT INTO ITR_PAIS (NM_PAIS , CD_PAIS)

    VALUES ('CANADA' , 'CA' );

    1 row created.

    OBS: Incluso com valor da populao igual a NULO.

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 32 - 133

    4.2. Copiando linhas para uma tabela

    Para copiar linhas a partir de outra tabela utiliza-se uma subconsulta no lugar da clusula VALUES.

    Sintaxe: INSERT INTO tabela [(coluna1 [, coluna2 ])] Subconsulta

    Onde: tabela o nome da tabela coluna o nome da coluna a ser preenchida subconsulta a subconsulta que retorna linhas na tabela

    Exemplo: INSERT INTO ITR_VOO SELECT

    NR_VOO , DT_SAIDA_VOO + 365 , HR_SAIDA_VOO , NR_ROTA_VOO , CD_ARNV FROM ITR_VOO

    O comando acima insere novas linhas na tabela ITR_VOO baseando-se nas linhas j existentes, porm as datas dos novos vos acontecero um ano aps os vos j cadastrados (DT_SAIDA_VOO + 365).

    O nmero de colunas e seus tipos de dados na lista de colunas da instruo INSERT devem coincidir com o nmero de valores e seus tipos de dados na subconsulta.

    Exerccio:

    Incluir novos vos para o ano de 1994 baseados nos vos de 1993. No incluir os vos at meio-dia.

    INSERT INTO ITR_VOO (SELECT NR_VOO ,ADD_MONTHS(DT_SAIDA_VOO,12) ,NR_ROTA_VOO ,CD_ARNV FROM ITR_VOO

    ORACLE-> WHERE TO_CHAR(DT_SAIDA_VOO,'HH24:MI:SS') NOT BETWEEN '00:00:00' AND '12:00:00' MYSQL -> WHERE HR_SAIDA_VOO NOT BETWEEN '00:00:00' AND '12:00:00' ;

    828 rows created.

    OBS: Incluso com subconsulta.

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 33 - 133

    MODELO DE

    DADOS DO

    CURSO

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 34 - 133

    5. MODELO DE DADOS DO CURSO

    Para este curso, utilizaremos o modelo de dados de uma empresa que controla reservas de passagens areas de um pool de companhias de aviao. Fazem parte do modelo as seguintes tabelas: ITR_EQPT Equipamentos de uma aeronave ITR_ARNV Aeronaves das companhias areas ITR_CMPN_AEREA Companhias areas ITR_VOO Vos disponveis ITR_PSGR Passageiros cadastrados ITR_PAIS Pases ITR_ROTA_VOO Rotas de vos existentes ITR_RESV Reservas de passagens nos vos ITR_ARPT Aeroportos cadastrados ITR_UF Unidades da federao

    5.1. DIAGRAMA DE ENTIDADES E RELACIONAMENTOS

    # CD_EQPT NM_EQPT DC_TIPO_EQPT QT_MOTOR IC_TIPO_PRPS QT_PSGR

    # CD_PSGR NM_PSGR IC_SEXO_PSGR DT_NASC_PSGR CD_PAIS IC_ESTD_CIVIL CD_PSGR_RESP

    ITR_PSGR

    # CD_ARNV CD_EQPT CD_CMPN_AEREA

    ITR_EQPT ITR_ARNV# CD_CMPN_AEREA NM_CMPN_AEREA CD_PAIS

    ITR_CMPN_AEREA

    # NR_VOO# DT_SAIDA_VOO NR_ROTA_VOO CD_ARNV

    ITR_VOO# CD_PAIS NM_PAIS QT_PPLC_PAIS

    ITR_PAIS

    # NR_ROTA_VOO CD_ARPT_ORIG CD_ARPT_DEST VR_PASG

    # CD_PSGR# NR_VOO# DT_SAIDA_VOO PC_DESC_PASG

    # CD_ARPT CD_PAIS SG_UF NM_CIDD

    # SG_UF NM_UF

    ITR_UFITR_ARPTITR_RESVITR_ROTA_VOO

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 35 - 133

    5.2. DEFINIO DAS TABELAS IMPLEMENTADAS

    TABELA COLUNA PK FORMATO NULL VALID

    ITR_ARNV CD_ARNV Y VARCHAR2(5) N CD_EQPT N VARCHAR2(3) N

    CD_CMPN_AEREA N VARCHAR2(2) N

    ITR_ARPT CD_ARPT Y VARCHAR2(3) N CD_PAIS N VARCHAR2(2) N

    SG_UF N VARCHAR2(2) Y NM_CIDD N VARCHAR2(30) N

    ITR_PSGR CD_PSGR Y NUMBER(4,0) N NM_PSGR N VARCHAR2(30) N IC_SEXO_PSGR N VARCHAR2(1) Y DT_NASC_PSGR N DATE Y CD_PAIS N VARCHAR2(2) Y IC_ESTD_CIVIL N VARCHAR2(1) N C ou S CD_PSGR_RESP N NUMBER(4,0) Y

    ITR_CMPN_AEREA CD_CMPN_AEREA Y VARCHAR2(2) N NM_CMPN_AEREA N VARCHAR2(22) N

    CD_PAIS N VARCHAR2(2) Y

    ITR_EQPT CD_EQPT Y VARCHAR2(3) N NM_EQPT N VARCHAR2(38) N DC_TIPO_EQPT N VARCHAR2(13) N QT_MOTOR N NUMBER(1,0) Y 1 a 5 IC_TIPO_PRPS N VARCHAR2(1) Y MouR QT_PSGR N NUMBER(3,0) Y

    ITR_PAIS CD_PAIS Y VARCHAR2(2) N NM_PAIS N VARCHAR2(25) N QT_PPLC_PAIS N NUMBER(10,0) Y

    ITR_RESV CD_PSGR Y NUMBER(4,0) N NR_VOO Y NUMBER(3,0) N DT_SAIDA_VOO Y DATE N PC_DESC_PASG N NUMBER(5,2) Y

    ITR_ROTA_VOO NR_ROTA_VOO Y NUMBER(3,0) N CD_ARPT_ORIG N VARCHAR2(3) N CD_ARPT_DEST N VARCHAR2(3) N VR_PASG N NUMBER(8,2) Y

    ITR_UF SG_UF Y VARCHAR2(2) N NM_UF N VARCHAR2(25) N

    ITR_VOO NR_VOO Y NUMBER(3,0) N DT_SAIDA_VOO Y DATE N NR_ROTA_VOO N NUMBER(3,0) N CD_ARNV N VARCHAR2(5) N

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 36 - 133

    5.3. EXEMPLO DOS DADOS ARMAZENADOS NAS TABELAS

    TABELA ITR_PAIS

    CD_PAIS NM_PAIS PPLC_PAIS ------------- ----------------------------------------- ----------------

    DE ALEMANHA 79.112.800 AN ANTILHAS HOLANDESAS AR ARGENTINA 31.928.519 BE BELGICA 9.907.000 BR BRASIL 147.404.375 BG BULGARIA 8.989.636 .....

    (61 LINHAS)

    TABELA ITR_CMPN_AEREA

    CD_CIA_AEREA NM_CMPN_AEREA CD_PAIS ------------------------- --------------------------------------- ------------

    AA AMERICAN AIRLINES US AF AIR FRANCE FR AR AEROLINEAS ARGENTINAS AR AW WILSON TAXI AEREO BR BA BRITISH AIRWAYS GB CP CANADIAN PACIFIC CA DT TAAG AO IB IBERIA ES .....

    (45 LINHAS)

    TABELA ITR_EQPT

    CD NM_EQPT DC_TIPO_EQPT QT_MOTOR IC_ TIPO_PRPS QT_PSGR ------ -------------------------- --------------------- --------------- --------------------- -------------

    AB3 AIRBUS A300 JATO 2 R 210 BH2 BELL JET RANGER HELICOPTERO 008 CNA CESSNA CARAVAN TURBO HELICE 2 M 010 DH8 BOEING CANADA TURBO HELICE 2 M 230 BEM BANDEIRANTE TURBO HELICE 2 M 018 .....

    (37 LINHAS)

    TABELA ITR_ARNV

    CD_ARNV CD_EQPT CD_CMPN_AEREA -------------- --------------- --------------------------

    TTRIN 767 AA TTRIO 763 AA TTRIZ 744 AA TTRON 313 AA TTRRU L10 AA .....

    (420 LINHAS)

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 37 - 133

    TABELA ITR_UF

    SG_UF NM_UF --------- ------------------------------------------

    BA BAHIA ES ESPIRITO SANTO GO GOIAS MS MATO GROSSO DO SUL .....

    (28 LINHAS)

    TABELA ITR_ARPT

    CD_ARPT CD_PAIS SG_UF NM_CIDD -------------- ------------- --------- --------------------------------

    AAX BR MG ARAXA AEP AR BUENOS AIRES AFL BR MT ALTA FLORESTA AMM JO AMMAN AOL AR PASO DE LOS LIBRES ARS BR GO ARAGARCAS .....

    (301 LINHAS)

    TABELA ITR_ROTA_VOO

    NR_ROTA_VOO CD_ARPT_ORIG CD_ARPT_DEST VL_PASG ----------------------- ----------------------- ----------------------- --------------

    001 AEP GIG 002 AKL GIG 003 AMM GIG 094000 004 AMS GIG 105000 005 AOL GIG 101000 006 ASU GIG 106000 008 BAQ GIG 046000 .....

    (424 LINHAS)

    TABELA ITR_VOO

    NR_VOO DT_SAIDA_VOO NR_ROTA_VOO CD_ARNV ------------ ----------------------- ----------------------- --------------

    001 02-JAN-93 159 TTKFF 001 03-JAN-93 061 TTKNI 001 10-JAN-93 399 TTOCY 001 12-JAN-93 100 TTKBO 002 04-JAN-93 160 TTKZI 002 10-JAN-93 402 TTNNI 002 13-JAN-93 100 TTKBO 003 02-JAN-93 180 TTKZZ .....

    (2.312 LINHAS)

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 38 - 133

    TABELA ITR_PSGR

    CD_PSGR NM_PSGR IC DT_NASC CD IC_E CD_PS -------------- ----------------------------------------- --- ------------- ---- ------- ----------

    1 JOSE CONCESSO ANDRADE M 23-JUL-30 BR S 2 JOAO CARLOS SILVEIRA M 28-JUL-35 US S 3 LUIZ GONZAGA GUEDES M 25-JUL-35 BR S 6 ANTONIO M. PEREIRA M 13-SEP-36 EG C 7 DIMAS FELISMINO M 13-SEP-36 EG C 1610 EVANDRO J. OLIVEIRA M 26-JUN-90 PE S 0685 1611 LEONEL B. RAIMUNDO M 21-AUG-90 SE S 0108 1614 ANTONIO W. DA SILVA M 16-OCT-90 BR S 0688 .....

    (1.614 LINHAS)

    TABELA ITR_RESV

    CD_PSGR NR_VOO DT_SAIDA_VOO PC_DESC_PASG -------------- ------------ ----------------------- ----------------------

    1 327 02-JAN-93 5 1 828 07-JAN-93 0 3 511 07-JAN-93 2 3 990 01-JAN-93 2 4 548 02-JAN-93 1 5 4 06-JAN-93 1 5 287 03-JAN-93 10 6 366 03-JAN-93 1 6 843 02-JAN-93 10 7 114 02-JAN-93 2 .....

    (4.267 LINHAS)

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 39 - 133

    6. O COMANDO SELECT E SUAS VARIAES 6.1. SELECT SIMPLES

    Selecionar o cdigo, o nome e a populao de todos os pases da tabela de pases.

    SELECT CD_PAIS ,NM_PAIS ,QT_PPLC_PAIS

    FROM ITR_PAIS;

    CD_PAIS NM_PAIS QT_PPLC_PAIS ------- ------------------------------------- -------------

    DE ALEMANHA 79112800 AO ANGOLA 9677000 NA ANTILHAS HOLANDESAS AR ARGENTINA 31928519 .....

    61 rows selected.

    Selecionar todas as colunas da tabela de pases

    SELECT * FROM ITR_PAIS;

    CD_PAIS NM_PAIS QT_PPLC_PAIS ------- ------------------------------------- -------------

    DE ALEMANHA 79112800 AO ANGOLA 9677000 NA ANTILHAS HOLANDESAS AR ARGENTINA 31928519 .....

    61 rows selected.

    O * significa que todas as colunas de todas as tabelas da consulta sero mostradas. Facilita a pesquisa, mas no deve ser usado dentro de um programa codificado em linguagem de programao, pois se uma coluna for adicionada a uma das tabelas listadas, o resultado ser alterado e o programa no estar preparado para receber dados da coluna adicionada.

    Listar somente o nome e a populao dos pases cadastrados (PROJECT)

    SELECT NM_PAIS ,QT_PPLC_PAIS

    FROM ITR_PAIS;

    NM_PAIS QT_PPLC_PAIS -------------------------------------- -------------

    ALEMANHA 79112800 ANGOLA 9677000 ANTILHAS HOLANDESAS ARGENTINA 31928519 ...

    61 rows selected.

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 40 - 133

    6.2. LISTANDO APENAS LINHAS DISTINTAS, SEM DUPLICATAS (DISTINCT)

    Listar sem repetio o nome das cidades onde esto os aeroportos cadastrados.

    SELECT NM_CIDD FROM ITR_ARPT;

    NM_CIDD -------------------------------

    BUENOS AIRES RIO DE JANEIRO ALTA FLORESTA NEW YORK RIO DE JANEIRO PASO DE LOS LIBRES .....

    301 rows selected.

    SELECT DISTINCT NM_CIDD FROM ITR_ARPT;

    NM_CIDD -------------------------------

    ALTA FLORESTA ALTAMIRA ALTO PARNAIBA AMMAN AMSTERDAM ARACAJU .....

    282 rows selected.

    6.3. SELECIONANDO LINHAS (WHERE)

    A clausula WHERE seleciona as linhas desejadas, delimitando a pesquisa na tabela.

    Listar os aeroportos do estado do Piau

    SELECT * FROM ITR_ARPT WHERE SG_UF = 'PI';

    CD_ARPT CD_PAIS SG_UF NM_CIDD ------- ------- ----- --------

    GDP BR PI GUADALUPE PCS BR PI PICOS PHB BR PI PARNAIBA THE BR PI TERESINA

    4 rows selected.

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 41 - 133

    6.4. OPERADORES RELACIONAIS

    = igual diferente < menor que > maior que = maior ou igual

    Listar os aeroportos que no esto no Piau

    SELECT * FROM ITR_ARPT WHERE SG_UF 'PI';

    CD_ARPT CD_PAIS SG_UF NM_CIDD -------- ------ ----- -------------------

    AAX BR MG ARAXA AFL BR MT ALTA FLORESTA .....

    201 rows selected.

    OBS: A tabela de aeroportos contem 301 linhas, 4 aeroportos so do Piau e 201 no, totalizando 205. Esto faltando 96, que so de UFs desconhecidas (valor nulo). O select s recupera os valores nulos para uma coluna se for explcito na clausula WHERE o desejo que estas linhas sejam apresentadas.

    Selecionar todos os pases que possuam mais de 200 milhes de habitantes.

    SELECT * FROM ITR_PAIS WHERE QT_PPLC_PAIS > 200000000;

    CD_PAIS NM_PAIS QT_PPLC_PAIS ------- ---------------------- -------------

    CN CHINA 1133682500 US ESTADOS UNIDOS 250858000 SU UNIAO SOVIETICA 288800000

    3 rows selected.

    Listar os pases cujo nome seja menor que "MM"

    SELECT * FROM ITR_PAIS WHERE NM_PAIS < 'MM';

    CD_PAIS NM_PAIS QT_PPLC_PAIS ------- ---------------------------- ----------------

    DE ALEMANHA 79112800 AO ANGOLA 9677000 AN ANTILHAS HOLANDESAS .....

    42 rows selected.

    Podem ser feitas comparaes "maior/menor que" para colunas tipo caracter, mesmo que o seu tamanho seja menor que o usado como critrio de seleo.

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 42 - 133

    6.5. TESTE DE NULOS (IS NULL / IS NOT NULL)

    No correto testarmos se uma determinada coluna igual a nulo, pois o NULO representa o desconhecimento da informao. Como saber se algo igual ao desconhecido?

    Listar os aeroportos cuja UF seja desconhecida.

    SELECT * FROM ITR_ARPT WHERE SG_UF IS NULL;

    CD_ARPT CD_PAIS SG_UF NM_CIDD ------- ------- ----- -----------------

    AEP AR BUENOS AIRES AKL NZ AUCKLAND AMM JO AMMAN MAS NL AMSTERDAM .....

    96 rows selected.

    Listar os aeroportos cuja UF seja conhecida.

    SELECT * FROM ITR_ARPT WHERE SG_UF IS NOT NULL;

    CD_ARPT CD_PAIS SG_UF NM_CIDD ------- ------- ----- -----------------

    AAX BR MG ARAXA AFL BR MT ALTA FLORESTA AIF BR SP ASSIS .....

    205 rows selected.

    Listar os aeroportos cujo nome da cidade seja desconhecido

    SELECT * FROM ITR_ARPT WHERE NM_CIDD IS NULL;

    no rows selected.

    A query acima no faz sentido, pois na tabela ITR_ARPT a coluna NM_CIDD no permite nulo. Contudo a query executada com sucesso e nenhuma linha selecionada.

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 43 - 133

    6.6. PESQUISA GENRICA (LIKE)

    Podemos pesquisar se as colunas possuem determinadas cadeias de caracteres com o predicado LIKE. Exemplos:

    LIKE 'JOAO%' LIKE '%JOAO LIKE '%JOAO% LIKE 'J__O%' NOT LIKE 'JOAO%'

    Relacionar os nomes completos dos passageiros que se chamam JOAO, e os cdigos dos pases onde nasceram.

    SELECT NM_PSGR, CD_PAIS FROM ITR_PSGR WHERE NM_PSGR LIKE JOAO%;

    NM_PSGR CD_PAIS ----------------------------------------------------- -------------

    JOAO CARLOS SILVEIRA US JOAO BATISTA VIEIRA FR JOAO FERREIRA MARQUES ES .....

    53 rows selected.

    Relacionar os nomes e os cdigos dos pases dos passageiros que tenham SERGIO em seu nome.

    SELECT NM_PSGR, CD_PAIS FROM ITR_PSGR WHERE NM_PSGR LIKE '%SERGIO%';

    NM_PSGR CD_PAIS ---------------------------- -------------

    SERGIO DE CASTRO BR SERGIO LUIZ TAVARES SE SERGIO LUIZ GUEDES BR SERGIO JUSTINIANO DA SILVA SE SERGIO RICARDO DE SOUZA IT .....

    22 rows selected.

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 44 - 133

    6.7. SOMA E SUBTRAO DE CONJUNTOS (IN)

    Listar os cdigos dos aeroportos e o nome de suas cidades, localizados nos estados do Rio de Janeiro, So Paulo ou Minas Gerais.

    SELECT CD_ARPT, NM_CIDD FROM ITR_ARPT WHERE SG_UF IN ('MG', 'RJ', 'SP');

    CD_ARPT NM_CIDD -------------- --------------------------

    AAX ARAXA AIF ASSIS AQA ARARAQUARA ARU ARACATUBA .....

    43 rows selected.

    Listar os cdigos dos aeroportos e o nome de suas cidades, exceto daqueles localizados na regio sudeste.

    SELECT CD_ARPT, NM_CIDD FROM ITR_ARPT WHERE SG_UF NOT IN ('MG', 'RJ', 'SP', ES);

    6.8. OPERAES ARITMTICAS

    A SQL permite operaes aritmticas tanto nas colunas que esto sendo recuperadas quanto nas da clausula WHERE.

    Selecionar os nmeros das rotas que partem do aeroporto de MIAMI e o valor da passagem com uma majorao de 20 %

    SELECT NR_ROTA_VOO, VR_PASG * 1.2 FROM ITR_ROTA_VOO WHERE CD_ARPT_ORIG = 'MIA';

    NR_ROTA_VOO VR_PASG*1.2 ----------- -----------

    270 123600 271 54000 272 56400 273 96000 .....

    16 rows selected.

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 45 - 133

    Listar o nome dos equipamentos no JATO com sua capacidade de transporte de passageiros acrescida de 10 passageiros.

    SELECT NM_EQPT, QT_PSGR + 10 FROM ITR_EQPT WHERE DC_TIPO_EQPT NOT LIKE '%JATO%';

    NM_EQPT QT_PSGR+10 --------------------------- -----------

    BELL JET RANGER III 18 BOEING CANADA DHC8 DASH 8 240 FAIRCHILD-FH-227B FOKKER-F27 FRIENDSHIP 75 ...

    9 rows selected.

    OBS. Equipamentos sem informao da capacidade de passageiros (QT_PSGR nulo), no foram afetados pela operao de adio.

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 46 - 133

    6.9. PRINCIPAIS FUNES SQL

    Existem diversas funes padres. Cada SGBD, entretanto, implementa vrias outras. Veremos aqui somente as principais. AS descries de todas as funes esto disponveis nos manuais de SQL.

    Tipos de funes: - de linha: atuam em cada linha de tabela (caracter, numrica, data/hora, converso, usurio) - de grupo: atuam em um grupo de linhas de tabela

    6.9.1. FUNES CARACTER

    a) SUBSTR/SUBSTRING(char,m,n) - retorna n bytes de char a partir da posio m

    Listar os primeiros 10 caracteres do nome de cada passageiro cadastrado

    ORACLE MYSQL SELECT SUBSTR(NM_PSGR,1,10) SELECT SUBSTRING(NM_PSGR,1,10) FROM ITR_PSGR; FROM ITR_PSGR

    SUBSTR(NM_ -------------------

    JOSE CONCE JOAO CARLO LUIZ GONZA LUIZ DA CO ....

    1614 rows selected.

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 47 - 133

    b) INSTR(char1,char2,m,n) - retorna a posio da ocorrncia m de char2 em char1 a partir da posio n em char1

    Listar os 2 primeiros nomes de cada passageiro

    ORACLE SELECT SUBSTR(NM_PSGR,1,(INSTR(NM_PSGR,' ',1,2))) FROM ITR_PSGR;

    MYSQL SELECT SUBSTRING(NM_PSGR ,1,LOCATE(' ',NM_PSGR,LOCATE(' ',NM_PSGR) + 1)) FROM ITR_PSGR;

    SUBSTR(NM_PSGR,1,(INSTR(NM_PSG -----------------------------------

    JOSE CONCESSO JOAO CARLOS LUIZ GONZAGA LUIZ DA WALMIR ALVARENGA ...

    1614 rows selected.

    c) LENGTH(char) - retorna o tamanho de char

    Listar o nome e o tamanho deste nome de cada UF cadastrada, que se inicia com a letra A.

    ORACLE MYSQL SELECT NM_UF SELECT NM_UF

    ,LENGTH(NM_UF) ,LENGTH(NM_UF) FROM ITR_UF FROM ITR_UF WHERE SUBSTR(NM_UF,1,1) = 'A'; WHERE SUBSTRING(NM_UF,1,1) = 'A';

    NM_UF LENGTH(NM_UF) ------------------------- --------------

    ACRE 4 ALAGOAS 7 AMAZONAS 8 AMAPA 5

    4 rows selected.

    d) TABELA DUAL (ORACLE)

    Tabela criada automaticamente na instalao do Oracle. Tem apenas uma coluna (DUMMY) e apenas uma linha com DUMMY = X. Por ter apenas uma linha muito til quando se necessita obter valores de variveis, expresses e pseudocolumns, pois retornar apenas uma linha com o resultado desejado.

    SELECT * FROM DUAL;

    D -

    X

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 48 - 133

    6.9.2. FUNES NUMRICAS

    a) CEIL(n) - retorna o menor inteiro maior ou igual a n

    SELECT CEIL(13.0),CEIL(13.2),CEIL(13.7) [ FROM DUAL; ] MYSQL DISPENSA A CLUSULA FROM

    CEIL(13.0) CEIL(13.2) CEIL(13.7) --------------- --------------- ---------------

    13 14 14

    b) FLOOR(n) - retorna o maior inteiro menor ou igual a n

    SELECT FLOOR(13.0), FLOOR(13.2), FLOOR(13.7) [ FROM DUAL; ] MYSQL DISPENSA A CLUSULA FROM

    FLOOR(13.0) FLOOR(13.2) FLOOR(13.7) ------------------ ------------------ ------------------

    13 13 13

    c) MOD(m,n) - retorna o resto da diviso de m por n

    SELECT MOD(11,4), MOD(10,4), MOD(9,4), MOD(8,4) [ FROM DUAL; ] MYSQL DISPENSA A CLUSULA FROM

    MOD(11,4) MOD(10,4) MOD(9,4) MOD(8,4) --------------- ---------------- ------------- -------------

    3 2 1 0

    d) ROUND(n,m) - retorna valor arredondado de n com m decimais

    SELECT ROUND(8.11), ROUND(8.15,1), ROUND(8.50), ROUND(8.77) [ FROM DUAL; ] MYSQL DISPENSA A CLUSULA FROM

    ROUND(8.11) ROUND(8.15,1) ROUND(8.50) ROUND(8.77) ----------- ------------- ----------- -----------

    8 8.1 8 9

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 49 - 133

    6.9.3. FUNES DE DATA

    Alguns SGBDs implementam os formatos de data como DATE e hora como TIME separadamente. Outros implementam apenas o formato DATE englobando data e hora.

    O ORACLE implementa DATE para data e hora, armazenando sempre um nmero de 7 bytes, que representa o sculo, ano, ms, dia, minuto e segundo a partir de 01 de janeiro de 4712 BC, podendo armazenar at 31 de dezembro de 4712 AD.

    a) SYSDATE / NOW( ) - retorna a data e hora corrente

    ORACLE MYSQL SELECT SYSDATE DATA HOJE SELECT NOW() DATA HOJE FROM DUAL;

    DATA HOJE -----------------

    12-JAN-99

    - O formato de output do sysdate acima o default. Adiante veremos como exibir em outros formatos, inclusive com a hora. - Para cada coluna selecionada podemos informar um cabealho para output. DATA HOJE o cabealho para a coluna SYSDATE.

    b) ADD_MONTHS(d,n) - soma ou subtrai n meses da data d DATE_ADD (data , INTERVAL tipo expr), DATE_SUB (data , INTERVAL tipo expr)

    ORACLE SELECT ADD_MONTHS('31-MAR-99',-1) PASSADO, ADD_MONTHS('31-MAR-99',1) PRXIMO FROM DUAL;

    MYSQL SELECT DATE_SUB('1999-03-31 23:59:59' , INTERVAL 1 MONTH) PASSADO,

    DATE_ADD('1999-03-31 23:59:59' , INTERVAL 1 MONTH) PRXIMO ;

    PASSADO PRXIMO --------- ---------

    28-FEB-99 30-APR-99

    c) LAST_DAY(d) - retorna a data do ltimo dia do ms da data d

    ORACLE MYSQL SELECT SYSDATE HOJE SELECT CURRENT_DATE HOJE ,LAST_DAY(SYSDATE) "LTIMO DIA" ,LAST_DAY(CURRENT_DATE) "LTIMO DIA" FROM DUAL;

    HOJE LTIMO DIA --------- ----------

    12-JAN-99 31-JAN-99

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 50 - 133

    6.9.4. FUNES DE CONVERSO

    ORACLE

    a) TO_CHAR(d,fmt) - converte a data ou nmero d para o formato fmt

    SELECT TO_CHAR(SYSDATE,'DD/MM/YYYY HH24:MI:SS') FROM DUAL;

    TO_CHAR(SYSDATE,'DD/MM/YYYYHH24:MI:SS') ---------------------------------------

    12/01/1999 14:25:31

    SELECT TO_CHAR(1234,9999.99) FROM DUAL;

    TO_CHAR -------

    1234.00

    b) TO_DATE(char,fmt) - converte char para uma data no formato fmt

    SELECT TO_DATE('01/02/1999 16:30:15','DD/MM/YYYY HH24:MI:SS') FROM DUAL;

    TO_DATE(' ---------

    01-FEB-99

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 51 - 133

    PRINCIPAIS FORMATOS DE DATA

    D dia da semana (1-7;SUN=1 ) DD dia do ms (01-31) DDD dia do ano (1-366) DAY dia da semana por extenso (9 caracteres) DY dia da semana abreviado (3 caracteres) MM ms do ano (01-12;JAN=01) MONTH ms por extenso (9 caracteres) MON ms abreviado (3 caracteres) YY ano com 2 dgitos YYYY ano com 4 dgitos HH hora (01-12) HH24 hora (00-23) MI minuto (00-59) SS segundos (00-59) SSSSS segundos a partir de meia-noite (00000-86399) - / , . ; : constantes j definidas text qualquer texto entre aspas

    EXEMPLOS DE FORMATOS DE DATA

    SELECT TO_CHAR(SYSDATE,'DD/MM/YYYY HH24:MI:SS') FROM DUAL;

    13/01/1999 14:03:26

    SELECT TO_CHAR(SYSDATE,'"HOJE DIA" DD/MM/YYYY') FROM DUAL;

    HOJE DIA 13/01/1999

    SELECT TO_CHAR(SYSDATE,'MONTH DD, YYYY') FROM DUAL;

    JANUARY 13, 1999

    SELECT TO_CHAR(SYSDATE,'D DDD DAY DY MON') FROM DUAL;

    4 013 WEDNESDAY WED JAN

  • Tcnico em Informtica Banco de Dados ___________________________________________________________________________________________________

    ______________________________________________________________________________________________________________

    Material preparado pelo Prof. Emerson Moraes 52 - 133

    PRINCIPAIS FORMATOS NUMRICOS

    9 completa o formato com brancos esquerda 0 completa o formato com zeros esquerda $ inclui o caracter $ esquerda S inclui o sinal - ou + esquerda ou direita D formata com o caracter de ponto decimal G formata com o caracter de agrupamento (milhar) L inclui o caracter de moeda esquerda . inclui o caracter . como ponto decimal , inclui o caracter , como agrupamento (milhar)

    OBS: os formatos D, G e L so customizveis.

    EXEMPLO DE FORMATOS NUMRICOS

    SELECT TO_CHAR(125600.12,'$999,999,990.99') FROM DUAL;

    TO_CHAR(1256 -------------