Crie tabelas e consulte dados
Crie uma tabela no SQL Database, insira linhas e leia, atualize ou exclua essas linhas pelo Azion Console, pela Azion API ou pela biblioteca azion.
Você cria uma tabela no SQL Database, insere linhas nela, lê essas linhas de volta e atualiza ou exclui essas linhas pelo Azion Console, pela Azion API ou pela biblioteca azion. As três interfaces executam o mesmo SQL contra o mesmo banco de dados.
Toda instrução desta página é executada contra um banco de dados que já existe. Para criar um, consulte Crie e gerencie bancos de dados.
Pré-requisitos
- Um banco de dados cujo
statusmarcacreated. A API o endereça pelo identificador inteiro que a resposta de criação retorna, e a bibliotecaaziono endereça pelo nome. Consulte Crie e gerencie bancos de dados. - SQL Database habilitado na sua conta. O produto está em Preview e não é habilitado por padrão, então solicite acesso pelo Technical Support.
- A permissão Edit SQL Database, que concede permissão para criar e editar bancos de dados e os seus dados pela Azion API. View SQL Database concede permissão para visualizá-los. Consulte Teams Permissions.
- Acesso ao Azion Console, para os procedimentos do Console. Consulte Como acessar o Azion Console.
- Um personal token, para os procedimentos da API.
- Node e o pacote
azion, para os procedimentos da biblioteca. A biblioteca lê o seu token deAZION_TOKEN, eAZION_DEBUGativa o log das requisições. Consulte Biblioteca SQL da Azion.
As instruções em si são o SQL do SQLite. Para a sintaxe que cada uma aceita, consulte a referência da linguagem SQLite.
Crie uma tabela pelo Azion Console
A aba Editor de um banco de dados executa SQL contra esse banco de dados, e uma instrução CREATE TABLE é executada ali como qualquer outra. Para criar a tabela users:
Acesse Azion Console > SQL Database e selecione o banco de dados na lista.
A aba Tables lista users. Um banco de dados que não contém nenhuma tabela mostra o estado vazio “No tables yet”, com a linha “Create your first table to store your data.”
O editor carrega três outros controles ao lado de Run query. Templates carrega no editor uma instrução que já vem pronta, entre elas “Create a basic users table with auto-increment ID and timestamp” e “Insert sample user records into the users table”. Prettify reformata o que o editor contém, e Delete query o limpa.
Crie uma tabela pela API
Envie uma requisição POST para o endpoint de consulta do banco de dados. O corpo carrega uma chave, statements, que contém um array de strings SQL, e Azion as executa na ordem em que o array as lista. Para criar a tabela users:
Substitua <database-id> pelo id do seu banco de dados:
A API responde HTTP 200, e o envelope retorna "state": "executed". data carrega uma entrada por instrução, na ordem em que o array as listou. Uma instrução CREATE TABLE não retorna linhas, então a entrada dela volta com columns e rows vazios, ao lado de rows_read, rows_written e query_duration_ms, que toda entrada retorna.
O banco de dados contém uma tabela users com as colunas id, name e email. O mesmo endpoint executa toda instrução que vem a seguir: leituras e escritas não são divididas em dois caminhos.
Crie uma tabela pela biblioteca azion
azion/sql executa as mesmas instruções a partir de Node e TypeScript. useExecute executa as instruções que alteram o banco de dados, useQuery executa as que retornam linhas, e os dois recebem o nome do banco de dados primeiro e um array de instruções depois:
O banco de dados contém a tabela users. data carrega state e um array results com uma entrada por instrução, cada entrada nomeando o verbo SQL que executou, e error carrega um message e a operation que falhou.
Insira linhas
Uma linha é armazenada com uma instrução INSERT, e uma chamada carrega quantas delas a tabela precisar. As duas linhas abaixo são os dados que toda instrução mais adiante nesta página lê.
Azion Console
Na aba Editor do banco de dados, insira as duas instruções e selecione Run query:
A tabela users contém duas linhas. Selecionar a tabela na aba Tables alcança os controles Insert Data, Insert Column, Count Records, Schema Info, Foreign Keys e Delete Table, e um menu de exportação com Export all to .csv, Export all to .json e Export all to .xlsx.
A API
Envie as duas instruções INSERT em um único array statements:
Um literal de string SQL é delimitado por um apóstrofo, e o corpo inteiro viaja como um argumento de shell entre apóstrofos, então todo apóstrofo dentro dele é escrito '\''.
Cada instrução retorna a própria entrada em data, na ordem em que o array as listou. Um INSERT não retorna linhas, então a entrada dele carrega columns e rows vazios, e ele retorna em rows_written as linhas que escreveu. As duas linhas são armazenadas sob os identificadores 1 e 2.
A biblioteca azion
Passe as duas instruções para useExecute:
data nomeia o verbo que cada instrução executou e não retorna colunas nem linhas:
Consulte linhas
Uma instrução SELECT retorna o que a tabela contém. A resposta retorna os nomes das colunas uma vez e cada linha como um array de valores na ordem das colunas, não como um objeto indexado pelo nome da coluna.
Azion Console
Na aba Editor do banco de dados, insira a instrução e selecione Run query:
As linhas aparecem na área de resultado do editor, que mostra “Execute a query to see the results here” até que uma consulta seja executada. O editor guarda um histórico das consultas que você executa contra o banco de dados.
A API
Envie a instrução SELECT para o endpoint de consulta:
A API responde HTTP 200 com as duas linhas:
columns carrega os nomes das colunas do conjunto de resultados, e rows carrega um array por linha com os valores na ordem das colunas. rows_read e rows_written são as duas métricas pelas quais SQL Database é cobrado, e a API as retorna para toda instrução, ao lado do query_duration_ms que a instrução levou. Para o uso que cada plano inclui, consulte Limites do SQL Database.
A biblioteca azion
Passe a instrução para useQuery:
data carrega state e um array results, e cada entrada nomeia o verbo da instrução ao lado das colunas e das linhas dela:
A biblioteca descarta rows_read, rows_written e query_duration_ms do que retorna. Uma conta que mede o próprio consumo lê esses três da API, e não da biblioteca.
Atualize e exclua linhas
Uma instrução UPDATE altera os valores que uma linha contém, e uma instrução DELETE remove linhas. As duas são executadas pelo endpoint de consulta, como toda outra instrução, e as duas agem sobre as linhas que a cláusula WHERE delas nomeia.
Azion Console
Na aba Editor do banco de dados, insira as instruções e selecione Run query:
A primeira instrução altera o endereço de uma linha, e a segunda remove essa linha. A tabela users contém uma linha.
A API
Envie as duas instruções para o endpoint de consulta:
A API responde HTTP 200 com "state": "executed" e uma entrada por instrução. Nenhuma das duas instruções retorna linhas, então as duas entradas carregam columns e rows vazios, e cada uma retorna em rows_written o que escreveu.
Leia a tabela de volta com a instrução SELECT da seção anterior. Uma linha permanece:
A biblioteca azion
As duas instruções alteram o banco de dados, então as duas são executadas por useExecute:
data.results nomeia o verbo de cada instrução, e nenhuma das duas entradas carrega colunas ou linhas.
Leia o resultado de toda instrução
Uma instrução que falha não faz a requisição falhar. A chamada responde HTTP 200, o envelope ainda retorna "state": "executed", e a entrada da instrução com falha carrega error no lugar de results:
Um cliente que lê apenas o status HTTP trata essa resposta como um sucesso. Leia data[].error em toda entrada que a resposta carrega, e trate uma entrada que o carrega como uma instrução que não foi executada.
A biblioteca azion retorna a mesma falha nas duas metades do valor de retorno dela: data.results[0].error carrega a mensagem, e o error de nível superior carrega um message e operation: "apiQuery".
Duas falhas respondem, sim, com um status de erro. Um corpo sem a chave statements retorna HTTP 400 com o erro 10059, Required Field, e source.pointer definido como /data/statements. Instruções que Azion não consegue executar retornam HTTP 422 com o erro 14005, Execute SQL Exception, e meta.database_name nomeia o banco de dados.
Para mais informações, consulte Solução de problemas.