Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Utilizando o MySQL
Exercícios, Utilizando o MySQL 4. Existe uma cidade com mais de 1
1. SELECT presidente?
5. Imprimir os pontos, os nomes de todos
a) Depois do capítulo 5 sobre SELECT, os estudantes e as datas dos eventos
WHERE, GROUP BY, ORDER BY 6. Qual a pontuação total de cada
estudante?
1. Imprimir todos os estudantes 7. Qual a pontuação total de cada
2. Imprimir todos os estudantes do sexo estudante em testes (quizzes, verificar o
masculino tipo do evento)?
3. Imprimir apenas os nomes dos
estudantes do sexo masculino. 2. Linguagem de Manipulação de Dados:
4. Imprimir os nomes dos estudantes do INSERT, UPDATE, DELETE, REPLACE
sexo masculino em ordem alfabética
5. Imprimir todos os presidentes da 1. Insira você como presidente.
Virgínia (VA) que nasceram depois de 2. Altere a sua cidade para “Bedford”.
1800 3. Submeta novamente o seu comando
6. Quais presidentes morreram entre 1950 INSERT anterior – gerou um erro no
e 2000? MySQL? Por quê?
7. Quais presidentes têm nomes com 4 ou 4. Faça os campos ultimo_nome e
5 letras? primeiro_nome como chaves primárias.
8. Existe algum presidente com nome 5. Submeta mais uma vez o seu comando
terminado em “son”? INSERT anterior – gerou um erro no
9. Quais os campos existentes na tabela MySQL? Por quê?
membro? 6. Insira você como presidente, mas
10. Qual é o total de membros por estados? utilizando REPLACE.
7. Submita novamente o seu comando
b) Depois do capítulo 6 sobre funções REPLACE, alterando sua cidade para
matemáticas “Bedford” – Funcionou?
8. Remova você da tabela presidente.
1. Imprimir todos os membros que
começam com a letra “k”, no formato 3. Linguagem de Descrição de Dados:
“sobrenome, nome”. CREATE
2. Listar o número de presidentes
aniversariantes para cada mês do ano, 1. Crie uma tabela para armazenar
considerando todos os presidentes endereços com o formato utilizado em
mortos ou vivos. seu país.
3. Listar o total de presidentes nascidos 2. Insira você e pelo menos um amigo
em cada ano? nesta tabela.
4. Refinar a lista de presidentes anterior 3. Faça uma listagem das pessoas no
listando o total de presidentes que banco de dados.
nascidos em cada década (Ex: 1840 ao 4. Oops, você percebeu que você
invés de 1843, ano exato), para se obter esqueceu o campo de e-mail. Insira este
um número menor de linhas. campo depois do campo nome.
5. Imprimir todos os domínios de Internet 5. Atualize o seu endereço de e-mail e o
existentes nos endereços de mail do do seu amigo.
membros, com apenas uma linha por 6. Faça uma nova listagem.
domínio. 7. Você percebeu que o campo utilizado
6. Imprimir todos os presidentes em ordem para “código postal” deve ser
alfabética dos seus últimos nomes. renomeado para “cepMundo” e deve
7. Refinar a lista de presidentes em ordem possuir o formato de 10 caracteres para
alfabética anterior listando-os no funcionar universalmente. Renomeie o
formato “Michael Widenius......... campo e altere o seu formato.
5.3.1962” com um número máximo de
50 caracteres, separados por pontos e a
data no formato d.m.yyyy.
sexo
evento
sexo: char(1) membro_senha
evento_id: integer
sexodescr: char(10) membro_id: integer
data: date
tipo: char(1) senha: char(8)
estudante pontos
estudante_id: integer estudante_id: integer
membro
nome: varchar(20) evento_id: integer
membro_id: integer
sexo: char(1) pontos: integer
ultimo_nome: varchar(20)
primeiro_nome: varchar(20)
sufixo: varchar(5)
validade: date
email: varchar(100)
rua: varchar(50)
cidade: varchar(50)
presidente estado: char(2)
ausencia
cep: varchar(10)
data: date telefone: varchar(20)
estudante_id: integer ultimo_nome: varchar(15)
participacoes: varchar(255)
primeiro_nome: varchar(15)
sufixo: varchar(5)
cidade: varchar(20)
estado: char(2)
nascimento: date
morte: date
ESTRUTURA DAS TABELAS DO BANCO DE DADOS CURSO
Administrando o MySQL
Exercícios sobre administração do Banco de dados MySQL
1. Estrutura e Configuração do arquivo de Log
1. Entre no cliente mysql e forneça uma nova senha para o usuário root.
2. Saia e entre novamente e verifique se a senha funciona.
3. Remova a senha do usuário root (para que o instrutor também possa logar).
4. Crie um banco de dados chamado [seu_nome]_world.
5. Crie um usuário “seu_nome” que possa conectar somente localmente ao banco de dados
criado.e tenha que privilégios CREATE, SELECT, INSERT e UPDATE neste banco.
6. Entre novamente no cliente mysql com o usuário “seu_nome” e crie uma tabela no banco de
dados [seu_nome]_world.
7. Adicione uma coluna à tabela.
8. Entre no cliente como root e mude os privilégios do usuário “seu_nome” somente para a
tabela criada e não para o banco de dados inteiro.
9. Verifique se você obteve sucesso por meio do comando SHOW GRANTS FOR usuario.
10. Adicione o privilégio ALTER na tabela para o usuário “seu_nome”.
11. Entre no mysql como “seu_nome” e tente adicionar uma coluna à tabela.
12. Crie outro usuário seu_nome1@localhost e dê a ele todos os privilégios no banco [seu_nome]
_world e o privilégio de dar privilégios para outros usuários.
13. Entre no mysql como “seu_nome1” e crie uma nova tabela “Oceanos”, no banco de dados
[seu_nome]_world, contendo as colunas (Nome char(30), AreaSuperficie int).
14. Adicione algumas linhas à tabela “Oceanos” (Os dados não têm que ser corretos!).
15. Permita ao “seu_nome” ver a coluna Nome, mas não a coluna AreaSuperficie da tabela
“Oceanos”.
16. Entre no mysql como “seu_nome” e tente submeter SELECT’s à tabela “Oceanos”. O que você
pode selecionar?
17. Retire todos os privilégios do usuário “seu_nome1” e remova o usuário.
18. Faça o mesmo com o usuário “seu_nome”.
19. Verifique se ambos os usuários foram removidos com SHOW GRANTS FOR.
Exercícios sobre administração do Banco de dados MySQL
3. Tipos de Tabela
1. Crie uma tabela HEAP contendo algum dado (ex. Codigo e Nome) de todos os países Norte
Americanos.
2. Crie outra tabela HEAP contendo os mesmos dados dos países Sul Americanos.
3. Verifique o status das suas tabelas com SHOW TABLE STATUS.
4. Mude o tipo das suas novas tabelas para MyISAM.
5. Crie uma tabela MERGE das suas tabelas recém criadas.
6. Execute SELECT’s na sua tabela MERGE. Em qual ordem os dados foram extraídos?
7. Vá para o shell e para o seu diretório de dados.
8. Verifique quais os arquivos que a sua tabela MERGE possui.
9. Examine o arquivo .MRG.
10. Remova as suas duas primeiras tabelas.
11. Faça um SELECT da sua tabela MERGE, o que acontece?
12. Execute FLUSH TABLES.
13. Faça novamente o SELECT da sua MERGE, o que acontece agora?
14. Remova a tabela MERGE.
Exercícios sobre administração do Banco de dados MySQL
4. Backup e Recuperação
1. Faça um backup com o mysqldump, a partir do shell, do seu banco de dados curso.
2. Examine o backup que você acabou de criar.
3. Faça um backup do banco de dados curso com o BACKUP TABLE e examine os arquivos.
4. Entre no cliente mysql e crie um banco de dados curso_old e restaure neste banco os dados
do seu arquivo de backup (exercício 1).
5. Use o mysqldump com a opção --tab=/path para criar um backup da tabela estudantes no
banco de dados curso
6. Compare os arquivos gerados em 1 e 5.
7. Faça um backup da tabela Oceanos criada no exercício 2 usando o comando BACKUP
TABLE.
8. Inserir algumas linhas na tabela Oceanos.
9. FLUSH TABLES.
10. Na shell, copie o arquivo Oceanos.MYD do backup sobre o arquivo Ocenos.MYD atual.
11. CHECK a tabela Oceanos.
12. REPAIR a tabela se ela estiver danificada.
Exercícios
Otimizando o MySQL
Exercícios de Otimização do MySQL
Para os exercícios a seguir, serão usadas as seguintes tabelas:
- cl - Cadastro de Grupos de Produtos (ou Centros de Lucro)
- custp - Cadastro de Clientes
- prd - Cadastro de Produtos
- nf - Notas Fiscais
- xaprd - Produtos de Notas Fiscais
- xalog2 - Histórico de Vendas de Produtos
1. Crie essa tabelas na sua base, seguindo as definições dos campos abaixo. A ordem dos
campos deverá ser a mesma informada em cada um dos quadros abaixo.
Campos da Tabela cl: Campos da Tabela custp
- No. do Centro de Lucro (clno, int) - No. do Cliente (custno, int)
- Descrição (name, 36) - Nome do Cliente (name, 40)
- CPF (cpf_cgc, 20)
Chave Primária = campo clno
Chave Primária = campo custno
Chave #2 = name
Campos da Tabela prd Campos da Tabela nf
- Centro de Lucro (clno, int) - No.Transação (xano, int)
- Preço à Vista (sp, - No. NF (nfno, int)
bigint) - No.Cliente (custno, int)
- Departamento (deptno, - Data (date, int)
int) - Total da NF (amt, bigint)
- Grupo (groupno, Loja (storeno,
int) smallint)
- No. do Produto (prdno, alfa, - PDV (pdvno,
16) smallint)
- Nome do Produto (name, 40) - Tipo da NF (tipo,
smallint)
Chave Primária = campo prdno
Chave Primária = campos storeno, pdvno, xano
Chave #2 = storeno, date
Campos da Tabela xaprd Campos da Tabela xalog2
- No.Transação (xano, int) - No.Transação (xano, int)
- Preço Unitário (price, bigint) - Data (date, int)
Quantidade (qtty, double) - No.Cliente (custno, int)
- Loja (storeno, - Centro Lucro Produto* (clno, bigint)
smallint) - Preço Unitário (price, bigint)
- PDV (pdvno, - Quantidade (qtty, int)
smallint) - Loja (storeno,
- No. Produto (prdno, smallint)
alfa,16) - PDV (pdvno,
smallint)
Chave Primária = campos storeno, pdvno, xano, - No. Produto (prdno, alfa,
prdno 16)
-
Chave Primária = campos storeno, pdvno, xano, prdno
2. Depois de criadas as tabelas, faça a importação dos dados para cada uma dessas tabelas
utilizando o comando LOAD DATA INFILE, já que essa é a forma mais OTIMIZADA de se
fazer uma inserção de muitos registros no MySQL. Para cada tabela, existe o arquivo com a
extensão “.txt” que contém os dados a serem importados (diretório /u/sql). Exemplos: /
u/sql/prd.txt, /u/sql/custp. txt, etc.
OBSERVAÇÕES:
- Os exercícios a seguir visam desenvolver queries encontradas no dia-a-dia;
- Use o EXPLAIN para verificar como será o caminho do MySQL para a execução da
SELECT;
3. Desenvolva um relatório (SELECT) que mostre a SOMA TOTAL das quantidades dos produtos
das NFs e a SOMA TOTAL dos subtotais (qtty x price) desses produtos para as NFs emitidas
em Janeiro de 2000.
Detalhe: o resultado deverá ser agrupado pelo DEPARTAMENTO do Produto!
Dica: relacione as tabelas nf, xaprd e prd sem usar a palavra JOIN.
4. Essa query provavelmente será rápida, mas ainda pode ser melhor. Reescreva a SELECT e
verifique se o tempo foi inferior à SELECT anterior.
6. Sabendo que a informação do departamento do Produto pode ser extraído do centro de lucro a
partir de uma conta matemática, mostre, a partir do xalog2, o No. do Departamento, o total de
quantidades vendidas e quantos registros foram lidos de Janeiro a Junho de 2000, para o
Departamento 250500.
Detalhe: apenas a tabela xalog2 deverá ser lida, não há relacionamento entre tabelas.
Dica: a função matemática FLOOR da linguagem SQL deverá ser utilizada para se achar o
valor correto do Departamento.
8. Crie um relatório que mostre de forma analítica cada produto vendido (xalog2) no dia
01/Junho/2001 para os seguintes departamentos: 210900, 070100, 090101. Os campos a
serem mostrados são: Loja da Venda, Código do Produto, Descrição do Produto, Data da
Venda (formato dd/mm/yyyy), Centro de Lucro (formato 6 dígitos, com zeros à esquerda),
Nome do Cliente, Quantidade Vendida e Preço Unitário.
Detalhe: o resultado final deverá ser ordenado pelo Nome do Cliente
Dica: será preciso relacionar as tabelas xalog2, prd e custp
11. Onde está a otimização nesse caso ? Mostre um caso não otimizado e veja se faz alguma
diferença.
Pense em uma SELECT que informe quaisquer dados relativos à vendas (xalog2). O relatório
deverá ter uma seleção segundo um critério que você mesmo deve definir (data, loja, cliente,
ou qualquer combinação entre eles). Construa a SELECT.
12. A SELECT desenvolvida pode ser otimizada ? Como ? Um índice ajudaria ? Comprove que
houve uma otimização (tempo ANTES e tempo DEPOIS!)
Diagrama ER para as tabelas do exercício de Otimização
nf
xano: integer xaprd
storeno: smallint xano: integer
pdvno: smallint storeno: smallint
pdvno: smallint
nfno: integer prdno: char(16)
custno: integer
date: integer price: bigint
amt: bigint qtty: double
tipo: smallint
custp
custno: integer
name: char(40)
cpf_cgc: char(20)
xalog2
xano: integer prd
storeno: smallint
prdno: char(16)
pdvno: smallint
prdno: char(16) clno: integer
sp: bigint
date: integer
deptno: integer
clno: integer
groupno: integer
price: bigint
name: char(40)
custno: integer
qtty: integer
cl
clno: integer
name: char(36)
Operadores e Funções do
MySQL
Operadores e Funções do MySQL
Operadores
Operadores são utilizados em expressões aritméticas, comparação de valores, operações
binárias, operações lógicas ou casamento de padrões.
1. Operadores aritméticos:
+, -, *, / e
%, resto da divisão inteira.
Ex: 6 % 3 = 0
5%2=1
2. Operadores de Comparação:
<=>, <, <=, =, >, >=, <>, !=, BETWEEN AND, IN, NOT IN
3. Operadores lógicos:
| calcula o OR binário dos operandos.
Ex: 1 | 1 = 1
1|2=3
4. Operadores lógicos
NOT ou !
Negação
OR ou ||
OU lógico
Ex: 1 OR 0 = 1
AND ou &&
E lógico
Ex: 1 AND 0 = 0
Funções
Funções são utilizadas para cálculos, retornando o resultado destes cálculos.
ISNULL(exp)
Retorna 1 se o valor de exp é NULL, caso contrário retorna 0.
Ex: ISNULL(NULL) =1
ISNULL(7) =0
STRCMP(str1, str2)
Retorna 0 se a string str1 é igual a string str2, 1 se são diferentes, ou NULL se
ambos os argumentos são NULL. A comparação é caso sensitiva.
Ex: STRCMP(“a”, “a”) =0
STRCMP(“a”, “A”) =1
2. Funções Numéricas
ABS(x)
Retorna o valor absoluto de x.
Ex: ABS(13.5) = 13.5
ABS(-13.5) = 13.5
ACOS(x)
Retorna o valor do arco cosseno de x.
Ex: ACOS(1) = 0.000000
ACOS(0) = 1.570796
ASIN(x)
Retorna o valor do arco seno de x.
Ex: ASIN(1) = 1.570796
ASIN(0) = 0.000000
ATAN(x)
Retorna o valor do arco tangente de x.
Ex: ATAN(1) = 0.785398
ATAN(0) = 0.000000
CEILING(x)
Retorna o menor inteiro não menor que x.
Ex: CEILING(3.8) =4
CEILING(-3.8) = -3
COS(x)
Retorna o valor do cosseno de x em radianos.
Ex: COS(PI() / 2) = 0.000000
COS(0) = 1.000000
COT(x)
Retorna o valor da cotangente de x em radianos.
Ex: COT(PI() / 2) = 0.000000
COT(PI() / 4) = 1.000000
DEGREES(x)
Retorna o valor de x convertido de radianos para graus.
Ex: DEGREES(PI()) = 180
DEGREES(PI()*2) = 360
EXP(x)
Retorna ex, onde e é a base do logaritmo natural.
Ex: EXP(1) = 2.718282
FLOOR(x)
Retorna o maior inteiro não maior que x.
Ex: CEILING(3.8) =3
CEILING(-3.8) = -4
LOG(x)
Retorna o logaritmo natural de x (base e).
Ex: LOG(2) = 0.693147
LOG10(x)
Retorna o logaritmo de x na base 10.
Ex: LOG10(10) = 1.000000
MOD(m, n)
Retorna o mesmo que m % n.
Ex: MOD(4, 2) =0
MOD(5, 3) =1
PI()
Retorna o valor de .
Ex: PI() = 3.141593
POW(x, y) ou POWER(x, y)
Retorna x y.
Ex: POW(2, 4) = 16
POWER(2, 4) = 16
RADIANS(x)
Retorna o valor de x convertido de graus para radianos.
Ex: RADIANS(360) = 6.28319
RAND()
Retorna um número ponto-flutuante aleatório entre 0.0 e 1.0.
Ex: RAND() = 0.117195
RAND() = 0.358596
ROUND(x), ROUND(x, d)
Retorna o valor de x arredondado para inteiro. ROUND(x, d) retorna o valor de x
arredondado com d casas decimais.
Ex: ROUND(15.3) = 15
ROUND(15.5) = 16
ROUND(15.27834, 2) = 15.28
SIGN(x)
Retorna –1 se x é negativo, 0 se x é igual a 0, ou 1 se o valor de x é positivo.
Ex: SIGN(15) =1
SIGN(-15) = -1
SIGN(0) =0
SIN(x)
Retorna o valor do seno de x em radianos.
Ex: SIN(PI() / 2) = 1.000000
SIN(0) = 0.000000
TAN(x)
Retorna o valor da tangente de x em radianos.
Ex: TAN(PI() / 4) = 1.000000
TAN(0) = 0.000000
TRUNCATE(x, d)
Retorna o valor de x com a parte decimal truncada em d casas decimais. Se d é 0, o
resultado não tem casas decimais. Se d é maior que o número de casas decimais em
x, a parte fracionária será completada com zero.
Ex: TRUNCATE(1.23, 1) = 1.2
TRUNCATE(1.23, 0) =1
TRUNCATE(1.23, 4) = 1.2300
3. Funções de String
ASCII(str)
Retorna o código ASCII do caracter mais à esquerda da string str.
Ex: ASCII(“abcd”) = 97
ASCII(“ ”) =0
BIN(n)
Retorna uma string com o valor de n em binário.
Ex: BIN(4) = 100
FORMAT(x, d)
Formata o número x em uma string com d casas decimais no seguinte formato: “nn,
nnn.nnn”. Se d é 0, o resultado não tem ponto decimal ou parte fracionária.
Ex: FORMAT(1234.56789, 3) = “1,234.568”
FORMAT(999999.99, 2) = “999,999.99”
HEX(n)
Retorna o número n em formato hexadecimal.
Ex: HEX(100) = “64”
INSTR(str, substr)
Sinônimo para função LOCATE() com dois argumentos.
LCASE(str) ou LOWER(str)
Retorna a string str com todos os caracteres convertidos para minúsculo.
Ex: LCASE(“MySQL”) = “mysql”
LEFT(str, tam)
Retorna os tam caracteres à esquerda da string str. Retorna NULL se str é NULL.
Retorna string vazia se tam é NULL ou menor que 1.
Ex: LEFT(“MySQL”, 2) = “My”
LENGTH(str)
Retorna o tamanho da string str.
Ex: LENGTH(“MySQL”) =5
LENGTH(“abc”) =3
LTRIM(str)
Retorna a string str sem os espaços à esquerda.
Ex: LTRIM(“ MySQL ”, 10, “+”) = “MySQL ”
OCT(n)
Retorna o valor de n em octal.
Ex: OCT(100) = 144
OCTET_LENGTH(str)
Sinônimo de LENGTH().
REPEAT(str, n)
Retorna a string consistindo da string str repetida n vezes. Retorna string vazia se n é
negativo, ou NULL se ambos os argumentos são NULL.
Ex: REPEAT(“x”, 5) = “xxxxx”
REVERSE(str)
Retorna a string consistindo da string str com os caracteres na ordem inversa.
Ex: REVERSE(“abracadabra”) = “arbadacarba”
RIGHT(str, tam)
Retorna os tam caracteres à esquerda da string str. Retorna NULL se str é NULL.
Retorna string vazia se tam é NULL ou menor que 1.
Ex: RIGHT(“MySQL”, 3) = “SQL”
RTRIM(str)
Retorna a string str sem os espaços à direita.
Ex: RTRIM(“ MySQL ”) =“ MySQL”
SOUNDEX(str)
Retorna a string soundex calculada a partir da string str. Caracteres não
alfanuméricos são ignorados. Caracteres internacionais não alfabéticos fora da faixa
de ‘A’ a ‘Z’ são tratados como vogais.
Ex: SOUNDEX(“Cow”) = “C000”
SOUNDEX(“Hello”) = “H400”
SPACE(n)
Retorna a string consistindo de n espaços, conjunto vazio se n é negativo, ou NULL
se n for NULL.
Ex: SPACE(6) =“ ”
SPACE(0) = “”
SPACE(NULL) = NULL
SUBSTRING(str, pos)
SUBSTRING(str, pos, tam)
SUBSTRING(str FROM pos)
SUBSTRING(str FROM pos FOR tam)
Retorna a substring da string str, começando na posição pos. Se informado o
argumento tam, retorna a substring com tam caracteres; caso contrário, retorna toda
a parte à direita da string, começando na posição pos.
Ex: SUBSTRING(“abcdef”, 3) = “cdef”
SUBSTRING(“abcdef”, 3, 2) = “cd”
SUBSTRING_INDEX(str, delim, n)
Retorna a substring da string str. Se n é positivo a função encontra a n-ésima
ocorrência da string delim, retornando toda a parte à esquerda do delim. Se n é
negativo a função encontra a n-ésima ocorrência do delim, contando a partir da
direita e retornando toda a parte à direita do delim. Se delim não é encontrado em
str, toda a string é retornada. Retorna NULL se qualquer argumento for NULL.
Ex: SUBSTRING_INDEX(“jar-jar”, “j”, -2) = “ar-jar”
SUBSTRING_INDEX(“paul@mysql.com”, “@”, 1) = “paul”
UCASE(str) ou UPPER(str)
Retorna a string str com todos os caracteres convertidos para maiúsculo ou NULL
se str for NULL.
Ex: UCASE(“New York, NY”) = “NEW YORK, NY”
CURDATE() ou CURRENT_DATE
Retorna a data corrente como uma string no formato: “YYYY-MM-DD”, ou como
um número no formato YYYYMMDD, de acordo com o contexto no qual a função
é utilizada.
Ex: CURDATE() = “1999-08-10”
CURDATE() + 0 = 19990810
CURTIME() ou CURRENT_TIME
Retorna a hora do dia corrente em uma string no formato: “hh:mm:ss”, ou como um
número no formato hhmmss, de acordo com o contexto no qual a função é utilizada.
Ex: CURTIME() = “16:41:26”
CURTIME() + 0 = 164126
CURRENT_TIMESTAMP
Sinônimo para a função NOW().
DATE_FORMAT(data, formato)
Formata o argumento data (date ou time) de acordo com a string de formatação
formato. Esta função pode ser utilizada para formatar valores DATE ou
DATETIME de acordo com um formato mais adequado ao usuário.
Ex: DATE_FORMAT(1999-12-01, “%M %e, %Y”) = “December 1, 1999”
DATE_FORMAT(1999-12-01, “%d/%m/%Y”) = “01/12/1999”
Caracteres utilizados para a formatação de valores DATE ou DATETIME
Caracter Significado
%S, %s Segundos com 2 dígitos (00, 01, ..., 59)
%i Minutos com 2 dígitos (00, 01, ..., 59)
%H Hora com 2 dígitos e 24-horas (00, 01, ..., 23)
%h, %I Hora com 2 dígitos e 12-horas (00, 01, ..., 12)
%k Hora em formato numérico e 24-horas (0, 1, ..., 23)
%l Hora em formato numérico e 12-horas (0, 1, ..., 12)
%T Hora em formato 24-horas (hh:mm:ss)
%r Hora em formato 12-horas (hh:mm:ss AM ou hh:mm:ss PM)
%p AM ou PM
%W Nome do dia da semana (Sunday, Monday, ..., Saturday)
%a Nome abreviado do dia da semana (Sun, Mon, ..., Sat)
%d Dia do mês no formato numérico (1, 2 ..., 31)
%e Dia do mês com sufuxo inglês (1st, 2nd, 3rd, ....)
%D Dia da semana em formato numérico(0=Sunday, 1=Monday, ...)
%w Dia do ano com 3 dígitos (000, 001, ...., 366)
%j Semana (0, 1,..., 52), onde Sunday é o primeiro dia da semana
%U Semana (0, 1,..., 52), onde Monday é o primeiro dia da semana
%M Nome do mês (January, February, ..., December)
%b Nome do mês abreviado (Jan, Feb, ..., Dec)
%m Mês com 2 dígitos (01, 02, ...., 12)
%c Mês no formato numérico (1, 2, ...., 12)
%Y Ano com 4 dígitos
%y Ano com 2 dígitos
%% Literal %
DAYNAME(data)
Retorna a string com o nome do dia da semana referente ao argumento data.
Ex: DAYNAME(“1999-12-01”) = “Wednesday”
DAYNAME(“1900-12-01”) = “Saturday”
DAYOFMONTH(data)
Retorna o valor numérico do dia do mês referente à data, dentro da faixa 1 a 31.
Ex: DAYOFMONTH(“1999-12-01”) =1
DAYOFMONTH(“1900-12-25”) = 25
DAYOFWEEK(data)
Retorna o valor numérico do dia da semana referente à data, dentro da faixa 1 para
Sunday a 7 para Saturday.
Ex: DAYOFWEEK(“1999-12-05”) =1
DAYOFWEEK(“1999-12-11”) =7
DAYOFYEAR(data)
Retorna o valor numérico do dia do ano referente à data, dentro da faixa 1 a 366.
Ex: DAYOFYEAR(“1999-12-01”) = 335
DAYOFYEAR(“2000-12-31”) = 366
FROM_DAYS(n)
Dado um valor numérico representando o número de dias a partir do ano 0
(tipicamente obtido a partir da função TO_DAYS()), retorna a data correspondente.
Ex: TO_DAYS(“1999-12-01”) = 730454
FROM_DAYS(730454 + 3) = “1999-12-04”
FROM_UNIXTIME(unix_timestamp)
FROM_UNIXTIME(unix_timestamp, formato)
Dado o valor do timestamp do UNIX unix_timestamp, retorna o valor da data e hora
no formato “YYYY-MM-DD hh:mm:ss”, ou como número no formato
YYYYMMDDhhmmss, de acordo com o contexto em que a função está sendo
utilizada. Se for especificada a string formato, o valor retornado segue o formato
especificado.
Ex: FROM_UNIXTIME(934340541) = “1999-08-10 22:02:21”
FROM_UNIXTIME(934340541, “%Y”) = “1999”
HOUR(hora)
Retorna o valor numérico da hora representada pelo argumento hora, na faixa de 0 a
23.
Ex: HOUR(“12:31:58”) = 12
MINUTE(hora)
Retorna o valor numérico da hora representada pelo argumento hora, na faixa de 0 a
23.
Ex: MINUTE(“12:31:58”) = 31
MONTH(data)
Retorna o valor numérico do mês do ano representado pelo argumento data, na faixa
de 1 a 12.
Ex: MONTH(“1999-12-01”) = 12
MONTHNAME(data)
Retorna uma string com o nome do mês do ano representado pelo argumento data.
Ex: MONTHNAME(“1999-12-01”) = “December”
NOW() ou SYSDATE()
Retorna a data e a hora corrente em uma string no formato: “YYYY-MM-DD
hh:mm:ss”, ou como número YYYYMMDDhhmmss, de acordo com o contexto em
que a função é utilizada.
Ex: NOW() = “1999-08-10 18:51:43”
NOW() + 0 = 19990810185143
PERIOD_ADD(periodo, n)
Adiciona n meses ao valor do periodo e retorna o resultado. O formato do valor
retornado é YYYYMM. O argumento periodo pode ser YYYYMM ou YYMM.
Ex: PERIOD_ADD(199902, 12) = 200002
PERIOD_ADD(9902, -3) = 199811
PERIOD_DIFF(periodo1, periodo2)
Obtém a diferença entre os dois períodos informados e retorna o número de meses
entre eles. Os argumento devem estar no formato YYYYMM ou YYMM.
Ex: PERIOD_DIFF(200002, 199902) = 12
PERIOD_DIFF(199811, 9902) = -3
QUARTER(data)
Retorna o valor numérico do trimestre do ano representado pela data, na faixa de 1 a
4.
Ex: QUARTER(“1999-12-01) =4
QUARTER(“2000-01-01”) =1
SECOND(hora)
Retorna o valor numérico dos segundos representados pelo argumento hora, na faixa
de 0 a 59.
Ex: SECOND(“12:31:58”) = 58
SEC_TO_TIME(segundos)
Dado o número de segundos, retorna o valor da hora correspondente em uma string
no formato “hh:mm:ss”, ou um número hhmmss de acordo com o contexto em que a
função está sendo utilizada.
Ex: SEC_TO_TIME (29834) = “08:17:14”
SEC_TO_TIME (29834) + 0 = 081714
TIME_FORMAT(hora, formato)
Formata o argumento hora de acordo com a string de formatação formato. A string
formato é similar àquela utilizada em DATE_FORMAT(), mas utilizando somente os
caracteres associados à hora.
Ex: TIME_FORMAT(“12:31:58”, “%H %i”) = “12 31”
TIME_FORMAT(123158, “%H %i”) = “12 31”
TIME_TO_SEC(hora)
Dado a hora representando o tempo decorrido, retorna um número representando o
número de segundos correspondente.
Ex: TIME_TO_SEC(“08:17:14”) = 29834
TO_DAYS(data)
Retorna o valor numérico representando a data convertida para o número de dias a
partir do ano 0.
Ex: TO_DAYS(“1999-12-01”) = 730454
FROM_DAYS(730454 - 365) = “1998-12-01”
UNIX_TIMESTAMP()
UNIX_TIMESTAMP(data)
Quando chamada sem argumentos, retorna o número de segundos a partir da época
do UNIX (“1970-01-01 00:00:00” GMT). Quando chamada com o argumento data,
retorna o número de segundos entre a época e a data. A data pode ser especificada
de diversas formas: como string DATE ou DATETIME, um valor de timestamp, ou
um número no formato YYYYMMDD ou YYMMDD.
Ex: UNIX_TIMESTAMP() = 934341073
UNIX_TIMESTAMP( “1999-12-01”) = 944028000
UNIX_TIMESTAMP( 991201) = 944028000
WEEK(data)
WEEK(data, primeiro)
Quando chamada com um argumento, retorna o número representando a semana
referente ao ano da data, na faixa de 0 a 52. A semana começa no domingo. Quando
chamada com dois argumentos, retorna o mesmo tipo de valor, mas o argumento
primeiro indica o dia em que a semana começa. Se primeiro é 0, a semana começa no
domingo. Se primeiro é igual a 1 a semana começa na segunda.
Ex: WEEK(“1999-12-05”) = 49
WEEK(“1999-12-05”, 0) = 49
WEEK(“1999-12-05”, 1) = 48
WEEKDAY(data)
Retorna o valor numérico do dia da semana representado pela data. A faixa de
valores vai de 0 para Monday até 6 para Sunday.
Ex: WEEKDAY(“1999-12-05”) =6
DAYNAME(“1999-12-05”) = “Sunday”
YEAR(data)
Retorna o valor numérico do ano representado pela data, na faixa de 1000 até 9999.
Ex: YEAR(“1999-12-01”) = 1999
5. Funções de agregação
AVG(exp)
Retorna o valor médio de exp para todos os valores não NULL para as linhas
selecionadas..
Ex: SELECT AVG(salario) FROM emp = 1500.00
SELECT AVG(saldo) FROM bank = 15000.00
BIT_AND(exp)
Retorna o valor do AND binário de exp para todos os valores não NULL nas linhas
selecionadas.
Ex: SELECT BIT_AND(col) FROM tabela =1
BIT_OR(exp)
Retorna o valor do OR binário de exp para todos os valores não NULL nas linhas
selecionadas.
Ex: SELECT BIT_OR(col) FROM tabela = 15
COUNT(exp)
Com qualquer argumento diferente de *, retorna o número de valores não NULL no
conjunto de resultado. Com o argumento *, retorna o número de valores do conjunto
de resultado, independente se o valor é NULL ou não.
Ex: SELECT COUNT(*) FROM tabela = 28
MAX(exp)
Retorna o valor máximo de exp para as linhas selecionadas. MAX() pode ser usada
com strings, sendo que neste caso será utilizada a ordem lexicográfica.
Ex: SELECT MAX(salario) FROM tabela = 2500.00
MIN(exp)
Retorna o valor mínimo de exp para as linhas selecionadas. MIN() pode ser usada
com strings, sendo que neste caso será utilizada a ordem lexicográfica.
Ex: SELECT MIN(salario) FROM tabela = 180.00
STD(exp) ou STDDEV(exp)
Retorna o valor desvio padrão de exp para todas as linhas selecionadas com valores
não NULL.
Ex: SELECT STD(salario) FROM tabela = 1250.30
SUM(exp)
Retorna o valor da soma de exp para todas as linhas selecionadas com valores não
NULL.
Ex: SELECT SUM(salario) FROM tabela = 350500.45
6. Miscelânia
BENCHMARK(cont, exp)
Avalia a expressão exp repetidamente cont vezes. Retorna sempre 0 e não é
utilizado. O valor que interessa é o tempo gasto pelo mysql para executar a
expressão, que pode ser usado como medida para avaliar o desempenho do seu
servidor.
Ex: SELECT BENCHMARK(100000, PASSWORD(“secreta”))
BIT_COUNT(n)
Retorna o número de bits do argumento que são iguais a 1, sendo este tratado como
BIGINT.
Ex: BIT_COUNT(0) =0
BIT_COUNT(7) =3
DATABASE()
Retorna uma string contendo o nome do banco de dados corrente ou a string vazia
se não há banco de dados corrente.
Ex: DATABASE() = “mysql”
DECODE(str, senha)
Dada a string criptografada str obtida com a função ENCODE(), decodifica str
utilizando a string de senha e retorna a string resultante.
Ex: DECODE(ENCODE(“secreta”, ”senha”), “senha”) = “secreta”
ENCODE(str, senha)
Codifica a string str utilizando a senha e retorna o resultado como uma string binária.
A string pode ser decodificada pela função DECODE(). Como o resultado
codificado é uma string binária, você deve utilizar uma coluna do tipo BLOB para
armazená-la.
Ex: ENCODE(“secreta”, ”senha”)
ENCRIPT(str)
ENCRIPT(str, salt)
Codifica a string str e retorna a string resultante. Está é uma codificação irreversível.
O argumento salt, se informado, deve ser uma string com dois caracteres.
Especificando salt, a resultado da codificação de str será sempre o mesmo. Sem o
argumento salt, chamadas idênticas da função retornará resultados diferentes.
Ex: ENCRYPT(“secreta”, ”AB”) = “ABS5SGh1EL6bk”
ENCRYPT(“secreta”, ”AB”) = “ABS5SGh1EL6bk”
ENCRYPT(“secreta”) = “z1oPSN18WRwFA”
ENCRYPT(“secreta”) = “12FjgqDtVOg7qQ”
GET_LOCK(str, timeout)
Utilizada para realizar LOCK. str indica o nome do lock e timeout indica o número
de segundos para se obter o lock. Retorna 1 se o lock foi obtido com sucesso dentro
do período de tempo do timeout, 0 se o lock falhar ou NULL se ocorrer um erro. O
valor do timeout determina o tempo de espera para a obtenção do lock e não o
tempo de duração do lock. Uma vez obtido o lock este estará ativo até que seja
liberado.
Ex: GET_LOCK(“teste”, 10)
LAST_INSERT_ID()
LAST_INSERT_ID(exp)
Sem argumento, retorna o valor do AUTO_INCREMENT que foi recentemente
gerado durante a sessão corrente, ou 0 se nenhum valor foi gerado. É desejado o uso
da função com um argumento para o UPDATE.
LOAD_FILE(arquivo)
Lê o arquivo especificado e retorna o conteúdo como uma string. O arquivo tem que
estar localizado no servidor, e deve ser especificado o caminho completo, e deve ser
um arquivo legível.
MD5(str)
Calcula o checksum da string str baseado no RSA Data Security, Inc. O retorno da
função é uma string consistindo de 32 dígitos hexadecimais.
Ex: MD5(“secret”) = “5ebe2294ecd0e0f08eab7690d2a6ee69”
PASSWORD(str)
Dada a string str, calcula e retorna uma string criptogafada no formato usado nas
tabelas grant do MySQL. Esta é uma criptografia irreversível.
Ex: MD5(“secret”) = “5ebe2294ecd0e0f08eab7690d2a6ee69”
RELEASE_LOCK(str)
Libera o lock com o nome str. Retorna 1 se o lock foi liberado com sucesso, 0 se o
lock foi dado por outra thread, ou NULL se o lock não existe.
Ex: RELEASE_LOCK(“teste”)
VERSION()
Retorna uma string descrevendo a versão do servidor, por exemplo, “3.22.25-log”.
Ex: VERSION() = “3.23.1-alpha-log”