Você está na página 1de 37

UNIVERSIDADE DO BANCO DE DADOS.

DATA: 03/04/2011 Senha da rede Coti 2122407823

CREATE DATABASE IF NOT EXISTS AULA3; USE AULA3;

--NAO NORMALIZADA FORMA ERRADA. CREATE TABLE PESSOA(IDPESSOA INT PRIMARY KEY, NOME VARCHAR(35), ENDERECO VARCHAR(50), CIDADE VARCHAR(20), TELEFONE VARCHAR(20)); INSERT INTO PESSOA VALUES (1,LUIS,RUA A, BLOCO 12 APTO 301,VOLTA REDONDA,33) INSERT INTO PESSOA VALUES (2,LUIS,RUA A, BLOCO 12 APTO 301,VOLTA REDONDA,444) --endereco uma coluna multivalorada (tem varios atributos dentro da propria) -- vetor (varias informaes...) # 1 Forma normal nao possuir atributos que marca repetio.. # nao possui multivalorados. #nao possui vetor. CREATE TABLE PESSOA1F(IDPESSOA INT PRIMARY KEY, NOME VARCHAR(35)); CREATE TABLE ENDERECO1F(IDENDERECO INT PRIMARY KEY, BAIRRO VARCHAR(35), CIDADE VARCHAR(35), ESTADO VARCHAR(35), ID_PESSOA INT,

FOREIGN KEY(ID_PESSOA) REFERENCES PESSOA1F(IDPESSOA) ON DELETE CASCADE); CREATE TABLE TELEFONE1F(IDTELEFONE INT PRIMARY KEY, NUMERO VARCHAR(35), TIPO VARCHAR(35), ID_PESSOA INT, FOREIGN KEY(ID_PESSOA) REFERENCES PESSOA1F(IDPESSOA) ON DELETE CASCADE);

INSERT INTO PESSOA1F VALUES(1,RODOLPHO); INSERT INTO PESSOA1F VALUES(2,TANDERA); INSERT INTO ENDERECOIF VALUES(10,BAIRRO 1,VOLTA REDONDA,RJ,1); INSERT INTO ENDERECOIF VALUES(20,BAIRRO 1,VOLTA REDONDA,RJ,2); INSERT INTO TELEFONE1F VALUES(1000,956454,CEL,1); INSERT INTO TELEFONE1F VALUES(1001,1231654,COM,1); INSERT INTO TELEFONE1F VALUES(1002,456465,CEL,2);

#viso CREATE VIEW VISAO AS SELECT P.NOME, E.BAIRRO, E.CIDADE, T.NUMERO, T.TIPO FROM PESSOA1F AS P INNER JOIN ENDERECO1F E ON P.IDPESSOA = E.ID_PESSOA INNER JOIN TELEFONE1F T ON P.IDPESSOA = T.ID_PESSOA; SELECT * FROM VISAO;

#Inserindo imagem Skull

#No pode executar o select CREATE TABLE GRAVAIMAGEM(ID INT PRIMARY KEY, IMAGEM LONGBLOB); INSERT INTO GRAVAIMAGEM VALUES(2,LOAD_FILE(F:/03042011/CARRO.JPG));

#Exportando a imagem. SELECT IMAGEM INTO DUMPFILE F:/03042011/BACKUPCARRO.JPG FROM GRAVAIMAGEM WHERE ID=1;

SELECT IMAGEM INTO OUTFILE F:/03042011/BACKUP1CARRO.JPG FROM GRAVAIMAGEM WHERE ID=1;

#backup de tabela #usando engine = myisam.. CREATE TABLE ALUNOS(IDALUNOS INT PRIMARY KEY, NOME VARCHAR(35), EMAIL VARCHAR (35) UNIQUE) ENGINE=MYISAM; INSERT INTO ALUNOS VALUES(1,JOO,JOAO@GMAIL.COM); INSERT INTO ALUNOS VALUES(2,CARLOS,CARLOS@GMAIL.COM); INSERT INTO ALUNOS VALUES(3,RODOLPHO,RODOLPHO@GMAIL.COM); SELECT * FROM ALUNOS;

BACKUP TABLE ALUNOS TO F:/03042011;

#Deletando a table DROP TABLE ALUNOS;

#Restaurando tabela RESTORE TABLE ALUNOS FROM F:/03042011;

#2 forma de normalizao # As colunas que eu tenho de uma tabela elas devem ser presas a somente uma chave primaria . #Exemplo Errado CREATE TABLE FORNECEDOR(IDFORNECEDOR INT, FORNECEDOR VARCHAR(35), IDPRODUTOS INT, PRODUTO VARCHAR (35), PRIMARY KEY(IDFORNECEDOR, IDPRODUTOS));

INSERT INTO FORNECEDOR VALUES(1,FORNE1,10,COMPUTADOR); INSERT INTO FORNECEDOR VALUES(2,FORNE2,12,NOTEBOOK); SELECT * FROM FORNECEDOR;

#Exemplo normalizado. CREATE TABLE FORNECEDOR2(IDFORNECEDOR INT PRIMARY KEY, FORNECEDOR VARCHAR(35) NOT NULL); INSERT INTO FORNECEDOR2 VALUES(1,FORN1); INSERT INTO FORNECEDOR2 VALUES(2,FORN2);

CREATE TABLE PRODUTO2(IDPRODUTO INT PRIMARY KEY, PRODUTO VARCHAR(35) NOT NULL, TIPO VARCHAR(20), PRECO FLOAT, ID_FORNECEDOR INT, FOREIGN KEY(ID_FORNECEDOR) REFERENCES FORNECEDOR2(IDFORNECEDOR) ON DELETE CASCADE); INSERT INTO PRODUTO2 VALUES(100,ARROZ,ALIMENTO,5,1), (101,FEIJO,ALIMENTO,10,1), (102,AUCAR,ALIMENTO,3,1); INSERT INTO PRODUTO2 VALUES(103,ARROZ,ALIMENTO,4,2), (104,FEIJO,ALIMENTO,13,2),

(105,AUCAR,ALIMENTO,4,2);

CREATE VIEW TOTAL AS SELECT F.FORNECEDOR, P.PRODUTO, P.PRECO FROM FORNECEDOR2 F INNER JOIN PRODUTO2 P ON F.IDFORNECEDOR = P.ID_FORNECEDOR;

SELECT * FROM TOTAL;

#mostrar o menor valor de item SELECT PRODUTO, MIN(PRECO) FROM TOTAL GROUP BY PRODUTO;

SELECT PRODUTO, PRECO FROM TOTAL WHERE PRECO IN(SELECT MIN(PRECO) FROM TOTAL WHERE PRODUTO = ARROZ);

#subquery Select dentro de select. SELECT FORNECEDOR, PRODUTO, PRECO FROM TOTAL WHERE PRECO IN(SELECT MIN(PRECO) FROM TOTAL WHERE PRODUTO = ARROZ) AND PRODUTO = ARROZ UNION ALL SELECT FORNECEDOR, PRODUTO, PRECO FROM TOTAL WHERE PRECO IN(SELECT MIN(PRECO) FROM TOTAL WHERE PRODUTO = FEIJO) AND PRODUTO = FEIJO UNION ALL SELECT FORNECEDOR, PRODUTO, PRECO FROM TOTAL WHERE PRECO IN(SELECT MIN(PRECO) FROM TOTAL WHERE PRODUTO = AUCAR) AND PRODUTO = AUCAR;

#cursor explicito CREATE TABLE VENDEDOR(IDVENDEDOR INT PRIMARY KEY, VENDEDOR VARCHAR(20), SETOR VARCHAR(3), SUPERVIDOR VARCHAR(20),

VALOR FLOAT, ANO INT); INSERT INTO VENDEDOR VALUES(1,RODOLPHO,INF,TINOCO,10000,1999), (2,RODOLPHO,INF,TINOCO,150000,2000), (3,RODOLPHO,INF,TINOCO,13000,2001); INSERT INTO VENDEDOR VALUES(4,TANDERA,INF,CARLOS,20000,1999), (5,TANDERA,INF,CARLOS,25000,2000), (6,TANDERA,INF,CARLOS,28000,2001); INSERT INTO VENDEDOR VALUES(7,SERGIO,INF,TINOCO,25000,1999), (8,SERGIO,INF,TINOCO,25300,2000), (9, SERGIO,INF,TINOCO,36200,2001);

SELECT * FROM VENDEDOR;

# with rollup cubo. Agrupa por duas colunas e dar o somatorio no final. SELECT VENDEDOR, ANO, SUM(VALOR) FROM VENDEDOR GROUP BY VENDEDOR, ANO WITH ROLLUP;

CREATE DATABASE AULA32; USE AULA32; CREATE TABLE PESSOA(IDPESSOA INT PRIMARY KEY, NOME VARCHAR(35) NOT NULL); CREATE TABLE CLIENTE(IDCLIENTE INT PRIMARY KEY, EMAIL VARCHAR (35), CPF VARCHAR(12), ID_PESSOA INT, FOREIGN KEY(ID_PESSOA) REFERENCES PESSOA(IDPESSOA) ON DELETE SET NULL); INSERT INTO PESSOA VALUES(100,SERGIO); INSERT INTO PESSOA VALUES(200,DARIEL); INSERT INTO CLIENTE VALUES(1000,SERGIO@GMAIL.COM,224466,100); INSERT INTO CLIENTE VALUES(1001,DARIEL@GMAIL.COM,884455,200);

DELETE FROM PESSOA WHERE IDPESSOA = 100;

CREATE TABLE ALUNO(IDALUNO INT PRIMARY KEY AUTO_INCREMENT, NOME VARCHAR(35) NOT NULL, EMAIL VARCHAR(35) UNIQUE, DATAINSC DATE); INSERT INTO ALUNO VALUES(NULL,SERGIO,SERGIO@GMAIL.COM,2006/02/10); INSERT INTO ALUNO VALUES(NULL,SERGIO,SERGIO@GMAIL.COM,2008/04/30); INSERT INTO ALUNO VALUES(NULL,TANDERA,TANDERA@GMAIL.COM,2009/02/15); INSERT INTO ALUNO VALUES(NULL,RODOLPHO,RODOLPHO@GMAIL.COM, 2009/02/15); INSERT INTO ALUNO VALUES(NULL,BRUNA,BRUNA@GMAIL.COM,2008/07/20); INSERT INTO ALUNO VALUES(NULL,THIAGO,THIAGO@GMAIL.COM,2011/10/01); SELECT * FROM ALUNO;

DROP PROCEDURE IF EXISTS CURSOR1; DELIMITER $ CREATE PROCEDURE CURSOR1() BEGIN DECLARE EXISTE INT DEFAULT 0; DECLARE VIDALUNO INT; DECLARE VNOME CHAR(35); DECLARE VEMAIL CHAR(35); DECLARE VDATAINSC DATE; DECLARE CURSO1 CURSOR FOR SELECT IDALUNO, NOME, EMAIL, DATAINSC FROM ALUNO WHERE IDALUNO <4; DECLARE CONTINUE HANDLER FOR NOT FOUND SET EXISTE = 1; OPEN CURSO1; MEULOOP : LOOP FETCH CURSO1 INTO VIDALUNO, VNOME, VEMAIL, VDATAINSC; IF EXISTE = 1 THEN LEAVE MEULOOP; END IF; SELECT VIDALUNO ID, VNOME NOME, VEMAIL EMAIL, VDATAINSC VDATAINSC; END LOOP; CLOSE CURSO1; END; $ DELIMITER ; CALL CURSOR1();

#parte 2 #criar o diretorio data

#Abrir o arquivo my.ini Ir para [mysqld]

# Escrever as linhas #log ao que esta sendo feita no banco LOG= C:/ARQUIVOS DE PROGRAMAS/MYSQL/MYSQL SERVER 5.1/DATA/VISUALIZA.LOG #backup (resgata) LOG-BIN= C:/ARQUIVOS DE PROGRAMAS/MYSQL/MYSQL SERVER 5.1/DATA/domingo_bin

#Salvar o arquivo e restatar o Mysql. #Excutar services.msc

Executar: CMD

CD\ARQUIV~1 CD MYSQL CD MYSQL~1.1

MYSQL U ROOT P

#criar banco de dados domtarde; DROP DATABASE DOMTARDER; CREATE DATABASE DOMTARDER; USE DOMTARDER; CREATE TABLE TESTE(ID INT, NOME VARCHAR(35)); INSERT INTO TESTE VALUES(1,LUIS),(2,CARLOS),(3,FABRICIO);

#depois que derrubo (service.msc) o banco de dados posso ver o arquivo de log(visualizar.lo) com wordpad... # na primeira versao domin_log.00001(eu criei o banco de dados) #na segunda verso depois que eu startar o banco ele ir criar domin_log00002

#Dropar o banco DROP DATABASE DOMTARDER;

#resgatar pelo log. QUIT; C:\ARQUIV~1\MYSQL\MYSQL SERVER 5.1\BIN> MYSQLBINLOG C:\ARQUIV~1\MYSQL\MYSQLS~1.1\DATA\DOMINGO_BIN.000001 | MYSQL H LOCALHOST U ROOT P OU MYSQLBINLOG C:\ARQUIV~1\MYSQL\MYSQLS~1.1\DATA\DOMINGO_BIN.000001 > MYSQL H LOCALHOST U ROOT P

Banco em rede #ip server: 192.168.0.127

MYSQL U ROOT P

#criar novo banco CREATE DATABASE TESTE; USE TESTE; CREATE TABLE PESSOA(IDPESSOA INT PRIMARY KEY AUTO_INCREMENT, NOME VARCHAR(35) NOT NULL, EMAIL VARCHAR(35) UNIQUE); INSERT INTO PESSOA VALUES(NULL,'RODOLPHO','RODOLPHO@GMAIL.COM'); INSERT INTO PESSOA VALUES(NULL,'TINOCO','TINOCO@GMAIL.COM'); INSERT INTO PESSOA VALUES(NULL,'THIAGO','THIAGO@GMAIL.COM');

#dar permisso #aplicar permisso a tudo > GRANT ALL GRANT SELECT, INSERT ON TESTE.PESSOA TO RODOLPHO@192.168.0.165 INDENTIFIED BY ESTAGIO; #aplicar permissao para todo mundo. GRANT SELECT, INSERT ON TESTE.PESSOA TO RODOLPHO@% INDENTIFIED BY ESTAGIO; #atualizar o banco FLUSH PRIVILEGES; #conectar pela estao MYSQL H 192.168.0.127 U RODOLFO P SHOW DATABASES;

#visualizar os usuarios

SELECT HOST FROM USER;

#trabalhando com partio CREATE DATABASE AULA33; USE AULA33; CREATE TABLE CONTATO(ID INT, NOME VARCHAR(35), DATA1 DATE) PARTITION BY RANGE(YEAR(DATA1)) ( PARTITION P1 VALUES LESS THAN(2000), PARTITION P2 VALUES LESS THAN(2005), PARTITION P3 VALUES LESS THAN(2011) );

INSERT INSERT INSERT INSERT INSERT INSERT

INTO INTO INTO INTO INTO INTO

CONTATO CONTATO CONTATO CONTATO CONTATO CONTATO

VALUES(1,RODOLPHO,1981/03/10); VALUES(2,EDUARDO,2003-10-10); VALUES(3,FABRICIO,2010-11-20); VALUES(4,THIAGO,2010-11-02); VALUES(5,TINOCO,1999-09-01); VALUES(6,SERGIO,2004-05-12);

SELECT * FROM CONTATO;

SELECT * FROM CONTATO WHERE DATA1 BETWEEN '1981-01-01' AND '2000-12-31'; SELECT * FROM CONTATO;

#Deletando a particao p1 ALTER TABLE CONTATO DROP PARTITION P1; SELECT * FROM CONTATO;

#trigger gatilho preso a insero CREATE TABLE PESSOA(IDPESSOA INT PRIMARY KEY, NOME VARCHAR(35) NOT NULL, SEXO ENUM(M,F)); CREATE TABLE BACKPESSOA AS SELECT * FROM PESSOA;

DELIMITER $ CREATE TRIGGER GATI1PESSOA BEFORE INSERT ON PESSOA FOR EACH ROW BEGIN INSERT INTO BACKPESSOA VALUES(NEW.IDPESSOA, NEW.NOME, NEW.SEXO); END; $

DELIMITER ;

#Auditoria CREATE TABLE AUDITORIA(ID INT PRIMARY KEY AUTO_INCREMENT, DESCRICAO VARCHAR(255)); DELIMITER $ CREATE TRIGGER GAT2PESSOA BEFORE UPDATE ON PESSOA FOR EACH ROW BEGIN INSERT INTO AUDITORIA VALUES(NULL, CONCAT(altera, USER(),', ',SYSDATE(),' , ANTIGO : ', OLD.NOME, ', ALTERA : ', NEW.NOME, ' ANTIGO SEXO: ',OLD.SEXO, ', ALTERA :', NEW.SEXO)); END; $ DELIMITER ;

DELIMITER $ CREATE TRIGGER GAT3PESSOA BEFORE DELETE ON PESSOA FOR EACH ROW BEGIN INSERT INTO AUDITORIA VALUES(NULL, CONCAT(Deleta, USER(),', ',SYSDATE(),' , DELECAO ANTIGO ID : ', OLD.IDPESSOA, ', ANTIGO NOME : ', OLD.NOME, ' , ANTIGO SEXO: ', OLD.SEXO));

END; $ DELIMITER ;

INSERT INSERT INSERT INSERT INSERT INSERT

INTO INTO INTO INTO INTO INTO

PESSOA PESSOA PESSOA PESSOA PESSOA PESSOA

VALUES(1,TINOCO,F); VALUES(2,VIZINHO,F); VALUES(3,NETCAT,F); VALUES(4,TINOCO,F); VALUES(5,VIZINHO,F); VALUES(6,NETCAT,F);

SELECT * FROM PESSOA;

SELECT * FROM BACKUPESSOA;

UPDATE PESSOA SET SEXO=M WHERE IDPESSOA = 6

DESC AUDITORIA;

SELECT * FROM AUDITORIA;

DELETE FROM PESSOA WHERE IDPESSOA=6;

#index aumentar a velocidade CREATE TABLE PRODUTO(IDPRODUTO INT PRIMARY KEY, PRODUTO VARCHAR(20), PRECOUNITARIO FLOAT); CREATE TABLE ESTOQUE(IDESTOQUE INT PRIMARY KEY, QUANTIDADE INT, LOTE VARCHAR(20), ID_PRODUTO INT, FOREIGN KEY (ID_PRODUTO) REFERENCES PRODUTO(IDPRODUTO));

INSERT INTO PRODUTO VALUES(1,TENIS NIKE, 500); INSERT INTO PRODUTO VALUES(2,TENIS ADIDAS,300);

INSERT INTO ESTOQUE VALUES(100,5,LOTE1,1); INSERT INTO ESTOQUE VALUES(200,20,LOTE5,2);

DROP INDEX INDEXPRODUTO; CREATE INDEX INDEXPRODUTO ON PRODUTO(PRODUTO); CREATE INDEX INDEXESTOQUE ON ESTOQUE(LOTE); EXPLAIN SELECT P.PRODUTO, P.PRECOUNITARIO, E.LOTE FROM PRODUTO P INNER JOIN ESTOQUE E ON P.IDPRODUTO = E.ID_PRODUTO;

CREATE TABLE TESTE2(ID INT, NOME VARCHAR (35));

DELIMITER $ CREATE PROCEDURE INSERETESTE2() BEGIN DECLARE I INT DEFAULT 0; MEULOOP: LOOP SET I := I + 1; IF I>15000 THEN LEAVE MEULOOP; END IF; INSERT INTO TESTE2 VALUES(I, CONCAT(NOME,I)); END LOOP; END; $ DELIMITER ; CALL INSERETESTE2();

Você também pode gostar