Após a aula introdutório de SQL faça o exercício abaixo, e implemente no MySQL.
Utilizaremos uma ferramenta on line para simulação de nossos códigos em SQL, fique atento ao link de execução.
Bom estudo !
Avalie cada instrução, e faça o ajuste quando necessário.
Atenção: Algumas instruções estão escritas incorretamente, é sua missão realizar as devidas correções.
Para acessar a ferramenta(Clique Aqui)
Exercícios Resolvidos e Artigos
-Exercícios de SQL(Prof. Márcio Bueno)
-Material Complementar IFRN
-Comando Select IFRN
-Lista de exercício para fazer em equipe( será aplicada pontuação para esta atividade)
-Material em Resumo Passo a Passo
Criando as tabelas
create table pessoa (pessoa_cod integer not null, NOME varchar(6), fone varchar(10), primary key (pessoa_cod)); create table turma (turma_cod character(1) not null, NOME varchar(10), profe integer, primary key (turma_cod)); create table participante (pessoa integer not null, turma character(1) not null, primary key (pessoa, turma)); alter table turma add foreign key (profe) references pessoa (pessoa_cod); alter table participante add foreign key (pessoa) references pessoa (pessoa_cod); alter table participante add foreign key (turma) references turma (turma_cod);
Incluíndo alguns registros
insert into pessoa (pessoa_cod, NOME, fone) values (2, 'Silva', '282677'); insert into pessoa (pessoa_cod, NOME, fone) values (3, 'Cabral', '260088'); insert into pessoa (pessoa_cod, NOME, fone) values (4, Lobato, '174590'); insert into pessoa (pessoa_cod, NOME, fone) values (1, ‘O-Bilac’, '260088'); insert into turma (turma_cod, NOME, profe) values ('A', 'Volei', 4); insert into turma (turma_cod, NOME, profe) values ('C', 'Natação', 2); insert into turma (turma_cod, NOME, profe) values ('B', 'Karate', 4); insert into participante (pessoa, turma) values (1, 'A'); insert into participante (pessoa, turma) values (1, 'B'); insert into participante (pessoa, turma) values (1, 'C'); insert into participante (pessoa, turma) values (2, 'C'); insert into participante (pessoa, turma) values (3, 'A');
Exemplo 1
SQL> select * from pessoa; 4 rows selected ------------------------------- | PESSOA_COD | NOME |FONE | ------------------------------- | 2 |Silva | 282677 | | 3 |Cabral| 260088 | | 4 |Lobato| 174590 | | 1 |OBilac| 260088 | ------------------------------- SQL> select * from turma; 3 rows selected ------------------------------------- |TURMA_cod| NOME | PROFE | ------------------------------------- | A | Volei | 4 | | C | Natação | 2 | | B |Karate| 4 | ------------------------------------- SQL> select * from participante; 5 rows selected --------------------- | PESSOA |TURMA| --------------------- | 1 | A | | 1 | B | | 1 | C | | 2 | C | | 3 | A | ---------------------
Exemplo 2
SQL> select NOME from pessoa; 4 rows selected -------- | NOME | -------- |Silva | |Cabral| |Lobato| |OBilac| --------
Exemplo 3
SQL> select * from pessoa where NOME = 'Lobato'; 1 row selected ------------------------------- | PESSOA_COD | NOME |FONE | ------------------------------- | 4 |Lobato| 174590 | -------------------------------
Exemplo 4
SQL> select * from pessoa where first_NOME = Lobato;
[interbase.interclient]
Dynamic SQL Error SQL error code = -206 Column unknown FIRST_NOME SQL> select * from PARTIC where NOME = Lobato;
[interbase.interclient]
Dynamic SQL Error SQL error code = -204 Table unknown PARTIC
Exemplo 5
SQL> select NOME, fone from pessoa where NOME like 'S%'; 2 rows selected ------------------- | NOME |FONE | ------------------- |Silva | 282677 | |Cabral| 260088 | -------------------
Exemplo 6
SQL> select NOME, fone from pessoa where NOME = 'S%'; No rows selected ------------------- | NOME |FONE | -------------------
Exemplo 7
SQL> select * from pessoa where NOME like 'S%' and pessoa_cod <= 2 or fone = '174590'; 2 rows selected ------------------------------- | PESSOA_COD | NOME |FONE | ------------------------------- | 2 |Silva | 282677 | | 4 |Lobato| 174590 | -------------------------------
Exemplo 8
SQL> select * from pessoa where NOME like 'S%' and (pessoa_cod <= 2 or fone = '174590'); 1 row selected ------------------------------- | PESSOA_COD | NOME |FONE | ------------------------------- | 2 |Silva | 282677 | -------------------------------
Exemplo 9
SQL> select * from turma; 3 rows selected ------------------------------------- |TURMA_cod| NOME | PROFE | ------------------------------------- | A | Volei | 4 | | C | Natação | 2 | | B |Karate| 4 | ------------------------------------- SQL> select * from pessoa; 4 rows selected ------------------------------- | PESSOA_COD | NOME |FONE | ------------------------------- | 2 |Silva | 282677 | | 3 |Cabral| 260088 | | 4 |Lobato| 174590 | | 1 |OBilac| 260088 | -------------------------------
Exemplo 10
SQL> select profe from turma where NOME = 'Volei'; 1 row selected ------------- | PROFE | ------------- | 4 | -------------
Exemplo 11
SQL> select NOME from pessoa where pessoa_cod = 4; 1 row selected -------- | NOME | -------- |Lobato| --------
Exemplo 12
SQL> select NOME from pessoa where pessoa_cod = (select profe from turma where NOME = 'Volei'); 1 row selected -------- | NOME | -------- |Lobato| --------
Exemplo 13
SQL> select * from turma, pessoa; 12 rows selected ------------------------------------------------------------------- |TURMA_cod| NOME | PROFE | PESSOA_COD | NOME |FONE | ------------------------------------------------------------------- | A | Volei | 4 | 2 |Silva | 282677 | | C | Natação | 2 | 2 |Silva | 282677 | | B |Karate| 4 | 2 |Silva | 282677 | | A | Volei | 4 | 3 |Cabral| 260088 | | C | Natação | 2 | 3 |Cabral| 260088 | | B |Karate| 4 | 3 |Cabral| 260088 | | A | Volei | 4 | 4 |Lobato| 174590 | | C | Natação | 2 | 4 |Lobato| 174590 | | B |Karate| 4 | 4 |Lobato| 174590 | | A | Volei | 4 | 1 |OBilac| 260088 | | C | Natação | 2 | 1 |OBilac| 260088 | | B |Karate| 4 | 1 |OBilac| 260088 | -------------------------------------------------------------------
Exemplo 14
SQL> select * from turma, pessoa where profe = pessoa_cod; 3 rows selected ------------------------------------------------------------------- |TURMA_cod| NOME | PROFE | PESSOA_COD | NOME |FONE | ------------------------------------------------------------------- | C | Natação | 2 | 2 |Silva | 282677 | | A | Volei | 4 | 4 |Lobato| 174590 | | B |Karate| 4 | 4 |Lobato| 174590 | -------------------------------------------------------------------
Exemplo 15
SQL> select * from turma, pessoa where profe = pessoa_cod and turma.NOME = 'Volei'; 1 row selected ------------------------------------------------------------------- |TURMA_cod| NOME | PROFE | PESSOA_COD | NOME |FONE | ------------------------------------------------------------------- | A | Volei | 4 | 4 |Lobato| 174590 | -------------------------------------------------------------------
Exemplo 16
SQL> select pessoa.NOME from turma, pessoa where profe = pessoa_cod and turma.NOME = 'Volei'; 1 row selected -------- | NOME | -------- |Lobato| --------
Exemplo 17
SQL> select pessoa_cod from pessoa where NOME = 'O-Bilac'; 1 row selected ------------- | PESSOA_COD | ------------- | 1 | -------------
Exemplo 18
SQL> select turma from participante where pessoa = 1; 3 rows selected --------- |TURMA| --------- | A | | B | | C | ---------
Exemplo 19
SQL> select NOME from turma where turma_cod = 'A' or turma_cod = 'B' or turma_cod = 'C'; 3 rows selected ------------ | NOME | ------------ | Volei | | Natação | |Karate| ------------
Exemplo 20
SQL> select NOME from turma where turma_cod in ('A', 'B', 'C'); 3 rows selected ------------ | NOME | ------------ | Volei | | Natação | |Karate| ------------
Exemplo 21
SQL> select NOME from turma where turma_cod = (select turma from participante where pessoa = 1);
[interbase.interclient]
multiple rows in singleton select SQL> select NOME from turma where turma_cod = (select turma from participante where pessoa = (select pessoa_cod from pessoa where NOME = ‘O-Bilac’));
[interbase.interclient]
multiple rows in singleton select
Exemplo 22
SQL> select NOME from turma where turma_cod in (select turma from participante where pessoa = (select pessoa_cod from pessoa where NOME = ‘O-Bilac’)); 3 rows selected ------------ | NOME | ------------ | Volei | | Natação | |Karate| ------------
Exemplo 23
SQL> select NOME from turma, participante, pessoa where turma_cod = turma and pessoa = pessoa_cod and NOME = 'O-Bilac'; 3 rows selected -------- | NOME | -------- |OBilac| |OBilac| |OBilac| --------
Exemplo 24
SQL> select turma.NOME from turma, participante, pessoa where turma_cod = turma and pessoa = pessoa_cod and pessoa.NOME = ‘O-Bilac’; 3 rows selected ------------ | NOME | ------------ | Volei | |Karate| | Natação | ------------
Exemplo 25
SQL> select * from pessoa where pessoa_cod in (select pessoa from participante); 3 rows selected ------------------------------- | PESSOA_COD | NOME |FONE | ------------------------------- | 2 |Silva | 282677 | | 3 |Cabral| 260088 | | 1 |OBilac| 260088 | -------------------------------
Exemplo 26
4 SQL> select * from pessoa where pessoa_cod not in (select pessoa from participante); 1 row selected ------------------------------- | PESSOA_COD | NOME |FONE | ------------------------------- | 4 |Lobato| 174590 | -------------------------------
Exemplo 27
SQL> select max(pessoa_cod) from pessoa; 1 row selected ------------- | MAX | ------------- | 4 | -------------
Exemplo 28
SQL> select * from pessoa where pessoa_cod = max(pessoa_cod);
[interbase.interclient]
Dynamic SQL Error SQL error code = -104 Invalid aggregate reference
Exemplo 29
SQL> select * from pessoa where pessoa_cod = (select max(pessoa_cod) from pessoa); 1 row selected ------------------------------- | PESSOA_COD | NOME |FONE | ------------------------------- | 4 |Lobato| 174590 | -------------------------------
Exemplo 30
SQL> select max(pessoa_cod) from pessoa where NOME like 'S%'; 1 row selected ------------- | MAX | ------------- | 3 | -------------
Exemplo 31
SQL> select turma.NOME, pessoa.NOME from turma, pessoa where profe = pessoa_cod; 3 rows selected ------------------- | NOME | NOME | ------------------- | Natação |Silva | | Volei |Lobato| |Karate|Lobato| -------------------
Exemplo 32
SQL> create view prof_pessoa as select turma.NOME, pessoa.NOME from turma, pessoa where profe = pessoa_cod;
[interbase.interclient]
unsuccessful metadata update STORE RDB$RELATION_FIELDS failed attempt to store duplicate value (visible to active transactions) in unique index “RDB$INDEX_15”
Exemplo 33
SQL> create view prof_pessoa (turma_NOME, pessoa_codME) as select turma.NOME, pessoa.NOME from turma, pessoa where profe = pessoa_cod; Ok
Exemplo 34
SQL> select * from prof_pessoa; 3 rows selected -------------------------- |TURMA_NOME|PESSOA_CODME| -------------------------- | Natação | Silva | | Volei | Lobato | | Karate | Lobato | -------------------------- SQL> select PESSOA_CODME from prof_pessoa where turma_NOME = 'Volei'; 1 row selected ------------- |PESSOA_CODME| ------------- | Lobato | -------------
Exemplo 35
SQL> select * from pessoa; 4 rows selected ------------------------------- | PESSOA_COD | NOME |FONE | ------------------------------- | 2 |Silva | 282677 | | 3 |Cabral| 260088 | | 4 |Lobato| 174590 | | 1 |OBilac| 260088 | ------------------------------- SQL> insert into pessoa values (4, 'Isaac', 281000);
[interbase.interclient]
violation of PRIMARY or UNIQUE KEY constraint “INTEG_16” on table “PESSOA”
Exemplo 36
create table pessoa (pessoa_cod integer not null, NOME varchar(6), fone varchar(10), primary key (pessoa_cod)); Ok
Exemplo 37
SQL> insert into pessoa values (7, 'Isaac', 281000); Ok (1 row affected) SQL> select * from pessoa; 5 rows selected ------------------------------- | PESSOA_COD | NOME |FONE | ------------------------------- | 2 |Silva | 282677 | | 3 |Cabral| 260088 | | 4 |Lobato| 174590 | | 1 |OBilac| 260088 | | 7 |Isaac | 281000 | -------------------------------
Exemplo 38
4 SQL> insert into pessoa values (8, 'Nelson');
[interbase.interclient]
Dynamic SQL Error SQL error code = -804 Count of columns does not equal count of values
Exemplo 39
SQL> insert into pessoa (pessoa_cod, NOME) values (8, 'Nelson'); Ok (1 row affected) SQL> select * from pessoa; 6 rows selected ------------------------------- | PESSOA_COD | NOME |FONE | ------------------------------- | 2 |Silva | 282677 | | 3 |Cabral| 260088 | | 4 |Lobato| 174590 | | 1 |OBilac| 260088 | | 7 |Isaac | 281000 | | 8 |Nelson| | -------------------------------
Exemplo 40
SQL> select * from pessoa where fone is null; 1 row selected ------------------------------- | PESSOA_COD | NOME |FONE | ------------------------------- | 8 |Nelson| | -------------------------------
Exemplo 41
SQL> select * from pessoa where fone = ''; No rows selected ------------------------------- | PESSOA_COD | NOME |FONE | -------------------------------
Exemplo 42
SQL> commit; Transaction committed
Exemplo 43
SQL> delete from pessoa where NOME = 'Isaac'; Ok (1 row affected) SQL> select * from pessoa; 5 rows selected ------------------------------- | PESSOA_COD | NOME |FONE | ------------------------------- | 2 |Silva | 282677 | | 3 |Cabral| 260088 | | 4 |Lobato| 174590 | | 1 |OBilac| 260088 | | 8 |Nelson| | -------------------------------
Exemplo 44
SQL> rollback; Transaction aborted SQL> select * from pessoa; 6 rows selected ------------------------------- | PESSOA_COD | NOME |FONE | ------------------------------- | 2 |Silva | 282677 | | 3 |Cabral| 260088 | | 4 |Lobato| 174590 | | 1 |OBilac| 260088 | | 7 |Isaac | 281000 | | 8 |Nelson| | -------------------------------
Exemplo 45
SQL> delete from pessoa where NOME = Lobato;
[interbase.interclient]
violation of FOREIGN KEY constraint “INTEG_36” on table “TURMA”
Exemplo 46
alter table turma add foreign key (profe) references pessoa (pessoa_cod);
Exemplo 47
SQL> update turma set NOME = 'Futebol' where NOME = 'Volei'; Ok (1 row affected) SQL> select * from turma; 3 rows selected ------------------------------------- |TURMA_cod| NOME | PROFE | ------------------------------------- | A |Futebol | 4 | | C | Natação | 2 | | B |Karate| 4 | -------------------------------------
Exercício II
Criando as tabelas
create table empregado (emp_cod integer not null, NOME varchar(6), fone varchar(10), salario integer, chefe integer, depto character(1), primary key (emp_cod)); create table depto (depto_cod character(1) not null, NOME varchar(12), responsavel integer, primary key (depto_cod)); alter table empregado add constraint empregado_to_chefe foreign key (chefe) references empregado (emp_cod); alter table empregado add constraint empregado_to_dept foreign key (depto) references depto (depto_cod); alter table depto add constraint depto_to_responsavel foreign key (responsavel) references empregado (emp_cod);
Incluíndo novos registros
insert into empregado (emp_cod, NOME, fone, salario, depto) values (2, 'Silva', '2677', 30000, 'H'); insert into empregado (emp_cod, NOME, fone, salario, chefe, depto) values (3, 'Cabral', '1088', 22000, 2, 'S'); insert into empregado (emp_cod, NOME, fone, salario, chefe, depto) values (4, `Lobato’, '4590', 28000, 2, 'H'); insert into empregado (emp_cod, NOME, fone, salario, chefe, depto) values (1, ‘O-Bilac’, '2688', 20000, 3, 'S'); insert into empregado (emp_cod, NOME, fone, salario, chefe, depto) values (8, 'Maria', '2690', 25000, 4, 'C'); insert into empregado (emp_cod, NOME, fone, salario, chefe, depto) values (9, 'Antunes', '2698', 26000, 8, 'C'); insert into empregado (emp_cod, NOME, fone, salario, chefe, depto) values (10, 'Petter', '2645', 22000, 8, 'C'); insert into depto (depto_cod, NOME, responsavel) values ('H', 'Sede', 2); insert into depto (depto_cod, NOME, responsavel) values ('S', 'Seguranca', 3); insert into depto (depto_cod, NOME, responsavel) values ('C', 'Computação', 8);
Exemplo inicial
SQL> select * from empregado; 7 rows selected ------------------------------------------------------------------ | EMP_COD | NOME |FONE | SALARIO | CHEFE |DEPTO| ------------------------------------------------------------------ | 2 |Silva | 2677 | 30000 | 0 | H | | 3 |Cabral| 1088 | 22000 | 2 | S | | 4 |Lobato| 4590 | 28000 | 2 | H | | 1 |OBilac| 2688 | 20000 | 3 | S | | 8 |Maria | 2690 | 25000 | 4 | C | | 9 |Antunes | 2698 | 26000 | 8 | C | | 10 |Petter| 2645 | 22000 | 8 | C | ------------------------------------------------------------------ SQL> select * from depto; 3 rows selected ------------------------------------------ |DEPTO_cod| NOME |RESPONSAVEL| ------------------------------------------ | H |Sede| 2 | | S | Seguranca | 3 | | C | Computação | 8 | ------------------------------------------
Exemplo 1
SQL> select depto.NOME, empregado.NOME from depto, empregado where depto.responsavel = empregado.emp_cod; 3 rows selected --------------------- | NOME | NOME | --------------------- |Sede|Silva | | Seguranca |Cabral| | Computação |Maria | ---------------------
Exemplo 2
SQL> select avg(salario) from empregado; 1 row selected ------------- | AVG | ------------- | 24714 | -------------
Exemplo 3
SQL> select chefe, avg(salario) from empregado group by chefe; 5 rows selected ------------------------- | CHEFE | AVG | ------------------------- | 2 | 25000 | | 3 | 20000 | | 4 | 25000 | | 8 | 24000 | | 0 | 30000 | -------------------------
Exemplo 4
SQL> select depto, avg(salario) from empregado group by depto; 3 rows selected ------------------------ |DEPTO| AVG | ------------------------ | C | 24333 | | H | 29000 | | S | 21000 | ------------------------
Exemplo 5
SQL> select depto, avg(salario) from empregado where salario > 20000 group by depto; 3 rows selected ------------------------ |DEPTO| AVG | ------------------------ | C | 24333 | | H | 29000 | | S | 22000 | ------------------------
Exemplo 6
SQL> select depto, avg(salario) from empregado group by depto having avg(salario) > 22000; 2 rows selected ------------------------ |DEPTO| AVG | ------------------------ | C | 24333 | | H | 29000 | ------------------------
Exemplo 7
SQL> select depto, avg(salario) from empregado where salario > 20000 group by depto having avg(salario) > 22000; 2 rows selected ------------------------ |DEPTO| AVG | ------------------------ | C | 24333 | | H | 29000 | ------------------------
Exemplo 8
SQL> select NOME, salario, NOME, salario from empregado, empregado where chefe = emp_cod and salario > salario; No rows selected --------------------------------------- | NOME | SALARIO | NOME | SALARIO | ---------------------------------------
Exemplo 9
SQL> select asalariado.NOME, asalariado.salario, chefe.NOME, chefe.salario from empregado asalariado, empregado chefe where asalariado.chefe = chefe.emp_cod and asalariado.salario > chefe.salario; 1 row selected --------------------------------------- | NOME | SALARIO | NOME | SALARIO | --------------------------------------- |Antunes | 26000 |Maria | 25000 | ---------------------------------------
Desse jeito não tem como não aprender parabéns muito boa materia.
Post feito em 2008 e até agora ajuda muita gente haha, deve ter dado um trabalho fazer isso tudo, mas continua ajudando a galera até os dias de hoje VLW.
Muito bem explicado e formatado estes exercícios de sql. Ajuda muita gente.