Criação e alteração de dados em SQL

DDL, restrições, tipos SQLite, integridade referencial e INSERT, UPDATE e DELETE.

TLDR

Perguntar sobre esta página

ChatGPTClaudePerplexityGrokGeminiCopiar e abrirDeepSeekCopiar e abrir

Declarar o esquema

DDL cria e altera o esquema; DML consulta ou altera os tuplos.

Ficheiros do exemplo
Um inteiro obrigatório e positivo
SELECT id, valor, typeof(valor) AS tipo FROM Quantidade;
CREATE TABLE Quantidade(
id INTEGER PRIMARY KEY,
valor INTEGER NOT NULL
  CHECK (typeof(valor) = 'integer' AND valor > 0)
);
INSERT INTO Quantidade VALUES (1, 7);
Resultado

Executa a consulta para ver as tabelas.

Devolve id 1, valor 7, tipo integer. Em tabelas SQLite comuns, INTEGER é afinidade, não imposição de tipo; o CHECK do exemplo exige tipo e valor.

RestriçãoO que garante e o que não garante
PRIMARY KEYEscolhe a identidade. Em chaves textuais ou compostas comuns, declara NOT NULL.
NOT NULLExige valor conhecido.
UNIQUEProíbe conhecidos repetidos; SQLite admite vários nulos.
CHECKRejeita quando a expressão é falsa; desconhecido não rejeita. CHECK(x>0) aceita NULL.
DEFAULTPreenche coluna omitida; não substitui um NULL explícito.

VARCHAR(20) não limita comprimento em SQLite. STRICT impõe tipos, mas as regras do domínio continuam necessárias. INTEGER PRIMARY KEY é o rowid (INT PRIMARY KEY não); a atribuição automática pode reutilizar apagados, AUTOINCREMENT proíbe-o com custo de sqlite_sequence.

Ligar tabelas

Em SQLite, corre PRAGMA foreign_keys = ON em cada ligação, antes da transação.

  • A referência tem de existir numa primária ou única compatível; estrangeira não é automaticamente única.
  • Numa estrangeira composta, todas as colunas apontam ao mesmo tuplo; se qualquer componente for nulo, SQLite dispensa a correspondência. Para participação obrigatória, NOT NULL em todas.
  • DEFERRABLE INITIALLY DEFERRED admite inconsistência temporária até ao COMMIT.
PolíticaEfeito ao alterar ou eliminar o alvo
NO ACTIONRecusa se a referência estiver inválida na verificação.
RESTRICTRecusa de imediato havendo dependentes, mesmo em diferida.
CASCADEPropaga a alteração ou elimina dependentes.
SET NULLEscreve nulos, se permitido.
SET DEFAULTEscreve o default, que tem de satisfazer a referência.

Uma estrangeira em Item não obriga nenhuma encomenda a ter linhas; esse mínimo pede outro mecanismo.

Alterar dados e esquema

  • Nomeia colunas em INSERT; INSERT ... SELECT insere resultados.
  • UPDATE e DELETE sem WHERE abrangem todas as linhas; restrições valem também em atualizações.
  • INSERT OR REPLACE pode apagar a linha em conflito e inserir outra, com efeitos referenciais: não é atualização.
  • ALTER TABLE muda o esquema dentro dos limites da versão; DROP TABLE apaga estrutura e dados; DELETE conserva a estrutura.
  • CREATE TABLE ... AS SELECT copia resultados, mas em SQLite não copia primárias, estrangeiras nem CHECKs.

Preços em cêntimos inteiros evitam erros binários; para euros divide por 100.0, porque em SQLite 5 / 2 dá 2.

Particularidades dos tipos SQLite.

À tua maneira

Aparência

Modo de cor
Tema
Cor de destaque

Leitura

Fonte de leitura

Álgebra, lógica e uma ideia de cada vez.

Código

Fonte do código

Navegação

Cursor de leitura, sem edição. h, j, k, l movem; / pesquisa nesta página. v seleciona caracteres; V seleciona linhas; y copia. Tab permite destacar ou comentar. Espaço ou Enter abre blocos recolhíveis. Nos cartões, h, j, k, l mudam o foco.

CSS personalizado

Ativa uma sugestão ou guarda o teu CSS. Só muda este navegador.

Usa --page, --text e --accent para acompanhar o tema.

Seletores e recuperação

.site-header, .prose, .course-card, [data-reading-history], [data-playground] e .page-actions.

Abre a aparência com a tecla vírgula ou no rodapé. Se o CSS esconder os controlos, abre esta página sem CSS personalizado.

Pesquisar

Escreve para pesquisar em todo o site.

para escolher · Enter para abrir · Esc para fechar

Copiar fórmula

A cópia automática não está disponível. Copia o LaTeX abaixo.

Pesquisar nesta página

Enter procura · n / N repetem · Esc cancela. Ctrl / Cmd K pesquisa todo o site.

Atalhos de teclado

Clica numa tecla para a mudar. Esc cancela. Backspace desativa.

PesquisarCtrl / Cmd K

Os atalhos não interferem enquanto escreves. Tab e Enter funcionam sempre.