MYSQL
Imagens no MySQL
Trabalhando com Imagens no MySQL
Nesta postagem veremos uma forma de se trabalha com o armazenamento de imagens no MySQL. Para isso devemos conhecer um pouco o tipo de dado BLOB.
Tipos de Campo Blob (Binary Large Object)
Os campos de tipo blob são campos criados para armazenar qualquer tipo de informação em formato binário dentro de uma tabela no banco de dados. Os campos BLOBs na verdade são campos do tipo TEXT sendo que o BLOB não são case-sensitive como os campos de tipo TEXT.
Restrições dos campos BLOB
- Não podem ser chaves primárias (excluindo Tinyblob);
- Não é possível usar os comandos GROUP e SORT com campos blob;
- São reconhecidos como um LONGVARCHAR para drivers ODBC.
No MySQL existem 4 definições de campos BLOBs, seguem elas:
- TINYBLOB - armazena 255 caracteres (8 bits) mais 1 de controle;
- BLOB - armazena até 16535 caracteres (16 bits) mais 2 de controle;
- MEDIUMBLOB - armazena até 16777216 caracteres (24 bits) mais 3 de controle;
- LONGBLOB - armazena até 4294967295 caracteres (32 bits) mais 4 de controle.
Criando uma tabela para armazenar imagens
1 2 3 4 5 6 |
CREATE TABLE fotos ( id int(11) NOT NULL auto_increment, foto mediumblob NOT NULL, tipo varchar(20) NOT NULL default '', PRIMARY KEY(id) ) ENGINE=InnoDB; |
Inserindo uma imagem na tabela
1 |
INSERT INTO fotos (id,foto) VALUES (1,LOAD_FILE("c:/tmpfotos/img01.jpg")); |
Note que utilizo o LOAD_FILE para buscar um arquivo no diretório c:/tmpfotos, ao executar o insert é salvo na base o binário da foto.
Selecionando e salvando em um Diretório
1 |
SELECT foto INTO OUTFILE "c:/tmpfotos/img02.jpg" FROM fotos WHERE id = 1; |
Para buscar e salvar a foto em um diretório verifique se o usuário tem permissão para gravar no mesmo, além de verificar senão existe um arquivo com o mesmo nome. Nos próximos posts uma demonstração com o php.
Tipos de Tabelas no Mysql
Tipos de Tabelas no Mysql
No MySQL podemos definir vários tipos de tabelas, sendo que um banco de dados pode conter diferentes tipos de tabelas. Quando criamos uma nova tabela, você pode dizer ao MySQL que tipo de tabela criar. O tipo padrão é o MyISAM.
Abaixo segue um descrição rápida dos tipos de tabelas suportados pelo MySQL:
- MyISAM: MyISAM é o tipo de tabela padrão no MySQL baseada no código ISAM possuindo várias extensões úteis, onde o índice é armazenado em um arquivo com extensão .MYI (MYIndex), e os dados são armazenados em um arquivo com a extensão .MYD (MYData). Você pode verificar/reparar tabelas MyISAM com o utilitário myisamchk.
- Merge: Uma tabela MERGE (também conhecida como tabela MRG_MyISAM) é uma coleção de tabelas MyISAM idênticas. Você só pode fazer SELECT, DELETE, e UPDATE da coleção de tabelas. Se você fizer um DROP na tabela MERGE, você só está apagando a especificação de MERGE.
- HEAP: As tabelas HEAP do MySQL utilizam hashing 100% dinâmico sem áreas em excesso. Não há espaços extras necessários para listas livres. Tabelas HEAP também não têm problemas com deleção + inserção, o que normalmente é comum em tabelas com hash:
- InnoDB: O InnoDB provê o MySQL com um mecanismo de armazenamento seguro com transações (compatível com ACID) com commit, rollback, e recuperação em caso de falhas. InnoDB faz bloqueio a nível de registro e também fornece uma leitura sem bloqueio em SELECT em um estilo consistente com Oracle. Estes recursos aumentam a performance e a concorrência de multi-usuários. InnoDB é o primeiro gerenciador de armazenamento no MySQL que suportam restrições FOREIGN KEY.
- BerkeleyDB ou BDB: Tem favorecido o MySQL com um mecanismo de armazenamento transacional. Tabelas BDB podem ter maior chance de sobrevivência a falhas e também são capazes de realizar operações COMMIT e ROLLBACK em transações.
Consulta Full-Text com MySQL
Consulta FULL-TEXT com MySQL
Uma consulta Full-Text provê ao usuário uma busca de texto com uma maior precisão. Grande parte das aplicações que precisam realizar consultas em um grande conteúdo de texto fazem uso de índices full-text para otimizar as suas buscas.
Para criar um mecanismo de busca eficiente usamos um índice full-text.
Segue um breve exemplo de como funciona:
- Criar a tabela a ser adicionado o índice FULL-TEXT.
1 2 3 4 5 6 7 8 |
CREATE TABLE tb_produtos ( id int NOT NULL AUTO_INCREMENT, nome varchar(100) NOT NULL, descricao text, marca varchar(100), preco float, PRIMARY KEY (id) ) ; |
- Alterar o motor de armazenamento da tabela para MyISAM.
1 |
ALTER TABLE tb_produtos Engine = Myisam; |
- Incluir os índices FULL-TEXT.
1 |
ALTER TABLE tb_produtos ADD FULLTEXT KEY nome (nome,descricao); |
ou
1 |
CREATE FULLTEXT INDEX INDEX_FT_DESCRICAO ON tb_produtos(nome,descricao); |
- Popular a tabela tb_produtos.
1 2 3 4 5 6 7 |
INSERT INTO tb_produtos (id,nome,descricao,marca, preco) VALUES (1, 'HD Externo Samsung', 'HD Externo Samsung 1TB, Preto, 3.0', 'Samsung', 250), (2, 'PenDrive Sony', 'Pendrive Sony, Preto, 16GB', 'Sony', 50), (3, 'Monitor LG', 'Monitor LCD LG, 22 polegadas', 'LG', 285), (4, 'Impressora Epson', 'Impressora Multifuncional Epson, Modelo XZY 1000, LaserJet', 'Epson', 400), (5, 'Pendrive Kingston', 'Pendrive Kingston, Prata, 16GB', 'Kingston', 40), (6, 'Avira Security', 'Anti-virus Avira Security 2013', 'Avira', 120); |
- Consultas utilizando o índice FULL-TEXT.
1 |
SELECT * FROM tb_produtos WHERE MATCH (nome,descricao) AGAINST ('Pendrive 16GB'); |
COMANDOS DDL
COMANDOS DDL (DATA DEFINITION LANGUAGE)
Os comandos de definições de dados são:
- CREATE
- ALTER
- DROP
Como vimos no post anterior os comando de definições de dados são utilizados para criar, alterar ou excluir a estrutura de uma tabela ou banco de dados.
CRIANDO UM BANCO DE DADOS
Sintaxe:
1 |
CREATE DATABASE <NOME DO BANCO>; |
Exemplo:
1 |
CREATE DATABASE BDESCOLA; |
EXCLUÍNDO UM BANCO DE DADOS
Sintaxe:
1 |
DROP DATABASE <NOME DO BANCO>; |
Exemplo:
1 |
DROP DATABASE BDESCOLA; |
Após criar um banco de dados você pode selecionar o mesmo para o uso com o comando a seguir:
1 |
USE <NOME DO BANCO>; |
CRIANDO UMA TABELA
Quando criamos uma tabela no bando de dados precisamos definir os tipos de dados que cada atributo deverá armazenar os mais comuns são: varchar(n), char(n), date/time, float, double, real. Confira o próximo post sobre tipos de dados do mysql.
Sintaxe:
1 2 3 4 5 |
CREATE TABLE <NOME TABELA>( <ATRIBUTO 1> <TIPO DE DADO> <CHAVE>, <ATRIBUTO 2> <TIPO DE DADO>, <ATRIBUTO 3> <TIPO DE DADO>, <ATRIBUTO N> <TIPO DE DADO> ); |
Exemplo:
1 2 3 4 5 6 7 |
CREATE TABLE ALUNO( matricula int primary key auto_increment, nome varchar(150) not null, sexo varchar(15), email varchar(150), nascimento date/time ); |
ALTERANDO UMA TABELA
Podemos alterar, excluir ou incluir uma nova coluna na tabela.
ADIONANDO UMA NOVA COLUNA
Para adicionar utilizaremos o modificador ADD.
Sintaxe:
1 |
ALTER TABLE <NOME DA TABELA> ADD <ATRIBUTO> <TIPO DE DADO>; |
Exemplo:
1 |
ALTER TABLE ALUNO ADD curso varchar(50); |
EXCLUINDO UMA COLUNA
Para excluir utilizaremos o modificador DROP.
Sintaxe:
1 |
ALTER TABLE <NOME DA TABELA> DROP <ATRIBUTO>; |
Exemplo:
1 |
ALTER TABLE ALUNO DROP sexo; |
MODIFICANDO UMA COLUNA
Para modificar utilizaremos o modificador MODIFY.
Sintaxe:
1 |
ALTER TABLE <NOME DA TABELA> MODIFY <ATRIBUTO><TIPO DE DADO>; |
Exemplo:
1 |
ALTER TABLE <NOME DA TABELA> MODIFY email varchar(175) not null; |
Tipos de Comandos do MYSQL
Tipos de Comandos do MYSQL
DML – Linguagem de Manipulação de Dados
-
INSERT é usada para somar uma fila (formalmente uma tupla) a uma tabela existente;
-
UPDATE para mudar os valores de dados em uma fila de tabela existente;
-
DELETE permite remover filas existentes de uma tabela;
-
BEGIN WORK (ou START TRANSACTION, dependendo do dialeto SQL) pode ser usado para marcar o começo de uma transação de banco de dados que pode ser completada ou não;
-
COMMIT envia todos os dados das mudanças permanentemente;
-
ROLLBACK faz com que as mudanças nos dados existentes desde que o último COMMIT ou ROLLBACK sejam descartadas.
DDL – Linguagem de Definição de Dados
-
CREATE cria um objeto (uma Tabela, por exemplo) dentro do base de dados;
-
DROP apaga um objeto do banco de dados.
DCL – Linguagem de Controle de Dados
-
GRANT - autoriza ao usuário executar ou setar operações;
-
REVOKE - remove ou restringe a capacidade de um usuário de executar operações.
INTRODUÇÃO AO MYSQL
INTRODUÇÃO AO MYSQL
O MySQL, um dos mais populares sistemas de gerenciamento de banco de dados SQL Open Source, é desenvolvido, distribuído e tem suporte da MySQL AB. A MySQL AB é uma empresa comercial, fundada pelos desenvolvedores do MySQL, cujos negócios é fornecer serviços relacionados ao sistema de gerenciamento de banco de dados MySQL.
