Banco Restaurante
CREATE DATABASE restaurante_backup;
USE restaurante_backup;
CREATE TABLE BKP_ADM (
id_adm_bkp INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
id_adm INT(11) NOT NULL ,
nome VARCHAR(40) NOT NULL ,
login VARCHAR(45) NOT NULL ,
senha VARCHAR(20) NOT NULL ,
data_bkp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
tipo_bkp CHAR(1) NOT NULL ,
quando_bkp CHAR(1) NOT NULL
);
CREATE TABLE BKP_STATUS (
id_status_bkp INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
id_status INT(11) NOT NULL ,
tipo_status VARCHAR(45) NOT NULL ,
data_bkp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
tipo_bkp CHAR(1) NOT NULL ,
quando_bkp CHAR(1) NOT NULL
);
CREATE TABLE BKP_CATEGORIA (
id_categoria_bkp INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
id_categoria INT(11) NOT NULL ,
nome VARCHAR(30) NOT NULL ,
data_bkp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
tipo_bkp CHAR(1) NOT NULL ,
quando_bkp CHAR(1) NOT NULL
);
CREATE TABLE BKP_PRODUTO (
id_produto_bkp INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
id_produto INT(11) NOT NULL ,
id_categoria INT(11),
nome VARCHAR(45) NOT NULL ,
preco FLOAT NOT NULL ,
descricao VARCHAR(60) NOT NULL ,
data_bkp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
tipo_bkp CHAR(1) NOT NULL ,
quando_bkp CHAR(1) NOT NULL
);
CREATE TABLE BKP_MESA (
id_mesa_bkp INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
id_mesa INT(11) NOT NULL ,
id_status INT NOT NULL ,
data_bkp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
tipo_bkp CHAR(1) NOT NULL ,
quando_bkp CHAR(1) NOT NULL
);
CREATE TABLE BKP_COMANDA (
id_comanda_bkp INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
id_comanda INT(11) NOT NULL ,
id_mesa INT(11),
data DATE NOT NULL ,
data_bkp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
tipo_bkp CHAR(1) NOT NULL ,
quando_bkp CHAR(1) NOT NULL
);
CREATE TABLE BKP_PEDIDO (
id_pedido_bkp INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
id_pedido INT(11) NOT NULL ,
id_produto INT(11),
id_comanda INT(11),
id_status INT,
data_bkp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
tipo_bkp CHAR(1) NOT NULL ,
quando_bkp CHAR(1) NOT NULL
);
CREATE TABLE BKP_CAIXA (
id_caixa_bkp INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
id_caixa INT(11) NOT NULL ,
id_comanda INT(11),
dinheiro_inicial FLOAT NOT NULL ,
dinheiro_final FLOAT NOT NULL ,
data DATE NOT NULL ,
obs VARCHAR(60) NULL DEFAULT NULL,
data_bkp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
tipo_bkp CHAR(1) NOT NULL ,
quando_bkp CHAR(1) NOT NULL
);
INSERT INTO ADM (nome, login, senha) VALUES ('denise', 'denise', 'denise123'),
('henrique', 'henrique', 'henrique123'),
('daniel', 'daniel', 'daniel123');
INSERT INTO STATUS (tipo_status) VALUES ('Ocupado'),
('Livre'),
('Pronto'),
('Fazendo'),
('Em Espera'),
('Cancelado');
INSERT INTO CATEGORIA (nome) VALUES ('Bebidas'),
('Entrada'),
('Sobremesa'),
('Prato Principal'),
('Petiscos');
INSERT INTO PRODUTO (id_categoria, nome, preco, descricao) VALUES (1, 'Coca Cola', 7.5, 'Bebida gelada 2 litros'),
(2, 'Salada de bacalhau', 15.5, 'Salada de bacalhau com legumes'),
(3, 'Pudim de Café', 6, 'Sobremesa de café'),
(4, 'Peixe Grelhado', 45.9, 'Peixe Branco Grelhado ao Molho Cítrico'),
(5, 'Batata Frita', 8, 'Acompanha molho');
INSERT INTO MESA (id_status) VALUES (1),
(2),
(1),
(1),
(2);
INSERT INTO COMANDA (id_mesa, data) VALUES (1, '2019-03-28'),
(3, '2019-03-28'),
(4, '2019-03-28');
INSERT INTO PEDIDO (id_produto, id_comanda, id_status) VALUES (1, 1, 3),
(3, 2, 4),
(5, 3, 5);
INSERT INTO CAIXA (id_comanda, dinheiro_inicial, dinheiro_final, data, obs) VALUES (1, 8.0, 0.5, '2019-03-28', 'Dinheiro'),
(3, 10.0, 6.0, '2019-03-28', 'Cartão');
CREATE PROCEDURE inserir_adm(nome varchar(40), login varchar(45), senha varchar(20))
BEGIN
INSERT INTO ADM
VALUES
(NULL,
nome,
login,
senha);
END;
CREATE PROCEDURE deletar_adm(id int)
BEGIN
DELETE
FROM ADM
WHERE id_adm=id;
END;
CREATE PROCEDURE inserir_mesa(id_status int(11))
BEGIN
INSERT INTO MESA
VALUES
(NULL,
id_status);
END;
CREATE PROCEDURE deletar_mesa(id int)
BEGIN
DELETE
FROM MESA
WHERE id_mesa=id;
END;
CREATE PROCEDURE inserir_status(tipo_status varchar(45))
BEGIN
INSERT INTO STATUS
VALUES
(NULL,
tipo_status);
END;
CREATE PROCEDURE deletar_status(id int)
BEGIN
DELETE
FROM STATUS
WHERE id_status=id;
END;
CREATE PROCEDURE inserir_produto(id_categoria int, nome varchar(45), preco float, descricao varchar(60))
BEGIN
INSERT INTO PRODUTO
VALUES
(NULL,
id_categoria,
nome,
preco,
descricao);
END;
CREATE PROCEDURE deletar_produto(id int)
BEGIN
DELETE
FROM PRODUTO
WHERE id_produto=id;
END;
CREATE PROCEDURE inserir_categoria(nome varchar(30))
BEGIN
INSERT INTO CATEGORIA
VALUES
(NULL,
nome);
END;
CREATE PROCEDURE deletar_categoria(id int)
BEGIN
DELETE
FROM CATEGORIA
WHERE id_categoria=id;
END;
CREATE PROCEDURE inserir_comanda(id_mesa int, data date)
BEGIN
INSERT INTO COMANDA
VALUES
(NULL,
id_mesa,
data);
END;
CREATE PROCEDURE deletar_comanda(id int)
BEGIN
DELETE
FROM COMANDA
WHERE id_comanda=id;
END;
CREATE PROCEDURE inserir_pedido(id_produto int, id_comanda int, id_status int)
BEGIN
INSERT INTO PEDIDO
VALUES
(NULL,
id_produto,
id_comanda,
id_status);
END;
CREATE PROCEDURE deletar_pedido(id int)
BEGIN
DELETE
FROM PEDIDO
WHERE id_pedido=id;
END;
CREATE PROCEDURE inserir_caixa(id_comanda int, dinheiro_inicial float, dinheiro_final float, data date, obs varchar(60))
BEGIN
INSERT INTO CAIXA
VALUES
(NULL,
id_comanda,
dinheiro_inicial,
dinheiro_final,
data,
obs);
END;
CREATE PROCEDURE deletar_caixa(id int)
BEGIN
DELETE
FROM CAIXA
WHERE id_caixa=id;
END;
create procedure fatprocedural(IN fat bigint)
begin
DECLARE result BIGINT DEFAULT fat;
WHILE fat>=0 DO
if fat >= 2 then
SET result = result * (fat-1);
end if;
SET fat = fat - 1;
END WHILE ;
select result;
end;
create procedure fatrecursive(IN fat bigint, OUT fatout bigint)
begin
set max_sp_recursion_depth = 100;
if fat>=2 then
call fatrecursive(fat-1, fatout);
select fat * fatout into fatout;
else
select fat into fatout;
end if;
end;
/* Banco do Restaurante Trabalho */
drop DATABASE restaurante;
CREATE DATABASE restaurante;
USE restaurante;
CREATE TABLE ADM (
id_adm INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(40) NOT NULL,
login VARCHAR(45) NOT NULL,
senha VARCHAR(20) NOT NULL
);
CREATE TABLE STATUS (
id_status INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
tipo_status VARCHAR(45) NOT NULL
);
CREATE TABLE CATEGORIA (
id_categoria INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(30) NOT NULL
);
CREATE TABLE PRODUTO (
id_produto INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
id_categoria INT(11),
nome VARCHAR(45) NOT NULL,
preco FLOAT NOT NULL,
descricao VARCHAR(60) NOT NULL,
CONSTRAINT PRODUTO_CATEGORIA_FK
FOREIGN KEY (id_categoria)
REFERENCES CATEGORIA (id_categoria)
ON DELETE SET NULL
ON UPDATE CASCADE
);
CREATE TABLE MESA (
id_mesa INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
id_status INT,
CONSTRAINT MESA_STATUS_FK
FOREIGN KEY (id_status)
REFERENCES STATUS (id_status)
ON DELETE SET NULL
ON UPDATE CASCADE
);
CREATE TABLE COMANDA (
id_comanda INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
id_mesa INT(11),
data DATE NOT NULL,
CONSTRAINT MESA_ID_FK
FOREIGN KEY (id_mesa)
REFERENCES MESA (id_mesa)
ON DELETE SET NULL
ON UPDATE CASCADE
);
CREATE TABLE PEDIDO (
id_pedido INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
id_produto INT(11),
id_comanda INT(11),
id_status INT,
CONSTRAINT PEDIDO_COMANDA_FK
FOREIGN KEY (id_comanda)
REFERENCES COMANDA (id_comanda)
ON DELETE SET NULL
ON UPDATE CASCADE,
CONSTRAINT PEDIDO_PRODUTO_FK
FOREIGN KEY (id_produto)
REFERENCES PRODUTO (id_produto)
ON DELETE SET NULL
ON UPDATE CASCADE,
CONSTRAINT PEDIDO_STATUS_FK
FOREIGN KEY (id_status)
REFERENCES STATUS (id_status)
ON DELETE SET NULL
ON UPDATE CASCADE
);
CREATE TABLE CAIXA (
id_caixa INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
id_comanda INT(11),
dinheiro_inicial FLOAT NOT NULL,
dinheiro_final FLOAT NOT NULL,
data DATE NOT NULL,
obs VARCHAR(60) NULL DEFAULT NULL,
CONSTRAINT COMANDA_ID_FK
FOREIGN KEY (id_comanda)
REFERENCES COMANDA (id_comanda)
ON DELETE SET NULL
ON UPDATE CASCADE
);
CREATE TRIGGER adm_in AFTER
INSERT ON ADM
FOR EACH ROW
BEGIN
INSERT INTO restaurante_backup.BKP_ADM
VALUES (NULL,
new.id_adm,
new.nome,
new.login,
new.senha,
CURRENT_TIMESTAMP,
'I',
'A');
END;
CREATE TRIGGER adm_up AFTER
UPDATE ON ADM
FOR EACH ROW
BEGIN
INSERT INTO restaurante_backup.BKP_ADM
VALUES (NULL,
new.id_adm,
new.nome,
new.login,
new.senha,
CURRENT_TIMESTAMP,
'U',
'A');
END;
CREATE TRIGGER adm_del
BEFORE
DELETE ON ADM
FOR EACH ROW
BEGIN
INSERT INTO restaurante_backup.BKP_ADM
VALUES (NULL,
old.id_adm,
old.nome,
old.login,
old.senha,
CURRENT_TIMESTAMP,
'D',
'B');
END;
CREATE TRIGGER caixa_in AFTER
INSERT ON CAIXA
FOR EACH ROW
BEGIN
INSERT INTO restaurante_backup.BKP_CAIXA
VALUES (NULL,
new.id_caixa,
new.id_comanda,
new.dinheiro_inicial,
new.dinheiro_final,
new.data,
new.obs,
CURRENT_TIMESTAMP,
'I',
'A');
END;
CREATE TRIGGER caixa_up AFTER
UPDATE ON CAIXA
FOR EACH ROW
BEGIN
INSERT INTO restaurante_backup.BKP_CAIXA
VALUES (NULL,
new.id_caixa,
new.id_comanda,
new.dinheiro_inicial,
new.dinheiro_final,
new.data,
new.obs,
CURRENT_TIMESTAMP,
'U',
'A');
END;
CREATE TRIGGER caixa_del
BEFORE
DELETE ON CAIXA
FOR EACH ROW
BEGIN
INSERT INTO restaurante_backup.BKP_CAIXA
VALUES (NULL,
old.id_caixa,
old.id_comanda,
old.dinheiro_inicial,
old.dinheiro_final,
old.data,
old.obs,
CURRENT_TIMESTAMP,
'D',
'B');
END;
CREATE TRIGGER categoria_in AFTER
INSERT ON CATEGORIA
FOR EACH ROW
BEGIN
INSERT INTO restaurante_backup.BKP_CATEGORIA
VALUES (NULL,
new.id_categoria,
new.nome,
CURRENT_TIMESTAMP,
'I',
'A');
END;
CREATE TRIGGER categoria_up AFTER
UPDATE ON CATEGORIA
FOR EACH ROW
BEGIN
INSERT INTO restaurante_backup.BKP_CATEGORIA
VALUES (NULL,
new.id_categoria,
new.nome,
CURRENT_TIMESTAMP,
'U',
'A');
END;
CREATE TRIGGER categoria_del
BEFORE
DELETE ON CATEGORIA
FOR EACH ROW
BEGIN
INSERT INTO restaurante_backup.BKP_CATEGORIA
VALUES (NULL,
old.id_categoria,
old.nome,
CURRENT_TIMESTAMP,
'D',
'B');
END;
CREATE TRIGGER comanda_in AFTER
INSERT ON COMANDA
FOR EACH ROW
BEGIN
INSERT INTO restaurante_backup.BKP_COMANDA
VALUES (NULL,
new.id_comanda,
new.id_mesa,
new.data,
CURRENT_TIMESTAMP,
'I',
'A');
END;
CREATE TRIGGER comanda_up AFTER
UPDATE ON COMANDA
FOR EACH ROW
BEGIN
INSERT INTO restaurante_backup.BKP_COMANDA
VALUES (NULL,
new.id_comanda,
new.id_mesa,
new.data,
CURRENT_TIMESTAMP,
'U',
'A');
END;
CREATE TRIGGER comanda_del
BEFORE
DELETE ON COMANDA
FOR EACH ROW
BEGIN
INSERT INTO restaurante_backup.BKP_COMANDA
VALUES (NULL,
old.id_comanda,
old.id_mesa,
old.data,
CURRENT_TIMESTAMP,
'D',
'B');
END;
CREATE TRIGGER mesa_in AFTER
INSERT ON MESA
FOR EACH ROW
BEGIN
INSERT INTO restaurante_backup.BKP_MESA
VALUES (NULL,
new.id_mesa,
new.id_status,
CURRENT_TIMESTAMP,
'I',
'A');
END;
CREATE TRIGGER mesa_up AFTER
UPDATE ON MESA
FOR EACH ROW
BEGIN
INSERT INTO restaurante_backup.BKP_MESA
VALUES (NULL,
new.id_mesa,
new.id_status,
CURRENT_TIMESTAMP,
'U',
'A');
END;
CREATE TRIGGER mesa_del
BEFORE
DELETE ON MESA
FOR EACH ROW
BEGIN
INSERT INTO restaurante_backup.BKP_MESA
VALUES (NULL,
old.id_mesa,
old.id_status,
CURRENT_TIMESTAMP,
'D',
'B');
END;
CREATE TRIGGER pedido_in AFTER
INSERT ON PEDIDO
FOR EACH ROW
BEGIN
INSERT INTO restaurante_backup.BKP_PEDIDO
VALUES (NULL,
new.id_pedido,
new.id_produto,
new.id_comanda,
new.id_status,
CURRENT_TIMESTAMP,
'I',
'A');
END;
CREATE TRIGGER pedido_up AFTER
UPDATE ON PEDIDO
FOR EACH ROW
BEGIN
INSERT INTO restaurante_backup.BKP_PEDIDO
VALUES (NULL,
new.id_pedido,
new.id_produto,
new.id_comanda,
new.id_status,
CURRENT_TIMESTAMP,
'U',
'A');
END;
CREATE TRIGGER pedido_del
BEFORE
DELETE ON PEDIDO
FOR EACH ROW
BEGIN
INSERT INTO restaurante_backup.BKP_PEDIDO
VALUES (NULL,
old.id_pedido,
old.id_produto,
old.id_comanda,
old.id_status,
CURRENT_TIMESTAMP,
'D',
'B');
END;
CREATE TRIGGER produto_in AFTER
INSERT ON PRODUTO
FOR EACH ROW
BEGIN
INSERT INTO restaurante_backup.BKP_PRODUTO
VALUES (NULL,
new.id_produto,
new.id_categoria,
new.nome,
new.preco,
new.descricao,
CURRENT_TIMESTAMP,
'I',
'A');
END;
CREATE TRIGGER produto_up AFTER
UPDATE ON PRODUTO
FOR EACH ROW
BEGIN
INSERT INTO restaurante_backup.BKP_PRODUTO
VALUES (NULL,
new.id_produto,
new.id_categoria,
new.nome,
new.preco,
new.descricao,
CURRENT_TIMESTAMP,
'U',
'A');
END;
CREATE TRIGGER produto_del
BEFORE
DELETE ON PRODUTO
FOR EACH ROW
BEGIN
INSERT INTO restaurante_backup.BKP_PRODUTO
VALUES (NULL,
old.id_produto,
old.id_categoria,
old.nome,
old.preco,
old.descricao,
CURRENT_TIMESTAMP,
'D',
'B');
END;
CREATE TRIGGER status_in AFTER
INSERT ON STATUS
FOR EACH ROW
BEGIN
INSERT INTO restaurante_backup.BKP_STATUS
VALUES (NULL,
new.id_status,
new.tipo_status,
CURRENT_TIMESTAMP,
'I',
'A');
END;
CREATE TRIGGER status_up AFTER
UPDATE ON STATUS
FOR EACH ROW
BEGIN
INSERT INTO restaurante_backup.BKP_STATUS
VALUES (NULL,
new.id_status,
new.tipo_status,
CURRENT_TIMESTAMP,
'U',
'A');
END;
CREATE TRIGGER status_del
BEFORE
DELETE ON STATUS
FOR EACH ROW
BEGIN
INSERT INTO restaurante_backup.BKP_STATUS
VALUES (NULL,
old.id_status,
old.tipo_status,
CURRENT_TIMESTAMP,
'D',
'B');
END;
CREATE OR REPLACE VIEW valor_a_pagar as
SELECT
C.id_comanda as "COMANDA",
C.data as "DATA",
sum(P2.preco) as "VALOR"
FROM COMANDA C
JOIN PEDIDO P on C.id_comanda = P.id_comanda
JOIN PRODUTO P2 on P.id_produto = P2.id_produto
WHERE id_status=3
GROUP BY C.id_comanda;
CREATE OR REPLACE VIEW pedidos as
SELECT P.nome as "PEDIDO",
P.preco as "PRECO",
C2.nome as "CATEGORIA",
P.descricao as "DESCRICAO",
C.id_comanda as "COMANDA",
id_mesa as "MESA",
tipo_status as "STATUS"
FROM PEDIDO PE
JOIN PRODUTO P on PE.id_produto = P.id_produto
JOIN COMANDA C on PE.id_comanda = C.id_comanda
JOIN STATUS S on PE.id_status = S.id_status
JOIN CATEGORIA C2 on P.id_categoria = C2.id_categoria