[REPRODUCCIÓN DE MÚSICA] DOUG LLOYD: En nuestros videos sobre temas de desarrollo web, hemos mencionado el concepto de una base de datos un par de veces, ¿verdad? Así que una base de datos que está probablemente está familiarizado con de decir utilizando Microsoft Excel o Hojas de cálculo de Google. Es realmente sólo una organizada un conjunto de tablas, filas y columnas. Y una base de datos es donde nuestras tiendas del sitio web información que es importante para nuestro sitio web para que funcione correctamente. De nuevo, un ejemplo muy común aquí se almacenar nombres de usuario y contraseñas en una base de datos, de modo que cuando un usuario se registra en nuestro sitio web, la base de datos se puede consultar para ver Si existe ese usuario en la base de datos. Y si lo son, la comprobación de que su contraseña es correcta. Y si su contraseña es correcta, entonces podemos darles cualquier página que están solicitando. Así que usted está probablemente, de nuevo, familiar con esta idea desde Excel o Google Las hojas de cálculo. Tenemos bases de datos, tablas, filas y columnas. Y eso es realmente una especie del conjunto fundamental del desglose jerárquico aquí. Así que aquí está una hoja de cálculo Excel. Y si alguna vez has abierto este u otro programa similar usted sabe que estas aquí están rows-- 1, 2, 3, 4, 5, 6, 7. Estos son columnas. Tal vez aquí, aunque es posible No utilice esta función terriblemente mucho-- Voy a hacer un zoom en-- tenemos esta idea de una hoja. Así que tal vez estas hojas, si Alterno de ida y vuelta, son diferentes tablas que existir en mi base de datos. Y si seguimos el ejemplo de todo la forma, el nombre de esta base de datos es el libro 1. Tal vez tengo libro 2 y 3 del libro. Así que cada archivo de Excel es un base de datos, cada hoja es una tabla, y en el interior de cada tabla que tengo esta idea de filas y columnas. Entonces, ¿cómo puedo trabajar con esta base de datos? ¿Cómo puedo obtener información de ella? Bueno, hay un lenguaje llamado SQL-- que por lo general sólo llamo Sequel-- y que representa el Lenguaje de consulta estructurado. Y es un lenguaje de programación, pero es una programación bastante limitado idioma. No es exactamente igual que los demás que hemos trabajado. Sin embargo, el propósito de este lenguaje de programación es para consultar una base de datos, a pedir información de una base de datos, encontrar información en una base de datos, y así sucesivamente. También, en CS50-- y es una muy plataforma común, se llama MySQL. Eso es lo que usamos en el curso. Es una fuente abierta plataforma que establece un denominado database-- relacional una base de datos, de manera efectiva. No necesitamos para llegar en demasiados detalles en lo que es una base de datos relacional es. Pero el lenguaje SQL es muy hábil para trabajar con MySQL y otros similares estilos de bases de datos relacionales. Y muchas instalaciones de MySQL venir con algo llamada phpMyAdmin, que es una gráfica de usuario interface-- un GUI-- que hace que sea un poco más fácil de usar para ejecutar consultas de bases de datos, porque las bases de datos no sólo son utilizadas por los programadores avanzados, ¿verdad? A veces hay estas pequeñas empresas, y no pueden darse el lujo de contratar a un equipo de programadores, pero todavía necesitan para almacenar información en una base de datos. Algo así como phpMyAdmin hace que sea muy fácil para alguien que nunca ha programado antes de recoger y familiarizarse con la forma para trabajar con una base de datos. El problema es, phpMyAdmin, mientras es una herramienta fantástica para el aprendizaje sobre las bases de datos, es manual. Vas a tener que iniciar sesión en y ejecutar comandos y el tipo las cosas en forma manual. Y como sabemos por nuestra ejemplo de programación web PHP, tener que hacer de forma manual cosas en nuestro sitio web, si queremos una dinámica, activa sensible sitio web, tal vez no sea el mejor enfoque. Nos gustaría encontrar una manera de quizá automatizar esto de alguna manera. Y SQL nos permitirá hacer esto. Así que cuando vamos a empezar a trabajar con SQL, que primero necesita tener un base de datos para trabajar. Creación de una base de datos se algo que probablemente lo hará en phpMyAdmin, porque solo tendrá que hacerlo una vez, y la sintaxis para hacerlo es mucho más sencillo. Es mucho más fácil hacerlo en una interfaz de usuario gráfica de escribirlo como un comando. El comando puede ser un poco engorroso. Del mismo modo, la creación de una mesa puede conseguir un poco engorroso también. Y así las cosas como la creación de una base de datos y la creación de una mesa, que eres probablemente sólo va a hacer vez-- una vez por mesa, una vez por database-- que está bien hacer eso en una interfaz gráfica. En el proceso de la creación de una mesa, se le también hay que especificar todos los columnas que estarán en esa mesa. ¿Qué tipo de información hacer que desea almacenar en la tabla? Tal vez el nombre de un usuario y fecha de nacimiento, contraseña, número de identificación de usuario, y tal vez ciudad y estado, ¿no? Y por cada vez que queramos añadir un usuario a la base de datos, queremos llegar a los seis de esas piezas de información. Y lo hacemos añadiendo filas a la tabla. Así que primero creamos una base de datos, entonces se crea una tabla. Como parte de la creación una mesa, se nos pide para especificar que cada columna nos gustaría en esta tabla. Y entonces como que empezamos a añadir información para la base de datos y consultar la base de datos más generally-- no sólo añadir, pero todo lo demás nos hacer-- estaremos tratando con filas de la tabla, que es uno la información del usuario para todo el conjunto. Así que cada columna de SQL es capaz de el almacenamiento de datos de un tipo de datos en particular. Así que tipo de eliminamos este idea de los tipos de datos en PHP, pero son de nuevo aquí en SQL. Y hay un montón de tipos de datos. Aquí es sólo 20 de ellos, pero ni siquiera todos ellos. Así que tenemos ideas como INTs-- Integers-- probablemente sabemos que esta columna puede contener números enteros. Y hay variaciones thereon-- SMALLINT, TINYINT, MEDIUMINT, BIGINT. Tal vez no siempre necesitamos cuatro picaduras. Tal vez necesitamos ocho bytes, por lo que puede utilizar estas variaciones en los números enteros a ser un poco más eficiente del espacio. Podemos hacer números decimales, se puede hacer números de punto flotante. Estos son bastante similares. Hay algunas diferencias, y si lo haría gustaría buscar el Tipo SQL de guía, puede ver lo que el ligero diferencias son entre ellos. Tal vez queremos almacenar información sobre fecha y hora. Tal vez estamos hacer el seguimiento de cuando el usuario se unió a nuestro sitio web, y así tal vez queremos tener una columna que es un tiempo de fecha o una marca de tiempo que indica cuando el usuario realmente inscrito. Podemos hacer geometrías y cadenas lineales. Esto es realmente muy bueno. Podríamos trazar un zona geográfica Coordenadas SIG para trazar un área. Así que en realidad puede almacenar ese tipo de información en una columna de SQL. TEXTO está a sólo burbujas gigantes de texto, tal vez. ENUM son bastante interesante. En realidad existen en C. No lo hacemos hablar de ellos porque no son terriblemente uso común, al menos CS50. Pero es un tipo de datos enumerado, que es capaz de mantener los valores limitados. Un muy buen ejemplo aquí sería para crear una enumeración, donde los siete los valores posibles son Domingo, Lunes, Martes Miércoles Jueves Viernes, Sábado, ¿verdad? Ese tipo de datos el día de Semana no existe, pero podríamos crear un tipo de datos enumerado como que esa columna puede solamente nunca sostenga uno de esos siete valores posibles. Hemos enumeramos todos de los valores posibles. Entonces tenemos CHAR y VARCHAR, y yo tengo el color de estos de verde porque estamos en realidad Va a tomar un segundo para hablar de la diferencia entre estas dos cosas. Así CHAR, a diferencia de C, donde CHAR era un solo carácter, SQL en un CHAR se refiere a una cadena de longitud fija. Y cuando creamos este columna, que en realidad puede especificar la longitud de la cadena. Así, en este ejemplo, podríamos decir CHAR (10). Eso significa que cada elemento de esa columna constará de 10 bytes de información. Ni más Ni menos. Así que si lo intentamos y lo ponemos en un 15 bit o un elemento de 15 caracteres o el valor en esta columna, sólo estamos obtenemos la primera 10. Si ponemos en los dos valor a largo carácter, vamos a tener los dos personajes, y luego de ocho picaduras nulos. Nunca vamos a ser más eficientes que eso. Un VARCHAR es algo así como nuestra noción de una cadena que estamos familiarizados con de C o desde PHP. Es una cadena de longitud variable. Y cuando se crea esta columna, sólo especificar las longitudes máximas posibles. Así que tal vez 99, o comúnmente 255. Esa sería la longitud máxima. Y por lo que si nos almacenando 15 cadena de caracteres, usaríamos 15 bytes, tal vez 16 bytes para el terminador nulo. Si estuviéramos almacenar un de tres cadena de caracteres, usaríamos tres o cuatro bytes. Pero no podríamos utilizar el pleno 99. Así que ¿por qué tenemos tanto? Bueno, si tenemos que encontrar la manera mucho algo es con un VARCHAR, tenemos que tipo de iteración a través de ella al igual que lo hicimos en C y averiguar donde se detiene. Mientras que si sabemos que todo en esta columna es de 10 bytes, tal vez sabemos que la información, podemos saltar 10 bytes, 10 bytes, 10 bytes, 10 bytes, y siempre encontrar la principio de la cadena. Así que es posible que tengamos alguna desperdiciado espacio con un CHAR, pero tal vez hay un comercio fuera de tener una mejor velocidad en la navegación de la base de datos. Pero tal vez queremos que la flexibilidad de un VARCHAR en lugar de having-- Si nuestro CHAR era 255, pero la mayoría de nuestros usuarios solamente fueron introduciendo tres o cuatro bytes valor de la información o tres o cuatro caracteres de valor de la información. Sin embargo, algunos usuarios estaban usando todo el 255, tal vez VARCHAR sería más apropiado allí. Es una especie de una solución de compromiso, y generalmente para fines de CS50, usted no tiene que preocuparse demasiado acerca de si se utiliza un CHAR o VARCHAR. Pero en el mundo real, estas cosas no importa porque todas estas columnas ocupan un espacio físico real. Y el espacio físico, en el mundo real, tiene su precio. Así que una otra consideración cuando usted está construyendo una tabla es escoger una columna a ser lo que se llama una clave principal. Y una clave principal es una columna donde cada valor individual es único. Y eso significa que usted puede fácilmente seleccionar una sola fila con sólo mirar en la clave principal de la fila. Así, por ejemplo, en general, con los usuarios, no quieren dos usuarios que tener el mismo número de ID de usuario. Y así, tal vez usted tiene gran cantidad de información, y tal vez dos usuarios pueden tener el mismo nombre-- Tiene John Smith y John Smith. Eso no es necesariamente un problema, porque hay varias personas en el mundo llamado John Smith. Pero sólo tenemos el número de identificación de un usuario 10, un usuario número 11, 12, 13 ID. No tenemos dos usuarios con el mismo número, y así tal vez los números de identificación de usuario sería una buena clave principal. No tenemos toda duplicación, y ahora podemos única identificar cada hilera justo mirando a esa columna. La elección de las claves principales en realidad puede realizar operaciones de tabla subsiguientes mucho más fácil porque se puede aprovechar el hecho de que ciertas filas voluntad ser único, o de un determinado columna de su base de datos o tabla será único para recoger filas particulares fuera. Usted también puede tener una primaria conjunta clave, que usted puede encontrar ocasión utilizar, que es sólo un combinación de dos columnas que se garantiza que sea único. Así que tal vez usted tiene uno columna que es A y B, una columna que es uno, dos, y tres, pero usted sólo alguna vez tener una sola A1, un solo A2, y así sucesivamente y así sucesivamente. Pero es posible que tenga un B2, un C2, o un A1, A2, A3, A4. Así que es posible tener múltiples Como, múltiple B, los múltiples, múltiples parejas, pero nunca se puede tener solamente un sola A1, B2, C3, y así sucesivamente. Así que, como dije, SQL es un lenguaje de programación, pero tiene un vocabulario bastante limitado. No es tan expansiva como C y PHP y otros lenguajes que se habla en el curso. Es un más detallado el lenguaje de lo que somos vamos a hablar en este video, porque en este vídeo vamos a hablar acerca de cuatro operaciones que puede realizar sobre una mesa. Hay más de esto. Podemos hacer más que esto, pero para nuestros propósitos, estamos generalmente va a utilizar sólo cuatro de inserción operations--, seleccionar, actualizar y eliminar. Y es probable que pueda intuitivamente adivinar lo que los cuatro de estas cosas hacen. Pero vamos a ir en un poco de detalles sobre cada uno de ellos. Así que para los fines de esta video, vamos a suponer hemos los dos siguientes tablas de una base de datos única. Tenemos una tabla llamada usuarios que tiene de cuatro columns-- número de identificación, nombre de usuario, contraseña y nombre completo. Y tenemos un segundo mesa en la misma base de datos llamada mamás que acaba de almacenes de información acerca de un nombre de usuario y una madre. Así que para todos los ejemplos en este video, vamos a ser el uso de esta base de datos y actualizaciones posteriores a la misma. Así que digamos que queremos añadir información a una tabla. Eso es lo que hace la operación de inserción. Al explicar todos estos comandos, voy para darle un esqueleto en general a utilizar. Porque en el fondo, las consultas van aspecto muy similar, sólo vamos a estar cambiando ligeramente diferentes piezas de información hacer cosas diferentes con la tabla. Así que para INSERT, el esqueleto se ve algo así como esto. Queremos insertar en una tabla en particular. Entonces tenemos un paréntesis abierto y una lista de columnas que queremos poner valores en. Cerrar paréntesis, el los siguientes valores y, a continuación otra vez, listamos los valores queremos poner en la mesa. Así un ejemplo de este sería el siguiente. Quiero insertar en la tabla usuarios la siguiente columns-- nombre de usuario, contraseña y nombre completo. Así que una nueva fila en la que me estoy poniendo en esos tres columnas y estamos va a poner en los valores Newman, USMAIL, y Newman. Así que en este caso, estoy poniendo el newman minúsculas en la columna de nombre de usuario, la contraseña USMAIL, y el nombre de capital plena N Newman en la columna de nombre completo. Así que esto es lo que la base de datos parecía antes. Esto es lo que la tabla de usuarios en la superior que parecía antes de que nos hicimos. Después ejecutamos este consulta, obtenemos esto. Hemos añadido una nueva fila a la tabla. Pero note una cosa que no especificó, pero de alguna manera tengo un valor para, que es este 12 aquí. Yo no he dicho que quería ponga el número de identificación en ese país. Quería poner nombre de usuario, contraseña, nombre completo. Y lo hice, eso está bien. Pero también tengo este 12. ¿Por qué me sale este 12? Bueno, resulta que cuando se está definiendo una columna que se va a ser su clave principal, que suele ser, como he dicho, un número de identificación. No siempre es necesariamente va a ser un número de identificación, pero por lo general es una buena idea haber algún tipo de valor entero. Usted tiene una opción en phpMyAdmin cuando se va a crear la base de datos o su mesa para establecer que columna como incremental automático. Lo cual es una muy buena idea cuando está trabajando con una clave principal, porque quiere todo valor en esa columna que ser único. Y si usted se olvida de especificar para más de una persona, ahora tiene una situación en la que que la columna ya no es único. Usted tendrá dos espacios en blanco, por lo que no pueden ya identificar un column-- o ya no únicamente puede identificar una fila basado en esa columna. Ha perdido todo su valor como clave principal. Y así, al parecer, lo que he hecho aquí se configura el ID de usuario columna de incremento automático para que cada vez que añadir información a la mesa, será automáticamente darme un valor para la clave principal. Así que nunca podré olvidar hacerlo porque la base de datos lo hará por mí. Así que eso es un poco agradable. Y por eso es que tenemos 12 allí, porque he establecer que la columna hasta la subasta de automóviles. Si he añadido otra persona que sería 13, si he añadido otra persona que sería 14, y así sucesivamente. Así que vamos a hacer una inserción más. Vamos a insertar en la tabla de las madres, en en particular, el nombre de usuario y la madre de columna, los valores Kramer y Babs Kramer. Y por lo que tuvimos antes. Después ejecutamos que Consulta SQL, tenemos esto. Hemos añadido Kramer y Babs Kramer a la mesa de las mamás. Así que ha de insertar. SELECT es lo que usamos para extraer información de la tabla. Así que esta es la forma en que obtenemos la información de la base de datos. Y los comandos de modo SELECT van a ser utilizado con mucha frecuencia en la programación. El general framework-- la esqueleto en general se parece a esto. Seleccione un conjunto de columnas de una mesa, y luego opcionalmente puede especificar un condición-- o lo que normalmente llamamos un predicado, suele ser el término que utilizamos en SQL. Pero es básicamente lo que filas particulares que quieren conseguir. Si lo desea, en lugar de obtener todo, reducirla, aquí es donde usted haría eso. Y a continuación, opcionalmente, también puede ordenar por una columna en particular. Así que tal vez usted quiere tener cosas ordenados alfabético basado en una columna o por orden alfabético basado en otro. Una vez más, WHERE y ORDER BY son opcionales. Pero probablemente estarán useful-- particular DONDE será útil para reducir por lo que no lo hace obtener toda la base de datos de ida y tiene que procesarlo, que acaba de llegar las piezas de lo que te importa. Así, por ejemplo, puede ser que desee seleccionar Número de identificación y nombre completo de los usuarios. Entonces, ¿qué podría este aspecto? Así que aquí está mi tabla de usuarios. Quiero seleccionar IDNUM y nombre completo de los usuarios. ¿Qué voy a conseguir? Voy a conseguir esto. No limitar la búsqueda, así que estoy obtener el número de identificación para cada fila y me estoy poniendo el pleno nombre de cada fila. OK. ¿Qué pasa si quiero seleccionar contraseña de los usuarios WHERE-- ahora Estoy añadiendo una condición, un predicate-- donde IDNUM es inferior a 12. Así que aquí está mi base de datos de nuevo, mi tabla de usuarios de la parte superior. ¿Qué voy a tener si quiero seleccionar esa información, la contraseña, donde ID de usuario o IDNUM está a menos de 12? Voy a conseguir este información de nuevo, ¿verdad? Sucede que IDNUM es 10, menos de 12, número de identificación de 11 a menos de 12. Me estoy poniendo la contraseña para esas filas. Eso es lo que pedí. ¿Y esto? ¿Qué pasa si quiero seleccionar estrellas de la mesa de mamás, donde nombre de usuario es igual a Jerry? OK, seleccione estrella es la especial especie de comodín llamados que utilizamos para conseguir todo. Así que están diciendo seleccione username madre coma, que pasó a ser el único dos columnas de esta tabla, Yo sólo puedo seleccionar estrellas y tener todo donde el nombre de usuario es igual a Jerry. Y eso es lo que me gustaría tener si he hecho esa pregunta en particular. Ahora, son las bases de datos grandes porque permiten nosotros organizamos la información tal vez un poco más eficientemente que nos podría de otra manera. No necesariamente a almacenamos cada pieza relevante de la información acerca de un usuario en la misma tabla. Teníamos dos mesas allí. Necesitamos almacenar nombre de la madre de todos, y tal vez no tenemos la seguridad social número, tenemos su fecha de nacimiento. Eso no siempre necesita para estar en la misma tabla. Mientras podemos definir relaciones entre el tables-- y ahí es donde que relacional término base de datos de tipo de trata en play-- el tiempo que podemos definir relaciones entre las tablas, podemos especie de compartimentar o cosas abstractas de una manera, donde sólo tenemos la información realmente importante nos preocupamos en la tabla del usuario. Y luego tenemos información auxiliar o información adicional en otras tablas que podemos conectar de nuevo a la principal tabla de usuarios de una manera particular. Así que aquí tenemos estas dos tablas, pero hay una relación entre ellos, ¿derecho? Parece como nombre de usuario podría ser algo que existe en común entre estas dos tablas diferentes. ¿Y qué si ahora tenemos una situación en la que que desee obtener el nombre completo de un usuario la mesa del usuario, y su madre de nombre de la tabla de la madre? No tenemos una manera de conseguir que tal y como está, ¿no? No hay una sola mesa que contiene tanto el nombre completo y el nombre de la madre. No tenemos esa opción de lo que hemos visto hasta ahora. Y así tenemos que introducir la idea de un JOIN. Y se une son probablemente el más complex-- en realidad es más compleja operación vamos a hablar en el video. Son un poco complicado, pero una vez que el cuelgue de ella, que en realidad no están tan mal. Es sólo un caso especial de un SELECT. Vamos a seleccionar un conjunto de columnas de una tabla de unión en una segunda mesa en algún predicado. En este caso, pensar en ello como esto-- Mesa es un círculo aquí, mesa dos es otro círculo aquí. Y esa parte de predicados en el medio, que es algo así como si usted piensa acerca como un diagrama de Venn, lo Qué tienen en común? Queremos vincular estos dos tablas en base a lo que tienen en común y crear esta tabla hipotética que es la fusión de los dos juntos. Así que vamos a ver esto en un ejemplo y tal vez eso va a ayudar aclararlo un poco. Así que tal vez desea seleccionar user.fullname y moms.mother de los usuarios se unen en el mesa mamás en cada situación donde la columna el nombre de usuario es el mismo entre ellos. Y este es un nuevo sintaxis aquí, este usuario. y las mamás .. Si estoy haciendo varias tablas juntos, puedo especificar una tabla. Puedo distinguir, en particular en en que en la parte inferior allí. Puedo distinguir el nombre de usuario la columna de la tabla de usuarios de la columna nombre de usuario del mesa de madres, que son otherwise-- si acabamos de decir nombre de usuario es igual nombre de usuario, que en realidad no significar cualquier cosa. Queremos hacerlo donde coinciden. Así que puedo especificar la tabla y el nombre de la columna en caso de una situación donde sería poco claro lo que estoy hablando. Así que eso es todo lo que estoy haciendo no estoy diciendo esta columna de esta tabla, y ser muy explícito. Así que de nuevo, estoy seleccionando la nombre completo y el nombre de la madre de la tabla de usuarios conectados entre sí con la tabla de las mamás en cada situación donde comparten que column-- comparten ese nombre de usuario noción. Así que aquí están las tablas que teníamos antes. Este es el estado de nuestra base de datos, tal como existe ahora. La información que estamos extrayendo Es este para empezar. Esta es la nueva tabla que vamos para crear la combinación de estos juntos. Y notamos que no estamos destacando Fila de Newman en la tabla del usuario, y no estamos destacando Fila de Kramer en la tabla de las mamás porque no existe ninguno en tanto sets-- en ambas tablas. La única información que se encuentra en común entre ellos es Jerry es en ambas tablas y gcostanza es en ambas tablas. Y así, cuando hacemos el SQL JOIN, lo que get-- y estamos haciendo realmente conseguir esto. Es una especie de una variable temporal. Es como una hipotética fusión de las dos tablas. En realidad obtenemos algo como este, donde hemos fusionado las mesas en la información que tienen en común. Así notar que users.username y la columna moms.username, que es exactamente el mismo. Esa fue la información que era coherente de los usuarios mesa y la mesa de las mamás. Y así que ellos se fusionaron. Descartamos Kramer porque no existía en la tabla de usuarios, y se descartó Newman, porque que no existe en la tabla mamás. Así que esta es la fusión hipotética mediante la operación JOIN de SELECT. Y luego que estábamos buscando para el el nombre completo del usuario y la madre del usuario, y por lo que esta es la información que que se pueden conseguir de la consulta general que hicimos con SELECT. Así que nos unimos a las mesas y se extrajeron esas dos columnas, y eso es lo que iba a conseguir. Pero SQL se une a una clase de complicado. Usted probablemente no va a hacer demasiado, pero sólo tener alguna idea del esqueleto que se puede utilizar para combinar dos mesas si necesitabas. Los dos últimos son un poco más simple lo prometo. Así que la actualización, podemos utilizar ACTUALIZACIÓN para cambiar la información en una tabla. El formato general es actualizar algunos mesa, SET alguna columna a algún valor DONDE algún predicado está satisfecho. Así, por ejemplo, podríamos querer para actualizar la tabla de usuarios y establecer la contraseña para yada yada, donde el número ID es 10. Así que en este caso, estamos la actualización de la tabla de usuarios. El número de identificación es 10 para esa primera fila allí, y queremos actualizar la contraseña para yada yada. Y eso es lo que ocurriría. Es bastante sencillo, ¿verdad? Es sólo una muy simple modificación a la tabla. DELETE es la operación que solíamos eliminar la información de una tabla. DELETE FROM tabla WHERE algún predicado está satisfecho. Queremos eliminar de la tabla de usuarios, por ejemplo, donde el nombre de usuario es Newman. Usted probablemente puede adivinar lo que va a pasar aquí después ejecutamos que SQL consulta, Newman se ha ido de la mesa. Así que todas estas operaciones, como he dicho, son muy fáciles de hacer en phpMyAdmin. Es una interfaz de usuario muy amigable. Pero sí requiere esfuerzo manual. No queremos emplear esfuerzo manual. Queremos que nuestros programas a hacer esto por nosotros, ¿no? Así que podríamos querer hacer esta programación. Queremos incorporar SQL y tienen algo más que hacer esto por nosotros. Pero ¿qué hemos visto que permite que hagamos programación algo? Hemos visto PHP, ¿verdad? Introduce algunos dinamismo a nuestros programas. Y así, por fortuna, SQL y PHP jugar muy bien juntos. Hay una función en PHP llamada de consulta, que se puede utilizar. Y usted puede pasar por el parámetro o argumento para consultar una consulta SQL que desea ejecutar. Y PHP lo hará en su nombre. Así que después de que ha conectado a su base de datos con PHP, hay dos primarias que haces esto. Hay algo que se llama MySQLi y algo llamado DOP. No vamos a entrar en una enorme cantidad de detalle allí. En CS50 utilizamos DOP. Después de haber conectado a su base de datos, a continuación, puede hacer consultas su base de datos pasando las consultas como argumentos a las funciones de PHP. Y cuando lo hace, se almacena el conjunto de resultados en un array asociativo. Y sabemos cómo trabajar con matrices asociativas en PHP. Así que podría decir algo así- $ resultados-- esto es en PHP-- es igual a la consulta. Y luego en el interior del función de consulta que el argumento que estoy pasando para consultar que se parece a SQL. Y de hecho, que es SQL. Esa es la cadena de consulta que lo haría desea ejecutar en mi base de datos. Y así, en rojo, esto es PHP. Esta es SQL que soy integrando en PHP haciendo que el argumento de la función de consulta. Quiero seleccionar nombre completo de usuarios, donde el número de identificación es igual a 10. Y entonces tal vez después de que yo he hecho, Yo podría decir algo como esto. Quiero imprimir el mensaje Gracias por ingresar. Y lo quiero interpolate-- Quiero interpolar $ resultados nombre completo. Y así es como yo trabajo con eso matriz asociativa que regresé. $ resultados nombre completo haría básicamente terminan de imprimir, gracias por ingresar, Jerry Seinfeld. Ese era el nombre completo donde IDNUM es igual a 10. Y así, todo lo que estoy haciendo es que estoy ahora-- guardé mi consulta, los resultados de mi búsqueda y los resultados en un array asociativo, y nombre completo es el nombre de la columna que estaba recibiendo para. Así que esa es mi llave en los resultados matriz asociativa que quiero. Así Gracias por ingresar, $ resultados, nombre completo se imprima, se pegará justo en medio de los rizada llaves, Jerry Seinfeld. Y me va a gustar para imprimir el mensaje Gracias por ingresar Jerry Seinfeld. Ahora, es probable que no queremos duro cosas de código como ese, ¿no? Podríamos querer hacer algo como de impresión f, donde podemos sustituir y tal vez recopilar información diferente, o tal vez que el proceso de consulta información diferente. Y así, la consulta, la función de consulta tiene esta noción de tipo de sustituciones muy similar a imprimir f ciento s y el porcentaje de c, es signos de interrogación. Y podemos usar pregunta marcas muy análoga para imprimir f a las variables de sustitución. Así que tal vez el usuario ha iniciado sesión anterior, y guardó su número de ID de usuario en $ _SESSION de PHP súper global en el ID de la llave. Así que tal vez después de que se registran en, configura $ _SESSION ID es igual a 10, extrapolando a partir del ejemplo que acabamos de ver hace un segundo. Y así, cuando en realidad nos ejecutamos Esta consulta los resultados ahora, sería conectar 10, o lo que sea el valor de ID $ _SESSION es. Y para que nos permite ser un poco más dinámico. No estamos de codificación dura cosas más. Estamos ahorrando información en alguna parte y después podemos usar esa información de nuevo para tipo de generalizar lo que queremos hacer, y acaba de plug-in y el cambio el comportamiento de nuestra página basado en lo que el número de identificación del usuario en realidad es después de haber iniciado la sesión. También es posible, sin embargo, que sus resultados establecen podría consistir en varias filas. En cuyo caso, usted tiene una serie de arrays-- una matriz de matrices asociativas. Y sólo tiene que recorrer a través de él. Y sabemos la forma de repetición a través de una matriz en PHP, ¿verdad? Así que aquí es probablemente la más cosa compleja que hemos visto hasta ahora. En realidad, se integra tres idiomas juntos. Aquí en rojo, esto es algo de HTML. Aparentemente estoy starting-- esto es un fragmento de algo de HTML que tengo. Estoy empezando un nuevo párrafo que dice que las mamás de Seinfeld de televisión. Y a continuación, inmediatamente después Estoy empezando una mesa. Y luego, después de eso, tener algo de PHP, ¿verdad? Tengo todo este código PHP en ese país. Al parecer, voy a hacer una consulta. Y para hacer la consulta, voy a a utilizar las madres Selecciona de las mamás. Así que este se getting-- esto es SQL. Así que el azul es SQL. El rojo que vimos hace un segundo estaba HTML. Y el verde aquí es PHP. Así que estoy haciendo una consulta a mi base de datos, estoy seleccionar todos los madres en la mesa de las mamás. No sólo el estrechamiento hacia abajo a lo particular fila, lo que estoy pidiendo a todos ellos. Entonces puedo comprobar si el resultado se no es igual a los iguales falsa. Esto es sólo mi manera de comprobar especie de si los resultados no es igual a null, que veríamos c por ejemplo. Básicamente esto es sólo comprobando hacer Seguro que en realidad tiene datos de nuevo. Porque yo no quiero empezar a imprimir salida de datos si no he tenido ningún dato. Luego, para cada resultado como resultado la foreach sintaxis de PHP, todo lo que estoy haciendo está imprimiendo madres $ resultado. Así que voy a obtener un conjunto de todas las madres de each-- es un conjunto de asociativa arrays-- y estoy imprimiendo cada uno de ellos como su propia fila de una tabla. Y eso es muy bonito todo lo que hay que hacer. Sé que hay un poco de poco pasando aquí En este último ejemplo, con matrices de arrays-- matrices de matrices asociativas. Pero en realidad se limita a hervir en SQL para hacer una consulta, por lo general la selección después de que ya hemos poner la información en la tabla, y luego simplemente tirando de él. Y esto es nos tire de ella en este caso particular. Queremos extraer todo del individuo madres de la tabla mamás. Tenemos todo un conjunto de ellos, y nosotros querer recorrer e imprimir cada uno. Así que de nuevo, esto es probablemente el ejemplo más complicado que hemos visto porque estamos mezclando de tres diferentes idiomas juntos, ¿no? Una vez más, tenemos HTML aquí en rojo, mezclado con un poco de SQL aquí en azul, mezclado con un poco de PHP en verde. Pero todos ellos juegan muy bien juntos, es sólo es cuestión de desarrollar buenos hábitos de modo que usted puede obtener que trabajen juntos de la manera deseada. Y la única manera de hacerlo realmente tan es practicar, practicar y practicar. Soy Doug Lloyd, esto es CS50.