Fábio Borges de Oliveira
MySQL
F.A.Q.
SQL padrão de Structured Query Language
¿ My ?
SQL permite acessar uma database
SQL é ANSI standard computer language
O nome do golfinho do MySQL é Sakila
S.O. suportados
AIX 4.x com threads nativas.
Amiga.
BSDI 2.x com o pacote incluído MIT-pthreads.
BSDI 3.0, 3.1 e 4.x com threads nativas.
SCO OpenServer with a recent port of the
FSU Pthreads package.
SCO UnixWare 7.0.1.
DEC Unix 4.x com threads nativas.
FreeBSD 2.x com o pacote incluído MIT-
pthreads.
FreeBSD 3.x e 4.x com threads nativas.
FreeBSD 4.x com Linux threads.
S.O. suportados
HP-UX 10.20 com o pacote incluído MIT-
pthreads ou DCE threads.
HP-UX 11.x com as threads nativas.
Linux 2.0+ com LinuxThreads 0.7.1+ ou glibc
2.0.7+.
Mac OS X Server
NetBSD 1.3/1.4 Intel e NetBSD 1.3 Alpha
(Necessita GNU make).
Novell NetWare 6.0
OpenBSD > 2.5 com threads nativas. OpenBSD
< 2.5 com o pacote incluído MIT-pthreads
S.O. suportados
OS/2 Warp 3, FixPack 29 e OS/2 Warp
4, FixPack 4.
SGI Irix 6.x com threads nativas.
Solaris 2.5 e superior com threads
nativas nas plataformas SPARC e x86.
SunOS 4.x com o pacote incluído MIT-
pthreads.
Tru64 Unix
Windows 9x, Me, NT, 2000 e XP.
Por que MySQL?
Portabilidade
Segurança
Escalabilidade e limites
usuários com 60.000 tabelas e
aproximadamente [Link] de
linhas. É permitido 32 índices por tabela.
Cada índice pode ter de 1 a 16 colunas. O
tamanho máximo do índice é de 500
bytes (isto pode ser alterado).
Conectividade: TCP/IP, ODBC
Localização: caracteres em várias línguas
Limite do tamanho do arquivo
Linux-Intel 32 bit 2G
Linux-Alpha 8T (?)
Solaris 2.5.1 2G (É possível 4GB com patch)
Solaris 2.6 4G (pode ser alterado com
parâmetro)
Solaris 2.7 Intel 4G Solaris 2.7 ULTRA-
SPARC 8T (?)
Introdução
shell> mysql --help
shell> mysql –u root
mysql> SELECT USER(),CURRENT_DATE;
mysql> SELECT
-> USER()
-> ,
-> CURRENT_DATE;
mysql> QUIT
Saída
SELECT VERSION(),CURRENT_DATE;
select version(), current_date;
SeLeCt vErSiOn(), current_DATE;
SELECT SIN(PI()/4), (1+10)/2;
SELECT VERSION(); SELECT NOW();
Quantos dias você tem?
Banco de dados
SHOW DATABASES;
CREATE DATABASE Nome-do-banco;
CREATE DATABASE IF NOT EXISTS Nome-
do-banco;
USE Nome-do-banco;
SELECT DATABASE();
Tabelas
SHOW TABLES;
CREATE TABLE aluno (nome VARCHAR(20),
sexo CHAR(1), nasc DATE, telefone int(7)
INDEX idx1 (sexo,nome) );
DESCRIBE aluno;
INSERT INTO aluno VALUES ('Fábio','M','1973-
07-09',NULL);
SELECT * FROM aluno;
DELETE FROM aluno;
Alterando a tabela
ALTER TABLE aluno ADD cidade varchar(23);
DESCRIBE aluno;
ALTER TABLE aluno DROP COLUMN cidade;
CREATE INDEX ndxfone ON aluno (telefone);
DESCRIBE aluno;
DROP INDEX [Link];
CREATE INDEX ndxfone ON aluno (sexo DESC,
nome);
CREATE UNIQUE INDEX ndxRG ON aluno
(RG);
Especificando
SELECT * FROM aluno WHERE nome="Fábio";
SELECT * FROM aluno WHERE nome>="F";
SELECT * FROM aluno WHERE nome<"B" AND
sexo = "f";
SELECT * FROM aluno WHERE (nome="Fábio"
AND sexo = "m") OR (Nome = "A" AND sexo
= "f");
Colunas
SELECT nome, nasc FROM aluno;
SELECT nome, telefone FROM aluno WHERE
sexo = "f";
SELECT nome, telefone FROM aluno WHARE
telefone IS NOT NULL;
SELECT DISTINCT telefone FROM aluno
SELECT * FROM aluno ORDER BY nasc;
SELECT * FROM aluno ORDER BY nasc DESC;
SELECT * FROM aluno ORDER BY
BINARY(nome)
Datas
SELECT nome, nasc, CURDATE(),
(YEAR(CURDATE()) - YEAR(nasc)) -
(RIGHT(CURDATE(),5)<RIGHT(nasc,5))
AS idade FROM aluno
ORDER BY idade;
Lista de aniversariantes
SELECT nome, nasc FROM aluno WHERE
MONTH(nasc) = 5
SELECT nome, nasc FROM aluno WHERE
MONTH(nasc) =
MONTH(DATE_ADD(CURDATE(),
INTERVAL 1 MONTH));
SELECT nome, nasc FROM aluno WHERE
MONTH(nasc) =
MOD(MONTH(CURDATE()), 12) + 1;