Sei sulla pagina 1di 24

Manual de SQL

Table of Contents
Tutorial MySQL..............................................................................................................................................1 Sobre este tutorial....................................................................................................................................1 Nota do autor.....................................................................................................................................1 Molhando seus ps...................................................................................................................................2 Breve introduo ao MySQL............................................................................................................2 Indo mais fundo.......................................................................................................................................3 Viso geral .........................................................................................................................................3 At seu pescoo em MySQL ....................................................................................................................6 Tabelas e campos ...............................................................................................................................6 Campos..............................................................................................................................................7 Tipos de campos no MySQL.............................................................................................................7 Registros..........................................................................................................................................12 Tabelas .............................................................................................................................................12 Totalmente imerso em MySQL.............................................................................................................15 Manipulando a base de dados ..........................................................................................................15 Afogandose em MySQL......................................................................................................................20 Comando avanados........................................................................................................................20

Molhando seus ps
Breve introduo ao MySQL
Bancos de dados, hoje em dia, so parte fundamental da vida de quase todos seres humanos. Viver sem sistemas de bancos de dados em nosso mundo, hoje em dia praticamente impossvel. Sem nem mesmo perceber, a todo momento estamos usando um banco de dados, mesmo nas mais triviais tarefas. Bancos, universidades e bibliotecas so trs exemplos de organizaes que dependem totalmente de bancos de dados. A prpria internet, usa um sistema de banco de dados para controle e funcionamento dos sites, como este. Normalmente, bases de dados com muitas informaes so armazenadas em computadores de grande porte, chamados de servidores, e que permitem o uso das mesmas informaes, atravs de uma rede, por um nmero (dizse) ilimitado de usurios. Um dos mais rpidos programas para servidores de SQL (do ingls, "Linguagem de pesquisa simples"), hoje no mercado, o MySQL, desenvolvido pela T.c.X. DataKonsultAB. Este programa est disponvel para download em sua verso original em www.mysql.com, em ingls, e tambm em www.mysql.com.br para sua verso brasileira, onde encontramse projetos de traduo e documentao do MySQL em portugus. Alm de oferecer vrios recursos no existentes em outros servidores, o MySQL tem a vantagem de ser totalmente gratuito para uso tanto comercial, quanto privado, em conformidade com a licena pblica GPL. As principais metas da equipe de desenvolvimento do MySQL construir um servidor rpido e robusto. Os recursos acima mencionados incluem: Capacidade de lidar com um nmero ilimitado de usurios; Capacidade de manipular mais de cinqenta milhes (50.000.000) de registros; Execuo muito rpida de comandos, provavelmente o mais rpido do mercado; Sistema de segurana simples e funcional. Quem usa o MySQL: Silicon Graphics (www.sgi.com)

Molhando seus ps

Siemens (www.siemens.com) Yahoo (www.yahoo.com) IFX Networks (www.ifx.com.br) Dezenas de Web hosting e Provedores devido ao enorme sucesso que o MySQL vem fazendo Existem sistemas rodando servidor MySQL com bases de dados de 200 Gigabytes!!! Caso voc ache isto insuficiente, verifique a lista completa de usurios do MySQL no site oficial www.mysql.com

Indo mais fundo


Viso geral
A partir deste captulo, comearemos a usar o MySQL na prtica, para tal, preciso que voc tenha acesso a algum servidor com o MySQL instalado e funcionando devidamente. A instalao do MySQL ser abordada posteriormente. A forma mais comum de se utilizar o MySQL, via telnet. Uma vez conectado ao servidor, um segundo comando permite o acesso ao servidor MySQL. Para acessar o servidor MySQL, preciso utilizar o comando que segue. importante lembrar, que o MySQL tem seu prprio cadastro de nomes e senhas, sendo que voc pode possuir uma conta no servidor SQL, mas no telnet, e o oposto tambm vlido. Voc tambm pode usar clienter grficos para o MySQL, como o FreeMascon e o MyNavigator. mysql u elaine p supersenha Sintaxe: mysql u (usurio) p (senha)

Indo mais fundo

ou mysql h servidor u (usurio) password=(senha) Aps validada a senha, e prsupondo que o MySQL tenha sido corretamente instalado, voc ver algo como: Cliente MySQL NBS Bem vindo ao monitor do MySQL. Use ; aps os comandos ou \g. Sua id 49, e voc est conectado a um servidor verso 3.21.23betalog Digite 'help' para ajuda.

mysql> Uma vez no prompt do MySQL, podemos comear a utilizar os comandos do MySQL e manipular os dados e o servidor. Contudo, antes de modificar a base de dados, ns devemos escolher qual desejamos usar, da seguinte forma:

Indo mais fundo

mysql>use teste; Base de dados alterada.

Troque teste, pelo nome da base de dados desejada. Voc obter uma mensagem confirmando a alterao da base de dados. Isto significa que voc est conectado a ela. Repare que o comando est seguido de ponto e vrgula, pois como em C, a maioria dos comandos do MySQL so sucedidos por ponto e vrgula. Antes de fazer qualquer coisa, seria interessante voc consultar a ajuda, que listar os comandos disponveis neste momento da execuo do MySQL. Isto deve ser feito atravs do comando help. mysql>help ... ... Provavelmente, nem todas as funes sero teis neste momento, porm bom gastar um tempo aprendendo cada uma delas para uso futuro. Por outro lado, funes como status, connect, clear, e quit sero usadas com uma freqncia to grande que voc deve se familiarizar com elas. Neste ponto, voc deve ter um conhecimento bsico de como conectarse ao servidor, selecionar a base de dados, e executar operaes simples. No prximo captulo, aprenderemos os conceitos e tcnicas necessrias

Indo mais fundo

para preparar e manter uma base de dados.

At seu pescoo em MySQL


Tabelas e campos
Chegamos! Talvez no captulo mais difcil deste texto. Voc logo entender, portanto, tenha uma tima noo de bases de dados! Algumas pessoas podem achar fcil, mas minha experincia no assunto, diz que muitas pessoas tm dificuldades sobre os conceitos bsicos de bases de dados. Portanto, s passe para o prximo tpico quando voc estiver plenamente seguro que domina os conceitos de bases de dados. Uma base de dados, nada mais do que estruturas complexas de dados. Estes dados so gravados em forma de registros em tabelas. Parece simples, certo? Faamos ento uma analogia para que este conceito se torne ainda mais simples: Imagine um arquivo de fichas, numa empresa onde h vrias caixas, cada uma contendo os dados dos funcionrios de um certo setor. Cada caixa possui vrias fichas, que so os cadastros dos funcionrios cada ficha contm os dados de apenas um funcionrio. Indo mais longe, podemos concluir que cada ficha contm diversas informao sobre o funcionrio em questo: Portanto, cada caixa uma tabela, contendo diversas fichas, que so os registros, e cada ficha possui vrias informaes sobre o funcionrio, que so os campos. Como foi dito, h vrias caixas, uma para cada departamento, a soma de todas as caixas forma a base de dados. Observando tudo isto de fora, podemos formar o seguinte esquema: Base de dados < Tabela < Registro < Coluna (datatype) Banco de dados < Tabela < Linha < Campo

At seu pescoo em MySQL

As duas linhas acima mostram os termos normalmente usados para o que acabamos de aprender. Os campos podem ser de diferentes tipos e tamanhos, permitindo ao programador criar tabelas que satisfaam ao escopo do projeto. A deciso de quais campos usar e quais no usar muito importante, pois influi drasticamente na performance da base de dados que estamos desenvolvendo, portanto, de bom grado um conhecimento slido destes conceitos. A etapa de montagem das tabelas, seno a mais importante, uma das mais importantes etapas da montagem de uma base de dados, pois um bom projeto pode facilitar muito o trabalho de programao.

Campos
Como j sabemos, os campos so a parte fundamental de uma base de dados. nos campos que as informaes ficam armazenadas. Para um otimizao da base de dados, antes e utilizar, devemos definir os campos que desejamos usar, e especificar o que cada um pode conter.

Tipos de campos no MySQL


O MySQL oferece os mais comuns campos, que at mesmo um programador novato j deve ter visto. Alguns deles esto aqui listados:

CHAR(M) Os campos CHAR so usados para caracteres alfanumricos, como endereos e nomes. Seu tamanho fixo e instaurado ao ser criado. Um campo do tipo CHAR pode ter de 1 a 255 caracteres.

Campos

Exemplo: endereco_comercial CHAR(10); Define um campo chamado 'endereco_comercial', que pode conter at dez letras. Observe que no h acentos no nome do campo, pois muitos servidores no acentuam, e sua tabela teria difcil acesso.

VARCHAR(M) Sua estrutura e funcionamento idntico ao campo anterior, salvo que no tipo CHAR, o tamanho definido fixo, e mesmo que no usado, aquele espao em disco alocado. J o campo VARCHAR, aloca apenas o espao necessrio para gravao. Contudo, vale lembrar que trocamos espao por velocidade, pois este campo 50% mais lento que o anterior. Exemplo: endereco_comercial VARCHAR(10); Define um campo chamado endereco_comercial que pode conter at dez letras. Se voc preencher apenas duas, o campo no ocupara todos dez bytes, mas apenas 2.

INT(M) [Unsigned] O campo INT, que como o prprio nmero diz, suporta o conjunto dos nmeros inteiros numa variao de 2147483648 a 2147483647. O parmetro Unsigned pode ser passado, excluindo os nmeros negativos, proporcionando um intervalo de 0 at 4294967295. Exemplos:

Tipos de campos no MySQL

carros_estocados INT; Inteiro vlido: 245 Inteiro vlido: 245 Inteiro invlido: 3000000000

carros_estocados INT unsigned; Inteiro vlido: 245 Inteiro invlido: 245 Inteiro invlido: 3000000000

FLOAT[(M,D)] Os pontos flutuantes (FLOAT) representam pequenos nmeros decimais, e so usados para representar nmeros com maior preciso. Exemplo: voltagem_cadeira_eletrica FLOAT(4,2); Float vlido: 324.50

DATE Campo usado para armazenar informaes referentes a data. A forma padro 'AAAAMMDD', onde AAAA corresponde ao ano, MM ao ms, e DD ao dia. Ele pode variar de 00000000 a 99991231.

Tipos de campos no MySQL

O MySQL possui um conjunto poderoso de comandos de formatao e manipulao de datas. Consulte documentao adicional, se houver interesse. Exemplo: data_de_nascimento DATE;

Data vlida: 19991206 Data invlida: 19990612

TEXT/BLOB Os campos texto e blob so usados para guardar grandes quantidades de caracteres. Podendo conter de 0 a 65535 bytes, os blobs e texts so teis para armazenar documentos completos, como este que voc est lendo. A nica diferena entre os campos BLOB e TEXT est no fato de um campo TEXT no ser sensvel a letras maisculas e minscula quando uma comparao realizada, e os BLOBs sim. Exemplo: relatorio BLOB; BLOB vlido: 'Minha terra tem palmeiras onde canta o...'

relatorio TEXT; TEXT vlido: 'A que saudades que eu sinto...'

Tipos de campos no MySQL

10

SET Um campo interessante, que permite que o usurio faa uma escolha dado determinado nmero de opes. Cada campo pode conter at 64 opes. Exemplo: vicio SET("cafe", "cigarro") NOT NULL; Neste exemplo este campo pode conter apenas os seguintes itens: "" "cafe" "cigarro" "cafe,cigarro"

ENUM Um campo com funcionamento semelhante ao SET, com a diferena que apenas um valor pode ser escolhido. Exemplo: virtude ENUM("programar", "amar") NOT NULL; Neste exemplo este campo pode conter os seguintes valores:

"" "programar"

Tipos de campos no MySQL

11

"amar"

Registros
Um conjunto de campos relacionados, forma o que chamamos de registro. Um registro, portanto, pode ter a seguinte estrutura:

nome CHAR(15); email CHAR(25); telefone INT; Neste exemplo, nosso registro contm trs campos, podendo armazenar o email e o telefone de uma determinada pessoa. Observe que o campo nome foi definido como CHAR, portanto poder conter qualquer tipo de caractere, contudo, o campo telefone, definido como INT, poder apenas conter nmeros, pois foi configurado como INT.

Tabelas
Um conjunto de registros, forma uma tabela. As tabelas portanto, armazenam grande quantidade de dados. Como no exemplo anterior, poderamos ter centenas de nomes diferentes cadastrados em nossa tabela de pessoas. Cada conjunto de dados corresponde a um registro. Antes de usar uma base de dados, ou dar qualquer comando, ns precisamos de uma tabela pelo menos, para armazenar os dados: Isto pode ser feito usando o comando CREATE TABLE, que recebe como parmetro o nome da tabela que desejamos usar.

Registros

12

mysql> CREATE TABLE teste( >codigo INT, >nome CHAR(15), >email CHAR(25), >telefone INT); Notas: No possvel criar duas tabelas com o mesmo nome; Cada conjunto de dados, quando visto em uma tabela, tambm chamado linha; Voc acaba de criar sua primeira tabela! Caractersticas das linhas: O nome de uma coluna pode ter at 64 letras; O nome de uma coluna pode comear com um nmero; O nome de uma coluna no pode ser composto de nmeros apenas. Opes de uma tabela: As seguintes opes podem ser adicionadas a qualquer campo de uma tabela, concatenando recursos adicionais a estes campos.
Chave primria:

Usado para que no seja permitido, que o usurio consiga cadastrar dois registros com chaves primrias iguais. Isto claramente til, quando no desejado que seja digitado um segundo registro igual ao primeiro por engano. Para se definir uma chave primria, basta adicionar 'PRIMARY KEY' a definio do campo que se deseja a no duplicidade.

Tabelas

13

Exemplo: nome CHAR(15) PRIMARY KEY; Esta declarao faz com que no seja permitido o cadastro na tabela de dois registros com nomes iguais.

Auto incremento:

Este recurso, faz com que conforme novos registros so criados, automaticamente estes obtm valores que correspondem ao valor deste mesmo campo no registro anterior, somado a 1.

Exemplo: codigo INT AUTO_INCREMENT; Soma um a cada registro automaticamente neste campo. Comeando de 1, com insero subsequente.

Comandos relativos as tabelas: Podemos executar comandos para saber as condies que as tabelas se encontram, e tambm manipullas. Abaixo, poderemos conhecer os fundamentais: Mostrar tabelas Funo: Lista todas as tabelas existentes no banco de dados atual. Comando: mysql>show tables;

Tabelas

14

Mostrar colunas Funo: Mostra as informaes referentes a estrutura, ou seja, as colunas da tabelas desejada. Comando: mysql>show columns from teste; Lembrese de dedicar algum tempo a testes. No tenha medo de danificar a base de dados, pois o Administrador do servidor que voc usa no daria a voc controle total dos dados, e se o servidor pertencer a voc..."vai, faa o que tu queres".

Totalmente imerso em MySQL


Manipulando a base de dados
Uma base de dados pode ser manipulada com quatro operaes bsicas: Incluir, Apagar, Altera, e Pesquisar. Estes tpicos sero brevemente abordados nas sees seguintes, mas antes de mais nada, eu gostaria de lembrar que como toda linguagem para computadores, o MySQL tem suas regras. Um erro de parnteses que seja pode resultar no inverso do que voc espera. Portanto, fique atento a sintaxe de seus comandos. bom saber tambm, que faremos todas experincias a partir de agora, usando a tabela teste, criada no captulo anterior. Portanto se voc ainda no a criou, esta uma boa hora.

Aqui est ela novamente como uma rpida referncia: Seleciona base de dados:

Totalmente imerso em MySQL

15

use teste; Cria tabela: mysql> CREATE TABLE teste( >codigo INT, >nome CHAR(15), >email CHAR(25), >telefone INT); Inserindo registros Para se adicionar dados a uma tabela, usamos o comando INSERT, que diz por si s sua funo, como o exemplo que segue: mysql>INSERT INTO teste VALUES mysql>(NULL, 'Ernesto', 'ernesto@nbsnet.com.br', mysql>2742729);

Manipulando a base de dados

16

Observaes: Apostrofes foram colocadas na entrada de campos tipo CHAR. Todos os campos que contm texto, ou seja, CHAR, VARCHAR, BLOB, TEXT, etc. tm de ficar entre apstrofes, ou um erro ocorrer; Para campos do tipo nmero, no se usam apstrofes. A entrada NULL em um campo do tipo autoincremento, permite que o MySQL providencie o contedo deste campo de forma automtica. No caso do primeiro campo, o valor ser 1, no segundo 2, no terceiro 3 e assim consecutivamente. Se possussemos um campo DATE, a entrada NULL faria com que o valor gravado no registro se torne a data atual. Nota: importante lembrarse sempre de passar para o camando INSERT um nmero de parmetros igual ao nmero de campos na tabela que est recebendo os dados. Caso contrario, voc obter uma mensagem de erro. O mesmo erro tambm ocorre ao tentar inserir mais parmetros do que o nmero de campos suportado pela tabela. Nota 2: Uma das grandes vantagens do MySQL a capacidade de facilmente converter sem problemas entre campos. O sistema automaticamente converte entre nmeros, caracteres, e datas sem problemas.

Pesquisando registros Imagine que possumos um carro de ltima gerao, com todos os recursos que a tecnologia atual pode permitir. Contudo, nosso carro no tem roda, ou seja, no serve para nada, a no ser ostentar. (Opinio pessoal: assim so os servidores M$). A inteno de uma base de dados, ser til, portanto, em contradio ao exemplo, ela precisa ter rodas. No

Manipulando a base de dados

17

caso de qualquer base de dados, uma das roda a pesquisa, afinal de contas, o que seria um site de busca na Internet sem pesquisa? As pesquisas no MySQL so feitas atravs do comando SELECT. Este comando pode fazer desde uma simples e trivial pesquisa at uma pesquisa extremamente complexa. Exemplos: Ao: mysql>SELECT * FROM teste; Resultado: Lista todos registros da tabela teste. Ao: mysql>SELECT * FROM teste mysql>WHERE (nome = "Ernesto"); Resultado: Lista todos os registros da tabela teste que contm "Ernesto" no campo nome. Nota: Consulte maiores detalhes, e estude mais itens relacionados a pesquisas SQL. Voc pode economizar centenas de linha de cdigo em seus programas usando recursos de pesquisa.

Apagando registros

Quando um registro no nos mais til, podemos apaglo, para que a tabela no contenha dados obsoletos.

Manipulando a base de dados

18

Isto pode ser facilmente feito usando o comando DELETE, que tem o funcionamento semelhante ao comando INSERT. Ao: mysql>DELETE FROM teste mysql>WHERE (telefone = 2744747); Resultado: Apaga da tabela teste todos os registros que tm o contedo "2744747" no campo telefone.

Alterando registros Suponhamos agora que sua namorada trocou o telefone. A primeira providncia, alterar sua tabela para que voc no possua dados desatualizados. Para tal, existe o camando UPDATE. Observe os exemplos: Ao: mysql>UPDATE teste SET nome = 'ErnestaoOBao' mysql>WHERE nome = 'Ernesto'; Resultado: Procura na tabela um registro que contenha no campo nome o contedo 'Ernestao', definido pelo comando WHERE. Encontrado o registro, ele substituido pelo nome definido no comando SET, que 'ErnestaoOBao'.

Manipulando a base de dados

19

Afogandose em MySQL
Comando avanados
O que aprendemos at agora, quando comparado a quantidade de recursos do MySQL, no chega a ser a ponta de um gigante iceberg. O MySQL repleto de comandos avanados que permitem fazer operaes para todas as necessidades. Veremos agora alguns comandos avanados do MySQL: Operadores lgicos: O MySQL suporta todas operaes lgicas, estando abaixo listadas as mais conhecidas: AND (&&) O operador lgico AND, ou E, deve ser usado em uma pesquisa que se deseja entrar dois valores. O AND, verifica ambas as clausulas da comparao, e s retorna algum valor se as duas tiverem uma resposta verdadeira. Observe o exemplo: mysql>SELECT * FROM teste WHERE mysql>(nome = "Aline") AND mysql>(telefone = 2728918); Esta pesquisa mostrara todos os registros que contm no campo nome e contedo "Aline", E (AND) no campo telefone, o contedo 2728988. OR (||) O operador lgico OR, ou OU, deve ser usado em uma pesquisa que se deseja entrar dois valores. O OR,

Afogandose em MySQL

20

verifica ambas as clausulas da comparao, e retorna valores se qualquer um dos membros obtiver resultado. mysql>SELECT * FROM teste WHERE mysql>(nome = "Aline") OR mysql>(telefone = 2728918); Este pesquisa far com que todos os resultados que contenham o contedo "Aline" no campo nome, OU 2728918 sejam exibidos na tela. NOT (!) O operador lgico NOT, ou NO, realiza uma pesquisa, excluindo valores determinados do resultado. mysql>SELECT * FROM teste WHERE mysql>(nome != "Aline"); Esta pesquisa listara todos os registros da base de dados teste, NO (NOT) mostrando aqueles que possuem "Aline" como contedo do campo nome. ORDER BY O operador lgico ORDER BY, ou ORDENAR POR, simplesmente lista os registros, colocandoos em ordem de acordo com o campo solicitado.

Afogandose em MySQL

21

mysql>SELECT * FROM teste WHERE mysql>(nome = "Aline") mysql>ORDER BY telefone; O resultado desta busca resultara em todos os registros contendo "Aline" no campo nome, e a listagem ser organizada de acordo com a ordem do telefone.

Afogandose em MySQL

22

Potrebbero piacerti anche