Você está na página 1de 36

APRENDENDO MYSQL Dedicatria Este trabalho dedicado a todos que como eu buscam, o conhecimento de forma livre e gratuita.

. O que MySQL ? O Mysql um sistema de gerenciamento de banco de dados relacional distribudo de forma livre. O mysql foi desenvolvido por uma empresa de consultoria na Sucia chamada TcX. Eles estavam precisando de um sistema de Banco de Dados que fosse extremamente rpido e flexvel. Ento, eles criaram o Mysql, que vagamente baseado em outro sistema de gerenciamento de banco de dados ( DBMS ) chamado MSQL. O MySQL utiliza a linguagem SQL para manipular os dados armazenados. SQL (System Query Language) e' um padrao estabelecido pelo Instituto de Normatizaao Americana ( ISO, ou IEEL, a ser pesquisado por voc) que estabeleceu um padrao, em 1992, para utilizaao de Banco de Dados. Voc poder executar comandos como ALTER, INSERT, UPDATE, DELETE que sao comandos padronizados. Instalao para Linux recomendado que descompacte o arquivo em /usr/local ; todos os padres apontam para essa localizao. Voc vai precisar de privilegio no nvel root. Para descompactar o arquivo de instalao digite o seguinte comando:

Cd /usr/local [enter] Gunzip <mysql-3.22.23b-pc-linux-gnu-i686.tar.gz | tar xvf --- (supondo seja essa a versao escolhida) In -s mysql-3.22.23b-pc-linux-gnu-i686.tar.gz
Isso apenas um exemplo, o nome do arquivo poder mudar de acordo com a verso. Isso vai descompactar o binrio do MySQL e criar a estrutura de diretrios. A ultima linha cria um link simblico para esse diretrio. Mude para o diretrio e faa uma listagem.

Cd MySQL [enter] ls
voc ter o seguinte resultado;

changelog bin lib mysql-for-duminies install-binary configure manual.html script public data manueal.txt share readme include manual_toc.html sql-bench

Instalao para Windows


A instalao do Windows muito semelhante a uma instalao do Linux. Faa o Download. O executvel do Windows um arquivo de Auto-instalao do Winzip. Descompacte o arquivo zipado numa pasta qualquer, ao descompactar o arquivo o MySQL ser instalado.

Alterando senhas Como a estrutura de diretrios j foi criada. Voc pode comear a configurar e executar o MySQL. Para criar as tabelas de concesso, certifique-se de que voc est no diretrio /usr/local/MySQL e digite o seguinte na linha de comandos;

scripts/mysql_install_db
Este script criar a tabela de concesso para o MySQL. Isso determina quem pode conectar-se ao banco de dados. uma boa idia alterar a senha de root de seu banco de dados Mysql agora. Os privilgios de bancos de dados e os privilgios de sistema de arquivos so duas coisas diferentes. Isso significa que se voc tem um usurio de sistema, chamado Antonio, no quer dizer que voc tenha um usurio de banco de dados. necessrio que voc cadastre-o como usurio de banco de dados. A segurana no MySQL independente da segurana de sistema. Para mudar a senha de root do MySQL digite o seguinte:

Bin/mysqladmin -password novasenha

Iniciando e parando o servidor Como a maioria dos sistema de gerenciamento de bancos de dados ( DBMS ) em sua classe, o MySQL executa como um servio Daemon. Um servio daemon um sistema que executa continuamente em segundo plano. Geralmente ele no tem uma interface com o usurio e no pode ser visto a menos que se utilize o comando de listagem de processo do linux ps, ou visualize o Task Manager do Windows. O MySQL possui uma executvel chamado MySQLD que um sistema de servidor, ele fica esperando algum se conectar a ele e fazer alguma solicitao. Utilizando MySQL no Linux Para utilizar seu banco de dados, o daemon do MySQL precisa estar rodando. Para inicializa-lo digite o seguinte;

cd MySQL [enter] bin\safe_mysqld &


o comando safe_mysqld inicia o servidor. O "e" comercial, fora o sistema a executar em segundo plano. Para testar se os processos esto rodando digite o seguinte:

cd MySQL [enter] bin/mysqladmin -p ping


O resultado ser:

Enter password: digiteasenha [enter] Mysqld is alive


O argumento ping do comando citado a maneira mais prtica de se verificar se o processo MySQL est executando. Outra tcnica realmente verificar os processo de sistemas. Para fazer isso, digite o seguinte:

ps -aux |grep MySQL


Para paralisar a execuo do servidor utilize o seguinte comando:

cd MySQL [enter] bin/mysqladmin -p shutdown


Outra maneira de parar o servidor usar o comando kill, porm um tanto arriscada, visto que isso poder causar danos ao banco de dados. Para fazer com que o sistema do servidor seja iniciado automaticamente quando o computador for ligado edite o arquivo inet.d que est no diretrio /etc/rc.d inclua a linha :

Mysqladmin start

Utilizando MySQL com Windows Assim como no linux, o servidor do MySQL para Windows tambm executa todas os processos em segundo plano. Para inicializar o servidor, clique duas vezes no arquivo mysql.exe no diretrio \mysql\bin. Para o servidor use o comando, mysqladmin shutdown no prompt do DOS Vale salientar que o processo de execuo do MySQL no Windows causa vazamento de memria podendo dentro de algum tempo causar travamento na mquina, isso pode ser resolvido reinicializando a mquina a cada duas semanas. Segundo os desenvolvedores esse problema ser corrigido na prxima verso. Utilizando a linha de comandos Para iniciar interface de linha de comando no linux ou no Windows, certifique-se de que o sistema esteja rodando. No Windows voc deve utilizar o prompt do DOS.

Cd MySQL
Ao entrar no diretrio MySQL digite o comando abaixo

Bin\mysql -p
Resultado :

Welcome to the MySQL monitor. Commands and with; or \g. Yuor MySQL connection id is 3 to server version : 3.22.23 Type help for help.
Aps a messagem acima exibido o prompt do MySQL: C:\mysql> Isso significa que voc pode comear a interagir com o sistema, criar e manipula seus bancos de dados. Para comear voc vai precisar conhecer um pouco de SQL. Finalize todos comandos como ponto e virgula. Isso ir informar ao sistema que o comando pode ser executado. veja alguns exemplos de comandos: show databases; exibe todod os banco de dados existentes no servidor. create database nomebancodedados; Cria um novo banco de dados com o nome nomebancodedados use nomebancodedados abre o banco de dados para que voc possa manipula-lo. Create table Ex: Create table teste(Codigo int auto_increment, nome varchar(55)); Isso ir criar a tabela teste com duas colunas codigo e nome, sendo codigo do tipo inteiro e nome do tipo alfa-numerico. Visualizando a lista de tabelas e sua strutura O camando show tables permite visulizarmos todas as tabelas de um banco de dados. Ex: show tables from nomedobancodedados; Esse mesmo comando pode ser utilizado para visualizarmos a estrutura das tabelas.

Ex: show column from nomedatabela;

Obs: esse comando ser executado no banco de dados que est sendo usado no momento. O MySQL possui um banco de dados embutido que armazena todas as informaes sobre os arquivos de banco dados criados em seu servidor, bem como o sistema de permisses e cadastro de usurios. O MySQL cria um diretrio com o mesmo nome do BD dentro de diretrio \mysql\data onde armazena todas as informaes dos bancos de dados. Projetando um bano de dados O projeto de um banco de dados mais complexo que pesamos, para se iniciar um projeto necessrio se ter uma idia geral do resultado que se deseja obter. O BD deve ser projetado de forme que facilite a recuperao de informaes. preciso que se dedique um bom tempo imaginando e rabiscando como o banco de dados deve funcionar, de preferncia montar um organograma da tabelas e seus relacionamentos bem como sua estrutura. Isso poder evitar a necessidade de uma reestruturao prematura do seu projeto em fase de desenvolvimento. Dica: Siga os seguinte Passo para projetar um BD 1. Defina a Estrutura que ir necessitar em seu BD incluindo tabelas suas estruturas e relacionamento. 2. Defina o objetivo do projeto 3. Estabeleas as regras do a serem obedecidas para a manipulao das informaes. 4. Faa um esboo do projeto 5. Faa uma reviso de todo o projeto 6. Crie o BD Definindo o objetivo do projeto e sua estrutura Procure obter informaes com os possveis usurio do seu projeto isso poder ajuda-lo. Procure saber quais informaes sero necessrias para armazenamento e como isso ocorrer, cheque a necessidade da incluso de campo de identificao para futuras pesquisas ou filtragem de informaes.

Procure estabelecer as regras de funcionamento do sistema, por exemplo imagine que voc est projetando um sistema de controle de vendas, para cada venda por exemplo tem que haver uma remessa como tambm necessrio verificar se o produto possui estoque e assim por diante.

Estabelecendo relacionamento Para se estabelecer relacionamento entre tabelas, precisamos primeiramente definir se ir existir um relacionamento e que tipo de relacionamento dever ser usado. Ao estabelecer um relacionamento, certifique-se de que os campos relacionados compartilham do mesmo tipo de dado, caso contrario haver problemas. Tipo de relacionamento Um-para-um No relacionamento Um Para Um como o proprio nome j indica, temos a seguinte situao: tabela A e tabela B, para cada registro contido na tabela A deve existir um na tabela B Relacionamentos Um-para-Muitos O relacionamento Um-para-Muitos dever ser utilizado quando a tabela A contiver uma s ocorrncia do registro e a tabela B houver vario registros correspondentes.

Relacionamento Muitos-para-Muitos utilizado quando a tabela A tem muitos registro correspondentes na tabela B e esta possui tambm muitos registro na tabela A

Criando seu primeiro banco de dados Comando CREATE DATABASE, permite crie todo o layout de um banco de dados. Para executar a criao de um banco de dado, certifique -se de que o MySQL est rodando. Na linha de comando digite o seguinte:

Create database Teste;


Isso ir criar um banco de dados chamado Teste.

Obs: voc poder digitar sem se preocupar com letras maiscula ou minscula, pois o MySQL no distino entre maiscula e minscula. Criando Tabelas Voc acaba de criar o layout de um banco de dados chado Teste, mais ele ainda est vazio, necessrio que se crie as tabelas para possamos armazenar as informaes. Para criar tabelas no MySQL voc ativar o banco de dados . use o seguinte comando:

use teste
ativa o banco de dados Teste. Create table clientes(id_cliente int not null primary key auto_increment, nome varchar(55), endereco varchar(45)); Isso criar uma tabela com tres colunas id_cliente, nome, endereo. Explicando a sintax.

Id_clinte int not null primary key auto_increment - Determina acriao de um campo de identificao do cliente(cdigo do cliente) do tipo inteiro, e que o sistema ir incrementando automaticamente, ou seja o sistema ir inserindo um nmero seqencial forma automtica. nome varchar(55) - cria campo do alfanumrico, ou seja posso utilizar tanto nmeros quanto letras.
Obs: se usarmos char em lugar de varchar criaremos um campo do tipo texto. Alterando a estrutura de uma tabela Muitas vezes temos a necessidade de acrescentar colunas ou modificar o tipo de dados de uma determinada coluna. Vamos considerar que voc est com o banco de dados Teste ativo. Digite o seguinte comando:

alter table clientes(add column cidade varchar(25));


Estamos acrescentando a coluna cidade na tabela clientes. Adicionando colunas Para acrescentar colunas use o seguinte comando:

Alter table aprender add column teste varchar(30);


No exemplo acima adicionamos uma coluna de nome teste do tipo varchar na tabela aprender. Removendo colunas

Drop colunm teste from table aprender;


Neste exemplo exclumos a coluna teste da tabela aprender. Criando ndices

O ndice um arquivo criado pelo sistema de banco de dados ordenando os dados de um determinado campo, possibilitando maior desempenho na localizao das informaes. O processo de criao de ndice, ocorre de forma automtica quando criamos uma chave primaria. Mas, caso deseje criar ndices diverso em seu banco de dados use o comando:

create index nomeindice on nometabela(nomecoluna)


Para excluir o indice use o comando

Drop index nomeindice on nometabela;


Ou

alter table nometabela drop index nomeindice;


obs: um ndice de um campo numrico mais eficiente que o ndice de um campo texto. Removendo tabelas de um banco de dados Para remover tabelas de um banco de dados usando o comando DROP, necessrio que se esteja utilizando o banco que possua a tabela a ser excluda.

use Teste
Isso ativar o banco de dados Teste.

drop table clientes;


Isso apagar a tabela clientes do banco que est ativo no momento, neste caso o BD Teste. Cadastrando usurios e Host(Nome da Maquina) para o banco de dados Voc tem um banco de dados chamado Teste com a tabela clientes, agora precisamos informar quem deve acessar o banco de dados. O RDBMS MySQL possui um banco de dados interno chamado MySQL, que armazena todas as permisses para todos os bancos de dados do MySQL. Esse banco de dados possui as seguintes estrura:

user - esta tabela armazena todo os nomes, senhas, hosts e privilgios dos usurios. db - esta tabela contm informaes sobre os bancos de dados existentes no servidor. host - esta tabela contem os nome de hosts existentes

Para que um usurio possa usar seu banco de dados, o nome da mquina (host) de onde ele vai acessar o banco de dados deve existir na tabela host . E o usurio deve ser cadastrado na tabela user e o banco de dados dever constar na tabela db . Para dar permisses de acesso outros usurios, apartir da mquina dele. Siga as etapas: 1. com o MySQL rodando v ao diretrio MySQL. 2. ative o monitor do MySQL

bin/MySQL -p

Para a utilizao deste comando no Window basta inverter a barra. 3. Ative o banco de dados MySQL .

use MySQL
Agora voc ir utilizar comando INSERT do SQL para incluir nome do host(mquina da rede) / banco de dados. Digite o seguinte:

Insert into MySQL values('nomedamquina','nomebanco', 'y', 'y','y','y','y','y','y','y','y','y');


Use o mesmo comando at registrar todas as mquinas que podero acessar o seu banco de dados. Lembre-se de finalizar com ponto virgula. Para incluir usurios use o comando.

Insert into user values('nomedamquina','nomeusurio',PASSWORD('123'),'y', 'y','y','y','y','y','y','y','y','y','y','y','y','y');


Repita o mesmo comando at cadastrar todas a mquinas e usurios. A funo password define a senha de acesso para o usurio, pode ser deixada em branco se assim desejar. Obs: isso dar privilgio total ao usurio Agora que j cadastramos as mquinas e usurio podemos determinar a que banco de dados cada usurio ter acesso. Use o amando:

Insert into db values('nome da mquina','nomedobanco','nomeusurio','y','y','y', 'y','y','y','y,'y','y','y');


Repita o mesmo processo para dar permisso a todos os usurio. Obs: se for utilizar a mquina local use localhost em nome da mquina.

Apagando banco de dados O comando DROP permite apagar um banco de dados ou uma tabela existente. Sintaxe:

drop database Teste;


Isso apagar o banco de dados Teste. Apagando Tabelas O comando drop tambm pode ser usado para excluir tabelas. Uso da seguinte forma: Ative o banco de dados

use nomedobanco drop table nomedatabela;


Normatizao de dados A normatizao de dados um conjunto de regras que ajuda a evitar problemas de logica na execuo do sistema. preciso definir bem o numero de tabelas necessrias ao projeto, em seguida devemos avaliar a como ser feita a manipulao das informaes. Todo os campo da tabela devero ser avaliado. Exempo: Imagine um campo de nome valor, com certeza voc ir armazenar nele o nmero em formato de moda, da a necessidade de definir o tipo de dados do campo como moeda. Todo e qualquer campo que far parte de um calculo deve ser avaliado com ateno para que no venha a provocar um erro de projeto mais adiante. Tipo de dados do MySQL Tipo de dados a definio dos dados que uma coluna armazenar. Cada tabela poder armazenar vrios tipos de dados. Essa definio determinar que dado cada coluna aceitar. Ex: Uma coluna definida como tipo inteiro s permitir a entrada de nmero Uma coluna definida como char(10) permitir a entrada de at 10 caracteres alfanumricos. TABELA DE TIPO DE DADOS TIPO DE DADO TINYINT SMALLINT MEDUIMINT INT BIGNIT FOLAT(M,D) DOUBLE(M,D) DECIMAL(M,D) ESPAAO DE MEMRIA 1 BYTE 2 BYTES 3 BYTES 4 BYTES 8 BYTES 4 BYTES 8 BYTES O VALOR DE BYTES M + 2

LIMITES DE ARMAZENAMENTO DE CADA TIPO DE DADO TIPO DE DADO TINYINT SMALLINT MEDUIMINT INTERVALO DE VALOR -128 a 127 -32768 a 32767 -8388608 a 8388607

INT BIGNIT FOLAT(M,D) DOUBLE(M,D) DECIMAL(M,D)

-2147483648 a 2147483647 -9223372036854775808 a 9223372036854775807 Vaiavel Variavel Variavel

O MySQL oferece recurso de limitao de nmero de casas decimais caso seja necessrio. Ex: imagine um campo do tipo FLOAT declarado da seguinte forma: FLOAT(4,2), neste caso o nmero 56,825, seria armazenada como 56,82. O MySQL arredonda o decimais para o nmero de digitos direita do ponto de frao decimal. A ser exibido em uma consulta o nmero ser exibido como 56,825. Campo AUTO_INCREMENT A expresso auto_increment permite definir campo de auto numerao j conhecidos em outro banco de dados como o Acess. Um campo auto-increment funciona como um contador que adicionar 1 ao valor mximo atual aramazenado na coluna. Obs: o auto-increment no reutiliza o ultimo valor, se este for apagado, ou seja se o ultimo valor era 3 e foi apagado, a linha a ser includa receber o valor 4. Ex: Create table teste(id_teste int not null auto_increment, Nome varchar(45)); ZEROFILL O modificador de coluna ZEROFILL utilizado para exibir zeros esquerda de um nmero com base na largura de exibio, todo os tipos numericos tem uma largura de exibio opcional. Por exemplo se voc declarar um int(8) zerofill e o valor de entrada for 23, ser exibido da seguinte forma: 00000023. Tipo de string Nome do Tipo CHAR(X) VARCHAR(X) TINYTEXT TINYBLOB TEXT BLOB MEDIUMTEXT MEDIUMBLOB Tamanho Mximo 255 BYTES 255 BYTES 255 BYTES 255 BYTES 65.535 BYTES 65.535 BYTES 1,6MB 1,6MB

LOGTEXT LONGBLOB

4.2GB 4.2GB

CHAR E VARCHAR Esse dois tipo de so os mais utilizados. A diferena entre char e varchar que o tipo char posui tamanho de armazenamento fixo. Por exemplo se voc declarar um campo char(5), mesmo que voc armazene apenas um caractere no campo, ele ocupar 5 bytes em disco, pois o MySQL preenche os demais espao para ajustar os dados ao tamanho declarado. O tipo varchar faz o inverso, caso voc tenha declaro um campo com tamanho 20 e armazenar 3 caracteres nele ele ocupar apenas 4 bytes. ( o comprimento mais 1) A vantagem de se utilizar o tipo char esse tipo de dados processado mais rapidamente. E a desvantagem o espao desperdiado. O tipos char e varchar no podem ser utilizados na mesma tabela, quando voc utiliza os dois tipo na mesma tabela o MySQL converte para varchar .

Text e blob
Esses tipos de dados permitem o armazenamento de grande quantidade de dados. Voc utilizar esses tipos quando quiser armazenar imagens, sons ou grande quantidade de texto, como pginas da Web ou documentos. A vantagem de se utilizar esse tipo de dados a grande capacidade de armazenamento, a desvantagem o espao ocupado e a lentido de processamento. Tipos variados

ENUM
O tipo enum uma lista enumerada, ou seja voc s poder armazenar um valor da lista. Ex: CREATE TABLE TESTE(RETURN ENUM('Y','N')DEFAULT 'N', SIZE ENUM('A','B','C','D','E'), COR ENUM ('VERDE', 'AMARELO','AZUL','BRANCO')) O limite de itens na lista de 65.535

SET
O tipo set semelhante ao tipo enum. Assim como o tipo enum , o tipo set armazena uma lista de valores. A diferena no ripo set voc pode escolher mais de uma opo. Possui o limite de 64 itens apenas. Ex: CREATE TABLE TESTE( DIVERSAO SET

('INTERNET','TELEVISAO','FUTEBOL'))

Apesar de exibir o texto quando voc preenche um campo deste tipo, o MySQL armazena o valor numrico de cada opo, fazendo com que os dados sejam processados mais rapidamente. Para recuperar as informaes filtrando-as por este tipo de dados, faa referencia a o valor numrico. Ex: SELECT * FROM TESTE WHERE DIVERSAO =1 Modificadores de colunas So palavras chaves que modificam a forma de funcionamento de uma coluna, como por exemplo auto_increment , zerofill e unsigned . Veja a tabela abaixo: Nome de modificador AUTO_INCREMENT BINARY DEFAULT NOT NULL NULL PRIMARY KEY UNIQUE UNSIGNED ZEROFILL Tipos aplicaveis Todos os tipo INT CHAR, VARCHAR Todos, exceto BLOB, TEXT Todos os tipos Todos os tipos Todos os tipos Todos os tipos Tipos numricos Tipos numricos

O modificador binary faz com que o MySQL distinga maiscula e minscula. Quando se classifica essa coluna essa distino e considerada. O modificador defautl permite especificar um valor padro de entrada caso a coluna no seja preenchida. Ex: CREATE TABLE TESTE(ESTADO CHAR(2) NOT NULL DEFAULT "CE") O modificador unique impedi que os dados dentro da coluna se repitam, tornando os valores unicos. Importando e exportando dados Quando nos vemos na necessidade de transferir informaes de nosso banco de dados para outro ou para uma planilha, surge a mesma pergunta : Por onde eu comeo? H varias maneira de importar dados de banco de dados para outro, a maneira mais comum usar o bulk copy protocol (BCP). Esse protocolo utilizado por varios bancos de dados do mercado, como SQL SERVER, SYBASE E ADAPTIVE SERVER Outra maneira de Importar/Exportar dados por meio da converso de arquivos. Os arquivos podem ser convertido em um formato que outro banco de dados possa ler. Um exemplo a converso de arquivos de dados em arquivos texto delimitado por virgula.

H uma nova maneira de tranferir dados. converte-los em formato XML - Extensible Marckup Language. uma linguangem semelhante ao HTML, porm mais dinamica. Ela permite ao programador definir suas prprias TAG'S dando-o maior liberdade para desenvolver. Ela oferece um maneira mais rpida e confivel de transferir dados via rede. O MySQL possui uma ferramenta chamada MySQL import que apresenta-se um pouco grosseira, porm muito eficaz. Voc ir encontra-la no diretrio myslq/bin. um utilitrio de linha de comando, e funciona da seguinte forma:

Bin/MySQL import nomedobanco nomearquivo.txt


Esse comando importar o arquivo de texto especificado para a tabela que deve ser especificada no prprio nome do arquivo. O MySQL entende que o nome do arquivo at o primeiro ponto representa o nome da tabela.

Bin/MySQL import nomedobanco nome.arquivo.txt


Neste caso o arquivo seria importado para a tabela nome pois observe o primeiro ponto ocorre aps a palavra nome. Algo que deve ser levado em considerao o tipo de dado contido no arquivo, eles dever corresponder a tipo de dado do campo que ir recebe-los. Opes MySQL import Opo -d ou -delete -f ou -force -i ou -ignore -L ou local -l ou -lock -table -r ou -replace -fields-enclosedby="," -fields-escaped-by=* Ao Exclui os dados existente antes de importar novos dados Fora a importao mesmo que ocorra erro Faz com que os dados de mesmo numero sejam ignorados quando o campo de destino do tipo nico. Fora o MySQL usar um arquivo em sua mquina local Bloqueia as tabelas antes dos dados serem inseridos Substitui o campo na tabela que compartilhado mesmo valor nico. Permite especificar o caractere que delimita os dados. Essa opo informa que caractere deve ser utilizado para substituir caracteres especiais como / \n etc.

[txt]-lines-terminated- Esta opo especifica o caractere que determina o final da by="." linha de dados. Neste caso o ponto. Importando arquivo delimitados por virgula Para importar arquivos terminados por virgula, use o seguinte: Como o MySQL rodando digite o seguinte na linha de comando:

Bin/MySQL import -prl -fields-enclosed-by=" -fields-terminated-by=, nomedobancodados nomearquivo.txt

Lembrando que o nome do arquivo deve ser igual a nome da tabela para onde ele ser importado, conforme j foi explicado em matrias anteriores. Usando LOAD DATA INFILE para importar arquivos Uma outra opo de importao que o MySQL oferece o metodo LOAD DATA FILE, que possui funcionamento parecido com o MySQL import. Voc poder executa-lo na linha de comando.

Load data infile "c:\pasta\arquivo.txt" Into table order


Isso importar o arquivo citado para o tabela order. Caso queira importar um arquivo via rede, voc vai precisar utilizar a opo LOCAL INFILE, da seguinte forma:

Load data local infile "\\nomemaquina\pasta\nomoarquivo.txt" Into table order


Obs: o caminho citado acima considera que sua rede seja Windows, para uma rede linux voc ter que fazer correes no caminho do arquivo ok.

Opo do LOAD DATA INFILE Para se determinar o separador de um arquivo usando LOAD DATA FILE, necessrio utilizarmos as seguintes palavras chave. TERMINATED BY Utilizada para informar o caractere separador do arquivos, vamos supor que voc precise importar um arquivo que possui a virgula como separador de campo. Neste caso seria necessrio usar a seguinte sintaxe:

Load data infile "/home/diretrio/arquivo.txt" replace Into table order Fields Terminated by ', ' Enclosed by ' " ' ;
ENCLOSED BY Determinar os caracteres a serem includos no caso acima determinamos que os dados de cada campo estavam entre aspas. ESCAPED BY Informa o caractere de escape.

Informando as colunas que iro receber os dados O LOAD DATA INFILE possui um excelente recurso, que permite nomear colunas em que iro ser armazenados os dados. Digamos que voc tenha uma tabela com 10 colunas, mas s ir utilizar a 1 , 4 e 6, voc importar o arquivo sem problemas usando a seguinte sintaxe:

Load data infile "/home/diretrio/arquivo.txt" Into table order;


(coluna1, coluna4, coluna6); Digite o nome das colunas exatamente como esto declaradas na tabela. Importando dados do Microsoft Access H varias maneiras de se importar dados do Access para o MySQL ou vice-versa. Uma delas utilizar uma conexo DNS ( ODBC), a conexo ODBC permite acessar base de dados diversas. No nosso caso precisaremos acessa o MySQL, portanto vamos precisar instalar o My ODBC, que poder ser encontrado em www.mysql.com.br. Com o MyODB instalado devemos configurar uma conexo, isso ser explicado mais adiante. Ante de importar dados do Access ou de qualquer outro banco de dados observe o formato de datas, pois o MySQL trabalha com as datas no formato aaaa-mm-dd (ano, ms, dia), ser necessrio converte-las para esse formato de forma a evitar problemas com a importao. O Access possui um utilitrio de salvamente de dados que permite determinar a virgula como separador de campo criando um arquivo do tipo texto, o que facilita um importao dos dados para o MySQL utilizando os metodos de importao j explicados.

Veja um exemplo:

1. dado Access

abra o seu banco de

2- clique com o boto direito do mouse sobre o nome da tabela que deseja exportar em forma de texto, e acione a opo Salvar como(Salve as)/Exportar(export)...

informe o local de gravao e o tipo de arquivo que deve ser criado.

Ao clicar no boto OK ser exibida uma janela com duas opes marque a primeira opo e clique em avanar.

Determine que deseja delimitar os campos por virgula, isso ir criar um arquivo fcil de ser importado para o MySQL, utilizando umas das ferramentas j apresentadas. Exportando dados Usando SELECT INTO OUTFILE

O utilitrio SELECT INTO OUTFILE, permite exportar os dados para um arquivo de texto. Com relaes as opes este utilitrio compartilha as mesmas opes do LOAD DATA INFILE. Para utliza-lo certifique-se de que o MySQL esteja rodando. Na linha de comando digite:

Select * into outfile 'diretrio/nomearquivo.txt' Fields Terminated by = ',' From teste Where campo >='valor';
Isso ir criar um arquivo com base na tabela teste de acordo com o critrio informado.

Usando MYSQL DUMP Atravs da ferramenta mysql dump possvel exportar um banco de dados inteiro para um arquivo de texto. Esse arquivo contem todos os comando SQL necessrios para recriar seu banco de dados. Esse utilitrio usa a engenharia reversa, criando a seqncia de comandos SQL capazes de recriar a estrutura do banco de dados, convetida em DDL ( instrues CREATE). Os

dados so organizados dentro de instrues INSERT, o que permite a restaurao dos mesmo nas tabelas. Para exportar ou fazer backup do seu banco de dados, use o seguinte comando:

bin/mysql dump -p nomebanco > nomebanco_dump_arquivo.txt


obs: esta sintaxe usada para a verso linux, para a verso windows basta inverter a barra Isso ir copiar o banco inteiro, caso deseje copiar apenas uma tabela do banco use o comando:

bin/mysql dump -p nomebanco nometabela > nomebanco_nometabela.txt


Surge aquele perguntinha. Mais se eu precisar exportar apenas determinados registros, como fao? Para exportar apenas alguns registro basta que voc incluar uma clausula where dentro do comando o que ficaria assim:

bin/mysql dump - p -where="0 campo=valor" nomebanco nometabela > arquivo.txt

veja ajgumas opes do mysql dump -add-drop-table Isso far uma pesquisa se j existe uma tabela com o mesmo nome daquela que esta sendo importada caso exista ela ser excluida assegurando a importao sem erros Esssa opo bloqueia a tabela impedindo que se faa alteraes enquanto os dados so importados Isso permite que as colunas seja nomeadas, facilitando a importao para outros bancos de dados Ativa todas as opes que iro acelerar o processo de dump(exportao). Isso far com que os dados sejam gravados num arquivo e as instrues em outro. O arquivo DDL chama-se Table_name.sql e o arquivo de dados chama-se Table_name.txt, o argumento de caminho o diretrio no qual voc deseja armazenar os arquivos. -w ou -where utilizada para filtrar os dados a serem exportados

-add locks -c ou -complete_insert -opt -t ou -tab =caminho

Criando relatrios

Os recrusos de exportao de dados tambm poder ser utilizado para gerar relatrios. Veja um exemplo Vamor criar um arquivo de texto chamado meurelatorio.rpt o diretorio mysql. Na linha de comando do mysql digite:

use nomedobanco insert into nometabela(coluna1, coluna2, coluna3) values(1, "jose", "souza"); insert into nometabela(coluna1, coluna2, coluna3) values(2, "joao", "souza"); insert into nometabela(coluna1, coluna2, coluna3) values(3, "maria", "souza"); select coluna1 into outfile '/diretorio/meurelatorio.rpt' from nometabela where coluna1>1;
Manipulando dados via SQL

O SQL ( Structured Query Linguage) foi desenvolvido pela IBM nos anos 70. Anos depois foi adotada como linguagem padro de acesso a dados. A linguagem de divide em duas partes: Linguagem de criao de objetos do banco de dados ( DCL) Linguagem de manipulao de dados (DML) Vejamos agora alguns dos comando mais utilizados Select Comando que indica inicio de uma consulta de seleo. Sintaxe:

select nomedacoluna from nometabela where condio;


Insert Comando utilizado para inserir dados nas tabela.

Sintaxe:

insert into nometabela values(valordacoluna1,valordacoluna2, valordacoluna2) from nome tabela;


Update Comando utilizado para atualizar dados nas tabelas. Sintaxe:

update nometabela set nomecoluna = valor where coluna1=1


Delete Comando usado para excluir registros.

delete from nometabela where coluna1=1


Where Clausula utilizada para filtrar informaes em todas as consultas, seja ela de seleo de insero ou de excluso. Group by Clausula utilizada para agrupar informaes em ordem crescente ou decrescente. No exemplo abaixo classificar em ordem crescente, para classificar em ordem decrescente basta incluir a expresso DESC no final da linha. Sintaxe:

select campo1,campo2 from nometabela group by campo1


Limit A clausula limit permite limitar o numero de linha que dever ser retornado. Ex:

select coluna1,coluna2 from nometabela limit 10


Union Permite juntar duas tabelas ou parte delas, porem necessrio que as duas tabela possuam campos iguais. Sintaxe:

select coluna1, coluna2 from nometabela Union

select coluna1, coluna2 from nometabela


As Permite definir alias (Apelido ou legenda) para os campos. Os alias sero exibidos em lugar do nome original dos campo. Este recurso s tem efeito visual, ou seja o nome do campo permanece o mesmo.

select nomeoriginalcampo as nomevirtual from nometabela


Inner join Retorna as linha correspondentes entre duas tabela, ou seja ela avalia se existe um campo com dados iguais nas duas tabelas, retornando as linha que atendem a esse critrio. Sintaxe:

select campo1.tabela1, campo1.tabela2 from tabela1,tabela2 inner join tabela1 on tabela1.campo1=tabela2.campo1


Left join Retorna todas as linhas correspondentes na tabela esquerda. Ou seja se voc tem duas tabelas a tabela A e B, se voc utilizar o left join para fazer a juno das duas, seria retornadas todas as linha da tabela B que tivesse valor correspondente na tabela A. Imagine um sistema de venda, teramos a tabela cliente e a tabela de vendas, precisaramos relacionar todas as vendas de um determinado cliente, teramos que usar esta opo para obter o resultado desejado. Ex:

select campo1.tabela1, campo1.tabela2 from tabela1,tabela2 left join tabela1 on tabela1.campo1=tabela2.campo1


Funes Agregadas As funes agregadas so utilizadas para realizar operaes matemticas nas colunas das tabelas. Ex: count( ), count(distinct), max( ) , min ( ) , avg( ) , Sum( ) e STD ( ). Count( ) Conta nmero de ocorrencia de valores no nulos dentro de um campo. Sintaxe:

Select count(nomecampo) from nometabela where nomecampo=2

Retorna o numero de ocorrncia do valor 2 no campo informado Para verificar o total de registro de uma tabela use:

Select count(*) from nometabela


Count(distinct) Permite contar ocorrncias no nulas ignorando as repetio, mesmo que o dado se repetir 3 vezes dentro do campo, as repeties no entraro na contagem. Sintaxe:

select count(distinct nomecampo,) From nome tabela


Max( ) Retorna o maior valor dentro da coluna. Sintaxe:

select max(nomecampo) from nometabela


Min( ) Retorna o menor valor dentro da coluna. Sintaxe:

select min(nomecampo) from nometabela

Avg( ) Retorna a media dos valores da coluna. Sintaxe:

select avg(nomecampo) from nometabela


Sum( ) Retorna a soma dos valores da coluna. Sintaxe:

select sum(nomecampo) from nometabela


Std( )

Retorna o desvio padro dos valores de uma coluna. O desvio padro se refere ao nvel de oscilao dos valores, muito utilizado em clculos cientficos Sintaxe:

select std(nomecampo) from nometabela


Exerccio: Use a sua imaginao e monte neste espao, instrues SQL para fazer calculos como soma subtrao diviso e multipliao.

Funes lgicas e condicionais

A linguagem SQL permite a realizao de teste condicionais em expresses. As funes IF ( ), IFNULL( ) e CASE. If Funo lgica utilizada para comparar dois valores. Permite apenas uma comparao. Sintaxe: If (valorasercomparado, valorseverdadeiro,valorsefalso)

select if(campo1>campo2,"sim", "no") from nometabela


Neste exemplo a funo lgica IF testar se o valor do campo1 maior que o do valor do campo2, caso seja verdadeiro escrever SIM caso contrario escrever NO. Case Funo lgica utilizada para efetuar mais de uma comparao. Sintaxe: Select case 1 when campo1="y" then 1 when campo2="y" then 2 else "no" Neste exemplo temos as seguintes comapraes: Caso o valor do campo1 seja igual a "y" retornar 1 Caso o valor do campo2 seja igual a "y" retornar 2

Caso contrario escrever "no" Ifnull O funao ifnull verifica se o campo possui valor nulo. E retonar o primeiro argumento se o campo no for nulo, e retornar o segundo se no for nulo. Sintaxe: select ifnull((campo1/campo2),0) neste exemplo o resultado retornar o resto da diviso se for verdadeiro, ou seja se nenhum dos campos forem nulos.

Operadores lgico And , Or e NOT Esse conjunto de operadores lgicos tem funcionamento idntico a que ns j utilizamos em outros banco de dados.

And = e Or = ou Not = no Select 9 and 10 Retornaria: 9, 10 Select 9 or null Retornaria: 9 Select not(1+1) Retorna: 0 Select not(1-1) Retorna: 1
Funes de String e de Caracteres As funes de String permitem a manipulao de texto antes de retornarem ao cliente. Isso pode ser til para se poupar tempo. Sitaremos aqui as mais utlizadas. Ltrim Remove os espaos a esquerda da string

Sintaxe:

Select ltrim(" Fim")


Retorna: "Fim" Rtrim Remove os espao a direita da string Sintaxe:

Select rtrim("Fim ")


Retorna: "Fim" Trim Remove os espao tanto a direita quanto a esquerda Sintaxe:

select trim(" Fim ")


Retornar: "Fim" Substring( ) A funo substring( ) permite capturarmos parte de uma string, necessrio informar dois argumentos; o primeiro a expresso ou string de onde vamos extrair caracteres e o segundo a posio inicial. Sintaxe:

select substring("testeSQL",5)
Retornar: "SQL" Locate() Permite localizar uma string dentro de outra string, esta funo exige tres argumentos. O primeiro representa a expresso que voc deseja localizar, o segundo representa a string que pode conter a string a ser procurado e o terceiro representa a posio de onde deseja iniciar a procura. Sintaxe:

Select locate( "bonito", "fui at a cidade de bonito", 1)


Retornar: "bonito" Replace

A funo REPLACE ( ) permite a substituio de caracteres contido dentro de uma string. Como exemplo podemos substituir uma dentro de uma campo de tabela e assim por diante. Sintaxe:

Select replace("nomecampooustring123"",123"",456")
Retorna: "nomecampooustring456" Reverse ( ) Permite reverter a string informada. Sintaxe:

Select reverse( "nomecampooustring123")


Retorna: "321gnirtsuoopmacemon" Ucase ( ) e Lcase( ) Convertem caracteres em maisculo e minsculo respectivamente. Sintaxe:

Select ucase("nomecampooustring")
Retorna: "NOMECAMPOOUSTRING"

Select Lcase("NOMECAMPOOUSTRING")
Retorna: "nomecampooustring"

Bloqueio de tabelas Quando o banco de dados sobrecarregado de solicitaes de servio, podem ocasionar erros de gravao de informaes. Ao desenvolver seu sistema talvez seja conveniente utilizar o bloqueio de tabelas quando estiver importando, exportando os consultando grande quantidade de informaes. Por exemplo considere que vrios usurio esto acessando a mesma tabela e buscando a mesma informao, enquanto que essa mesma informaes est sendo alterado por outros usurio aos mesmo tempo. Para evitar que ocorra erros de gravao use o lock table para bloquear a tabela enquanto executa a operao. Sintaxe:

Lock tables nometabela write; Select nomecampo from nometabela where nomecampo=valor; Update nomatabela set nomecampo=(valor) where nomecampo=valor;

Desta forma todo o processo melhor gerenciado, porque o usurio2 tem de esperar at a processo de processamento do primeiro terminar

Lock tables nometabela read;


Bloqueio de leitura

Lock tables nometabela write;


Bloqueio de gravao Low_priority write Permite definirmos prioridades de bloqueio de leitura e gravao. Ao ser solicitado um bloqueio de gravao, o sistema ir esperar que os bloquei de leitura seja finalizados para que o novo bloqueio seja executado. Select high_priority Essa instruo permite a leituras das tabelas mesmo que estas estejam bloqueadas.

Unlock tables Permite desbloquear as tabelas. Sintaxe:

Unlock tables nometabela;


Usando chaves A chave uma forma de tornar a localizao de informaes mais rpida e eficiente. O uso de chaves nas tabelas pode aprimorar consideravelmente o desempenho do seu banco de dados. O MySQL suporta as seguintes comandos para criar chaves nas tabelas:

Alter table nometabela add(key!index) nomedoindice (nomecampo[,...]); Alter table nometabela add unique nomeindice (nomecampo[,...]); Alter table nometabela add primary key nomeindice(nomecampo[,...]);
O MySQL tambm suporta os comandos:

Create index nomeindice on nometabela(nomecampo[,...]); Create unique index [nomeindice] on nometabela(nomecampo[,...]); Create primary key on nometabela (nomecampo,...);
Aps criar as tabelas para se certificar de que elas realmente foram creadas, visualize-as utilizando o comando:

Show keys from nometabela;


Exibe as chaves da tabela informada.

Show index from nometabela;


Exibe as indices da tabela informada. Lembro que voc deve executar esta instruo na linha de comando do MySQL. Para eliminar um indice de uma tabela use o comando:

Alter table nometabela drop index nomeindice;

Interface com o banco de dados Dificilmente se cria uma aplicao de negcio em que no seja necessrio compartilhar o banco de dados. Este tipo de aplicao opera numa interface cliente/servidor, a aplicao interage com um banco de dados. Para que haja essa comunicao com o banco de dados necessrio primeiramente haver uma conexo. A interface uma camada que faz a intermediao entre o banco de dados e a sua aplicao. Veja a strutura abaixo:

Requisitos de uma conexo O primeiro requisito para se fazer uma conexo alm da conexo fisica, o drive. O drive adequado deve ser instalado. O segundo requisito nome do servidor onde o banco de dados est localizado. Voc dever informar o endereo de IP do servidor, ou caso esteja utilizando endereamento dinmico pode utilizar o nome do servidor. O terceiro requisito para a conexo o nome do banco de dados Como utilizar o MyODBC A Open Database Connectivity da Microsoft (ODBC) um padro que permite o acesso a qualquer banco de dados. O drive ODBC funciona como intermedirio na comunicao entre sua aplicao e o Banco de Dados. Na verdade ele interpreta os comando enviados ao banco de dados, e devolve ao usurio o resultado final. Vamos considerar que voc tenha instalado o MyODBC. Voc poder encontra-lo em www.mysql.com.br. Para configurar uma conexo ODBC para windows siga os seguintes passo: 1- abra o painel de controle

2- abra o item Fonte ODBC 1. clique em adicionar procure na lista a opo MySQL

e clique em concluir

se estiver utilizando um servidor linux use o usurrio root e sua senha de root. Fazendo uma conexo ADO Para conectar-se a um banco de banco MySQL utilizando VBScript e ADO, preciso seguir vrias etapas: 1 - declare uma varivel que se tornar o objeto connection. Dim minhaconn 2. crie um objeto de conexo set minhaconn=sever.createObject("ADODB.Connection") 3. configure as propriedades do objeto connection. Minhaconn.CommandTimeout=40

Minhaconn.ConnectionTimeout=40 Minhaconn.CursorLocation=3 4. crie a string de conexo

minhaconn.ConnectionString="sever=nome ou ip do sevidor;db=nomedobanco;" & drive=Mysql;uid=nomedousurio;pwd=senhadousurio"


A string de conecxo composta das seguintes informaes; Servidor - nome ou ip do servidor. Db - Nome do banco de dados. Drive - nome do drive a ser utilizado. Uid - Nome do Usurio. Pwd - Senha do Usurio. Caso j tenha configurado uma conexo ODBC na sua mquina use a seguinte string para a conexo. Minhaconn.ConnectionString="nome da conexo" 5. Abra a conexo Minhaconn.Open

Segurana de Banco de Dados MySQL A segurana de bancod e dados um componente essencial para qualquer sistema de banco de dados. A segurana desempenha um papel importante em qualquer aplicao que tenha vrios usurios acessado ao mesmo tempo. Como ocorre a plementao de segurana no MySQL O sistema de segurana do MySQL muito flexvel. Com ele, voc pode criar vrios nveis de acesso aos usurios. Cabe a voc definir as restries que cada usrio ter. Todas permisses so armazenadas no banco de dados MySQL, este banco possui a seguinte estrutura. Tabelas: User - Armazena as permisses para todos os usurios que tem acesso ao MySQL. Estrutura da Tabela:

Host - esse o nome do computador do usurio. Com MySQL, voc pode limitar o acesso de uma pessoa baseado na localizao da qual ela est conectada. User - nome do usurio Password - a senha do uurio Insert_priv - permite ao usurio o privilegio de inserir dados usando o metodo INSERT. Delete_priv - permite ao usurio o privilegio de excluir dados usando o metodo DELETE. Create_priv - concede ao usurio o privilegio de criar novas tabelas. Drop_priv - concede ao usurio o privilegio de excluir tabelas existentes. Reload_priv - permite ao usurio atualizar as tabelas. Shutdown_priv - concede ao usurio o privilegio de desligar o servidor. Process_priv - concede ao usurio o privilegio de visualizar os processos atraves do comando PROCESSLIST. File_priv - permite ao usurio ler e gravar arquivos que residem no servidor do MySQL. Grant_priv - permite ao usurio conceder privilegio para outros usurios. Index_priv - concede ao usurio o privilegio de poder criar indices. Alter_priv - concede ao usurio a capacidade de alterar a estrutura de uma tabela. Tabela DB A tabela Db contm permisses para todos os banco de dados contidos no servidor MySQL. As permisses concedidas aqui so dadas somente para o banco de dados identificado. A tabela Db possui basicamente a mesma estrutura da tabela user com algumas alteraes, como aqui armazenamos as permisses a nvel de banco de dados, no h privilegios a nvel de administrador. Ex: Reload_priv, Shutdown_priv, Process_priv e File_priv. Essas permisses no esto relacionadas a bancos de dados. Tabela Host A tabela host, junto com a tabela Db, controla o acesso limitando os host que podem conectarse ao banco de dados. Essa tabela tem as mesmas colunas que a tabela Db. As tabelas columns_priv e tables_priv Controlam as permisses para tabelas e colunas de um banco de dados. Com o MySQL, possvel limitar o que um usurio pode fazer em uma coluna de uma tabela. Essas tabela compartilha das seguintes colunas. Host - o host do qual o usurio est conectado. Db - o banco de dados que contem as tabelas as quais voc est dando privilegios.

User - o nome do usurio Table_name - o nome da tabela do banco de dados em que voc est configurando as permisses. Column_priv - controla o nvel de acesso do usurio. Ela pode conter: select, insert, update, delete. Se mais de um privilegio for concedido os mesmos devem ser separados por virgula. Timestamp - armazena o registro de data/hora em ocorreram alteraes.

Adicionando privilgios Como j foram mencionados em matrias anteriores, os procedimentos para se adicionar um usurio e mquina(host), vamos mostrar agora como conceder privilgios aos usurios. No exemplo abaixo daremos permisso de uso do SELECT.

Insert into db(host, user,db, select_priv) Values ( "nomeouIPServidor",usurio"",nomebanco"",y");


Caso necessite dar permisso de seleo, gravao e Excluso, use a sintaxe abaixo:

Insert into db(host, user,db, select_priv, update_priv, Delete_priv, ) Values ( "nomeouIPServidor",usurio"",nomebanco"",'y','y','y');


Removendo privilgios Para remover privilgios use o seguinte comando:

Update db Set select_priv="n" Where user="nomeusurio" And host="nomemaquina" And db="nomebanco";


Isso remover o privilgio de seleo para o usurio informado.

Usando o comando GRANT O comando GRANT mais uma opo de manipular os privilgios de usurios. Sintaxe:

GRANT [privilgio] (nome da coluna) On nomebanco.nometabela To nomeusurio@nomehost Identifield by "senha" [with grant options]
os privilgio que voc pode conceder so: ALL - concede ao usurio todos os privilgios. ALTER - concede ao usurio o privilgios de alterar a estrutura das tabelas. CREATE - concede ao usurio o privilgios de criar tabelas. DELETE - concede ao usurio o privilgios de excluir registro das tabelas DROP - concede ao usurio o privilgios de excluir tabelas/bancos de dados. FILE - concede ao usurio o privilgios de ler e gravar arquivos no servidor. INDEX - concede ao usurio o privilgios de adicionar ou excluir ndices. INSERT - concede ao usurio o privilgios de inserir registros nas tabelas PROCESS - concede ao usurio o privilgios de visualizar processos. SELECT - concede ao usurio o privilgios de executar consultas. SHUTDOWN - concede ao usurio o privilgios de desligar o servidor. UPDATE - d ao usurio o privilgios de atualizar os dados nas tabelas. USAGE - concede ao usurio o privilgios de conectar-se ao servidor, mas no lhe-permite fazer mais nada alm disso. No exemplo abaixo daremos as usurio o privilgio de Consultar, Gravar e Excluir registro para todas as tabelas do banco.

Grant select, update , delete on nomebanco.* to nomeusurio@% identified by "senha";


Para remover os privilgio concedidos com o comando grant , recomendo que utilize o comando revoke, assim voc ir evitar possveis erros. Sintaxe:

revoke select, update , delete on nomebanco.* to nomeusurio@% identified by "senha";


Resumidamente pudemos extrair os conceitos principais do MySQL, e o mais importante, vem a ser a pratica. Qualquer duvida consultar o site http://www.mysql.org. Att. Paulo

Você também pode gostar