diff --git a/exercicios/para-casa/atualizar_livro.py b/exercicios/para-casa/atualizar_livro.py new file mode 100644 index 0000000..e923018 --- /dev/null +++ b/exercicios/para-casa/atualizar_livro.py @@ -0,0 +1,10 @@ +import sqlite3 + +conn = sqlite3.connect('livraria.db') +cursor = conn.cursor() + +cursor.execute("UPDATE livros SET preco = ? WHERE id = ?", (29.99, 1)) + +conn.commit() +cursor.close() +conn.close() \ No newline at end of file diff --git a/exercicios/para-casa/consultar_livros.py b/exercicios/para-casa/consultar_livros.py new file mode 100644 index 0000000..5febd25 --- /dev/null +++ b/exercicios/para-casa/consultar_livros.py @@ -0,0 +1,13 @@ +import sqlite3 + +conn = sqlite3.connect('livraria.db') +cursor = conn.cursor() + +cursor.execute("SELECT * FROM livros") +registros = cursor.fetchall() + +for registro in registros: + print(registro) + +cursor.close() +conn.close() \ No newline at end of file diff --git a/exercicios/para-casa/criar_banco.py b/exercicios/para-casa/criar_banco.py new file mode 100644 index 0000000..c9b321f --- /dev/null +++ b/exercicios/para-casa/criar_banco.py @@ -0,0 +1,18 @@ +import sqlite3 + +conn = sqlite3.connect('livraria.db') +cursor = conn.cursor() + +cursor.execute(""" + CREATE TABLE IF NOT EXISTS livros ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + titulo TEXT NOT NULL, + autor TEXT NOT NULL, + ano INTEGER NOT NULL, + preco REAL NOT NULL +) +""") + +conn.commit() +cursor.close() +conn.close() \ No newline at end of file diff --git a/exercicios/para-casa/exportar_csv.py b/exercicios/para-casa/exportar_csv.py new file mode 100644 index 0000000..40288bd --- /dev/null +++ b/exercicios/para-casa/exportar_csv.py @@ -0,0 +1,16 @@ +import sqlite3 +import csv + +conn = sqlite3.connect('livraria.db') +cursor = conn.cursor() + +cursor.execute("SELECT * FROM livros") +dados = cursor.fetchall() + +with open('exportados_livros.csv', 'w', newline='', encoding='utf-8') as csvfile: + escritor = csv.writer(csvfile) + escritor.writerow(['id', 'titulo', 'autor', 'ano', 'preco']) + escritor.writerows(dados) + +cursor.close() +conn.close() \ No newline at end of file diff --git a/exercicios/para-casa/importar_csv.py b/exercicios/para-casa/importar_csv.py new file mode 100644 index 0000000..a3ec832 --- /dev/null +++ b/exercicios/para-casa/importar_csv.py @@ -0,0 +1,18 @@ +import sqlite3 +import csv + +conn = sqlite3.connect('livraria.db') +cursor = conn.cursor() + +with open('livros.csv', 'r', newline='', encoding='utf-8') as csvfile: + leitor = csv.reader(csvfile) + next(leitor) + for registro in leitor: + cursor.execute("INSERT INTO livros (titulo, autor, ano, preco) VALUES (?, ?, ?, ?)", (registro[0], + registro[1], + registro[2], + registro[3])) + +conn.commit() +cursor.close() +conn.close() \ No newline at end of file diff --git a/exercicios/para-casa/livros.csv b/exercicios/para-casa/livros.csv new file mode 100644 index 0000000..f895837 --- /dev/null +++ b/exercicios/para-casa/livros.csv @@ -0,0 +1,6 @@ +titulo,autor,ano,preco +Orgulho e Preconceito,Jane Austen,1813,44.99 +Amor & Azeitonas,Jenna Evans Welch,2021,39.99 +Querido Evan Hansen,Val Emmich,2019,29.99 +Vidas Secas,Graciliano Ramos,1938,27.99 +Crisálida,Vinicius Velo,2021,49.99 \ No newline at end of file diff --git a/exercicios/para-casa/remover_livro.py b/exercicios/para-casa/remover_livro.py new file mode 100644 index 0000000..f32c2e4 --- /dev/null +++ b/exercicios/para-casa/remover_livro.py @@ -0,0 +1,10 @@ +import sqlite3 + +conn = sqlite3.connect('livraria.db') +cursor = conn.cursor() + +cursor.execute("DELETE FROM livros WHERE id = ?", (3,)) + +conn.commit() +cursor.close() +conn.close() \ No newline at end of file diff --git a/exercicios/para-sala/clientes.csv b/exercicios/para-sala/csv/clientes.csv similarity index 100% rename from exercicios/para-sala/clientes.csv rename to exercicios/para-sala/csv/clientes.csv diff --git a/exercicios/para-sala/csv/empresa.db b/exercicios/para-sala/csv/empresa.db new file mode 100644 index 0000000..c294dc8 Binary files /dev/null and b/exercicios/para-sala/csv/empresa.db differ diff --git a/exercicios/para-sala/csv/exportados_clientes.csv b/exercicios/para-sala/csv/exportados_clientes.csv new file mode 100644 index 0000000..a86deda --- /dev/null +++ b/exercicios/para-sala/csv/exportados_clientes.csv @@ -0,0 +1,6 @@ +id,nome,email +1,João,joao@example.com +2,Maria,maria@example.com +3,Pedro,pedro@example.com +4,Luiza,luiza@example.com +5,Fernando,fernando@example.com diff --git a/exercicios/para-sala/funcionarios.csv b/exercicios/para-sala/csv/funcionarios.csv similarity index 64% rename from exercicios/para-sala/funcionarios.csv rename to exercicios/para-sala/csv/funcionarios.csv index ecfc643..4f2c526 100644 --- a/exercicios/para-sala/funcionarios.csv +++ b/exercicios/para-sala/csv/funcionarios.csv @@ -2,5 +2,3 @@ id,nome,departamento 1,Ana,Financeiro 2,Carlos,TI 3,Beatriz,RH -4,Daniel,Marketing -5,Elisa,Vendas diff --git a/exercicios/para-sala/produtos.csv b/exercicios/para-sala/csv/produtos.csv similarity index 100% rename from exercicios/para-sala/produtos.csv rename to exercicios/para-sala/csv/produtos.csv diff --git a/exercicios/para-sala/csv/script10.py b/exercicios/para-sala/csv/script10.py new file mode 100644 index 0000000..cd98141 --- /dev/null +++ b/exercicios/para-sala/csv/script10.py @@ -0,0 +1,19 @@ +#Faça um script que exporte os dados da tabela clientes de empresa.db para um arquivo chamado exportados_clientes.csv. + +import sqlite3 +import csv + +conn = sqlite3.connect('empresa.db') +cursor = conn.cursor() + +cursor.execute("SELECT * FROM clientes") +dados = cursor.fetchall() + +with open('exportados_clientes.csv', 'w', newline='', encoding='utf-8') as csvfile: + escritor = csv.writer(csvfile) + escritor.writerow(['id', 'nome', 'email']) + escritor.writerows(dados) + +conn.commit() +cursor.close() +conn.close() \ No newline at end of file diff --git a/exercicios/para-sala/csv/script7.py b/exercicios/para-sala/csv/script7.py new file mode 100644 index 0000000..5e244d9 --- /dev/null +++ b/exercicios/para-sala/csv/script7.py @@ -0,0 +1,8 @@ +#Crie um script que leia o arquivo CSV 'produtos.csv' e exiba seu conteúdo no terminal. + +import csv + +with open('produtos.csv', newline='', encoding='utf-8') as csvfile: + leitor = csv.reader(csvfile) + for linha in leitor: + print(linha) \ No newline at end of file diff --git a/exercicios/para-sala/csv/script8.py b/exercicios/para-sala/csv/script8.py new file mode 100644 index 0000000..f0fac1d --- /dev/null +++ b/exercicios/para-sala/csv/script8.py @@ -0,0 +1,14 @@ +#Escreva um script que crie um arquivo CSV chamado funcionarios.csv com as colunas id, nome, departamento. + +import csv + +funcionarios = [ + [1, 'Ana', 'Financeiro'], + [2, 'Carlos', 'TI'], + [3, 'Beatriz', 'RH'] +] + +with open('funcionarios.csv', 'w', newline='', encoding='utf-8') as csvfile: + escritor = csv.writer(csvfile) + escritor.writerow(['id', 'nome', 'departamento']) + escritor.writerows(funcionarios) \ No newline at end of file diff --git a/exercicios/para-sala/csv/script9.py b/exercicios/para-sala/csv/script9.py new file mode 100644 index 0000000..5cd04f9 --- /dev/null +++ b/exercicios/para-sala/csv/script9.py @@ -0,0 +1,25 @@ +#Crie um script que leia o arquivo 'clientes.csv' e insira os dados numa tabela 'clientes' no database empresa.db. + +import csv +import sqlite3 + +conn = sqlite3.connect('empresa.db') #como ainda não existe, iremos criar esse database +cursor = conn.cursor() + +cursor.execute(""" + CREATE TABLE IF NOT EXISTS clientes ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + nome TEXT NOT NULL, + email TEXT NOT NULL + ) + """) + +with open('clientes.csv', newline='', encoding='utf-8') as csvfile: + leitor = csv.reader(csvfile) + next(leitor) #pulando o cabeçalho para não atribuir os nomes das coluna como dados + for linha in leitor: + cursor.execute("INSERT INTO clientes (nome, email) VALUES (?, ?)", (linha[1], linha[2])) + +conn.commit() +cursor.close() +conn.close() \ No newline at end of file diff --git a/exercicios/para-sala/exemplo/exemplo.db b/exercicios/para-sala/exemplo/exemplo.db new file mode 100644 index 0000000..87c43e6 Binary files /dev/null and b/exercicios/para-sala/exemplo/exemplo.db differ diff --git a/exercicios/para-sala/exemplo/script.py b/exercicios/para-sala/exemplo/script.py new file mode 100644 index 0000000..c5e8a45 --- /dev/null +++ b/exercicios/para-sala/exemplo/script.py @@ -0,0 +1,26 @@ +import sqlite3 + +conn = sqlite3.connect("exemplo.db") #como o database ainda não existia, ao rodarmos o programa, ele será criado +cursor = conn.cursor() #criando um cursor para interagir com o SQL + +cursor.execute(""" + CREATE TABLE IF NOT EXISTS usuarios ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + nome TEXT NOT NULL, + idade INTEGER NOT NULL + )""") +#criou-se a tabela usuarios (caso já não existisse) com colunas id, nome e idade (que não aceitam valores vazios) + +#cursor.execute("INSERT INTO usuarios (nome, idade) VALUES ('João', 18)") +#cursor.execute("INSERT INTO usuarios (nome, idade) VALUES ('Maria', 19)") + +cursor.execute("SELECT * FROM usuarios") + +registros = cursor.fetchall() #guardando aquilo selecionado com o SELECT na variável "registros" + +for registro in registros: + print(registro) + +conn.commit() #executará de fato aquilo apontado nos executes + +conn.close() #fechando a conexão \ No newline at end of file diff --git a/exercicios/para-sala/exercicio/escola.db b/exercicios/para-sala/exercicio/escola.db new file mode 100644 index 0000000..072ee7a Binary files /dev/null and b/exercicios/para-sala/exercicio/escola.db differ diff --git a/exercicios/para-sala/exercicio/script1.py b/exercicios/para-sala/exercicio/script1.py new file mode 100644 index 0000000..7f6af38 --- /dev/null +++ b/exercicios/para-sala/exercicio/script1.py @@ -0,0 +1,18 @@ +#Exercício 1: crie um script Python que crie um banco de dados SQLite chamado escola.db. Em seguida, crie uma +#tabela chamada estudantes com as colunas id, nome e idade. + +import sqlite3 + +conn = sqlite3.connect("escola.db") #conexão com o database (que como não existia será criado) +cursor = conn.cursor() + +cursor.execute(""" + CREATE TABLE IF NOT EXISTS estudantes ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + nome TEXT NOT NULL, + idade INTEGER NOT NULL + )""") + +conn.commit() +cursor.close() +conn.close() \ No newline at end of file diff --git a/exercicios/para-sala/exercicio/script2.py b/exercicios/para-sala/exercicio/script2.py new file mode 100644 index 0000000..9e1551b --- /dev/null +++ b/exercicios/para-sala/exercicio/script2.py @@ -0,0 +1,18 @@ +#Escreva um script que insira três registros na tabela estudantes. + +import sqlite3 + +conn = sqlite3.connect("escola.db") #conexão com o database (que como não existia será criado) +cursor = conn.cursor() + +estudantes = [ + ('Alice', 21), + ('Bob', 22), + ('Charlie', 23) +] + +cursor.executemany("INSERT INTO estudantes (nome, idade) VALUES (?, ?)", estudantes) + +conn.commit() +cursor.close() +conn.close() \ No newline at end of file diff --git a/exercicios/para-sala/exercicio/script3.py b/exercicios/para-sala/exercicio/script3.py new file mode 100644 index 0000000..1ccd266 --- /dev/null +++ b/exercicios/para-sala/exercicio/script3.py @@ -0,0 +1,28 @@ +#Crie um script que selecione e exiba todos os registros da tabela estudantes. + +import sqlite3 + +conn = sqlite3.connect('escola.db') +cursor = conn.cursor() + +cursor.execute("SELECT * FROM estudantes") +registros = cursor.fetchall() + +for registro in registros: + print(registro) + +#EXTRA: crie um script que pergunte um nome ao usuário, selecione e exiba todos os registros com esse nome. + +nome = input("Insira o nome que deseja consultar: ") + +cursor.execute("SELECT * FROM estudantes WHERE nome = ?", (nome,)) +#a vírgula após a variável/argumento é necessária por motivos de sintaxe + +registros = cursor.fetchall() + +for registro in registros: + print(registro) + +#no uso exclusivo do SELECT, não é necessário commitar, pois é apenas uma consulta de dados, não uma atualização +cursor.close() +conn.close() \ No newline at end of file diff --git a/exercicios/para-sala/exercicio/script4.py b/exercicios/para-sala/exercicio/script4.py new file mode 100644 index 0000000..c933db9 --- /dev/null +++ b/exercicios/para-sala/exercicio/script4.py @@ -0,0 +1,20 @@ +#Escreva um script que atualize a idade de um estudante específico (por exemplo, mude a idade de "Bob" para 23). + +import sqlite3 + +conn = sqlite3.connect('escola.db') +cursor = conn.cursor() + +cursor.execute("UPDATE estudantes SET idade = ? WHERE nome = ?", (23, 'Bob')) + +#Escreva um script que atualize os dados de um registro com base em seu id, com dados recebidos pelo usuário. + +id = int(input("Insira o ID do registro que deseja atualizar: ")) +nome = input("Insira o nome: ") +idade = (input("Insira a idade: ")) + +cursor.execute("UPDATE estudantes SET nome = ?, idade = ? WHERE id = ?", (nome, idade, id)) + +conn.commit() +cursor.close() +conn.close() \ No newline at end of file diff --git a/exercicios/para-sala/exercicio/script5.py b/exercicios/para-sala/exercicio/script5.py new file mode 100644 index 0000000..aa7396f --- /dev/null +++ b/exercicios/para-sala/exercicio/script5.py @@ -0,0 +1,12 @@ +#Crie um script que remova o registro de um estudante específico (por exemplo, remova "Charlie"). + +import sqlite3 + +conn = sqlite3.connect('escola.db') +cursor = conn.cursor() + +cursor.execute("DELETE FROM estudantes WHERE nome = ?", ('Charlie',)) + +conn.commit() +cursor.close() +conn.close() \ No newline at end of file diff --git a/exercicios/para-sala/exercicio/script6.py b/exercicios/para-sala/exercicio/script6.py new file mode 100644 index 0000000..5fa09c9 --- /dev/null +++ b/exercicios/para-sala/exercicio/script6.py @@ -0,0 +1,15 @@ +#Escreva um script que selecione e exiba todos os estudantes cuja idade seja maior que 21. + +import sqlite3 + +conn = sqlite3.connect('escola.db') +cursor = conn.cursor() + +cursor.execute("SELECT * FROM estudantes WHERE idade > 21") +registros = cursor.fetchall() + +for registro in registros: + print(registro) + +cursor.close() +conn.close() \ No newline at end of file diff --git a/extra/exercicio/script.py b/extra/exercicio/script.py new file mode 100644 index 0000000..14629fd --- /dev/null +++ b/extra/exercicio/script.py @@ -0,0 +1,65 @@ +import sqlite3 + +conn = sqlite3.connect('vendas.db') +cursor = conn.cursor() + +cursor.execute(""" + CREATE TABLE IF NOT EXISTS vendas ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + produto TEXT NOT NULL, + quantidade INTEGER NOT NULL, + preco REAL NOT NULL + ) + """) + +# cursor.executemany("INSERT INTO vendas (produto, quantidade, preco) VALUES (?, ?, ?)", [ +# ('Produto A', 10, 5.0), +# ('Produto B', 5, 10.0), +# ('Produto C', 2, 20.0), +# ('Produto A', 3, 5.0), +# ('Produto B', 7, 10.0) +# ]) + +conn.commit() + +# ------------------------------------------------------------------------------------------------- + +# Somando a quantidade de produtos vendidos de acordo com cada entrada de compra +# cursor.execute("SELECT produto, SUM(quantidade) AS total_quantidade FROM vendas GROUP BY produto") +# print(cursor.fetchall()) + +# ------------------------------------------------------------------------------------------------- + +# Calculando a média de preços de acordo com cada entrada de compra +# cursor.execute("SELECT produto, AVG(preco) AS preco_medio FROM vendas GROUP BY produto") +# print(cursor.fetchall()) + +# ------------------------------------------------------------------------------------------------- + +# Contando a quantidade de registros (nesse caso, vendas) +# cursor.execute("SELECT COUNT(*) AS total_vendas FROM vendas") +# print(cursor.fetchall()) + +# ------------------------------------------------------------------------------------------------- + +# Conferindo o maior preço já registrado em alguma venda +# cursor.execute("SELECT MAX(preco) AS preco_maximo FROM vendas") +# print(cursor.fetchall()) + +# ------------------------------------------------------------------------------------------------- + +# Conferindo o maior preço pelo qual cada produto foi vendido +# cursor.execute("SELECT produto, MAX(preco) AS preco_maximo FROM vendas GROUP BY produto") +# print(cursor.fetchall()) + +# ------------------------------------------------------------------------------------------------- + +#Conferindo o menor preço ja registrado em alguma venda +# cursor.execute("SELECT MIN(preco) AS preco_minimo FROM vendas") +# print(cursor.fetchall()) + +# ------------------------------------------------------------------------------------------------- + +#Conferindo o menor preço pelo qual cada produto foi vendido +# cursor.execute("SELECT produto, MIN(preco) AS preco_minimo FROM vendas GROUP BY produto") +# print(cursor.fetchall()) \ No newline at end of file diff --git a/extra/exercicio/vendas.db b/extra/exercicio/vendas.db new file mode 100644 index 0000000..da79ba2 Binary files /dev/null and b/extra/exercicio/vendas.db differ