Resumo : neste tutorial, você aprenderá como criar novas tabelas usando CREATE TABLE
a instrução SQLite usando várias opções.
CREATE TABLE
Introdução à instrução SQLite
Para criar uma nova tabela no SQLite, você usa CREATE TABLE
uma instrução usando a seguinte sintaxe:
CREATE TABLE [IF NOT EXISTS] [schema_name].table_name (
column_1 data_type PRIMARY KEY,
column_2 data_type NOT NULL,
column_3 data_type DEFAULT 0,
table_constraints
) [WITHOUT ROWID];
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Nesta sintaxe:
- Primeiro, especifique o nome da tabela que deseja criar após as
CREATE TABLE
palavras-chave. O nome da tabela não pode começarsqlite_
porque está reservado para uso interno do SQLite. - Segundo, use
IF NOT EXISTS
a opção para criar uma nova tabela se ela não existir. Tentar criar uma tabela que já existe sem usar aIF NOT EXISTS
opção resultará em erro. - Terceiro, especifique opcionalmente a
schema_name
que a nova tabela pertence. O esquema pode ser o banco de dados principal,temp
banco de dados ou qualquer banco de dados anexado. - Quarto, especifique a lista de colunas da tabela. Cada coluna possui um nome, tipo de dados e restrição de coluna. SQLite suporta restrições
PRIMARY KEY
,UNIQUE
,NOT NULL
eCHECK
colunas. - Quinto, especifique as restrições da tabela, como
PRIMARY KEY
,FOREIGN KEY
,UNIQUE
eCHECK
restrições. - Finalmente, opcionalmente, use a
WITHOUT ROWID
opção. Por padrão, uma linha em uma tabela possui uma coluna implícita, chamada de colunarowid
ou . A coluna armazena uma chave inteira assinada de 64 bits que identifica exclusivamente a linha dentro da tabela. Se você não quiser que o SQLite crie a coluna, especifique a opção. Uma tabela que contém a coluna é conhecida como tabela. Observe que a opção só está disponível no SQLite 3.8.2 ou posterior.oid
_rowid_
rowid
rowid
WITHOUT ROWID
rowid
rowid
WITHOUT ROWID
Observe que a chave primária de uma tabela é uma coluna ou grupo de colunas que identifica exclusivamente cada linha da tabela.
CREATE TABLE
Exemplos de SQLite
Suponha que você precise gerenciar contatos usando SQLite.
Cada contato possui as seguintes informações:
- Primeiro nome
- Sobrenome
- Telefone
O requisito é que o e-mail e o telefone sejam únicos. Além disso, cada contato pertence a um ou mais grupos e cada grupo pode ter zero ou muitos contatos.
Com base nesses requisitos, criamos três tabelas:
- A
contacts
tabela que armazena informações de contato. - A
groups
tabela que armazena informações do grupo. - A
contact_groups
tabela que armazena o relacionamento entre contatos e grupos.
O diagrama de banco de dados a seguir ilustra tabelas: contacts
groups
econtact_groups.
A instrução a seguir cria a contacts
tabela.
CREATE TABLE contacts (
contact_id INTEGER PRIMARY KEY,
first_name TEXT NOT NULL,
last_name TEXT NOT NULL,
email TEXT NOT NULL UNIQUE,
phone TEXT NOT NULL UNIQUE
);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
A contact_id
é a chave primária da contacts
tabela.
Como a chave primária consiste em uma coluna, você pode usar a restrição de coluna.
As colunas first_name
e last_name
têm TEXT
classe de armazenamento e essas colunas são NOT NULL
. Isso significa que você deve fornecer valores ao inserir ou atualizar linhas na contacts
tabela.
O email e o telefone são únicos, portanto usamos a UNIQUE
restrição para cada coluna.
A instrução a seguir cria a groups
tabela:
CREATE TABLE groups (
group_id INTEGER PRIMARY KEY,
name TEXT NOT NULL
);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
A groups
tabela é bastante simples com duas colunas: group_id
e name
. A group_id
coluna é a coluna de chave primária.
A seguinte instrução cria contact_groups
tabela:
CREATE TABLE contact_groups(
contact_id INTEGER,
group_id INTEGER,
PRIMARY KEY (contact_id, group_id),
FOREIGN KEY (contact_id)
REFERENCES contacts (contact_id)
ON DELETE CASCADE
ON UPDATE NO ACTION,
FOREIGN KEY (group_id)
REFERENCES groups (group_id)
ON DELETE CASCADE
ON UPDATE NO ACTION
);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
A contact_groups
tabela possui uma chave primária que consiste em duas colunas: contact_id
e group_id
.
Para adicionar a restrição de chave primária da tabela, use esta sintaxe:
PRIMARY KEY (contact_id, group_id)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Além disso, contact_id
e group_id
são as chaves estrangeiras. Portanto, você usa FOREIGN KEY
restrição para definir uma chave estrangeira para cada coluna.
FOREIGN KEY (contact_id)
REFERENCES contacts (contact_id)
ON DELETE CASCADE
ON UPDATE NO ACTION
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
FOREIGN KEY (group_id)
REFERENCES groups (group_id)
ON DELETE CASCADE
ON UPDATE NO ACTION
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Observe que discutiremos a FOREIGN KEY
restrição em detalhes no tutorial subsequente.
Neste tutorial, você aprendeu como criar uma nova tabela com várias opções usando a CREATE TABLE
instrução SQLite.