terça-feira, 15 de março de 2011

Status, Insert, Update, Delete e Select

Prosseguindo no MySQL, vamos usar outros comandos:
-status - informações gerais do SGBD, se algum banco esta em uso e qual, o usuário conectado, protocolo utilizado, porta utilizada, characterset, delimitador usado, id da conexão, etc.  
-insert - para inserir dados nas tabelas; usado com "INTO" e "VALUES" - indicando qual tabela e quais valores serão inseridos , respectivamente; Ex: insert into teste (codigo,nome,cidade) values (1,"Carla","Canoas"); ou insert into teste values (1,"Carla",Canoas"); 
O primeiro exemplo indica a sintaxe formal , onde indicamos os campos utilizados - codigo,nome,cidade - e depois os valores que serão inseridos - 1,"Carla","Canoas"; o uso de " " se faz necessário no caso de dados do tipo STRING (char, varchar); no segundo exemplo, podemos "omitir" os campos, desde que seja respeitada a ordem no preenchimento dos dados; finalmente, podemos incluir mais dados em uma mesma linha, ao invés de repetir todo o insert.O exemplo para inclusão de múltiplas informações: insert into teste values (1,"Carla","Canoas"),(2,"Ana","Canoas"),(5,"Marcia","Esteio"),(4,"Lucia","Sapucaia");
-update - algumas vezes se torna necessário alterar algum dado que pode ter sido inserido incorretamente. Para esta finalidade, usamos UPDATE. A sintaxe básica é informar a tabela e o campo a ser atualizado (através de SET) e o novo valor. Ex:update teste set nome="Tania"; Neste exemplo, alteramos em TODOS os registros o valor de gravado no campo nome para "Tania". Mas e se quisermos atualizar somente em um registro específico, o procedimento faz uso de WHERE como filtro de informação: update teste set nome="Tania" where nome="Carla"; Desta forma, trocamos o nome para "Tania" somente onde o registro estava armazenando "Carla"; Mas E SE existirem duas "Carla" e quisermos alterar somente um destes registros, em específico? Podemos melhorar o filtro e incluir mais informações usando AND (E): 
update teste set nome = "Tania" where nome="Carla" AND cidade="Esteio";
O exemplo acima troca o nome DESDE que o registro contenha CARLA em nome e ESTEIO em cidade. Também podemos fazer uso de OR (OU): update teste set nome = "Tania" where nome="Carla" and (cidade="Esteio" or cidade="Canoas"); O exemplo acima troca o nome DESDE que o registro contenha CARLA em nome e ESTEIO OU CANOAS em cidade. Para mútlipas alterações, usamos "," após o primeiro campo citado em SET: update teste set nome="Tania" , cidade = "Sapiranga where nome = "Carla"; Neste exemplo , ateramos o nome e cidade.  -delete - apaga registros na tabela. Na sintaxe é necessário informar qual a tabela. Ex:delete from teste; Apaga TODOS os dados da tabela. delete from teste where nome = "carla"; Apaga todos os registros que contenham "Carla" no campo nome.
-select - um dos mais usados , para reportar informações de tabelas. Na sintaxe indicamos a tabela que se deseja consultar. Ex:select * from teste; Exibe todos os dados da tabela teste
Select teste.nome from teste; Exibe todos somente os dados da coluna nome;
Select * from teste where nome = "Carla"; Exibe todos os registros que contenham "Carla" na coluna nome;
Select * from teste where nome = "Carla" and cidade="Esteio"; Exibe todos os registros que contenham "Carla" na coluna nome E "Esteio" na coluna cidade;
Select * from teste where nome = "Carla" or cidade="Esteio"; Exibe todos os registros que contenham "Carla" na coluna nome OU "Esteio" na coluna cidade;
Ordenando: Select * from teste order by codigo; Exibe todos os registros em ordem crescente baseado no campo código;
Select * from teste order by codigo desc; Exibe todos os registros em ordem decrescente (usando DESC) baseado no campo código; 
Intervalo usando BETWEEN: Select * from teste where codigo between 1 and 5; Seleciona TODOS os registros que contivereme o campo código com valores entre 1 e 5 
Usando Count para exibir a quantidade de registros: Select count(*) from teste;  Select executando calculos: 
Select 1+1;
Select 1+3*2;
Select (1+3)*2;

quinta-feira, 10 de março de 2011

Alguns erros comuns no MySQL

Antes de prosseguirmos nos comandos, vamos aproveitar para ver alguns erros muito comuns no console do MySQL.
Primeiro, sobre a falta de ponto e vírgula:
Ao digitar um comando qualquer, por exemplo, show databases, se esquecermos de inserir ";" ao final da linha e teclarmos ENTER, o MySQL interpreta linha em edição aguardando o caractere que finaliza - no caso ";" - e exibe um "prompt' ( -> ). Podemos finalizar digitando ";" e teclando ENTER, deste modo, executando a linha normalmente. Ou digitar \c para sair do atual modo de edição (leia desconsiderar o que estava sendo feito), conforme podemos ver abaixo:

mysql> show tables
-> ;
+----------------------+
| Tables_in_biblioteca |
+----------------------+
| livros |
| socios |
+----------------------+
2 rows in set (0.03 sec)

mysql> show tables
-> \c
mysql>

Também podemos ver o modo de edição em um Create Table. Podemos fazer de duas formas:

mysql> Create table X(
-> id int,
-> nome char(10),
-> cidade char(15)
-> );
Query OK, 0 rows affected (0.03 sec)

Ou

mysql> create table X(id int, nome char(10),cidade char(15));
Query OK, 0 rows affected (0.05 sec)

Da mesma forma, é fácil cometer um pequeno erro em um INSERT:

mysql> insert into x(id,nome,cidade)values(10,"marcelo","canoas);
"> "
-> ;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near '' at
line 1

Neste exemplo, o erro foi a falta de " após digitar canoas, encerrando o valor. O interpretador do MySQL indentificou a falta de " e entende que a linha ainda está sendo digitada, aguardando as aspas. Após isto, aguarda a finalização, só que o ";" gera o erro, pois a sintaxe está incorreta, como veremos mais abaixo.

mysql> insert into x(id,nome,cidade)values(10,"marcelo","canoas);
"> "
-> );
Query OK, 1 row affected (0.08 sec)

Agora o exemplo foi finalizado corretamente, mas o dado inserido não será CANOAS, mas CANOAS); , já que foi o valor que ficou entre as aspas.

mysql> insert into x(id,nome,cidade)values(10,"marcelo","canoas);
"> "
-> \c

Neste último exemplo vimos que o dado CANOAS ficará incorreto , então decidimos por encerrar o comando sem gravar nada, usando \c

Aí estão algumas explanações simples, mas que podem orientar quem está começando a usar a interface em modo texto.

quarta-feira, 9 de março de 2011

Iniciando no MySQL

Após a instalação do MySQL, passaremos a usar o mesmo. Para tanto, basta abrir o menu INICIAR e em EXECUTAR digitar MYSQL e clicar em OK.
Abrirá uma janela parecida do com a linha de comando do MS DOS:

Enter password: *****
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 21
Server version: 5.5.9 MySQL Community Server (GPL)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

Note que o "prompt" mysql fica aguardando a digitação dos comandos. Após digitar o comando e teclar ENTER, o MySQL interpreta e executa o que foi digitado. Para indicar o término da digitação, é preciso inserir ponto e vírgula (;) .

Vamos iniciar com o SHOW DATABASES - exibe os bancos no SGBD.
Ex:

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.83 sec)

Qualquer atividade que se queira fazer, desde consultas, inserção de dados, etc, é necessário primeiro entrar no banco desejado; USE - faz uso de um dos bancos do SGBD;
Ex:
mysql> use test;
Database changed

-create database - cria um novo banco, sendo necessário informar um nome para o mesmo; nomes já existentes não são permitidos;
Ex:
mysql> create database prova;
Query OK, 1 row affected (0.17 sec)

-drop database - deleta um banco, sendo necessário indicar o nome do mesmo.
Ex:
mysql> drop database prova;
Query OK, 0 rows affected (1.03 sec)

Agora que vimos o básico sobre criar e deletar bancos, vamos ao elemento mais básico dos mesmos: as tabelas.
Uma tabela é uma representação matricial, isto é, em linhas e colunas, tantas quantas a aplicação que se queira dar. No caso do banco, inserimos colunas, nas quais definimos os nome das mesmas e os tipos de dados que irão armazenar. Também podemos definir chaves primárias, como será descrito mais adiante. As linhas correspondem aos dados que serão inseridos.

-create table - cria uma nova tabela; para isto , primeiro é necessário que o usuário esteja inserido em um banco de dados através de "USE". Em conjunto, deve ser informado o nome da tabela e os campos (colunas) , bem como informar o tipo de dados que serão contidos pelos mesmos.
Ex:
mysql> Create table teste(codigo int, nome varchar(20), cidade varchar(15));
Query OK, 0 rows affected (0.47 sec)

Onde:
teste - é o nome da tabela;
codigo é o nome do campo e INT indica que o tipo de dado armazenado nele é um inteiro;
nome é o nome do campo e VARCHAR indica que o tipo de dado armazenado nele é STRING (cadeia de caracteres); (20) indica o comprimento máximo ou seja, vinte caracteres;
cidae é o nome do campo e VARCHAR indica que o tipo de dado armazenado nele é STRING (cadeia de caracteres); (15) indica o comprimento máximo ou seja, quinze caracteres;
Entre um campo e outro , usamos "," para delimitar os mesmos, exceto no último: fechamos parentêses ")" e usamos ";" para indicar o final da linha.

-show tables - Exibe todas as tabelas contidas no banco em uso;
Ex:
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| teste |
+----------------+
1 row in set (0.01 sec)

-Describe - retorna informações sobre a tabela, como os campos, tipos de dados, chaves, etc. Basta indicar o nome da tabela após o comando.
Ex:
mysql> describe teste;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| codigo | int(11) | YES | | NULL | |
| nome | varchar(20) | YES | | NULL | |
| cidade | varchar(15) | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+
3 rows in set (0.20 sec)

-drop table - Deleta a tabela especificada.
Ex:
mysql> drop table teste;
Query OK, 0 rows affected (0.05 sec)

Mais adiante, iremos iniciar com INSERT e SELECT para adicionar dados e realizar consultas.

quarta-feira, 2 de março de 2011

Instalando o MySQL no Windows

Uma dúvida que normalmente atinge quem pretende iniciar estudos em bancos de dados é como e por onde iniciar a parte prática. Existem várias opções gratuítas e é normal sentir-se "perdido". Neste primeiro momento, vamos começar com a instalação do SGBD (Sistema de Gerenciamento de Banco de Dados) escolhido : o MySQL.
Podemos baixar de diversos sites, incluindo o principal - http://www.mysql.com/downloads/
Para efetuar o download, é necessário se registrar no site (sem custo algum). CASO não queira efetuar o cadastro, pode baixar de outro site, como o SUPERDOWNLOADS -

http://www.superdownloads.com.br/redir.cfm?softid=45623

O arquivo que baixei: mysql-5.5.9-win32.msi - indica que é a versão do SGBD para rodar na plataforma Windows 32 bit. Existe versão otimizada para Windows 64 bit, Linux e assim por diante.
O procedimento de instalação é relativamente simples; execute o arquivo e ele irá exibir a mensagem padrão, de que o programa pode conter vírus, etc. Apenas confirme com OK.



Em seguida, você será notificado sobre o editor que não pôde ser verificado. Apenas confirme em EXECUTAR



Tela inicial de instalação do MySQL: apenas clique em NEXT;



Agora é necessário marcar a caixa onde aceitamos os termo de licença de uso do programa. Após, clicar em NEXT;



Agora é necessário escolher qual o tipo de instalação. Neste primeiro momento iremos optar pela instalação típica. Clique me TYPICAL e em seguida em NEXT.



Pronto para instalar. Basta clicar em INSTALL.



Instalando. Após instalar os arquivos, será exibida uma janela MySQL Enterprise. Feche a mesma.



Para finalizar a instalação, basta clicar no botão FINISH. Deixe marcada o quadro LAUNCH THE MYSQL INSTANCE CONFIGURATION WIZARD. Desta forma, o assistente de configuração será acionado em seguida.



Tela do assistente. Clique em NEXT.



Nesta primeira instalação iremos usar a opção STANDARD:



Nesta tela não alteramos quase nada. Apenas para explanar, o primeiro quadro marcado indica que o MySQL irá rodar como um serviço no Windows. Pode ser visto no gerenciador de tarefas e o nome do serviço será justamente MySQL. O segundo quadro indica que o serviço será iniciado automaticamente , ou seja, quando iniciado o Windows, o MySQL iniciará também. Marcar o quadro INCLUDE BIN DIRECTORY IN WINDOWS PATH.
Clicamos em NEXT para prosseguir.



Nesta tela temos as configurações de segurança. O primeiro quadro marcado modifica as coonfigurações. Vamos entrar uma senha para root (o usuário master do banco). Use uma senha simples inicialmente. Preencha no primeiro campo e repita no segundo, para verificação. Deixe as demais opções desmarcadas e clique em NEXT.


Clique em EXECUTE para prosseguir.



Caso tudo tenha ocorrido em ordem (como esta instalação) todos os ítens estarão marcados conforme exibido abaixo e basta clicar em FINISH. No caso de qualquer erro, o assistente irá tentar novamente o passo incorreto.


Pronto!!!
Nos próximos posts vamos acessar o MySQL via console e usar comandos básicos de SQL.