Bonjour, et bienvenue à notre conférence sur SQL.
C'est donc une très,
très courte introduction à SQL.
J'adore SQL.
Je parlais à un étudiant
l'autre jour et ils me disaient,
« SQL est ma langue préférée ».
Et j'ai dit, « Je dois être d'accord que
SQL est aussi mon langage préféré. »
Parce que SQL est si beau,
vous n'avez même pas besoin d'écrire des boucles en SQL,
nous écrivons des boucles dans des langues comme
Python juste parce que nous le devons.
Le problème est que SQL est parfait,
mais ce n'est pas la façon dont nous pourrions écrire
quelque chose d'aussi complexe que Linux ou Python.
Et donc SQL n'est pas vraiment la façon dont les ordinateurs pensent,
nous avons ces choses appelées moteurs de base de données,
et ces moteurs de base de données font que les choses
fonctionnent vraiment, vraiment bien.
Et donc SQL est un excellent moyen d'organiser les données,
mais beaucoup de travail a été effectué dans
en gardant ces données organisées et en les rendant simples.
Donc c'est comme s'il y avait cette abstraction,
et c'est beaucoup de travail pour que cette abstraction fonctionne.
Donc, je veux commencer avec un peu
d'histoire avant les bases de données,
et vous pourriez penser, « Eh bien, avant les bases de données
, comment cela pourrait-il être ? »
Eh bien, dans l'ancien temps,
et si vous regardez de vieux films mettant en vedette des ordinateurs,
vous voyez des photos qui ont
ces machines à bande en
l'arrière-plan et ils tournent.
Et le filage de la machine à bande est le genre
de manifestation physique d'un calcul.
Et cela avait à voir avec le fait que dans l'ancien temps, les ordinateurs
n'avaient pas assez de données
pour stocker toutes leurs données dans la mémoire ou sur un disque,
nous n'avions même pas de disques dans les premiers jours.
Au début, les bandes étaient ce que nous avions,
et nous avons utilisé une sorte de variation de bandes audio,
et au lieu de l'audio,
ils contenaient des données, des zéros et des autres.
Et donc la façon dont les choses fonctionnaient dans les anciens jours
afin que vous puissiez avoir une base de données, pour ainsi dire,
était la base de données était entièrement
vos données enregistrées sur une bande.
Et la chose clé d'une bande est que
c'était une chose physique,
et donc vous avez dû le rembobiner,
aller en avant et en arrière.
Et la plupart d'entre vous probablement
n'ont jamais vu une cassette ou une bande de huit pistes
ou une bande de bobine à bobine,
mais c'est une longue pièce physique de plastique de mille pieds,
et pour obtenir les données à la fin,
vous avez dû tourner jusqu'à ce que vous y arriviez.
Et donc ce n'était pas ce que nous appelons l'accès aléatoire,
ce qui signifie que dans un accès aléatoire,
que ce soit la mémoire ou le lecteur de disque,
l'accès aléatoire vous permet d'arriver à
n'importe quel endroit à peu près dans un temps fixe.
Alors que si vous êtes près de quelque chose sur une bande,
vous pouvez y accéder très rapidement.
Si vous êtes loin, vous devez y aller,
, puis attendre, puis revenir.
Donc, cela a conduit à un modèle
où chaque soir nous
prenions la cassette des soldes des comptes d'hier.
Disons que nous sommes une banque,
et que des gens viennent à la fenêtre,
mettent de l'argent, sortent de l'argent.
Et alors ce que nous ferions, c'est que nous mettions toutes les transactions
, parfois sur des cartes perforées physiquement,
et ensuite nous les trions, non ?
Et disons juste que nous avons 26 comptes et la personne C montre
jusqu'à ajoute 10$ et la personne F
apparaît et soustrait 10$, et etc, etc.
Et puis ce que nous aurions la nuit,
nous obtiendrions tous ces triés,
et il y avait des machines physiques qui
les trieraient réellement dans le le plus tôt des jours,
et puis nous aurions l'ancien solde,
A, B, C, D,
E, F, assis sur une bande dans l'ordre, trié dans l'ordre.
Et nous commencions un processus après la fermeture de la banque
où nous lisions le premier enregistrement de la bande comme A,
nous lisions la première transaction sur les cartes,
et nous les comparions.
Et si la bande était
plus tôt que la transaction
ou moins, nous la copierions, donc nous la copierions.
Et puis le B se comparerait au C,
et B serait copié,
et puis C rencontrerait,
et ensuite nous réalisions que les données C,
nous aurions dû mettre à jour les données C,
et ajouter 10$ à la balance, et puis nous écririons cela.
Et vous remarquerez que nous écrivons ceci,
nous trions, c'est dans l'ordre trié.
Ensuite, nous copierions D, nous n'avons rien pour D,
et il serait juste copié.
Nous copierions E, nous n'avons rien pour E,
et il serait juste copié,
et ensuite nous aurions oublié de mettre F sur cette photo,
nous aurions F et nous soustrayons 10, et nous le copierions.
Et puis nous aurions fini avec
le genre de choses que nous devions faire ce soir-là,
et ensuite ce que nous ferions, c'est que nous aurions
ces nouvelles données mises à jour qui étaient
toutes triées dans l'ordre des comptes.
Et puis la nuit suivante,
nous déplaçons la bande,
la nouvelle bande serait l'ancienne bande,
et nous le ferions encore et encore.
Et parfois ces processus fonctionnaient
pendant quatre ou cinq heures parce que les bandes étaient longues ou
il devait être plusieurs bandes,
et donc beaucoup de calcul était
fait après la fermeture des banques à cinq heures,
alors un groupe de personnes viendrait,
nous les appellerions opérateurs,
et ils montaient ces bandes et exécutaient
ces travaux et s'asseyaient là et regardaient
ces bandes tourner alors que les données étaient copiées de
de l'une à l'autre.
Alors oui, c'est plutôt cool.
Heureusement, ce n'est plus comme ça que nous le faisons.
La chose qui l'a fait pour que nous n'ayons pas à faire
c'est l'invention des lecteurs de disque.
Et les lecteurs de disque sont des supports magnétiques,
tout comme les lecteurs de bande,
mais la différence était qu'ils étaient
sur ces plateaux tournants.
Et donc ce que vous pouviez faire est que les données
se trouvaient dans une série de cercles concentriques sur ces plateaux,
et puis vous aviez une tête
qui pouvait se déplacer rapidement.
Et donc la vitesse à laquelle vous pouviez accéder aux données était
une combinaison avec la vitesse à laquelle
la tête pouvait se déplacer vers un certain cylindre,
et vous deviez attendre jusqu'à ce que les données arrivent.
Et donc parfois vous auriez 5 400 révolutions par minute.
Cela signifie que 5,400,
5.000 fois par minute,
qui est 100 fois par seconde.
Tu attendrais le 100e de seconde.
Et c'est bien mieux que d'attendre une minute et demie,
deux minutes, voire 10 minutes pour faire tourner une cassette.
Donc, le problème était,
c'est alors que nous sommes comme, « Ok,
maintenant que nous avons cette merveilleuse technologie,
nous pouvons stocker toutes nos données nocturnes
sur un disque parce que c'est assez d'espace,
comment construire la technologie
pour en faire un bon usage ? »
Et beaucoup de recherche,
beaucoup d'informatique,
beaucoup de recherche de fournisseurs sont allés dans
comprendre comment utiliser au mieux cette nouvelle chose de disque.
Je me souviens avoir parlé à des gens comme
parce qu'on utilisait une disquette,
qu'ils étaient beaucoup plus lents,
donc ils n'allaient pas 5,400.
Donc, il pourrait prendre un quart de seconde pour déplacer
la tête et il pourrait prendre
presque une seconde pour le faire tourner,
qui était encore beaucoup plus rapide que 10 minutes, n'est-ce pas ?
Donc, c'est environ une seconde pour arriver à
n'importe où sur la disquette.
Et nous construirions des approches pour stocker des données,
et nous commencerions avec cette chose physique
et vous l'entendiez grognement et
se déplaçant et grognant et se déplaçant,
et puis vous trouveriez un meilleur moyen
de stocker les données,
et puis il grognait et déplacé moins,
et votre chose irait plus vite.
Donc c'était comme un truc de recherche.
C'était bon vieux temps quand les ordinateurs faisaient des bruits,
et vous pouviez changer votre code à l'intérieur des ordinateurs.
Et la première chose, bien sûr, nous avons fait était juste
a pris ces mises à jour de maître séquentielles et les a mis sur,
mais cela s'est avéré ne pas être le meilleur.
Et c'était en quelque sorte la recherche est,
pas seulement comment pouvons-nous faire ce que nous
faisait sur des données qui ne pouvaient pas être consultées de façon aléatoire, et au lieu de cela,
dire que nous allons en profiter.
Et donc beaucoup de recherches, beaucoup de vendeurs,
il y avait beaucoup de logiciel
très cher que les gens ont acheté pour dire,
« Regardez, vous êtes une banque,
et vous voulez vraiment savoir comment cela fonctionne. »
Et donc ce qui s'est passé était dans les années 60 et 70,
les fournisseurs d'ordinateurs se battaient,
et ils venaient avec une technique,
qui comparé à notre technique de base de données actuelle,
était tout simplement trivialement simple,
mais il a fallu beaucoup de travail à l'époque,
et ils se battaient avec tous les d'autres fournisseurs d'ordinateurs,
et ils diraient, « Notre mécanisme séquentiel index
est meilleur. »
Et Vendor 2 dirait,
« Notre approche réseau est meilleure. »
Et puis ils s'asseyaient, et ils
se battaient en quelque sorte les uns avec les autres,
et ensuite les pauvres clients seraient genre,
« Je ne sais même pas de quoi tu parles. »
Et alors ils achèteraient
les trucs du vendeur qui les emmenait
au golf ou pour
le meilleur déjeuner ou les emmenait en Floride.
Et puis ils adapteraient
à tout ce que fait ce vendeur.
Et donc c'était vraiment effrayant parce que nous étions
emménageant dans un endroit où vous étiez enfermé dans un vendeur,
et une fois que vous êtes enfermé dans
un fournisseur, vous êtes en mauvaise forme.
Et donc le gouvernement américain,
en particulier, avait une tonne
d'argent et achetaient des tonnes d'ordinateurs,
à la fois pour le traitement normal des données et pour
des choses stratégiques comme des trucs militaires,
et donc ils achetaient des tonnes d'ordinateurs et
ils savaient que ces fournisseurs,
s'ils arrivaient à le point où ils
les ont enfermé en un seul fournisseur,
que le vendeur serait juste en mesure de dicter le prix.
Ainsi, le gouvernement fédéral, par l'intermédiaire du NIST,
l'Institut national des normes et de la technologie,
a décidé que les bases de données avaient besoin d'une norme.
Ils avaient besoin d'un moyen pour que nous
puisse parler à n'importe quelle base de données de n'importe quel fournisseur utilisant
la même technique et ne pas avoir à faire un seul fournisseur,
et puis si vous avez changé de fournisseur,
vous avez dû réécrire complètement votre logiciel.
Donc NIST n'a pas précisé comment cette abstraction,
cette norme, allait fonctionner.
Ils viennent d'amener les fournisseurs et ont dit,
« Nous allons arrêter d'utiliser
votre logiciel si vous ne trouvez pas de standard. »
Et c'était un moment parfait parce que même si
les vendeurs pensaient que tout était parfait et merveilleux,
il y avait beaucoup de choses à l'envers.
Et en particulier, il y avait
ce concept de bases de données relationnelles,
qui était à l'époque plus de
une théorie mathématique d'une meilleure façon de stocker
et récupérer des données qu'il n'était
une technologie disponible pratiquement implémentée.
Et donc SQL, et voici Liz Fong,
qui je suis allé et j'ai fait une interview au NIST,
elle parle des premiers jours,
c'est une excellente interview,
les premiers jours de la façon dont cette norme SQL a vraiment fait
tellement de sens et vraiment fixe
l'industrie et a obtenu le travail vraiment bien.
Et je vous recommande de jeter un oeil à
cette vidéo juste pour que vous puissiez en quelque sorte voir.
Maintenant, ce que SQL a dit fondamentalement était que
ne nous inquiétons pas tellement
sur l'endroit où ces données sont réellement sur le disque, parce que les approches de base de données
antérieures étaient
nous programmeurs saurions qu'il y avait des cylindres et des positions,
et nous placerions les choses de certaines manières,
et nous
ferait des index
et nous regarderions les index nous-mêmes,
toutes sortes de choses différentes,
ou nous lirions à un endroit sur le disque et qui ferait
avoir une adresse de l'endroit suivant
que nous sommes supposés lire sur le disque.
Et ils ont dit, Vous savez quoi,
ne nous inquiétons pas tellement de
la structure de stockage physique sur le bureau, mais au lieu de cela,
nous allons trouver un langage
par lequel nous pouvons exprimer ce que nous
veulent lire, écrire, mettre à jour,
et supprimer sur le disque dans un langage vraiment simple,
et alors nous pouvons construire un morceau de logiciel
qu'il pourrait y avoir beaucoup de formats de disque en dessous.
Et puis nous pourrions tous utiliser cette langue et vous pourriez
acheter le vendeur A et utiliser
cette langue et le fournisseur B et utiliser cette langue,
et ensuite vous pourriez même la comparer et dire,
« Voici un tas de choses dans cette langue.
Quel fournisseur peut exécuter cela plus rapidement ? »
Et donc le NIST avait également une série de benchmarks,
PPC était quelques-uns des benchmarks.
Et donc ce qu'ils ont fait, c'est qu'ils ont fondamentalement fait
pour que c'était comme un langage beau et simple,
et c'est ce que nous appelons SQL.
Je pense qu'à un moment donné il a été appelé
le langage de requête simple,
et c'est le langage que nous utilisons pour parler aux bases de données.
Et la chose intéressante est ce que SQL nous a permis de faire
vraiment dans les années 60 et 70 quand il est sorti,
était de parler aux bases de données de style ancien comme index,
séquentiel, et les bases de données de style réseau,
et comme cette nouvelle forme appelée bases de données relationnelles,
qui avait comme ça génial base mathématique,
mais a été mal implémenté dans la première fois,
on pourrait juste dire, « Oh bizarre. »
Lorsque la performance des bases de données relationnelles est arrivée à
au point où elle était aussi bonne que les autres bases de données,
alors nous pouvions simplement changer et nous pourrions parler le même SQL.
Il a donc permis une incroyable innovation
sur une période de 10 ou même de 15 ans,
où l'abstraction nous a permis d'améliorer les bases de données en
d'une manière merveilleuse sans avoir vraiment à changer la façon dont nous les avons utilisés en tant que programmeurs.
Assez dang génial, je serai honnête.
Et donc j'ai parlé de cette idée de bases de données relationnelles
, et de bases de données relationnelles,
et j'admets que quand j'ai vu les bases de données relationnelles
au début des années 1980, je suis genre,
c'est merdique, parce que encore une fois,
je pouvais entendre des disquettes et je savais que
nous bougeons une chose et j'avais
tellement conscience de ce qui se passait,
et j'ai adoré cette conscience.
Et les bases de données relationnelles comme cachaient
ce qui se passait derrière cette couche,
et il s'est avéré que chaque fois que je l'utilisais,
c'était plus lent parce que ce n'était pas encore intelligent.
Et donc les bases de données relationnelles ont commencé
comme une idée mathématique comme
la meilleure façon théorique de représenter
réseaux de données avec des colonnes, des lignes et des lignes, et des connexions, et des jointures,
et nous allons parler de tout cela finalement.
Et c'était une belle idée et les mathématiques avaient raison.
Il a fallu beaucoup de temps pour arriver à
au point où les mathématiques supérieures des bases de données relationnelles
ont fonctionné
mieux que les systèmes de base de données de la génération précédente optimisés hautement astucieusement
.
Il y a donc beaucoup de systèmes de base de données communs
que vous allez traverser.
Certains d'entre eux sont open source,
d'autres sont commerciaux.
Postgres et MySQL sont open source.
Postgres est probablement le plus
complexe et complexe et riche,
Oracle est une base de données complexe,
et riche qui est
disponible pour beaucoup d'argent,
et Microsoft a une base de données appelée SQL Server.
Et toutes ces bases de données que nous voyons ont évolué dans
un sens après l'existence de la spécification SQL,
donc ils ont juste construit du SQL.
Il y avait des bases de données héritées de ce type de SQL appris.
Et il y a beaucoup d'autres bases de données.
SQLite est ce que nous allons réellement utiliser
avec ce cours,
et c'est super cool, super rapide.
Sur votre téléphone portable,
vous avez probablement 40 copies de SQLite,
et dans votre voiture, vous avez probablement 40 copies de
SQLite, parce que c'est une vraie petite base de données intégrée.
Ce n'est pas vraiment bon pour l'échelle de production.
Lorsque vous avez 100 utilisateurs
en même temps sur un site Web,
Postgres, MySQL, ou Oracle ou SQL Server
sont vraiment une sorte de véritables bases de données multitraitement en ligne.
Mais SQLite est génial parce que c'est vraiment simple.
Il stocke tout dans un seul fichier,
nous pouvons déplacer le fichier autour, etc.
Donc j'adore SQLite,
et dans cette classe et dans cette chose
nous allons parler de SQLite.
Mais tout ce que nous parlons de
s'applique à tous ces différents systèmes de base de données.
Donc, la première chose que vous devez faire quand
vous allez travailler avec la base de données est que vous avez
doit trouver un contrat
entre vous et la base de données
quant à la forme des
les colonnes sont, à la largeur des colonnes, à la taille des colonnes, à la taille des colonnes, au type de données que vous allez stocker dans ce domaine.
Et il indique ensuite comment
le logiciel de base de données va structurer cette base de données comme sur le disque.
Et une partie de ce que vous faites est que vous êtes
permettant au logiciel de base de données, MySQL,
ou Postgres, ou SQLite, de super-optimiser son stockage.
C'est tellement plus intelligent que toi.
Quelque chose comme Oracle, ou MySQL,
ou Postgres représente probablement un milliard de dollars,
sinon plus, de recherche et de développement
sur la meilleure façon de stocker et de récupérer des données.
Et tu n'as pas besoin de savoir tout ça.
Vous dites juste, regardez, je vais avoir ces colonnes,
ça va avoir 100 caractères de texte,
puis je vais avoir un entier et
un nombre à virgule flottante, puis 3 000 caractères de texte,
et vous vous inquiétez de tout ce détail.
Mais la clé est si vous dites,
« Je vais stocker tout ce que je veux », alors il ne peut pas optimiser,
et donc il y a cette chose où vous devez
faire un contrat au début et dire,
« C'est exactement comme ça que je vais mettre en page
les données que je parle au système de base de données.
et ensuite vous pouvez comprendre comment
disposer les données dans le disque réel. »
Et c'est ce qu'on appelle le schéma ou le modèle de base de données,
et construire un modèle de base de données est en soi une chose cool.
Donc, si vous construisez une application complexe,
vous avez ces modèles et ils ont des connexions,
et nous finirons par parler de tout ça.
Mais c'est une chose critique de dire
qu'il s'agit d'un contrat entre vous et
le logiciel de base de données afin que
le logiciel de base de données puisse optimiser le stockage de la base de données.
Maintenant, une fois que vous avez donné le schéma,
, vous pouvez écrire des requêtes qui dépendent de ce schéma.
Donc, vous pouvez avoir une colonne appelée
email et une colonne appelée name,
et ensuite vous pouvez insérer des données dans
la base de données en utilisant ce schéma,
vous pouvez récupérer des données en utilisant le schéma,
vous pouvez changer des données quelque part au fond de la base de données,
et ensuite vous pouvez supprimer des données.
Accrochez-vous une seconde. Whoa. Salut, là.
Qu'est-ce que tu fais là-bas ? Oh, dang ça.
Désolé, désolé. Tu es une mauvaise créature.
Regardez ça. Je me demandais quel était ce bruit.
Viens ici. Je dois te présenter à tous ces gens.
Viens ici.
Tu ne te comportes pas.
Alors voici Shelby.
Salut Shelby. Donc c'est Shelby. C'est mon chiot.
J'essaie de la garder hors de
la cage et de la laisser s'asseoir et se lever par mes pieds,
et elle a des jouets à mâcher.
Salut Shelby. Voici Shelby.
Elle interrompt.
Tu interrompt ma conférence. Mais tu es mignonne.
Alors arrête de mâcher sur le stylo,
mâche sur tes jouets à mâcher que je t'ai donnés, d'accord ?
Laissez-moi passer par cette conférence.
Ok, tu peux descendre.
Arrête de mâcher dessus.
Désolé pour cette interruption de chien.
J'entendais juste des bruits de mastication et j'ai pensé,
j'ai tout pris mais
il y avait un stylo sur le sol,
et donc le stylo, pauvre stylo rencontre M. Puppy.
Oh, eh bien. Ok, où étais-je ?
SQL. CRUD, créer, lire, mettre à jour
et supprimer des données.
Et donc notre prochaine étape est de
faire un peu de SQL et de créer une base de données.
[MUSIQUE]