CI/CD One
Integração e entrega contínuas, com GitHub Actions, GitLab CI, CircleCI e Jenkins
SQL One
Perguntas certas para bancos de verdade
SQL do zero, dentro de uma rede de 48 farmácias do interior de Minas: uma planilha de 1,2 milhão de linhas que ninguém consegue abrir, um faturamento que dobrou por causa de uma junção, lotes vencidos escondidos por um NULL, um UPDATE sem WHERE e uma reunião com o banco marcada para 15 de março. Consultas, junções, agregações, janelas, modelagem, transações, índices, planos de execução e segurança — tudo rodado no PostgreSQL, com o mesmo conjunto de consultas comparado no MySQL, no SQLite, no SQL Server e no Oracle.
R$ 12,90
R$ 24,00
Promoção
Atenção: o idioma desta edição é português.
Edição Brasil
Menos teoria vazia.
Mais código que funciona.
Nada de exemplo solto com foo e bar.
Todo trecho pertence ao mesmo projeto, que cresce capítulo a capítulo —
e os erros aparecem como aparecem na sua tela, para serem lidos linha por linha.
SELECT nome, validade, quantidadeFROM lotesWHERE validade < CURRENT_DATEORDER BY validade;
psql -d santa_rita -c "SELECT count(*) FROM lotes;" count ------- 18421
Um sistema só, do primeiro arquivo ao deploy
README.md
Os números da Drogarias Santa Rita para a reunião com o banco.
Perguntas certas para bancos de verdade.
- Um projeto só: os números da Drogarias Santa Rita para a reunião com o banco
- Toda consulta rodada no PostgreSQL, com a saída conferida
- Diagramas, planos de execução e os erros que custam dinheiro
- PostgreSQL e MySQL lado a lado, mais SQLite, SQL Server e Oracle
- Sem atalho: NULL, junções, janelas, transações e índices do jeito que a produção usa
Leia uma prévia gratuita de SQL One
Esta amostra contém os primeiros capítulos. O PDF completo continua protegido para compradores.
36 capítulos em 7 partes
Abra uma parte para ver os capítulos — e a frase que abre cada um.
parte 01 A planilha de 1,2 milhão de linhasQuarenta e oito farmácias, uma planilha que trava o Excel e um banco que alguém montou em 2011 para tirar relatório. 3 cap.
-
01
A planilha de 1,2 milhão de linhasUma margem de 31% que ninguém consegue refazer, um arquivo que trava o Excel de quem abre, e um homem que diz que a resposta está numa tabela de três linhas.
-
02
Uma linguagem de 1974Um matemático da IBM que achava que ninguém deveria precisar saber onde os dados ficam, dois pesquisadores que queriam uma linguagem que um contador conseguisse ler, e um nome que teve de mudar porque já era de uma fábrica de aviões.
-
03
Montando a bancadaUm servidor de banco de dados no seu computador em dez minutos, dois scripts para criar a Santa Rita, e os seis comandos do psql que você vai usar todo dia.
parte 02 Perguntar a uma tabelaSelecionar, filtrar, ordenar, calcular e agrupar — e o NULL, que não é zero, nem vazio, nem falso. 8 cap.
-
04
SELECT e FROMUma coluna chamada ?column?, uma loja de 260 m² que perde dois metros quadrados numa divisão, uma ficha que some por completo por causa de um campo vazio e as quatro formas de pagamento que a farmácia aceita.
-
05
WHEREA Dra. Lúcia quer os lotes vencidos da loja do Centro, e recebe um da loja do Bom Pastor de brinde; o relatório da primeira semana de dezembro perde o dia 7 todo; e um cliente de Itaúna some porque a cidade foi digitada com letra minúscula.
-
06
NULL, o valor que não é valorUma campanha para todos os clientes que não são do programa ouro que não chega a três deles, uma consulta que procura o vazio com um sinal de igual e não acha nada, e a lógica de três valores que explica as duas coisas.
-
07
Ordenar e limitarO ranking das maiores lojas da rede começa pela única que não tem metragem, o top 3 de produtos sai diferente a cada execução, e a segunda página do relatório repete um cliente da primeira.
-
08
Funções de linhaO jurídico quer o CPF escondido nos relatórios, a política de preços quer tudo terminado em noventa centavos e baixa o preço de um serviço sem querer, e um CPF guardado como número perde o zero da frente.
-
09
Datas e horasQuantos dias faltam para cada lote vencer, uma receita que vale trinta dias e não um mês, um relatório em ordem de data que põe 2028 antes de 2025, e um painel que mostra vendas às onze da noite numa loja que fecha às nove.
-
10
AgruparO desconto médio dos clientes é 5,2% ou 3,25%, dependendo de quem conta como cliente; o faturamento de dezembro cabe numa linha; e o PostgreSQL se recusa a mostrar uma forma de pagamento que ele não saberia qual escolher.
-
11
Do resumo ao relatórioVendas por semana numa semana que começou em novembro, um quadro com as lojas nas linhas e as formas de pagamento nas colunas, um zero que não existia em lugar nenhum e uma linha de total que o GROUP BY sozinho não dá.
parte 03 Juntar tabelasChaves, junções que acham, junções que perdem, junções que multiplicam, subconsultas e funções de janela. 8 cap.
-
12
ChavesUma loja nova que o banco recusa porque o número já tem dono, uma venda numa loja que não existe, um CPF que não serve para identificar ninguém e a primeira vez que a Bruna segue um fio de uma tabela até outra — à mão.
-
13
JOINQuinze vendas que ganham o nome da loja, uma coluna chamada id que o banco não sabe de qual tabela é, o faturamento em reais que a Cláudia pediu numa consulta só, e quatro cupons que somem quando entram os clientes.
-
14
As linhas que faltamQuatro cupons que voltam com o cliente em branco, uma loja que vendeu zero em débito e aparece com um, a mesma condição que dá três linhas no ON e duas no WHERE, um pacote de fraldas que nunca foi vendido e três caixas de dipirona que não deviam ter saído.
-
15
O faturamento que dobrouUm relatório de 2019 que vende o dobro de losartana que a farmácia vendeu, um serviço que some do faturamento por categoria, uma tabela juntada com ela mesma para achar o chefe e trinta combinações de loja e produto, das quais nove nunca aconteceram.
-
16
SubconsultasUma consulta dentro da outra para achar os produtos acima da média, a fatia de cada loja no faturamento, a última compra de cada cliente e um relatório de lotes parados que responde nenhum — porque, no meio de uma lista de doze números, havia um NULL.
-
17
ConjuntosAs cidades em que a Santa Rita está presente, contadas uma vez e contadas quinze; os produtos que o Centro e o Bom Pastor vendem em comum, e os que só o Centro vende; e um ORDER BY que o banco recusa porque não sabe a que consulta ele pertence.
-
18
WITHUma consulta de quarenta linhas que vira três consultas com nome, os cupons acima do ticket médio calculados sem repetir a conta, uma árvore de categorias percorrida até as folhas e o organograma da Santa Rita montado por uma consulta que chama a si mesma.
-
19
Funções de janelaCada cupom ao lado do total da sua loja sem perder nenhuma linha, um empate de 90,72 que a numeração resolve no cara ou coroa, o maior cupom de cada loja, os dias entre uma compra e outra e a curva do faturamento de dezembro somada dia a dia.
parte 04 ModelarDo balcão da farmácia ao diagrama, dos tipos às restrições, e o esquema que muda sem fechar a loja. 5 cap.
-
20
Do balcão ao diagramaUma tabela de 214 colunas que é, na verdade, seis tabelas; uma loja que fica em duas cidades; um laboratório escrito de dois jeitos; e o desenho, feito com consultas, do banco que a Rede Bem-Estar nunca teve.
-
21
Tipos de dadosDez moedas de dez centavos que somam 0,9999999999999999, um contador que estoura no número 2.147.483.648, uma cidade que perde o fim do nome sem ninguém avisar e o 1º de dezembro que vira 12 de janeiro porque o servidor lê datas como um americano.
-
22
NormalizaçãoUma loja que muda de cidade em três linhas e esquece uma, um laboratório que desaparece do cadastro quando dois cupons são cancelados, uma loja nova que não pode ser cadastrada antes de vender alguma coisa — e as seis tabelas que tornam os três erros impossíveis.
-
23
RestriçõesMenos duas caixas de dipirona vendidas e aceitas, uma regra que não pode nascer enquanto houver uma linha que a desobedece, um laboratório cadastrado duas vezes por causa das maiúsculas e um cupom cancelado que leva os itens junto.
-
24
O esquema mudaUma coluna nova que não pode ser obrigatória numa tabela que já tem linhas, um nome trocado que derruba o painel do Diego num sábado, uma tabela que o banco se recusa a apagar e outra que volta depois de apagada — e o caderno de mudanças que impede a mesma alteração de ser feita duas vezes.
parte 05 Mudar os dadosInserir, alterar, apagar, e fazer tudo isso sem que a madrugada das três horas trave. 4 cap.
-
25
INSERT, UPDATE, DELETEUm produto novo que diz o próprio número de volta, um reajuste de 4,5% que mostra o preço de antes e o de depois, o sábado de 2019 em que 3.104 produtos passaram a custar zero real e a baixa dos lotes vencidos, apagada com uma junção.
-
26
TransaçõesCinco caixas de dipirona que aparecem em Itaúna sem ter saído do Centro, uma transferência que para no meio e não deixa rastro, um COMMIT que responde ROLLBACK e dois terminais olhando a mesma linha ao mesmo tempo.
-
27
A madrugada das 3hUma soma que muda no meio da mesma transação, uma fotografia do estoque que não muda nem quando o estoque muda, um pedido automático que grava um número velho, e o deadlock que derrubava o job das três da manhã duas vezes por semana.
-
28
CargasUm arquivo de sete linhas que o banco recusa por completo por causa da palavra dois, uma loja BE-04 que não existe, um cupom que chega pela segunda vez, um preço que entra ou atualiza conforme já exista e uma tabela de preços sincronizada num comando só.
parte 06 Desempenho e operaçãoÍndices, planos de execução, visões, gatilhos, permissões e o backup que ninguém tinha testado. 5 cap.
-
29
ÍndicesTrezentas mil vendas lidas para achar seis, um índice que transforma catorze milissegundos em menos de um, uma função em volta da coluna que faz o banco ignorar o índice, uma pergunta larga demais para ele valer a pena e o preço que todo índice cobra a cada INSERT.
-
30
Ler um planoUm banco que acha que vai encontrar uma linha e encontra cem mil, três jeitos diferentes de juntar as mesmas duas tabelas, um ranking que ordena trezentas mil vendas para mostrar cinco e o roteiro de cinco perguntas que a Bruna colou no monitor.
-
31
Visões, funções e gatilhosCinco pessoas que calculavam o faturamento de cinco jeitos e passam a ler a mesma visão, um resumo que fica velho até alguém mandar atualizar, a margem que vira uma função, o preço que deixa rastro quando muda e a regra da Dra. Lúcia que não cabia num CHECK.
-
32
Quem pode ver o quêUma planilha de receitas de controlados com o CPF de cada cliente, mandada por e-mail para o financeiro todo; um usuário que pode ler as vendas e não pode apagá-las; uma gerente que só enxerga a própria loja; e a busca por cidade que devolve todos os clientes quando alguém digita uma aspa.
-
33
BackupA foto do UPDATE 3104 de 2019 e as três horas de vendas que se perderam para consertá-lo; uma cópia do banco num arquivo; a mesma cópia devolvida num banco de ensaio; os preços de ontem trazidos de volta sem perder as vendas de hoje; e o backup que só vale depois do primeiro ensaio.
parte 07 Os bancos que você vai encontrarPostgreSQL, MySQL, SQLite, SQL Server e Oracle — e a reunião de 15 de março. 3 cap.
-
34
PostgreSQL e MySQLUma chave estrangeira que o MySQL aceita e ignora, uma cidade digitada sem acento que ele encontra assim mesmo, um operador || que vira zero, uma divisão de inteiros com quatro casas, um ROLLBACK que não desfaz o CREATE TABLE — e as mesmas consultas da Santa Rita, rodadas nos dois bancos.
-
35
SQLite, SQL Server e OracleUm banco completo dentro de um arquivo, que aceita a loja de metragem 'a combinar' e uma venda numa loja que não existe; uma soma de preços que não é igual a ela mesma; e a mesma consulta da Santa Rita escrita nos dialetos dos dois bancos comerciais que a Bem-Estar e o banco do financiamento usam.
-
36
Quinze de marçoO estoque lote por lote, com o que venceu e o que vai vencer; a margem de cada loja, com a conta que dá para refazer; uma consulta que confere a si mesma; e a reunião em que o analista do banco pede para rodar os números ali, na frente de todo mundo.
Outros livros da série
CI/CD One
Integração e entrega contínuas, com GitHub Actions, GitLab CI, CircleCI e Jenkins
Cloud One
Fundamentos de nuvem, com AWS, Google Cloud, Azure e DigitalOcean
Docker One
Da minha máquina à produção, sem mistério
Git One
Versionar, voltar atrás e trabalhar em equipe sem medo
Linux One
Terminal, shell e as ferramentas que todo dev usa todo dia
O que leitores dizem sobre SQL One
Carregando avaliações deste livro…
Ver todas as avaliações deste livro →SQL One
Perguntas certas para bancos de verdade. O projeto começa a rodar no primeiro capítulo — e não para mais.
Atenção: o idioma desta edição é português.