Escolar Documentos
Profissional Documentos
Cultura Documentos
APOSTILA DE MYSQL
APOSTILA DE MYSQL
Apostila de
MySQL
APOSTILA DE MYSQL
Aparecido Quesada
Adriana Tosta
Eder Moura Dourado
Simone Leal dos Santos
Thyago Akira de Morais Ribeiro
Yuri Robinson de Souza
Contato
treinamento_cge@prefeitura.sp.gov.br
telecentros@prefeitura.sp.gov.br
PALCIO DO ANHANGABA
VIADUTO DO CH N 15
CEP 01002-000 SO PAULO
TEL: 3113-8938 FAX 3113-8939
APOSTILA DE MYSQL
ndice
Introduo .............................................................................. pg. 09
Popularizao dos Bancos de Dados .................................... pg. 10
Sistema de Gerenciamento de Banco de Dados? ................ pg. 11
Controle de Redundncias .................................. pg. 11
Compartilhamento dos Dados ............................. pg. 12
Controle de Acesso .............................................. pg. 12
Interfaceamento ................................................... pg. 12
Esquematizao ................................................... pg. 12
Controle de Integridade ........................................ pg. 12
Cpias de segurana ........................................... pg. 13
Quem utiliza os Bancos de Dados? ....................................... pg. 13
Usurios ................................................................ pg. 13
Administrador de Banco de Dados (DBA) ........... pg. 13
Projetista de Banco de Dados ............................. pg. 14
Usurios Finais ..................................................... pg. 14
Analistas de Sistemas e Programadores de
Aplicaes ............................................................ pg. 14
Banco de Dados Relacional ................................................... pg. 15
O MySQL .............................................................................. pg. 17
Caractersticas do MySQL ...................................................... pg. 17
SQL
.............................................................................. pg. 18
Introduo ............................................................. pg. 18
SQL para manipulao de bancos de dados MySQL ........... pg. 19
Comando CREATE .............................................. pg. 19
Comando DROP .................................................. pg. 21
Comando ALTER ................................................. pg. 21
Manipulando dados das tabelas ............................................ pg. 22
Comando SELECT .............................................. pg. 22
Where como base das Restrio de linhas ........................... pg. 22
Operadores lgicos ................................................................ pg. 23
Comando INSERT ............................................... pg. 24
Comando UPDATE .............................................. pg. 25
Comando DELETE .............................................. pg. 26
Outros operadores ............................................... pg. 28
5
APOSTILA DE MYSQL
APOSTILA DE MYSQL
APOSTILA DE MYSQL
APOSTILA DE MYSQL
Introduo
No mundo atual existem gigantescos bancos de dados
gerenciando nossas vidas. Nossa conta bancria faz parte de uma
coleo imensa de contas bancrias de nosso banco. Nosso Ttulo
Eleitoral ou nosso Cadastro de Pessoa Fsica, certamente esto
armazenados em Bancos de Dados colossais. Sabemos tambm
que quando sacamos dinheiro no caixa eletrnico de nosso banco,
nosso saldo e as movimentaes existentes em nossa conta
bancria j esto nossa disposio.
Nestas situaes sabemos que existe uma necessidade em
se realizar o armazenamento de uma srie de informaes que
no se encontram efetivamente isoladas umas das outras, ou seja,
existe uma ampla gama de dados que se referem a relacionamentos
existentes entre as informaes a serem manipuladas.
Para gerenciar tantos dados como os citados so utilizados
os Sistemas de Gerenciamento de Banco de Dados (SGBD).
Sem tais sistemas o mundo atual estaria bastante diferente de como
vemos hoje. O mercado financeiro tal como vemos hoje no
existiria. As praticidades como compras pela Internet, cartes de
dbito, caixas automticos e mais uma infinidade de exemplos
no seriam possveis.
APOSTILA DE MYSQL
10
APOSTILA DE MYSQL
11
APOSTILA DE MYSQL
12
APOSTILA DE MYSQL
CPIAS DE SEGURANA
APOSTILA DE MYSQL
APOSTILA DE MYSQL
APOSTILA DE MYSQL
APOSTILA DE MYSQL
17
APOSTILA DE MYSQL
APOSTILA DE MYSQL
APOSTILA DE MYSQL
......
nome_atributoN < tipo > [ NOT NULL ]
PRIMARY KEY(nome_atributo)
);
onde:
nome_tabela: indica o nome da tabela a ser criada.
nome_atributo: indica o nome do campo a ser criado na tabela.
tipo: indica a definio do tipo de atributo ( integer(n), char(n),
... ).
PRIMARY KEY: esse o campo utilizado para que no exista
na tabela dois registros iguais. Ele mantm a integridade do banco
de dados. Caso voc tente inserir num banco de dados um registro
com uma PRIMARY KEY j existente ele emitir uma mensagem
de erro e impedir que o registro seja inserido.
Exemplo:
CREATE table alunos(
codigo int NOT NULL AUTO_INCREMENT,
nome VARCHAR(20) NOT NULL ,
telefone CHAR(8) NOT NULL,
PRIMARY KEY(codigo)
);
Criao de uma tabela em um banco de dados partir da
tabela dada (o astersco determina qual campo a chave primria):
20
APOSTILA DE MYSQL
21
APOSTILA DE MYSQL
APOSTILA DE MYSQL
significado
igual a
maior que
maior que ou igual a
menor que
menor que ou igual a
Exemplos:
SELECT cidade, estado FROM brasil WHERE populacao >
100000;
Selecionar os campos cidade e estado da tabela brasil de
todos os registros que tiverem valor maior que 100.000 no campo
populacao.
SELECT * FROM cidadao ORDER BY nome DESC;
Selecionar todos os campos da tabela cidadao e utilizar
ordenao decrescente na seleo.
Levando em conta a tabela funcionarios abaixo, veja a
utilizao da clusula SELECT.
23
APOSTILA DE MYSQL
Selees:
-Selecionar quantas pessoas existem cadastradas:
mysql>SELECT COUNT(*) FROM funcionarios;
-Selecionar quantos funcionrios existem no departamento 3:
mysql>SELECT COUNT(*) FROM funcionarios WHERE
depto=3;
-Selecionar o nome e o rg dos funcionrios que ganham mais
que 3000 reais.
mysql>SELECT nome, rg FROM funcionarios WHERE
salario>3000;
COMANDO INSERT
APOSTILA DE MYSQL
VALUES('joao
mysql>INSERT
INTO
funcionarios
VALUES('Fernando',20202020,22222222,2,10101010,2500);
COMANDO UPDATE
APOSTILA DE MYSQL
26
APOSTILA DE MYSQL
Exemplos:
SELECT EMPNOME, EMPSALA
FROM EMP
WHERE EMPSALA BETWEEN 500 AND 1000;
SELECT EMPNOME, DEPNUME
FROM EMP
WHERE DEPNUME IN (10,30);
SELECT EMPNOME, EMPSERV
27
APOSTILA DE MYSQL
FROM EMP
WHERE EMPNOME LIKE 'F%';
SELECT EMPNOME, EMPSERV
FROM EMP
WHERE EMPCOMI IS NULL;
O smbolo "%" pode ser usado para construir a pesquisa ("%"
= qualquer sequncia de nenhum at vrios caracteres).
OUTROS OPERADORES:
FUNES DE AGRUPAMENTO:
Administrao do MySQL
Existem duas maneiras para administrar os bancos de dados
criados no MySQL.
28
APOSTILA DE MYSQL
1. MODO TEXTO
APOSTILA DE MYSQL
shell> mysql
Depois que est conectado, voc pode desconectar a qualquer
momento, s digitar QUIT no mysql> prompt:
mysql> QUIT
Bye
Voc tambm pode desconectar por control-D.
Na maioria dos exemplos nas seguintes sees, assumem
que voc est conectado ao servidor.
Isto indicado por: mysql> prompt.
Entrando e consultando:
Neste ponto, mais importante descobrir como emitir
consultas de como criar tabelas, carregar e recuperar dados. Esta
seo descreve os princpios bsicos de como entrar com os
comandos, usando vrias perguntas.
Um comando simples pergunta ao servidor o nmero de sua
verso e a data corrente.
mysql> SELECT VERSION(), CURRENT_DATE;
Esta consulta demonstra vrias coisas sobre MySQL.
O ponto-e-vrgula nem sempre necessrio, h algumas
excees. O comando "quit" um deles.
Utilizando outra consulta em que se pode demonstrar o uso
do MySQL como uma simples calculadora:
mysql> SELECT SIN(PI()/4), (4+1)*5;
Os comandos mostrados tm estado em declaraes de linhas
nicas e curtas.
30
APOSTILA DE MYSQL
31
APOSTILA DE MYSQL
32
APOSTILA DE MYSQL
33
APOSTILA DE MYSQL
mysql>desc <tabela>
exibe uma descrio da <tabela>.
Para criar um banco de dados chamado vendas, voc deve
digitar o comando: create database vendas;
34
APOSTILA DE MYSQL
35
APOSTILA DE MYSQL
36
APOSTILA DE MYSQL
37
APOSTILA DE MYSQL
38
APOSTILA DE MYSQL
mysqldump
APOSTILA DE MYSQL
BIT
BOOL
BOOLEAN
Na verso 4.0 e anteriores, este so sinnimos para
TINYINT(1). A partir da verso 4.1.0, a exigncia de armazenamento
um nico bit (mais a exigncia atual para NULL se a coluna no
especificada como NOT NULL). O sinnimo BOOLEAN foi
adicionado na verso 4.1.0. Um tipo boolean verdadeiro ser
introduzido de acordo com o SQL-99.
SMALLINT
Um inteiro pequeno. A faixa do inteiro com sinal de -32768
at 32767. A faixa sem sinal de 0 a 65535.
MEDIUMINT
Um inteiro de tamanho mdio. A faica com sinal de -8388608
a 8388607. A faixa sem sinal de 0 to 16777215.
INT
Um inteiro de tamanho normal. A faixa com sinal de 2147483648 a 2147483647. A faixa sem sinal de 0 a 4294967295.
INTEGER
Este um sinnimo para INT.
BIGINT
Um inteiro grande. A faixa com sinal de 9223372036854775808 a 9223372036854775807. A faixa sem
sinal de 0 a 18446744073709551615. Existem algumas coisas
sobre campos BIGINT sobre as quias voc deve estar ciente:
Todas as operaes aritimticas so feitas usando valores
BIGINT ou DOUBLE com sinal, no devemos utilizar inteiros sem
sinal maiores que 9223372036854775807 (63 bits) exceto com
funes ded bit! Se voc fizer isto, alguns dos ltimos digitos no
resultado podem estar errados por causa de erros de
arredondamento na converso de BIGINT para DOUBLE. O MySQL
40
APOSTILA DE MYSQL
APOSTILA DE MYSQL
DOUBLE[(M,D)]
Um nmero de ponto flutuante de tamanho normal (duplapreciso). Valores permitidos esto entre -1.7976931348623157E+308
e -2.2250738585072014E-308, 0 e entre 2.2250738585072014E-308
e 1.7976931348623157E+308. Se UNSIGNED for especificado,
valores negativos no so permitidos. O M a largura do display e o D
nmero de casa decimais. DOUBLE sem argumento ou FLOAT(X)
onde 25 <= X <= 53 so nmeros de ponto flutuante de dupla-preciso.
DOUBLE PRECISION
REAL[(M,D)]
Estes so sinnimos para DOUBLE.
DECIMAL[(M[,D])]
Um nmero de ponto flutuante no empacotado. Se comporta
como um campo CHAR: ``no empacotado'' significa que o nmero
armazenado como uma string, usando um caracter para cada
digito do valor. O ponto decimal e, para nmeros negativos, o sinal
de menos (`-'), no so contados em M (mas reservado espao
para isto). Se D for 0, os valores no tero ponto decimal ou parte
fracionria. A faixa mxima do valor DECIMAL a mesma do
DOUBLE, mas a faixa atual para um campo DECIMAL dado pode
ser limitado pela escolha de M e D. Se UNSIGNED especificado,
valores negativos no so permitidos. Se D no for definido ser
considerado como 0. Se M no for definido considerado como
10. Note que antes da verso 3.23 do MySQL o argumento M deve
incluir o espao necessrio para o sinal o ponto decimal.
DEC[(M[,D])]
NUMERIC[(M[,D])]
FIXED[(M[,D])]
Este um sinnimo para DECIMAL. O alias FIXED foi
adicionado na verso 4.1.0 para compatibilidade com outros
servidores.
42
APOSTILA DE MYSQL
DATE
Uma data. A faixa suportada entre '1000-01-01' e '9999-1231'. MySQL mostra valores DATE no formato 'AAAA-MM-DD', mas
permite a voc a atribuir valores a campos DATE utilizando tanto
strings quanto nmeros.
DATETIME
Um combinao de hora e data. A faixa suportada entre
'1000-01-01 00:00:00' e '9999-12-31 23:59:59'. MySQL mostra
valores DATETIME no formato 'AAAA-MM-DD HH:MM:SS', mas
permite a voc que atribuir valores a campos DATETIME utilizado
strings ou nmeros.
TIMESTAMP[(M)]
Um timestamp. A faixa entre '1970-01-01 00:00:00' e algum
momento no ano 2037. No MySQL 4.0 ou anteriores, os valores
TIMESTAMP so exibidos nos formatos YYYYMMDDHHMMSS,
YYMMDDHHMMSS, YYYYMMDD, ou YYMMDD, dependendo se M
14 (ou no definido), 12, 8 ou 6, mas permite a voc atribuir valores
ao campo TIMESTAMP usando strings ou nmeros. Um campo
TIMESTAMP util para gravar a data e a hora em uma operao de
INSERT or UPDATE porque automaticamente definido a data e a
hora da operao mais recente se voc prprio no especificar um
valor. Voc tambm pode definir a data e a hora atual atribuindo ao
campo um valor NULL. Desde o MySQL 4.1, TIMESTAMP retornado
com um string com o formato 'YYYY-MM-DD HH:MM:SS'. Se voc
deseja t-lo como um nmero voc deve adcionar +0 a coluna
timestamp. Timestamp de tamanhos diferentes no so suportados.
Desde a verso 4.0.12, a opo --new pode ser usada para fazer o
servidor se comportar como na verso 4.1. Um TIMESTAMP sempre
armazenado em 4 bytes. O argumento M s afeta como a coluna
TIMESTAMP exibida. Note que colunas do tipo TIMESTAMP(M)
columns onde M 8 ou 14 so apresentadas como nmeros
enquanto as outras colunas TIMESTAMP(M) so strings. Isto apenas
para assegurar que podemos eliminar e restaurar com segurana
tabelas com estes tipos!
43
APOSTILA DE MYSQL
TIME
Uma hora. A faixa entre '-838:59:59' e '838:59:59'. MySQL
mostra valores TIME no formato 'HH:MM:SS', mas permite a voc
atribuir valores para as colunas TIME usando strings ou nmeros.
YEAR[(2|4)]
Um ano no formato de 2 ou 4 digitos (padro so 4 digitos). Os
valores permitidos esto entre 1901 e 2155, 0000 no formato de 4
digitos, e 1970-2069 se voc estiver usando o formato de 2 digitos
(70-69). MySQL mostra valores YEAR no formato YYYY, mas permie
atribuir valores aos campos do tipo YEAR usando strings ou
nmeros. (O tipo YEAR novo na verso 3.22 do MySL).
CHAR(M)
Uma string de tamanho fixo que sempre preenchida a direita
com espaos at o tamanho especificado quando armazenado. A
faixa de M de 1 a 255 caracteres. Espaos extras so removidos
quando o valor recuperado. Valores CHAR so ordenados e
comparados no modo caso insensitivo de acordo com o conjunto
de caracteres padro, a menos que a palavra chave BINARY seja
utilizada. A partir da verso 4.1.0, se o valor M especificado maio
que 255, o tipo de coluna convertido para TEXT. Este um recurso
de compatibilidade. NATIONAL CHAR (ou em sua forma reduzida
NCHAR) o modo SQL-99 de definir que um campo CHAR deve
usar o conjunto CHARACTER padro. Este o padro no MySQL.
CHAR uma simplificao para CHARACTER. O MySQL lhe
permite criar um campo do tipo CHAR(0).Isto muito til quando
voc precisa de comptibilidade com aplicativos antigos que
dependem da existncia de uma coluna, mas que, na verdade,
no utiliza um valor. Isto tambm muito bom quando voc precisa
de uma coluna que s pode receber 2 valores. Um CHAR(0), que
no definido como um NOT NULL, s ir ocupar um bit e pode
assumir 2 valores: NULL or "".
44
APOSTILA DE MYSQL
BIT
BOOL
VARCHAR(M)
Uma string de tamanho varivel. NOTA: Espaos extras so
removidos quando o caracter armazenado (o que difere da
especificao ANSI SQL). A faixa de M de 1 a 255 characters.
Valores VARCHAR so ordenados e comparados no modo caso
insensitivo a menos que a palavra chave BINARY seja utilizada. A
partir da verso 4.1.0, se o valor M especificado maio que 255, o
tipo de coluna convertido para TEXT. Este um recurso de
compatibilidade. VARCHAR uma simplificao para CHARACTER
VARYING.
TINYBLOB
TINYTEXT
Um campo BLOB ou TEXT com tamanho mximo de 255
(2^8 - 1) caracteres.
BLOB
TEXT
Um campo BLOB ou TEXT com tamanho mximo de 65535
(2^16 - 1) caracteres.
MEDIUMBLOB
MEDIUMTEXT
Um campo BLOB ou TEXT com tamanho mximo de
16777215 (2^24 - 1) caracteres.
LONGBLOB
LONGTEXT
Um campo BLOB ou TEXT com tamanho mximo de
4294967295 ou 4G (2^32 - 1) caracteres. At a verso 3.23 o
protocolo cliente/servidor e tabelas MyISAM tinham um limite de
16M por pacote de transmisso/registro de tabela, a partir da verso
4.x o tamanho mximo permitido das colunas LONGTEXT ou
LONGBLOB depende do tamanho mximo configurado para o
pacote no protocolo cliente/servidor e da memria disponvel.
45
APOSTILA DE MYSQL
ENUM('valor1','valor2',...)
Uma enumerao. Um objeto string que s pode ter um valor,
selecionado da lista de valores 'valor1', 'valor2', ..., NULL ou valor
especial de erro "". Um ENUM pode ter um mximo de 65535
valores diferentes.
SET('valor1','valor2',...)
Um conjunto. Um objeto string que pode ter zero ou mais
valores, cada um deve ser selecionado da lista de valores 'valor1',
'valor2', .... Um SET pode ter at 64 membros.
EXERCCIOS:
46
APOSTILA DE MYSQL
47
APOSTILA DE MYSQL
48
APOSTILA DE MYSQL
Bibliografia
Fundamentals of Database Systems; Ramez Elmasri,
Shamkant Navathe; The Benjamin CummingsPublishing Company;
1989;
Sistema de Banco de Dados; Henry F. Korth, Abraham
Silberschatz; Makro Books; 1995;
SQL Language - Oracle Reference Manual; Version 7.2;
www.mysql.com
49
APOSTILA DE MYSQL
Anotaes
50
APOSTILA DE MYSQL
Anotaes
51
APOSTILA DE MYSQL
Anotaes
52
APOSTILA DE MYSQL
Anotaes
53
APOSTILA DE MYSQL
Anotaes
54
APOSTILA DE MYSQL
Anotaes
55
APOSTILA DE MYSQL
Anotaes
56
APOSTILA DE MYSQL
Anotaes
57
APOSTILA DE MYSQL
Anotaes
58
APOSTILA DE MYSQL
59
APOSTILA DE MYSQL
60