Você está na página 1de 39

Exercícios

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.

c) Depois do capítulo 7 sobre JOIN,


HAVING, LIMIT

1. Gravar a query anterior em um arquivo


chamado Birthdays.dat – em um lugar
que você possa escrever e ler.
2. Listar todos os membros
3. Listar apenas os 10 primeiros membros
ER das Tabelas do Banco de Dados Curso

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

mysql> describe presidente;


Field Type Null Key Default Extra
ultimo_nome Varchar(15)
primeiro_nome Varchar(15)
sufixo Varchar(5) YES NULL
cidade Varchar(20)
estado char(2)
nascimento Date 000-00-00
morte Date YES NULL

mysql> describe evento;


Field Type Null Key Default Extra
data Date PRI 000-00-00
tipo enum(‘T’, ‘Q’) T
evento_id int(10) unsigned PRI NULL auto_increment

mysql> describe ausencia;


Field Type Null Key Default Extra
estudante_id int(10) unsigned PRI 0
data Date PRI 000-00-00

mysql> describe membro;


Field Type Null Key Default Extra
ultimo_nome Varchar(20)
primeiro_nome Varchar(20)
sufixo Varchar(5) YES NULL
validade Date YES 0000-00-00
email Varchar(100) YES NULL
rua Varchar(50) YES NULL
cidade Varchar(50) YES NULL
estado Varchar(2) YES NULL
cep Varchar(10) YES NULL
telefone Varchar(20) YES NULL
participacoes Varchar(255) YES NULL
membro_id int(10) unsigned PRI NULL auto_increment

mysql> describe membro_senha;


Field Type Null Key Default Extra
membro_id int(10) unsigned PRI 0
senha char(8) YES NULL

mysql> describe pontos;


Field Type Null Key Default Extra
estudante_id int(10) unsigned PRI 0
evento_id int(10) unsigned PRI 0
pontos int(11) 0

mysql> describe estudante;


Field Type Null Key Default Extra
nome Varchar(20)
sexo enum(‘F’, ‘M’) F
estudante_id int(10) unsigned PRI NULL auto_increment

mysql> describe sexo;


Field Type Null Key Default Extra
sexo char(1) PRI
sexodescr char(10)
Exercícios

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 (entre como root).


2. Verifique quais bancos de dados e tabelas existem.
3. Encontre o diretório de dados do seu servidor MySQL
4. Na shell, vá para o diretório de dados e examine sua estrutura, diretórios e arquivos.
5. Volte para o cliente mysql e examine o sua configuração de arquivo de log.
6. Ative o log geral, log binário e slow log (Edite o arquivo de configuração).
7. Pare o servidor e reinicie-o para que as suas mudanças tenham efeito.
8. Verifique se seus arquivos de log estão ativos, caso contrário repita os passo 6 e 7.
Exercícios sobre administração do Banco de dados MySQL
2. Gerenciamento de usuários

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.

5. A criação de um índice melhoraria ainda mais essa SELECT ? Experimente!

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.

7. A SELECT acima pode ser otimizada ?


a) Experimente reescrevê-la utilizando uma faixa de numeração, ao invés da conta. Deve
haver um pequeno ganho no tempo;
b) Um índice no xalog2 ajudaria ? Que índice é esse ? Use o ALTER TABLE se necessário!
c) Reescreva a SELECT acima agora fazendo uma relação com a tabela prd, já que a
informação do Departamento pode ser obtida a partir da tabela prd.
Piorou ou melhorou ? Por quê ?

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

9. Há como otimizar essa SELECT ?

10. Usando somente a tabela de Produtos, monte um relatório selecionando o Código, a


Descrição e o Preço Unitário de cada produto.
Detalhe: listar apenas os produtos cujos preços seriam maiores que R$ 500,00 caso fosse
aplicado um aumento de 30%.

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

 & calcula o AND binário dos operandos


Ex:
1&1=1
1&2=0

 a << b desloca a, b bits para a esquerda


Ex:
1 << 2 = 4
2 << 2 = 8

 a >> b desloca a, b bits para a direita


Ex:
16 >> 3 = 2
16 << 4 = 1

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.

1. Funções para comparação


 GREATEST(exp1, exp2, ...)
Retorna o maior dos argumentos
Ex: GREATEST(1, 2, 3) =3
GREATEST(“A”, “B”, “ABC”) = “ABC”

 IF(exp1, exp2, exp3)


Se exp1 é verdadeiro (diferente de 0 ou NULL), retorna exp2, caso contrário retorna
exp3.
Ex: IF(1, “VERDADEIRO”, “FALSO”) = “VERDADEIRO”
IF(0, “VERDADEIRO”, “FALSO”) = “FALSO”
IF(1 = 1, 10, 11) = 10
 IFNULL(exp1, exp2)
Se exp1 for NULL retorna exp2, caso contrário retorna exp1.
Ex: IFNULL(NULL, “NULL”) = “NULL”
IFNULL(0, “NULL”) =0

 INTERVAL(n, n1, n2, ...)


Retorna 0 se n < n1, 1 se n < n2 e assim por diante, ou –1 se n é NULL. Os valores
de n1, n2, ... devem ser em ordem crescente (n1 < n2 < ...).
Ex: INTERVAL(1.1, 0, 1, 2) =2
INTERVAL(7, 1, 3, 5, 7, 9) =4

 ISNULL(exp)
Retorna 1 se o valor de exp é NULL, caso contrário retorna 0.
Ex: ISNULL(NULL) =1
ISNULL(7) =0

 LEAST(exp1, exp2, ...)


Retorna o menor argumento.
Ex: LEAST(3, 1, 2) =1
LEAST(“a”, “ab”, “abc”) = “a”

 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

 CHAR(n1, n2, ...)


Interpreta os argumentos como códigos ASCII e retorna uma string consistindo da
concatenação dos seus caracteres correspondentes.
Ex: CHAR(65) = “A”
CHAR(77, 121, 83, 81, 76) = “MySQL”
 CHARACTER_LENGTH(str) e CHAR_LENGTH(str)
Sinônimas para a função LENGTH(str).

 CONCAT(str1, str2, ...)


Retorna uma string resultando da concatenação dos seus argumentos.
Ex: CONCAT(“abc”, “def”) = “abcdef”
CONCAT(“abc”, “def”, “gh”) = “abcdefgh”

 CONV(n, base1, base2)


Dado um número n na base base1, retorna uma string representando n na base base2.
Ex: CONV(11111111, 2, 8) = “377”
CONV(100, 2, 10) = ”4”

 ELT(n, str1, str2, ...)


Retorna a n-ésima string da lista de string str1, str2, ... Retorna NULL se não há a n-
ésima string.
Ex: ELT(2, “MySQL”, “MySQL AB”) = “MySQL AB”

 EXPORT_SET(n, str1, str2, [separador, [bit_count]])


Retorna uma string consistindo das strings str1 e str2, separadas pela string
separador. str1 é usada para cada bit igual a 1 em n, e str2 é usada para cada bit 0.
bit_count indica o número máximo de bits em n a serem examinados. O separador
default é a vírgula, e o bit_count_default é 64.
Ex: EXPORT_SET(7, “+”, “-“, “”, 5) = “+++--“

 FIELD(str, str1, str2, ...)


Encontra a string na lista de strings str1, str2, ... e retorna o índice da string
encontrada. Retorna 0 se não encontrar a string ou se str é NULL. O índice da
primeira string é 1.
Ex: FIELD(“b”, “a”, “b“, “c”, “d”) =2
 FIND_IN_SET(str, lista_str)
lista_str é uma string consistindo de substrings separadas por vírgula. Esta função
retorna o índice da str dentro da lista_str. Retorna 0 se str não está presente ou
NULL se ambos argumentos são NULL. O índice da primeira substring é 1.
Ex: FIND_IN_SET(“b”, “a, b, c, d”) =2

 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”

 INSERT(str, pos, tam, nova_str)


Retorna a string str com a substring começada na posição pos e tamanho tam
substituída pela string nova_str. Retorna a string original se pos está fora da faixa, ou
NULL se qualquer argumento é NULL.
Ex: INSERT(“Meia Noite”, 4, 7, “o Dia”) = “Meio Dia”

 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

 LOCATE(substr, str), LOCATE(substr, str, pos)


A primeira forma de LOCATE com dois argumentos retorna a posição da primeira
ocorrência da string substr dentro da string str, ou 0 se não encontrar a substring.
Retorna NULL se qualquer argumento é NULL. Se informado o argumento pos,
LOCATE() inicia a busca pela substr nesta posição. O teste é caso sensitivo.
Ex: LOCATE(“y”, “MySQL”) =2
LOCATE (“B”, “abc”) =0

 LPAD(str, tam, pad_str)


Retorna uma string de tamanho tam consistindo do valor de str, completada à
esquerda com a string pad_str. Retorna str se está já possui tam caracteres.
Ex: LPAD(“MySQL”, 10, “+”) = “+++++MySQL”
LPAD(“ab”, 5, “*”) = “***ab”

 LTRIM(str)
Retorna a string str sem os espaços à esquerda.
Ex: LTRIM(“ MySQL ”, 10, “+”) = “MySQL ”

 MAKE_SET(n, bit0_str, bit1_str, ...)


Constrói um SET (string consistindo de substrings separadas por vírgula) baseado no
valor do inteiro n e das strings bit0_str, bit1_str, .... Para cada bit 1 no valor de n, a
string correspondente é incluída no resultado. (Se o bit 0 é igual a 1, o resultado
inclui bit0_str, e assim por diante.) Se n é 0, o resultado é uma string vazia. Se n é
NULL, o resultado é NULL. Se qualquer string na lista é NULL, esta é ignorada na
construção da string final.
Ex: MAKE_SET(-1, “a”, “b”, “c”, “d”, “e”) = “a, b, c, d, e”
MAKE_SET(8, “a”, “b”, “c”, “d”, “e”) = “d”

 MID(str, pos, tam)


Retorna a substring com tamanho tam e que começa na posição pos da string str.
Retorna NULL se qualquer argumento for NULL.
Ex: MID(“O MySQL em Linux”, 3, 5) = “MySQL”

 OCT(n)
Retorna o valor de n em octal.
Ex: OCT(100) = 144

 OCTET_LENGTH(str)
Sinônimo de LENGTH().

 POSITION(substr IN str), POSITION()


Sinônimo para a função LOCATE() com dois argumentos.

 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”

 REPLACE(str, str1, str2)


Retorna a string consistindo da string str com todas as ocorrências de str1
substituídas por str2. Retorna NULL se qualquer argumento é NULL. SE str2 é
vazia, todas as ocorrências de str1 são removidas. Se str1 é vazia retorna str.
Ex: REPLACE(“axaxaxax”, “x”, “b”) = “abababab”
REPLACE(“axaxaxax”, “x”, “”) = “aaaa”

 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”

 RPAD(str, tam, pad_str)


Retorna uma string de tamanho tam consistindo do valor de str, completada à direita
com a string pad_str. Retorna str se está já possui tam caracteres.
Ex: RPAD(“MySQL”, 10, “+”) = “MySQL+++++”
RPAD(“ab”, 5, “*”) = “ab***”

 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”

 TRIM([[LEADING | TRAILING | BOTH] [trim_str] FROM] str)


Retorna a string str com as instâncias da string trim_str removidas. Se LEADING é
especificado, TRIM() remove as ocorrências da trim_str à esquerda. Se TRAILING
é especificado, TRIM() remove as ocorrências da trim_str à direita. Se BOTH é
especificado, TRIM() remove as ocorrências da trim_str à esquerda e à direita. Se
nenhuma delas forem especificadas, TRIM() utilizará o BOTH. Se trim_str não for
especificado serão removidos os espaços.
Ex: TRIM(“^“ FROM “^^^XYZ^^”) = “XYZ”
TRIM(LEADING “^“ FROM “^^^XYZ^^”) = “XYZ^^”
TRIM(TRAILING “^“ FROM “^^^XYZ^^”) = “^^^XYZ”
TRIM(BOTH “^“ FROM “^^^XYZ^^”) = “XYZ”
TRIM(BOTH FROM “ ABC ”) = “ABC”
TRIM(“ ABC ”) = “ABC”

 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”

4. Funções de Data e Hora


 ADDDATE(data, INTERVAL exp intervalo) ou DATE_ADD(data, INTERVAL
exp intervalo)
Adiciona o intervalo de tempo ao argumento data (tipo data ou hora), retornando o
resultado. exp especifica o valor do tempo a ser adicionado à data (ou subtraído se
exp começa com -), e intervalo especifica como interpretar o intervalo de tempo. O
resultado é uma data se o argumento data é do tipo DATE e nenhum valor
relacionado ao tempo é utilizado no cálculo do resultado. Caso contrário o resultado
será um DATETIME. O resultado é NULL se data não é uma data válida.
Ex: DATE_ADD(“1999-12-01”, INTERVAL 1 YEAR) = “2000-12-01”
DATE_ADD(“1999-12-01”, INTERVAL 60 DAY) = “2000-01-30”
DATE_ADD(“1999-12-01”, INTERVAL –3 MONTH) = “1999-0901”
DATE_ADD(“1999-12-01 08:30:00”, INTERVAL 12 HOUR) = “1999-
12-01 20:30:00”

Valores válidos para o argumento intervalo:

Tipo Significado Formato


SECOND Segundos ss
MINUTE Minutos mm
HOUR Horas hh
DAY Dias DD
MONTH Meses MM
YEAR Anos YY
MINUTE_SECOND Minutos e segundos “mm:ss”
HOUR_MINUTE Horas e minutos “hh:mm”
HOUR_SECOND Horas, minutos e segundos “hh:mm:ss”
DAY_HOUR Dias e horas “DD hh”
DAY_MINUTE Dias, horas e minutos “DD hh:mm”
DAY_SECOND Dias, horas, minutos e segundos “DD hh:mm:ss”
YEAR_MONTH Anos e meses “YY-MM”

 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 %

 DATE_SUB(data, INTERVAL exp intervalo) ou SUBDATE(data, INTERVAL exp


intervalo)
Realiza a aritmética de datas da mesma forma que o DATE_ADD, exceto que o exp
é subtraído do valor data.
Ex: DATE_SUB(“1999-12-01”, INTERVAL 1 MONTH) = “1999-11-01”
DATE_SUB(“1999-12-01”, INTERVAL “12-13” YEAR_MONTH) =
“1986-10-01”

 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

 EXTRACT(intervalo FROM datetime)


Retorna a parte do valor datetime indicado pelo intervalo, que pode ser qualquer um
dos intervalos especificados para DATE_ADD().
Ex: EXTRACT(YEAR FROM “1999-12-01 13:42:19”) = 1999
EXTRACT(MONTH FROM “1999-12-01 13:42:19”) = 12

 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”)

 SESSION_USER(), SYSTEM_USER() e USER()


Retorna uma string com o nome do usuário do cliente mysql. A string possui o
formato “user@host”, onde user é o nome do usuário e host é o nome do host de
onde o usuário se conectou ao servidor.
Ex: USER() = “paul@loclahost”

 VERSION()
Retorna uma string descrevendo a versão do servidor, por exemplo, “3.22.25-log”.
Ex: VERSION() = “3.23.1-alpha-log”