SQLite Create, Alter and Drop table

Última atualização em 26 de fevereiro de 2020 08:08:49 (UTC/GMT +8 horas)

Introduction

O comando SQLite CREATE TABLE é usado para criar uma nova tabela em um banco de dados SQLite. Também é usado para criar índices, visualizações e triggers. Um comando CREATE TABLE especifica os seguintes atributos da nova tabela:.

  • O nome da nova tabela.
  • O banco de dados no qual a nova tabela é criada. As tabelas podem ser criadas no banco de dados principal, no banco de dados temporário ou em qualquer banco de dados anexado.
  • O nome de cada coluna na tabela.
  • O tipo declarado de cada coluna na tabela e cada coluna deve ter um datatype, que pode ser NULL – o valor é um valor NULL, INTEGER – um inteiro assinado, REAL – um valor em ponto flutuante, TEXT – uma string de texto ou BLOB – um blob de dados.
  • Um valor ou expressão padrão para cada coluna na tabela.
  • Uma sequência de colação padrão para usar com cada coluna.
  • Optionally, uma CHAVE PRIMÁRIA para a tabela. São suportadas chaves primárias tanto de coluna única como de composta (múltiplas colunas).
  • Um conjunto de restrições SQL para cada tabela. SQLite suporta restrições UNIQUE, NOT NULL, CHECK e FOREIGN KEY.
  • Um único índice será criado automaticamente para reforçar uma restrição UNIQUE ou PRIMARY KEY. e elas não podem ser abandonadas manualmente com o comando DROP INDEX.

Tabela de conteúdo

Convenções de nomenclatura

Sintaxas

Exemplo

Tabela de validação

Tabela de visualização

p>Convenções de nomenclatura

Cada base de dados, tabela, coluna, índice, gatilho ou visualização deve ter um nome pelo qual possa ser identificado. Um nome identificador deve começar com uma letra ou com o caracter sublinhado, que pode ser seguido por um número de caracteres alfanuméricos ou sublinhados. Nenhum outro caractere pode ser permitido com este nome.

The valid identifier names are :

  • tsttable
  • tst_table
  • table456
  • z

However the following are invalid identifier:

  • tst table
  • tst-table
  • 456table

Other characters can be used in identifiers if they are enclosed in double quotes (or square brackets), for example:

  • “test table”
  • “tst table”
  • “123 456”

Reserved Keywords

Each CREATE TABLE statement must specify a name for the new table. Table names that begin with “sqlite_” are reserved for internal use. It is an error to attempt to create a table with a name that starts with “sqlite_”.

Name Length

In SQLite there is not restricted upper limit on the length of an identifier name, so you can use a manageable length of identifier name to be use.

Case Sensitivity

For the most part, case sensitivity in SQLite is off. Nomes de tabelas e nomes de colunas podem ser digitados em maiúsculas, minúsculas ou maiúsculas mistas, e diferentes capitalizações do mesmo nome de objeto da base de dados podem ser usadas alternadamente.

Notes:

Quando uma nova tabela é criada, ela deve estar em uma base de dados e o nome da base de dados pode ser “principal”, “temporário”, ou o nome de uma base de dados anexada.Se a palavra-chave “TEMP” ou “TEMPORARY” for usada entre “CREATE” e “TABLE” então a nova tabela é criada na base de dados temp. Tanto o nome da base de dados como a palavra-chave TEMP ou TEMPORARY não podem ser usados.

Tenta criar uma tabela numa base de dados que contenha uma tabela ou índice ou visão do mesmo nome, ocorrerá um erro, mas se a cláusula “SE NÃO EXISTE” for especificada como parte da instrução CREATE TABLE não criará nenhum efeito.

Syntax:

CREATE TABLE table-name (column-def);

TEMPORÁRIO – uma tabela pode ser declarada como temporária, se desejado.

Column-def. – A column definition consists of the name of the column, and followed by the declared type of the column which is optional, then one or more optional column constraints.

A column definition can be defined as follows:

name column-constraint]

Example

Here is a simple Create Table Statement:

CREATE TABLE company(com_id text(4),com_name text(15));

To see the structure of the table, use the following commands:

Sample Output:

sqlite> .mode columnsqlite> .header onsqlite> PRAGMA table_info(company);cid name type notnull dflt_value pk---------- ---------- ---------- ---------- ---------- ----------0 com_id text(4) 0 01 com_name text(15) 0 0

Here the .mode command shows the columns and .header on command shows the header on.

Create a table to use TEMPORARY clause

CREATE TABLE TEMPORARY (com_id text(4),com_name text(15));  

This time table is created in temp databases. If you want to see the created table execute the following command-

sqlite> .tablesTEMPORARY 

If you use the table name with TEMPORARY keyword an error message will appear. Aqui veja abaixo-

sqlite> create table TEMPORARY company( ...> com_id text(4), ...> com_name text(15));Error: near "company": syntax error 

Fazer uma cópia de uma tabela existente dentro da base de dados principal

É muito necessário para um desenvolvedor fazer uma cópia de segurança da tabela original que está em funcionamento, e como nenhuma medida prejudicial aconteceu sem cuidado ou de forma acidental no momento do desenvolvimento. Além disso, pode ser necessário alterar os nomes das colunas ou remover uma ou mais colunas de uma tabela sqlite, portanto é uma boa prática fazer um backup da tabela de trabalho de tempo em tempo.

Se você quiser fazer um backup da tabela da empresa incluindo todos os registros, a seguinte declaração pode ser usada

CREATE TABLE backup_company AS SELECT * FROM company ;

Se você quiser fazer um backup apenas da estrutura da tabela da empresa, a seguinte declaração pode ser usada

CREATE TABLE backup_company AS SELECT * FROM company LIMIT 0;

ALTER TABLE

O comando ALTER TABLE só pode ser usado no SQLite para permitir ao utilizador apenas renomear uma tabela ou adicionar uma nova coluna a uma tabela existente. Não é possível renomear uma coluna ou remover uma coluna, ou adicionar ou remover restrições de uma tabela.

O comando RENAME TO é usado para renomear a tabela identificada por table-name para new-table-name. Este comando não pode ser usado para mover uma tabela dentro de dois bancos de dados, mas apenas ser renomeada dentro do mesmo banco de dados.

Se a tabela sendo renomeada contendo triggers ou índices, nenhum efeito será feito e estes permanecerão intactos como eram antes da renomeação. Entretanto, quaisquer definições de visualização, ou declarações executadas por triggers que se referem à tabela sendo renomeada, não serão automaticamente modificadas.

Aqui criamos uma nova empresa de tabelas.

sqlite> create table company( ...> com_id text(4), ...> com_name text(15));

Para adicionar uma nova coluna:

ALTER TABLE company ADD com_add VARCHAR(50);

Após adicionar uma coluna veja a estrutura da tabela empresa.

sqlite> .schemaCREATE TABLE company(com_id text(4),com_name text(15), com_add VARCHAR(50));

Para renomear uma tabela:

sqlite> .tablescompany hrdb.departments hrdb.jobshrdb.countries hrdb.employees hrdb.locationshrdb.department hrdb.job_history hrdb.regions

Agora renomear a tabela empresa para novo nome empresa_nova. Aqui está a declaração abaixo.

ALTER TABLE company RENAME TO company_new;

Após renomear, veja a lista das tabelas abaixo.

sqlite> .tablescompany_new hrdb.departments hrdb.jobshrdb.countries hrdb.employees hrdb.locationshrdb.department hrdb.job_history hrdb.regions

Renomeando ou deixando cair a coluna de uma tabela:

Nota : A Sqlite só tem suporte limitado a ALTER TABLE. O suporte a colunas e renomear não é suportado por SQLite. Então é melhor criar uma nova tabela com as alterações de acordo com a sua necessidade, então largue a tabela original e novamente renomeie a nova tabela recém-criada para o nome da tabela original. Uma coisa a lembrar é que, uma vez que uma tabela é descartada, quaisquer triggers associados serão perdidos, então esteja atento a isso. É uma boa ideia que, antes de renomear ou largar a tabela, você pode pegar uma cópia da declaração de criação da tabela. Aqui está o comando a partir do qual você obterá o comando.

SELECT sql FROM sqlite_master WHERE tbl_name = 'table_name';

DROP TABLE

O comando DROP TABLE remove uma tabela de um banco de dados.

Syntax:

DROP TABLE table_name orDROP TABLE table_name 

P>Paremetros:

nome_da_tabela – O nome de uma tabela existente que você deseja soltar. You may drop more than one tables by specifying their names seperated by a comma.

DROP TABLE company_new;

Previous: Data Types
Next: Constraint

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *