Structured Query Language (SQL)
Ambiente Simplificado de um
SGBD




                        2
Características dos SGBDs
   Natureza auto-contida de um sistema de banco de dados:
       metadados armazenados num catálogo ou dicionário de dados.
   Independência entre programas e dados:
       estrutura dos arquivos de dados armazenada            no catálogo
        separadamente dos programas de acesso.
   Abstração de dados:
       representação conceitual dos dados através de modelos de dados.
   Suporte de múltiplas visões de dados:
       diferentes perspectivas ou visões de usuários.
   Suporte a transações:
       compartilhamento de dados e processamento multiusuário.


                                                          3
Esquemas, Instâncias e Estado do BD
   Esquema: descrição do banco de dados. É definido durante o projeto de
    banco de dados e não se espera que seja alterado freqüentemente.
   Estado ou Instância: composto pelos dados do banco de dados em um
    determinado momento.




                                                          4
Arquitetura de Três-Esquemas




                      5
Arquitetura de Três-Esquemas
   Tem por objetivo separar o usuário da aplicação do
    banco de dados físico.
   É organizada em três níveis:
       Nível Interno: descreve a estrutura de armazenamento
        físico do banco de dados.
       Nível Conceitual: descreve a estrutura de todo o banco de
        dados para a comunidade de usuários.
       Nível Externo ou Visão: cada esquema externo descreve a
        parte do banco de dados que um dado grupo de usuários
        tem interesse e oculta o restante do banco de dados
        desse grupo.
   A maioria dos SGBDs não separa completamente os
    três níveis, mas suporta essa arquitetura de alguma
    forma.                                   6
Independência de Dados
   Consiste da capacidade de mudar o esquema em
    um nível do sistema de banco de dados sem que
    ocorram alterações do esquema no próximo nível
    mais alto.
   Independência lógica de dados: é a capacidade de
    alterar o esquema conceitual sem mudar o
    esquema externo ou os programas.
   Independência física de dados: é a capacidade de
    alterar o esquema interno sem mudar o esquema
    conceitual.
                                         7
Linguagens de SGBD
   Durante o desenvolvimento do sistema R, pesquisadores da IBM
    desenvolveram a linguagem SEQUEL, primeira linguagem de acesso
    para Sistemas Gerenciadores de Banco de Dados Relacionais.
   ISO e ANSI lançou em 1986 a primeira versão do padrão da
    linguagem SQL, o SQL-86.
   A linguagem passou por aperfeiçoamentos em 1989 e, em 1992, foi
    lançada a SQL-92 ou SQL2.
   Um novo padrão, chamado de SQL-99 ou SQL3 foi lançado no ano de
    2000. Foi o primeiro padrão a estender a linguagem para permitir a
    utilização de tipos de dados complexos e a incorporar características
    da orientação a objetos.
   Após uma grande revisão do padrão SQL3 foi lançada a SQL:2003.
    Nesta verão foi adicionada uma nova parte ligada ao tratamento de
    XML.

                                                           8
Linguagens de SGBD
   Linguagem de Definição de Dados (DDL):
       usada para especificar o esquema conceitual.
   Linguagem de Definição de Armazenamento (SDL):
       usada para especificar o esquema interno, mas na maioria dos
        SGBDs a DDL é usada para definir este esquema.
   Linguagem de Definição de Visões (VDL):
       usada para especificar as visões dos usuários e os seus
        mapeamentos para o esquema conceitual, mas na maioria dos
        SGBDs a DDL é usada para definir ambos os esquemas, o
        conceitual e o externo.
   Linguagem de Manipulação de Dados (DML):
       usada para manipular os dados em um banco de dados. As
        manipulações típicas são a recuperação, inserção, remoção e
        modificação dos dados.
                                                       9
Tipos de Dados

                 (4 GB)
                          (4 GB)




                             10
Modelo Utilizado




                   11
Modelo Utilizado
Pessoa        (CPF, Nome, Sexo)

Piloto (CPF, Cart_Trab)
       CPF Referencia Pessoa

Passageiro(CPF, Dieta)
      CPF Referencia Pessoa

Voo(Numero, Data, P_CPF)
      CPF Referencia Piloto

Reserva(V_Numero, P_CPF)
      V_Numero Referencia Voo
      P_CPF Referencia Passageiro

Telefone(Numero, P_CPF)
      CPF Referencia Pessoa
                                    12
Linguagem de Definição de Dados (DDL)

   Criação de Tabelas:
    CREATE   TABLE NOME_TABELA(
     COL1     TIPO_COLUNA [NOT NULL],
     COL1     TIPO_COLUNA [NOT NULL],
     COL1     TIPO_COLUNA [NOT NULL]
     )




                                        13
Linguagem de Definição de Dados (DDL)

   Na criação de tabelas, é possível especificar vários
    tipos de restrições:
       Chave Primária: PRIMARY KEY ;
       Chave Estrangeira: FOREIGN KEY;
       Chave Alternativa (ou alternada): UNIQUE;
       Restrição de Domínio: CHECK.


   Pode-se atribuir        nomes      às    restrições   de
    integridade:
       CONSTRAINT NOME_RESTRIÇÃO TIPO RESTRIÇÃO.
                                                    14
Linguagem de Definição de Dados (DDL)

CREATE TABLE Pessoa(CPF         VARCHAR(11)   NOT NULL,
              Nome     VARCHAR(30)  NOT NULL UNIQUE,
              Sexo     VARCHAR(1)   NOT NULL,
              PRIMARY KEY (CPF));




CREATE TABLE Piloto(CPF            VARCHAR(11) NOT
NULL,
              Cart_Trab VARCHAR(13) NOT NULL UNIQUE ,
              PRIMARY KEY (CPF),
              FOREIGN KEY (CPF)
              REFERENCES Pessoa (CPF));

                                           15
Linguagem de Definição de Dados (DDL)
CREATE TABLE Passageiro(CPF      VARCHAR(11)          NOT NULL
               CONSTRAINT PK_PASSAGEIRO PRIMARY KEY
               CONSTRAINT FK_PESSOA REFERENCES Pessoa (CPF),
                     Dieta VARCHAR(1) CHECK (Dieta IN(‘S’, ‘N’)));




CREATE TABLE Voo(Numero       Numeric         NOT NULL
              CONSTRAINT PK_VOO PRIMARY KEY,
              Data            Date        NOT NULL,
              TIPO            VARCHAR2(15)     DEFAULT     ‘NACIONAL’,
              P_CPF           VARCHAR(11)      NOT NULL
              CONSTRAINT FK_PILOTO           REFERENCES Piloto (CPF));
                                                          16
Linguagem de Definição de Dados (DDL)
    Deleção de item referenciado:
... CONSTRAINT FK_PILOTO FOREIGN KEY (P_CPF)
    REFERENCES Piloto (CPF)
    ON DELETE RESTRICT ); -- impede a exclusão (default)


... CONSTRAINT FK_PILOTO FOREIGN KEY (P_CPF)
    REFERENCES Piloto (CPF)
    ON DELETE SET NULL); -- transforma o valor em nulo


... CONSTRAINT FK_PILOTO FOREIGN KEY (P_CPF)
    REFERENCES Piloto (CPF)
    ON DELETE CASCADE ); -- exclui a linha da tabela
                                                         17
Linguagem de Definição de Dados (DDL)
   Criação de uma tabela com linhas de outra:

CREATE TABLE Pessoa_Nova
AS SELECT CPF, Nome, Sexo
FROM Pessoa;




                                           18
Linguagem de Definição de Dados (DDL)
CREATE VIEW <nome-de-visão> [ (lista-de-colunas) ]
   AS <comando-de-seleção>



CREATE VIEW Empregados_Sede
   AS SELECT (Nome, Endereco, Sexo, Data-nasc)
       FROM EMPREGADO




                                                     19
Linguagem de Definição de Dados (DDL)

   Alteração de Tabelas:
       Incluir novas colunas em uma tabela;
       Excluir colunas existentes em uma tabela;
       Adicionar a definição de uma restrição em uma tabela;
       Excluir a definição de uma restrição existente em uma
        tabela;
       Modificar uma coluna.




                                                 20
Linguagem de Definição de Dados (DDL)
CREATE TABLE Reserva(V_Numero Numeric      NOT NULL,
                P_CPF       VARCHAR(11)    NOT NULL);




CREATE TABLE Telefone(Numero        VARCHAR(15)         NOT NULL,
                 P_CPF    VARCHAR(11) NOT NULL,

                 PRIMARY KEY (Numero, P_CPF),
                 FOREIGN KEY (P_CPF)
                 REFERENCES Pessoa(CPF));




                                                  21
Linguagem de Definição de Dados (DDL)
ALTER TABLE Telefone
      ADD COLUMN TIPO VARCHAR2(5) DEFAULT ‘FIXO’ NOT NULL;

ALTER TABLE Telefone
     DROP COLUMN Tipo;

ALTER TABLE TELEFONE
     ADD CONSTRAINT TIPO_TELEFONE
     CHECK (TIPO IN(‘Fixo’, ‘Movel’));

ALTER TABLE TELEFONE
     DROP CONSTRAINT TIPO_TELEFONE;

ALTER TABLE TELEFONE
          MODIFY (TIPO VARCHAR2(5));
-- para diminuir tamanho a coluna precisa estar vazia.
                                                         22
Linguagem de Definição de Dados (DDL)
ALTER TABLE Reserva
      ADD CONSTRAINT PK_RESERVA PRIMARY KEY (V_Numero, P_CPF);


ALTER TABLE Reserva
      ADD CONSTRAINT FK_RESERVA_VOO FOREIGN KEY (V_Numero)
        REFERENCES Voo (Numero);


ALTER TABLE Reserva
     ADD CONSTRAINT FK_RESERVA_PASSAGEIRO FOREIGN KEY (P_CPF)
        REFERENCES Passageiro (CPF);

ALTER TABLE Reserva ENABLE CONSTRAINT
FK_RESERVA_PASSAGEIRO;

ALTER TABLE Reserva DISABLE CONSTRAINT
FK_RESERVA_PASSAGEIRO;
                                                   23
Linguagem de Definição de Dados (DDL)

   Renomear Tabela:
       Não é um comando SQL:2003.

        RENAME Pessoa TO Pessoa_Nova; -- Oracle

        RENAME TABLE Pessoa TO Pessoa_Nova;




   Deletar Tabela (estrutura):

        DROP TABLE Pessoa;


                                                  24
FIM

SQL DDL

  • 1.
  • 2.
  • 3.
    Características dos SGBDs  Natureza auto-contida de um sistema de banco de dados:  metadados armazenados num catálogo ou dicionário de dados.  Independência entre programas e dados:  estrutura dos arquivos de dados armazenada no catálogo separadamente dos programas de acesso.  Abstração de dados:  representação conceitual dos dados através de modelos de dados.  Suporte de múltiplas visões de dados:  diferentes perspectivas ou visões de usuários.  Suporte a transações:  compartilhamento de dados e processamento multiusuário. 3
  • 4.
    Esquemas, Instâncias eEstado do BD  Esquema: descrição do banco de dados. É definido durante o projeto de banco de dados e não se espera que seja alterado freqüentemente.  Estado ou Instância: composto pelos dados do banco de dados em um determinado momento. 4
  • 5.
  • 6.
    Arquitetura de Três-Esquemas  Tem por objetivo separar o usuário da aplicação do banco de dados físico.  É organizada em três níveis:  Nível Interno: descreve a estrutura de armazenamento físico do banco de dados.  Nível Conceitual: descreve a estrutura de todo o banco de dados para a comunidade de usuários.  Nível Externo ou Visão: cada esquema externo descreve a parte do banco de dados que um dado grupo de usuários tem interesse e oculta o restante do banco de dados desse grupo.  A maioria dos SGBDs não separa completamente os três níveis, mas suporta essa arquitetura de alguma forma. 6
  • 7.
    Independência de Dados  Consiste da capacidade de mudar o esquema em um nível do sistema de banco de dados sem que ocorram alterações do esquema no próximo nível mais alto.  Independência lógica de dados: é a capacidade de alterar o esquema conceitual sem mudar o esquema externo ou os programas.  Independência física de dados: é a capacidade de alterar o esquema interno sem mudar o esquema conceitual. 7
  • 8.
    Linguagens de SGBD  Durante o desenvolvimento do sistema R, pesquisadores da IBM desenvolveram a linguagem SEQUEL, primeira linguagem de acesso para Sistemas Gerenciadores de Banco de Dados Relacionais.  ISO e ANSI lançou em 1986 a primeira versão do padrão da linguagem SQL, o SQL-86.  A linguagem passou por aperfeiçoamentos em 1989 e, em 1992, foi lançada a SQL-92 ou SQL2.  Um novo padrão, chamado de SQL-99 ou SQL3 foi lançado no ano de 2000. Foi o primeiro padrão a estender a linguagem para permitir a utilização de tipos de dados complexos e a incorporar características da orientação a objetos.  Após uma grande revisão do padrão SQL3 foi lançada a SQL:2003. Nesta verão foi adicionada uma nova parte ligada ao tratamento de XML. 8
  • 9.
    Linguagens de SGBD  Linguagem de Definição de Dados (DDL):  usada para especificar o esquema conceitual.  Linguagem de Definição de Armazenamento (SDL):  usada para especificar o esquema interno, mas na maioria dos SGBDs a DDL é usada para definir este esquema.  Linguagem de Definição de Visões (VDL):  usada para especificar as visões dos usuários e os seus mapeamentos para o esquema conceitual, mas na maioria dos SGBDs a DDL é usada para definir ambos os esquemas, o conceitual e o externo.  Linguagem de Manipulação de Dados (DML):  usada para manipular os dados em um banco de dados. As manipulações típicas são a recuperação, inserção, remoção e modificação dos dados. 9
  • 10.
    Tipos de Dados (4 GB) (4 GB) 10
  • 11.
  • 12.
    Modelo Utilizado Pessoa (CPF, Nome, Sexo) Piloto (CPF, Cart_Trab) CPF Referencia Pessoa Passageiro(CPF, Dieta) CPF Referencia Pessoa Voo(Numero, Data, P_CPF) CPF Referencia Piloto Reserva(V_Numero, P_CPF) V_Numero Referencia Voo P_CPF Referencia Passageiro Telefone(Numero, P_CPF) CPF Referencia Pessoa 12
  • 13.
    Linguagem de Definiçãode Dados (DDL)  Criação de Tabelas: CREATE TABLE NOME_TABELA( COL1 TIPO_COLUNA [NOT NULL], COL1 TIPO_COLUNA [NOT NULL], COL1 TIPO_COLUNA [NOT NULL] ) 13
  • 14.
    Linguagem de Definiçãode Dados (DDL)  Na criação de tabelas, é possível especificar vários tipos de restrições:  Chave Primária: PRIMARY KEY ;  Chave Estrangeira: FOREIGN KEY;  Chave Alternativa (ou alternada): UNIQUE;  Restrição de Domínio: CHECK.  Pode-se atribuir nomes às restrições de integridade:  CONSTRAINT NOME_RESTRIÇÃO TIPO RESTRIÇÃO. 14
  • 15.
    Linguagem de Definiçãode Dados (DDL) CREATE TABLE Pessoa(CPF VARCHAR(11) NOT NULL, Nome VARCHAR(30) NOT NULL UNIQUE, Sexo VARCHAR(1) NOT NULL, PRIMARY KEY (CPF)); CREATE TABLE Piloto(CPF VARCHAR(11) NOT NULL, Cart_Trab VARCHAR(13) NOT NULL UNIQUE , PRIMARY KEY (CPF), FOREIGN KEY (CPF) REFERENCES Pessoa (CPF)); 15
  • 16.
    Linguagem de Definiçãode Dados (DDL) CREATE TABLE Passageiro(CPF VARCHAR(11) NOT NULL CONSTRAINT PK_PASSAGEIRO PRIMARY KEY CONSTRAINT FK_PESSOA REFERENCES Pessoa (CPF), Dieta VARCHAR(1) CHECK (Dieta IN(‘S’, ‘N’))); CREATE TABLE Voo(Numero Numeric NOT NULL CONSTRAINT PK_VOO PRIMARY KEY, Data Date NOT NULL, TIPO VARCHAR2(15) DEFAULT ‘NACIONAL’, P_CPF VARCHAR(11) NOT NULL CONSTRAINT FK_PILOTO REFERENCES Piloto (CPF)); 16
  • 17.
    Linguagem de Definiçãode Dados (DDL)  Deleção de item referenciado: ... CONSTRAINT FK_PILOTO FOREIGN KEY (P_CPF) REFERENCES Piloto (CPF) ON DELETE RESTRICT ); -- impede a exclusão (default) ... CONSTRAINT FK_PILOTO FOREIGN KEY (P_CPF) REFERENCES Piloto (CPF) ON DELETE SET NULL); -- transforma o valor em nulo ... CONSTRAINT FK_PILOTO FOREIGN KEY (P_CPF) REFERENCES Piloto (CPF) ON DELETE CASCADE ); -- exclui a linha da tabela 17
  • 18.
    Linguagem de Definiçãode Dados (DDL)  Criação de uma tabela com linhas de outra: CREATE TABLE Pessoa_Nova AS SELECT CPF, Nome, Sexo FROM Pessoa; 18
  • 19.
    Linguagem de Definiçãode Dados (DDL) CREATE VIEW <nome-de-visão> [ (lista-de-colunas) ] AS <comando-de-seleção> CREATE VIEW Empregados_Sede AS SELECT (Nome, Endereco, Sexo, Data-nasc) FROM EMPREGADO 19
  • 20.
    Linguagem de Definiçãode Dados (DDL)  Alteração de Tabelas:  Incluir novas colunas em uma tabela;  Excluir colunas existentes em uma tabela;  Adicionar a definição de uma restrição em uma tabela;  Excluir a definição de uma restrição existente em uma tabela;  Modificar uma coluna. 20
  • 21.
    Linguagem de Definiçãode Dados (DDL) CREATE TABLE Reserva(V_Numero Numeric NOT NULL, P_CPF VARCHAR(11) NOT NULL); CREATE TABLE Telefone(Numero VARCHAR(15) NOT NULL, P_CPF VARCHAR(11) NOT NULL, PRIMARY KEY (Numero, P_CPF), FOREIGN KEY (P_CPF) REFERENCES Pessoa(CPF)); 21
  • 22.
    Linguagem de Definiçãode Dados (DDL) ALTER TABLE Telefone ADD COLUMN TIPO VARCHAR2(5) DEFAULT ‘FIXO’ NOT NULL; ALTER TABLE Telefone DROP COLUMN Tipo; ALTER TABLE TELEFONE ADD CONSTRAINT TIPO_TELEFONE CHECK (TIPO IN(‘Fixo’, ‘Movel’)); ALTER TABLE TELEFONE DROP CONSTRAINT TIPO_TELEFONE; ALTER TABLE TELEFONE MODIFY (TIPO VARCHAR2(5)); -- para diminuir tamanho a coluna precisa estar vazia. 22
  • 23.
    Linguagem de Definiçãode Dados (DDL) ALTER TABLE Reserva ADD CONSTRAINT PK_RESERVA PRIMARY KEY (V_Numero, P_CPF); ALTER TABLE Reserva ADD CONSTRAINT FK_RESERVA_VOO FOREIGN KEY (V_Numero) REFERENCES Voo (Numero); ALTER TABLE Reserva ADD CONSTRAINT FK_RESERVA_PASSAGEIRO FOREIGN KEY (P_CPF) REFERENCES Passageiro (CPF); ALTER TABLE Reserva ENABLE CONSTRAINT FK_RESERVA_PASSAGEIRO; ALTER TABLE Reserva DISABLE CONSTRAINT FK_RESERVA_PASSAGEIRO; 23
  • 24.
    Linguagem de Definiçãode Dados (DDL)  Renomear Tabela:  Não é um comando SQL:2003. RENAME Pessoa TO Pessoa_Nova; -- Oracle RENAME TABLE Pessoa TO Pessoa_Nova;  Deletar Tabela (estrutura): DROP TABLE Pessoa; 24
  • 25.