SQLite Criar, alterar, eliminar tabela com exemplos

⚡ Resumo Inteligente

SQLite O gerenciamento de tabelas depende de três comandos de definição de dados: CREATE TABLE para definir uma tabela, ALTER TABLE para renomeá-la ou adicionar e alterar colunas, e DROP TABLE para removê-la completamente do banco de dados.

  • 📐 Criar tabelas: A instrução CREATE TABLE define o nome de uma tabela e suas colunas, sendo que cada coluna precisa de um nome e um tipo de dados.
  • 🛡️ Evite erros: Adicionar IF NOT EXISTS ao comando CREATE TABLE, ou IF EXISTS ao comando DROP TABLE, evita falhas quando uma tabela já existe ou está ausente.
  • ✏️ Alterar tabelas: ALTER TABLE renomeia uma tabela, adiciona uma coluna e, em versões modernas, altera o nome da tabela. SQLite Renomeia ou remove uma única coluna.
  • 🗑️ Tabelas suspensas: O comando DROP TABLE remove permanentemente uma tabela, incluindo todas as suas linhas e índices.
  • 📑 Copiar tabelas: O comando CREATE TABLE AS SELECT cria uma nova tabela a partir das colunas e linhas retornadas por uma consulta.
  • 🤖 Assistência de IA: Assistentes de IA de texto para SQL e o GitHub Copilot geram instruções CREATE, ALTER e DROP a partir de prompts em linguagem natural.

SQLite Criar Alterar Drop Table

As seções abaixo mostram como criar tabelas, modificar sua estrutura e excluir tabelas. SQLite3 com exemplos, abrangendo os comandos CREATE TABLE, ALTER TABLE e DROP TABLE.

SQLite Criar tabela

Sintaxe

Abaixo está a sintaxe da instrução CREATE TABLE.

CREATE TABLE table_name(
column1 datatype,
column1 datatype
);

Para criar uma tabela, você deve usar a consulta “CREATE TABLE” da seguinte forma:

CREATE TABLE guru99 (
  Id Int,
  Name Varchar
);

Dentro dos dois colchetes após o nome da tabela, você define as colunas das tabelas, cada coluna deve ter as seguintes propriedades:

  • Um nome, o nome da coluna deve ser único entre as colunas da tabela.
  • Um tipo de dados – o tipo de dados da coluna.
  • Restrições de coluna opcionais, como explicaremos nas seções posteriores deste tutorial.

SQLite CRIAR TABELA SE NÃO EXISTIR

Quando um script é executado mais de uma vez, uma instrução CREATE TABLE simples falha se a tabela já existir e para com um erro. SQLite Isso é resolvido com a cláusula opcional IF NOT EXISTS, que cria a tabela somente quando ela não existe e não faz nada quando ela já existe.

CREATE TABLE IF NOT EXISTS guru99 (
  Id Int,
  Name Varchar
);

A instrução acima nunca gera o erro "a tabela já existe", o que a torna segura para manter no início de um script de instalação ou migração.

A mesma ideia funciona ao contrário quando você remove uma tabela. Adicionar `IF EXISTS` ao comando `DROP TABLE` evita um erro quando a tabela já foi excluída.

DROP TABLE IF EXISTS guru99;

Ambas as cláusulas são comuns em scripts automatizados, pois permitem que o mesmo arquivo seja executado repetidamente sem a necessidade de limpeza manual entre as execuções.

Soltar tabela

Para excluir uma tabela, use o comando “DROP TABLE” seguido do nome da tabela, da seguinte forma:

DROP TABLE guru99;

Alterar a tabela

Você pode usar o comando “ALTER TABLE” para renomear uma tabela da seguinte forma:

ALTER TABLE guru99 RENAME TO guru100;

Para verificar se o nome da tabela foi alterado, você pode usar o comando “.tables” para exibir a lista de tabelas. O nome da tabela deverá estar alterado da seguinte forma:

SQLite O comando .tables mostra a tabela renomeada de guru99 para guru100.

Como você pode ver, o nome da tabela “guru99” foi alterado para “guru100” após o comando “alter table”.

SQLite adicionar colunas - Usando o comando ALTER TABLE

Você também pode usar o comando “ALTER TABLE” para adicionar colunas:

ALTER TABLE guru100 ADD COLUMN Age INT;

Isso alterará a tabela “guru100” e adicionará uma nova coluna chamada Idade a ela.

Se você não viu nenhuma saída, isso significa que a instrução foi bem-sucedida e a coluna foi adicionada. A ausência de saída significa que o cursor ficará posicionado após “sqlite>” sem nenhum texto depois, assim:

SQLite A linha de comando não exibe nenhuma saída após uma alteração bem-sucedida na tabela ALTER TABLE ADD COLUMN.

No entanto, para verificar se a coluna foi adicionada, podemos usar o comando “.schema guru100”. Isso exibirá a definição da tabela e você deverá ver a nova coluna que acabamos de adicionar:

SQLite Saída do comando .schema guru100 mostrando a nova coluna Idade adicionada à tabela.

SQLite ALTER TABLE: Renomear e Excluir uma Coluna

Além de adicionar uma coluna, as versões modernas de SQLite Também é possível renomear uma única coluna e remover uma. A opção de renomear uma coluna está disponível desde SQLite 3.25, e atualiza o nome dentro da definição da tabela, bem como em todos os índices, gatilhos e visualizações que fazem referência à coluna.

ALTER TABLE guru100 RENAME COLUMN Name TO FullName;

Para remover uma coluna, SQLite As versões 3.35 e posteriores suportam uma cláusula DROP COLUMN direta:

ALTER TABLE guru100 DROP COLUMN Age;

Uma coluna não pode ser excluída quando faz parte de uma chave primária, uma restrição de unicidade ou um índice. Em versões mais antigas SQLite Em versões que não possuem o comando DROP COLUMN, a solução clássica é criar uma nova tabela com as colunas desejadas, copiar as linhas para essa nova tabela, excluir a tabela antiga e, por fim, renomear a nova.

Como copiar uma tabela em SQLite Usando CREATE TABLE AS SELECT

Às vezes, você precisa de uma cópia de uma tabela, seja como backup antes de uma alteração arriscada ou como ponto de partida para uma nova tabela. SQLite Isso é feito em uma única etapa com CREATE TABLE AS SELECT, que cria uma nova tabela cujas colunas são provenientes de uma consulta e a preenche com as linhas retornadas por essa consulta.

CREATE TABLE guru100_backup AS SELECT * FROM guru100;

A nova tabela “guru100_backup” recebe as mesmas colunas e todas as linhas de “guru100”. Para copiar apenas algumas linhas, adicione uma cláusula WHERE à instrução SELECT:

CREATE TABLE known_ages AS SELECT * FROM guru100 WHERE Age IS NOT NULL;

Um ponto importante a lembrar é que o comando CREATE TABLE AS SELECT copia os nomes, tipos e dados das colunas, mas não copia as chaves primárias, outras restrições ou índices. Você precisa adicioná-los à nova tabela manualmente se a cópia precisar seguir as mesmas regras da tabela original.

SQLite Inserir valor em uma tabela

Para inserir valores em uma tabela, usamos a instrução “INSERT INTO” da seguinte forma:

INSERT INTO Tablename(colname1, colname2, ….) VALUES(valu1, value2, ….);

Você pode omitir os nomes das colunas após o nome da tabela e escrevê-los da seguinte forma:

INSERT INTO Tablename VALUES(value1, value2, ….);

Nesse caso, onde você está omitindo os nomes das colunas das tabelas, o número de valores inseridos deve ser exatamente o mesmo número de colunas da tabela. Então cada valor será inserido na coluna de correspondência. Por exemplo, para a seguinte instrução insert:

INSERT INTO guru100 VALUES(1, 'Mike', 25);

O resultado desta declaração será o seguinte:

SQLite A instrução INSERT INTO adiciona uma linha de valores à tabela guru100.

  • O valor 1 será inserido na coluna “id”.
  • O valor 'Mike' será inserido na coluna “Nome”, e
  • O valor 25 será inserido na coluna “Idade”.

Instrução INSERT… DEFAULT VALUES

Você pode preencher a tabela com os valores padrão das colunas de uma só vez, da seguinte maneira:

INSERT INTO Tablename DEFAULT VALUES;

Se uma coluna não permitir valores nulos nem valores padrão, você receberá um erro informando que a restrição NOT NULL falhou para essa coluna. Veja a seguir:

SQLite Erro de falha na restrição NOT NULL ao inserir valores padrão.

Perguntas Frequentes

Não. SQLite Não existe o comando TRUNCATE TABLE. Para esvaziar uma tabela, execute DELETE FROM nome_da_tabela sem a cláusula WHERE e, em seguida, use VACUUM para recuperar o espaço em disco liberado. A estrutura da tabela e suas colunas permanecem intactas.

O comando DELETE remove linhas de uma tabela, mas mantém a tabela, suas colunas e sua estrutura prontas para novos dados. O comando DROP TABLE remove a tabela inteira, incluindo sua definição, índices e gatilhos, de modo que a tabela deixa de existir no banco de dados.

No SQLite Na linha de comando, o comando `.tables` imprime o nome de cada tabela. Em SQL, consulte a tabela de esquema integrada com `SELECT name FROM sqlite_master WHERE type = 'table';`, que também funciona em qualquer aplicativo conectado ao banco de dados.

Uma tabela temporária é criada com CREATE TEMP TABLE ou CREATE TEMPORARY TABLE. Ela é visível apenas para a conexão de banco de dados que a criou e é descartada automaticamente quando essa conexão é fechada, o que a torna útil para armazenar resultados intermediários de consultas.

Sim. Uma chave primária é opcional em SQLiteQuando você omite um, SQLite Ainda mantém um rowid oculto de 64 bits que identifica cada linha. Restrições de coluna como PRIMARY KEY, UNIQUE e NOT NULL são opcionais ao definir uma tabela.

Por padrão, não. SQLite usa tipos dinâmicosping Com afinidade de tipo, uma coluna aceita valores de quase qualquer tipo, independentemente do tipo declarado. Para impor uma verificação rigorosa, crie a tabela como uma tabela STRICT, adicionada em SQLite 3.37.

Sim. Assistentes de IA que convertem texto em SQL transformam uma descrição em linguagem natural dos seus dados em instruções CREATE TABLE com colunas, tipos de dados e chaves. A precisão melhora quando você fornece ao modelo seu esquema existente, pois ele reutiliza os nomes reais de tabelas e colunas.

Sim. Travas deslizantes portáteis Copiloto do GitHub Sugere-se o uso de ALTER TABLE, DROP TABLE e outros. SQLite declarações embutidas em editores como VS CodeEle lê seus arquivos de migração e consultas existentes, portanto, suas sugestões correspondem aos nomes reais de suas tabelas e colunas.

Resuma esta postagem com: