AS/400 Capítulo 4: SQL

Agora que já criamos uma biblioteca e vimos o funcionamento básico do AS/400 vamos ver como podemos usar SQL para manipular tabelas.

Para prosseguir com esta secção já deve ter criado a biblioteca DEMO e definido-a como a sua CURLIB.

Insira na linha de comandos o comando Start SQL:

STRSQL

É assim iniciada uma sessão SQL numa aplicação AS/400. Esta aplicação reconhece a sintaxe da maioria dos comandos SQL comuns (CREATE, INSERT, DELETE, SELECT, DROP, etc).

STRSQL
STRSQL

Criar uma tabela com SQL

A partir da linha de comandos SQL vamos criar a tabela CLIENTES e inserir alguns registos. Vamos supor que os numeros de telefone só poderão ter no máximo 9 dígitos.

CREATE LIBRARY DEMO/CLIENTS( id_cli numeric(10) PRIMARY KEY, name_cli char(50), birth_cli date, phone_cli numeric(9) )

Nota: Pode escrever o código em linhas separadas, como no exemplo ou continuamente numa linha desde que não prima ENTER antes de terminar de inserir o comando.

Deve-lhe aparecer uma mensagem a dizer que a tabela foi criada.

Se quiser ver mais linhas de comando pode carregar em Page Down ou mover o scroll do rato para baixo. Ao fazê-lo o prompt move-se para cima no ecrã dando mais espaço a novas linhas.

Faça:

SELECT * FROM CLIENTS

Pode ver que a tabela foi criada, o nome das colunas e também que não tem nenhum registo. Vamos então inserir alguns registos.

Prima F3 para sair da vista da tabela e introduza os seguintes comandos.

INSERT INTO CLIENTS (ID_CLI, NAME_CLI, BIRTH_CLI, PHONE_CLI) VALUES (1, 'Mary', '12/09/1967', '999999999')
INSERT INTO CLIENTS (ID_CLI, NAME_CLI, BIRTH_CLI, PHONE_CLI) VALUES (2, 'Tom', '09/01/1979', '123456789')
Inserir dados numa tabela
Inserir dados numa tabela

Faça de novo o SELECT para verificar se as linhas foram inseridas correctamente.

Prima agora F3 para sair da linha de comandos. Aparece-lhe agora um conjunto de opções para selecionar a que pretende. No campo onde deve inserir o valor escreva um número fora das opções dadas, por exemplo 5, e prima ENTER. Aparece-lhe, como seria de esperar, uma mensagem de erro no fundo do ecrã. Experimente pressionar F3 ou inserir outro valor no campo. Não vai conseguir pois o ecrã encontra-se bloqueado. Existem alguns erros que bloqueiam o menu, quando isto acontecer prima ESC e o ecrã voltará ao normal.

Selecione depois a opção 1 para sair da aplicação de SQL guardando a sessão.

Funções SQL embutidas

Existem algumas funções pré definidas no sistema que se revelam bastante úteis quando usamos SQL. Nas tabelas que se seguem descrevem-se algumas das funções mais relevantes.

Funções básicas

Se está familiarizado com o SQL deve estar familiarizado com estas funções.

Function Description
MAX Retorna o valor mínimo dentro do conjunto de valores definidos.
MIN Retorna o valor máximo dentro do conjunto de valores definidos.
AVG Retorna a média do conjunto de valores definidos.
SUM Retorna a soma total do conjunto de valores definidos.
COUNT Retorna o número de registos existentes no conjunto de valores definidos.

Exemplo (retorna o valor máximo da coluna ID_CLI da tabela CLIENTS):

SELECT MAX(ID_CLI) FROM CLIENTS

Funções numéricas

Function Description
ABS(N) Retorna o valor absoluto do conjunto de N.

COS(A) / ACOS(A)

SIN(A) / ASIN(A)

TAN(A) / ATAN(A)

Funções trigonométricas básicas.

CEILING(N)

FLOOR(N)

Retorna o arredondamento de N à unidade acima/abaixo.
DEGREES(R) Converte um valor em radianos num valor em graus.
RADIANS(D) Converte um valor em graus para radianos

LN(N)

LOG10(N)

Retorna o valor do logaritmo natural (base e) / logaritmo base 10

Funções de tratamento de strings

Function Description
CHAR(N) Returns the the string representation of the number N.
CHAR_LENGTH(S) Returns the length of a string.
CONCAT(S1, S2) Concatenates S1 with S2.
SUBSTR(S, I, L) Returns a substring of S, starting at index I of lenght L.
LOWER(S) Returns the lowercase representation of S.
UPPER(S) Returns the uppercase representation of S.
TRIM(S) Removes spaces from the beggining and and of S.
RTRIM(S) LTRIM(S) Removes spaces at the begging (right) or end (left) of S.

Funções de data e hora

Function Description

CURDATE()

CURTIME()

Retorna a data/hora actual do sistema.

DATE(D)

DATE(T)

Converte uma string que contém uma representação de uma data/hora num valor no formato data/hora.
DAY(D) Extrai de uma variável do tipo data o número do dia (1-31). 
WEEK(D) Extrai de uma variavel do tipo data o número da semana num ano (1-54).
MONTH(D) Extrai de uma variável do tipo data o número do mês (1-12).
YEAR(D) Extrai de uma variável do tipo data o ano.
DAYOFWEEK(D) Retorna o dia da semana de uma dada data (1-7). O valor 1 representa o Domingo.
DAYOFWEEK_ISO(D) Retorna o dia da semana de uma dada data (1-7). O valor 1 representa a segunda-feira.
DAYOFYEAR(D) Retorna um valor que identifica o número do dia num ano (1-366).
HOUR(T) Extrai de uma variável do tipo TIME o valor da hora (0-24).
MINUTE(T) Extrai de uma variável do tipo TIME o valor do minutos.
SECOND(T) Extrai de uma variavel do tipo TIME o valor do segundo.
MICROSECOND(T) Extrai de uma varável do tipo TIME o valor do microsegundo.

Artigos relacionados