O SQLite tem um banco de dados completo num mesmo arquivo, mais simples que bancos SQL como o MySQL ou o PostgreSQL, já que o SQLite não precisa subir um servidor, sendo utilizado em apenas um arquivo com extensão .db, .sqlite ou outra equivalente.
No SQLite, o banco em si é o próprio arquivo, e nele temos as tabelas do banco. Podemos fazer os comandos básicos de CRUD no SQLite (como o select, insert, delete e update), além de alterações e exclusões de tabelas, e uso de chaves estrangeiras e joins. Também é possível criar e manipular views e triggers.
Para criar um novo arquivo de banco de dados SQLite, digite isso:
sqlite3 sistema.db3
Para abrir o arquivo dentro do SQLite, faça assim:
.open sistema.db3
Depois, para criar tabelas via linha de comando, com esse arquivo aberto, dentro do SQLite, digite o código normalmente, por exemplo:
create table contato (
id integer not null primary key autoincrement, -- No SQLite a declaração de primary key e autoincrement devem estar na mesma linha, e autoincrement não tem underline (_)
nome varchar(100) not null,
email varchar(70) unique not null,
mensagem text not null
);
Os dados que podem ser definidos nas colunas do SQLite basicamente são integer
, real
, char
e varchar
(com a quantidade de caracteres máximo), text
, date
, time
, datetime
, boolean
e tipos blob
. As constraints como null
, if exists
(ambos também com not
, unique
, unsigned
e autoincrement
(nesse caso, sem underline), podem ser usadas também.
PS: Para limpar a tela do SQLite, basta digitar .system cls
ou .system clear
(dependendo se você está no Windows ou em sistema Unix). Também dá pra usar outros comandos do sistema.
Também podemos usar códigos insert, update e delete da mesma forma, no entanto os inserts pode ser colocados num arquivo SQL, por exemplo:
-- Salve um arquivo com esse código
insert into contato (nome, email, mensagem) values
('Fulano', 'fulano@gmail.com', 'Exemplo de Mensagem'),
('Beltrano', 'beltrano@gmail.com', 'Exemplo de Mensagem'),
('Sicrano', 'sicrano@gmail.com', 'Exemplo de Mensagem');
E depois, importar pra base de dados criada assim:
sqlite3 sistema.db3 < arquivo.sql
Depois usamos o select normalmente, podemos fazer diretamente dentro do SQLite, ou usando o nome do arquivo assim:
sqlite3 sistema.db3 "select * from contato"
Podemos usar chaves estrangeiras em SQLite também, mas estas não são habilitadas por padrão, nesse caso devemos colocar esse comando dentro do SQLite:
pragma foreign_keys = on;
PS: Não é possível adicionar chaves estrangeiras usando alter table, estas têm que ser criadas já na criação da tabela, com o create table.
Para exibir os nomes das colunas, dentro do SQLite, digite isso:
.header on
Para escrever a saída de dados num arquivo, dentro do SQLite, digite isso:
.output resultado.txt
select * from contato;
Para fazer um backup dos dados, digite isso:
sqlite3 sistema.db3 .dump > backup.sql
Para fazer um banco de dados SQLite com mais conteúdos, importe esse arquivo clicando aqui e salve no banco de dados com o comando sqlite3 sistema.db3 < cursos.sql
. Ele tem as tabelas cursos e gafanhotos com chaves estrangeiras.
Saiba também que:
describe
, o desc
é só para consultas descendentes em select
.alter table
, apenas na última.modify
nem change
.drop column
ou add column
em cada alter table
, nem deletar chaves primárias.limit
em update e delete, apenas em select.truncate
, status
, show
nem explain
.date_format
nem str_to_date
.like
não diferencia maiúsculas de minúsculas, mas não reconhece acentos.alter view
, sendo necessária deletar e criar uma nova. Também não podemos adicionar, alterar e excluir índices com ele (para criar um índice basta usar create index nome_do_indice on nome_da_tabela(nome_da_coluna)
, e excluir um índice simplesmente use drop index nome_do_indice
).div
, mod
, bin
, oct
, md5
, sha1
e database
. No entanto, existe a função hex
para mostrar números hexadecimais, e a função group_concat
só aceita dois argumentos (coluna e string separadora). Outras funções, como as matemáticas ceiling
, floor
, pow
e sqrt
existem normalmente.