Resumo :neste tutorial, você aprenderá como criar novas tabelas usando SQLite
CREATE TABLE
declaração usando várias opções. Introdução ao SQLite CREATE TABLE
declaração
Para criar uma nova tabela no SQLite, você usa
CREATE TABLE
declaraçã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];
Code language: SQL (Structured Query Language) (sql)
Nesta sintaxe:
- Primeiro, especifique o nome da tabela que você deseja criar após o
CREATE TABLE
palavras-chave. O nome da tabela não pode começar comsqlite_
porque é reservado para uso interno do SQLite. - Segundo, use
IF NOT EXISTS
opção para criar uma nova tabela se ela não existir. Tentando criar uma tabela que já existe sem usar oIF NOT EXISTS
opção resultará em um erro. - Terceiro, especifique opcionalmente o
schema_name
à qual 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 tem um nome, tipo de dados e a restrição de coluna. SQLite suporta
PRIMARY KEY
,UNIQUE
,NOT NULL
eCHECK
restrições de coluna. - Quinto, especifique as restrições da tabela, como
PRIMARY KEY
,FOREIGN KEY
,UNIQUE
eCHECK
restrições. - Finalmente, opcionalmente, use o
WITHOUT ROWID
opção. Por padrão, uma linha em uma tabela tem uma coluna implícita, que é chamada derowid
,oid
ou_rowid_
coluna. Orowid
A coluna armazena uma chave inteira assinada de 64 bits que identifica exclusivamente a linha dentro da tabela. Se você não quiser, o SQLite cria orowid
coluna, você especifica oWITHOUT ROWID
opção. Uma tabela que contém orowid
coluna é conhecida comorowid
tabela. Observe que oWITHOUT ROWID
A opção está disponível apenas no SQLite 3.8.2 ou posterior.
Observe que a chave primária de uma tabela é uma coluna ou um grupo de colunas que identificam exclusivamente cada linha da tabela.
SQLite CREATE TABLE
exemplos
Suponha que você tenha que gerenciar contatos usando SQLite.
Cada contato tem as seguintes informações:
- Nome
- Sobrenome
- Telefone
O requisito é que o e-mail e o telefone sejam exclusivos. Além disso, cada contato pertence a um ou vários grupos e cada grupo pode ter zero ou muitos contatos.
Com base nesses requisitos, criamos três tabelas:
- Os
contacts
tabela que armazena informações de contato. - Os
groups
tabela que armazena informações do grupo. - Os
contact_groups
tabela que armazena a relação entre contatos e grupos.
O diagrama de banco de dados a seguir ilustra as tabelas:
contacts
groups
e contact_groups.
A instrução a seguir cria os
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
);
Code language: SQL (Structured Query Language) (sql)
Tente
O
contact_id
é a chave primária dos contacts
tabela. Como a chave primária consiste em uma coluna, você pode usar a restrição de coluna.
O
first_name
e last_name
as colunas 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 nos contacts
tabela. O email e telefone são únicos, portanto, usamos o
UNIQUE
restrição para cada coluna. A instrução a seguir cria os
groups
tabela:CREATE TABLE groups (
group_id INTEGER PRIMARY KEY,
name TEXT NOT NULL
);
Code language: SQL (Structured Query Language) (sql)
Tente
Os
groups
table é bem simples com duas colunas:group_id
e name
. O group_id
coluna é a coluna de chave primária. A instrução a seguir 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
);
Code language: SQL (Structured Query Language) (sql)
Tente
Os
contact_groups
tabela tem 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, você usa esta sintaxe:
PRIMARY KEY (contact_id, group_id)
Code language: SQL (Structured Query Language) (sql)
Além disso, o
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
Code language: SQL (Structured Query Language) (sql)
FOREIGN KEY (group_id)
REFERENCES groups (group_id)
ON DELETE CASCADE
ON UPDATE NO ACTION
Code language: SQL (Structured Query Language) (sql)
Observe que discutiremos no
FOREIGN KEY
restrição em detalhes no tutorial subsequente. Neste tutorial, você aprendeu como criar uma nova tabela com várias opções usando SQLite
CREATE TABLE
demonstração.