├── Tutorial de download e instalação - MySQL Community Server.pdf ├── scripts-aulas ├── TA1_SP1.sql ├── TA4_SP2.sql ├── TA1_SP2.sql ├── TA2_SP2.sql ├── TA3_SP2.sql ├── TA4_SP3.sql ├── TA2_SP1.sql ├── TA3_SP1.sql └── TA4_SP1.sql └── README.md /Tutorial de download e instalação - MySQL Community Server.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gilfernandesjr/disciplina_progdevbd/HEAD/Tutorial de download e instalação - MySQL Community Server.pdf -------------------------------------------------------------------------------- /scripts-aulas/TA1_SP1.sql: -------------------------------------------------------------------------------- 1 | USE world; 2 | 3 | SHOW TABLES; 4 | 5 | SHOW COLUMNS FROM city; 6 | 7 | 8 | /*nomes de todas as cidades na tabela cidade com 9 | nomes iniciados por ‘Sor’”:*/ 10 | SELECT Name 11 | FROM city 12 | WHERE Name LIKE "Sor%"; 13 | 14 | /*Encontrar nomes e a população de todas as cidades com 15 | nomes iniciados por ‘Sor’”:*/ 16 | SELECT Name, Population 17 | FROM city 18 | WHERE Name LIKE "Sor%"; 19 | 20 | /*nomes, sua população e os países em que se 21 | encontram, para todas as cidades com nomes iniciados por ‘Sor’”:*/ 22 | SELECT city.Name, city.Population, 23 | country.Name 24 | FROM city, country 25 | WHERE city.Name LIKE 'Sor%' AND city.CountryCode = country.Code; -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Programação e Desenvolvimento de Banco de Dados 2 | Olá alun*! 3 | 4 | Neste repositório você encontra todos os scripts desenvolvidos nas aulas da disciplina. 5 | 6 | ## Ambiente de desenvolvimento 7 | 8 | Durante as aulas utilizaremos o **MySQL Workbench**, um ambiente de desenvolvimento visual de banco de dados que integra desenvolvimento, administração, design, criação e manutenção de SQL. Esta ferramenta faz parte do pacote **MySQLCommunity Server**, um servidor de banco de dados muito popular e de uso gratuito. 9 | 10 | Se tiver dificuldades na instalação, veja aqui este [tutorial de instalação do MySQL Community Server 5.7](https://github.com/gilfernandesjr/disciplina_progdevbd/blob/main/Tutorial%20de%20download%20e%20instalação%20-%20MySQL%20Community%20Server.pdf) presente aqui neste repositório! 11 | 12 | ## 13 | 14 | Desejo a tod*s um ótimo aprendizado! 15 | 16 | Bons estudos! 17 | -------------------------------------------------------------------------------- /scripts-aulas/TA4_SP2.sql: -------------------------------------------------------------------------------- 1 | USE litoral; 2 | SELECT * FROM destino; 3 | 4 | /* Configurar o ambiente para que as alterações não sejam gravadas automaticamente 5 | Controle transacional MANUAL (SET AUTOCOMMIT = 0;) 6 | Controle transacional AUTOMÁTICO (SET AUTOCOMMIT = 1;) */ 7 | SET AUTOCOMMIT = 0; 8 | 9 | /* Para criar um ponto de restauração no banco*/ 10 | SAVEPOINT ponto1; 11 | 12 | 13 | /* Para fins de teste, o script a seguir visará gerar o mesmo 14 | erro cometido pelo colaborador:*/ 15 | /* atencao que, em versoes atuais do mysql, este UPDATE sem WHERE só irá funcionar 16 | se você desabilitar a opção de safedelete/update nas configurações do workbench */ 17 | UPDATE destino SET Nome = "Pequena Ilha do Mar"; 18 | 19 | SELECT * FROM destino; -- consulta exibe a tabela após o "erro" cometido no UPDATE 20 | 21 | 22 | /* Utilizar o ponto de restauração criado e testá-lo */ 23 | ROLLBACK TO SAVEPOINT ponto1; 24 | 25 | SELECT * FROM destino; -- consulta exibe a tabela como estava antes do "erro" cometido no UPDATE 26 | 27 | 28 | /* Agora alterando corretamente, somente o registro 5. 29 | E para GRAVAR as alterações feitas, deve ser utilizado o comando COMMIT após o Update (já que o AUTOCOMMIT = 0)*/ 30 | UPDATE destino SET Nome = "Pequena Ilha do Mar" 31 | WHERE id = 5; 32 | 33 | COMMIT; 34 | 35 | SELECT * FROM destino; 36 | 37 | /* Crie um novo ponto de restauração, pois o COMMIT apaga os pontos de restauração anteriores */ 38 | 39 | SAVEPOINT ponto2; 40 | 41 | -------------------------------------------------------------------------------- /scripts-aulas/TA1_SP2.sql: -------------------------------------------------------------------------------- 1 | # criacão do BD atualizada com os novos nomes do charset UTF8 2 | # Isso pois os anteriores 'utf8' e 'utf8_general_ci' foram depreciados nas novas versoes do MySQL 3 | CREATE DATABASE IF NOT EXISTS guiatur 4 | DEFAULT CHARSET = utf8mb4 5 | DEFAULT COLLATE = utf8mb4_0900_ai_ci; 6 | 7 | SHOW CREATE DATABASE guiatur; 8 | 9 | USE guiatur; 10 | 11 | CREATE TABLE IF NOT EXISTS pais ( 12 | id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 13 | nome VARCHAR(50) NOT NULL DEFAULT '', 14 | continente ENUM('Ásia', 'Europa', 'América', 'África', 15 | 'Oceania', 'Antártida') NOT NULL DEFAULT 'América', 16 | codigo CHAR(3) NOT NULL DEFAULT '' 17 | ); 18 | 19 | CREATE TABLE IF NOT EXISTS estado ( 20 | id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 21 | nome VARCHAR(50) NOT NULL DEFAULT '', 22 | sigla CHAR(2) NOT NULL DEFAULT '' 23 | ); 24 | 25 | CREATE TABLE IF NOT EXISTS cidade ( 26 | id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 27 | nome VARCHAR(50) NOT NULL DEFAULT '', 28 | populacao INT NOT NULL DEFAULT '0' 29 | ); 30 | 31 | CREATE TABLE IF NOT EXISTS ponto_tur ( 32 | id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 33 | nome VARCHAR(50) NOT NULL DEFAULT '', 34 | populacao INT NOT NULL DEFAULT '0', 35 | tipo ENUM('Atrativo', 'Serviço', 'Equipamento', 36 | 'Infraestrutura', 'Instituição ou Organização'), 37 | publicado ENUM('Não', 'Sim') NOT NULL DEFAULT 'Não' 38 | ); 39 | 40 | CREATE TABLE coordenada ( 41 | latitude FLOAT, 42 | longitude FLOAT 43 | ); 44 | 45 | 46 | -------------------------------------------------------------------------------- /scripts-aulas/TA2_SP2.sql: -------------------------------------------------------------------------------- 1 | SHOW TABLES; 2 | 3 | -- Alterar tabela de Elementos Turísticos, adicionando campos latitude e longitude. 4 | ALTER TABLE ponto_tur ADD coordenada POINT; 5 | DROP TABLE coordenada; 6 | 7 | 8 | -- Alterar a tabela “Países”, adicionando uma nota de 0 a 10 com o nível de interesse para o turista ('0','1','2','3','4','5','6','7','8','9','10') 9 | ALTER TABLE pais ADD interesse ENUM('0','1','2','3','4','5','6','7','8','9','10'); 10 | DESCRIBE pais; 11 | 12 | -- Alterar tabela “Cidades”, incluindo uma lista com os três melhores restaurantes. 13 | ALTER TABLE cidade ADD melhoresRest VARCHAR(300) DEFAULT ''; 14 | 15 | INSERT INTO ponto_tur (nome, coordenada) 16 | VALUES ('Ponte da Amizade',POINT(1.123456,3.434343)); 17 | 18 | SELECT * FROM ponto_tur; 19 | SELECT *, ST_AsText(coordenada) FROM ponto_tur; 20 | 21 | 22 | 23 | 24 | /* *********************************************** */ 25 | 26 | /*Teste de exclusão - inserindo dados na tabela com chave estrangeira*/ 27 | INSERT INTO linguagempais VALUES (0,4,'japones','sim'); 28 | SELECT * FROM linguagempais; 29 | DROP TABLE pais; # não vai funcionar por conta da chave estrangeira em país 30 | 31 | /*Excluir a restrição de chave estrangeira e tabela*/ 32 | ALTER TABLE linguagemPais DROP FOREIGN KEY FK_linguagemPais; 33 | /*agora sim, a tabela país pode ser excluída*/ 34 | DROP TABLE pais; 35 | 36 | 37 | /*listar todas as constraints do banco*/ 38 | SELECT * FROM information_schema.key_column_usage 39 | WHERE constraint_schema='guiatur'; 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /scripts-aulas/TA3_SP2.sql: -------------------------------------------------------------------------------- 1 | USE supergames; 2 | 3 | SELECT * FROM localizacao; 4 | 5 | INSERT jogo VALUES 6 | (0, "Super Metroid", 205.00, 7), 7 | (0, "DKC 2", 100.00, 8), 8 | (0, "FF XV", 120.00, 5), 9 | (0, "Xenoblade 2", 199.00, 6); 10 | 11 | SELECT * FROM jogo; 12 | 13 | /* Alterar valor dos jogos em promoção */ 14 | 15 | UPDATE jogo SET valor = valor * 0.5 16 | WHERE cod = 2; 17 | 18 | UPDATE jogo SET valor = valor * 0.5 19 | WHERE cod = 1; 20 | 21 | SELECT * FROM jogo; 22 | 23 | /* Criar uma tabela 'Promoção'*/ 24 | 25 | CREATE TABLE promocao ( 26 | Promo INT PRIMARY KEY AUTO_INCREMENT, 27 | Cod_Jogo INT NOT NULL, 28 | FOREIGN KEY (Cod_Jogo) 29 | REFERENCES Jogo (Cod) 30 | ); 31 | 32 | /* inserção dos jogos em promoção */ 33 | INSERT promocao VALUES (0,1),(0,2); 34 | 35 | 36 | SELECT * FROM promocao; 37 | 38 | /* Selecionar os jogos em promoção */ 39 | SELECT jogo.nome, jogo.valor 40 | FROM jogo 41 | WHERE jogo.cod IN (SELECT cod_jogo FROM promocao); 42 | 43 | 44 | 45 | /* ...ou utilizando JOIN.... */ 46 | 47 | SELECT 48 | jogo.nome AS 'Título', 49 | jogo.valor AS 'Preço' 50 | FROM 51 | jogo INNER JOIN promocao ON jogo.cod = promocao.cod_jogo; 52 | 53 | 54 | 55 | /* Selecionar os jogos que NÃO estão em promoção */ 56 | SELECT jogo.nome, jogo.valor 57 | FROM jogo 58 | WHERE jogo.cod NOT IN (SELECT cod_jogo FROM promocao); 59 | 60 | /* selecionar o jogo mais barato utilizando subconsultas e funções de agregação*/ 61 | SELECT nome AS 'mais barato!' 62 | FROM jogo WHERE valor = SOME (SELECT MIN(valor) FROM jogo); 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /scripts-aulas/TA4_SP3.sql: -------------------------------------------------------------------------------- 1 | USE litoral; 2 | 3 | CREATE TABLE vendas ( 4 | Numero int PRIMARY KEY AUTO_INCREMENT, 5 | DestinoId INT, 6 | Embarque DATE, 7 | Qtd INT, 8 | FOREIGN KEY (DestinoId) REFERENCES destino(id) 9 | ); 10 | 11 | SELECT * FROM destino; 12 | 13 | INSERT INTO vendas VALUES 14 | (0,1,20180203,3), 15 | (0,7,20180203,2), 16 | (0,5,20180203,1); 17 | 18 | ALTER TABLE destino ADD COLUMN Valor DECIMAL(5,2); 19 | 20 | SELECT * FROM destino; 21 | 22 | UPDATE destino SET valor = 100 WHERE id=1; 23 | UPDATE destino SET valor = 120 WHERE id=2; 24 | UPDATE destino SET valor = 80 WHERE id=3; 25 | UPDATE destino SET valor = 90 WHERE id=4; 26 | UPDATE destino SET valor = 100 WHERE id=5; 27 | UPDATE destino SET valor = 150 WHERE id=6; 28 | UPDATE destino SET valor = 120 WHERE id=7; 29 | UPDATE destino SET valor = 180 WHERE id=8; 30 | SELECT * FROM destino; 31 | 32 | -- Criar função 33 | CREATE FUNCTION fn_desc(x DECIMAL, y INT) 34 | RETURNS DECIMAL DETERMINISTIC 35 | RETURN (x*y)*0.7; 36 | 37 | SHOW FUNCTION STATUS WHERE db = 'litoral'; 38 | 39 | SELECT * FROM vendas; 40 | 41 | CREATE PROCEDURE proc_desc (VAR_VendaNumero INT) 42 | SELECT 43 | (fn_desc(destino.valor, Vendas.Qtd)) AS "Valor com desconto", 44 | destino.Nome AS "Destino", 45 | vendas.Qtd AS "Passagens", 46 | vendas.Embarque 47 | FROM Vendas INNER JOIN destino 48 | ON Vendas.DestinoId = destino.Id 49 | WHERE vendas.Numero = var_VendaNumero; 50 | 51 | CALL proc_desc(1); 52 | CALL proc_desc(2); 53 | CALL proc_desc(3); 54 | 55 | SHOW FUNCTION STATUS WHERE db = 'litoral'; 56 | 57 | SHOW PROCEDURE STATUS WHERE db = 'litoral'; 58 | 59 | DROP FUNCTION fn_desc; 60 | 61 | DROP PROCEDURE proc_desc; 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | -------------------------------------------------------------------------------- /scripts-aulas/TA2_SP1.sql: -------------------------------------------------------------------------------- 1 | USE guiatur; 2 | SHOW TABLES FROM guiatur; 3 | DESCRIBE pais; 4 | 5 | INSERT INTO pais (nome, continente, codigo) 6 | VALUES 7 | ('Brasil','América','BRA'); 8 | 9 | INSERT INTO pais 10 | VALUES 11 | ('0','Índia','Ásia','IDN'), #inserção errado de IDN de propósito para ser corrigida depois no UPDATE 12 | ('0','China','Ásia','CHI'), 13 | ('0','Japão','Ásia','JPN'); 14 | 15 | SELECT * FROM pais; 16 | SELECT * FROM pais; 17 | 18 | DESCRIBE estado; 19 | 20 | INSERT INTO estado (nome, sigla) 21 | VALUES('Maranhão', 'MA'), 22 | ('São Paulo', 'SP'), 23 | ('Santa Catarina', 'SC'), 24 | ('Rio de Janeiro', 'RJ'); 25 | 26 | SELECT * FROM estado; 27 | 28 | INSERT INTO cidade (nome, populacao) 29 | values('Sorocaba', 700000), 30 | ('Déli', 26000000), 31 | ('Xangai', 22000000), 32 | ('Tóquio', 38000000); 33 | 34 | SELECT * FROM cidade; 35 | 36 | INSERT INTO ponto_tur (nome, tipo) 37 | VALUES('Quinzinho de Barros', 'Instituição ou Organização'), 38 | ('Parque Estadual do Jalapão', 'Atrativo'), 39 | ('Torre Eiffel', 'Atrativo'), 40 | ('Fogo de Chão', 'Serviço'); 41 | DESCRIBE ponto_tur; 42 | SELECT * FROM ponto_tur; 43 | 44 | 45 | -- alterar para atrativo o primeiro ponto turístico 46 | UPDATE ponto_tur SET tipo = 'Atrativo' 47 | WHERE id = 1; 48 | 49 | SELECT * FROM ponto_tur; 50 | 51 | -- alterar o segundo país (Índia) para ter o cód. 'IND' 52 | UPDATE pais SET codigo = 'IND' WHERE id = 2; 53 | SELECT * FROM pais; 54 | 55 | -- deletar a primeira cidade 56 | SELECT * FROM cidade; 57 | DELETE FROM cidade WHERE id = 1; 58 | 59 | 60 | /* determinados países terem mais de 61 | um idioma, embora um seja determinado como o idioma oficial. 62 | Nessa relação, temos a cardinalidade de 1 para N */ 63 | 64 | CREATE TABLE IF NOT EXISTS linguagemPais ( 65 | id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 66 | codigoPais INT, 67 | linguagem VARCHAR(30) NOT NULL DEFAULT '', 68 | oficial ENUM('Sim', 'Não') NOT NULL DEFAULT'Não' 69 | ); 70 | DESCRIBE pais; 71 | 72 | /*Criar integridade referencial antre as tebelas linguagemPais e país*/ 73 | ALTER TABLE linguagemPais ADD CONSTRAINT FK_linguagempais 74 | FOREIGN KEY (codigoPais) REFERENCES pais(id); 75 | 76 | DESCRIBE linguagempais; 77 | 78 | /*Modificar o código do país para ser obrigatória a inclusão*/ 79 | ALTER TABLE linguagempais MODIFY codigoPais INT NOT NULL; 80 | 81 | SHOW TABLES FROM guiatur; 82 | DESCRIBE pais; 83 | SELECT * FROM pais; 84 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /scripts-aulas/TA3_SP1.sql: -------------------------------------------------------------------------------- 1 | create database SuperGames; 2 | use SuperGames; 3 | 4 | CREATE TABLE localizacao ( 5 | Id INT PRIMARY KEY AUTO_INCREMENT, 6 | Secao VARCHAR(50) NOT NULL, 7 | Prateleira INT ZEROFILL NOT NULL 8 | ); 9 | 10 | CREATE TABLE jogo ( 11 | Cod INT PRIMARY KEY AUTO_INCREMENT, 12 | Nome VARCHAR(50) NOT NULL, 13 | Valor DECIMAL(6,2) NOT NULL, 14 | Localizacao_Id INT NOT NULL, 15 | FOREIGN KEY (Localizacao_Id) 16 | REFERENCES Localizacao (Id) 17 | ); 18 | 19 | INSERT localizacao VALUES 20 | (0, "Guerra", "001"), 21 | (0, "Guerra", "002"), 22 | (0, "Aventura", "100"), 23 | (0, "Aventura", "101"), 24 | (0, "RPG", "150"), 25 | (0, "RPG", "151"), 26 | (0, "Plataforma 2D", "200"), 27 | (0, "Plataforma 2D", "201"); 28 | 29 | 30 | INSERT jogo VALUES 31 | (0, "COD 3", 125.00, 1), 32 | (0, "BF 1", 150.00, 2), 33 | (0, "Zelda BotW", 200.00, 3), 34 | (0, "Zelda OoT", 99.00, 4), 35 | (0, "Chrono T", 205.00, 5); 36 | 37 | 38 | SELECT * FROM localizacao; 39 | SELECT * FROM jogo; 40 | 41 | 42 | 43 | -- Identificar o nome do jogo e a prateleira 44 | SELECT jogo.nome, localizacao.prateleira 45 | FROM jogo INNER JOIN localizacao 46 | ON localizacao.id = jogo.localizacao_id; 47 | 48 | -- Identificar o nome dos jogos da seção de jogos de Aventura. 49 | SELECT jogo.nome, localizacao.prateleira, localizacao.secao 50 | FROM jogo INNER JOIN localizacao 51 | ON localizacao.id = jogo.localizacao_id 52 | WHERE secao = 'Aventura'; 53 | 54 | 55 | -- Identificar TODAS as seções e os respectivos nomes dos 56 | -- jogos, ordenando as seleções em ordem crescente pelo nome dos jogos. 57 | SELECT jogo.nome, localizacao.prateleira, localizacao.secao 58 | FROM localizacao LEFT JOIN jogo 59 | ON localizacao.id = jogo.localizacao_id 60 | ORDER BY jogo.nome ASC; 61 | 62 | 63 | 64 | 65 | 66 | -- AGREGAÇÃO --------------------------------------------------- 67 | 68 | -- Desenvolver uma função de agregação que retorne a quantidade 69 | -- de registros na tabela jogo. 70 | SELECT COUNT(*) FROM jogo; 71 | 72 | 73 | -- Desenvolver uma função de agregação que retorne o 74 | -- valor do jogo de maior preço (valor). 75 | SELECT MAX(valor) AS "Maior valor" FROM jogo; 76 | 77 | 78 | -- Desenvolver uma função de agregação que retorne o valor 79 | -- do jogo de menor preço (valor). 80 | SELECT MIN(valor) AS "Menor valor" FROM jogo; 81 | 82 | 83 | -- Desenvolver uma função de agregação que retorne o valor 84 | -- e o nome do jogo de menor preço. 85 | -- Aqui, adiantamos as subconsultas que serão estudadas na aula seguinte 86 | SELECT jogo.nome, valor 87 | FROM jogo 88 | WHERE jogo.valor = (SELECT MIN(valor) FROM jogo); 89 | 90 | 91 | -- Desenvolver uma função de agregação que retorne o valor 92 | -- médio dos jogos de guerra 93 | SELECT AVG(valor) AS "Media guerra" 94 | FROM jogo INNER JOIN localizacao 95 | ON localizacao.id = jogo.localizacao_id 96 | WHERE localizacao.secao = "Guerra"; 97 | 98 | 99 | -- Desenvolver uma função de agregação que retorne o 100 | -- valor total em estoque na loja. 101 | SELECT SUM(valor) AS "Total" FROM jogo; 102 | 103 | -------------------------------------------------------------------------------- /scripts-aulas/TA4_SP1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE litoral; 2 | USE litoral; 3 | 4 | CREATE TABLE escuna ( 5 | numero INT PRIMARY KEY, 6 | nome VARCHAR(30), 7 | capitao_cpf CHAR(11) 8 | ); 9 | 10 | CREATE TABLE destino ( 11 | id INT PRIMARY KEY AUTO_INCREMENT, 12 | nome VARCHAR(30) 13 | ); 14 | 15 | CREATE TABLE passeio ( 16 | id INT PRIMARY KEY AUTO_INCREMENT, 17 | data DATE, 18 | hora_saida TIME, 19 | hora_chegada TIME, 20 | escuna_numero INT, 21 | destino_id INT, 22 | FOREIGN KEY(escuna_numero) REFERENCES escuna(numero), 23 | FOREIGN KEY(destino_id) REFERENCES destino(id) 24 | ); 25 | 26 | INSERT INTO escuna VALUES 27 | (12345, "Black Flag","88888888899"), 28 | (12346, "Caveira","66666666677"), 29 | (12347, "Brazuca","44444444455"), 30 | (12348, "Rosa Brilhante 1","12345678900"), 31 | (12349, "Tubarão Ocean","22222222233"), 32 | (12340, "Rosa Brilhante 2","12345678900"); 33 | 34 | INSERT INTO destino VALUES 35 | (0, "Ilha Dourada"), 36 | (0, "Ilha D'areia fina"), 37 | (0, "Ilha Encantada"), 38 | (0, "Ilha dos Ventos"), 39 | (0, "Ilhinha"), 40 | (0, "Ilha Torta"), 41 | (0, "Ilha dos Sonhos"), 42 | (0, "Ilha do Sono"); 43 | 44 | INSERT INTO passeio VALUES 45 | (0,20180102,080000,140000,12345,1), 46 | (0,20180102,070000,170000,12346,8), 47 | (0,20180102,080000,140000,12340,3), 48 | (0,20180103,060000,120000,12347,2), 49 | (0,20180103,070000,130000,12348,4), 50 | (0,20180103,080000,140000,12349,6), 51 | (0,20180103,090000,150000,12345,5), 52 | (0,20180104,070000,160000,12347,1), 53 | (0,20180104,070000,170000,12345,3), 54 | (0,20180104,090000,130000,12349,7), 55 | (0,20180105,100000,180000,12340,8), 56 | (0,20180105,090000,130000,12347,7); 57 | 58 | 59 | SELECT * FROM escuna; 60 | SELECT * FROM destino; 61 | SELECT * FROM passeio; 62 | 63 | 64 | -- Criação da consulta com o nome da escuna, destino, horas de saída e chegada, e data do passeio 65 | 66 | SELECT escuna.nome AS "Escuna", 67 | destino.nome AS "Ilha", 68 | hora_saida AS "Saida", 69 | hora_chegada AS "Chegada", 70 | Data 71 | FROM passeio INNER JOIN escuna 72 | ON passeio.escuna_numero = escuna.numero 73 | INNER JOIN destino 74 | ON passeio.destino_id = destino.id 75 | ORDER BY passeio.data; 76 | 77 | -- Ou a mesma consulta com apenas um INNER JOIN, mas com a cláusula WHERE e o conectivo AND 78 | 79 | SELECT 80 | escuna.nome AS "Escuna", 81 | destino.nome AS "Ilha", 82 | hora_saida AS "Saida", 83 | hora_chegada AS "Chegada", 84 | Data 85 | FROM passeio INNER JOIN escuna, destino 86 | WHERE passeio.escuna_Numero = escuna.numero AND 87 | passeio.destino_ID = destino.id 88 | ORDER by passeio.data; 89 | 90 | 91 | 92 | -- Criação da VIEW --------------------------------------- 93 | 94 | CREATE VIEW v_consulta AS 95 | SELECT escuna.nome AS "Escuna", 96 | destino.nome AS "Ilha", 97 | hora_saida AS "Saida", 98 | hora_chegada AS "Chegada", 99 | Data 100 | FROM passeio INNER JOIN escuna 101 | ON passeio.escuna_numero = escuna.numero 102 | INNER JOIN destino 103 | ON passeio.destino_id = destino.id 104 | ORDER BY passeio.data; 105 | 106 | -- ver as tabelas e a VIEW (tabela virtual) 107 | SHOW TABLES; 108 | 109 | -- consultar a VIEW (tabela virtual) 110 | SELECT * FROM v_consulta; 111 | 112 | -- apagar a VIEW 113 | DROP VIEW v_consulta; 114 | 115 | 116 | --------------------------------------------------------------------------------