Exercícios BD
Por: lucassdj • 24/11/2015 • Trabalho acadêmico • 1.775 Palavras (8 Páginas) • 211 Visualizações
Atividade Extra – 2º Bimestre
- Criem o Banco de Dados ProdutoraFilmes e definam as tabelas abaixo:
[pic 1][pic 2][pic 3]
CREATE DATABASE PRODUTORAFILMES;
USE PRODUTORAFILMES;
CREATE TABLE FILME(
CODIGO INT NOT NULL AUTO_INCREMENT
, NOME VARCHAR(50) NOT NULL
, GENERO VARCHAR(30)
, DATALANCAMENTO TIMESTAMP
, CONSTRAINT PRIMARY KEY (CODIGO) );
CREATE TABLE ARTISTA(
CODIGO INT NOT NULL AUTO_INCREMENT
, NOME VARCHAR(50)
, DATANASCIMENTO DATE
, PAISORIGEM VARCHAR(30)
, CARACTERISTICAS VARCHAR(100)
, GENERO VARCHAR (30)
, CONSTRAINT PK_CODIGO PRIMARY KEY (CODIGO));
CREATE TABLE FILMEARTISTA(
CODIGOFILME INT
, CODIGOARTISTA INT
, DATAGRAVACAO TIMESTAMP
, CONSTRAINT FK_CODIGOFILME FOREIGN KEY (CODIGOFILME) REFERENCES FILME (CODIGO)
, CONSTRAINT FK_CODIGOARTISTA FOREIGN KEY(CODIGOARTISTA) REFERENCES ARTISTA (CODIGO)
);
- Crie uma Procedure para cada uma das tabelas, que irá inserir e atualizar os respectivos registros.
TABELA ARTISTA
CREATE DEFINER=`root`@`localhost` PROCEDURE `SP_ARTISTA_IU`(_CODIGO INT, _NOME VARCHAR(50), DATANASCIMENTO DATE,
PAISORIGEM VARCHAR(30), CARACTERISTICAS VARCHAR(100), GENERO VARCHAR (30), _OP CHAR(1))
BEGIN
IF (_OP = 'U' OR _OP ='u') THEN
UPDATE ARTISTIA SET
NOME = _NOME,
DATANASCIMENTO = _DATANASCIMENTO,
PAISORIGEM = _PAISORIGEM,
CARACTERISTICAS = _CARACTERISTICAS,
GENERO = _GENERO
WHERE
CODIGO = _CODIGO;
END IF;
IF (_OP = 'I' OR _OP = 'i') THEN
INSERT INTO ARTISTA (NOME, DATANASCIMENTO, PAISORIGEM, CARACTERISTICAS, GENERO)
VALUES (_NOME, _DATANASCIMENTO, _PAISORIGEM, _CARACTERISTICAS, _GENERO);
END IF;
END
TABELA FILME
CREATE DEFINER=`root`@`localhost` PROCEDURE `SP_FILME_IU`(_CODIGO INT, _NOME VARCHAR(50), _GENERO VARCHAR(30),
_DATALANCAMENTO DATETIME, _OP CHAR(1))
BEGIN
IF (_OP = 'U' OR _OP = 'u') THEN
UPDATE FILME SET
NOME = _NOME,
GENERO = _GENERO,
DATALANCAMENTO = _DATALANCAMENTO
WHERE
CODIGO = _CODIGO;
END IF;
IF (_OP = 'I' OR _OP = 'i') THEN
INSERT INTO FILME (NOME, GENERO, DATALANCAMENTO)
VALUES (_NOME, _GENERO, _DATALANCAMENTO);
END IF;
END
TABELA FILMEARTISTA
CREATE DEFINER=`root`@`localhost` PROCEDURE `SP_FILMEARTISTA_I`(_CODIGOFILME INT, _CODIGOARTISTA INT)
BEGIN
INSERT INTO FILMEARTISTA (CODIGOFILME, CODIGOARTISTA)
VALUES (_CODIGOFILME, _CODIGOARTISTA);
END
- Crie uma Procedure para cada uma das tabelas, que irá apagar os registros das tabelas, tomando por base a chave primária.
TABELA FILME
DELIMITER $$
USE `produtorafilmes`$$
CREATE PROCEDURE `SP_FILME_D` (_CODIGO INT)
BEGIN
DELETE FROM FILMERTISTA WHERE CODIGOFILME = _CODIGO;
DELETE FROM FILME WHERE CODIGO = _CODIGO;
END
$$
DELIMITER;
TABELA ARTISTA
DELIMITER $$
USE `produtorafilmes`$$
CREATE PROCEDURE `SP_ARTISTA_D` (_CODIGO INT)
BEGIN
DELETE FROM FILMEARTISTA WHERE CODIGOARTISTA = _CODIGO
DELETE FROM ARTISTA WHERE CODIGO = _CODIGO;
END
$$
DELIMITER;
TABELA FILMEARTISTA
DELIMITER $$
USE `produtorafilmes`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `SP_FILMEARTISTA_D`(_CODIGOFILME INT, CODIGOARTISTA INT)
BEGIN
DELETE FROM FILMEARTISTA WHERE CODIGOFILME = _CODIGOFILME AND CODIGOARTISTA = _CODIGOARTISTA;
END $$
DELIMITER ;
- Crie uma View que exiba os Filmes
CREATE OR REPLACE VIEW `VW_FILME_SELECT` AS
SELECT * FROM FILME;
;
- Crie uma View que exiba os Artistas.
CREATE OR REPLACE VIEW `VW_ARTISTA_SELECT` AS
SELECT * FROM ARTISTA;
;
- Crie uma View que irá exibir o nome e gênero dos Filmes, e o nome e país dos Artistas que participaram dos respectivos filmes.
CREATE OR REPLACE VIEW `VW_INFOFILMES` AS
SELECT B.NOME AS NOMEFILME, B.GENERO AS GENEROFILME, c.NOME AS NOMEARTISTA, C.PAISORIGEM
FROM FILMEARTISTA A
INNER JOIN FILME B ON B.CODIGO = A.CODIGOFILME
INNER JOIN ARTISTA C ON C.CODIGO = A.CODIGOARTISTA
...