Pular para o conteúdo
Ramos da Informática - Comunidade de Desenvolvedores

Torne-se um desenvolvedor FullStack: Pacote completo de formação desenvolvedor Frontend e Backend utilizando as linguagens de programação e frameworks mais procurados no mercado de trabalho. Mais informações, aqui. Faça o download do E-BookGuia Completo Para Se Tornar um(a) Desenvolvedor(a) Full-Stack, Começando do ZERO”.

Engenheiro de Software, autor de livros sobe tecnologia e negócios. É mantenedor do site Ramos da Informática. Hobbies: investir em ações, natação e finanças.

Engenheiro de Software, autor de livros sobe tecnologia e negócios. É mantenedor do site Ramos da Informática. Hobbies: investir em ações, natação e finanças.

admin

Todos os artigos deste autor

Guia rápido de comandos SQLite3

Chatbots com Whatsapp e Cielo integrados Nesse curso, eu vou te mostrar como o consumidor poder realizar um pagamento por dentro do aplicativo do WhatsApp, aonde o seu cliente vai entrar numa conversa como entraria numa conversa com qualquer pessoa ou com a sua empresa, navegar entre os produtos/serviços em menus simples enviados pelo chatbot, adicionar esses produtos/serviços no carrinho de compras, e num determinado ponto do chat, um link exclusivo é enviado para o cliente preencher os dados do cartão de crédito. No final, a análise é devolvida para o Whatsapp no qual a conversa foi iniciada. Inscreva-se.

É sempre bom ter tudo que você precisa de forma rápida e simples.

Criando uma tabela

CRUD

Backup

Relacionando tabelas

Escrevi este post para um mini tutorial de SQLite3. Através do terminal:

Criando uma tabela

Criando um banco de dados.

$ sqlite3 Clientes.db

A Ajuda.

sqlite> .help

Criando a tabela clientes.

sqlite> CREATE TABLE clientes(
> id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
> Nome VARCHAR(100) NOT NULL,
> CPF VARCHAR(11) NOT NULL,
> Email VARCHAR(20) NOT NULL,
> Fone VARCHAR(20),
> UF VARCHAR(2) NOT NULL
> );

Nota: Se usamos AUTOINCREMENT não precisamos do NOT NULL.

sqlite> CREATE TABLE clientes(
> id INTEGER PRIMARY KEY AUTOINCREMENT,
>

Visualizando o código SQL que criou a tabela.

sqlite> .schema clientes

Visualizando todas as tabelas existentes.

sqlite> .table

Saindo do SQLite3.

sqlite> .exit

CRUD

Abra um editor de texto e salve um arquivo com o nome inserirdados.sql.

$ gedit inserirdados.sql

E digite a inserção de alguns dados.

INSERT INTO clientes VALUES(1, ‘Regis’, ‘00000000000’, ‘rg@email.com’, ‘1100000000’, ‘SP’);
INSERT INTO clientes VALUES(2, ‘Abigail’, ‘11111111111’, ‘abigail@email.com’, ‘1112345678’, ‘RJ’);
INSERT INTO clientes VALUES(3, ‘Benedito’, ‘22222222222’, ‘benedito@email.com’, ‘1187654321’, ‘SP’);
INSERT INTO clientes VALUES(4, ‘Zacarias’, ‘33333333333’, ‘zacarias@email.com’, ‘1199999999’, ‘RJ’);

Nota: No caso do INSERT INTO não precisamos numerar, basta trocar o número do id por NULL, exemplo:

INSERT INTO clientes VALUES(NULL, ‘Carlos’, ‘99999999999’, ‘carlos@email.com’, ‘118888-8888’, ‘SP’);

Importe estes comandos no sqlite.

$ sqlite3 Clientes.db < inserirdados.sql

Abra o SQLite3 novamente, e visualize os dados.

$ sqlite3 Clientes.db
sqlite> SELECT * FROM clientes;

Você pode exibir o nome das colunas digitando

sqlite> .header on

Para escrever o resultado num arquivo externo digite

sqlite> .output resultado.txt
sqlite> SELECT * FROM clientes;
sqlite> .exit
$ cat resultado.txt

Adicionando uma nova coluna na tabela clientes.

sqlite> ALTER TABLE clientes ADD COLUMN bloqueado BOOLEAN;

No SQLite3 os valores para boolean são 0 (falso) e 1 (verdadeiro).

Visualizando as colunas da tabela clientes.

sqlite> PRAGMA table_info(clientes);

Alterando os valores do campo bloqueado.

sqlite> UPDATE clientes SET bloqueado=0; — comentario: Atualiza todos os registros para Falso.
sqlite> UPDATE clientes SET bloqueado=1 WHERE id=1; — Atualiza apenas o registro com id=1 para Verdadeiro.
sqlite> UPDATE clientes SET bloqueado=1 WHERE UF=‘RJ’; — Atualiza para Verdadeiro todos os registros com UF=’RJ’.

Faça um SELECT novamente para ver o resultado.

Deletando registros.

sqlite> DELETE FROM clientes WHERE id=4;

Cuidado: se você não usar o WHERE e escolher um id você pode deletar todos os registros da tabela.

Você pode exibir os dados na forma de coluna.

sqlite> .mode column

Backup

$ sqlite3 Clientes.db .dump > clientes.sql
$ cat clientes.sql
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE clientes(
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
Nome VARCHAR(100) NOT NULL,
CPF VARCHAR(11) NOT NULL,
Email VARCHAR(20) NOT NULL,
Fone VARCHAR(20),
UF VARCHAR(2) NOT NULL
);
INSERT INTO “clientes” VALUES(1,‘Regis’,‘00000000000’,‘rg@email.com’,‘1100000000’,‘SP’);
INSERT INTO “clientes” VALUES(2,‘Abigail’,‘11111111111’,‘abigail@email.com’,‘1112345678’,‘RJ’);
INSERT INTO “clientes” VALUES(3,‘Benedito’,‘22222222222’,‘benedito@email.com’,‘1187654321’,‘SP’);
INSERT INTO “clientes” VALUES(4,‘Zacarias’,‘33333333333’,‘zacarias@email.com’,‘1199999999’,‘RJ’);
COMMIT;

Pronto, se corromper o seu banco de dados, você pode recuperá-lo:

$ mv Clientes.db Clientes.db.old
$ sqlite3 Clientes_recuperado.db < clientes.sql
$ sqlite3 Clientes_recuperado.db ‘SELECT * FROM clientes;’

Faça um SELECT novamente para ver o resultado do novo banco de dados.

Relacionando tabelas

Todos devem saber que num banco de dados relacional a chave estrangeira ou FOREIGN KEY tem um papel importante no relacionamento entre duas tabelas. Veremos aqui como relacionar duas tabelas.

Primeiros façamos um backup do nosso bd.

$ sqlite3 Clientes.db .dump > clientes.sql

Apenas para relembrar, vamos ver qual é a nossa tabela…

$ sqlite3 Clientes.db
sqlite> .tables
clientes
sqlite> .header on
sqlite> .mode column

E quais são seus registros.

sqlite> SELECT * FROM clientes;
id Nome CPF Email Fone UF bloqueado
———- ———- ———– ———— ———- ———- ———-
1 Regis 00000000000 rg@email.com 1100000000 SP 1
2 Abigail 11111111111 abigail@emai 1112345678 RJ 1
3 Benedito 22222222222 benedito@ema 1187654321 SP 0

Então vamos criar duas novas tabelas: cidades e clientes_novo.

sqlite> CREATE TABLE cidades(
> id INTEGER PRIMARY KEY AUTOINCREMENT,
> cidade TEXT,
> uf VARCHAR(2)
> );
> CREATE TABLE clientes_novo(
> id INTEGER PRIMARY KEY AUTOINCREMENT,
> Nome VARCHAR(100) NOT NULL,
> CPF VARCHAR(11) NOT NULL,
> Email VARCHAR(20) NOT NULL,
> Fone VARCHAR(20),
> bloqueado BOOLEAN,
> cidade_id INTEGER,
> FOREIGN KEY (cidade_id) REFERENCES cidades(id)
> );

Segundo Sqlite Drop Column, não tem como “deletar” uma coluna, então precisamos criar uma nova tabela clientes_novo com os campos que precisamos e copiar os dados da primeira tabela para esta.

sqlite> INSERT INTO clientes_novo (id, Nome, CPF, Email, Fone, bloqueado)
> SELECT id, Nome, CPF, Email, Fone, bloqueado FROM clientes;

Veja que selecionamos os campos da tabela clientes e a inserimos em clientes_novo. Note que não copiamos o campo UF porque agora ele é da tabela cidades.

Agora podemos deletar a tabela “antiga”.

sqlite> DROP TABLE clientes;

E renomear a nova tabela.

sqlite> ALTER TABLE clientes_novo RENAME TO clientes;

Veja o resultado da nova tabela.

sqlite> SELECT * FROM clientes;
id Nome CPF Email Fone bloqueado cidade_id
———- ———- ———– ———— ———- ———- ———-
1 Regis 00000000000 rg@email.com 1100000000 1
2 Abigail 11111111111 abigail@emai 1112345678 1
3 Benedito 22222222222 benedito@ema 1187654321 0

Agora você terá que popular as cidades e definir a cidade_id em cada cliente. Lembrando que a chave é AUTOINCREMENT, então use NULL.

sqlite> INSERT INTO cidades VALUES (NULL,‘Campinas’,‘SP’);
sqlite> INSERT INTO cidades VALUES (NULL,‘Sao Paulo’,‘SP’);
sqlite> INSERT INTO cidades VALUES (NULL,‘Rio de Janeiro’,‘RJ’);

Veja os registros da tabela cidades.

sqlite> SELECT * FROM cidades;
id cidade uf
———- ———- ———-
1 Campinas SP
2 Sao Paulo SP
3 Rio de Jan RJ

Agora precisamos atualizar a cidade_id de cada cliente.

sqlite> UPDATE clientes SET cidade_id = 3 WHERE id = 1;
sqlite> UPDATE clientes SET cidade_id = 1 WHERE id = 2;
sqlite> UPDATE clientes SET cidade_id = 2 WHERE id = 3;

Resultado.

sqlite> SELECT * FROM clientes;
id Nome CPF Email Fone bloqueado cidade_id
———- ———- ———– ———— ———- ———- ———-
1 Regis 00000000000 rg@email.com 1100000000 1 3
2 Abigail 11111111111 abigail@emai 1112345678 1 1
3 Benedito 22222222222 benedito@ema 1187654321 0 2

Façamos um INNER JOIN para visualizar todos os dados, inclusive a cidade e o uf.

sqlite> SELECT * FROM clientes INNER JOIN cidades ON clientes.cidade_id = cidades.id;
id Nome CPF Email Fone bloqueado cidade_id cidade uf
———- ———- ———– ———— ———- ———- ———- ————– —
1 Regis 00000000000 rg@email.com 1100000000 1 3 Rio de Janeiro RJ
2 Abigail 11111111111 abigail@emai 1112345678 1 1 Campinas SP
3 Benedito 22222222222 benedito@ema 1187654321 0 2 Sao Paulo SP
Facebook
LinkedIn
Twitter
Pinterest
Reddit
Telegram
WhatsApp
Email
Print

Relacionados

Deixe uma resposta