1 00:00:00,000 --> 00:00:03,493 >> [Música tocando] 2 00:00:03,493 --> 00:00:04,934 3 00:00:04,934 --> 00:00:07,100 Doug LLOYD: Nos nosos vídeos sobre temas de desenvolvemento web, 4 00:00:07,100 --> 00:00:10,560 nós mencionados o concepto de unha base de datos ás veces, non? 5 00:00:10,560 --> 00:00:12,700 Entón é unha base de datos Probablemente está familiarizado coa dende 6 00:00:12,700 --> 00:00:15,780 dicir usando Microsoft Excel ou follas de cálculo de Google. 7 00:00:15,780 --> 00:00:20,650 É realmente só unha organizada conxunto de táboas, liñas e columnas. 8 00:00:20,650 --> 00:00:23,140 >> E unha base de datos é onde nosas tendas web 9 00:00:23,140 --> 00:00:26,760 información que é importante para a nosa web para funcionar correctamente. 10 00:00:26,760 --> 00:00:30,150 Unha vez máis, un exemplo moi común aquí está almacenando nome de usuario e contrasinal 11 00:00:30,150 --> 00:00:32,824 unha base de datos, de xeito que cando un usuario se conecta nosa web, 12 00:00:32,824 --> 00:00:36,690 a base de datos pode ser consultado a ver se o usuario existe na base de datos. 13 00:00:36,690 --> 00:00:39,260 E se son, alomenos que a chave correcta. 14 00:00:39,260 --> 00:00:43,420 E se o seu contrasinal é correcta, entón podemos darlles calquera páxina 15 00:00:43,420 --> 00:00:45,370 están pedindo. 16 00:00:45,370 --> 00:00:48,590 >> Entón, probablemente está, unha vez máis, familiarizado con esta idea de Excel ou Google 17 00:00:48,590 --> 00:00:49,430 Spreadsheets. 18 00:00:49,430 --> 00:00:52,980 Temos bases de datos, táboas, liñas e columnas. 19 00:00:52,980 --> 00:00:56,450 E iso é realmente sorte do conxunto fundamental 20 00:00:56,450 --> 00:00:58,470 de desagregación xerárquica aquí. 21 00:00:58,470 --> 00:00:59,800 Entón aquí está unha folla de cálculo de Excel. 22 00:00:59,800 --> 00:01:02,640 E se xa abriu este ou outro programa similar 23 00:01:02,640 --> 00:01:06,780 vostede sabe que estes son aquí rows-- 1, 2, 3, 4, 5, 6, 7. 24 00:01:06,780 --> 00:01:08,760 Estes son columnas. 25 00:01:08,760 --> 00:01:11,790 >> Quizais aquí, aínda que pode non usar esta función terriblemente much-- 26 00:01:11,790 --> 00:01:15,370 Vou aumentar em-- temos esa idea dunha folla. 27 00:01:15,370 --> 00:01:17,930 Entón, talvez estas follas, se Eu cambiar adiante e cara atrás, 28 00:01:17,930 --> 00:01:21,600 son diferentes táboas que existe no meu base de datos. 29 00:01:21,600 --> 00:01:25,210 E se seguimos a exemplo todo Por certo, o nome do banco de datos 30 00:01:25,210 --> 00:01:26,940 é un libro. 31 00:01:26,940 --> 00:01:28,710 Poida que eu teña Libro 2 e 3 do libro. 32 00:01:28,710 --> 00:01:33,270 Entón, cada ficheiro de Excel é unha base de datos, cada folla é unha táboa, 33 00:01:33,270 --> 00:01:39,530 e dentro de cada táboa teño esa idea de liñas e columnas. 34 00:01:39,530 --> 00:01:41,900 >> Entón, como podo traballar con esta base de datos? 35 00:01:41,900 --> 00:01:43,630 ¿Como obter información a partir del? 36 00:01:43,630 --> 00:01:47,540 Así, hai unha linguaxe chamada SQL-- que normalmente só chamar Sequel-- 37 00:01:47,540 --> 00:01:50,010 e que defende o Structured Query Language. 38 00:01:50,010 --> 00:01:52,981 E é unha linguaxe de programación, pero é unha programación moi limitado 39 00:01:52,981 --> 00:01:53,480 lingua. 40 00:01:53,480 --> 00:01:56,407 Non é así como outros que traballamos con. 41 00:01:56,407 --> 00:01:58,240 Pero o obxectivo da presente linguaxe de programación 42 00:01:58,240 --> 00:02:01,570 é consultar unha base de datos, a pedir información de base de datos, 43 00:02:01,570 --> 00:02:04,480 atopar información nun base de datos, e así por diante. 44 00:02:04,480 --> 00:02:08,449 >> Tamén, en CS50-- e é unha moi plataforma común, é chamado de MySQL. 45 00:02:08,449 --> 00:02:10,600 Iso é o que usamos no curso. 46 00:02:10,600 --> 00:02:12,880 É unha fonte aberta plataforma que establece 47 00:02:12,880 --> 00:02:16,732 un chamado database-- relacional unha base de datos, de forma eficaz. 48 00:02:16,732 --> 00:02:18,440 Non necesitamos obter en moitos detalles 49 00:02:18,440 --> 00:02:20,930 sobre o que unha base de datos relacional é. 50 00:02:20,930 --> 00:02:24,650 Pero a linguaxe SQL é moi apto para traballar 51 00:02:24,650 --> 00:02:29,760 con MySQL e outros semellantes estilos de bases de datos relacionais. 52 00:02:29,760 --> 00:02:34,010 >> E moitas instalacións de MySQL veñen con algo 53 00:02:34,010 --> 00:02:37,760 chamada phpMyAdmin, que é unha gráfica de usuario 54 00:02:37,760 --> 00:02:40,970 interface-- un GUI-- que fai que sexa un pouco máis 55 00:02:40,970 --> 00:02:44,410 user friendly para realizar consultas de bases de datos, 56 00:02:44,410 --> 00:02:48,980 porque os bancos de datos non se usan só por programadores avanzados, non? 57 00:02:48,980 --> 00:02:51,510 Ás veces, hai estas pequenas empresas, 58 00:02:51,510 --> 00:02:53,900 e eles non poden dar o luxo de contratar un equipo de programadores, 59 00:02:53,900 --> 00:02:56,700 pero eles aínda precisan de almacenar información nunha base de datos. 60 00:02:56,700 --> 00:02:59,300 >> Algo así como phpMyAdmin fai que sexa moi doado para alguén 61 00:02:59,300 --> 00:03:03,630 que nunca programado antes de incorporarse e familiarizarse coa forma como 62 00:03:03,630 --> 00:03:07,710 traballando con unha base de datos. 63 00:03:07,710 --> 00:03:11,800 O problema é, phpMyAdmin, mentres é unha ferramenta fantástica para a aprendizaxe 64 00:03:11,800 --> 00:03:14,850 sobre bases de datos, é manual. 65 00:03:14,850 --> 00:03:18,050 Vai ter que iniciar sesión no Lo e executar comandos e tipo 66 00:03:18,050 --> 00:03:19,910 cousas manualmente. 67 00:03:19,910 --> 00:03:23,160 >> E como sabemos da nosa exemplo en programación web PHP, 68 00:03:23,160 --> 00:03:26,550 ter que facer manualmente cousas na nosa web, 69 00:03:26,550 --> 00:03:30,970 se queremos dinámico, un response activa sitio, quizais non sexa a mellor visión. 70 00:03:30,970 --> 00:03:33,980 Queremos atopar un xeito de quizais automatizar isto de algunha maneira. 71 00:03:33,980 --> 00:03:37,864 E SQL permitiranos facer. 72 00:03:37,864 --> 00:03:39,780 Entón, cando nós imos comezar a traballar con SQL, 73 00:03:39,780 --> 00:03:41,220 necesitamos primeiro ter unha base de datos con que traballar. 74 00:03:41,220 --> 00:03:42,510 Creación dun banco de datos é algo que probablemente 75 00:03:42,510 --> 00:03:45,350 vai facer no phpMyAdmin porque só precisa facer isto unha vez, 76 00:03:45,350 --> 00:03:49,690 ea sintaxe para facelo é moito máis simple. 77 00:03:49,690 --> 00:03:51,940 É moito máis doado de facelo nunha interface gráfica de usuario 78 00:03:51,940 --> 00:03:53,520 que escriba-lo fóra como un comando. 79 00:03:53,520 --> 00:03:55,186 A orde pode ser un pouco complicado. 80 00:03:55,186 --> 00:03:58,889 Así mesmo, a creación dunha táboa pode obter un pouco complicado tamén. 81 00:03:58,889 --> 00:04:01,930 E así as cousas como a creación dunha base de datos e creación dunha táboa, que é 82 00:04:01,930 --> 00:04:06,270 probablemente só vai facer once-- unha vez ao táboa, unha vez por database-- 83 00:04:06,270 --> 00:04:09,040 non hai problema en facelo en unha interface gráfica. 84 00:04:09,040 --> 00:04:11,570 No proceso de creación dunha táboa, vai 85 00:04:11,570 --> 00:04:14,840 tamén ten que especificar todos os columnas que estarán nesta táboa. 86 00:04:14,840 --> 00:04:18,149 Que tipo de información facer quere almacenar na táboa? 87 00:04:18,149 --> 00:04:24,520 Quizais un nome de usuario e data de nacemento, contrasinal, número de identificación do usuario, e quizais 88 00:04:24,520 --> 00:04:26,170 cidade e estado, non? 89 00:04:26,170 --> 00:04:30,080 >> E para cada vez que quere engadir un usuario á base de datos, queremos obter todos os seis 90 00:04:30,080 --> 00:04:31,890 desas pezas de información. 91 00:04:31,890 --> 00:04:34,840 E facemos iso engadindo liñas ao cadro. 92 00:04:34,840 --> 00:04:37,800 Entón primeiro creamos unha base de datos, entón creamos unha táboa. 93 00:04:37,800 --> 00:04:40,100 Como parte da creación unha mesa, somos invitados 94 00:04:40,100 --> 00:04:44,280 para especificar cada columna que queremos nesta táboa. 95 00:04:44,280 --> 00:04:47,247 E entón cando comezan a engadir información á base de datos 96 00:04:47,247 --> 00:04:49,580 e consultar a base de datos máis generally-- non só engadindo: 97 00:04:49,580 --> 00:04:51,610 pero o resto nós fazer-- estaremos lidando 98 00:04:51,610 --> 00:04:58,870 con liñas da táboa, que é un información de usuario desde todo o conxunto. 99 00:04:58,870 --> 00:05:03,210 >> Así, cada columna SQL é capaz de a explotación dos datos dun determinado tipo de datos. 100 00:05:03,210 --> 00:05:06,560 Entón nós medio que eliminou este idea de tipos de datos en PHP, 101 00:05:06,560 --> 00:05:08,747 pero eles están de volta aquí en SQL. 102 00:05:08,747 --> 00:05:10,080 E hai unha morea de tipos de datos. 103 00:05:10,080 --> 00:05:13,420 Aquí é só 20 deles, pero non o é todo eles. 104 00:05:13,420 --> 00:05:16,240 Polo tanto, temos ideas como INTs-- Integers-- nós probablemente sabe 105 00:05:16,240 --> 00:05:17,760 que esta columna pode conter números enteiros. 106 00:05:17,760 --> 00:05:21,077 E hai variacións thereon-- SMALLINT, TINYINT, MEDIUMINT, BIGINT. 107 00:05:21,077 --> 00:05:22,660 Quizais non sempre precisa catro mordidas. 108 00:05:22,660 --> 00:05:26,800 Quizais necesitemos de oito bytes, e por iso, pode usar esas variacións en números enteiros 109 00:05:26,800 --> 00:05:28,510 para ser un pouco máis eficiente do espazo. 110 00:05:28,510 --> 00:05:31,899 Podemos facer números decimais, nós pode facer números de punto flotante. 111 00:05:31,899 --> 00:05:32,940 Estes son moi semellantes. 112 00:05:32,940 --> 00:05:34,773 Existen algunhas diferenzas, e se faría 113 00:05:34,773 --> 00:05:37,330 quere buscar o Tipo SQL de guía, 114 00:05:37,330 --> 00:05:40,670 pode ver o que o lixeiro diferenzas entre eles. 115 00:05:40,670 --> 00:05:43,250 >> Quizais a xente quere almacenar información sobre a data e hora. 116 00:05:43,250 --> 00:05:47,047 Quizais estamos mantendo o control de cando o usuario se xuntou a nosa web, 117 00:05:47,047 --> 00:05:48,880 e quizais por iso que queremos para ter unha columna que é 118 00:05:48,880 --> 00:05:52,820 un tempo de data ou un timestamp que indica cando se realmente 119 00:05:52,820 --> 00:05:54,130 rexistrarte. 120 00:05:54,130 --> 00:05:56,132 Podemos facer xeometrías e cadeas de liñas. 121 00:05:56,132 --> 00:05:57,340 Este é realmente moi legal. 122 00:05:57,340 --> 00:06:01,410 Poderiamos trazar un área xeográfica a través 123 00:06:01,410 --> 00:06:05,110 GIS coordenadas para trazar unha área. 124 00:06:05,110 --> 00:06:08,580 Entón, realmente pode almacenar este tipo de información nunha columna SQL. 125 00:06:08,580 --> 00:06:11,390 >> TEXT só blobs xigantes de texto, quizais. 126 00:06:11,390 --> 00:06:12,840 Enums son unha especie de interesante. 127 00:06:12,840 --> 00:06:16,080 Realmente existen en C. Non facer falar sobre eles porque non son 128 00:06:16,080 --> 00:06:19,110 terriblemente comunmente utilizado, polo menos, CS50. 129 00:06:19,110 --> 00:06:22,680 Pero é un tipo de datos enumerado, que é capaz de manter valores limitados. 130 00:06:22,680 --> 00:06:25,940 >> Un bo exemplo aquí sería para crear un enum onde a sete 131 00:06:25,940 --> 00:06:29,394 valores posibles son domingo, luns, Martes, mércores, xoves, venres, 132 00:06:29,394 --> 00:06:30,060 Sábado, non? 133 00:06:30,060 --> 00:06:33,311 Que tipo de datos de Day Semana non existe, 134 00:06:33,311 --> 00:06:35,310 pero poderiamos crear unha tipo de datos enumerado como 135 00:06:35,310 --> 00:06:39,400 que esa columna só pode prender sempre unha desas sete valores posibles. 136 00:06:39,400 --> 00:06:44,300 Temos enumerou todo dos valores posibles. 137 00:06:44,300 --> 00:06:47,630 >> Entón temos CHAR e varchar, e eu teño color estas verde 138 00:06:47,630 --> 00:06:49,505 porque somos realmente vai levar un segundo 139 00:06:49,505 --> 00:06:51,950 para falar sobre a diferenza entre estas dúas cousas. 140 00:06:51,950 --> 00:06:55,780 Así, CHAR, a diferenza do C, onde CHAR foi un único personaxe, 141 00:06:55,780 --> 00:07:00,730 en SQL CHAR refírese a un unha cadea de lonxitude fixo. 142 00:07:00,730 --> 00:07:02,620 E cando nós crear esta columna, nós, en realidade, 143 00:07:02,620 --> 00:07:05,070 Pode especificar a lonxitude da corda. 144 00:07:05,070 --> 00:07:08,080 >> Así, neste exemplo, poderiamos dicir CHAR (10). 145 00:07:08,080 --> 00:07:11,190 Isto significa que todo elemento de columna 146 00:07:11,190 --> 00:07:13,910 consistirá de 10 bytes de información. 147 00:07:13,910 --> 00:07:15,770 Nin máis, nin menos. 148 00:07:15,770 --> 00:07:21,780 Entón, se nós intentamos e poñer nun 15 bit ou un elemento de 15 caracteres 149 00:07:21,780 --> 00:07:25,340 ou valor para esta columna, estamos só obter os 10 primeiros. 150 00:07:25,340 --> 00:07:27,290 Se colocarmos en dous carácter valor longo, 151 00:07:27,290 --> 00:07:30,700 imos ter os dous caracteres e logo oito mordidas nulos. 152 00:07:30,700 --> 00:07:34,990 Nós nunca imos ser máis eficiente do que iso. 153 00:07:34,990 --> 00:07:37,727 >> Un varchar é tipo como nosa noción de unha cadea 154 00:07:37,727 --> 00:07:39,560 que estamos familiarizados con de C ou de PHP. 155 00:07:39,560 --> 00:07:40,830 É unha cadea de lonxitude variable. 156 00:07:40,830 --> 00:07:42,560 E cando se crea Nesta columna, só 157 00:07:42,560 --> 00:07:44,860 especificar os lonxitudes máximas posibles. 158 00:07:44,860 --> 00:07:49,065 Entón, talvez 99, ou comunmente 255. 159 00:07:49,065 --> 00:07:50,440 Iso sería a anchura máxima. 160 00:07:50,440 --> 00:07:52,890 E por iso, se estabamos almacenando 15 cadea de caracteres, 161 00:07:52,890 --> 00:07:56,157 usariamos 15 bytes, quizais 16 bytes ao terminador nulo. 162 00:07:56,157 --> 00:07:57,990 Se estivésemos almacenar unha tres cadea de caracteres, 163 00:07:57,990 --> 00:08:01,120 usariamos tres ou catro bytes. 164 00:08:01,120 --> 00:08:03,050 Pero nós non usaría a completa 99. 165 00:08:03,050 --> 00:08:05,190 >> Entón, por que temos tanto? 166 00:08:05,190 --> 00:08:08,210 Ben, se necesitamos descubrir como tempo algo é cun varchar, 167 00:08:08,210 --> 00:08:10,680 temos que tipo de iterate a través del, tal como fixemos en C 168 00:08:10,680 --> 00:08:12,230 e descubrir onde para. 169 00:08:12,230 --> 00:08:15,920 Tendo en conta que, se sabemos que todo nesta columna é de 10 bytes, quizais 170 00:08:15,920 --> 00:08:19,220 sabemos que a información, podemos ir 10 bytes, 10 bytes, 10 bytes, 10 bytes, 171 00:08:19,220 --> 00:08:21,790 e atopar o inicio da cadea. 172 00:08:21,790 --> 00:08:25,210 >> Así, podemos ter un espazo desperdiçado cun CHAR, 173 00:08:25,210 --> 00:08:28,510 pero quizais haxa un comercio off de ter unha mellor velocidade 174 00:08:28,510 --> 00:08:30,160 navegando na base de datos. 175 00:08:30,160 --> 00:08:32,330 Pero quizais queremos o flexibilidade dun varchar 176 00:08:32,330 --> 00:08:36,710 Se en vez de having-- noso CHAR foi de 255, pero a maioría dos usuarios 177 00:08:36,710 --> 00:08:40,537 só se introducir tres ou catro bytes val de información ou tres ou catro 178 00:08:40,537 --> 00:08:41,870 caracteres por valor de información. 179 00:08:41,870 --> 00:08:44,324 >> Pero algúns usuarios estaban usando toda a 255, quizais 180 00:08:44,324 --> 00:08:45,990 Varchar sería máis apropiado alí. 181 00:08:45,990 --> 00:08:49,840 É unha especie de un trade-off, e en xeral, con fins de CS50, 182 00:08:49,840 --> 00:08:54,107 non se preocupe moito sobre se usa un CHAR ou varchar. 183 00:08:54,107 --> 00:08:57,190 Pero no mundo real, isto non importa, porque todas estas columnas 184 00:08:57,190 --> 00:08:59,300 ocupan espazo físico real. 185 00:08:59,300 --> 00:09:04,150 E espazo físico, na mundo real, vén nun premio. 186 00:09:04,150 --> 00:09:06,800 >> Entón, outra consideración cando está construíndo unha mesa 187 00:09:06,800 --> 00:09:09,840 é escoller unha columna para ser que se chama chave primaria. 188 00:09:09,840 --> 00:09:14,350 E unha chave primaria é unha columna onde cada valor único é único. 189 00:09:14,350 --> 00:09:19,980 E isto significa que pode facilmente escoller unha soa liña, só de ollar 190 00:09:19,980 --> 00:09:22,450 na chave primaria desa liña. 191 00:09:22,450 --> 00:09:24,580 Así, por exemplo, xeralmente, cos usuarios, 192 00:09:24,580 --> 00:09:27,210 Non quero que dous usuarios teñen o mesmo número de identificación do usuario. 193 00:09:27,210 --> 00:09:28,960 E quizais por iso ten moita información, 194 00:09:28,960 --> 00:09:30,793 e quizais dous usuarios poden ten o mesmo nome-- 195 00:09:30,793 --> 00:09:32,650 tes John Smith e John Smith. 196 00:09:32,650 --> 00:09:34,520 Iso non é necesariamente un problema, porque hai varias persoas 197 00:09:34,520 --> 00:09:35,830 no mundo chamado John Smith. 198 00:09:35,830 --> 00:09:40,766 Pero só temos un número de identificación de usuario 10, un usuario ID número 11, 12, 13. 199 00:09:40,766 --> 00:09:42,640 Non temos dous usuarios co mesmo número, 200 00:09:42,640 --> 00:09:46,010 e quizais por iso os números de ID de usuario sería unha boa chave primaria. 201 00:09:46,010 --> 00:09:48,610 >> Non temos ningún duplicación, e podemos agora únicamente 202 00:09:48,610 --> 00:09:52,619 identificar cada única liña só mirando para esa columna. 203 00:09:52,619 --> 00:09:55,410 Escolla as chaves primarias realmente facer operacións de táboa posteriores 204 00:09:55,410 --> 00:09:59,710 moito máis fácil porque pode aproveitar o feito de que certas liñas serán 205 00:09:59,710 --> 00:10:02,720 ser único, ou unha determinada columna de base de datos ou táboa 206 00:10:02,720 --> 00:10:06,030 será exclusivo para escoller liñas particulares para fóra. 207 00:10:06,030 --> 00:10:08,790 >> Tamén pode ter un fondo conxunta clave, que pode considerar ocasión 208 00:10:08,790 --> 00:10:11,720 de usar, que non é máis que un combinación de dúas columnas que 209 00:10:11,720 --> 00:10:13,280 é garantía para ser exclusivo. 210 00:10:13,280 --> 00:10:16,410 Entón, talvez ten un columna que é como e Bs, 211 00:10:16,410 --> 00:10:19,290 unha columna que é un, dous, e tres, pero vai sempre só 212 00:10:19,290 --> 00:10:23,660 ten un único A1, unha única A2, e así por diante e así por diante. 213 00:10:23,660 --> 00:10:28,980 Pero pode ter un B2, un C2, ou unha A1, A2, A3, A4. 214 00:10:28,980 --> 00:10:32,840 Así, pode ter varios Como, múltiples Bs, os múltiples, varios pares, 215 00:10:32,840 --> 00:10:38,567 pero só poderá ter un único A1, B2, C3, e así por diante. 216 00:10:38,567 --> 00:10:40,400 Entón, como dixen, é un SQL linguaxe de programación, 217 00:10:40,400 --> 00:10:42,024 pero ten un vocabulario moi limitado. 218 00:10:42,024 --> 00:10:44,880 Non é tan expansivo como C e PHP e outras linguaxes 219 00:10:44,880 --> 00:10:46,350 que falamos no curso. 220 00:10:46,350 --> 00:10:49,960 É un máis detallado lingua que o que somos 221 00:10:49,960 --> 00:10:52,789 vai falar neste vídeo, porque neste vídeo 222 00:10:52,789 --> 00:10:54,830 imos falar catro operacións que 223 00:10:54,830 --> 00:10:55,720 Pode realizar nunha táboa. 224 00:10:55,720 --> 00:10:56,761 >> Hai máis que iso. 225 00:10:56,761 --> 00:10:58,730 Podemos facer máis do que iso, pero para os nosos propósitos, 226 00:10:58,730 --> 00:11:02,250 estamos xeralmente vai estar usando só catro inserción operations--, 227 00:11:02,250 --> 00:11:05,360 seleccionar, actualizar e borrar. 228 00:11:05,360 --> 00:11:08,750 E probablemente pode adiviñar intuitivamente o que todos os catro destas cousas fan. 229 00:11:08,750 --> 00:11:12,520 Pero nós imos entrar nun pouco de detalle en cada un. 230 00:11:12,520 --> 00:11:15,780 >> Así, para os efectos da presente vídeo, imos supor 231 00:11:15,780 --> 00:11:18,870 temos o seguinte dous táboas nunha única base de datos. 232 00:11:18,870 --> 00:11:23,460 Temos unha táboa chamada Usuarios que catro columns-- número de identificación, nome de usuario, 233 00:11:23,460 --> 00:11:25,350 contrasinal e nome completo. 234 00:11:25,350 --> 00:11:27,430 E nós temos unha segunda táboa no mesmo banco de datos 235 00:11:27,430 --> 00:11:32,129 chamado Moms que almacena información sobre un nome de usuario e unha nai. 236 00:11:32,129 --> 00:11:33,920 Así, para todos os exemplos Neste vídeo, imos 237 00:11:33,920 --> 00:11:37,945 estar usando este banco de datos e actualizacións posteriores. 238 00:11:37,945 --> 00:11:40,070 Entón, imos dicir que queremos engadir información a unha mesa. 239 00:11:40,070 --> 00:11:44,460 Isto é o que fai a operación de inserción. 240 00:11:44,460 --> 00:11:46,550 Ao explicar todos estes comandos, eu vou 241 00:11:46,550 --> 00:11:48,860 para darlle un esqueleto xeral de usar. 242 00:11:48,860 --> 00:11:51,661 Porque, basicamente, as consultas vai mirar moi semellante, 243 00:11:51,661 --> 00:11:54,660 nós só estamos indo a estar cambiando lixeiramente diferentes pezas de información 244 00:11:54,660 --> 00:11:56,750 para facer cousas diferentes coa táboa. 245 00:11:56,750 --> 00:11:59,200 >> Así, por INSERT, o esqueleto mira o tipo de como este. 246 00:11:59,200 --> 00:12:02,230 Queremos introducir en unha táboa específica. 247 00:12:02,230 --> 00:12:05,290 Entón temos un paréntese de apertura e unha lista de columnas 248 00:12:05,290 --> 00:12:08,070 que queremos poñer valores en. 249 00:12:08,070 --> 00:12:10,974 Pechar parénteses, o seguintes valores e, a continuación, 250 00:12:10,974 --> 00:12:13,390 de novo, listados os valores queremos poñer enriba da mesa. 251 00:12:13,390 --> 00:12:15,950 >> Polo tanto, un exemplo deste sería a seguinte. 252 00:12:15,950 --> 00:12:19,170 Quero introducir na táboa usuarios a seguinte columns-- 253 00:12:19,170 --> 00:12:21,010 nome de usuario, contrasinal e nome completo. 254 00:12:21,010 --> 00:12:25,282 Así, unha nova liña onde estou poñendo naqueles tres columnas e estamos 255 00:12:25,282 --> 00:12:30,030 vai poñer nos valores Newman, USMAIL, e Newman. 256 00:12:30,030 --> 00:12:32,730 Polo tanto, neste caso, eu son poñendo a Newman minúsculas 257 00:12:32,730 --> 00:12:38,710 na columna de nome de usuario, o contrasinal USMAIL, así como a plena capital de nome N 258 00:12:38,710 --> 00:12:41,940 Newman na columna de nome completo. 259 00:12:41,940 --> 00:12:44,240 >> Entón aquí está o que a base de datos parecía antes. 260 00:12:44,240 --> 00:12:48,250 Aquí está o que a táboa de usuarios en top parecía antes que fixemos iso. 261 00:12:48,250 --> 00:12:50,760 Despois de se executar este consulta, comezan iso. 262 00:12:50,760 --> 00:12:54,790 Nós engadimos unha nova liña á táboa. 263 00:12:54,790 --> 00:12:56,810 Pero teña en conta unha cousa que eu non especificou, 264 00:12:56,810 --> 00:12:59,880 pero de algunha maneira eu teño un valor para o que é este 12 aquí. 265 00:12:59,880 --> 00:13:02,820 Eu non dixen que eu quería número de identificación poñer alí dentro. 266 00:13:02,820 --> 00:13:04,900 Quería poñer nome de usuario, contrasinal, nome completo. 267 00:13:04,900 --> 00:13:06,440 E eu fixen iso, todo ben. 268 00:13:06,440 --> 00:13:07,760 >> Pero eu tamén teño ese 12. 269 00:13:07,760 --> 00:13:09,490 Por que eu recibín este 12? 270 00:13:09,490 --> 00:13:12,904 Ben, resulta que cando está definindo 271 00:13:12,904 --> 00:13:15,570 unha columna que vai ser o seu chave primaria, que é normalmente, 272 00:13:15,570 --> 00:13:16,510 como dixen, un número de identificación. 273 00:13:16,510 --> 00:13:18,718 Non é sempre necesariamente vai ser un número de identificación, 274 00:13:18,718 --> 00:13:22,380 pero normalmente é unha boa idea ser algún tipo de valor enteiro. 275 00:13:22,380 --> 00:13:25,950 Ten unha opción en phpMyAdmin cando está creando a base de datos 276 00:13:25,950 --> 00:13:31,130 ou a súa mesa para definir que columna como auto incrementado. 277 00:13:31,130 --> 00:13:34,520 >> Que é realmente unha boa idea cando se está a traballar con unha chave primaria, 278 00:13:34,520 --> 00:13:39,330 porque quere todos os valores nesa columna para ser exclusivo. 279 00:13:39,330 --> 00:13:43,310 E se esquecer de especificar Lo por máis dunha persoa, 280 00:13:43,310 --> 00:13:46,240 agora ten unha situación na que columna que non é único. 281 00:13:46,240 --> 00:13:50,200 Tes dous espazos en branco, para que non pode xa o identificar un column-- 282 00:13:50,200 --> 00:13:54,150 ou xa non pode unicamente identificar unha liña con base nesa columna. 283 00:13:54,150 --> 00:13:57,010 Perdeu toda a súa valor como unha chave primaria. 284 00:13:57,010 --> 00:14:02,010 >> E así, ao parecer, o que eu fixen aquí está configurado o ID de usuario 285 00:14:02,010 --> 00:14:07,790 columna de auto incremento para que cada xa que eu engadir información para a mesa, 286 00:14:07,790 --> 00:14:12,220 el me vai dar automaticamente un valor para a chave primaria. 287 00:14:12,220 --> 00:14:15,570 Entón, eu nunca podo esquecer de facelo porque a base de datos vai facelo por min. 288 00:14:15,570 --> 00:14:16,587 Entón, iso é ben legal. 289 00:14:16,587 --> 00:14:18,670 E é por iso que temos 12 en alí, porque eu teño 290 00:14:18,670 --> 00:14:21,772 definir esa columna ata incremento automático. 291 00:14:21,772 --> 00:14:23,730 Se eu engadín outra persoa que sería 13, se eu engade 292 00:14:23,730 --> 00:14:27,890 outra persoa sería 14, e así por diante. 293 00:14:27,890 --> 00:14:30,190 >> Entón imos facer unha inserción. 294 00:14:30,190 --> 00:14:34,530 Nós imos introducir na táboa de nais, en particular, o nome de usuario ea súa nai 295 00:14:34,530 --> 00:14:37,390 columna, os valores Kramer e Babs Kramer. 296 00:14:37,390 --> 00:14:39,140 E entón tivemos que antes. 297 00:14:39,140 --> 00:14:41,800 Despois de que nós executamos Pesquisa, temos iso. 298 00:14:41,800 --> 00:14:47,290 Nós engadimos Kramer e Babs Kramer á mesa de nais. 299 00:14:47,290 --> 00:14:48,350 >> Así que é a inserción. 300 00:14:48,350 --> 00:14:51,850 Seleccionar é o que usan para extraer información da táboa. 301 00:14:51,850 --> 00:14:54,390 Entón é así que chegamos información da base de datos. 302 00:14:54,390 --> 00:14:59,589 E é só seleccionar comandos serán moi frecuentemente usada na programación. 303 00:14:59,589 --> 00:15:02,130 O xeneral framework-- o esqueleto xeral parece iso. 304 00:15:02,130 --> 00:15:06,550 Seleccione un conxunto de columnas de unha mesa, e logo facultativamente 305 00:15:06,550 --> 00:15:11,090 pode especificar un ou condition-- o que normalmente chamamos un predicado, 306 00:15:11,090 --> 00:15:13,010 xeralmente é o termo que usan en SQL. 307 00:15:13,010 --> 00:15:16,490 >> Pero é basicamente o que particulares liñas que quere obter. 308 00:15:16,490 --> 00:15:19,100 Se quere, en vez de comezar todo, reduci-lo, 309 00:15:19,100 --> 00:15:20,060 isto é onde faría iso. 310 00:15:20,060 --> 00:15:22,777 E, a continuación, opcionalmente, tamén se pode ordenar por unha columna específica. 311 00:15:22,777 --> 00:15:25,860 Entón, talvez quere ter cousas clasificados alfabéticamente en base a unha columna 312 00:15:25,860 --> 00:15:27,540 ou por orde alfabética en base a outro. 313 00:15:27,540 --> 00:15:30,610 >> Unha vez máis, Where e ORDER BY son opcionais. 314 00:15:30,610 --> 00:15:32,681 Pero probablemente vai ser useful-- particularmente 315 00:15:32,681 --> 00:15:34,680 ONDE será útil para diminuír para que non 316 00:15:34,680 --> 00:15:37,460 obter todo o seu base de datos back e ten que proceso-lo, comeza só 317 00:15:37,460 --> 00:15:39,300 as partes del que se preocupa. 318 00:15:39,300 --> 00:15:44,932 Así, por exemplo, podería querer seleccionar Número de identificación e nome completo dos usuarios. 319 00:15:44,932 --> 00:15:46,140 Entón, o que pode esta aparencia? 320 00:15:46,140 --> 00:15:48,270 Entón aquí está a miña táboa de usuarios. 321 00:15:48,270 --> 00:15:51,080 Quero seleccionar idnum e fullname dos usuarios. 322 00:15:51,080 --> 00:15:52,300 Que eu vou conseguir? 323 00:15:52,300 --> 00:15:53,580 Eu estou indo a obter esta. 324 00:15:53,580 --> 00:15:56,930 Non reduci-lo, entón eu son obter o número de identificación para cada liña 325 00:15:56,930 --> 00:16:00,850 e eu estou empezando a plena nome de cada liña. 326 00:16:00,850 --> 00:16:02,210 >> Aceptar. 327 00:16:02,210 --> 00:16:05,640 E se eu queira seleccionar contrasinal dos usuarios WHERE-- agora 328 00:16:05,640 --> 00:16:10,370 Estou engadindo unha condición, unha predicate-- onde idnum é inferior a 12. 329 00:16:10,370 --> 00:16:13,660 Entón aquí está o meu banco de datos de novo, miña táboa de usuarios de arriba. 330 00:16:13,660 --> 00:16:17,030 Que eu vou conseguir, se eu queira selecciona esta información, o contrasinal, 331 00:16:17,030 --> 00:16:21,550 onde ID de usuario ou idnum é inferior a 12? 332 00:16:21,550 --> 00:16:24,910 Eu estou indo a obter esta información de volta, non? 333 00:16:24,910 --> 00:16:29,170 Acontece que idnum é de 10, menos de 12, número de identificación de 11 a menos de 12. 334 00:16:29,170 --> 00:16:32,160 Estou empezando a contrasinal para as liñas. 335 00:16:32,160 --> 00:16:33,914 Iso é o que eu pedín. 336 00:16:33,914 --> 00:16:34,580 Que tal isto? 337 00:16:34,580 --> 00:16:39,170 E se eu queira seleccionar estrela do moms mesa onde nome de usuario é igual a Jerry? 338 00:16:39,170 --> 00:16:43,780 OK, seleccione estrelas é o especial especie de comodín chamada 339 00:16:43,780 --> 00:16:45,670 que usan para obter todo. 340 00:16:45,670 --> 00:16:48,620 Entón, eles están dicindo seleccione nome de usuario nai coma, que 341 00:16:48,620 --> 00:16:51,060 pasou a ser a única dúas columnas desta táboa, 342 00:16:51,060 --> 00:16:53,260 Só podo seleccionar estrela e comezar todo 343 00:16:53,260 --> 00:16:55,030 onde o nome de usuario é igual a Jerry. 344 00:16:55,030 --> 00:16:59,380 E iso é o que eu ía estar se eu fixen esa consulta particular. 345 00:16:59,380 --> 00:17:01,810 >> Agora, as bases de datos son grandes porque permiten que 346 00:17:01,810 --> 00:17:06,074 nos a organizar a información, se cadra, un pouco máis eficiente que 347 00:17:06,074 --> 00:17:06,740 quizais doutra forma. 348 00:17:06,740 --> 00:17:10,240 Non necesariamente para almacenar cada peza de información relevante 349 00:17:10,240 --> 00:17:12,230 sobre un usuario na mesma táboa. 350 00:17:12,230 --> 00:17:13,730 Tivemos dúas mesas de alí. 351 00:17:13,730 --> 00:17:15,734 >> Necesitamos gardar nome da nai de todo o mundo, 352 00:17:15,734 --> 00:17:18,900 e quizais non temos seguridade social número, temos a súa data de nacemento. 353 00:17:18,900 --> 00:17:21,819 Isto non sempre é preciso estar na mesma táboa. 354 00:17:21,819 --> 00:17:25,339 Mentres podemos definir relacións entre o tables-- 355 00:17:25,339 --> 00:17:28,440 e é aí onde relacional termo base de datos tipo de vén 356 00:17:28,440 --> 00:17:32,130 en play-- mentres podemos definir relacións entre as táboas, 357 00:17:32,130 --> 00:17:35,545 podemos tipo de compartimentar ou cousas abstractas un camiño; 358 00:17:35,545 --> 00:17:37,670 onde só temos a información realmente importante 359 00:17:37,670 --> 00:17:39,270 nos preocupa en táboa do usuario. 360 00:17:39,270 --> 00:17:43,220 E entón temos información auxiliares ou información adicional noutras táboas 361 00:17:43,220 --> 00:17:48,260 que podemos conectar ao seu principal táboa de usuarios de forma particular. 362 00:17:48,260 --> 00:17:52,200 >> Entón aquí temos estas dúas táboas, pero hai unha relación entre eles, 363 00:17:52,200 --> 00:17:53,010 non? 364 00:17:53,010 --> 00:17:55,070 Parece nome de usuario pode ser algo 365 00:17:55,070 --> 00:17:59,909 que existe en común entre estas dúas mesas diferentes. 366 00:17:59,909 --> 00:18:01,700 Así que se temos agora unha situación onde 367 00:18:01,700 --> 00:18:06,046 quere obter o nome completo do usuario desde mesa do usuario, ea súa nai de 368 00:18:06,046 --> 00:18:07,170 nome de táboa nai? 369 00:18:07,170 --> 00:18:10,960 Non temos unha forma de obter que tal como está, non? 370 00:18:10,960 --> 00:18:17,790 Non hai unha única táboa que contén tanto nome e nome da nai. 371 00:18:17,790 --> 00:18:20,400 Non temos esta opción do que vimos ata agora. 372 00:18:20,400 --> 00:18:22,950 >> E así temos que introducir a idea dun JOIN. 373 00:18:22,950 --> 00:18:24,857 E xunta-se son, probablemente, o máis complex-- 374 00:18:24,857 --> 00:18:27,940 é realmente máis complexa operación imos falar sobre o vídeo. 375 00:18:27,940 --> 00:18:30,040 Son un pouco complicado, pero cando incorporarse o xeito del, 376 00:18:30,040 --> 00:18:31,248 realmente non está moi mal. 377 00:18:31,248 --> 00:18:32,820 É só un caso especial dun SELECT. 378 00:18:32,820 --> 00:18:37,120 Estamos indo para seleccionar un conxunto de columnas dunha táboa de unión 379 00:18:37,120 --> 00:18:40,650 nunha segunda táboa nalgún predicado. 380 00:18:40,650 --> 00:18:45,340 >> Neste caso, pense nisto como isto-- mesa é un círculo aquí, 381 00:18:45,340 --> 00:18:47,530 mesa dous é outro círculo aquí. 382 00:18:47,530 --> 00:18:49,410 E esa parte predicado no medio, é 383 00:18:49,410 --> 00:18:51,701 tipo de como se pensa sobre como un diagrama de Venn, o que 384 00:18:51,701 --> 00:18:52,670 que teñen en común? 385 00:18:52,670 --> 00:18:55,960 Queremos vincular estas dúas táboas a base do que teñen en común 386 00:18:55,960 --> 00:19:01,230 e crear esa táboa hipotética que é a fusión dos dous xuntos. 387 00:19:01,230 --> 00:19:03,480 Entón, imos ver iso nun exemplo e quizais iso vai axuda- 388 00:19:03,480 --> 00:19:04,521 esclarece-lo un pouco. 389 00:19:04,521 --> 00:19:09,260 Entón, talvez desexe seleccionar user.fullname e moms.mother 390 00:19:09,260 --> 00:19:13,220 dos usuarios no que unen mesa nais en todas as situacións 391 00:19:13,220 --> 00:19:16,790 onde a columna nome de usuario é o mesmo entre eles. 392 00:19:16,790 --> 00:19:19,240 E este é un novo sintaxe aquí, ese usuario. 393 00:19:19,240 --> 00:19:20,460 e nais .. 394 00:19:20,460 --> 00:19:26,697 Se eu estou facendo varias táboas xuntos, podo especificar unha táboa. 395 00:19:26,697 --> 00:19:29,530 Podo distinguir, en particular, que en na parte inferior alí. 396 00:19:29,530 --> 00:19:33,220 Podo distinguir o nome de usuario columna da táboa de usuarios 397 00:19:33,220 --> 00:19:36,010 da columna de nome de usuario do moms táboa, que son otherwise-- 398 00:19:36,010 --> 00:19:38,070 se nós só dixemos nome de usuario é igual a username, que realmente non 399 00:19:38,070 --> 00:19:38,970 quere dicir nada. 400 00:19:38,970 --> 00:19:41,440 Queremos facelo onde combinan. 401 00:19:41,440 --> 00:19:46,080 >> Entón eu podo especificar a táboa ea nome da columna, no caso dunha situación 402 00:19:46,080 --> 00:19:48,370 onde sería incerto o que eu estou falando. 403 00:19:48,370 --> 00:19:51,880 Entón, iso é todo o que eu estou facendo non é que eu son dicindo que esta columna desta táboa, 404 00:19:51,880 --> 00:19:54,020 e sendo moi explícito. 405 00:19:54,020 --> 00:19:56,810 Entón, de novo, eu estou escollendo o O nome e nome da nai 406 00:19:56,810 --> 00:20:00,950 a partir da táboa de usuarios conectados en conxunto co cadro de nais en todas as situacións 407 00:20:00,950 --> 00:20:05,960 onde comparten que column-- comparten esa noción nome de usuario. 408 00:20:05,960 --> 00:20:08,580 >> Entón, aquí están as táboas que tiñamos antes. 409 00:20:08,580 --> 00:20:12,210 Este é o estado da nosa base de datos, como hai agora. 410 00:20:12,210 --> 00:20:16,390 A información que estamos extraendo é esta a comezar. 411 00:20:16,390 --> 00:20:19,820 Esta é a nova táboa que imos para crear combinando estes xuntos. 412 00:20:19,820 --> 00:20:23,585 E teña en conta que non estamos destacando Liña de Newman na táboa do usuario, 413 00:20:23,585 --> 00:20:25,960 e non estamos destacando Liña de Kramer na táboa de nais 414 00:20:25,960 --> 00:20:31,250 porque nin un existe en tanto sets-- en ambas as táboas. 415 00:20:31,250 --> 00:20:36,260 >> A única información que é en común entre eles é Jerry é en ambas as táboas 416 00:20:36,260 --> 00:20:39,100 e gcostanza é en ambas as táboas. 417 00:20:39,100 --> 00:20:42,620 E así, cando nós facemos o SQL JOIN, o que get-- e estamos facendo realmente conseguir isto. 418 00:20:42,620 --> 00:20:44,830 É unha especie de unha variable temporal. 419 00:20:44,830 --> 00:20:47,330 É como unha hipotética fusión das dúas táboas. 420 00:20:47,330 --> 00:20:49,930 Nós realmente obter algo como este, onde 421 00:20:49,930 --> 00:20:54,730 Nós fundiu en conxunto as táboas no información que teñen en común. 422 00:20:54,730 --> 00:20:58,334 >> Entón, teña en conta que users.username e columna moms.username, 423 00:20:58,334 --> 00:20:59,250 é exactamente o mesmo. 424 00:20:59,250 --> 00:21:01,820 Esa foi a información que foi consistente dos usuarios 425 00:21:01,820 --> 00:21:02,890 mesa e mesa de nais. 426 00:21:02,890 --> 00:21:04,270 E, así, se fundiu los xuntos. 427 00:21:04,270 --> 00:21:06,919 Foron descartados Kramer porque non existe na táboa de usuarios, 428 00:21:06,919 --> 00:21:09,710 e descartado Newman, porque non existir na táboa de nais. 429 00:21:09,710 --> 00:21:16,450 Polo tanto, esta é a fusión hipotética usando a operación JOIN de SELECT. 430 00:21:16,450 --> 00:21:21,250 >> E entón estabamos mirando ao O nome do usuario e da nai do usuario, 431 00:21:21,250 --> 00:21:24,999 e por iso esta é a información que obteriamos a partir da consulta xeral 432 00:21:24,999 --> 00:21:26,040 que fixemos con SELECT. 433 00:21:26,040 --> 00:21:28,873 Por iso, xuntou as táboas xuntos e extraeu-se estas dúas columnas, 434 00:21:28,873 --> 00:21:31,610 e iso é o que nós ía estar. 435 00:21:31,610 --> 00:21:33,370 Pero SQL se xunta a unha especie de complicado. 436 00:21:33,370 --> 00:21:36,770 Probablemente non vai facelas moi, pero só ter algunha idea do esqueleto 437 00:21:36,770 --> 00:21:41,992 que pode usar para mesturar dous mesas en conxunto, se precisase. 438 00:21:41,992 --> 00:21:43,700 Os dous últimos son unha pouco máis simple eu prometer. 439 00:21:43,700 --> 00:21:48,040 Entón actualización, podemos utilizar o Update para cambiar a información nunha táboa. 440 00:21:48,040 --> 00:21:53,880 O formato xeral é actualizar algúns táboa, establecer algunhas columna para algún valor 441 00:21:53,880 --> 00:21:55,540 ONDE algún predicado é satisfeita. 442 00:21:55,540 --> 00:21:57,850 Así, por exemplo, podemos querer para actualizar a táboa de usuarios 443 00:21:57,850 --> 00:22:04,400 e establecer o contrasinal para Yada Yada, onde o número de identificación é 10. 444 00:22:04,400 --> 00:22:06,400 >> Polo tanto, neste caso, estamos actualizar a táboa de usuarios. 445 00:22:06,400 --> 00:22:08,275 O número de identificación é de 10 para que existen primeira liña, 446 00:22:08,275 --> 00:22:10,690 e queremos actualizar o Yada Yada contrasinal. 447 00:22:10,690 --> 00:22:12,170 E iso é o que vai ocorrer. 448 00:22:12,170 --> 00:22:13,628 É moi sinxelo, non? 449 00:22:13,628 --> 00:22:17,990 É só unha forma moi simple modificación á mesa. 450 00:22:17,990 --> 00:22:22,250 >> Borrar é a operación que adoitabamos eliminar a información a partir dunha táboa. 451 00:22:22,250 --> 00:22:24,817 DELETE FROM táboa WHERE algún predicado é satisfeita. 452 00:22:24,817 --> 00:22:26,900 Queremos eliminar da táboa de usuarios, por exemplo, 453 00:22:26,900 --> 00:22:28,254 onde o nome de usuario é Newman. 454 00:22:28,254 --> 00:22:31,420 Probablemente pode adiviñar o que vai pasar aquí despois de realizar ese SQL 455 00:22:31,420 --> 00:22:35,790 consulta, Newman está desaparecido desde a mesa. 456 00:22:35,790 --> 00:22:40,460 >> Entón, todas esas operacións, como eu xa dixen, Son moi fáciles de facer en phpMyAdmin. 457 00:22:40,460 --> 00:22:43,020 É unha interface moi agradable. 458 00:22:43,020 --> 00:22:45,930 Pero esixe esforzo manual. 459 00:22:45,930 --> 00:22:47,840 Non queremos empregar esforzo manual. 460 00:22:47,840 --> 00:22:51,280 Queremos que os nosos programas para facelo por nós, non? 461 00:22:51,280 --> 00:22:53,190 Entón, nós pode querer facer iso programaticamente. 462 00:22:53,190 --> 00:22:56,410 Queremos incorporar SQL e ter outra cousa para facelo por nós. 463 00:22:56,410 --> 00:23:02,710 >> Pero o que vimos que permite nos a facer algo por medio de programación? 464 00:23:02,710 --> 00:23:03,690 Vimos PHP, non? 465 00:23:03,690 --> 00:23:05,760 Presenta algúns dinamismo nos nosos programas. 466 00:23:05,760 --> 00:23:10,430 E así, por sorte, SQL e PHP xogar moi ben xuntos. 467 00:23:10,430 --> 00:23:13,230 Hai unha función en PHP chamado de consulta, que se pode usar. 468 00:23:13,230 --> 00:23:15,870 E pode pasar como o parámetro ou o argumento 469 00:23:15,870 --> 00:23:19,210 para consultar unha consulta SQL que desexa executar. 470 00:23:19,210 --> 00:23:23,250 E PHP ha facelo no seu nome. 471 00:23:23,250 --> 00:23:25,564 >> Entón, despois de ter conectado para o seu banco de datos con PHP, 472 00:23:25,564 --> 00:23:26,980 hai dúas primarias facelo. 473 00:23:26,980 --> 00:23:29,230 Hai algo chamado MySQLi e algo chamado DOP. 474 00:23:29,230 --> 00:23:31,063 Non imos entrar nunha enorme cantidade detalle alí. 475 00:23:31,063 --> 00:23:32,957 En CS50 usan DOP. 476 00:23:32,957 --> 00:23:34,790 Despois de ter conectado para a súa base de datos, 477 00:23:34,790 --> 00:23:40,980 Pode, entón, facer consultas a base de datos pasando as consultas como argumentos 478 00:23:40,980 --> 00:23:42,730 para funcións PHP. 479 00:23:42,730 --> 00:23:46,460 E cando fai isto, almacenar o conxunto de resultados nunha matriz asociativa. 480 00:23:46,460 --> 00:23:50,290 >> E sabemos como traballar con arrays asociativos en PHP. 481 00:23:50,290 --> 00:23:52,630 Entón, eu podería dicir algo como isto-- $ resultados-- 482 00:23:52,630 --> 00:23:55,470 esta é igual en PHP-- consulta. 483 00:23:55,470 --> 00:23:57,660 E, a continuación, no interior da función de consulta que o argumento 484 00:23:57,660 --> 00:24:00,130 que eu estou pasando para consulta que se parece SQL. 485 00:24:00,130 --> 00:24:01,160 E, de feito, que é SQL. 486 00:24:01,160 --> 00:24:05,700 Esa é a secuencia de consulta que eu faría quere facer no meu base de datos. 487 00:24:05,700 --> 00:24:09,250 >> E así, en vermello, que é PHP. 488 00:24:09,250 --> 00:24:11,890 Esta é SQL que eu son integración con PHP, facendo 489 00:24:11,890 --> 00:24:15,020 que o argumento para a función de consulta. 490 00:24:15,020 --> 00:24:19,640 Quero seleccionar fullname de onde os usuarios número de identificación é igual a 10. 491 00:24:19,640 --> 00:24:22,560 E entón quizais despois de eu ter feito isto, Eu podería dicir algo como isto. 492 00:24:22,560 --> 00:24:25,550 Quero imprimir o Grazas mensaxe para iniciar sesión. 493 00:24:25,550 --> 00:24:32,530 >> E quero que interpolate-- Quero interpolar $ fullname resultados. 494 00:24:32,530 --> 00:24:36,280 E entón é así que eu traballo con iso matriz asociativa que volvese. 495 00:24:36,280 --> 00:24:39,730 $ Fullname faría resultados basicamente acabar imprimindo, 496 00:24:39,730 --> 00:24:42,870 grazas por sesión, Jerry Seinfeld. 497 00:24:42,870 --> 00:24:46,570 Ese era o nome completo onde idnum é igual a 10. 498 00:24:46,570 --> 00:24:48,850 >> E entón todo o que eu estou facendo é que eu estou agora- I almacenado 499 00:24:48,850 --> 00:24:52,780 miña consulta, os resultados da miña investigación e resulta nunha matriz asociativa, 500 00:24:52,780 --> 00:24:56,330 e fullname é o nome do a columna que eu estaba quedando. 501 00:24:56,330 --> 00:25:01,010 Entón esta é a miña clave para os resultados matriz asociativa que quero. 502 00:25:01,010 --> 00:25:05,930 Así Grazas por sesión, $ resultados, fullname imprimirá, se ve 503 00:25:05,930 --> 00:25:08,654 mesmo entre aqueles rizado cintas, Jerry Seinfeld. 504 00:25:08,654 --> 00:25:11,820 E eu vou gusta de imprimir a mensaxe Grazas por facer o login Jerry Seinfeld. 505 00:25:11,820 --> 00:25:16,652 >> Agora, nós probablemente non quere para o disco cousas como esta no código, non? 506 00:25:16,652 --> 00:25:19,860 Podemos querer facer algo coma impresión f, onde podemos substituír e quizais 507 00:25:19,860 --> 00:25:22,443 recoller información diferentes, ou que ter o proceso de consulta 508 00:25:22,443 --> 00:25:23,370 información diferentes. 509 00:25:23,370 --> 00:25:27,920 E así por consulta, a función de consulta ten esa noción de especie de substitucións 510 00:25:27,920 --> 00:25:32,310 moi semellantes para imprimir f por cento s ec por cento, é puntos de interrogación. 511 00:25:32,310 --> 00:25:34,290 >> E podemos utilizar cuestión marcas moi analogamente 512 00:25:34,290 --> 00:25:38,400 para imprimir f para variables de substitución. 513 00:25:38,400 --> 00:25:44,120 Entón, talvez o seu usuario rexistrado anteriormente, e gardou o seu número de identificación de usuario 514 00:25:44,120 --> 00:25:51,710 en $ _SESSION de PHP super- global en clave ID. 515 00:25:51,710 --> 00:25:55,947 Entón, talvez tras sesión, establecer $ _SESSION ID é igual a 10, 516 00:25:55,947 --> 00:25:58,280 Extrapolando dende o exemplo que acabamos de ver unha segunda atrás. 517 00:25:58,280 --> 00:26:01,960 >> E así, cando nós realmente executar Esta consulta os resultados agora, 518 00:26:01,960 --> 00:26:08,440 ía conectar 10, ou o que quere o valor de ID $ _SESSION é. 519 00:26:08,440 --> 00:26:10,790 E así que nos permite ser un pouco máis dinámico. 520 00:26:10,790 --> 00:26:12,699 Non estamos difícil codificación cousas máis. 521 00:26:12,699 --> 00:26:14,490 Estamos salvando información nalgún lugar e, a continuación, 522 00:26:14,490 --> 00:26:18,924 podemos utilizar esta información novo para tipo de xeneralizar o que queremos facer, 523 00:26:18,924 --> 00:26:21,090 e só plugin e cambio o comportamento da nosa páxina 524 00:26:21,090 --> 00:26:26,489 con base no que o número de identificación do usuario en realidade, é despois de sistema. 525 00:26:26,489 --> 00:26:28,530 Tamén é posible, con todo, que os resultados definido 526 00:26:28,530 --> 00:26:30,840 pode consistir en varias liñas. 527 00:26:30,840 --> 00:26:33,990 Nese caso, ten unha matriz de arrays-- 528 00:26:33,990 --> 00:26:35,334 unha matriz de matrices asociativas. 529 00:26:35,334 --> 00:26:37,000 E só precisa facer unha iteración a través dela. 530 00:26:37,000 --> 00:26:41,950 E sabemos como facer unha iteración mediante unha matriz en PHP, non? 531 00:26:41,950 --> 00:26:45,600 Entón aquí é probablemente a máis cousa complexa que vimos ata agora. 532 00:26:45,600 --> 00:26:49,640 Realmente integra tres linguas xuntos. 533 00:26:49,640 --> 00:26:52,920 >> Aquí en vermello, que é un HTML. 534 00:26:52,920 --> 00:26:56,872 Estou aparentemente este é starting-- un fragmento de algúns HTML que eu teño. 535 00:26:56,872 --> 00:26:59,580 Estou empezando un novo parágrafo que di que as nais de Seinfeld de TV. 536 00:26:59,580 --> 00:27:02,350 E, a continuación, inmediatamente despois Estou empezando unha mesa. 537 00:27:02,350 --> 00:27:06,060 E despois diso, eu ter algún PHP, non? 538 00:27:06,060 --> 00:27:08,229 Teño todo este código PHP alí. 539 00:27:08,229 --> 00:27:09,645 Estou parecer vai facer unha consulta. 540 00:27:09,645 --> 00:27:14,180 E para facer a consulta, eu vou estar usando nais seleccionar a partir de nais. 541 00:27:14,180 --> 00:27:15,970 >> Polo tanto, este é getting-- este é SQL. 542 00:27:15,970 --> 00:27:17,300 Así, o azul é o SQL. 543 00:27:17,300 --> 00:27:19,680 O vermello vimos un segundo atrás era HTML. 544 00:27:19,680 --> 00:27:21,360 E o verde aquí é PHP. 545 00:27:21,360 --> 00:27:23,400 Entón, eu estou facendo unha consulta para o meu banco de datos, eu son 546 00:27:23,400 --> 00:27:26,040 a selección de todos os nais na táboa de nais. 547 00:27:26,040 --> 00:27:30,710 Non só limitándose a especial seguidos, estou pedindo para todos eles. 548 00:27:30,710 --> 00:27:33,290 >> Entón eu comprobar que o resultado sexa non é igual a falsa iguais. 549 00:27:33,290 --> 00:27:37,410 Esta é só a miña forma de comprobar especie de se os resultados non é igual a cero, 550 00:27:37,410 --> 00:27:40,260 que veriamos c por exemplo. 551 00:27:40,260 --> 00:27:44,000 Basicamente, esta é só a verificación para facer Asegúrese de que realmente ten datos de volta. 552 00:27:44,000 --> 00:27:47,041 Porque eu non quero comezar a imprimir out datos se eu non conseguir ningún dato. 553 00:27:47,041 --> 00:27:50,690 A continuación, para cada unha delas resulta, como resultado do sintaxe foreach PHP, todo o que eu estou facendo 554 00:27:50,690 --> 00:27:53,399 está imprimindo nais $ resultados. 555 00:27:53,399 --> 00:27:55,940 E entón eu estou indo a obter un conxunto de todas as nais de each-- 556 00:27:55,940 --> 00:27:59,980 é unha matriz de asociativo arrays-- e estou imprimindo 557 00:27:59,980 --> 00:28:03,649 cada un como o seu propio liña dunha táboa. 558 00:28:03,649 --> 00:28:05,690 E iso é realmente bonito moi todo o que existe para ela. 559 00:28:05,690 --> 00:28:07,750 Sei que hai un pouco bit pasando aquí 560 00:28:07,750 --> 00:28:13,210 neste último exemplo con matrices de arrays-- arrays de arrays asociativos. 561 00:28:13,210 --> 00:28:17,340 Pero realmente non só ferver inferior en SQL para facer unha consulta, 562 00:28:17,340 --> 00:28:21,102 xeralmente seleccionando logo de nós xa poñer información na táboa, 563 00:28:21,102 --> 00:28:22,310 e despois é só puxa-lo para fóra. 564 00:28:22,310 --> 00:28:25,710 >> E iso é que sería retirá- neste caso particular. 565 00:28:25,710 --> 00:28:31,120 Queremos extraer todo do individuo nais da táboa moms. 566 00:28:31,120 --> 00:28:35,970 Temos todo un conxunto deles, e tanto para percorrer e imprimir 567 00:28:35,970 --> 00:28:37,630 cada un. 568 00:28:37,630 --> 00:28:40,510 Entón, de novo, este é, probablemente, o exemplo máis complicado 569 00:28:40,510 --> 00:28:44,510 vimos porque estamos mesturando tres diferentes idiomas xuntos, non? 570 00:28:44,510 --> 00:28:50,100 >> De novo, temos aquí HTML en vermello, mesturado con algún SQL aquí no azul, 571 00:28:50,100 --> 00:28:52,049 mesturado con algúns PHP en verde. 572 00:28:52,049 --> 00:28:53,840 Pero todos estes desempeñan ben xuntos, é 573 00:28:53,840 --> 00:28:57,060 só unha cuestión de desenvolvemento bos hábitos de modo que pode comezar 574 00:28:57,060 --> 00:28:58,780 a traballar xuntos de maneira que sexa. 575 00:28:58,780 --> 00:29:03,790 E a única forma de realmente facer iso é practicar, practicar, practicar. 576 00:29:03,790 --> 00:29:06,740 Eu son Doug Lloyd, este é CS50. 577 00:29:06,740 --> 00:29:08,647