Aulas práticas - Ficha 3 - Algumas soluções

Bases de Dados (CC2005), Dep. Ciência de Computadores, FCUP

Eduardo R. B. Marques, DCC/FCUP

3. Consulta de dados

  1. Os dados completos de todos os utilizadores do sexo feminino (Sex='F').

    SELECT * 
    FROM USER 
    WHERE Sex='F';
  2. Apenas o "login" e nome dos utilizadores de sexo feminino.

    SELECT Login, Name 
    FROM USER 
    WHERE Sex='F';
  3. O "login" dos utilizadores que não têm nº de telefone definido (PHONE IS NULL).

    SELECT Login 
    FROM USER 
    WHERE Phone IS NULL;
  4. O "login" e número de telefone dos utilizadores que têm nº de telefone definido (PHONE IS NOT NULL).

    SELECT Login,Phone 
    FROM USER 
    WHERE Phone IS NOT NULL;
  5. O "login" e a data de nascimento de utilizadores que tenham nascido antes do ano 2000 (Year(BirthDate) < 2000).

    SELECT Login, BirthDate 
    FROM USER 
    WHERE Year(BirthDate) < 2000;
  6. O "login" e a data de nascimento de utilizadores que tenham nascido antes do ano 2000 e que sejam do sexo feminino (Year(BirthDate) < 2000 AND Sex = 'F').

    SELECT Login, BirthDate 
    FROM USER 
    WHERE Year(BirthDate) < 2000 AND Sex='F';
  7. O "login" e o ano de nascimento de utilizadores que tenham nascido no ano 2000 ou depois (Year(BirthDate) >= 2000).

    SELECT Login, Year(BirthDate) 
    FROM USER 
    WHERE Year(BirthDate) >= 2000;
  8. O número, autor e texto de "posts" que tenham a sequência '...' no seu texto (Content LIKE '%...%').

    SELECT Num,Author,Content 
    FROM POST 
    WHERE Content LIKE '%...%';
  9. Os números de utilizadores que são seguidores do utilizador número 7.

    SELECT Follower
    FROM FOLLOWER
    WHERE User=7;
  10. O autor e o conteúdo de comentários ao "post" número 8.

    SELECT Author, Content
    FROM COMMENT
    WHERE Post=8;

4. Inserção de dados

4.1

INSERT INTO USER(Login,Joined,Name,BirthDate,Sex,Phone,Email)
VALUES('master.of.sql', '2020-03-01', 'Susan Doe', '2000-01-23', 'F', NULL, 'master.of.sql@nosql.com');

4.2

Utilizador gerado anteriormente deverá ter ficado com o número 12.

  1. POST_LIKED: Um "like" ao post com número 1;

    INSERT INTO POST_LIKED(User,Post) VALUES(12,1);
  2. FOLLOWER: o seguimento dos utilizadores 1 e 2.

    INSERT INTO FOLLOWER(Follower,User) VALUES (12,1),(12,2);
  3. COMMENT: a escrita de um comentário para o "post" 1 com conteúdo 'LOL' e o instante (data-hora) actual atribuido ao campo Creation recorrendo à função NOW();

    INSERT INTO COMMENT(Author,Post,Content,Creation) VALUES(12,1,'LOL', NOW());
  4. POST: A escrita de um "post" com conteúdo 'I love SQL';

    INSERT INTO POST(Author,Content,Creation) VALUES(12,'LOL', NOW());
  5. HASHTAG: a definição das "hash-tags" 'sql' e 'db' para o "post" criado no passo anterior.

    O post deverá ter ficado com número 13.

    INSERT INTO HASHTAG(Post,Tag) VALUES (13,'sql'), (13,'db');

5. Actualização de dados

  1. O email para 'maria@dcc.fc.up.pt' do utilizador com "login" 'maria'.

    UPDATE USER
    SET Email='maria@dcc.fc.up.pt'
    WHERE Login='maria';
  2. O nome para 'Secret Identity' e o email para 'batman@gotham.com' para o utilizador com nome 'Bruce Wayne'.

    UPDATE USER
    SET Name='Secret Identity',
      Email='batman@gotham.com'
    WHERE Name='Bruce Wayne';
  3. Os números de telefone para o valor NULL para utilizadores com número inferior a 5.

    UPDATE USER
    SET Phone=NULL
    WHERE Num < 5;

6. Remoção de dados

Use instruções DELETE por forma a remover:

  1. O "post" com número 5.

    DELETE FROM POST 
    WHERE Num=5;
  2. Os comentários feitos pelo utilizador 2.

    DELETE FROM COMMENT
    WHERE Author=2;
  3. Todas as entradas em FOLLOWER que envolvam o utilizador 2 (User = 2 OR Follower=2).

    DELETE FROM FOLLOWER
    WHERE User=2 OR Follower=2;