A Linguagem de Consulta Estruturada (SQL) na área de Psicologia é pouco explorada e divulgada. Sendo assim, esta série de “blogs” tem por objetivo fornecer alguns exemplos básicos de consultas em tabelas simples para divulgar SQL na comunidade de profissionais e estudantes da Psicologia. Este blog está em construção contínua, então, sempre volte aqui para ver novas atualizações.
Os dados são todos fictícios e não contém nenhuma informação sensível ou sigilosa. Nós iremos trabalhar com uma tabela de pacientes que iremos popular com ID do paciente, gênero, idade, valores da sessão, data do pagamento, data de desistência, data de entrada na terapia e tipo de acompanhamento (mensal, semanal ou quinzenal).
O mercado de negócios, empresas que contratam Analista de RH e outros nichos, pedem como requisito da vaga habilidades em SQL (e Python/R como diferencial). Então, para àqueles que estão pensando em transicionar de carreira da clínica para o mercado privado, se faz extremamente necessário saber essa linguagem.
A ideia é explicar com um linguajar de psicólogo o que diabos faz o SQL e o que isso muda na sua vida (para alguns, nada, e para outros, um pouco mais que nada).
Toda aprendizagem se dá por taxas de respostas, portanto, não adianta apenas ler, é necessário emitir respostas no tempo. Leia este “blog” para você se familiarizar com a Linguagem e tente replicar no SQL Online trocando o nome da tabela, os valores, fazendo sua própria, etc.
Precisamos conhecer um pouco sobre a SQL. Ela é uma linguagem de
consulta, logo, toda modificação que faremos no banco
de dados (alterar valor, deletar, filtrar) será feita na tabela ou banco
de dados que está localizada no ambiente de trabalho que fazemos as
consultas. Se você fosse fazer um upload do arquivo no site SQL online e excluísse a tabela
inteira, por exemplo, utilizando a função
DELETE TABLE Nome_da_Tabela, ela não iria desaparecer do
seu computador, mas sim, do espaço de trabalho do SQL Online. Mas,
claro, não é por isso que iremos deletar table tranquilamente. Todo bom
código não prescinde da boa prática, e a boa prática é justamente fazer
backups de segurança.
O Ambiente de Desenvolvimento Integrado (IDE) que podemos utilizar é o SQL Online, como já mencionado, pois, não precisa de instalação e fazer login.
Para você que está se perguntando “mas merrmão, que caraio é esse de fazer tabela escrevendo código?? Por que não fazer no simples excel da vida?”. O SQL tem uma vantagem sobre o Excel por fazer consultas em um banco de dados cujo limite é o infinito. Se você fosse fazer uma soma simples de 3 varáveis para calcular um score total em um Excel para uma tabela com 1mi de linhas, possivelmente isso te levaria alguns bons minutos. Mas, o SQL dá conta e por isso é muito utilizado para gerenciar banco de dados com um volume de dados gigantesco.
Você não pode esquecer que SQL é uma linguagem,
assim como é o português, inglês, etc. Isto quer dizer que ela tem uma
estrutura de signos, ou seja, quando você esreve CREATE,
precisa designar um referente, da mesma forma que, ao dizer “manga”, é
preciso restringir o contexto para que alguém entenda do que se está a
falar (fruta ou roupa). Então, o referente de CREATE podem
ser TABLE, SCHEMA ou DATABASE,
como nosso conjunto universo (contexto) é tabela, então
utilizamos TABLE.
Então, você já aprendeu uma linha de código em SQL:
CREATE TABLE Pacientes (
ID_Paciente INT PRYMARY KEY,
Gênero VARCHAR(50),
Idade INT,
Valor_Contratado_Sessao DECIMAL(5, 2),
Data_do_Pagamento DATE,
Data_de_Entrada_na_Terapia DATE,
Tipo_de_Acompanhamento VARCHAR(50)
);
Vamos por partes.
Aqui nós criamos uma tabela chamada ‘Pacientes’ com a função
CREATE TABLE, damos os nomes das colunas, os tipos e
acrescentamos ponto e vírgula (“;”) para fechar o código. É a mesma
função que o ponto final exerce em uma frase para concluir o
sentido/oração. O tipo da variável/coluna é necessário para que você
torne aquela variável inequívoca na hora do preenchimento. Não tem como
preencher a data de nascimento colocando 1988, você quer a data no
formato “DD/MM/AAAA”, dia, mês e ano. Então, o tipo da variável deve ser
declarada. Quando utilizamos um PRIMARY KEY,
chave-primária, estamos dizendo: essa coluna que recebe os ID’s dos
pacientes, isto é, seus identificadores que será do tipo
inteiro (números), terá valores únicos, i.e., não
repetidos, e não nulos. Se você prestou atenção, então deve ter
percebido que, no nosso exemplo, marcar uma chave-primária no
identificador do paciente não faz sentido, pois, esse paciente fará mais
de um pagamento, ou seja, terá seu identificador duplicado na coluna ID.
Então, tome cuidado, pois, isso pode resultar em erros quando for rodar
o código. O que fazer, neste caso? Podemos definir um conjunto de
chaves-primárias, isto é, já que o paciente irá se repetir por pagar
mais de uma vez, podemos criar outra chave-primária que o identifica e é
um valor que não se repete, ou seja, a data de pagamento. Então,
escreveríamos logo abaixo da última coluna criada na função
CREATE TABLE:
PRIMARY KEY(ID_Paciente, Data_do_Pagamento)
Por isso a importância de colocar o tipo dessa variável como DATE e não apenas como VARCHAR, porque aqui poderíamos ter facilmente algo como “Março” repetido uma vez por ano e, portanto, já daria erro na sintaxe.
Bom, dado esse adendo, podemos seguir.
###* *VARCHAR, CHAR e TEXT**
Entreguei a você sem dizer o que raios é isto. Basicamente, são propriedades de armazenamento do banco de dados que se relacionam com a natureza de uma variável do tipo nominal. Então, VARCHAR(100) armazena uma variável nominal limitada em 100 caracteres máximo, enquanto que um dado do tipo CHAR(50) limita a variável em exatos 50 caracteres. Por fim, o dado TEXT armazena variáveis nominais sem limitação de caracteres.
Aqui, temos os tipos de armazenamento das variáveis numéricas. Então,
INT é o tipo de armazenamento de dados inteiros
(1,2,3,4,5,…,etc.), DECIMAL são os Reais (1.52, 2.658,
etc) limitados por um número de casas após a vírgula. Você utiliza-o
desta maneira: DECIMAL(4,2) indicando que pode haver até 4
dígitos antes da vírgula e 2 dígitos após. Seria como uma analogia ao
VARCHAR que limita o número de caracteres em uma variável de texto. Já o
FLOAT guarda valores aproximados, muito útil para cálculos
onde o fenômeno não possui valor exato.
Por fim, temos os tipos de dados de tempo, podemos armazenar
variáveis que registram apenas as horas (DATE), apenas a
data (DATE), ambos (DATETIME) e ambos com o
fuso horário.
Certo, então nós temos uma tabela com todas as informações já? Simples assim? Calma lá gafanhoto, não podes exigir de um esqueleto que enxergue ou cheire, é preciso fornecer os órgãos (colunas e linhas da tablea).
Agora, forneceremos a estrutura interna para que o esqueleto tenha vida da seguinte forma:
INSERT INTO Pacientes(ID_Paciente, Gênero, Idade,Valor_Contratado_Sessao,
Data_do_Pagamento, Data_de_Entrada_na_Terapia, Tipo_de_Acompanhamento)
VALUES
(01, 'Homem Cisgênero', 25, 120, 01/05/2025, 01/02/2025, 'Semanal');
Aqui, só a titulo de exemplo, inserimos 1 paciente apenas. Algumas
coisas a se notar: utilizamos INSERT INTO antes do nome da
tabela, Pacientes e colocamos entre parênteses as colunas
que serão alvos dos valores. Ou seja, precisamos identificar as partes
do esqueleto cujos órgãos serão encaixados, e é justamente por isso que,
logo depois acrescentamos a cláusula VALUES, abrimos o
parênteses e adicionamos os valores (“órgãos”).
Então, o que aprendemos até aqui? A ordem exata para criarmos e alimentarmos uma tabela é:
CREATE TABLE nome_da_tabela (col_1, col_2, col_3)
INSERT INTO nome_da_tabela (col_1, col_2, col_3)
VALUES (valor_da_col_1, valor_da_col_2, valor_da_col_3);
Essa ordem é necessária e suficiente para criar uma tabela e populá-la com dados. Se estiver em dúvida pensando “mas como faço quando tenho mais de um paciente?”, primeiramente, parabéns, +1 paciente é pra poucos viu?! Segundo, basta repetir o que fez com o paciente 1 na segunda linha e assim por diante, até ter n linhas que corresponderá a n parênteses abertos e, no final, acrescente o ponto e vírgula.
Chegamos ao final dessa primeira parte, te vejo na segunda!