SQLite
 sql >> Base de Dados >  >> RDS >> SQLite

SQLite Criar Tabela


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 com sqlite_ 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 o IF 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 e CHECK restrições de coluna.
  • Quinto, especifique as restrições da tabela, como PRIMARY KEY , FOREIGN KEY , UNIQUE e CHECK 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 de rowid , oid ou _rowid_ coluna. O rowid 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 o rowid coluna, você especifica o WITHOUT ROWID opção. Uma tabela que contém o rowid coluna é conhecida como rowid tabela. Observe que o WITHOUT 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
  • E-mail
  • 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 ACTIONCode language: SQL (Structured Query Language) (sql)
FOREIGN KEY (group_id) 
    REFERENCES groups (group_id) 
      ON DELETE CASCADE 
      ON UPDATE NO ACTIONCode 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.