Olá, e bem-vindos à nossa palestra sobre SQL.
Então esta é uma introdução muito,
muito curta ao SQL.
Eu amo SQL.
Eu estava conversando com um aluno
outro dia e eles estavam tipo,
“SQL é minha língua favorita.”
E eu disse: “Eu tenho que concordar que
SQL é minha língua favorita também.”
Como SQL é tão bonito,
você nem precisa escrever loops em SQL,
nós escrevemos loops em linguagens como
Python só porque precisamos.
O problema é que SQL é perfeito,
mas não é a maneira que poderíamos escrever
algo tão complexo como Linux ou Python.
E assim SQL não é realmente a maneira como os computadores pensam,
temos essas coisas chamadas mecanismos de banco de dados,
e esses mecanismos de banco de dados fazem as coisas
funcionarem muito, muito bem.
E assim SQL é uma ótima maneira de organizar dados,
mas muito trabalho foi feito em
mantendo esses dados organizados e simplificando.
Então é como se houvesse essa abstração,
e é muito trabalho fazer essa abstração funcionar.
Então eu quero começar com um pouco
de história antes de bancos de dados,
e você pode pensar, “Bem, antes de bancos de dados
, como poderia ser?”
Bem, antigamente,
e se você assistir filmes antigos com computadores,
você vê fotos que têm
essas máquinas de fita em
no fundo e elas estão girando.
E a fiação da máquina de fita é o tipo
de manifestação física de uma computação.
E tinha a ver com o fato de que antigamente, os computadores
não tinham dados
suficientes para armazenar todos os seus dados na memória ou em um disco,
nós nem tínhamos discos nos primeiros dias.
Nos primeiros dias, as fitas eram o que tínhamos,
e usamos uma espécie de variação de fitas de áudio,
e em vez de áudio,
elas continham dados, zeros e uns.
E assim a maneira como as coisas funcionavam nos velhos tempos
para que você pudesse ter um banco de dados, por assim dizer,
era o banco de dados era tudo de
seus dados gravados em uma fita.
E a coisa chave para uma fita é que
era uma coisa física,
e então você tinha que rebobinar,
ir para frente e para trás.
E a maioria de vocês provavelmente
nunca viu uma fita cassete ou uma fita de oito faixas
ou uma fita de bobina para bobina,
mas é um pedaço físico de plástico de mil pés,
e para obter os dados no final,
você tinha que girar até chegar lá.
E então não foi o que chamamos de acesso aleatório,
o que significa que em um acesso aleatório,
seja memória ou unidade de disco,
acesso aleatório permite que você chegue a
qualquer lugar aproximadamente em um período fixo de tempo.
Considerando que, se você estiver perto de algo em uma fita,
você pode chegar a ele muito rapidamente.
Se você está longe, você tem que ir,
e depois esperar, e depois voltar.
Então isso levou a um padrão
onde todas as noites nós
pegávamos a fita dos saldos da conta de ontem.
Vamos apenas dizer que somos um banco,
e estamos tendo pessoas vindo até a janela,
colocando dinheiro, tirando dinheiro.
E então o que faríamos era colocar todas as
transações, às vezes em cartões fisicamente perfurados,
e então nós as classificamos, certo?
E vamos apenas dizer que temos 26 contas e pessoa C mostra
up adiciona $10 e pessoa F
aparece e subtrai $10, e etc., etc.
E então o que teríamos à noite,
nós obteríamos estes todos ordenados,
e havia máquinas físicas que
realmente classificaria estes no mais cedo dos dias,
e então teríamos o velho equilíbrio,
A, B, C, D,
E, F, sentado em uma fita em ordem, ordenado em ordem.
E começaríamos um processo depois que o banco fechou
onde lêíamos o primeiro registro da fita como A,
lêíamos a primeira transação fora dos cartões,
e nós os compararíamos.
E se a fita fosse
antes da transação
ou inferior, nós apenas copiaríamos, então copiá-la-íamos.
E então o B se compararia com o C,
e B seriam copiados,
e então C se depararia,
e então percebíamos que os dados C,
teríamos que atualizar os dados C,
e adicionar $10 ao saldo, e então escreveríamos isso.
E você vai notar como estamos escrevendo isso,
estamos classificando, está em ordem ordenada.
Então nós copiamos D, não temos nada para D,
e ele só seria copiado.
Nós copiamos E, não temos nada para E,
e ele só seria copiado,
e então nós teríamos, oops, esqueceu-se de colocar F nesta foto,
teríamos F e subtrairíamos 10, e nós copiávamos.
E então nós seria feito com
o tipo de coisas que tínhamos que fazer naquela noite,
e então o que faríamos é teríamos
este novo dado atualizado que era
tudo ordenado em ordem de conta.
E então na noite seguinte,
nós movíamos a fita,
a nova fita seria a fita velha,
e nós faríamos isso uma e outra e outra vez.
E às vezes esses processos rodavam
por quatro ou cinco horas porque as fitas eram longas ou
ele tinha que ser várias fitas,
e então muita computação foi
feita depois que os bancos fecharam às cinco horas,
então um grupo de pessoas entraria,
nós chamaríamos eles de operadores,
e eles montariam essas fitas e executavam
esses trabalhos e simplesmente sentavam lá e assistiam
essas fitas girando enquanto os dados estavam sendo
copiados de um para o outro.
Então sim, isso é muito legal.
Felizmente, não é assim que fazemos mais.
A coisa que fez isso para que não temos que fazer
isso é a invenção de drives de disco.
E os drives de disco são mídia magnética,
como drives de fita,
mas a diferença é que eles estavam
nessas bandejas giratórias.
E então o que você poderia fazer é que os dados
estavam em uma série de círculos concêntricos nesses pratos,
e então você tinha uma cabeça
que poderia se mover para dentro e para fora rapidamente.
E assim a velocidade em que você poderia acessar dados foi
uma combinação com a velocidade em que
a cabeça poderia se mover para um determinado cilindro,
e você tinha que esperar até que os dados aparecessem.
E assim, às vezes, você teria 5.400 rotações por minuto.
Então isso significa que 5.400,
5.000 vezes por minuto,
que é 100 vezes por segundo.
Você esperaria 100 de segundo por ele.
E então isso é muito melhor do que esperar um minuto e meio,
dois minutos, até 10 minutos para girar uma fita.
Então o problema foi,
é então nós pensamos, “Ok,
agora que temos essa tecnologia maravilhosa,
podemos armazenar todos os nossos dados noturnos
em um disco porque é espaço suficiente,
como construímos a tecnologia
para fazer um bom uso disso?”
E muita pesquisa,
muita ciência da computação,
muita pesquisa de fornecedores entrou em
entendendo como usar melhor essa nova coisa de disco.
Lembro-me de falar com pessoas como,
porque costumávamos usar um disquete,
que eles eram muito mais lentos,
então eles não iam 5.400.
Então, pode levar um quarto de segundo para mover
a cabeça e pode levar
quase um segundo para girar,
que ainda era muito mais rápido do que 10 minutos, certo?
Então, é como cerca de um segundo para chegar ao
em qualquer lugar do disquete.
E nós construíssemos abordagens para armazenar dados,
e começaríamos com essa coisa física
e você ouviria grunhindo e
se movendo e grunhindo e se movendo,
e então você viria com uma maneira melhor
de armazenar os dados,
e então ele grunhir e se moveu menos,
e seu coisa iria mais rápido.
Então isso foi como uma coisa de pesquisa.
Era bons velhos tempos quando os computadores realmente faziam ruídos,
e você poderia alterar seu código dentro dos computadores.
E a primeira coisa, é claro, que fizemos foi apenas
pegou essas atualizações mestre seqüenciais e as colocou,
mas isso acabou por não ser o melhor.
E isso foi uma espécie de pesquisa é,
não apenas como podemos fazer o que
costumava fazer em dados que não podiam
ser acessados aleatoriamente, e em vez disso,
dizer vamos tirar proveito disso.
E então um monte de pesquisas, muitos fornecedores,
havia um monte de software muito caro
que as pessoas compraram para dizer,
“Olha, você é um banco,
e você realmente e realmente quer saber como isso funciona.”
E então o que aconteceu foi que nos anos 60 e 70,
os vendedores de computadores estavam lutando,
e eles criavam uma técnica,
que comparada com a nossa técnica de banco de dados atual,
era apenas trivialmente simples,
mas era preciso muito trabalho naquela época,
e eles lutavam com todos os outros fornecedores de computadores,
e eles diriam, “Nosso mecanismo sequencial index
é melhor.”
E o Vendor 2 diria,
“Nossa abordagem de rede é melhor”.
E então eles se sentavam, e eles
meio que lutavam uns com os outros,
e então os pobres clientes diziam,
“Eu nem sei do que você está falando.”
E então eles simplesmente comprariam
as coisas do vendedor que os levou
para jogar golfe ou para
o melhor almoço ou levá-los em uma viagem para a Flórida.
E então eles apenas adaptariam
ao que o fornecedor fez.
E então foi realmente meio assustador porque estávamos
mudando para um lugar onde você estava preso em um vendedor,
e, em seguida, uma vez que você está preso em
um fornecedor, você está em má forma.
E assim o governo dos EUA,
em particular, tinha uma tonelada
de dinheiro e estava comprando toneladas de computadores,
tanto para processamento normal de dados quanto para
coisas estratégicas como coisas militares,
e então eles estavam comprando toneladas de computadores e
eles sabiam que esses vendedores,
se eles chegassem o ponto em que
os prendeu em um único fornecedor,
que o fornecedor seria capaz de ditar o preço.
E assim o governo federal, através do NIST,
o National Institute of Standards and Technology,
decidiu que os bancos de dados precisavam de um padrão.
Eles precisavam de uma maneira para que nós
pudéssemos conversar com qualquer banco de dados de qualquer fornecedor usando
a mesma técnica e não ter que fazer um fornecedor,
e, em seguida, se você trocou de fornecedores,
você tinha que reescrever completamente o seu software.
Então o NIST não especificou como essa abstração,
este padrão, iria funcionar.
Eles acabaram de trazer os fornecedores e disseram,
“Vamos parar de usar
seu software se você não chegar a um padrão.”
E foi um momento perfeito porque apesar de
os vendedores pensarem que tudo era perfeito e maravilhoso,
havia muita vantagem.
E em particular, havia
esse conceito de bancos de dados relacionais,
que naquela época era mais de
uma teoria matemática de uma maneira melhor de armazenar
e recuperar dados do que era
uma tecnologia disponível praticamente implementada.
E então SQL, e esta é Liz Fong,
quem eu fui e eu fiz uma entrevista no NIST,
ela fala sobre os primeiros dias,
é uma ótima entrevista,
os primeiros dias de como este padrão SQL realmente fez
muito sentido e realmente fixo
a indústria e fez a indústria funcionar muito bem.
E eu recomendo que você dê uma olhada em
este vídeo apenas para que você possa tipo de ver.
Agora, o que SQL basicamente disse foi que
não vamos nos preocupar tanto
sobre onde esses dados estão realmente no disco, porque as abordagens de banco de dados
anteriores foram
nós programadores saberíamos que lá
havia cilindros e posições,
e nós colocaríamos as coisas de certas maneiras,
e nós faria índices
e nós olharíamos para os índices nós mesmos,
todo o tipo de coisas diferentes,
ou líamos para um lugar no disco e que
teria um endereço do próximo lugar
que deveríamos ler no disco.
E eles disseram, Você sabe o que,
não vamos nos preocupar tanto com
a estrutura de armazenamento físico na mesa, mas em vez disso,
vamos chegar a uma linguagem
pela qual podemos expressar o que nós
quer ler, escrever, atualizar,
e excluir no disco em uma linguagem muito simples,
e então podemos construir um pedaço de software
que poderia haver muitos formatos de disco abaixo disso.
E então todos nós poderíamos apenas tipo de usar esta linguagem e você poderia
comprar o Fornecedor A e usar
esta linguagem e o Fornecedor B e usar esta linguagem,
e então você poderia até compará-lo e dizer,
“Aqui está um monte de coisas nesta linguagem.
Qual fornecedor pode executar isso mais rápido?”
E assim o NIST também teve uma série de benchmarks,
TPC foram alguns dos benchmarks.
E então o que eles fizeram foi basicamente fizeram
para que esta fosse como uma linguagem bonita e simples,
e é o que chamamos de SQL.
Eu acho que em algum momento foi chamado
o Simple Query Language,
e é a linguagem que usamos para falar com bancos de dados.
E o interessante é o que SQL nos permitiu
fazer realmente nos anos 60 e 70 quando saiu pela primeira vez,
foi falar com os bancos de dados de estilo antigo como índice,
sequencial e bancos de dados em estilo de rede,
e como esta nova forma chamada bancos de dados relacionais,
que tinha assim incrível subjacente matemático,
mas foi implementado mal na primeira vez,
poderíamos apenas dizer, “Oh estranho.”
Quando o desempenho de bancos de dados relacionais chegou a
o ponto em que era tão bom quanto os outros bancos de dados,
então poderíamos simplesmente mudar e poderíamos falar o mesmo SQL.
Assim, permitiu uma incrível inovação
em um período de 10 ou mesmo 15 anos,
onde a abstração nos permitiu melhorar os bancos de dados em
de uma maneira maravilhosa sem
realmente ter que mudar como nós, como programadores, os usamos.
Muito dang incrível, eu vou ser honesto.
E então eu estive falando sobre essa idéia de
bancos de dados relacionais, e bancos de dados relacionais,
e eu vou admitir que quando eu vi pela primeira vez bancos de dados relacionais
no início da década de 1980, eu sou como,
isso é uma porcaria, porque novamente,
eu podia ouvir disquetes e eu sabia que
estávamos movendo uma coisa e eu tinha
tanta consciência do que estava acontecendo,
e eu adorei essa consciência.
E os bancos de dados relacionais meio que esconderam
o que estava acontecendo atrás dessa camada,
e descobriu-se que sempre que eu a usava,
era mais lento porque ainda não era inteligente.
E assim bancos de dados relacionais começaram
como uma idéia matemática como
a melhor maneira teórica de representar
redes de dados com colunas,
e linhas, e conexões, e junta-se,
e vamos falar sobre tudo isso eventualmente.
E foi uma bela ideia e a matemática estava certa.
Demorou muito tempo para chegar ao
o ponto em que a matemática superior dos bancos de dados relacionais
funcionou
melhor do que os sistemas de banco de dados de geração anterior otimizados altamente habilmente
.
Portanto, há muitos sistemas de banco de dados comuns
que você vai executar.
Alguns deles são de código aberto,
alguns deles são comerciais.
Postgres e MySQL são código aberto.
Postgres é provavelmente o mais
complexo e complexo e rico,
Oracle é um banco de dados complexo, complexo,
e rico que está
disponível para muito dinheiro,
e Microsoft tem um banco de dados chamado SQL Server.
E todos esses bancos de dados que estamos vendo evoluíram em
um sentido após a existência da especificação SQL,
então eles simplesmente construíram SQL.
Havia bancos de dados legados que tipo de aprenderam SQL.
E há muitos outros bancos de dados.
SQLite é o que nós estamos realmente indo para
usar com este curso,
e é super legal, super rápido.
Em seu celular,
você provavelmente tem 40 cópias de SQLite,
e em seu carro, você provavelmente tem 40 cópias de
SQLite, porque é um banco de dados embutido minúsculo.
Não é muito bom para a escala de produção.
Quando você tem 100 usuários
acessando simultaneamente um site,
Postgres, MySQL ou Oracle ou SQL Server
são realmente tipo de bancos de dados de multiprocessamento reais on-line.
Mas SQLite é ótimo porque é realmente simples.
Ele armazena tudo em um arquivo,
podemos mover o arquivo ao redor, etc.
Então eu amo SQLite,
e nesta classe e nesta coisa
vamos falar sobre SQLite.
Mas tudo o que falamos sobre
se aplica a todos esses diferentes sistemas de banco de dados.
Então a primeira coisa que você tem que fazer quando
você está indo para trabalhar com o banco de dados é que você tem
tem que criar um contrato
entre você e o banco de dados
sobre qual a forma de
as colunas são, quão amplas são as colunas,
que tipo de dados você vai armazenar neste.
E ele, em seguida, informa como
o software de banco de dados está indo para
estrutura esse banco de dados como no disco.
E parte do que você está fazendo é
permitindo que o software de banco de dados, MySQL,
ou Postgres, ou SQLite, superotimize seu armazenamento.
É muito mais inteligente do que você.
Algo como Oracle, ou MySQL,
ou Postgres provavelmente representa um bilhão de dólares,
se não mais, de pesquisa e desenvolvimento
sobre a melhor maneira
de armazenar e recuperar dados.
E você nem precisa saber nada disso.
Você só diz, olha, eu vou ter essas colunas,
ele vai ter um 100 caracteres de texto,
então eu vou ter um inteiro e
um número de ponto flutuante, depois 3.000 caracteres de texto,
e você se preocupa com todo esse detalhe.
Mas a chave é se você apenas diz,
“Eu vou armazenar qualquer coisa que eu quero”, então ele não pode otimizar,
e então há essa coisa em que você tem que
fazer um contrato no início e dizer,
“É exatamente assim que eu vou colocar para fora
os dados enquanto eu falo com o sistema de banco de dados.
e, em seguida, você pode descobrir como
colocar os dados no disco real.”
E então isso é chamado de esquema ou modelo de banco de dados,
e construir um modelo de banco de dados é em si uma coisa legal.
Então, se você estiver construindo um aplicativo complexo,
você tem esses modelos e eles têm conexões,
e eventualmente falaremos sobre tudo isso.
Mas é uma coisa crítica dizer
que isso é um contrato entre você e
o software de banco de dados para
o software de banco de dados pode
otimizar o armazenamento do banco de dados.
Agora, uma vez que você tenha dado o esquema,
então você pode escrever consultas que dependem desse esquema.
Então você pode ter uma coluna chamada
email e uma coluna chamada nome,
e, em seguida, você pode inserir dados em
o banco de dados usando esse esquema,
você pode recuperar dados usando o esquema,
você pode alterar tipo de dados em algum lugar profundo dentro do banco de dados,
e, em seguida, você pode excluir dados.
Aguarde um segundo. Whoa. Oi aí.
O que você está fazendo aí embaixo? Oh, dang ele.
Desculpe, desculpe. Você é uma criatura má.
Olhe para isso. Estava imaginando que barulho era esse.
Vem cá. Tenho que te apresentar a todas essas pessoas.
Vem cá.
Você não está se comportando.
Então esta é Shelby.
Oi Shelby. Então, esta é a Shelby. Este é o meu cachorrinho.
Eu estou tentando mantê-la fora de
a gaiola e deixá-la sentar e ficar pelos meus pés,
e ela tem alguns brinquedos de mastigar.
Oi Shelby. Esta é a Shelby.
Ela está interrompendo.
Você está interrompendo minha palestra. Mas você é bonitinho.
Então pare de mastigar a caneta,
mastigue seus brinquedos de mastigação que eu te dei, ok?
Deixe-me passar por esta palestra.
Ok, você pode descer.
Basta parar de mastigar isso.
Desculpe por essa interrupção do cão.
Eu estava apenas ouvindo ruídos de mastigação e eu pensei,
Eu peguei tudo, mas então
havia uma caneta no chão,
e assim a caneta, pobre caneta encontra o Sr. Puppy.
Oh, bem. Certo, onde eu estava?
SQL. CRUD, criar, ler,
atualizar e excluir dados.
E assim nosso próximo passo é
realmente fazer algum SQL e criar um banco de dados.
[MÚSICA]