Hola, y bienvenidos a nuestra conferencia sobre SQL.
Así que esta es una introducción muy,
muy corta a SQL.
Me encanta SQL.
Estaba hablando con un estudiante
el otro día y me dijeron,
«SQL es mi idioma favorito».
Y dije, «Tengo que estar de acuerdo en que
SQL también es mi idioma favorito».
Debido a que SQL es tan hermoso,
ni siquiera necesita escribir bucles en SQL,
escribimos bucles en lenguajes como
Python solo porque tenemos que hacerlo.
El problema es que SQL es perfecto,
pero no es la forma en que podríamos escribir
algo tan complejo como Linux o Python.
Y entonces SQL no es realmente la forma en que piensan las computadoras,
tenemos estas cosas llamadas motores de bases de datos,
y estos motores de bases de datos hacen que
las cosas funcionen realmente, muy bien.
Y por lo tanto, SQL es una excelente manera de organizar los datos,
pero se ha trabajado mucho en
manteniendo esos datos organizados y haciéndolo simple.
Así que es como si hubiera esta abstracción,
y es mucho trabajo hacer que esa abstracción funcione.
Así que quiero empezar con un poco
de historia antes de las bases de datos,
y podrías pensar, «Bueno, antes de las bases de datos
, ¿cómo podría ser eso?»
Bueno, en los viejos tiempos,
y si ves viejas películas con computadoras,
ves fotos que tienen
estas máquinas de cinta en
el fondo y están girando.
Y el giro de la máquina de cinta es el tipo
de manifestación física de un cálculo.
Y tenía que ver con el hecho de que en los viejos tiempos, las computadoras
no tenían suficientes datos
para almacenar todos sus datos en la memoria o en un disco,
ni siquiera teníamos discos en los primeros días.
En los primeros días, las cintas eran lo que teníamos,
y usamos una especie de variación de las cintas de audio,
y en lugar de audio,
contenían datos, ceros y unos.
Y así la forma en que funcionaban las cosas en los viejos tiempos
para que pudieras tener una base de datos, por así decir,
era la base de datos todo
tus datos grabados en una cinta.
Y la clave de una cinta es que
era una cosa física,
y así que tuviste que rebobinarla,
ir hacia adelante y hacia atrás.
Y la mayoría de ustedes probablemente
nunca han visto una cinta de casete o una cinta de ocho pistas
o una cinta de carrete a carrete,
pero es una pieza física larga de mil pies de plástico,
y para obtener los datos al final,
tuvo que girar hasta que llegó allí.
Y así no fue lo que llamamos acceso aleatorio,
lo que significa que en un acceso aleatorio,
ya sea la memoria o la unidad de disco,
acceso aleatorio le permite llegar a
en cualquier lugar aproximadamente en una cantidad fija de tiempo.
Mientras que, si estás cerca de algo en una cinta,
puedes llegar a ella muy rápidamente.
Si estás lejos, tienes que ir,
y luego esperar, y luego volver.
Así que esto llevó a un patrón
donde cada noche nosotros
tomábamos la cinta de los saldos de cuentas de ayer.
Digamos que somos un banco,
y estamos teniendo gente subiendo a la ventana,
poniendo dinero, sacando dinero.
Y entonces lo que haríamos es poner todas las transacciones
, a veces en tarjetas perforadas físicamente,
y luego las ordenábamos, ¿verdad?
Y digamos que tenemos 26 cuentas y la persona C muestra
hasta suma $10 y la persona F
aparece y resta $10, y etc, etc.
Y entonces lo que tendríamos en la noche,
obtendríamos estos todos ordenados,
y había máquinas físicas que
realmente ordenar estos en el primeros días,
y luego tendríamos el viejo equilibrio,
A, B, C, D,
E, F, sentado en una cinta en orden, ordenado en orden.
Y comenzaríamos un proceso después de que el banco cerrara
donde leíamos el primer disco de la cinta como A,
leíamos la primera transacción de las tarjetas,
y las comparábamos.
Y si la cinta fuera
anterior a la transacción
o inferior, simplemente la copiaríamos, así que la copiaríamos.
Y entonces el B se compararía con el C,
y B se copiarían,
y luego C se encontraría,
y luego nos daríamos cuenta de que los datos C,
tendríamos que actualizar los datos C,
y agregar $10 al saldo, y luego escribiríamos eso.
Y notarán mientras escribimos esto,
estamos ordenando, está en orden ordenado.
Entonces copiaríamos D, no tenemos nada para D,
y simplemente sería copiado.
Copiaríamos E, no tenemos nada para E,
y simplemente se copiaría,
y luego tendríamos, oops, olvidamos poner F en esta foto,
tendríamos F y restaríamos 10, y lo copiaríamos.
Y entonces terminaríamos con
el tipo de cosas que tuvimos que hacer esa noche,
y luego lo que haríamos es que tendríamos
estos nuevos datos actualizados que fueron
todos ordenados en orden de cuenta.
Y luego a la noche siguiente,
moveríamos la cinta,
la nueva cinta sería la vieja cinta,
y lo haríamos una y otra vez.
Y a veces estos procesos funcionaban
durante cuatro o cinco horas porque las cintas eran largas o
llegó a ser varias cintas,
y así una gran cantidad de computación fue
hecho después de que los bancos cerraran a las cinco en punto,
entonces un grupo de personas entraba,
los llamábamos operadores,
y montarían estas cintas y ejecutarían
estos trabajos y simplemente se sentaban allí y miraban
estas cintas girando mientras los datos estaban siendo
copiados de una a otra.
Así que sí, eso es bastante genial.
Afortunadamente, ya no es así como lo hacemos.
Lo que hizo para que no tengamos que hacer
esto es la invención de las unidades de disco.
Y las unidades de disco son medios magnéticos,
al igual que las unidades de cinta,
pero la diferencia era que estaban
en estos platos giratorios.
Y así que lo que podías hacer es que los datos
estaban en una serie de círculos concéntricos en estos platos,
y entonces tenías una cabeza
que podía entrar y salir rápidamente.
Y así la velocidad a la que se podía acceder a los datos fue
una combinación con la velocidad a la que
la cabeza podía moverse a un determinado cilindro,
y había que esperar hasta que los datos llegaran.
Y así a veces tendrías 5.400 revoluciones por minuto.
Así que eso significa que 5.400,
5.000 veces por minuto,
que es 100 veces por segundo.
Esperarías 100 de segundo por ello.
Y así que esto es mucho mejor que esperar como un minuto y medio,
dos minutos, incluso 10 minutos para girar una cinta.
Así que el problema era,
es entonces estamos como, «Ok,
ahora que tenemos esta maravillosa tecnología,
podemos almacenar todos nuestros datos nocturnos
en un disco porque es suficiente espacio,
¿cómo construimos
tecnología para hacer un buen uso de esto?»
Y una gran cantidad de investigación,
mucha ciencia de la computación,
mucha investigación de proveedores entró en
entender cómo usar mejor esta nueva cosa del disco.
Recuerdo hablar con la gente como,
porque solíamos usar un disquete,
que eran mucho más lentos,
así que no fueron 5.400.
Así que podría tomar un cuarto de segundo mover
la cabeza y podría tomar
casi un segundo girar alrededor,
que todavía era mucho más rápido que 10 minutos, ¿verdad?
Así que es como un segundo para llegar a
en cualquier lugar del disquete.
Y construiríamos enfoques para almacenar datos,
y comenzaríamos con esta cosa física
y lo oiríamos gruñendo y
moviéndose y gruñendo y moviéndose,
y luego llegaría a una mejor manera
para almacenar los datos,
y luego gruñir y moverse menos,
y su la cosa iría más rápido.
Así que esto fue como una cosa de investigación.
Eran buenos viejos tiempos cuando las computadoras realmente hacían ruidos,
y podías cambiar tu código dentro de las computadoras.
Y lo primero, por supuesto, que hicimos fue sólo
tomó esas actualizaciones maestras secuenciales y las puso,
pero eso resultó no ser lo mejor.
Y esa fue una especie de investigación es,
no sólo cómo podemos hacer lo que
solíamos hacer en datos que no podían
ser accedidos aleatoriamente, y en su lugar,
digamos vamos a aprovecharlo.
Y así una gran cantidad de investigación, un montón de proveedores,
había un montón de software muy caro
que la gente compró para decir,
«Mira, eres un banco,
y realmente quieres saber cómo funciona esto.»
Y entonces lo que pasó fue en los años 60 y 70,
los vendedores de computadoras estaban luchando,
y se les ocurrió una técnica,
que en comparación con nuestra técnica de base de datos actual,
fue simplemente trivialmente simple,
pero tomó mucho trabajo en ese entonces,
y lucharían con todos los otros proveedores de computadoras,
y dirían, «Nuestro mecanismo secuencial de índice
es mejor».
Y Vendor 2 diría,
«Nuestro enfoque de red es mejor».
Y luego se sentaban, y
lucharían entre sí,
y luego los pobres clientes serían como,
«Ni siquiera sé de lo que estás hablando.»
Y entonces simplemente compraban
las cosas del vendedor que los llevó
fuera al golf o para
el mejor almuerzo o los llevó en un viaje a Florida.
Y entonces simplemente se adaptarían
a cualquier cosa que hiciera ese proveedor.
Y así fue realmente un poco de miedo porque estábamos
mudando a un lugar donde estabas encerrado en un vendedor,
y luego una vez que estás encerrado en
un proveedor, estás en mal estado.
Y así el gobierno de Estados Unidos,
en particular, tenía una tonelada
de dinero y estaba comprando toneladas de computadoras,
tanto para el procesamiento normal de datos como para
cosas estratégicas como militares,
y así estaban comprando toneladas de computadoras y
sabían que estos vendedores,
si llegaron a el punto en el que
los encerraron en un solo proveedor,
que el proveedor podría dictar el precio.
Y así el gobierno federal, a través del NIST,
el Instituto Nacional de Estándares y Tecnología,
decidió que las bases de datos necesitaban un estándar.
Necesitaban una manera para que
pudiéramos hablar con cualquier base de datos de cualquier proveedor usando
la misma técnica y no tener que hacer un proveedor,
y luego si cambiaba de proveedor,
tenía que reescribir completamente su software.
Así que el NIST no especificó cómo iba a funcionar esta abstracción,
este estándar.
Acaban de traer a los proveedores y dijeron:
«Vamos a dejar de usar
tu software si no encuentras un estándar».
Y fue un momento perfecto porque a pesar de
los vendedores pensaron que todo era perfecto y maravilloso,
había mucha ventaja.
Y en particular, había
este concepto de bases de datos relacionales,
que en aquel entonces era más de
una teoría matemática de una mejor manera de almacenar
y recuperar datos de lo que era
una tecnología disponible prácticamente implementada.
Y así SQL, y esta es Liz Fong,
a quien fui e hice una entrevista en NIST,
ella habla de los primeros días,
es una gran entrevista,
los primeros días de cómo este estándar SQL realmente hizo
tanto sentido y realmente fijo
la industria y consiguió que la industria funcione muy bien- Sí.
Y te recomiendo que eches un vistazo a
este video sólo para que puedas ver.
Ahora, lo que SQL básicamente dijo fue que
no nos preocupemos tanto
sobre dónde están los datos en realidad en el disco, porque los
enfoques de base de datos anteriores fueron
nosotros los programadores sabrían que había
cilindros y posiciones,
y colocaría las cosas de ciertas maneras,
y nosotros haría índices
y miraríamos los índices nosotros mismos,
todo tipo de cosas diferentes,
o leeríamos a un solo lugar en el disco y eso
tendría una dirección del siguiente lugar
se supone que debemos leer en el disco.
Y dijeron, Sabes qué,
no nos preocupemos tanto por
la estructura de almacenamiento físico en el escritorio, pero en su lugar,
vamos a llegar a un lenguaje
por el cual podemos expresar lo que
queremos leer, escribir, actualizar,
y eliminar en el disco en un lenguaje muy simple,
y entonces podemos construir una pieza de software
que podría haber muchos formatos de disco debajo de eso.
Y entonces todos podríamos simplemente usar este idioma y usted podría
comprar el Vendedor A y usar
este idioma y el Vendedor B y usar este lenguaje,
y luego incluso podría compararlo y decir,
«Aquí hay un montón de cosas en este idioma.
¿Qué proveedor puede ejecutar esto más rápido?»
Y así el NIST también tenía una serie de puntos de referencia,
TPC fueron algunos de los puntos de referencia.
Y lo que hicieron es básicamente lo hicieron
para que esto fuera como un lenguaje hermoso y simple,
y es lo que llamamos SQL.
Creo que en algún momento se llamó
el lenguaje de consulta simple,
y es el lenguaje que usamos para hablar con bases de datos.
Y lo interesante es lo que SQL nos permitió hacer
realmente en los años 60 y 70 cuando salió por primera vez,
fue hablar con las bases de datos de estilo antiguo como index,
secuencial y bases de datos de estilo de red,
y como esta nueva forma llamada bases de datos relacionales,
que tenía como esta impresionante base matemática,
pero se implementó mal en la primera vez,
podríamos decir, «Oh raro».
Cuando el rendimiento de las bases de datos relacionales llegó a
el punto en que era tan bueno como las otras bases de datos,
entonces simplemente podíamos cambiar y podríamos hablar del mismo SQL.
Así que permitió una increíble innovación
durante un período de 10 o incluso 15 años,
donde la abstracción nos permitió mejorar las bases de datos en
de una manera maravillosa sin
realmente tener que cambiar cómo nosotros como programadores las usamos.
Bastante impresionante, seré honesto.
Y así que he estado hablando de esta idea de
bases de datos relacionales, y bases de datos relacionales,
y voy a admitir que cuando vi por primera vez
bases de datos relacionales a principios de la década de 1980, estoy como,
esto es basura, porque de nuevo,
pude escuchar disquetes y sabía que
estábamos moviendo una cosa y tuve
tanta conciencia de lo que estaba pasando,
y me encantó esa conciencia.
Y las bases de datos relacionales como escondieron
lo que estaba pasando detrás de esta capa,
y resultó que cada vez que lo usaba,
era más lento porque aún no era inteligente.
Y así las bases de datos relacionales comenzaron
como una idea matemática como
la mejor manera teórica de representar
redes de datos con columnas,
y filas, y conexiones, y uniones,
y hablaremos de todo eso eventualmente.
Y fue una idea hermosa y las matemáticas eran correctas.
Solo tomó mucho tiempo llegar a
el punto donde las matemáticas superiores de
bases de datos relacionales funcionaron
mejor que los altamente inteligentemente
optimizados sistemas de bases de datos de generación anterior.
Así que hay muchos sistemas de bases de datos comunes
con los que se encontrará.
Algunos de ellos son de código abierto,
algunos de ellos son comerciales.
Postgres y MySQL son de código abierto.
Postgres es probablemente el más
intrincado y complejo y rico,
Oracle es una intrincada, compleja,
y rica base de datos que es
disponible por mucho y mucho dinero,
y Microsoft tiene una base de datos llamada SQL Server.
Y todas estas bases de datos que estamos viendo evolucionaron en
un sentido después de que existiera la especificación SQL,
por lo que simplemente construyeron SQL.
Había bases de datos heredadas que tipo de aprendido SQL.
Y hay muchas otras bases de datos.
SQLite es lo que en realidad vamos a usar
con este curso,
y es super cool, super rápido.
En su teléfono celular,
probablemente tenga 40 copias de SQLite,
y en su coche, probablemente tenga 40 copias de
SQLite, porque es una pequeña base de datos incrustada real.
No es realmente bueno para la escala de producción.
Cuando tienes 100 usuarios
golpeando simultáneamente un sitio web,
Postgres, MySQL u Oracle o SQL Server
son realmente una especie de bases de datos de multiprocesamiento real en línea.
Pero SQLite es genial porque es realmente simple.
Almacena todo en un archivo,
podemos mover el archivo, etc.
Así que me encanta SQLite,
y en esta clase y en esta cosa
vamos a hablar de SQLite.
Pero todo lo que hablamos
se aplica a todos estos diferentes sistemas de bases de datos.
Así que lo primero que tienes que hacer cuando
vas a trabajar con la base de datos es que tienes
tienes que llegar a un contrato
entre tú y la base de datos
en cuanto a cuál es la forma de
las columnas, cuán anchas son las columnas,
qué tipo de datos vas a almacenar en esto.
Y luego informa cómo
el software de la base de datos va a
estructurar esa base de datos como en el disco.
Y parte de lo que estás haciendo es que estás
permitiendo que el software de base de datos, MySQL,
o Postgres, o SQLite, optimice su almacenamiento.
Es mucho más inteligente que tú.
Algo como Oracle, o MySQL,
o Postgres probablemente representa mil millones de dólares,
si no más, de investigación y
desarrollo sobre la mejor manera
para almacenar y recuperar datos.
Y ni siquiera necesitas saber nada de eso.
Usted acaba de decir, mira, voy a tener estas columnas,
va a tener 100 caracteres de texto,
entonces voy a tener un entero y
un número de coma flotante, luego 3,000 caracteres de texto,
y te preocupas por todo ese detalle.
Pero la clave es si usted acaba de decir,
«Voy a almacenar todo lo que quiera», entonces no puede optimizar,
y así está esta cosa donde usted tiene que
hacer un contrato al principio y decir,
«Así es exactamente como voy a diseñar
los datos mientras hablo con el sistema de base de datos.
y luego puedes averiguar cómo
diseñar los datos en el disco real.»
Y entonces eso se llama el esquema o el modelo de base de datos,
y construir un modelo de base de datos es en sí mismo una cosa genial.
Así que si estás construyendo una aplicación compleja,
tienes estos modelos y tienen conexiones,
y eventualmente hablaremos de todo eso.
Pero es una cosa crítica decir
que eso es un contrato entre usted y
el software de base de datos para
el software de base de datos puede
optimizar el almacenamiento de la base de datos.
Ahora, una vez que haya dado el esquema,
entonces puede escribir consultas que dependan de ese esquema.
Así que puede tener una columna llamada
correo electrónico y una columna llamada nombre,
y luego puede insertar datos en
la base de datos usando ese esquema,
puede recuperar datos usando el esquema,
puede cambiar los datos en algún lugar profundo dentro de la base de datos,
y luego puede eliminar datos.
Espera un segundo. - ¿Qué? - Hola. - Hola.
¿Qué estás haciendo ahí abajo? Oh, maldita sea.
Lo siento, lo siento. Eres una mala criatura.
Mira eso. Me preguntaba qué era ese ruido.
Ven aquí. Tengo que presentarte a toda esta gente.
Ven aquí.
No te estás comportando.
Así que esta es Shelby.
Hola Shelby. Así que esta es Shelby. Este es mi cachorro.
Estoy tratando de mantenerla fuera de
la jaula y dejarla sentarse y pasar por mis pies,
y ella tiene algunos juguetes masticables.
Hola Shelby. Ella es Shelby.
Ella está interrumpiendo.
Estás interrumpiendo mi conferencia. Pero eres lindo.
Así que deja de masticar la pluma,
mastica tus juguetes masticables que te di, ¿de acuerdo?
Déjenme pasar por esta conferencia.
Vale, puedes bajar.
Simplemente deja de masticarlo.
Lo siento por la interrupción del perro.
Estaba oyendo ruidos de masticación y pensé,
tomé todo, pero luego
había una pluma en el suelo,
y así la pluma, pobre pluma cumple con el Sr. Cachorro.
Oh, bueno. Vale, ¿dónde estaba?
SQL. CRUD, crear, leer,
actualizar y eliminar datos.
Y entonces nuestro siguiente paso es
realmente hacer algo de SQL y crear una base de datos.
[MÚSICA]