Para criar uma tabela no SQLite, use o
CREATE TABLE
demonstração. Esta instrução aceita o nome da tabela, os nomes das colunas e suas definições, bem como algumas outras opções.
Exemplo
Aqui está um exemplo básico.
CREATE TABLE Products(
ProductId INTEGER PRIMARY KEY AUTOINCREMENT,
ProductName TEXT NOT NULL,
Price NUMERIC
);
Portanto, neste caso,
Products
é o nome da tabela e contém três colunas; ProductId
, ProductName
e Price
. Neste exemplo, adicionei o tipo de dados de cada coluna, bem como algumas restrições, mas todas são opcionais.
Especifique o esquema
O nome da tabela pode (opcionalmente) ser prefixado com o nome do esquema. Ao fazer isso, o nome do esquema deve ser
main
, temp
, ou o nome de um banco de dados anexado. Então eu poderia fazer isso em vez disso:
CREATE TABLE Store.Products(
ProductId,
ProductName,
Price
);
Neste caso,
Store
é o nome do banco de dados anexado no qual quero criar a tabela. O nome da coluna pode ser seguido pelo tipo de dados e quaisquer restrições.
O tipo de dados é opcional
Sim, você leu certo – o tipo de dados é realmente opcional.
O SQLite usa tipagem dinâmica e, portanto, o tipo de dados de um valor é associado ao próprio valor, não ao contêiner (coluna). Isso contrasta com a maioria dos outros sistemas de banco de dados SQL, nos quais você deve especificar o tipo de dados ao criar a coluna.
Então eu poderia fazer isso em vez disso:
CREATE TABLE Products(
ProductId,
ProductName,
Price
);
Restrições e outras opções
Você tem a opção de especificar quaisquer restrições ou outras opções que gostaria de aplicar em cada coluna. Estes incluem o seguinte:
DEFAULT
cláusula. Isso especifica um valor ou expressão padrão para cada coluna na tabela.- O
COLLATE
cláusula para especificar o nome de uma sequência de ordenação a ser usada como a sequência de ordenação padrão para a coluna. O valor padrão é BINÁRIO. PRIMARY KEY
cláusula. Opcionalmente, você pode especificar que uma coluna é uma chave primária. As chaves primárias de coluna única e composta (várias colunas) são suportadas no SQLite.- O SQLite também suporta restrições UNIQUE, NOT NULL, CHECK e FOREIGN KEY.
- Uma restrição de coluna gerada (também chamada de coluna computada). São colunas cujos valores são uma função de outras colunas na mesma linha.
- Se a tabela é um
WITHOUT ROWID
tabela. Esta é uma técnica de otimização de desempenho que omite a coluna “rowid” que é uma coluna especial que o SQLite usa por padrão. Para obter mais informações sobre essa técnica, consulte a documentação do SQLite.
Tabelas temporárias
Você pode especificar que uma tabela é uma tabela temporária usando o comando
TEMP
ou TEMPORARY
palavra-chave. Se estiver usando uma dessas palavras-chave, elas devem ser inseridas entre o
CREATE
e TABLE
. Aqui está um exemplo:
CREATE TEMP TABLE Products(
ProductId,
ProductName,
Price
);
Você também pode adicionar o
temp
esquema se desejar. Consulte Como criar uma tabela temporária para obter mais exemplos de criação de tabelas temporárias no SQLite.
Criar uma tabela a partir de outra tabela
Você também pode usar um
CREATE TABLE ... AS SELECT
instrução para criar uma nova tabela com base em outra tabela. Quando você faz isso, a nova tabela é preenchida com os dados do SELECT
instrução (que seleciona dados de outra tabela ou tabelas). Segue um exemplo básico:
CREATE TABLE Store.Products2 AS
SELECT * FROM Store.Products;
Este exemplo cria uma nova tabela chamada
Products2
e o preenche com todos os dados dos Products
tabela. Todos os nomes de coluna são os mesmos da tabela original.
É importante notar que as tabelas criadas desta forma não possuem PRIMARY KEY e nenhum tipo de restrição. Além disso, o valor padrão de cada coluna é
NULL
. Além disso, a sequência de agrupamento padrão para cada coluna da nova tabela é BINARY.