[Música tocando] Doug LLOYD: Nos nosos vídeos sobre temas de desenvolvemento web, nós mencionados o concepto de unha base de datos ás veces, non? Entón é unha base de datos Probablemente está familiarizado coa dende dicir usando Microsoft Excel ou follas de cálculo de Google. É realmente só unha organizada conxunto de táboas, liñas e columnas. E unha base de datos é onde nosas tendas web información que é importante para a nosa web para funcionar correctamente. Unha vez máis, un exemplo moi común aquí está almacenando nome de usuario e contrasinal unha base de datos, de xeito que cando un usuario se conecta nosa web, a base de datos pode ser consultado a ver se o usuario existe na base de datos. E se son, alomenos que a chave correcta. E se o seu contrasinal é correcta, entón podemos darlles calquera páxina están pedindo. Entón, probablemente está, unha vez máis, familiarizado con esta idea de Excel ou Google Spreadsheets. Temos bases de datos, táboas, liñas e columnas. E iso é realmente sorte do conxunto fundamental de desagregación xerárquica aquí. Entón aquí está unha folla de cálculo de Excel. E se xa abriu este ou outro programa similar vostede sabe que estes son aquí rows-- 1, 2, 3, 4, 5, 6, 7. Estes son columnas. Quizais aquí, aínda que pode non usar esta función terriblemente much-- Vou aumentar em-- temos esa idea dunha folla. Entón, talvez estas follas, se Eu cambiar adiante e cara atrás, son diferentes táboas que existe no meu base de datos. E se seguimos a exemplo todo Por certo, o nome do banco de datos é un libro. Poida que eu teña Libro 2 e 3 do libro. Entón, cada ficheiro de Excel é unha base de datos, cada folla é unha táboa, e dentro de cada táboa teño esa idea de liñas e columnas. Entón, como podo traballar con esta base de datos? ¿Como obter información a partir del? Así, hai unha linguaxe chamada SQL-- que normalmente só chamar Sequel-- e que defende o Structured Query Language. E é unha linguaxe de programación, pero é unha programación moi limitado lingua. Non é así como outros que traballamos con. Pero o obxectivo da presente linguaxe de programación é consultar unha base de datos, a pedir información de base de datos, atopar información nun base de datos, e así por diante. Tamén, en CS50-- e é unha moi plataforma común, é chamado de MySQL. Iso é o que usamos no curso. É unha fonte aberta plataforma que establece un chamado database-- relacional unha base de datos, de forma eficaz. Non necesitamos obter en moitos detalles sobre o que unha base de datos relacional é. Pero a linguaxe SQL é moi apto para traballar con MySQL e outros semellantes estilos de bases de datos relacionais. E moitas instalacións de MySQL veñen con algo chamada phpMyAdmin, que é unha gráfica de usuario interface-- un GUI-- que fai que sexa un pouco máis user friendly para realizar consultas de bases de datos, porque os bancos de datos non se usan só por programadores avanzados, non? Ás veces, hai estas pequenas empresas, e eles non poden dar o luxo de contratar un equipo de programadores, pero eles aínda precisan de almacenar información nunha base de datos. Algo así como phpMyAdmin fai que sexa moi doado para alguén que nunca programado antes de incorporarse e familiarizarse coa forma como traballando con unha base de datos. O problema é, phpMyAdmin, mentres é unha ferramenta fantástica para a aprendizaxe sobre bases de datos, é manual. Vai ter que iniciar sesión no Lo e executar comandos e tipo cousas manualmente. E como sabemos da nosa exemplo en programación web PHP, ter que facer manualmente cousas na nosa web, se queremos dinámico, un response activa sitio, quizais non sexa a mellor visión. Queremos atopar un xeito de quizais automatizar isto de algunha maneira. E SQL permitiranos facer. Entón, cando nós imos comezar a traballar con SQL, necesitamos primeiro ter unha base de datos con que traballar. Creación dun banco de datos é algo que probablemente vai facer no phpMyAdmin porque só precisa facer isto unha vez, ea sintaxe para facelo é moito máis simple. É moito máis doado de facelo nunha interface gráfica de usuario que escriba-lo fóra como un comando. A orde pode ser un pouco complicado. Así mesmo, a creación dunha táboa pode obter un pouco complicado tamén. E así as cousas como a creación dunha base de datos e creación dunha táboa, que é probablemente só vai facer once-- unha vez ao táboa, unha vez por database-- non hai problema en facelo en unha interface gráfica. No proceso de creación dunha táboa, vai tamén ten que especificar todos os columnas que estarán nesta táboa. Que tipo de información facer quere almacenar na táboa? Quizais un nome de usuario e data de nacemento, contrasinal, número de identificación do usuario, e quizais cidade e estado, non? E para cada vez que quere engadir un usuario á base de datos, queremos obter todos os seis desas pezas de información. E facemos iso engadindo liñas ao cadro. Entón primeiro creamos unha base de datos, entón creamos unha táboa. Como parte da creación unha mesa, somos invitados para especificar cada columna que queremos nesta táboa. E entón cando comezan a engadir información á base de datos e consultar a base de datos máis generally-- non só engadindo: pero o resto nós fazer-- estaremos lidando con liñas da táboa, que é un información de usuario desde todo o conxunto. Así, cada columna SQL é capaz de a explotación dos datos dun determinado tipo de datos. Entón nós medio que eliminou este idea de tipos de datos en PHP, pero eles están de volta aquí en SQL. E hai unha morea de tipos de datos. Aquí é só 20 deles, pero non o é todo eles. Polo tanto, temos ideas como INTs-- Integers-- nós probablemente sabe que esta columna pode conter números enteiros. E hai variacións thereon-- SMALLINT, TINYINT, MEDIUMINT, BIGINT. Quizais non sempre precisa catro mordidas. Quizais necesitemos de oito bytes, e por iso, pode usar esas variacións en números enteiros para ser un pouco máis eficiente do espazo. Podemos facer números decimais, nós pode facer números de punto flotante. Estes son moi semellantes. Existen algunhas diferenzas, e se faría quere buscar o Tipo SQL de guía, pode ver o que o lixeiro diferenzas entre eles. Quizais a xente quere almacenar información sobre a data e hora. Quizais estamos mantendo o control de cando o usuario se xuntou a nosa web, e quizais por iso que queremos para ter unha columna que é un tempo de data ou un timestamp que indica cando se realmente rexistrarte. Podemos facer xeometrías e cadeas de liñas. Este é realmente moi legal. Poderiamos trazar un área xeográfica a través GIS coordenadas para trazar unha área. Entón, realmente pode almacenar este tipo de información nunha columna SQL. TEXT só blobs xigantes de texto, quizais. Enums son unha especie de interesante. Realmente existen en C. Non facer falar sobre eles porque non son terriblemente comunmente utilizado, polo menos, CS50. Pero é un tipo de datos enumerado, que é capaz de manter valores limitados. Un bo exemplo aquí sería para crear un enum onde a sete valores posibles son domingo, luns, Martes, mércores, xoves, venres, Sábado, non? Que tipo de datos de Day Semana non existe, pero poderiamos crear unha tipo de datos enumerado como que esa columna só pode prender sempre unha desas sete valores posibles. Temos enumerou todo dos valores posibles. Entón temos CHAR e varchar, e eu teño color estas verde porque somos realmente vai levar un segundo para falar sobre a diferenza entre estas dúas cousas. Así, CHAR, a diferenza do C, onde CHAR foi un único personaxe, en SQL CHAR refírese a un unha cadea de lonxitude fixo. E cando nós crear esta columna, nós, en realidade, Pode especificar a lonxitude da corda. Así, neste exemplo, poderiamos dicir CHAR (10). Isto significa que todo elemento de columna consistirá de 10 bytes de información. Nin máis, nin menos. Entón, se nós intentamos e poñer nun 15 bit ou un elemento de 15 caracteres ou valor para esta columna, estamos só obter os 10 primeiros. Se colocarmos en dous carácter valor longo, imos ter os dous caracteres e logo oito mordidas nulos. Nós nunca imos ser máis eficiente do que iso. Un varchar é tipo como nosa noción de unha cadea que estamos familiarizados con de C ou de PHP. É unha cadea de lonxitude variable. E cando se crea Nesta columna, só especificar os lonxitudes máximas posibles. Entón, talvez 99, ou comunmente 255. Iso sería a anchura máxima. E por iso, se estabamos almacenando 15 cadea de caracteres, usariamos 15 bytes, quizais 16 bytes ao terminador nulo. Se estivésemos almacenar unha tres cadea de caracteres, usariamos tres ou catro bytes. Pero nós non usaría a completa 99. Entón, por que temos tanto? Ben, se necesitamos descubrir como tempo algo é cun varchar, temos que tipo de iterate a través del, tal como fixemos en C e descubrir onde para. Tendo en conta que, se sabemos que todo nesta columna é de 10 bytes, quizais sabemos que a información, podemos ir 10 bytes, 10 bytes, 10 bytes, 10 bytes, e atopar o inicio da cadea. Así, podemos ter un espazo desperdiçado cun CHAR, pero quizais haxa un comercio off de ter unha mellor velocidade navegando na base de datos. Pero quizais queremos o flexibilidade dun varchar Se en vez de having-- noso CHAR foi de 255, pero a maioría dos usuarios só se introducir tres ou catro bytes val de información ou tres ou catro caracteres por valor de información. Pero algúns usuarios estaban usando toda a 255, quizais Varchar sería máis apropiado alí. É unha especie de un trade-off, e en xeral, con fins de CS50, non se preocupe moito sobre se usa un CHAR ou varchar. Pero no mundo real, isto non importa, porque todas estas columnas ocupan espazo físico real. E espazo físico, na mundo real, vén nun premio. Entón, outra consideración cando está construíndo unha mesa é escoller unha columna para ser que se chama chave primaria. E unha chave primaria é unha columna onde cada valor único é único. E isto significa que pode facilmente escoller unha soa liña, só de ollar na chave primaria desa liña. Así, por exemplo, xeralmente, cos usuarios, Non quero que dous usuarios teñen o mesmo número de identificación do usuario. E quizais por iso ten moita información, e quizais dous usuarios poden ten o mesmo nome-- tes John Smith e John Smith. Iso non é necesariamente un problema, porque hai varias persoas no mundo chamado John Smith. Pero só temos un número de identificación de usuario 10, un usuario ID número 11, 12, 13. Non temos dous usuarios co mesmo número, e quizais por iso os números de ID de usuario sería unha boa chave primaria. Non temos ningún duplicación, e podemos agora únicamente identificar cada única liña só mirando para esa columna. Escolla as chaves primarias realmente facer operacións de táboa posteriores moito máis fácil porque pode aproveitar o feito de que certas liñas serán ser único, ou unha determinada columna de base de datos ou táboa será exclusivo para escoller liñas particulares para fóra. Tamén pode ter un fondo conxunta clave, que pode considerar ocasión de usar, que non é máis que un combinación de dúas columnas que é garantía para ser exclusivo. Entón, talvez ten un columna que é como e Bs, unha columna que é un, dous, e tres, pero vai sempre só ten un único A1, unha única A2, e así por diante e así por diante. Pero pode ter un B2, un C2, ou unha A1, A2, A3, A4. Así, pode ter varios Como, múltiples Bs, os múltiples, varios pares, pero só poderá ter un único A1, B2, C3, e así por diante. Entón, como dixen, é un SQL linguaxe de programación, pero ten un vocabulario moi limitado. Non é tan expansivo como C e PHP e outras linguaxes que falamos no curso. É un máis detallado lingua que o que somos vai falar neste vídeo, porque neste vídeo imos falar catro operacións que Pode realizar nunha táboa. Hai máis que iso. Podemos facer máis do que iso, pero para os nosos propósitos, estamos xeralmente vai estar usando só catro inserción operations--, seleccionar, actualizar e borrar. E probablemente pode adiviñar intuitivamente o que todos os catro destas cousas fan. Pero nós imos entrar nun pouco de detalle en cada un. Así, para os efectos da presente vídeo, imos supor temos o seguinte dous táboas nunha única base de datos. Temos unha táboa chamada Usuarios que catro columns-- número de identificación, nome de usuario, contrasinal e nome completo. E nós temos unha segunda táboa no mesmo banco de datos chamado Moms que almacena información sobre un nome de usuario e unha nai. Así, para todos os exemplos Neste vídeo, imos estar usando este banco de datos e actualizacións posteriores. Entón, imos dicir que queremos engadir información a unha mesa. Isto é o que fai a operación de inserción. Ao explicar todos estes comandos, eu vou para darlle un esqueleto xeral de usar. Porque, basicamente, as consultas vai mirar moi semellante, nós só estamos indo a estar cambiando lixeiramente diferentes pezas de información para facer cousas diferentes coa táboa. Así, por INSERT, o esqueleto mira o tipo de como este. Queremos introducir en unha táboa específica. Entón temos un paréntese de apertura e unha lista de columnas que queremos poñer valores en. Pechar parénteses, o seguintes valores e, a continuación, de novo, listados os valores queremos poñer enriba da mesa. Polo tanto, un exemplo deste sería a seguinte. Quero introducir na táboa usuarios a seguinte columns-- nome de usuario, contrasinal e nome completo. Así, unha nova liña onde estou poñendo naqueles tres columnas e estamos vai poñer nos valores Newman, USMAIL, e Newman. Polo tanto, neste caso, eu son poñendo a Newman minúsculas na columna de nome de usuario, o contrasinal USMAIL, así como a plena capital de nome N Newman na columna de nome completo. Entón aquí está o que a base de datos parecía antes. Aquí está o que a táboa de usuarios en top parecía antes que fixemos iso. Despois de se executar este consulta, comezan iso. Nós engadimos unha nova liña á táboa. Pero teña en conta unha cousa que eu non especificou, pero de algunha maneira eu teño un valor para o que é este 12 aquí. Eu non dixen que eu quería número de identificación poñer alí dentro. Quería poñer nome de usuario, contrasinal, nome completo. E eu fixen iso, todo ben. Pero eu tamén teño ese 12. Por que eu recibín este 12? Ben, resulta que cando está definindo unha columna que vai ser o seu chave primaria, que é normalmente, como dixen, un número de identificación. Non é sempre necesariamente vai ser un número de identificación, pero normalmente é unha boa idea ser algún tipo de valor enteiro. Ten unha opción en phpMyAdmin cando está creando a base de datos ou a súa mesa para definir que columna como auto incrementado. Que é realmente unha boa idea cando se está a traballar con unha chave primaria, porque quere todos os valores nesa columna para ser exclusivo. E se esquecer de especificar Lo por máis dunha persoa, agora ten unha situación na que columna que non é único. Tes dous espazos en branco, para que non pode xa o identificar un column-- ou xa non pode unicamente identificar unha liña con base nesa columna. Perdeu toda a súa valor como unha chave primaria. E así, ao parecer, o que eu fixen aquí está configurado o ID de usuario columna de auto incremento para que cada xa que eu engadir información para a mesa, el me vai dar automaticamente un valor para a chave primaria. Entón, eu nunca podo esquecer de facelo porque a base de datos vai facelo por min. Entón, iso é ben legal. E é por iso que temos 12 en alí, porque eu teño definir esa columna ata incremento automático. Se eu engadín outra persoa que sería 13, se eu engade outra persoa sería 14, e así por diante. Entón imos facer unha inserción. Nós imos introducir na táboa de nais, en particular, o nome de usuario ea súa nai columna, os valores Kramer e Babs Kramer. E entón tivemos que antes. Despois de que nós executamos Pesquisa, temos iso. Nós engadimos Kramer e Babs Kramer á mesa de nais. Así que é a inserción. Seleccionar é o que usan para extraer información da táboa. Entón é así que chegamos información da base de datos. E é só seleccionar comandos serán moi frecuentemente usada na programación. O xeneral framework-- o esqueleto xeral parece iso. Seleccione un conxunto de columnas de unha mesa, e logo facultativamente pode especificar un ou condition-- o que normalmente chamamos un predicado, xeralmente é o termo que usan en SQL. Pero é basicamente o que particulares liñas que quere obter. Se quere, en vez de comezar todo, reduci-lo, isto é onde faría iso. E, a continuación, opcionalmente, tamén se pode ordenar por unha columna específica. Entón, talvez quere ter cousas clasificados alfabéticamente en base a unha columna ou por orde alfabética en base a outro. Unha vez máis, Where e ORDER BY son opcionais. Pero probablemente vai ser useful-- particularmente ONDE será útil para diminuír para que non obter todo o seu base de datos back e ten que proceso-lo, comeza só as partes del que se preocupa. Así, por exemplo, podería querer seleccionar Número de identificación e nome completo dos usuarios. Entón, o que pode esta aparencia? Entón aquí está a miña táboa de usuarios. Quero seleccionar idnum e fullname dos usuarios. Que eu vou conseguir? Eu estou indo a obter esta. Non reduci-lo, entón eu son obter o número de identificación para cada liña e eu estou empezando a plena nome de cada liña. Aceptar. E se eu queira seleccionar contrasinal dos usuarios WHERE-- agora Estou engadindo unha condición, unha predicate-- onde idnum é inferior a 12. Entón aquí está o meu banco de datos de novo, miña táboa de usuarios de arriba. Que eu vou conseguir, se eu queira selecciona esta información, o contrasinal, onde ID de usuario ou idnum é inferior a 12? Eu estou indo a obter esta información de volta, non? Acontece que idnum é de 10, menos de 12, número de identificación de 11 a menos de 12. Estou empezando a contrasinal para as liñas. Iso é o que eu pedín. Que tal isto? E se eu queira seleccionar estrela do moms mesa onde nome de usuario é igual a Jerry? OK, seleccione estrelas é o especial especie de comodín chamada que usan para obter todo. Entón, eles están dicindo seleccione nome de usuario nai coma, que pasou a ser a única dúas columnas desta táboa, Só podo seleccionar estrela e comezar todo onde o nome de usuario é igual a Jerry. E iso é o que eu ía estar se eu fixen esa consulta particular. Agora, as bases de datos son grandes porque permiten que nos a organizar a información, se cadra, un pouco máis eficiente que quizais doutra forma. Non necesariamente para almacenar cada peza de información relevante sobre un usuario na mesma táboa. Tivemos dúas mesas de alí. Necesitamos gardar nome da nai de todo o mundo, e quizais non temos seguridade social número, temos a súa data de nacemento. Isto non sempre é preciso estar na mesma táboa. Mentres podemos definir relacións entre o tables-- e é aí onde relacional termo base de datos tipo de vén en play-- mentres podemos definir relacións entre as táboas, podemos tipo de compartimentar ou cousas abstractas un camiño; onde só temos a información realmente importante nos preocupa en táboa do usuario. E entón temos información auxiliares ou información adicional noutras táboas que podemos conectar ao seu principal táboa de usuarios de forma particular. Entón aquí temos estas dúas táboas, pero hai unha relación entre eles, non? Parece nome de usuario pode ser algo que existe en común entre estas dúas mesas diferentes. Así que se temos agora unha situación onde quere obter o nome completo do usuario desde mesa do usuario, ea súa nai de nome de táboa nai? Non temos unha forma de obter que tal como está, non? Non hai unha única táboa que contén tanto nome e nome da nai. Non temos esta opción do que vimos ata agora. E así temos que introducir a idea dun JOIN. E xunta-se son, probablemente, o máis complex-- é realmente máis complexa operación imos falar sobre o vídeo. Son un pouco complicado, pero cando incorporarse o xeito del, realmente non está moi mal. É só un caso especial dun SELECT. Estamos indo para seleccionar un conxunto de columnas dunha táboa de unión nunha segunda táboa nalgún predicado. Neste caso, pense nisto como isto-- mesa é un círculo aquí, mesa dous é outro círculo aquí. E esa parte predicado no medio, é tipo de como se pensa sobre como un diagrama de Venn, o que que teñen en común? Queremos vincular estas dúas táboas a base do que teñen en común e crear esa táboa hipotética que é a fusión dos dous xuntos. Entón, imos ver iso nun exemplo e quizais iso vai axuda- esclarece-lo un pouco. Entón, talvez desexe seleccionar user.fullname e moms.mother dos usuarios no que unen mesa nais en todas as situacións onde a columna nome de usuario é o mesmo entre eles. E este é un novo sintaxe aquí, ese usuario. e nais .. Se eu estou facendo varias táboas xuntos, podo especificar unha táboa. Podo distinguir, en particular, que en na parte inferior alí. Podo distinguir o nome de usuario columna da táboa de usuarios da columna de nome de usuario do moms táboa, que son otherwise-- se nós só dixemos nome de usuario é igual a username, que realmente non quere dicir nada. Queremos facelo onde combinan. Entón eu podo especificar a táboa ea nome da columna, no caso dunha situación onde sería incerto o que eu estou falando. Entón, iso é todo o que eu estou facendo non é que eu son dicindo que esta columna desta táboa, e sendo moi explícito. Entón, de novo, eu estou escollendo o O nome e nome da nai a partir da táboa de usuarios conectados en conxunto co cadro de nais en todas as situacións onde comparten que column-- comparten esa noción nome de usuario. Entón, aquí están as táboas que tiñamos antes. Este é o estado da nosa base de datos, como hai agora. A información que estamos extraendo é esta a comezar. Esta é a nova táboa que imos para crear combinando estes xuntos. E teña en conta que non estamos destacando Liña de Newman na táboa do usuario, e non estamos destacando Liña de Kramer na táboa de nais porque nin un existe en tanto sets-- en ambas as táboas. A única información que é en común entre eles é Jerry é en ambas as táboas e gcostanza é en ambas as táboas. E así, cando nós facemos o SQL JOIN, o que get-- e estamos facendo realmente conseguir isto. É unha especie de unha variable temporal. É como unha hipotética fusión das dúas táboas. Nós realmente obter algo como este, onde Nós fundiu en conxunto as táboas no información que teñen en común. Entón, teña en conta que users.username e columna moms.username, é exactamente o mesmo. Esa foi a información que foi consistente dos usuarios mesa e mesa de nais. E, así, se fundiu los xuntos. Foron descartados Kramer porque non existe na táboa de usuarios, e descartado Newman, porque non existir na táboa de nais. Polo tanto, esta é a fusión hipotética usando a operación JOIN de SELECT. E entón estabamos mirando ao O nome do usuario e da nai do usuario, e por iso esta é a información que obteriamos a partir da consulta xeral que fixemos con SELECT. Por iso, xuntou as táboas xuntos e extraeu-se estas dúas columnas, e iso é o que nós ía estar. Pero SQL se xunta a unha especie de complicado. Probablemente non vai facelas moi, pero só ter algunha idea do esqueleto que pode usar para mesturar dous mesas en conxunto, se precisase. Os dous últimos son unha pouco máis simple eu prometer. Entón actualización, podemos utilizar o Update para cambiar a información nunha táboa. O formato xeral é actualizar algúns táboa, establecer algunhas columna para algún valor ONDE algún predicado é satisfeita. Así, por exemplo, podemos querer para actualizar a táboa de usuarios e establecer o contrasinal para Yada Yada, onde o número de identificación é 10. Polo tanto, neste caso, estamos actualizar a táboa de usuarios. O número de identificación é de 10 para que existen primeira liña, e queremos actualizar o Yada Yada contrasinal. E iso é o que vai ocorrer. É moi sinxelo, non? É só unha forma moi simple modificación á mesa. Borrar é a operación que adoitabamos eliminar a información a partir dunha táboa. DELETE FROM táboa WHERE algún predicado é satisfeita. Queremos eliminar da táboa de usuarios, por exemplo, onde o nome de usuario é Newman. Probablemente pode adiviñar o que vai pasar aquí despois de realizar ese SQL consulta, Newman está desaparecido desde a mesa. Entón, todas esas operacións, como eu xa dixen, Son moi fáciles de facer en phpMyAdmin. É unha interface moi agradable. Pero esixe esforzo manual. Non queremos empregar esforzo manual. Queremos que os nosos programas para facelo por nós, non? Entón, nós pode querer facer iso programaticamente. Queremos incorporar SQL e ter outra cousa para facelo por nós. Pero o que vimos que permite nos a facer algo por medio de programación? Vimos PHP, non? Presenta algúns dinamismo nos nosos programas. E así, por sorte, SQL e PHP xogar moi ben xuntos. Hai unha función en PHP chamado de consulta, que se pode usar. E pode pasar como o parámetro ou o argumento para consultar unha consulta SQL que desexa executar. E PHP ha facelo no seu nome. Entón, despois de ter conectado para o seu banco de datos con PHP, hai dúas primarias facelo. Hai algo chamado MySQLi e algo chamado DOP. Non imos entrar nunha enorme cantidade detalle alí. En CS50 usan DOP. Despois de ter conectado para a súa base de datos, Pode, entón, facer consultas a base de datos pasando as consultas como argumentos para funcións PHP. E cando fai isto, almacenar o conxunto de resultados nunha matriz asociativa. E sabemos como traballar con arrays asociativos en PHP. Entón, eu podería dicir algo como isto-- $ resultados-- esta é igual en PHP-- consulta. E, a continuación, no interior da función de consulta que o argumento que eu estou pasando para consulta que se parece SQL. E, de feito, que é SQL. Esa é a secuencia de consulta que eu faría quere facer no meu base de datos. E así, en vermello, que é PHP. Esta é SQL que eu son integración con PHP, facendo que o argumento para a función de consulta. Quero seleccionar fullname de onde os usuarios número de identificación é igual a 10. E entón quizais despois de eu ter feito isto, Eu podería dicir algo como isto. Quero imprimir o Grazas mensaxe para iniciar sesión. E quero que interpolate-- Quero interpolar $ fullname resultados. E entón é así que eu traballo con iso matriz asociativa que volvese. $ Fullname faría resultados basicamente acabar imprimindo, grazas por sesión, Jerry Seinfeld. Ese era o nome completo onde idnum é igual a 10. E entón todo o que eu estou facendo é que eu estou agora- I almacenado miña consulta, os resultados da miña investigación e resulta nunha matriz asociativa, e fullname é o nome do a columna que eu estaba quedando. Entón esta é a miña clave para os resultados matriz asociativa que quero. Así Grazas por sesión, $ resultados, fullname imprimirá, se ve mesmo entre aqueles rizado cintas, Jerry Seinfeld. E eu vou gusta de imprimir a mensaxe Grazas por facer o login Jerry Seinfeld. Agora, nós probablemente non quere para o disco cousas como esta no código, non? Podemos querer facer algo coma impresión f, onde podemos substituír e quizais recoller información diferentes, ou que ter o proceso de consulta información diferentes. E así por consulta, a función de consulta ten esa noción de especie de substitucións moi semellantes para imprimir f por cento s ec por cento, é puntos de interrogación. E podemos utilizar cuestión marcas moi analogamente para imprimir f para variables de substitución. Entón, talvez o seu usuario rexistrado anteriormente, e gardou o seu número de identificación de usuario en $ _SESSION de PHP super- global en clave ID. Entón, talvez tras sesión, establecer $ _SESSION ID é igual a 10, Extrapolando dende o exemplo que acabamos de ver unha segunda atrás. E así, cando nós realmente executar Esta consulta os resultados agora, ía conectar 10, ou o que quere o valor de ID $ _SESSION é. E así que nos permite ser un pouco máis dinámico. Non estamos difícil codificación cousas máis. Estamos salvando información nalgún lugar e, a continuación, podemos utilizar esta información novo para tipo de xeneralizar o que queremos facer, e só plugin e cambio o comportamento da nosa páxina con base no que o número de identificación do usuario en realidade, é despois de sistema. Tamén é posible, con todo, que os resultados definido pode consistir en varias liñas. Nese caso, ten unha matriz de arrays-- unha matriz de matrices asociativas. E só precisa facer unha iteración a través dela. E sabemos como facer unha iteración mediante unha matriz en PHP, non? Entón aquí é probablemente a máis cousa complexa que vimos ata agora. Realmente integra tres linguas xuntos. Aquí en vermello, que é un HTML. Estou aparentemente este é starting-- un fragmento de algúns HTML que eu teño. Estou empezando un novo parágrafo que di que as nais de Seinfeld de TV. E, a continuación, inmediatamente despois Estou empezando unha mesa. E despois diso, eu ter algún PHP, non? Teño todo este código PHP alí. Estou parecer vai facer unha consulta. E para facer a consulta, eu vou estar usando nais seleccionar a partir de nais. Polo tanto, este é getting-- este é SQL. Así, o azul é o SQL. O vermello vimos un segundo atrás era HTML. E o verde aquí é PHP. Entón, eu estou facendo unha consulta para o meu banco de datos, eu son a selección de todos os nais na táboa de nais. Non só limitándose a especial seguidos, estou pedindo para todos eles. Entón eu comprobar que o resultado sexa non é igual a falsa iguais. Esta é só a miña forma de comprobar especie de se os resultados non é igual a cero, que veriamos c por exemplo. Basicamente, esta é só a verificación para facer Asegúrese de que realmente ten datos de volta. Porque eu non quero comezar a imprimir out datos se eu non conseguir ningún dato. A continuación, para cada unha delas resulta, como resultado do sintaxe foreach PHP, todo o que eu estou facendo está imprimindo nais $ resultados. E entón eu estou indo a obter un conxunto de todas as nais de each-- é unha matriz de asociativo arrays-- e estou imprimindo cada un como o seu propio liña dunha táboa. E iso é realmente bonito moi todo o que existe para ela. Sei que hai un pouco bit pasando aquí neste último exemplo con matrices de arrays-- arrays de arrays asociativos. Pero realmente non só ferver inferior en SQL para facer unha consulta, xeralmente seleccionando logo de nós xa poñer información na táboa, e despois é só puxa-lo para fóra. E iso é que sería retirá- neste caso particular. Queremos extraer todo do individuo nais da táboa moms. Temos todo un conxunto deles, e tanto para percorrer e imprimir cada un. Entón, de novo, este é, probablemente, o exemplo máis complicado vimos porque estamos mesturando tres diferentes idiomas xuntos, non? De novo, temos aquí HTML en vermello, mesturado con algún SQL aquí no azul, mesturado con algúns PHP en verde. Pero todos estes desempeñan ben xuntos, é só unha cuestión de desenvolvemento bos hábitos de modo que pode comezar a traballar xuntos de maneira que sexa. E a única forma de realmente facer iso é practicar, practicar, practicar. Eu son Doug Lloyd, este é CS50.