Bases de dados: SQL (continuação)
Carlos Santos
LabMM 4 - NTC - DeCA - UA
Aula 08, 12-03-2013
Modelo lógico vs modelo físico

O modelo lógico representa todas as lógicas inerentes ao problema:
tabelas, campos, chaves primárias e as suas relações. Deve incluir:

  • entidades e respetivos atributos
  • chaves primárias
  • propriedades de relações
  • relações e seus tipos

O modelo físico é uma versão mais completa do modelo lógico, sendo
adicionada a informação necessária para que esse modelo possa ser
implementado num SGBDR. Deve incluir:

  • chaves estrangeiras
  • tabelas de relação
  • identificação do tipo de dados e suas características especiais (UN,NN,...)
SQL | Operadores e algumas funções
símbolo           descrição                           exemplo                    observações

=                 Igual                               EmployeeNo = 2

>                 Maior                               EmployeeNo > 2

<                 Menor                               EmployeeNo < 2

<>                Diferente                           EmployeeNo <> 2

>=                Maior ou igual                      EmployeeNo >= 2

<=                Menor ou igual                      EmployeeNo <= 2

IN                Igual a um valor dentro de uma      EmployeeNo IN (2,3,4)
                  colecção de valores

LIKE              Similar                             LastName LIKE ‘Nunes’

BETWEEN ... AND   Dentro de um conjunto de valores,   EmployeeNo BETWEEN 2 AND Equivalente a:
                  incluindo os limites                4                        EmployeeNo IN (2,3,4)

IS NULL                                               DateEmployed IS NULL

IS NOT NULL                                           DateEmployed IS NOT NULL

NOW()             Devolve a DATA e HORA do servidor
SQL | Operadores Lógicos

AND, OR e NOT

  • Estes operadores têm uma prioridade inferior relativamente aos
    apresentados no slide anterior
  • As prioridades podem ser alteradas através da utilização de ( )
    símbolo   descrição             exemplo                    observações

    AND       As duas expressões    SalesNo > 3 AND Customer O AND tem maior prioridade do que
              têm que ter o valor   < “Smith”                o OR
              verdadeiro para o
              resultado final ser
              verdadeiro

    OR        Se qualquer uma das SalesNo > 3 OR Customer <
              expressões tiver o  “Smith”
              valor verdadeiro, o
              resultado final é
              verdadeiro

    NOT       Inverte o resultado   SalesNo NOT IN (2; 3; 4)
              booleano
SQL: SELECT DISTINCT … FROM

SELECT oficinasql.viaturas.Marca
FROM oficinasql.viaturas;




SELECT DISTINCT oficinasql.viaturas.Marca
FROM oficinasql.viaturas;
SQL: SELECT … FROM ... WHERE

 • SELECT oficinasql.viaturas.Marca, oficinasql.viaturas.Modelo
   FROM oficinasql.viaturas
   WHERE oficinasql.viaturas.Marca < 'Fiat' OR
   oficinasql.viaturas.Marca > 'Smart';




 • SELECT oficinasql.viaturas.Marca, oficinasql.viaturas.Modelo
   FROM oficinasql.viaturas
   WHERE ((oficinasql.viaturas.Marca < 'Fiat') OR
   (oficinasql.viaturas.Marca > 'Smart'))
   AND oficinasql.viaturas.Modelo LIKE ‘C%’;
SQL: SELECT … FROM ... WHERE

 • SELECT oficinasql.viaturas.Marca, oficinasql.viaturas.Modelo
   FROM oficinasql.viaturas
   WHERE oficinasql.viaturas.Marca IN ('Citroen', 'Smart');




 • SELECT oficinasql.viaturas.Marca, oficinasql.viaturas.Modelo
   FROM oficinasql.viaturas
   WHERE oficinasql.viaturas.Marca BETWEEN "Ferrari" AND "Renault"
   ORDER BY oficinasql.viaturas.Marca;
SQL: exemplos

 • SELECT oficinasql.viaturas.Marca, oficinasql.viaturas.Modelo
   FROM oficinasql.viaturas
   WHERE oficinasql.viaturas.DataVenda IS NULL;




 • SELECT oficinasql.viaturas.Marca, oficinasql.viaturas.Modelo
   FROM oficinasql.viaturas
   WHERE oficinasql.viaturas.DataVenda IS NOT NULL;
SQL: exemplos

 • SELECT oficinasql.viaturas.Marca
   FROM oficinasql.viaturas
   WHERE NOT oficinasql.viaturas.Marca IN ("Subaru", "Ferrari", "Renault");
SQL: Funções pré-definidas

Funções pré-definidas que trabalham sobre grupos de dados

  • AVG – valor médio
  • MIN– valor mínimo
  • MAX – valor máximo
  • COUNT – número de elementos
  • SUM – soma
SQL: Funções pré-definidas

 • SELECT MAX(oficinasql.viaturas.Preco)
   FROM oficinasql.viaturas;




 • SELECT COUNT(oficinasql.viaturas.Modelo)
   FROM oficinasql.viaturas;
SQL: AS

 • SELECT COUNT(oficinasql.viaturas.Modelo) AS TotalViaturas
   FROM oficinasql.viaturas;

                                                               TotalViaturas




 • SELECT COUNT(oficinasql.viaturas.Modelo)
   FROM oficinasql.viaturas AS tViat
   ... a partir daqui podemos utilizar “tViat” sempre que for necessário referir
   a tabela “oficinasql.viaturas”;
SQL: Funções pré-definidas

 • SELECT oficinasql.viaturas.Marca, COUNT(oficinasql.viaturas.Modelo)
   FROM oficinasql.viaturas
   GROUP BY oficinasql.viaturas.Marca;
SQL INSERT

INSERT INTO oficinasql.clientes VALUES (NULL, 'Joaquim Soares',
981234567, ‘Rua Estreita');
  • Desta forma inserem-se valores em todos os campos da tabela pela
    ordem como estão declaradas as colunas
  • Utiliza-se o NULL em campos com AI (por exemplo, no caso da PK) ou
    onde não se queira inserir informação
SQL INSERT

INSERT INTO oficinasql.clientes (Nome,Idade) VALUES ('Serafim
Saudade', 24);
  • Podem inserir-se valores apenas em alguns campos
  • Campos com AI serão actualizados automaticamente
SQL UPDATE

UPDATE oficinasql.clientes
SET oficinasql.clientes.Nome = "Serafim Saudoso",
oficinasql.clientes.Idade = 65
WHERE oficinasql.clientes.idClientes = 12;

LabMM4 (T08 - 12/13) - SQL continuação

  • 1.
    Bases de dados:SQL (continuação) Carlos Santos LabMM 4 - NTC - DeCA - UA Aula 08, 12-03-2013
  • 2.
    Modelo lógico vsmodelo físico O modelo lógico representa todas as lógicas inerentes ao problema: tabelas, campos, chaves primárias e as suas relações. Deve incluir: • entidades e respetivos atributos • chaves primárias • propriedades de relações • relações e seus tipos O modelo físico é uma versão mais completa do modelo lógico, sendo adicionada a informação necessária para que esse modelo possa ser implementado num SGBDR. Deve incluir: • chaves estrangeiras • tabelas de relação • identificação do tipo de dados e suas características especiais (UN,NN,...)
  • 3.
    SQL | Operadorese algumas funções símbolo descrição exemplo observações = Igual EmployeeNo = 2 > Maior EmployeeNo > 2 < Menor EmployeeNo < 2 <> Diferente EmployeeNo <> 2 >= Maior ou igual EmployeeNo >= 2 <= Menor ou igual EmployeeNo <= 2 IN Igual a um valor dentro de uma EmployeeNo IN (2,3,4) colecção de valores LIKE Similar LastName LIKE ‘Nunes’ BETWEEN ... AND Dentro de um conjunto de valores, EmployeeNo BETWEEN 2 AND Equivalente a: incluindo os limites 4 EmployeeNo IN (2,3,4) IS NULL DateEmployed IS NULL IS NOT NULL DateEmployed IS NOT NULL NOW() Devolve a DATA e HORA do servidor
  • 4.
    SQL | OperadoresLógicos AND, OR e NOT • Estes operadores têm uma prioridade inferior relativamente aos apresentados no slide anterior • As prioridades podem ser alteradas através da utilização de ( ) símbolo descrição exemplo observações AND As duas expressões SalesNo > 3 AND Customer O AND tem maior prioridade do que têm que ter o valor < “Smith” o OR verdadeiro para o resultado final ser verdadeiro OR Se qualquer uma das SalesNo > 3 OR Customer < expressões tiver o “Smith” valor verdadeiro, o resultado final é verdadeiro NOT Inverte o resultado SalesNo NOT IN (2; 3; 4) booleano
  • 5.
    SQL: SELECT DISTINCT… FROM SELECT oficinasql.viaturas.Marca FROM oficinasql.viaturas; SELECT DISTINCT oficinasql.viaturas.Marca FROM oficinasql.viaturas;
  • 6.
    SQL: SELECT …FROM ... WHERE • SELECT oficinasql.viaturas.Marca, oficinasql.viaturas.Modelo FROM oficinasql.viaturas WHERE oficinasql.viaturas.Marca < 'Fiat' OR oficinasql.viaturas.Marca > 'Smart'; • SELECT oficinasql.viaturas.Marca, oficinasql.viaturas.Modelo FROM oficinasql.viaturas WHERE ((oficinasql.viaturas.Marca < 'Fiat') OR (oficinasql.viaturas.Marca > 'Smart')) AND oficinasql.viaturas.Modelo LIKE ‘C%’;
  • 7.
    SQL: SELECT …FROM ... WHERE • SELECT oficinasql.viaturas.Marca, oficinasql.viaturas.Modelo FROM oficinasql.viaturas WHERE oficinasql.viaturas.Marca IN ('Citroen', 'Smart'); • SELECT oficinasql.viaturas.Marca, oficinasql.viaturas.Modelo FROM oficinasql.viaturas WHERE oficinasql.viaturas.Marca BETWEEN "Ferrari" AND "Renault" ORDER BY oficinasql.viaturas.Marca;
  • 8.
    SQL: exemplos •SELECT oficinasql.viaturas.Marca, oficinasql.viaturas.Modelo FROM oficinasql.viaturas WHERE oficinasql.viaturas.DataVenda IS NULL; • SELECT oficinasql.viaturas.Marca, oficinasql.viaturas.Modelo FROM oficinasql.viaturas WHERE oficinasql.viaturas.DataVenda IS NOT NULL;
  • 9.
    SQL: exemplos •SELECT oficinasql.viaturas.Marca FROM oficinasql.viaturas WHERE NOT oficinasql.viaturas.Marca IN ("Subaru", "Ferrari", "Renault");
  • 10.
    SQL: Funções pré-definidas Funçõespré-definidas que trabalham sobre grupos de dados • AVG – valor médio • MIN– valor mínimo • MAX – valor máximo • COUNT – número de elementos • SUM – soma
  • 11.
    SQL: Funções pré-definidas • SELECT MAX(oficinasql.viaturas.Preco) FROM oficinasql.viaturas; • SELECT COUNT(oficinasql.viaturas.Modelo) FROM oficinasql.viaturas;
  • 12.
    SQL: AS •SELECT COUNT(oficinasql.viaturas.Modelo) AS TotalViaturas FROM oficinasql.viaturas; TotalViaturas • SELECT COUNT(oficinasql.viaturas.Modelo) FROM oficinasql.viaturas AS tViat ... a partir daqui podemos utilizar “tViat” sempre que for necessário referir a tabela “oficinasql.viaturas”;
  • 13.
    SQL: Funções pré-definidas • SELECT oficinasql.viaturas.Marca, COUNT(oficinasql.viaturas.Modelo) FROM oficinasql.viaturas GROUP BY oficinasql.viaturas.Marca;
  • 14.
    SQL INSERT INSERT INTOoficinasql.clientes VALUES (NULL, 'Joaquim Soares', 981234567, ‘Rua Estreita'); • Desta forma inserem-se valores em todos os campos da tabela pela ordem como estão declaradas as colunas • Utiliza-se o NULL em campos com AI (por exemplo, no caso da PK) ou onde não se queira inserir informação
  • 15.
    SQL INSERT INSERT INTOoficinasql.clientes (Nome,Idade) VALUES ('Serafim Saudade', 24); • Podem inserir-se valores apenas em alguns campos • Campos com AI serão actualizados automaticamente
  • 16.
    SQL UPDATE UPDATE oficinasql.clientes SEToficinasql.clientes.Nome = "Serafim Saudoso", oficinasql.clientes.Idade = 65 WHERE oficinasql.clientes.idClientes = 12;