Académique Documents
Professionnel Documents
Culture Documents
funes
Prof. Camilo de Lelis
Aula 5
Operadores
Operador
Ao
Soma/Adio
Subtrao
Multiplicao
Diviso
Funes numricas
POSITION/INSTR
CHARACTER_LENGTH
POSITION/INSTR
Sintaxe
POSITION(destino IN origem)
Tipo
Descrio
Destino
Origem
Incio
Fim
Exemplos
INSTR
Exemplo
SELECT INSTR(Renato Russo, Ru)
AS BUSCA;
CHARACTER_LENGTH
Concatenando
Upper
Exemplo:
LOWER
Exemplo:
TRIM
Sintaxe:
TRIM [{BOTH | LEADING | TRAILING} car FROM ]
cadeia )
Exemplos de utilizao
teste
TRIM(BOTH # FROM #
teste)
teste
TRIM(LEADING FROM
teste
teste
TRIM(TRAILING FROM
teste
teste
TRIM(teste)
SUBSTRING
Sintaxe:
SELECT SUBSTRING( cadeia_origem FROM
posio_inicio FOR nmero_caracteres )
Exemplo
SELECT SUBSTRING( NOME_AUTOR
FROM 1 FOR 3 ) as RES, NOME_AUTOR
FROM AUTOR
WHERE NOME_AUTOR LIKE R%
TRANSLATE
TRANSLATE(caracteres, pesquisa,substituio)
Exemplo:
SELECT TRANSLATE( UPPER(NOME_AUTOR),
RT, AB )
Todas as letras R sero
substitudas pela letra A
e as letras T pela letra B
FROM AUTOR
WHERE CODIGO_AUTOR = 1;
Replace
Exemplo:
SELECT REPLACE(
UPPER(NOME_AUTOR),RE,AB)
FROM AUTOR
WHERE CODIGO_AUTOR =1;
Mudana do
inicio do nome
Manipulao de datas
Tipo
Descrio
DATE
Apenas Data
Time
Apenas Hora
TIMESTAMP Data e Hora
Intervalo entre os dois tipos de
INTERVAL
dados anteriores
SELECT
DATE_FORMAT(nome_da_coluna_com_
a_data, '%d/%m/%Y') FROM
nome_da_tabela;
Exemplo:
SELECT * FROM CD
WHERE DATA_LANCAMENTO =
CURRENT_DATE;
OPERAES ARITMTICAS
COM DATAS
Operaes:
Expresso
Resultado
DATETIME-DATETIME
INTERVAL
INTERVAL * nmero
INTERVAL/nmero
INTERVAL
INTERVAL
OBS.
Exemplo:
No MySQL
SELECT current_date, data_lancamento,
DATEDIFF(current_date,'2007,08,30')
from cd;
Somente
se
for dentro do
mes
No MySQL
SELECT DATE_ADD('2005-12-31
23:59:59', INTERVAL 1 DAY);
EXTRACT
Exemplos:
Tipo SERIAL
Quando definimos
uma
coluna
como sendo do
tipo
serial,
estamos criando
implicitamente
uma seqncia.
nometabela_nomecoluna_seq.
A tabela criada acima tambm poderia ser criada da seguinte
forma, obtendo o mesmo resultado:
CREATE SEQUENCE alunos_id_seq;
CREATE TABLE alunos ( id integer DEFAULT
nextval('alunos_id_seq') NOT NULL );
CAMPO SERIAL
O campo serial na realidade um campo do
tipo integer associado a uma seqncia. Se
acaso for esperado que a seqncia possa
atingir valores maiores que 2.147.483.648
deve-se usar o BIGSERIAL, que na
realidade uma associao do tipo bigint
com uma seqncia. O tipo integer utiliza
quatro bytes para armazenamento de
nmeros enquanto o bigint usa oito bytes.
CONSIDERAES FINAIS
Se for passado um valor para os campos do
tipo serial, a seqncia associada ao serial
no incrementada, o que pode criar
problemas de chaves duplicadas. Portanto
no deve-se passar valor para campos seriais,
exceto em situaes especiais em que sabe-se
exatamente o que deseja fazer. Um exemplo
deste tipo de uso em casos de replicao de
dados.
seqncia,
currval e