[Jouer de la musique] DOUG LLOYD: Dans nos vidéos sur des sujets de développement web, nous l'avons mentionné le concept de une base de données plusieurs fois, non? Ainsi, une base de données que vous êtes probablement familier avec de dire en utilisant Microsoft Excel ou Google Spreadsheets. Il est vraiment juste un organisé un ensemble de tables, les lignes et les colonnes. Et une base de données est là Notre site Web stocke informations importantes pour notre site Web pour fonctionner correctement. Encore une fois, un exemple très commun ici stocke des noms d'utilisateur et mots de passe dans une base de données, de sorte que lorsque un utilisateur se connecte à notre site Web, la base de données peut être interrogée pour voir si cet utilisateur existe dans la base de données. Et si elles sont, en vérifiant que leur mot de passe est correct. Et si leur mot de passe est correct, alors nous pouvons leur donner quelle page ils requérant. Donc, vous êtes probablement, encore une fois, familier avec cette idée à partir d'Excel ou Google Tableurs. Nous avons des bases de données, tables, des lignes et des colonnes. Et cela est vraiment tri de l'ensemble fondamental de décomposition hiérarchique ici. Alors, voici une feuille de calcul Excel. Et si vous avez déjà ouvert cette ou un autre programme similaire Vous savez que ces voici rows-- 1, 2, 3, 4, 5, 6, 7. Ce sont des colonnes. Peut-être ici-bas, même si vous pouvez pas utiliser cette fonctionnalité terriblement much-- Je vais faire un zoom in-- nous avons cette idée d'une feuille. Alors peut-être ces feuilles, si Je alterne avant et en arrière, sont des tables différentes que exister dans ma base de données. Et si nous continuons l'exemple tout le chemin, le nom de cette base de données est 1 livre. Peut-être que je dois livre 2 et 3 livre. Ainsi, chaque fichier Excel est un base de données, chaque feuille est une table, et à l'intérieur de chaque tableau, je dois cette idée de lignes et de colonnes. Alors, comment puis-je travailler avec cette base de données? Comment puis-je obtenir les informations qu'il contient? Eh bien il ya un langage appelé SQL-- que je viens d'appeler Sequel-- habituellement et il représente le Structured Query Language. Et il est un langage de programmation, mais il est une programmation assez limitée la langue. Il est pas tout à fait comme les autres que nous avons travaillé avec. Mais le but de cette langage de programmation est d'interroger une base de données, pour demander des informations d'une base de données, trouver des informations dans un base de données, et ainsi de suite. Nous avons également, dans CS50-- et il ya une très plate-forme commune, il est appelé MySQL. Voilà ce que nous utilisons dans le cours. Il est une source ouverte plate-forme qui établit un database-- dite relationnelle une base de données, de manière efficace. On n'a pas besoin d'obtenir dans trop de détails sur ce qui est une base de données relationnelle. Mais le langage SQL est très habiles à travailler avec MySQL et d'autres semblables styles de bases de données relationnelles. Et de nombreuses installations de MySQL venir avec quelque chose appelé phpMyAdmin, qui est une interface utilisateur graphique interface-- un GUI-- que rend un peu plus convivial pour exécuter utilisateur requêtes de base de données, parce que les bases de données ne sont pas seulement utilisés par les programmeurs avancés, non? Parfois il ya des ces petites entreprises, et ils ne peuvent pas se permettre de engager une équipe de programmeurs, mais ils ont encore besoin de stocker dans une base de données d'informations. Quelque chose comme phpMyAdmin il est très facile pour quelqu'un qui n'a jamais programmé avant de ramasser et de se familiariser avec la façon dont de travailler avec une base de données. Le problème est, phpMyAdmin, tandis que il est un outil fantastique pour l'apprentissage à propos des bases de données, il est manuel. Vous allez avoir à se connecter à et exécuter les commandes et de type les choses en main. Et comme nous le savons de notre par exemple sur la programmation web PHP, ayant à faire manuellement choses sur notre site Web, si nous voulons dynamique, un réactif actif site, peut-être pas la meilleure approche. Nous aimerions trouver un moyen de peut-être automatiser ce en quelque sorte. Et SQL va nous permettre de faire cela. Alors, quand nous allons commencer à travailler avec SQL, nous avons d'abord besoin d'avoir un base de données de travailler avec. Création d'une base de données est quelque chose que vous avez probablement fera dans phpMyAdmin, parce vous aurez seulement besoin de le faire une fois, et la syntaxe pour le faire est beaucoup plus simple. Il est beaucoup plus facile de le faire dans une interface utilisateur graphique que de taper it out comme une commande. La commande peut être un peu encombrant. De même, la création d'une table peut obtenir un peu encombrant ainsi. Et ainsi de choses comme la création d'une base de données et la création d'une table, qui vous êtes probablement que va faire once-- une fois par table, une fois par database-- il est OK pour faire en une interface graphique. Dans le processus de création d'une table, vous aurez ont également spécifier l'ensemble des colonnes qui seront dans ce tableau. Quel genre d'information le faire vous souhaitez stocker dans le tableau? Peut-être que le nom et la date de naissance d'un utilisateur, mot de passe, numéro d'ID utilisateur, et peut-être ville et l'État, non? Et pour chaque fois que nous voulons ajouter un utilisateur à la base de données, nous voulons obtenir tous les six de ces éléments d'information. Et nous le faisons en ajoutant lignes à la table. Donc nous créons d'abord une base de données, puis nous créons une table. Dans le cadre de la création une table, on nous demande pour indiquer que chaque colonne nous aimerions dans ce tableau. Et puis comme nous commençons à ajouter informations à la base de données et d'interroger la base de données plus generally-- pas seulement l'ajout, mais tout le reste nous do-- nous serons face avec les lignes du tableau, ce qui est une les informations de l'utilisateur à partir de l'ensemble. Ainsi, chaque colonne SQL est capable de contenant des données d'un type de données particulier. Nous avons donc éliminé ce genre de idée des types de données en PHP, mais ils sont de retour ici dans SQL. Et il ya beaucoup de types de données. Voilà seulement 20 d'entre eux, mais il est même tous ne. Donc, nous avons des idées comme INTs-- Integers-- nous savons probablement que cette colonne peut contenir des nombres entiers. Et il ya des variations thereon-- SMALLINT, TINYINT, MEDIUMINT, BIGINT. Peut-être que nous ne devons pas toujours quatre piqûres. Peut-être que nous avons besoin de huit octets, et nous peuvent utiliser ces variations sur les entiers à être un peu plus efficace de l'espace. Nous pouvons faire des nombres décimaux, nous peut faire nombres à virgule flottante. Ceux-ci sont assez similaires. Il ya quelques différences, Et si vous voulez voulez consulter le Trier SQL du guide, vous peut voir ce que la légère différences entre eux. Peut-être que nous voulons stocker informations sur la date et l'heure. Peut-être que nous allons garder la trace de lorsque l'utilisateur a rejoint notre site Web, et alors peut-être que nous voulons d'avoir une colonne qui est un temps de date ou un horodatage indique lorsque l'utilisateur fait signé. Nous pouvons faire des géométries et des lignes brisées. Ceci est en fait assez cool. Nous pourrions tracer un en utilisant la zone géographique Coordonnées SIG de tracer une zone. Alors peut effectivement stocker ce genre de l'information dans une colonne de SQL. TEXTE est seulement blobs géants de texte, peut-être. ENUM sont assez intéressant. Ils existent réellement en C. Nous ne faisons pas parler d'eux parce qu'ils ne sont pas terriblement couramment utilisé, au moins CS50. Mais il est un type de données énuméré, qui est capable de maintenir des valeurs limitées. Un très bon exemple serait ici pour créer une énumération où les sept valeurs possibles sont dimanche, lundi, Mardi, mercredi, jeudi, vendredi, Samedi, à droite? Ce type de données Jour de Ne existe pas semaine, mais nous pourrions créer un type de données énuméré tels que cette colonne ne peut jamais tenir une de ces sept valeurs possibles. Nous avons énuméré tous des valeurs possibles. Ensuite, nous avons CHAR et VARCHAR, et je l'ai colorer ces verte parce que nous sommes en fait va prendre une seconde pour parler de la différence entre ces deux choses. Donc, CHAR, contrairement C où CHAR était un caractère unique, dans SQL CHAR se réfère à une chaîne de longueur fixe. Et lorsque nous créons cette colonne, nous avons effectivement peut spécifier la longueur de la chaîne. Donc, dans cet exemple, nous pourrions dire CHAR (10). Cela signifie que chaque élément de cette colonne sera composé de 10 octets d'informations. Ni plus ni moins. Donc, si nous essayons de mettre dans un 15 bit ou un élément de 15 caractères ou de la valeur dans cette colonne, nous ne recevons le premier 10. Si nous mettons dans les deux caractère valeur longue, nous allons avoir deux caractères, puis huit piqûres NULL. Nous ne serons jamais plus efficace que cela. Un VARCHAR est un peu comme notre notion d'une chaîne que nous sommes familiers à partir de C ou PHP. Il est une chaîne de longueur variable. Et lorsque vous créez cette colonne, vous venez spécifier les longueurs maximales possibles. Alors peut-être 99, ou communément 255. Ce serait la longueur maximale. Et si nous étions stockons 15 chaîne de caractères, nous devrions utiliser 15 octets, peut-être 16 octets pour le terminateur null. Si nous étions stocker une trois chaîne de caractères, nous devrions utiliser trois ou quatre octets. Mais nous ne serions pas utiliser la pleine 99. Alors pourquoi devrions-nous avoir les deux? Eh bien, si nous avons besoin de comprendre comment quelque chose de long est une VARCHAR, nous devons genre d'itérer à travers elle juste comme nous avons fait dans C et de déterminer où il arrête. Alors que si nous savons que tout dans cette colonne est de 10 octets, peut-être nous savons que l'information, nous pouvons sauter 10 octets, 10 octets, 10 octets, 10 octets, et toujours trouver le début de la chaîne. Nous pouvons donc avoir une certaine espace perdu avec un CHAR, mais peut-être il ya un commerce hors d'avoir une meilleure vitesse à naviguer dans la base de données. Mais peut-être nous voulons que le flexibilité d'un VARCHAR au lieu de having-- Si notre CHAR était de 255, mais la plupart de nos utilisateurs ont été seulement entrer trois ou quatre octets la valeur de l'information, trois ou quatre caractères d'une valeur de l'information. Mais certains utilisateurs ont utilisé l'ensemble 255, peut-être VARCHAR serait plus approprié il. Il est une sorte de compromis, et généralement à des fins de CS50, vous ne devez pas trop se soucier de si vous utilisez un CHAR ou VARCHAR. Mais dans le monde réel, ces choses ne d'importance parce que l'ensemble de ces colonnes prendre de l'espace physique réel. Et l'espace physique, dans le monde réel, arrive à une prime. Donc, une autre considération quand vous construisez une table est de choisir une colonne d'être ce qu'on appelle une clé primaire. Et une clé primaire est une colonne où chaque valeur est unique. Et cela signifie que vous pouvez facilement choisir une seule rangée juste en regardant à la clé primaire de cette ligne. Ainsi, par exemple, vous généralement, avec les utilisateurs, ne veulent pas deux utilisateurs qui avoir le même numéro d'identification de l'utilisateur. Et peut-être que vous avez beaucoup d'informations, et peut-être deux utilisateurs peuvent ont la même name-- vous avez John Smith et John Smith. Cela ne veut pas nécessairement un problème, parce qu'il ya plusieurs personnes dans le monde du nom de John Smith. Mais nous avons seulement un numéro d'utilisateur 10, une référence utilisateur 11, 12, 13, ID. Nous ne disposons pas des deux utilisateurs avec le même nombre, et alors peut-être le nombre d'ID utilisateur serait une bonne clé primaire. Nous ne disposons pas de duplication, et nous pouvons maintenant unique identifier chaque rangée juste en regardant cette colonne. Choisir les clés primaires peuvent réellement faire des opérations de table ultérieurs beaucoup plus facile parce que vous pouvez exploiter le fait que certaines lignes seront être unique, ou d'une certaine colonne de votre base de données ou de la table sera unique pour ramasser des lignes particulières sur. Vous pouvez également avoir un joint primaire clé, que vous pouvez trouver l'occasion à utiliser, qui est juste un combinaison de deux colonnes qui est garanti d'être unique. Alors peut-être vous en avez un colonne qui est A et des B, une colonne qui est une, deux, et trois, mais vous aurez seulement jamais avoir un seul A1, un seul A2, et ainsi de suite et ainsi de suite. Mais vous pourriez avoir un B2, un C2, ou un A1, A2, A3, A4. Donc, vous pourriez avoir de multiples Comme, multiple Hôtes, les multiples, plusieurs groupes de deux, mais vous ne pouvez jamais avoir une unique A1, B2, C3, et ainsi de suite. Donc, comme je le disais, SQL est un langage de programmation, mais il a un vocabulaire assez limitée. Il est pas tout à fait aussi vaste que C et PHP et d'autres langues que l'on parle dans le cours. Il est un plus verbeux langue que ce que nous sommes allons parler dans ce vidéo, parce que dans cette vidéo nous allons parler quatre opérations que nous peut effectuer sur une table. Il n'y a plus que cela. Nous pouvons faire plus que cela, mais pour nos besoins, nous sommes généralement allez utiliser seulement quatre insert operations--, sélectionner, mettre à jour et supprimer. Et vous pouvez probablement deviner intuitivement ce que tous les quatre de ces choses ne. Mais nous irons dans un peu des détails sur chacun d'eux. Ainsi, aux fins du présent vidéo, supposons nous avons les deux suivantes des tables dans une base de données unique. Nous avons une table appelée utilisateur qui a quatre columns-- numéro d'identification, nom d'utilisateur, mot de passe, et le nom complet. Et nous avons une seconde table dans la même base de données appelé mamans qui stocke seulement de l'information au sujet d'un nom d'utilisateur et d'une mère. Donc, pour l'ensemble des exemples Dans cette vidéo, nous allons être en utilisant cette base de données et mises à jour ultérieures. Donc, disons que nous voulons ajouter des informations à une table. Voilà ce que l'opération d'insertion fait. Pour expliquer toutes ces commandes, je vais pour vous donner un squelette générale à utiliser. Parce que, fondamentalement, les requêtes vont se ressemblent beaucoup, nous allons tout simplement en train de changer légèrement différents éléments d'information faire des choses différentes avec la table. Donc, pour INSERT, le squelette ressemble un peu à cela. Nous voulons insérer dans une table particulière. Ensuite, nous avons une parenthèse ouverte et une liste de colonnes que nous voulons mettre en valeur. Fermer la parenthèse, le les valeurs suivantes, puis encore une fois, nous listons les valeurs nous voulons mettre dans le tableau. Ainsi, un exemple de ce serait la suivante. Je veux insérer dans la table utilisateurs de l'columns-- suivante nom d'utilisateur, mot de passe et nom complet. Donc, une nouvelle ligne où je suis en train de dans ces trois colonnes et nous sommes va mettre dans les valeurs Newman, USMAIL, et Newman. Donc dans ce cas, je suis mettre le Newman minuscules dans la colonne de nom d'utilisateur, le mot de passe USMAIL, et le nom complet du capital N Newman dans la colonne de nom complet. Alors, voici ce que la base de données ressemblait avant. Voici ce que la table des utilisateurs sur le top ressemblait avant que nous avons fait cela. Après nous exécutons ce requête, nous obtenir cela. Nous avons ajouté une nouvelle ligne à la table. Mais remarquez une chose que je ne ai pas précisé, mais de toute façon je dois une valeur pour qui est-ce 12 ici. Je ne dis pas que je voulais mettre le numéro d'identification là. Je voulais mettre le nom d'utilisateur, mot de passe, nom complet. Et je l'ai fait, ça va. Mais je suis également présent 12. Pourquoi ai-je reçu ce 12? Eh bien, il se trouve que lorsque vous définissez une colonne qui va être votre clé primaire, qui est généralement, comme je le disais, un numéro d'identification. Il est pas toujours nécessairement va être un numéro d'identification, mais il est généralement une bonne idée de être une sorte de valeur entière. Vous avez une option dans phpMyAdmin lorsque vous créez votre base de données ou votre table pour définir ce que colonne comme incrémentation automatique. Qui est vraiment une bonne idée quand vous travaillez avec une clé primaire, parce que vous voulez que chaque valeur en ce que la colonne d'être unique. Et si vous oubliez de préciser pour plus d'une personne, vous avez maintenant une situation où cette colonne est plus unique. Vous avez deux flans, de sorte que vous ne pouvez plus identifier un column-- ou vous ne pouvez plus unique identifier une ligne sur la base de cette colonne. Il a perdu la totalité de son valeur en tant que clé primaire. Et apparemment ce que je l'ai fait ici est configuré l'ID utilisateur colonne à incrémentation automatique de sorte que chaque fois que je ajouter des informations à la table, il donnera automatiquement moi une valeur de la clé primaire. Donc, je ne peux jamais oublier de le faire parce que la base de données va le faire pour moi. Voilà donc plutôt agréable. Et voilà pourquoi nous obtenons 12 là-dedans, parce que je l'ai définir cette colonne jusqu'à incrémentation automatique. Si je ajouté quelqu'un d'autre ce serait 13, si je ajouté quelqu'un d'autre que ce serait 14, et ainsi de suite. Alors disons simplement faire encore une insertion. Nous allons insérer dans la table des mamans, en notamment, le nom d'utilisateur et de mère colonnes, les valeurs Kramer et Babs Kramer. Et donc nous avons eu ça avant. Après que nous exécutons Requête SQL, nous avons cela. Nous avons ajouté Kramer et Babs Kramer à la table des mamans. Voilà donc l'insertion. SELECT est ce que nous utilisons pour extraire informations de la table. Voilà donc comment nous obtenons des informations sur la base de données. Et si les commandes SELECT vont être très fréquemment utilisé dans la programmation. Le général l'framework-- squelette générale ressemble à ceci. Sélectionnez un ensemble de colonnes de une table, puis éventuellement vous pouvez spécifier un ou condition-- ce que nous appelons généralement un prédicat, est habituellement le terme que nous utilisons dans SQL. Mais il est fondamentalement ce que des lignes particulières que vous voulez obtenir. Si vous voulez, au lieu d'obtenir tout, le réduire, ceci est où vous voulez le faire. Et puis éventuellement, vous pouvez aussi commander par une colonne particulière. Alors peut-être vous voulez avoir les choses triées alphabétique basé sur une colonne ou par ordre alphabétique basé sur un autre. Encore une fois, WHERE et ORDER BY sont facultatifs. Mais ils seront probablement useful-- particulier Où sera utile pour affiner afin de ne pas obtenir toute votre base de données et avoir à traiter, vous obtenez juste les morceaux de ce que vous vous souciez. Ainsi, par exemple, je pourrais vouloir sélectionner Numéro d'identification et nom complet des utilisateurs. Alors, que pourrait-il ressembler? Alors, voici ma table des utilisateurs. Je veux choisir IDNUM fullname et des utilisateurs. Que vais-je obtenir? Je vais obtenir ce. Je ne suis pas le réduire, donc je suis obtenir le numéro d'identification pour chaque ligne et je me fais le plein nommer de chaque ligne. D'ACCORD. Que faire si je veux choisir un mot de passe des utilisateurs WHERE-- maintenant Je ajoutant une condition, un predicate-- où IDNUM est inférieur à 12. Alors, voici à nouveau ma base de données, ma table des utilisateurs du haut. Que vais-je obtenir si je veux sélectionnez cette information, le mot de passe, où ID utilisateur ou IDNUM est inférieure à 12? Je vais obtenir ce informations arrière, à droite? Il arrive que IDNUM est de 10, moins de 12, le numéro d'identification 11 à moins de 12. Je reçois le mot de passe pour ces lignes. Voilà ce que je demandais. Et ça? Que faire si je veux choisir étoiles de la Table mamans où username est égal Jerry? OK, sélectionnez étoiles est la spéciale sorte de carte sauvage dite que nous utilisons pour obtenir tout. Alors qu'ils disent sélectionnez username mère par des virgules, qui qui est arrivé à être le seul deux colonnes de ce tableau, Je peux juste sélectionner étoiles et d'obtenir tout où le nom d'utilisateur est égal à Jerry. Et voilà ce que je voudrais obtenir si je faisais cette requête particulière. Maintenant, les bases de données sont grands parce qu'ils permettent nous pour organiser l'information peut-être un peu plus efficace que nous pourraient autrement. Nous ne stockons pas nécessairement chaque morceau d'information pertinente sur un utilisateur dans le même tableau. Nous avions deux tables là. Nous avons besoin de stocker le nom de la mère de tout le monde, et peut-être que nous ne disposons pas de la sécurité sociale nombre, nous avons leur date de naissance. Cela n'a pas toujours besoin à être dans le même tableau. Tant que nous pouvons définir les relations entre l'tables-- et voilà où cela relationnelle terme de base de données de type vient dans play-- aussi longtemps que nous pouvons définir relations entre les tables, nous pouvons sorte de compartimenter ou des choses abstraites d'une façon, où nous avons seulement le informations vraiment important nous nous soucions de la table de l'utilisateur. Et puis, nous avons des informations auxiliaires ou des informations supplémentaires dans d'autres tableaux que nous pouvons nous connecter revenir à la principale table des utilisateurs d'une manière particulière. Nous avons donc ici ces deux tableaux, mais il ya une relation entre eux, droit? Il semble que le nom d'utilisateur pourrait être quelque chose qui existe de commun entre ces deux tables différentes. Alors que faire si nous avons maintenant une situation où nous vouloir obtenir le nom complet d'un utilisateur à partir de la table de l'utilisateur, et de leur mère nom de la table de la mère? Nous ne disposons pas un moyen d'obtenir que tel qu'il est, non? Il n'y a pas une seule table qui contient à la fois le nom complet et le nom de la mère. Nous ne disposons pas de cette option de ce que nous avons vu jusqu'à présent. Et nous avons donc d'introduire l'idée d'une jointure. Et rejoint sont probablement le plus complex-- il est vraiment plus opération complexe nous allons parler dans la vidéo. Ils sont un peu compliqué, mais une fois que vous obtenez le coup de lui, ils sont en fait pas trop mal. Il est juste un cas particulier d'un SELECT. Nous allons sélectionner un ensemble de colonnes d'une table d'assemblage dans une seconde table sur certains prédicat. Dans ce cas, pensez-y comme this-- tableau ci est un cercle au-dessus ici, tableau à deux est un autre cercle ici. Et cette partie de prédicat au milieu, il est un peu comme si vous pensez à peu près aussi un diagramme de Venn, ce ont-ils en commun? Nous voulons lier ces deux tableaux sur la base de ce qu'ils ont en commun et de créer ce tableau hypothétique qui est la fusion des deux ensemble. Donc nous verrons cela dans un exemple et peut-être que va aider éclaircir un peu. Alors peut-être que vous voulez sélectionner user.fullname et moms.mother des utilisateurs d'assemblage dans le Table mamans dans chaque situation où la colonne de nom d'utilisateur est la même entre eux. Et cela est une nouvelle syntaxe ici, cet utilisateur. et les mamans .. Si je fais plusieurs tables ensemble, je peux spécifier une table. Je peux distinguer en particulier sur que, le tout en bas il. Je peux distinguer le nom d'utilisateur colonne de la table des utilisateurs de la colonne de nom de l'utilisateur Table mamans, qui sont non-ont si nous venons de dire le nom d'utilisateur est égal nom d'utilisateur, qui n'a pas vraiment veut rien dire. Nous voulons le faire là où ils correspondent. Donc, je peux spécifier la table et de la nom de colonne dans le cas d'une situation où il serait difficile de ce que je veux parler. Voilà donc tout ce que je fais là est que je suis disant cette colonne de ce tableau, et d'être très explicite. Encore une fois, je sélectionne le nom complet et le nom de la mère à partir de la table des utilisateurs reliés entre eux avec la table mamans dans chaque situation où ils partagent que column-- ils partagent ce nom d'utilisateur notion. Voici donc les tables que nous avions avant. Ceci est l'état de notre base de données tel qu'il existe en ce moment. Les informations que nous sommes extraction est-ce pour commencer. Ceci est la nouvelle table que nous allons pour créer les combinant ensemble. Et remarquons nous ne sommes pas en soulignant La rangée de Newman dans la table de l'utilisateur, et nous ne sommes pas en soulignant La rangée de Kramer dans le tableau des mamans parce que ni l'un existe dans sets-- fois dans les deux tables. La seule information qui est en commun entre elles est Jerry est dans les deux tableaux et gcostanza est dans les deux tables. Et donc quand nous faisons rejoindre le SQL, ce que nous get-- et nous faire réellement obtenir cela. Il est une sorte de variable temporaire. Il est comme un hypothétique fusion des deux tables. Nous recevons effectivement quelque chose comme ça, où nous avons fusionné les tables sur le informations qu'ils ont en commun. Donc remarquerez que users.username et la colonne de moms.username, il est exactement le même. Ce fut l'information était compatible des utilisateurs table et la table des mamans. Et donc nous les avons fusionnées. Nous jeté Kramer parce qu'il ne pas exister dans la table des utilisateurs, et nous jeté Newman, parce il n'a pas existé dans le tableau des mamans. Donc ceci est la fusion hypothétique en utilisant l'opération de jointure de SELECT. Et puis nous étions à la recherche pour le nom complet de l'utilisateur et la mère de l'utilisateur, et si cela est l'information qui nous aurions de la requête globale que nous avons fait avec SELECT. Donc, nous avons rejoint les tables ensemble et nous avons extrait ces deux colonnes, et est donc ce que nous allions trouver. Mais SQL rejoint un peu compliqué. Vous ne serez probablement pas les faire trop, mais juste avoir une idée du squelette que vous pourriez utiliser pour fusionner deux tables ensemble si vous avais besoin. Les deux derniers sont un peu plus simple je le promets. Donc, la mise à jour, nous pouvons utiliser UPDATE de modifier les informations dans un tableau. Le format général est mettre à jour certains table, définir certaines colonne à une valeur Où certains prédicat est satisfait. Ainsi, par exemple, nous pourrions vouloir de mettre à jour la table des utilisateurs et définir le mot de passe pour yada yada, où le numéro d'identification est 10. Donc dans ce cas, nous sommes mise à jour de la table des utilisateurs. Le numéro d'identification est de 10 pour que première rangée là, et nous voulons mettre à jour le mot de passe pour patata. Et voilà ce qui se passerait. Il est assez simple, non? Il est juste un très simple modification de la table. Supprimer est l'opération que nous avons utilisé pour supprimer des informations à partir d'une table. DELETE FROM table WHERE certains prédicat est satisfait. Nous voulons supprimer de la table des utilisateurs, par exemple où le nom d'utilisateur est Newman. Vous pouvez probablement le deviner ce qui va se arriver ici après nous exécutons que SQL requête, Newman a disparu de la table. Donc, toutes ces opérations, comme je l'ai dit, sont très faciles à faire dans phpMyAdmin. Il est une interface utilisateur très conviviale. Mais il ne nécessite un effort manuel. Nous ne voulons pas d'employer effort manuel. Nous voulons que nos programmes à faire cela pour nous, non? Donc, nous pourrions vouloir faire cette programmation. Nous voulons intégrer SQL et ont autre chose de le faire pour nous. Mais qu'avons-nous vu que permet que nous fassions quelque chose de programmation? Nous avons vu PHP, non? Il présente quelques-uns dynamisme dans nos programmes. Et si heureusement, SQL et PHP jouer très bien ensemble. Il ya une fonction en PHP dite requête, qui peut être utilisé. Et vous pouvez passer le paramètre ou l'argument pour interroger une requête SQL qui vous souhaitez exécuter. Et PHP va le faire en votre nom. Ainsi, après vous avez connecté à votre base de données avec PHP, il ya deux primaires vous faites cela. Il ya quelque chose appelé MySQLi et quelque chose appelé PDO. Nous ne rentrerons pas dans un énorme détail montant là. Dans CS50 nous utilisons PDO. Après que vous avez connecté à votre base de données, vous peut alors faire des requêtes base de données en passant les requêtes comme arguments à des fonctions PHP. Et quand vous faites cela, vous stockez le jeu de résultats dans un tableau associatif. Et nous savons comment travailler avec tableaux associatifs en PHP. Donc je pourrais dire quelque chose comme this-- $ results-- cela est dans PHP-- égale requête. Ensuite, à l'intérieur de la fonction d'interrogation cet argument que je suis de passage à interroger qui ressemble SQL. Et, en fait, qui est SQL. Voilà la chaîne de requête que je le ferais voulez exécuter sur ma base de données. Et donc en rouge, cela est PHP. Ceci est SQL que je suis intégrer PHP en faisant il l'argument de la fonction de requête. Je veux choisir à partir fullname utilisateurs où le numéro d'identification est égal à 10. Et puis, peut-être après que je l'ai fait, Je pourrais dire quelque chose comme ça. Je veux imprimer le un message Merci de vous connecter. Et je veux qu'il interpolate-- Je veux pour interpoler les résultats de $ fullname. Et voilà comment je travaille avec ce que tableau associatif que je suis rentré. $ fullname résultats feriez essentiellement finissent par imprimer, merci pour la connexion, Jerry Seinfeld. Ce fut le nom complet où IDNUM égal 10. Et donc tout ce que je fais est que je suis maintenant-- Je stockées ma requête, les résultats de ma recherche et les résultats dans un tableau associatif, et fullname est le nom de la colonne je devenais pour. Voilà donc ma clé dans les résultats tableau associatif que je veux. Donc Merci pour connecter, $ des résultats, fullname aura imprimer, collera à droite entre ceux bouclés accolades, Jerry Seinfeld. Et je tiens à imprimer le message Merci pour connecter Jerry Seinfeld. Maintenant, nous ne voulons probablement pas sur le disque les choses de code comme ça dans, non? Nous pourrions faire quelque chose comme impression f, où nous pouvons remplacer et peut-être recueillir de l'information différente, ou peut-être avoir le processus de requête des informations différentes. Et ainsi de requête, la fonction de requête a cette notion de genre de substitutions très similaire à imprimer pour cent f s et c pour cent, est des points d'interrogation. Et nous pouvons utiliser question marques très analogue d'imprimer f à des variables de substitution. Alors peut-être votre mode connecté plus tôt, et vous avez enregistré leur numéro d'identification de l'utilisateur en $ _session de PHP super- mondial dans l'ID de clé. Alors peut-être, après ils se sont connectés, vous définissez $ _session ID est égal à 10, extrapolation à partir de l'exemple nous venons de voir il ya une seconde. Et donc quand nous exécutons réellement Cette requête les résultats maintenant, il serait de brancher 10, ou quel que soit la valeur _session $ ID est. Et ce qui nous permet de être un peu plus dynamique. Nous ne sommes pas coder en dur les choses en plus. Nous économisons informations quelque part et puis nous pouvons utiliser cette information à nouveau sorte de généraliser ce que nous voulons faire, et juste plug-in et le changement le comportement de notre page sur la base de ce numéro d'identification de l'utilisateur est en fait après qu'ils ont enregistrés dans. Il est également possible, cependant, que vos résultats fixés pourrait consister en plusieurs lignes. Dans ce cas, vous avez un tableau de arrays-- un tableau de tableaux associatifs. Et il vous suffit de la parcourir. Et nous savons comment parcourir à travers un réseau en PHP, non? Donc ici est probablement le plus chose complexe que nous avons vu jusqu'à présent. Il intègre effectivement trois langues confondues. Ici, en rouge, cela est du HTML. Je apparemment starting-- cela est un extrait de code HTML que je dois. Je commence un nouveau paragraphe qui dit les mamans de Seinfeld de télévision. Et puis, immédiatement après, Je commence une table. Et puis après, je avoir un peu de PHP, non? Je dois tout ce code PHP là-dedans. Je vais faire un apparemment requête. Et pour rendre la requête, je vais être en utilisant les mères choisir parmi les mamans. Donc, cela est getting-- cela est SQL. Ainsi, le bleu est SQL. Le rouge que nous avons vu il ya un deuxième était HTML. Et le vert ici est PHP. Donc, je fais une requête à ma base de données, je suis sélectionner l'ensemble de la mères dans le tableau des mamans. Non seulement on réduit le champ à particulier rang, je vous demande à tous d'entre eux. Puis-je vérifier si le résultat est pas égaux vaut Faux. Ceci est juste ma façon de vérifier tri si les résultats de est pas égal à null, que nous verrions c par exemple. Fondamentalement, cela est en train de vérifier à faire vous qu'il a effectivement obtenu des données en arrière. Parce que je ne veux pas lancer l'impression sur des données si je ne reçois pas toutes les données. Ensuite, pour chaque résultats à la suite de la foreach syntaxe de PHP, tout ce que je fais est l'impression de $ result mères. Et donc je vais obtenir un ensemble de toutes les mères de each-- il est un tableau de associative arrays-- et je imprimer chacun comme sa propre ligne d'une table. Et cela est vraiment très jolie près tout ce qu'il ya à faire. Je sais qu'il ya un peu peu se passe ici dans ce dernier exemple avec des tableaux de arrays-- tableaux de tableaux associatifs. Mais il ne se résume vraiment juste dans SQL pour faire une requête, sélectionnant généralement après que nous avons déjà mettre l'information dans la table, et puis juste en tirant. Et cela est nous tirer dans ce cas particulier. Nous aimerions extraire tout de l'individu mères de la table mamans. Nous avons eu tout un ensemble d'entre eux, et nous vouloir parcourir et à imprimer chacun. Encore une fois, ce qui est probablement l'exemple le plus compliqué nous avons vu parce que nous sommes un mélange de trois différentes langues ensemble, non? Encore une fois, nous avons HTML ici en rouge, mélangé avec un peu SQL ici en bleu, mélangé avec un peu de PHP en vert. Mais tous ces facteurs jouent bien ensemble, il est juste une question de développement de bonnes habitudes de sorte que vous pouvez obtenir les faire travailler ensemble la façon dont vous voulez. Et la seule façon de le faire vraiment que est de pratiquer, pratiquer, pratiquer. Je suis Doug Lloyd, cela est CS50.