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).
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')
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. |