1 00:00:00,000 --> 00:00:03,493 >> [Jouer de la musique] 2 00:00:03,493 --> 00:00:04,934 3 00:00:04,934 --> 00:00:07,100 DOUG LLOYD: Dans nos vidéos sur des sujets de développement web, 4 00:00:07,100 --> 00:00:10,560 nous l'avons mentionné le concept de une base de données plusieurs fois, non? 5 00:00:10,560 --> 00:00:12,700 Ainsi, une base de données que vous êtes probablement familier avec de 6 00:00:12,700 --> 00:00:15,780 dire en utilisant Microsoft Excel ou Google Spreadsheets. 7 00:00:15,780 --> 00:00:20,650 Il est vraiment juste un organisé un ensemble de tables, les lignes et les colonnes. 8 00:00:20,650 --> 00:00:23,140 >> Et une base de données est là Notre site Web stocke 9 00:00:23,140 --> 00:00:26,760 informations importantes pour notre site Web pour fonctionner correctement. 10 00:00:26,760 --> 00:00:30,150 Encore une fois, un exemple très commun ici stocke des noms d'utilisateur et mots de passe 11 00:00:30,150 --> 00:00:32,824 dans une base de données, de sorte que lorsque un utilisateur se connecte à notre site Web, 12 00:00:32,824 --> 00:00:36,690 la base de données peut être interrogée pour voir si cet utilisateur existe dans la base de données. 13 00:00:36,690 --> 00:00:39,260 Et si elles sont, en vérifiant que leur mot de passe est correct. 14 00:00:39,260 --> 00:00:43,420 Et si leur mot de passe est correct, alors nous pouvons leur donner quelle page 15 00:00:43,420 --> 00:00:45,370 ils requérant. 16 00:00:45,370 --> 00:00:48,590 >> Donc, vous êtes probablement, encore une fois, familier avec cette idée à partir d'Excel ou Google 17 00:00:48,590 --> 00:00:49,430 Tableurs. 18 00:00:49,430 --> 00:00:52,980 Nous avons des bases de données, tables, des lignes et des colonnes. 19 00:00:52,980 --> 00:00:56,450 Et cela est vraiment tri de l'ensemble fondamental 20 00:00:56,450 --> 00:00:58,470 de décomposition hiérarchique ici. 21 00:00:58,470 --> 00:00:59,800 Alors, voici une feuille de calcul Excel. 22 00:00:59,800 --> 00:01:02,640 Et si vous avez déjà ouvert cette ou un autre programme similaire 23 00:01:02,640 --> 00:01:06,780 Vous savez que ces voici rows-- 1, 2, 3, 4, 5, 6, 7. 24 00:01:06,780 --> 00:01:08,760 Ce sont des colonnes. 25 00:01:08,760 --> 00:01:11,790 >> Peut-être ici-bas, même si vous pouvez pas utiliser cette fonctionnalité terriblement much-- 26 00:01:11,790 --> 00:01:15,370 Je vais faire un zoom in-- nous avons cette idée d'une feuille. 27 00:01:15,370 --> 00:01:17,930 Alors peut-être ces feuilles, si Je alterne avant et en arrière, 28 00:01:17,930 --> 00:01:21,600 sont des tables différentes que exister dans ma base de données. 29 00:01:21,600 --> 00:01:25,210 Et si nous continuons l'exemple tout le chemin, le nom de cette base de données 30 00:01:25,210 --> 00:01:26,940 est 1 livre. 31 00:01:26,940 --> 00:01:28,710 Peut-être que je dois livre 2 et 3 livre. 32 00:01:28,710 --> 00:01:33,270 Ainsi, chaque fichier Excel est un base de données, chaque feuille est une table, 33 00:01:33,270 --> 00:01:39,530 et à l'intérieur de chaque tableau, je dois cette idée de lignes et de colonnes. 34 00:01:39,530 --> 00:01:41,900 >> Alors, comment puis-je travailler avec cette base de données? 35 00:01:41,900 --> 00:01:43,630 Comment puis-je obtenir les informations qu'il contient? 36 00:01:43,630 --> 00:01:47,540 Eh bien il ya un langage appelé SQL-- que je viens d'appeler Sequel-- habituellement 37 00:01:47,540 --> 00:01:50,010 et il représente le Structured Query Language. 38 00:01:50,010 --> 00:01:52,981 Et il est un langage de programmation, mais il est une programmation assez limitée 39 00:01:52,981 --> 00:01:53,480 la langue. 40 00:01:53,480 --> 00:01:56,407 Il est pas tout à fait comme les autres que nous avons travaillé avec. 41 00:01:56,407 --> 00:01:58,240 Mais le but de cette langage de programmation 42 00:01:58,240 --> 00:02:01,570 est d'interroger une base de données, pour demander des informations d'une base de données, 43 00:02:01,570 --> 00:02:04,480 trouver des informations dans un base de données, et ainsi de suite. 44 00:02:04,480 --> 00:02:08,449 >> Nous avons également, dans CS50-- et il ya une très plate-forme commune, il est appelé MySQL. 45 00:02:08,449 --> 00:02:10,600 Voilà ce que nous utilisons dans le cours. 46 00:02:10,600 --> 00:02:12,880 Il est une source ouverte plate-forme qui établit 47 00:02:12,880 --> 00:02:16,732 un database-- dite relationnelle une base de données, de manière efficace. 48 00:02:16,732 --> 00:02:18,440 On n'a pas besoin d'obtenir dans trop de détails 49 00:02:18,440 --> 00:02:20,930 sur ce qui est une base de données relationnelle. 50 00:02:20,930 --> 00:02:24,650 Mais le langage SQL est très habiles à travailler 51 00:02:24,650 --> 00:02:29,760 avec MySQL et d'autres semblables styles de bases de données relationnelles. 52 00:02:29,760 --> 00:02:34,010 >> Et de nombreuses installations de MySQL venir avec quelque chose 53 00:02:34,010 --> 00:02:37,760 appelé phpMyAdmin, qui est une interface utilisateur graphique 54 00:02:37,760 --> 00:02:40,970 interface-- un GUI-- que rend un peu plus 55 00:02:40,970 --> 00:02:44,410 convivial pour exécuter utilisateur requêtes de base de données, 56 00:02:44,410 --> 00:02:48,980 parce que les bases de données ne sont pas seulement utilisés par les programmeurs avancés, non? 57 00:02:48,980 --> 00:02:51,510 Parfois il ya des ces petites entreprises, 58 00:02:51,510 --> 00:02:53,900 et ils ne peuvent pas se permettre de engager une équipe de programmeurs, 59 00:02:53,900 --> 00:02:56,700 mais ils ont encore besoin de stocker dans une base de données d'informations. 60 00:02:56,700 --> 00:02:59,300 >> Quelque chose comme phpMyAdmin il est très facile pour quelqu'un 61 00:02:59,300 --> 00:03:03,630 qui n'a jamais programmé avant de ramasser et de se familiariser avec la façon dont 62 00:03:03,630 --> 00:03:07,710 de travailler avec une base de données. 63 00:03:07,710 --> 00:03:11,800 Le problème est, phpMyAdmin, tandis que il est un outil fantastique pour l'apprentissage 64 00:03:11,800 --> 00:03:14,850 à propos des bases de données, il est manuel. 65 00:03:14,850 --> 00:03:18,050 Vous allez avoir à se connecter à et exécuter les commandes et de type 66 00:03:18,050 --> 00:03:19,910 les choses en main. 67 00:03:19,910 --> 00:03:23,160 >> Et comme nous le savons de notre par exemple sur la programmation web PHP, 68 00:03:23,160 --> 00:03:26,550 ayant à faire manuellement choses sur notre site Web, 69 00:03:26,550 --> 00:03:30,970 si nous voulons dynamique, un réactif actif site, peut-être pas la meilleure approche. 70 00:03:30,970 --> 00:03:33,980 Nous aimerions trouver un moyen de peut-être automatiser ce en quelque sorte. 71 00:03:33,980 --> 00:03:37,864 Et SQL va nous permettre de faire cela. 72 00:03:37,864 --> 00:03:39,780 Alors, quand nous allons commencer à travailler avec SQL, 73 00:03:39,780 --> 00:03:41,220 nous avons d'abord besoin d'avoir un base de données de travailler avec. 74 00:03:41,220 --> 00:03:42,510 Création d'une base de données est quelque chose que vous avez probablement 75 00:03:42,510 --> 00:03:45,350 fera dans phpMyAdmin, parce vous aurez seulement besoin de le faire une fois, 76 00:03:45,350 --> 00:03:49,690 et la syntaxe pour le faire est beaucoup plus simple. 77 00:03:49,690 --> 00:03:51,940 Il est beaucoup plus facile de le faire dans une interface utilisateur graphique 78 00:03:51,940 --> 00:03:53,520 que de taper it out comme une commande. 79 00:03:53,520 --> 00:03:55,186 La commande peut être un peu encombrant. 80 00:03:55,186 --> 00:03:58,889 De même, la création d'une table peut obtenir un peu encombrant ainsi. 81 00:03:58,889 --> 00:04:01,930 Et ainsi de choses comme la création d'une base de données et la création d'une table, qui vous êtes 82 00:04:01,930 --> 00:04:06,270 probablement que va faire once-- une fois par table, une fois par database-- 83 00:04:06,270 --> 00:04:09,040 il est OK pour faire en une interface graphique. 84 00:04:09,040 --> 00:04:11,570 Dans le processus de création d'une table, vous aurez 85 00:04:11,570 --> 00:04:14,840 ont également spécifier l'ensemble des colonnes qui seront dans ce tableau. 86 00:04:14,840 --> 00:04:18,149 Quel genre d'information le faire vous souhaitez stocker dans le tableau? 87 00:04:18,149 --> 00:04:24,520 Peut-être que le nom et la date de naissance d'un utilisateur, mot de passe, numéro d'ID utilisateur, et peut-être 88 00:04:24,520 --> 00:04:26,170 ville et l'État, non? 89 00:04:26,170 --> 00:04:30,080 >> Et pour chaque fois que nous voulons ajouter un utilisateur à la base de données, nous voulons obtenir tous les six 90 00:04:30,080 --> 00:04:31,890 de ces éléments d'information. 91 00:04:31,890 --> 00:04:34,840 Et nous le faisons en ajoutant lignes à la table. 92 00:04:34,840 --> 00:04:37,800 Donc nous créons d'abord une base de données, puis nous créons une table. 93 00:04:37,800 --> 00:04:40,100 Dans le cadre de la création une table, on nous demande 94 00:04:40,100 --> 00:04:44,280 pour indiquer que chaque colonne nous aimerions dans ce tableau. 95 00:04:44,280 --> 00:04:47,247 Et puis comme nous commençons à ajouter informations à la base de données 96 00:04:47,247 --> 00:04:49,580 et d'interroger la base de données plus generally-- pas seulement l'ajout, 97 00:04:49,580 --> 00:04:51,610 mais tout le reste nous do-- nous serons face 98 00:04:51,610 --> 00:04:58,870 avec les lignes du tableau, ce qui est une les informations de l'utilisateur à partir de l'ensemble. 99 00:04:58,870 --> 00:05:03,210 >> Ainsi, chaque colonne SQL est capable de contenant des données d'un type de données particulier. 100 00:05:03,210 --> 00:05:06,560 Nous avons donc éliminé ce genre de idée des types de données en PHP, 101 00:05:06,560 --> 00:05:08,747 mais ils sont de retour ici dans SQL. 102 00:05:08,747 --> 00:05:10,080 Et il ya beaucoup de types de données. 103 00:05:10,080 --> 00:05:13,420 Voilà seulement 20 d'entre eux, mais il est même tous ne. 104 00:05:13,420 --> 00:05:16,240 Donc, nous avons des idées comme INTs-- Integers-- nous savons probablement 105 00:05:16,240 --> 00:05:17,760 que cette colonne peut contenir des nombres entiers. 106 00:05:17,760 --> 00:05:21,077 Et il ya des variations thereon-- SMALLINT, TINYINT, MEDIUMINT, BIGINT. 107 00:05:21,077 --> 00:05:22,660 Peut-être que nous ne devons pas toujours quatre piqûres. 108 00:05:22,660 --> 00:05:26,800 Peut-être que nous avons besoin de huit octets, et nous peuvent utiliser ces variations sur les entiers 109 00:05:26,800 --> 00:05:28,510 à être un peu plus efficace de l'espace. 110 00:05:28,510 --> 00:05:31,899 Nous pouvons faire des nombres décimaux, nous peut faire nombres à virgule flottante. 111 00:05:31,899 --> 00:05:32,940 Ceux-ci sont assez similaires. 112 00:05:32,940 --> 00:05:34,773 Il ya quelques différences, Et si vous voulez 113 00:05:34,773 --> 00:05:37,330 voulez consulter le Trier SQL du guide, vous 114 00:05:37,330 --> 00:05:40,670 peut voir ce que la légère différences entre eux. 115 00:05:40,670 --> 00:05:43,250 >> Peut-être que nous voulons stocker informations sur la date et l'heure. 116 00:05:43,250 --> 00:05:47,047 Peut-être que nous allons garder la trace de lorsque l'utilisateur a rejoint notre site Web, 117 00:05:47,047 --> 00:05:48,880 et alors peut-être que nous voulons d'avoir une colonne qui est 118 00:05:48,880 --> 00:05:52,820 un temps de date ou un horodatage indique lorsque l'utilisateur fait 119 00:05:52,820 --> 00:05:54,130 signé. 120 00:05:54,130 --> 00:05:56,132 Nous pouvons faire des géométries et des lignes brisées. 121 00:05:56,132 --> 00:05:57,340 Ceci est en fait assez cool. 122 00:05:57,340 --> 00:06:01,410 Nous pourrions tracer un en utilisant la zone géographique 123 00:06:01,410 --> 00:06:05,110 Coordonnées SIG de tracer une zone. 124 00:06:05,110 --> 00:06:08,580 Alors peut effectivement stocker ce genre de l'information dans une colonne de SQL. 125 00:06:08,580 --> 00:06:11,390 >> TEXTE est seulement blobs géants de texte, peut-être. 126 00:06:11,390 --> 00:06:12,840 ENUM sont assez intéressant. 127 00:06:12,840 --> 00:06:16,080 Ils existent réellement en C. Nous ne faisons pas parler d'eux parce qu'ils ne sont pas 128 00:06:16,080 --> 00:06:19,110 terriblement couramment utilisé, au moins CS50. 129 00:06:19,110 --> 00:06:22,680 Mais il est un type de données énuméré, qui est capable de maintenir des valeurs limitées. 130 00:06:22,680 --> 00:06:25,940 >> Un très bon exemple serait ici pour créer une énumération où les sept 131 00:06:25,940 --> 00:06:29,394 valeurs possibles sont dimanche, lundi, Mardi, mercredi, jeudi, vendredi, 132 00:06:29,394 --> 00:06:30,060 Samedi, à droite? 133 00:06:30,060 --> 00:06:33,311 Ce type de données Jour de Ne existe pas semaine, 134 00:06:33,311 --> 00:06:35,310 mais nous pourrions créer un type de données énuméré tels 135 00:06:35,310 --> 00:06:39,400 que cette colonne ne peut jamais tenir une de ces sept valeurs possibles. 136 00:06:39,400 --> 00:06:44,300 Nous avons énuméré tous des valeurs possibles. 137 00:06:44,300 --> 00:06:47,630 >> Ensuite, nous avons CHAR et VARCHAR, et je l'ai colorer ces verte 138 00:06:47,630 --> 00:06:49,505 parce que nous sommes en fait va prendre une seconde 139 00:06:49,505 --> 00:06:51,950 pour parler de la différence entre ces deux choses. 140 00:06:51,950 --> 00:06:55,780 Donc, CHAR, contrairement C où CHAR était un caractère unique, 141 00:06:55,780 --> 00:07:00,730 dans SQL CHAR se réfère à une chaîne de longueur fixe. 142 00:07:00,730 --> 00:07:02,620 Et lorsque nous créons cette colonne, nous avons effectivement 143 00:07:02,620 --> 00:07:05,070 peut spécifier la longueur de la chaîne. 144 00:07:05,070 --> 00:07:08,080 >> Donc, dans cet exemple, nous pourrions dire CHAR (10). 145 00:07:08,080 --> 00:07:11,190 Cela signifie que chaque élément de cette colonne 146 00:07:11,190 --> 00:07:13,910 sera composé de 10 octets d'informations. 147 00:07:13,910 --> 00:07:15,770 Ni plus ni moins. 148 00:07:15,770 --> 00:07:21,780 Donc, si nous essayons de mettre dans un 15 bit ou un élément de 15 caractères 149 00:07:21,780 --> 00:07:25,340 ou de la valeur dans cette colonne, nous ne recevons le premier 10. 150 00:07:25,340 --> 00:07:27,290 Si nous mettons dans les deux caractère valeur longue, 151 00:07:27,290 --> 00:07:30,700 nous allons avoir deux caractères, puis huit piqûres NULL. 152 00:07:30,700 --> 00:07:34,990 Nous ne serons jamais plus efficace que cela. 153 00:07:34,990 --> 00:07:37,727 >> Un VARCHAR est un peu comme notre notion d'une chaîne 154 00:07:37,727 --> 00:07:39,560 que nous sommes familiers à partir de C ou PHP. 155 00:07:39,560 --> 00:07:40,830 Il est une chaîne de longueur variable. 156 00:07:40,830 --> 00:07:42,560 Et lorsque vous créez cette colonne, vous venez 157 00:07:42,560 --> 00:07:44,860 spécifier les longueurs maximales possibles. 158 00:07:44,860 --> 00:07:49,065 Alors peut-être 99, ou communément 255. 159 00:07:49,065 --> 00:07:50,440 Ce serait la longueur maximale. 160 00:07:50,440 --> 00:07:52,890 Et si nous étions stockons 15 chaîne de caractères, 161 00:07:52,890 --> 00:07:56,157 nous devrions utiliser 15 octets, peut-être 16 octets pour le terminateur null. 162 00:07:56,157 --> 00:07:57,990 Si nous étions stocker une trois chaîne de caractères, 163 00:07:57,990 --> 00:08:01,120 nous devrions utiliser trois ou quatre octets. 164 00:08:01,120 --> 00:08:03,050 Mais nous ne serions pas utiliser la pleine 99. 165 00:08:03,050 --> 00:08:05,190 >> Alors pourquoi devrions-nous avoir les deux? 166 00:08:05,190 --> 00:08:08,210 Eh bien, si nous avons besoin de comprendre comment quelque chose de long est une VARCHAR, 167 00:08:08,210 --> 00:08:10,680 nous devons genre d'itérer à travers elle juste comme nous avons fait dans C 168 00:08:10,680 --> 00:08:12,230 et de déterminer où il arrête. 169 00:08:12,230 --> 00:08:15,920 Alors que si nous savons que tout dans cette colonne est de 10 octets, peut-être 170 00:08:15,920 --> 00:08:19,220 nous savons que l'information, nous pouvons sauter 10 octets, 10 octets, 10 octets, 10 octets, 171 00:08:19,220 --> 00:08:21,790 et toujours trouver le début de la chaîne. 172 00:08:21,790 --> 00:08:25,210 >> Nous pouvons donc avoir une certaine espace perdu avec un CHAR, 173 00:08:25,210 --> 00:08:28,510 mais peut-être il ya un commerce hors d'avoir une meilleure vitesse 174 00:08:28,510 --> 00:08:30,160 à naviguer dans la base de données. 175 00:08:30,160 --> 00:08:32,330 Mais peut-être nous voulons que le flexibilité d'un VARCHAR 176 00:08:32,330 --> 00:08:36,710 au lieu de having-- Si notre CHAR était de 255, mais la plupart de nos utilisateurs 177 00:08:36,710 --> 00:08:40,537 ont été seulement entrer trois ou quatre octets la valeur de l'information, trois ou quatre 178 00:08:40,537 --> 00:08:41,870 caractères d'une valeur de l'information. 179 00:08:41,870 --> 00:08:44,324 >> Mais certains utilisateurs ont utilisé l'ensemble 255, peut-être 180 00:08:44,324 --> 00:08:45,990 VARCHAR serait plus approprié il. 181 00:08:45,990 --> 00:08:49,840 Il est une sorte de compromis, et généralement à des fins de CS50, 182 00:08:49,840 --> 00:08:54,107 vous ne devez pas trop se soucier de si vous utilisez un CHAR ou VARCHAR. 183 00:08:54,107 --> 00:08:57,190 Mais dans le monde réel, ces choses ne d'importance parce que l'ensemble de ces colonnes 184 00:08:57,190 --> 00:08:59,300 prendre de l'espace physique réel. 185 00:08:59,300 --> 00:09:04,150 Et l'espace physique, dans le monde réel, arrive à une prime. 186 00:09:04,150 --> 00:09:06,800 >> Donc, une autre considération quand vous construisez une table 187 00:09:06,800 --> 00:09:09,840 est de choisir une colonne d'être ce qu'on appelle une clé primaire. 188 00:09:09,840 --> 00:09:14,350 Et une clé primaire est une colonne où chaque valeur est unique. 189 00:09:14,350 --> 00:09:19,980 Et cela signifie que vous pouvez facilement choisir une seule rangée juste en regardant 190 00:09:19,980 --> 00:09:22,450 à la clé primaire de cette ligne. 191 00:09:22,450 --> 00:09:24,580 Ainsi, par exemple, vous généralement, avec les utilisateurs, 192 00:09:24,580 --> 00:09:27,210 ne veulent pas deux utilisateurs qui avoir le même numéro d'identification de l'utilisateur. 193 00:09:27,210 --> 00:09:28,960 Et peut-être que vous avez beaucoup d'informations, 194 00:09:28,960 --> 00:09:30,793 et peut-être deux utilisateurs peuvent ont la même name-- 195 00:09:30,793 --> 00:09:32,650 vous avez John Smith et John Smith. 196 00:09:32,650 --> 00:09:34,520 Cela ne veut pas nécessairement un problème, parce qu'il ya plusieurs personnes 197 00:09:34,520 --> 00:09:35,830 dans le monde du nom de John Smith. 198 00:09:35,830 --> 00:09:40,766 Mais nous avons seulement un numéro d'utilisateur 10, une référence utilisateur 11, 12, 13, ID. 199 00:09:40,766 --> 00:09:42,640 Nous ne disposons pas des deux utilisateurs avec le même nombre, 200 00:09:42,640 --> 00:09:46,010 et alors peut-être le nombre d'ID utilisateur serait une bonne clé primaire. 201 00:09:46,010 --> 00:09:48,610 >> Nous ne disposons pas de duplication, et nous pouvons maintenant unique 202 00:09:48,610 --> 00:09:52,619 identifier chaque rangée juste en regardant cette colonne. 203 00:09:52,619 --> 00:09:55,410 Choisir les clés primaires peuvent réellement faire des opérations de table ultérieurs 204 00:09:55,410 --> 00:09:59,710 beaucoup plus facile parce que vous pouvez exploiter le fait que certaines lignes seront 205 00:09:59,710 --> 00:10:02,720 être unique, ou d'une certaine colonne de votre base de données ou de la table 206 00:10:02,720 --> 00:10:06,030 sera unique pour ramasser des lignes particulières sur. 207 00:10:06,030 --> 00:10:08,790 >> Vous pouvez également avoir un joint primaire clé, que vous pouvez trouver l'occasion 208 00:10:08,790 --> 00:10:11,720 à utiliser, qui est juste un combinaison de deux colonnes qui 209 00:10:11,720 --> 00:10:13,280 est garanti d'être unique. 210 00:10:13,280 --> 00:10:16,410 Alors peut-être vous en avez un colonne qui est A et des B, 211 00:10:16,410 --> 00:10:19,290 une colonne qui est une, deux, et trois, mais vous aurez seulement jamais 212 00:10:19,290 --> 00:10:23,660 avoir un seul A1, un seul A2, et ainsi de suite et ainsi de suite. 213 00:10:23,660 --> 00:10:28,980 Mais vous pourriez avoir un B2, un C2, ou un A1, A2, A3, A4. 214 00:10:28,980 --> 00:10:32,840 Donc, vous pourriez avoir de multiples Comme, multiple Hôtes, les multiples, plusieurs groupes de deux, 215 00:10:32,840 --> 00:10:38,567 mais vous ne pouvez jamais avoir une unique A1, B2, C3, et ainsi de suite. 216 00:10:38,567 --> 00:10:40,400 Donc, comme je le disais, SQL est un langage de programmation, 217 00:10:40,400 --> 00:10:42,024 mais il a un vocabulaire assez limitée. 218 00:10:42,024 --> 00:10:44,880 Il est pas tout à fait aussi vaste que C et PHP et d'autres langues 219 00:10:44,880 --> 00:10:46,350 que l'on parle dans le cours. 220 00:10:46,350 --> 00:10:49,960 Il est un plus verbeux langue que ce que nous sommes 221 00:10:49,960 --> 00:10:52,789 allons parler dans ce vidéo, parce que dans cette vidéo 222 00:10:52,789 --> 00:10:54,830 nous allons parler quatre opérations que nous 223 00:10:54,830 --> 00:10:55,720 peut effectuer sur une table. 224 00:10:55,720 --> 00:10:56,761 >> Il n'y a plus que cela. 225 00:10:56,761 --> 00:10:58,730 Nous pouvons faire plus que cela, mais pour nos besoins, 226 00:10:58,730 --> 00:11:02,250 nous sommes généralement allez utiliser seulement quatre insert operations--, 227 00:11:02,250 --> 00:11:05,360 sélectionner, mettre à jour et supprimer. 228 00:11:05,360 --> 00:11:08,750 Et vous pouvez probablement deviner intuitivement ce que tous les quatre de ces choses ne. 229 00:11:08,750 --> 00:11:12,520 Mais nous irons dans un peu des détails sur chacun d'eux. 230 00:11:12,520 --> 00:11:15,780 >> Ainsi, aux fins du présent vidéo, supposons 231 00:11:15,780 --> 00:11:18,870 nous avons les deux suivantes des tables dans une base de données unique. 232 00:11:18,870 --> 00:11:23,460 Nous avons une table appelée utilisateur qui a quatre columns-- numéro d'identification, nom d'utilisateur, 233 00:11:23,460 --> 00:11:25,350 mot de passe, et le nom complet. 234 00:11:25,350 --> 00:11:27,430 Et nous avons une seconde table dans la même base de données 235 00:11:27,430 --> 00:11:32,129 appelé mamans qui stocke seulement de l'information au sujet d'un nom d'utilisateur et d'une mère. 236 00:11:32,129 --> 00:11:33,920 Donc, pour l'ensemble des exemples Dans cette vidéo, nous allons 237 00:11:33,920 --> 00:11:37,945 être en utilisant cette base de données et mises à jour ultérieures. 238 00:11:37,945 --> 00:11:40,070 Donc, disons que nous voulons ajouter des informations à une table. 239 00:11:40,070 --> 00:11:44,460 Voilà ce que l'opération d'insertion fait. 240 00:11:44,460 --> 00:11:46,550 Pour expliquer toutes ces commandes, je vais 241 00:11:46,550 --> 00:11:48,860 pour vous donner un squelette générale à utiliser. 242 00:11:48,860 --> 00:11:51,661 Parce que, fondamentalement, les requêtes vont se ressemblent beaucoup, 243 00:11:51,661 --> 00:11:54,660 nous allons tout simplement en train de changer légèrement différents éléments d'information 244 00:11:54,660 --> 00:11:56,750 faire des choses différentes avec la table. 245 00:11:56,750 --> 00:11:59,200 >> Donc, pour INSERT, le squelette ressemble un peu à cela. 246 00:11:59,200 --> 00:12:02,230 Nous voulons insérer dans une table particulière. 247 00:12:02,230 --> 00:12:05,290 Ensuite, nous avons une parenthèse ouverte et une liste de colonnes 248 00:12:05,290 --> 00:12:08,070 que nous voulons mettre en valeur. 249 00:12:08,070 --> 00:12:10,974 Fermer la parenthèse, le les valeurs suivantes, puis 250 00:12:10,974 --> 00:12:13,390 encore une fois, nous listons les valeurs nous voulons mettre dans le tableau. 251 00:12:13,390 --> 00:12:15,950 >> Ainsi, un exemple de ce serait la suivante. 252 00:12:15,950 --> 00:12:19,170 Je veux insérer dans la table utilisateurs de l'columns-- suivante 253 00:12:19,170 --> 00:12:21,010 nom d'utilisateur, mot de passe et nom complet. 254 00:12:21,010 --> 00:12:25,282 Donc, une nouvelle ligne où je suis en train de dans ces trois colonnes et nous sommes 255 00:12:25,282 --> 00:12:30,030 va mettre dans les valeurs Newman, USMAIL, et Newman. 256 00:12:30,030 --> 00:12:32,730 Donc dans ce cas, je suis mettre le Newman minuscules 257 00:12:32,730 --> 00:12:38,710 dans la colonne de nom d'utilisateur, le mot de passe USMAIL, et le nom complet du capital N 258 00:12:38,710 --> 00:12:41,940 Newman dans la colonne de nom complet. 259 00:12:41,940 --> 00:12:44,240 >> Alors, voici ce que la base de données ressemblait avant. 260 00:12:44,240 --> 00:12:48,250 Voici ce que la table des utilisateurs sur le top ressemblait avant que nous avons fait cela. 261 00:12:48,250 --> 00:12:50,760 Après nous exécutons ce requête, nous obtenir cela. 262 00:12:50,760 --> 00:12:54,790 Nous avons ajouté une nouvelle ligne à la table. 263 00:12:54,790 --> 00:12:56,810 Mais remarquez une chose que je ne ai pas précisé, 264 00:12:56,810 --> 00:12:59,880 mais de toute façon je dois une valeur pour qui est-ce 12 ici. 265 00:12:59,880 --> 00:13:02,820 Je ne dis pas que je voulais mettre le numéro d'identification là. 266 00:13:02,820 --> 00:13:04,900 Je voulais mettre le nom d'utilisateur, mot de passe, nom complet. 267 00:13:04,900 --> 00:13:06,440 Et je l'ai fait, ça va. 268 00:13:06,440 --> 00:13:07,760 >> Mais je suis également présent 12. 269 00:13:07,760 --> 00:13:09,490 Pourquoi ai-je reçu ce 12? 270 00:13:09,490 --> 00:13:12,904 Eh bien, il se trouve que lorsque vous définissez 271 00:13:12,904 --> 00:13:15,570 une colonne qui va être votre clé primaire, qui est généralement, 272 00:13:15,570 --> 00:13:16,510 comme je le disais, un numéro d'identification. 273 00:13:16,510 --> 00:13:18,718 Il est pas toujours nécessairement va être un numéro d'identification, 274 00:13:18,718 --> 00:13:22,380 mais il est généralement une bonne idée de être une sorte de valeur entière. 275 00:13:22,380 --> 00:13:25,950 Vous avez une option dans phpMyAdmin lorsque vous créez votre base de données 276 00:13:25,950 --> 00:13:31,130 ou votre table pour définir ce que colonne comme incrémentation automatique. 277 00:13:31,130 --> 00:13:34,520 >> Qui est vraiment une bonne idée quand vous travaillez avec une clé primaire, 278 00:13:34,520 --> 00:13:39,330 parce que vous voulez que chaque valeur en ce que la colonne d'être unique. 279 00:13:39,330 --> 00:13:43,310 Et si vous oubliez de préciser pour plus d'une personne, 280 00:13:43,310 --> 00:13:46,240 vous avez maintenant une situation où cette colonne est plus unique. 281 00:13:46,240 --> 00:13:50,200 Vous avez deux flans, de sorte que vous ne pouvez plus identifier un column-- 282 00:13:50,200 --> 00:13:54,150 ou vous ne pouvez plus unique identifier une ligne sur la base de cette colonne. 283 00:13:54,150 --> 00:13:57,010 Il a perdu la totalité de son valeur en tant que clé primaire. 284 00:13:57,010 --> 00:14:02,010 >> Et apparemment ce que je l'ai fait ici est configuré l'ID utilisateur 285 00:14:02,010 --> 00:14:07,790 colonne à incrémentation automatique de sorte que chaque fois que je ajouter des informations à la table, 286 00:14:07,790 --> 00:14:12,220 il donnera automatiquement moi une valeur de la clé primaire. 287 00:14:12,220 --> 00:14:15,570 Donc, je ne peux jamais oublier de le faire parce que la base de données va le faire pour moi. 288 00:14:15,570 --> 00:14:16,587 Voilà donc plutôt agréable. 289 00:14:16,587 --> 00:14:18,670 Et voilà pourquoi nous obtenons 12 là-dedans, parce que je l'ai 290 00:14:18,670 --> 00:14:21,772 définir cette colonne jusqu'à incrémentation automatique. 291 00:14:21,772 --> 00:14:23,730 Si je ajouté quelqu'un d'autre ce serait 13, si je ajouté 292 00:14:23,730 --> 00:14:27,890 quelqu'un d'autre que ce serait 14, et ainsi de suite. 293 00:14:27,890 --> 00:14:30,190 >> Alors disons simplement faire encore une insertion. 294 00:14:30,190 --> 00:14:34,530 Nous allons insérer dans la table des mamans, en notamment, le nom d'utilisateur et de mère 295 00:14:34,530 --> 00:14:37,390 colonnes, les valeurs Kramer et Babs Kramer. 296 00:14:37,390 --> 00:14:39,140 Et donc nous avons eu ça avant. 297 00:14:39,140 --> 00:14:41,800 Après que nous exécutons Requête SQL, nous avons cela. 298 00:14:41,800 --> 00:14:47,290 Nous avons ajouté Kramer et Babs Kramer à la table des mamans. 299 00:14:47,290 --> 00:14:48,350 >> Voilà donc l'insertion. 300 00:14:48,350 --> 00:14:51,850 SELECT est ce que nous utilisons pour extraire informations de la table. 301 00:14:51,850 --> 00:14:54,390 Voilà donc comment nous obtenons des informations sur la base de données. 302 00:14:54,390 --> 00:14:59,589 Et si les commandes SELECT vont être très fréquemment utilisé dans la programmation. 303 00:14:59,589 --> 00:15:02,130 Le général l'framework-- squelette générale ressemble à ceci. 304 00:15:02,130 --> 00:15:06,550 Sélectionnez un ensemble de colonnes de une table, puis éventuellement 305 00:15:06,550 --> 00:15:11,090 vous pouvez spécifier un ou condition-- ce que nous appelons généralement un prédicat, 306 00:15:11,090 --> 00:15:13,010 est habituellement le terme que nous utilisons dans SQL. 307 00:15:13,010 --> 00:15:16,490 >> Mais il est fondamentalement ce que des lignes particulières que vous voulez obtenir. 308 00:15:16,490 --> 00:15:19,100 Si vous voulez, au lieu d'obtenir tout, le réduire, 309 00:15:19,100 --> 00:15:20,060 ceci est où vous voulez le faire. 310 00:15:20,060 --> 00:15:22,777 Et puis éventuellement, vous pouvez aussi commander par une colonne particulière. 311 00:15:22,777 --> 00:15:25,860 Alors peut-être vous voulez avoir les choses triées alphabétique basé sur une colonne 312 00:15:25,860 --> 00:15:27,540 ou par ordre alphabétique basé sur un autre. 313 00:15:27,540 --> 00:15:30,610 >> Encore une fois, WHERE et ORDER BY sont facultatifs. 314 00:15:30,610 --> 00:15:32,681 Mais ils seront probablement useful-- particulier 315 00:15:32,681 --> 00:15:34,680 Où sera utile pour affiner afin de ne pas 316 00:15:34,680 --> 00:15:37,460 obtenir toute votre base de données et avoir à traiter, vous obtenez juste 317 00:15:37,460 --> 00:15:39,300 les morceaux de ce que vous vous souciez. 318 00:15:39,300 --> 00:15:44,932 Ainsi, par exemple, je pourrais vouloir sélectionner Numéro d'identification et nom complet des utilisateurs. 319 00:15:44,932 --> 00:15:46,140 Alors, que pourrait-il ressembler? 320 00:15:46,140 --> 00:15:48,270 Alors, voici ma table des utilisateurs. 321 00:15:48,270 --> 00:15:51,080 Je veux choisir IDNUM fullname et des utilisateurs. 322 00:15:51,080 --> 00:15:52,300 Que vais-je obtenir? 323 00:15:52,300 --> 00:15:53,580 Je vais obtenir ce. 324 00:15:53,580 --> 00:15:56,930 Je ne suis pas le réduire, donc je suis obtenir le numéro d'identification pour chaque ligne 325 00:15:56,930 --> 00:16:00,850 et je me fais le plein nommer de chaque ligne. 326 00:16:00,850 --> 00:16:02,210 >> D'ACCORD. 327 00:16:02,210 --> 00:16:05,640 Que faire si je veux choisir un mot de passe des utilisateurs WHERE-- maintenant 328 00:16:05,640 --> 00:16:10,370 Je ajoutant une condition, un predicate-- où IDNUM est inférieur à 12. 329 00:16:10,370 --> 00:16:13,660 Alors, voici à nouveau ma base de données, ma table des utilisateurs du haut. 330 00:16:13,660 --> 00:16:17,030 Que vais-je obtenir si je veux sélectionnez cette information, le mot de passe, 331 00:16:17,030 --> 00:16:21,550 où ID utilisateur ou IDNUM est inférieure à 12? 332 00:16:21,550 --> 00:16:24,910 Je vais obtenir ce informations arrière, à droite? 333 00:16:24,910 --> 00:16:29,170 Il arrive que IDNUM est de 10, moins de 12, le numéro d'identification 11 à moins de 12. 334 00:16:29,170 --> 00:16:32,160 Je reçois le mot de passe pour ces lignes. 335 00:16:32,160 --> 00:16:33,914 Voilà ce que je demandais. 336 00:16:33,914 --> 00:16:34,580 Et ça? 337 00:16:34,580 --> 00:16:39,170 Que faire si je veux choisir étoiles de la Table mamans où username est égal Jerry? 338 00:16:39,170 --> 00:16:43,780 OK, sélectionnez étoiles est la spéciale sorte de carte sauvage dite 339 00:16:43,780 --> 00:16:45,670 que nous utilisons pour obtenir tout. 340 00:16:45,670 --> 00:16:48,620 Alors qu'ils disent sélectionnez username mère par des virgules, qui 341 00:16:48,620 --> 00:16:51,060 qui est arrivé à être le seul deux colonnes de ce tableau, 342 00:16:51,060 --> 00:16:53,260 Je peux juste sélectionner étoiles et d'obtenir tout 343 00:16:53,260 --> 00:16:55,030 où le nom d'utilisateur est égal à Jerry. 344 00:16:55,030 --> 00:16:59,380 Et voilà ce que je voudrais obtenir si je faisais cette requête particulière. 345 00:16:59,380 --> 00:17:01,810 >> Maintenant, les bases de données sont grands parce qu'ils permettent 346 00:17:01,810 --> 00:17:06,074 nous pour organiser l'information peut-être un peu plus efficace que nous 347 00:17:06,074 --> 00:17:06,740 pourraient autrement. 348 00:17:06,740 --> 00:17:10,240 Nous ne stockons pas nécessairement chaque morceau d'information pertinente 349 00:17:10,240 --> 00:17:12,230 sur un utilisateur dans le même tableau. 350 00:17:12,230 --> 00:17:13,730 Nous avions deux tables là. 351 00:17:13,730 --> 00:17:15,734 >> Nous avons besoin de stocker le nom de la mère de tout le monde, 352 00:17:15,734 --> 00:17:18,900 et peut-être que nous ne disposons pas de la sécurité sociale nombre, nous avons leur date de naissance. 353 00:17:18,900 --> 00:17:21,819 Cela n'a pas toujours besoin à être dans le même tableau. 354 00:17:21,819 --> 00:17:25,339 Tant que nous pouvons définir les relations entre l'tables-- 355 00:17:25,339 --> 00:17:28,440 et voilà où cela relationnelle terme de base de données de type vient 356 00:17:28,440 --> 00:17:32,130 dans play-- aussi longtemps que nous pouvons définir relations entre les tables, 357 00:17:32,130 --> 00:17:35,545 nous pouvons sorte de compartimenter ou des choses abstraites d'une façon, 358 00:17:35,545 --> 00:17:37,670 où nous avons seulement le informations vraiment important 359 00:17:37,670 --> 00:17:39,270 nous nous soucions de la table de l'utilisateur. 360 00:17:39,270 --> 00:17:43,220 Et puis, nous avons des informations auxiliaires ou des informations supplémentaires dans d'autres tableaux 361 00:17:43,220 --> 00:17:48,260 que nous pouvons nous connecter revenir à la principale table des utilisateurs d'une manière particulière. 362 00:17:48,260 --> 00:17:52,200 >> Nous avons donc ici ces deux tableaux, mais il ya une relation entre eux, 363 00:17:52,200 --> 00:17:53,010 droit? 364 00:17:53,010 --> 00:17:55,070 Il semble que le nom d'utilisateur pourrait être quelque chose 365 00:17:55,070 --> 00:17:59,909 qui existe de commun entre ces deux tables différentes. 366 00:17:59,909 --> 00:18:01,700 Alors que faire si nous avons maintenant une situation où nous 367 00:18:01,700 --> 00:18:06,046 vouloir obtenir le nom complet d'un utilisateur à partir de la table de l'utilisateur, et de leur mère 368 00:18:06,046 --> 00:18:07,170 nom de la table de la mère? 369 00:18:07,170 --> 00:18:10,960 Nous ne disposons pas un moyen d'obtenir que tel qu'il est, non? 370 00:18:10,960 --> 00:18:17,790 Il n'y a pas une seule table qui contient à la fois le nom complet et le nom de la mère. 371 00:18:17,790 --> 00:18:20,400 Nous ne disposons pas de cette option de ce que nous avons vu jusqu'à présent. 372 00:18:20,400 --> 00:18:22,950 >> Et nous avons donc d'introduire l'idée d'une jointure. 373 00:18:22,950 --> 00:18:24,857 Et rejoint sont probablement le plus complex-- 374 00:18:24,857 --> 00:18:27,940 il est vraiment plus opération complexe nous allons parler dans la vidéo. 375 00:18:27,940 --> 00:18:30,040 Ils sont un peu compliqué, mais une fois que vous obtenez le coup de lui, 376 00:18:30,040 --> 00:18:31,248 ils sont en fait pas trop mal. 377 00:18:31,248 --> 00:18:32,820 Il est juste un cas particulier d'un SELECT. 378 00:18:32,820 --> 00:18:37,120 Nous allons sélectionner un ensemble de colonnes d'une table d'assemblage 379 00:18:37,120 --> 00:18:40,650 dans une seconde table sur certains prédicat. 380 00:18:40,650 --> 00:18:45,340 >> Dans ce cas, pensez-y comme this-- tableau ci est un cercle au-dessus ici, 381 00:18:45,340 --> 00:18:47,530 tableau à deux est un autre cercle ici. 382 00:18:47,530 --> 00:18:49,410 Et cette partie de prédicat au milieu, il est 383 00:18:49,410 --> 00:18:51,701 un peu comme si vous pensez à peu près aussi un diagramme de Venn, ce 384 00:18:51,701 --> 00:18:52,670 ont-ils en commun? 385 00:18:52,670 --> 00:18:55,960 Nous voulons lier ces deux tableaux sur la base de ce qu'ils ont en commun 386 00:18:55,960 --> 00:19:01,230 et de créer ce tableau hypothétique qui est la fusion des deux ensemble. 387 00:19:01,230 --> 00:19:03,480 Donc nous verrons cela dans un exemple et peut-être que va aider 388 00:19:03,480 --> 00:19:04,521 éclaircir un peu. 389 00:19:04,521 --> 00:19:09,260 Alors peut-être que vous voulez sélectionner user.fullname et moms.mother 390 00:19:09,260 --> 00:19:13,220 des utilisateurs d'assemblage dans le Table mamans dans chaque situation 391 00:19:13,220 --> 00:19:16,790 où la colonne de nom d'utilisateur est la même entre eux. 392 00:19:16,790 --> 00:19:19,240 Et cela est une nouvelle syntaxe ici, cet utilisateur. 393 00:19:19,240 --> 00:19:20,460 et les mamans .. 394 00:19:20,460 --> 00:19:26,697 Si je fais plusieurs tables ensemble, je peux spécifier une table. 395 00:19:26,697 --> 00:19:29,530 Je peux distinguer en particulier sur que, le tout en bas il. 396 00:19:29,530 --> 00:19:33,220 Je peux distinguer le nom d'utilisateur colonne de la table des utilisateurs 397 00:19:33,220 --> 00:19:36,010 de la colonne de nom de l'utilisateur Table mamans, qui sont non-ont 398 00:19:36,010 --> 00:19:38,070 si nous venons de dire le nom d'utilisateur est égal nom d'utilisateur, qui n'a pas vraiment 399 00:19:38,070 --> 00:19:38,970 veut rien dire. 400 00:19:38,970 --> 00:19:41,440 Nous voulons le faire là où ils correspondent. 401 00:19:41,440 --> 00:19:46,080 >> Donc, je peux spécifier la table et de la nom de colonne dans le cas d'une situation 402 00:19:46,080 --> 00:19:48,370 où il serait difficile de ce que je veux parler. 403 00:19:48,370 --> 00:19:51,880 Voilà donc tout ce que je fais là est que je suis disant cette colonne de ce tableau, 404 00:19:51,880 --> 00:19:54,020 et d'être très explicite. 405 00:19:54,020 --> 00:19:56,810 Encore une fois, je sélectionne le nom complet et le nom de la mère 406 00:19:56,810 --> 00:20:00,950 à partir de la table des utilisateurs reliés entre eux avec la table mamans dans chaque situation 407 00:20:00,950 --> 00:20:05,960 où ils partagent que column-- ils partagent ce nom d'utilisateur notion. 408 00:20:05,960 --> 00:20:08,580 >> Voici donc les tables que nous avions avant. 409 00:20:08,580 --> 00:20:12,210 Ceci est l'état de notre base de données tel qu'il existe en ce moment. 410 00:20:12,210 --> 00:20:16,390 Les informations que nous sommes extraction est-ce pour commencer. 411 00:20:16,390 --> 00:20:19,820 Ceci est la nouvelle table que nous allons pour créer les combinant ensemble. 412 00:20:19,820 --> 00:20:23,585 Et remarquons nous ne sommes pas en soulignant La rangée de Newman dans la table de l'utilisateur, 413 00:20:23,585 --> 00:20:25,960 et nous ne sommes pas en soulignant La rangée de Kramer dans le tableau des mamans 414 00:20:25,960 --> 00:20:31,250 parce que ni l'un existe dans sets-- fois dans les deux tables. 415 00:20:31,250 --> 00:20:36,260 >> La seule information qui est en commun entre elles est Jerry est dans les deux tableaux 416 00:20:36,260 --> 00:20:39,100 et gcostanza est dans les deux tables. 417 00:20:39,100 --> 00:20:42,620 Et donc quand nous faisons rejoindre le SQL, ce que nous get-- et nous faire réellement obtenir cela. 418 00:20:42,620 --> 00:20:44,830 Il est une sorte de variable temporaire. 419 00:20:44,830 --> 00:20:47,330 Il est comme un hypothétique fusion des deux tables. 420 00:20:47,330 --> 00:20:49,930 Nous recevons effectivement quelque chose comme ça, où 421 00:20:49,930 --> 00:20:54,730 nous avons fusionné les tables sur le informations qu'ils ont en commun. 422 00:20:54,730 --> 00:20:58,334 >> Donc remarquerez que users.username et la colonne de moms.username, 423 00:20:58,334 --> 00:20:59,250 il est exactement le même. 424 00:20:59,250 --> 00:21:01,820 Ce fut l'information était compatible des utilisateurs 425 00:21:01,820 --> 00:21:02,890 table et la table des mamans. 426 00:21:02,890 --> 00:21:04,270 Et donc nous les avons fusionnées. 427 00:21:04,270 --> 00:21:06,919 Nous jeté Kramer parce qu'il ne pas exister dans la table des utilisateurs, 428 00:21:06,919 --> 00:21:09,710 et nous jeté Newman, parce il n'a pas existé dans le tableau des mamans. 429 00:21:09,710 --> 00:21:16,450 Donc ceci est la fusion hypothétique en utilisant l'opération de jointure de SELECT. 430 00:21:16,450 --> 00:21:21,250 >> Et puis nous étions à la recherche pour le nom complet de l'utilisateur et la mère de l'utilisateur, 431 00:21:21,250 --> 00:21:24,999 et si cela est l'information qui nous aurions de la requête globale 432 00:21:24,999 --> 00:21:26,040 que nous avons fait avec SELECT. 433 00:21:26,040 --> 00:21:28,873 Donc, nous avons rejoint les tables ensemble et nous avons extrait ces deux colonnes, 434 00:21:28,873 --> 00:21:31,610 et est donc ce que nous allions trouver. 435 00:21:31,610 --> 00:21:33,370 Mais SQL rejoint un peu compliqué. 436 00:21:33,370 --> 00:21:36,770 Vous ne serez probablement pas les faire trop, mais juste avoir une idée du squelette 437 00:21:36,770 --> 00:21:41,992 que vous pourriez utiliser pour fusionner deux tables ensemble si vous avais besoin. 438 00:21:41,992 --> 00:21:43,700 Les deux derniers sont un peu plus simple je le promets. 439 00:21:43,700 --> 00:21:48,040 Donc, la mise à jour, nous pouvons utiliser UPDATE de modifier les informations dans un tableau. 440 00:21:48,040 --> 00:21:53,880 Le format général est mettre à jour certains table, définir certaines colonne à une valeur 441 00:21:53,880 --> 00:21:55,540 Où certains prédicat est satisfait. 442 00:21:55,540 --> 00:21:57,850 Ainsi, par exemple, nous pourrions vouloir de mettre à jour la table des utilisateurs 443 00:21:57,850 --> 00:22:04,400 et définir le mot de passe pour yada yada, où le numéro d'identification est 10. 444 00:22:04,400 --> 00:22:06,400 >> Donc dans ce cas, nous sommes mise à jour de la table des utilisateurs. 445 00:22:06,400 --> 00:22:08,275 Le numéro d'identification est de 10 pour que première rangée là, 446 00:22:08,275 --> 00:22:10,690 et nous voulons mettre à jour le mot de passe pour patata. 447 00:22:10,690 --> 00:22:12,170 Et voilà ce qui se passerait. 448 00:22:12,170 --> 00:22:13,628 Il est assez simple, non? 449 00:22:13,628 --> 00:22:17,990 Il est juste un très simple modification de la table. 450 00:22:17,990 --> 00:22:22,250 >> Supprimer est l'opération que nous avons utilisé pour supprimer des informations à partir d'une table. 451 00:22:22,250 --> 00:22:24,817 DELETE FROM table WHERE certains prédicat est satisfait. 452 00:22:24,817 --> 00:22:26,900 Nous voulons supprimer de la table des utilisateurs, par exemple 453 00:22:26,900 --> 00:22:28,254 où le nom d'utilisateur est Newman. 454 00:22:28,254 --> 00:22:31,420 Vous pouvez probablement le deviner ce qui va se arriver ici après nous exécutons que SQL 455 00:22:31,420 --> 00:22:35,790 requête, Newman a disparu de la table. 456 00:22:35,790 --> 00:22:40,460 >> Donc, toutes ces opérations, comme je l'ai dit, sont très faciles à faire dans phpMyAdmin. 457 00:22:40,460 --> 00:22:43,020 Il est une interface utilisateur très conviviale. 458 00:22:43,020 --> 00:22:45,930 Mais il ne nécessite un effort manuel. 459 00:22:45,930 --> 00:22:47,840 Nous ne voulons pas d'employer effort manuel. 460 00:22:47,840 --> 00:22:51,280 Nous voulons que nos programmes à faire cela pour nous, non? 461 00:22:51,280 --> 00:22:53,190 Donc, nous pourrions vouloir faire cette programmation. 462 00:22:53,190 --> 00:22:56,410 Nous voulons intégrer SQL et ont autre chose de le faire pour nous. 463 00:22:56,410 --> 00:23:02,710 >> Mais qu'avons-nous vu que permet que nous fassions quelque chose de programmation? 464 00:23:02,710 --> 00:23:03,690 Nous avons vu PHP, non? 465 00:23:03,690 --> 00:23:05,760 Il présente quelques-uns dynamisme dans nos programmes. 466 00:23:05,760 --> 00:23:10,430 Et si heureusement, SQL et PHP jouer très bien ensemble. 467 00:23:10,430 --> 00:23:13,230 Il ya une fonction en PHP dite requête, qui peut être utilisé. 468 00:23:13,230 --> 00:23:15,870 Et vous pouvez passer le paramètre ou l'argument 469 00:23:15,870 --> 00:23:19,210 pour interroger une requête SQL qui vous souhaitez exécuter. 470 00:23:19,210 --> 00:23:23,250 Et PHP va le faire en votre nom. 471 00:23:23,250 --> 00:23:25,564 >> Ainsi, après vous avez connecté à votre base de données avec PHP, 472 00:23:25,564 --> 00:23:26,980 il ya deux primaires vous faites cela. 473 00:23:26,980 --> 00:23:29,230 Il ya quelque chose appelé MySQLi et quelque chose appelé PDO. 474 00:23:29,230 --> 00:23:31,063 Nous ne rentrerons pas dans un énorme détail montant là. 475 00:23:31,063 --> 00:23:32,957 Dans CS50 nous utilisons PDO. 476 00:23:32,957 --> 00:23:34,790 Après que vous avez connecté à votre base de données, vous 477 00:23:34,790 --> 00:23:40,980 peut alors faire des requêtes base de données en passant les requêtes comme arguments 478 00:23:40,980 --> 00:23:42,730 à des fonctions PHP. 479 00:23:42,730 --> 00:23:46,460 Et quand vous faites cela, vous stockez le jeu de résultats dans un tableau associatif. 480 00:23:46,460 --> 00:23:50,290 >> Et nous savons comment travailler avec tableaux associatifs en PHP. 481 00:23:50,290 --> 00:23:52,630 Donc je pourrais dire quelque chose comme this-- $ results-- 482 00:23:52,630 --> 00:23:55,470 cela est dans PHP-- égale requête. 483 00:23:55,470 --> 00:23:57,660 Ensuite, à l'intérieur de la fonction d'interrogation cet argument 484 00:23:57,660 --> 00:24:00,130 que je suis de passage à interroger qui ressemble SQL. 485 00:24:00,130 --> 00:24:01,160 Et, en fait, qui est SQL. 486 00:24:01,160 --> 00:24:05,700 Voilà la chaîne de requête que je le ferais voulez exécuter sur ma base de données. 487 00:24:05,700 --> 00:24:09,250 >> Et donc en rouge, cela est PHP. 488 00:24:09,250 --> 00:24:11,890 Ceci est SQL que je suis intégrer PHP en faisant 489 00:24:11,890 --> 00:24:15,020 il l'argument de la fonction de requête. 490 00:24:15,020 --> 00:24:19,640 Je veux choisir à partir fullname utilisateurs où le numéro d'identification est égal à 10. 491 00:24:19,640 --> 00:24:22,560 Et puis, peut-être après que je l'ai fait, Je pourrais dire quelque chose comme ça. 492 00:24:22,560 --> 00:24:25,550 Je veux imprimer le un message Merci de vous connecter. 493 00:24:25,550 --> 00:24:32,530 >> Et je veux qu'il interpolate-- Je veux pour interpoler les résultats de $ fullname. 494 00:24:32,530 --> 00:24:36,280 Et voilà comment je travaille avec ce que tableau associatif que je suis rentré. 495 00:24:36,280 --> 00:24:39,730 $ fullname résultats feriez essentiellement finissent par imprimer, 496 00:24:39,730 --> 00:24:42,870 merci pour la connexion, Jerry Seinfeld. 497 00:24:42,870 --> 00:24:46,570 Ce fut le nom complet où IDNUM égal 10. 498 00:24:46,570 --> 00:24:48,850 >> Et donc tout ce que je fais est que je suis maintenant-- Je stockées 499 00:24:48,850 --> 00:24:52,780 ma requête, les résultats de ma recherche et les résultats dans un tableau associatif, 500 00:24:52,780 --> 00:24:56,330 et fullname est le nom de la colonne je devenais pour. 501 00:24:56,330 --> 00:25:01,010 Voilà donc ma clé dans les résultats tableau associatif que je veux. 502 00:25:01,010 --> 00:25:05,930 Donc Merci pour connecter, $ des résultats, fullname aura imprimer, collera 503 00:25:05,930 --> 00:25:08,654 à droite entre ceux bouclés accolades, Jerry Seinfeld. 504 00:25:08,654 --> 00:25:11,820 Et je tiens à imprimer le message Merci pour connecter Jerry Seinfeld. 505 00:25:11,820 --> 00:25:16,652 >> Maintenant, nous ne voulons probablement pas sur le disque les choses de code comme ça dans, non? 506 00:25:16,652 --> 00:25:19,860 Nous pourrions faire quelque chose comme impression f, où nous pouvons remplacer et peut-être 507 00:25:19,860 --> 00:25:22,443 recueillir de l'information différente, ou peut-être avoir le processus de requête 508 00:25:22,443 --> 00:25:23,370 des informations différentes. 509 00:25:23,370 --> 00:25:27,920 Et ainsi de requête, la fonction de requête a cette notion de genre de substitutions 510 00:25:27,920 --> 00:25:32,310 très similaire à imprimer pour cent f s et c pour cent, est des points d'interrogation. 511 00:25:32,310 --> 00:25:34,290 >> Et nous pouvons utiliser question marques très analogue 512 00:25:34,290 --> 00:25:38,400 d'imprimer f à des variables de substitution. 513 00:25:38,400 --> 00:25:44,120 Alors peut-être votre mode connecté plus tôt, et vous avez enregistré leur numéro d'identification de l'utilisateur 514 00:25:44,120 --> 00:25:51,710 en $ _session de PHP super- mondial dans l'ID de clé. 515 00:25:51,710 --> 00:25:55,947 Alors peut-être, après ils se sont connectés, vous définissez $ _session ID est égal à 10, 516 00:25:55,947 --> 00:25:58,280 extrapolation à partir de l'exemple nous venons de voir il ya une seconde. 517 00:25:58,280 --> 00:26:01,960 >> Et donc quand nous exécutons réellement Cette requête les résultats maintenant, 518 00:26:01,960 --> 00:26:08,440 il serait de brancher 10, ou quel que soit la valeur _session $ ID est. 519 00:26:08,440 --> 00:26:10,790 Et ce qui nous permet de être un peu plus dynamique. 520 00:26:10,790 --> 00:26:12,699 Nous ne sommes pas coder en dur les choses en plus. 521 00:26:12,699 --> 00:26:14,490 Nous économisons informations quelque part et puis 522 00:26:14,490 --> 00:26:18,924 nous pouvons utiliser cette information à nouveau sorte de généraliser ce que nous voulons faire, 523 00:26:18,924 --> 00:26:21,090 et juste plug-in et le changement le comportement de notre page 524 00:26:21,090 --> 00:26:26,489 sur la base de ce numéro d'identification de l'utilisateur est en fait après qu'ils ont enregistrés dans. 525 00:26:26,489 --> 00:26:28,530 Il est également possible, cependant, que vos résultats fixés 526 00:26:28,530 --> 00:26:30,840 pourrait consister en plusieurs lignes. 527 00:26:30,840 --> 00:26:33,990 Dans ce cas, vous avez un tableau de arrays-- 528 00:26:33,990 --> 00:26:35,334 un tableau de tableaux associatifs. 529 00:26:35,334 --> 00:26:37,000 Et il vous suffit de la parcourir. 530 00:26:37,000 --> 00:26:41,950 Et nous savons comment parcourir à travers un réseau en PHP, non? 531 00:26:41,950 --> 00:26:45,600 Donc ici est probablement le plus chose complexe que nous avons vu jusqu'à présent. 532 00:26:45,600 --> 00:26:49,640 Il intègre effectivement trois langues confondues. 533 00:26:49,640 --> 00:26:52,920 >> Ici, en rouge, cela est du HTML. 534 00:26:52,920 --> 00:26:56,872 Je apparemment starting-- cela est un extrait de code HTML que je dois. 535 00:26:56,872 --> 00:26:59,580 Je commence un nouveau paragraphe qui dit les mamans de Seinfeld de télévision. 536 00:26:59,580 --> 00:27:02,350 Et puis, immédiatement après, Je commence une table. 537 00:27:02,350 --> 00:27:06,060 Et puis après, je avoir un peu de PHP, non? 538 00:27:06,060 --> 00:27:08,229 Je dois tout ce code PHP là-dedans. 539 00:27:08,229 --> 00:27:09,645 Je vais faire un apparemment requête. 540 00:27:09,645 --> 00:27:14,180 Et pour rendre la requête, je vais être en utilisant les mères choisir parmi les mamans. 541 00:27:14,180 --> 00:27:15,970 >> Donc, cela est getting-- cela est SQL. 542 00:27:15,970 --> 00:27:17,300 Ainsi, le bleu est SQL. 543 00:27:17,300 --> 00:27:19,680 Le rouge que nous avons vu il ya un deuxième était HTML. 544 00:27:19,680 --> 00:27:21,360 Et le vert ici est PHP. 545 00:27:21,360 --> 00:27:23,400 Donc, je fais une requête à ma base de données, je suis 546 00:27:23,400 --> 00:27:26,040 sélectionner l'ensemble de la mères dans le tableau des mamans. 547 00:27:26,040 --> 00:27:30,710 Non seulement on réduit le champ à particulier rang, je vous demande à tous d'entre eux. 548 00:27:30,710 --> 00:27:33,290 >> Puis-je vérifier si le résultat est pas égaux vaut Faux. 549 00:27:33,290 --> 00:27:37,410 Ceci est juste ma façon de vérifier tri si les résultats de est pas égal à null, 550 00:27:37,410 --> 00:27:40,260 que nous verrions c par exemple. 551 00:27:40,260 --> 00:27:44,000 Fondamentalement, cela est en train de vérifier à faire vous qu'il a effectivement obtenu des données en arrière. 552 00:27:44,000 --> 00:27:47,041 Parce que je ne veux pas lancer l'impression sur des données si je ne reçois pas toutes les données. 553 00:27:47,041 --> 00:27:50,690 Ensuite, pour chaque résultats à la suite de la foreach syntaxe de PHP, tout ce que je fais 554 00:27:50,690 --> 00:27:53,399 est l'impression de $ result mères. 555 00:27:53,399 --> 00:27:55,940 Et donc je vais obtenir un ensemble de toutes les mères de each-- 556 00:27:55,940 --> 00:27:59,980 il est un tableau de associative arrays-- et je imprimer 557 00:27:59,980 --> 00:28:03,649 chacun comme sa propre ligne d'une table. 558 00:28:03,649 --> 00:28:05,690 Et cela est vraiment très jolie près tout ce qu'il ya à faire. 559 00:28:05,690 --> 00:28:07,750 Je sais qu'il ya un peu peu se passe ici 560 00:28:07,750 --> 00:28:13,210 dans ce dernier exemple avec des tableaux de arrays-- tableaux de tableaux associatifs. 561 00:28:13,210 --> 00:28:17,340 Mais il ne se résume vraiment juste dans SQL pour faire une requête, 562 00:28:17,340 --> 00:28:21,102 sélectionnant généralement après que nous avons déjà mettre l'information dans la table, 563 00:28:21,102 --> 00:28:22,310 et puis juste en tirant. 564 00:28:22,310 --> 00:28:25,710 >> Et cela est nous tirer dans ce cas particulier. 565 00:28:25,710 --> 00:28:31,120 Nous aimerions extraire tout de l'individu mères de la table mamans. 566 00:28:31,120 --> 00:28:35,970 Nous avons eu tout un ensemble d'entre eux, et nous vouloir parcourir et à imprimer 567 00:28:35,970 --> 00:28:37,630 chacun. 568 00:28:37,630 --> 00:28:40,510 Encore une fois, ce qui est probablement l'exemple le plus compliqué 569 00:28:40,510 --> 00:28:44,510 nous avons vu parce que nous sommes un mélange de trois différentes langues ensemble, non? 570 00:28:44,510 --> 00:28:50,100 >> Encore une fois, nous avons HTML ici en rouge, mélangé avec un peu SQL ici en bleu, 571 00:28:50,100 --> 00:28:52,049 mélangé avec un peu de PHP en vert. 572 00:28:52,049 --> 00:28:53,840 Mais tous ces facteurs jouent bien ensemble, il est 573 00:28:53,840 --> 00:28:57,060 juste une question de développement de bonnes habitudes de sorte que vous pouvez obtenir 574 00:28:57,060 --> 00:28:58,780 les faire travailler ensemble la façon dont vous voulez. 575 00:28:58,780 --> 00:29:03,790 Et la seule façon de le faire vraiment que est de pratiquer, pratiquer, pratiquer. 576 00:29:03,790 --> 00:29:06,740 Je suis Doug Lloyd, cela est CS50. 577 00:29:06,740 --> 00:29:08,647