Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

translated SQL LESSON 1 - iPython Notebook #17

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
217 changes: 115 additions & 102 deletions translations/es/novice/sql/01-select.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -12,37 +12,37 @@
"level": 2,
"metadata": {},
"source": [
"Selecting Data"
"Seleccionando Datos"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In the late 1920s and early 1930s,\n",
"Durante finales de la d\u00e9cada de 1920 e inicios de la d\u00e9cada de 1930,\n",
"William Dyer,\n",
"Frank Pabodie,\n",
"and Valentina Roerich led expeditions to the\n",
"[Pole of Inaccessibility](http://en.wikipedia.org/wiki/Pole_of_inaccessibility)\n",
"in the South Pacific,\n",
"and then onward to Antarctica.\n",
"Two years ago,\n",
"their expeditions were found in a storage locker at Miskatonic University.\n",
"We have scanned and OCR'd the data they contain,\n",
"and we now want to store that information\n",
"in a way that will make search and analysis easy.\n",
"y Valentina Roerich lideraron expediciones hacia el\n",
"[Polo de Inaccesibilidad](http://es.wikipedia.org/wiki/Polo_de_inaccesibilidad)\n",
"en el Pac\u00edfico Sur,\n",
"y luego hacia la Ant\u00e1rtica.\n",
"Hace dos a\u00f1os,\n",
"sus expediciones fueron halladas en un casillero en la Universidad de Miskatonic.\n",
"Hemos escaneado la informaci\u00f3n que contienen, y le hicimos un reconocimiento \u00f3ptico de caracteres (OCR),\n",
"y ahora queremos almacenar dicha informaci\u00f3n\n",
"de una manera que facilite su b\u00fasqueda y an\u00e1lisis.\n",
"\n",
"We basically have three options:\n",
"text files,\n",
"a spreadsheet,\n",
"or a database.\n",
"Text files are easiest to create,\n",
"and work well with version control,\n",
"but then we would then have to build search and analysis tools ourselves.\n",
"Spreadsheets are good for doing simple analysis,\n",
"they don't handle large or complex data sets very well.\n",
"We would therefore like to put this data in a database,\n",
"and these lessons will show how to do that."
"B\u00e1sicamente tenemos tres opciones:\n",
"archivos de texto,\n",
"una hoja de c\u00e1lculo,\n",
"o una *database* (base de datos).\n",
"Los archivos de texto son los m\u00e1s f\u00e1ciles de crear,\n",
"y funcionan bien con sistemas de control de versiones,\n",
"pero entonces nosotros mismos tendr\u00edamos que desarrollar herramientas de b\u00fasqueda y an\u00e1lisis.\n",
"Las hojas de c\u00e1lculo son \u00fatiles para realizar an\u00e1lisis simples,\n",
"aunque no manejan muy bien conjuntos de datos que sean grandes y complejos.\n",
"Por lo tanto, nos gustar\u00eda colocar toda esta informaci\u00f3n en una base de datos,\n",
"y estas lecciones mostrar\u00e1n c\u00f3mo hacer eso."
]
},
{
Expand All @@ -53,57 +53,57 @@
]
},
"source": [
"#### Objectives\n",
"#### Objetivos\n",
"\n",
"* Explain the difference between a table, a record, and a field.\n",
"* Explain the difference between a database and a database manager.\n",
"* Write a query to select all values for specific fields from a single table."
"* Explicar la diferencia entre una tabla, un registro, y un campo.\n",
"* Explicar la diferencia entre una base de datos y un gestor de bases de datos.\n",
"* Escribir una *query* para seleccionar todos los valores correspondientes a campos espec\u00edficos de una tabla."
]
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"A Few Definitions"
"Algunas Definiciones"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"A [relational database](../../gloss.html#relational-database)\n",
"is a way to store and manipulate information\n",
"that is arranged as [tables](../../gloss.html#table-database).\n",
"Each table has columns (also known as [fields](../../gloss.html#field-database)) which describe the data,\n",
"and rows (also known as [records](../../gloss.html#record-database)) which contain the data.\n",
"Una [*relational database*](../../gloss.html#relational-database) (base de datos relacional)\n",
"es una forma de almacenar y manipular informaci\u00f3n\n",
"organizada en [*tables*](../../gloss.html#table-database) (tablas).\n",
"Cada tabla tiene columnas (tambi\u00e9n conocidas como [*fields*](../../gloss.html#field-database) (campos)) las cuales describen los datos,\n",
"y filas (tambi\u00e9n conocidas como [*records*](../../gloss.html#record-database) (registros)) las cuales contienen los datos.\n",
" \n",
"When we are using a spreadsheet,\n",
"we put formulas into cells to calculate new values based on old ones.\n",
"When we are using a database,\n",
"we send commands\n",
"(usually called [queries](../../gloss.html#query))\n",
"to a [database manager](../../gloss.html#database-manager):\n",
"a program that manipulates the database for us.\n",
"The database manager does whatever lookups and calculations the query specifies,\n",
"returning the results in a tabular form\n",
"that we can then use as a starting point for further queries.\n",
"Cuando utilizamos una hoja de c\u00e1lculo,\n",
"introducimos f\u00f3rmulas en las celdas para calcular nuevos valores en base a los valores ya conocidos.\n",
"Cuando utilizamos una base de datos,\n",
"enviamos comandos\n",
"(usualmente llamados [*queries*](../../gloss.html#query) (consultas))\n",
"a un [*database manager*](../../gloss.html#database-manager) (gestor de bases de datos):\n",
"un programa que manipula la base de datos por nosotros.\n",
"El gestor de bases de datos realiza todas las b\u00fasquedas y c\u00e1lculos especificados en la *query*,\n",
"devolviendo los resultados organizados en una tabla\n",
"que luego podremos utilizar como punto de partida para *queries* posteriores.\n",
" \n",
"> Every database manager—Oracle,\n",
"> IBM DB2, PostgreSQL, MySQL, Microsoft Access, and SQLite—stores\n",
"> data in a different way,\n",
"> so a database created with one cannot be used directly by another.\n",
"> However,\n",
"> every database manager can import and export data in a variety of formats,\n",
"> so it *is* possible to move information from one to another.\n",
"> Cada gestor de bases de datos—Oracle,\n",
"> IBM DB2, PostgreSQL, MySQL, Microsoft Access, and SQLite—almacena\n",
"> datos de modo diferente,\n",
"> asi que una base de datos creada con alguno de ellos no puede ser utlizada directamente por otro.\n",
"> Sin embargo,\n",
"> cada gestor de bases de datos puede importar y exportar datos en una variedad de formatos,\n",
"> por lo tanto **es** posible mover informaci\u00f3n de uno a otro.\n",
"\n",
"Queries are written in a language called [SQL](../../gloss.html#sql),\n",
"which stands for \"Structured Query Language\".\n",
"SQL provides hundreds of different ways to analyze and recombine data;\n",
"we will only look at a handful,\n",
"but that handful accounts for most of what scientists do.\n",
"Las *queries* son escritas en un lenguaje llamado [SQL](../../gloss.html#sql),\n",
"cuyas siglas en ingl\u00e9s representan \"*Structured Query Language*\" (\"Lenguaje de Consulta Estructurado\").\n",
"SQL proporciona cientos de diferentes formas de analizar y recombinar datos;\n",
"s\u00f3lo prestaremos atenci\u00f3n a unos pocos,\n",
"pero que son v\u00e1lidos para la mayor parte del trabajo que los cient\u00edficos realizan.\n",
"\n",
"The tables below show the database we will use in our examples:"
"Las siguientes tablas muestran la base de datos que utilizaremos en nuestros ejemplos:"
]
},
{
Expand All @@ -113,7 +113,7 @@
"<table>\n",
"<tr>\n",
"<td valign=\"top\">\n",
"**Person**: people who took readings.\n",
"**Person**: las personas que tomaron mediciones.\n",
"\n",
"<table>\n",
" <tr> <th>ident</th> <th>personal</th> <th>family</th> </tr>\n",
Expand All @@ -124,7 +124,7 @@
" <tr> <td>danforth</td> <td>Frank</td> <td>Danforth</td> </tr>\n",
"</table>\n",
"\n",
"**Site**: locations where readings were taken.\n",
"**Site**: ubicaciones geogr\u00e1ficas d\u00f3nde se tomaron las mediciones.\n",
"\n",
"<table>\n",
" <tr> <th>name</th> <th>lat</th> <th>long</th> </tr>\n",
Expand All @@ -133,7 +133,7 @@
" <tr> <td>MSK-4</td> <td>-48.87</td> <td>-123.4</td> </tr>\n",
"</table>\n",
"\n",
"**Visited**: when readings were taken at specific sites.\n",
"**Visited**: las fechas en que se tomaron las mediciones.\n",
"\n",
"<table>\n",
" <tr> <th>ident</th> <th>site</th> <th>dated</th> </tr>\n",
Expand All @@ -148,7 +148,7 @@
"</table>\n",
"</td>\n",
"<td valign=\"top\">\n",
"**Survey**: the actual readings.\n",
"**Survey**: las mediciones tomadas.\n",
"\n",
"<table>\n",
" <tr> <th>taken</th> <th>person</th> <th>quant</th> <th>reading</th> </tr>\n",
Expand Down Expand Up @@ -183,22 +183,30 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"Notice that three entries&mdash;one in the `Visited` table,\n",
"and two in the `Survey` table&mdash;are shown in red\n",
"because they don't contain any actual data:\n",
"we'll return to these missing values [later](#s:null).\n",
"For now,\n",
"let's write an SQL query that displays scientists' names.\n",
"We do this using the SQL command `select`,\n",
"giving it the names of the columns we want and the table we want them from.\n",
"Our query and its output look like this:"
"Cuatro tablas conforman nuestra base de datos: *Person* (Persona), *Site* (Sitio), *Visited* (Visitados) y *Survey* (Sondeo). "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"N\u00f3tese que tres entradas&mdash;una en la tabla `Visited`,\n",
"y dos en la tabla `Survey`&mdash;se muestran en rojo\n",
"ya que no contienen ning\u00fan dato:\n",
"volveremos a estos valores faltantes [luego](#s:null).\n",
"Por ahora,\n",
"escribamos una *query* SQL que muestre los nombres de los cient\u00edficos.\n",
"Para esto, utilizamos el comando SQL `select`,\n",
"proporcionando los nombres de las columnas que deseamos y la tabla de la cual deseamos que provengan.\n",
"Nuestra *query* y su resultado se ven as\u00ed:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%load_ext sqlitemagic"
"%load_ext sqlitemagic\n",
"# 'sqlitemagic' es una extensi\u00f3n de iPython que permite ejecutar queries SQL y mostrar su resultado en tablas."
],
"language": "python",
"metadata": {},
Expand All @@ -210,7 +218,9 @@
"collapsed": false,
"input": [
"%%sqlite survey.db\n",
"select family, personal from Person;"
"select family, personal from Person;\n",
"# los nombres de las columnas \"family\" y \"personal\" son, respectivamente,\n",
"# abreviaturas de \"family name\" (apellido) y \"personal name\" (nombre propio)."
],
"language": "python",
"metadata": {},
Expand Down Expand Up @@ -238,13 +248,13 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"The semi-colon at the end of the query\n",
"tells the database manager that the query is complete and ready to run.\n",
"We have written our commands and column names in lower case,\n",
"and the table name in Title Case,\n",
"but we don't have to:\n",
"as the example below shows,\n",
"SQL is [case insensitive](../../gloss.html#case-insensitive)."
"El s\u00edmbolo punto y coma al final de la *query* \n",
"le indica al gestor de bases de datos que la consulta est\u00e1 completada y lista para ser ejecutada.\n",
"Hemos escrito nuestros comandos y el nombre de columna en letra min\u00fascula,\n",
"y el nombre de la tabla con la primera letra en may\u00fascula,\n",
"pero no estamos obligados a hacerlo:\n",
"como se muestra en el siguiente ejemplo,\n",
"SQL es [*case insensitive*](../../gloss.html#case-insensitive) (insensible a may\u00fasculas y min\u00fasculas)."
]
},
{
Expand Down Expand Up @@ -280,22 +290,22 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"Whatever casing convention you choose,\n",
"please be consistent:\n",
"complex queries are hard enough to read without the extra cognitive load of random capitalization."
"Cualquiera que sea la distribuci\u00f3n de may\u00fasculas y min\u00fasculas que utilices,\n",
"por favor se consistente: \n",
"las *queries* complejas son suficientemente dif\u00edciles de leer sin la carga cognitiva adicional causada por un uso aleatorio de las may\u00fasculas y min\u00fasculas."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Going back to our query,\n",
"it's important to understand that\n",
"the rows and columns in a database table aren't actually stored in any particular order.\n",
"They will always be *displayed* in some order,\n",
"but we can control that in various ways.\n",
"For example,\n",
"we could swap the columns in the output by writing our query as:"
"Volviendo a nuestra *query*, \n",
"es importante entender que\n",
"las filas y columnas en una base de datos, en realidad, no est\u00e1m almacenadas en ning\u00fan orden particular.\n",
"Ellas siempre ser\u00e1n **mostradas** en alg\u00fan orden,\n",
"pero podemos controlar eso de varias maneras.\n",
"Por ejemplo,\n",
"podr\u00edamos intercambiar las columnas en el resultado escribiendo nuestra *query* as\u00ed:"
]
},
{
Expand Down Expand Up @@ -331,15 +341,18 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"or even repeat columns:"
"o tambi\u00e9n repetir columnas:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%%sqlite survey.db\n",
"select ident, ident, ident from Person;"
"select ident, ident, ident from Person;\n",
"# select (seleccionar): Comando SQL utilizado para indicar los campos de la tabla cuyos datos deseamos extraer.\n",
"# from (de, desde): Palabra reservada SQL utilizada para hacer referencia a la tabla de la cual deseamos extraer\n",
"# el nombre de la columna \"ident\" es la abreviatura de \"identification\" (identificaci\u00f3n)"
],
"language": "python",
"metadata": {},
Expand Down Expand Up @@ -367,8 +380,8 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"As a shortcut,\n",
"we can select all of the columns in a table using `*`:"
"Y como atajo,\n",
"podemos seleccionar todas las columnas en una tabla utilizando `*`:"
]
},
{
Expand Down Expand Up @@ -404,23 +417,23 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Challenges\n",
"#### Desaf\u00edos\n",
"\n",
"1. Write a query that selects only site names from the `Site` table.\n",
"1. Escribe una *query* que seleccione solamente los nombres de sitio de la tabla `Site`.\n",
"\n",
"2. Many people format queries as:\n",
"2. Muchas presonas escriben sus *queries* con el siguiente formato:\n",
"\n",
" ~~~\n",
" SELECT personal, family FROM person;\n",
" ~~~\n",
"\n",
" or as:\n",
" o as\u00ed:\n",
"\n",
" ~~~\n",
" select Personal, Family from PERSON;\n",
" ~~~\n",
"\n",
" What style do you find easiest to read, and why?"
" \u00bfCu\u00e1l de estos estilos te parece m\u00e1s f\u00e1cil de leer, y por qu\u00e9?"
]
},
{
Expand All @@ -431,13 +444,13 @@
]
},
"source": [
"#### Key Points\n",
"#### Aspectos Clave\n",
"\n",
"* A relational database stores information in tables,\n",
" each of which has a fixed set of columns and a variable number of records.\n",
"* A database manager is a program that manipulates information stored in a database.\n",
"* We write queries in a specialized language called SQL to extract information from databases.\n",
"* SQL is case-insensitive."
"* Una base de datos relacional almacena informaci\u00f3n en tablas,\n",
" cada una de las cuales tiene un n\u00famero fijo de columnas y un n\u00famero variable de registros.\n",
"* Un gestor de bases de datos es un programa que manipula informaci\u00f3n almacenada en una base de datos.\n",
"* Escribimos *queries* en un lenguaje especializado llamado SQL para extraer informaci\u00f3n de bases de datos.\n",
"* SQL es insensible a may\u00fasculas y min\u00fasculas."
]
}
],
Expand Down
Loading