Lines 44-52
Link Here
|
44 |
<c>PostgreSQL</c>. Las ventajas de uno sobre el otro suele traer un |
44 |
<c>PostgreSQL</c>. Las ventajas de uno sobre el otro suele traer un |
45 |
debate largo y tendido, sin embargo es justo decir que PostgreSQL ha |
45 |
debate largo y tendido, sin embargo es justo decir que PostgreSQL ha |
46 |
tenido una concepción más firme de lo que supone son las verdaderas |
46 |
tenido una concepción más firme de lo que supone son las verdaderas |
47 |
estructuras que corresponden a un manejadore de bases de datos |
47 |
estructuras que corresponden a un manejador de bases de datos |
48 |
relacional que MySQL. La mayoría de las características standard como |
48 |
relacional que MySQL. La mayoría de las características estándar como |
49 |
<b>FOREIGN KEY</b> fueron apenas agregados en MySQL versión 5. Sin |
49 |
<b>FOREIGN KEY</b> fueron apenas agregadas en MySQL versión 5. Sin |
50 |
embargo, cualesquiera sea el caso, este documento asume que ha |
50 |
embargo, cualesquiera sea el caso, este documento asume que ha |
51 |
seleccionado PostgreSQL como el manejador de bases de dato que va a |
51 |
seleccionado PostgreSQL como el manejador de bases de dato que va a |
52 |
utilizar. El primer lugar donde comenzar es el proceso |
52 |
utilizar. El primer lugar donde comenzar es el proceso |
Lines 63-69
Link Here
|
63 |
<p> |
63 |
<p> |
64 |
Para comenzar debemos primero hacer <c>emerge</c> al paquete |
64 |
Para comenzar debemos primero hacer <c>emerge</c> al paquete |
65 |
PostgreSQL. Para hacer esto, ejecute primero el siguiente comando para |
65 |
PostgreSQL. Para hacer esto, ejecute primero el siguiente comando para |
66 |
asegurar que las opciones necesarios están correctamente configuradas: |
66 |
asegurar que las opciones necesarias están correctamente configuradas: |
67 |
</p> |
67 |
</p> |
68 |
|
68 |
|
69 |
<pre caption="Revisando las opciones para construir PostgreSQL"> |
69 |
<pre caption="Revisando las opciones para construir PostgreSQL"> |
Lines 184-197
Link Here
|
184 |
<ti>zlib</ti> |
184 |
<ti>zlib</ti> |
185 |
<ti> |
185 |
<ti> |
186 |
Esta opción realmente no se utiliza por PostgreSQL, sino por el |
186 |
Esta opción realmente no se utiliza por PostgreSQL, sino por el |
187 |
comando <c>pg_dump</c> para comprimir las descargas de data |
187 |
comando <c>pg_dump</c> para comprimir las descargas de datos |
188 |
producidas. |
188 |
producidas. |
189 |
</ti> |
189 |
</ti> |
190 |
</tr> |
190 |
</tr> |
191 |
</table> |
191 |
</table> |
192 |
|
192 |
|
193 |
<p> |
193 |
<p> |
194 |
Una vez afinado la construcción de PostgreSQL a sus necesidades |
194 |
Una vez afinada la construcción de PostgreSQL a sus necesidades |
195 |
específicas, continúe con el <c>emerge</c>: |
195 |
específicas, continúe con el <c>emerge</c>: |
196 |
</p> |
196 |
</p> |
197 |
|
197 |
|
Lines 350-357
Link Here
|
350 |
</pre> |
350 |
</pre> |
351 |
|
351 |
|
352 |
<p> |
352 |
<p> |
353 |
La base de datos fue creata exitosamente y podemos confirmar que la |
353 |
La base de datos fue creada exitosamente y podemos confirmar que la |
354 |
base de datos puede rllevar a cabo tareas básicaS. Seguiremos con |
354 |
base de datos puede llevar a cabo tareas básicas. Seguiremos con |
355 |
un drop (borrando) la base de datos con el comando <c>dropdb</c>: |
355 |
un drop (borrando) la base de datos con el comando <c>dropdb</c>: |
356 |
</p> |
356 |
</p> |
357 |
|
357 |
|
Lines 375-393
Link Here
|
375 |
<body> |
375 |
<body> |
376 |
|
376 |
|
377 |
<p> |
377 |
<p> |
378 |
Tal como mensionamos anteriormente, teniendo que hacer login como el |
378 |
Tal como mencionamos anteriormente, teniendo que hacer login como el |
379 |
usuario postgres no es deseable en un entorno multi-usuario. In la |
379 |
usuario postgres no es deseable en un entorno multi-usuario. En la |
380 |
mayoría de los casos habrán varios usuarios y servicios con acceso al |
380 |
mayoría de los casos habrá varios usuarios y servicios con acceso al |
381 |
servidor y cada uno tendrá distintas necesidades y permisos. Para |
381 |
servidor y cada uno tendrá distintas necesidades y permisos. Para |
382 |
manejar esta sicuación se utiliza el comando <c>createuser</c>. Est |
382 |
manejar esta situación se utiliza el comando <c>createuser</c>. Este |
383 |
comando es una alternativa al uso de algunas consultas SQL y es más |
383 |
comando es una alternativa al uso de algunas consultas SQL y es más |
384 |
flexible desde el punto de vista del administrador. Continuaremos |
384 |
flexible desde el punto de vista del administrador. Continuaremos |
385 |
creando dos usuarios, un 'superusario' que a su vez puede agregar |
385 |
creando dos usuarios, un 'superusario' que a su vez puede agregar |
386 |
otros usuarios y administrar la base de datos y un usuario normal: |
386 |
otros usuarios y administrar la base de datos y un usuario normal: |
387 |
</p> |
387 |
</p> |
388 |
|
388 |
|
389 |
<pre caption="Configurando un superuser"> |
389 |
<pre caption="Configurando un superusuario"> |
390 |
<comment>(reemplace a chris con el usuario que desea usar)</comment> |
390 |
<comment>(reemplace a chris con el usuario que desea crear)</comment> |
391 |
$ <i>createuser -a -d -P -E -U postgres -W chris</i> |
391 |
$ <i>createuser -a -d -P -E -U postgres -W chris</i> |
392 |
Enter password for new user: |
392 |
Enter password for new user: |
393 |
Enter it again: |
393 |
Enter it again: |
Lines 435-441
Link Here
|
435 |
Ahora tenemos un usuario que puede crear bases de datos y agregar |
435 |
Ahora tenemos un usuario que puede crear bases de datos y agregar |
436 |
otros usuarios y el principal usuario postgres que puede hacer |
436 |
otros usuarios y el principal usuario postgres que puede hacer |
437 |
cualquier cosa. El usuario creado anteriormente puede hacer login al |
437 |
cualquier cosa. El usuario creado anteriormente puede hacer login al |
438 |
servidor y más nada. En general, los usuarios necesitan insertar y |
438 |
servidor y nada más. En general, los usuarios necesitan insertar y |
439 |
recuperar datos y a veces hacer otras tareas. Para que este usuario |
439 |
recuperar datos y a veces hacer otras tareas. Para que este usuario |
440 |
nuevo pueda hacer algo, debemos establecer los permisos |
440 |
nuevo pueda hacer algo, debemos establecer los permisos |
441 |
adecuados. Esto se puede hacer fácilmente pasando el parámetro |
441 |
adecuados. Esto se puede hacer fácilmente pasando el parámetro |
Lines 454-461
Link Here
|
454 |
Bien, ahora tenemos la base de datos MyDB y al usuario testuser que |
454 |
Bien, ahora tenemos la base de datos MyDB y al usuario testuser que |
455 |
tiene acceso a ella. Para probar esto, haremos login como testuser a |
455 |
tiene acceso a ella. Para probar esto, haremos login como testuser a |
456 |
la nueva base de datos con el programa <c>psql</c>. Este programa es |
456 |
la nueva base de datos con el programa <c>psql</c>. Este programa es |
457 |
lo usado para conectarse a una base de datos PostgreSQL desde la línea |
457 |
el usado para conectarse a una base de datos PostgreSQL desde la línea |
458 |
de comando. Para establecer la conexión a la nueva base de datos |
458 |
de comandos. Para establecer la conexión a la nueva base de datos |
459 |
haremos: |
459 |
haremos: |
460 |
</p> |
460 |
</p> |
461 |
|
461 |
|
Lines 474-483
Link Here
|
474 |
</pre> |
474 |
</pre> |
475 |
|
475 |
|
476 |
<p> |
476 |
<p> |
477 |
Ahora que testuser está conectado al la base de datos puede comenzar a |
477 |
Ahora que testuser está conectado a la base de datos puede comenzar a |
478 |
ejecutar algunos comandos. Para ir viendo cómo es el manejo de |
478 |
ejecutar algunos comandos. Para ir viendo cómo es el manejo de |
479 |
PostgreSQL, la siguiente sección mostrará algunos de los comandos |
479 |
PostgreSQL, en la siguiente sección se mostrarán algunos comandos |
480 |
básicos al nacegar con el cliente <c>psql</c>. |
480 |
básicos cuando naveguemos con el cliente <c>psql</c>. |
481 |
</p> |
481 |
</p> |
482 |
</body> |
482 |
</body> |
483 |
</section> |
483 |
</section> |
Lines 496-502
Link Here
|
496 |
<table> |
496 |
<table> |
497 |
<tr> |
497 |
<tr> |
498 |
<th>Comando</th> |
498 |
<th>Comando</th> |
499 |
<th>Usoe</th> |
499 |
<th>Uso</th> |
500 |
<th>Equivalente MySQL</th> |
500 |
<th>Equivalente MySQL</th> |
501 |
</tr> |
501 |
</tr> |
502 |
<tr> |
502 |
<tr> |
Lines 516-522
Link Here
|
516 |
</tr> |
516 |
</tr> |
517 |
<tr> |
517 |
<tr> |
518 |
<ti>\o [FILE]</ti> |
518 |
<ti>\o [FILE]</ti> |
519 |
<ti>Envíe los resultados de la consulta al archivo <c>FILE</c></ti> |
519 |
<ti>Envía los resultados de la consulta al archivo <c>FILE</c></ti> |
520 |
<ti>INTO OUTFILE, pero graba todo (no solo los SELECT)</ti> |
520 |
<ti>INTO OUTFILE, pero graba todo (no solo los SELECT)</ti> |
521 |
</tr> |
521 |
</tr> |
522 |
<tr> |
522 |
<tr> |
Lines 535-541
Link Here
|
535 |
</table> |
535 |
</table> |
536 |
|
536 |
|
537 |
<p> |
537 |
<p> |
538 |
Con la excepción de <c>\c[onnect]</c>, todos los comandos se usarán más adelante en esta sección. Hasta ahora, la base de datos está vacía y dicho esto, necesitamos insertar alguna data. Sin embargo, el primer paso para insertar data es colocarla en una tabla. En este momento no tenemos tablas en la base de datos, por lo que debemos crear una. Esto lo hacemos con el comando <c>CREATE TABLE</c>. Crearemos una table de ítems, que contendrá los campos Product ID, Description y price: |
538 |
Con la excepción de <c>\c[onnect]</c>, todos los comandos se usarán más adelante |
|
|
539 |
en esta sección. Hasta ahora, la base de datos está vacía y dicho esto, |
540 |
necesitamos insertar alguna datos. Sin embargo, el primer paso para insertar |
541 |
datos es colocarla en una tabla. En este momento no tenemos tablas en la base de |
542 |
datos, por lo que debemos crear una. Esto lo hacemos con el comando |
543 |
<c>CREATE TABLE</c>. Crearemos una tabla de ítems, que contendrá los campos |
544 |
Product ID, Description y price: |
539 |
</p> |
545 |
</p> |
540 |
|
546 |
|
541 |
<pre caption="Creando la tabla products"> |
547 |
<pre caption="Creando la tabla products"> |
Lines 568-598
Link Here
|
568 |
|
574 |
|
569 |
<p> |
575 |
<p> |
570 |
De hecho, la tabla fue creada exitosamente. Habiendo cumplido este |
576 |
De hecho, la tabla fue creada exitosamente. Habiendo cumplido este |
571 |
paso, debe ser poblada con data. La siguiente sección tratará este |
577 |
paso, debe ser poblada con datos. La siguiente sección tratará este |
572 |
tema. |
578 |
tema. |
573 |
</p> |
579 |
</p> |
574 |
</body> |
580 |
</body> |
575 |
</section> |
581 |
</section> |
576 |
|
582 |
|
577 |
<section> |
583 |
<section> |
578 |
<title>Insertando la data en la base de datos</title> |
584 |
<title>Insertando la datos en la base de datos</title> |
579 |
<body> |
585 |
<body> |
580 |
|
586 |
|
581 |
<p> |
587 |
<p> |
582 |
Esta sección examinará dos maneras de poblar la tabla recién creada |
588 |
Esta sección examinará dos maneras de poblar la tabla recién creada |
583 |
con data. Primero veamos el comando más básico, <c>INSERT</c>: |
589 |
con datos. Primero veamos el comando más básico, <c>INSERT</c>: |
584 |
</p> |
590 |
</p> |
585 |
|
591 |
|
586 |
<pre caption="Sintaxis de INSERT"> |
592 |
<pre caption="Sintáxis de INSERT"> |
587 |
INSERT INTO [tablename] (column1,column2,column3) VALUES(value1,value2,value3) |
593 |
INSERT INTO [tablename] (column1,column2,column3) VALUES(value1,value2,value3) |
588 |
</pre> |
594 |
</pre> |
589 |
|
595 |
|
590 |
<p> |
596 |
<p> |
591 |
<c>tablename</c> contiene el nombre de la tabla a la cual insertaremos |
597 |
<c>tablename</c> contiene el nombre de la tabla en la cual insertaremos |
592 |
data. (column1,column2,column3) permite especificar las columnas |
598 |
datos. (column1,column2,column3) permite especificar las columnas |
593 |
específicas a las cuales insertar los |
599 |
específicas en las cuales insertar los |
594 |
valores. VALUES(value1,value2,value3) es el listado de los |
600 |
valores. VALUES(value1,value2,value3) es el listado de los |
595 |
valores. Estos valores estan en el mismo orden que el orden de las |
601 |
valores. Estos valores estan en el mismo orden que las |
596 |
columnas (column1 recibe value1, column2 recibe value2, column3 recibe |
602 |
columnas (column1 recibe value1, column2 recibe value2, column3 recibe |
597 |
value3). La cuenta de columnas y valores <e>debe</e> ser |
603 |
value3). La cuenta de columnas y valores <e>debe</e> ser |
598 |
igual. Continuemos e insertemos un ítem en la tabla: |
604 |
igual. Continuemos e insertemos un ítem en la tabla: |
Lines 609-615
Link Here
|
609 |
columnas a no ser que esté 300% seguro que nunca agregará una columna. |
615 |
columnas a no ser que esté 300% seguro que nunca agregará una columna. |
610 |
</impo> |
616 |
</impo> |
611 |
|
617 |
|
612 |
<pre caption="Insertando data en la tabla"> |
618 |
<pre caption="Insertando datos en la tabla"> |
613 |
MyDB=> <i>INSERT INTO products (description,price) VALUES('A test product', 12.00);</i> |
619 |
MyDB=> <i>INSERT INTO products (description,price) VALUES('A test product', 12.00);</i> |
614 |
INSERT 17273 1 |
620 |
INSERT 17273 1 |
615 |
</pre> |
621 |
</pre> |
Lines 638-649
Link Here
|
638 |
|
644 |
|
639 |
<p> |
645 |
<p> |
640 |
Ahora usaremos el comando <c>COPY</c> para poblar nuestra tabla con |
646 |
Ahora usaremos el comando <c>COPY</c> para poblar nuestra tabla con |
641 |
data: |
647 |
datos: |
642 |
</p> |
648 |
</p> |
643 |
|
649 |
|
644 |
<impo> |
650 |
<impo> |
645 |
El comando <c>COPY FROM STDIN</c> se usa porque solamente el usuario |
651 |
El comando <c>COPY FROM STDIN</c> se usa porque solamente el usuario |
646 |
postgres puede insertar data de un archivo (obviamente por razones de |
652 |
postgres puede insertar datos de un archivo (obviamente por razones de |
647 |
seguridad). |
653 |
seguridad). |
648 |
</impo> |
654 |
</impo> |
649 |
|
655 |
|
Lines 660-667
Link Here
|
660 |
<p> |
666 |
<p> |
661 |
Desafortunadamente esta línea no retorna la misma información de |
667 |
Desafortunadamente esta línea no retorna la misma información de |
662 |
resultado que el enunciado <c>INSERT INTO</c>. Entonces ¿cómo sabremos |
668 |
resultado que el enunciado <c>INSERT INTO</c>. Entonces ¿cómo sabremos |
663 |
si la data fue insertada? La siguiente sección examinará cómo realizar |
669 |
si los datos fueron insertados? La siguiente sección examinará cómo realizar |
664 |
consultas para revisar nuestra data. |
670 |
consultas para revisar nuestros datos. |
665 |
</p> |
671 |
</p> |
666 |
</body> |
672 |
</body> |
667 |
</section> |
673 |
</section> |
Lines 672-678
Link Here
|
672 |
|
678 |
|
673 |
<p> |
679 |
<p> |
674 |
Esta sección mostrará cómo usar el enunciado <c>SELECT</c> para |
680 |
Esta sección mostrará cómo usar el enunciado <c>SELECT</c> para |
675 |
visualizar la data en nuestras tablas. El formato básico <c>SELECT</c> |
681 |
visualizar los datos en nuestras tablas. El formato básico <c>SELECT</c> |
676 |
es así: |
682 |
es así: |
677 |
</p> |
683 |
</p> |
678 |
|
684 |
|
Lines 681-687
Link Here
|
681 |
</pre> |
687 |
</pre> |
682 |
|
688 |
|
683 |
<p> |
689 |
<p> |
684 |
Existen dos manera de seleccionar columnas. La primera usa el <c>*</c> |
690 |
Existen dos maneras de seleccionar columnas. La primera usa el <c>*</c> |
685 |
para seleccionar todas la columnas y la segunda especifica una lista |
691 |
para seleccionar todas la columnas y la segunda especifica una lista |
686 |
de columnas que desea ver. La segunda es muy práctica cuando desea |
692 |
de columnas que desea ver. La segunda es muy práctica cuando desea |
687 |
encontrar una columna específica en una lista larga. Comenzamos usando |
693 |
encontrar una columna específica en una lista larga. Comenzamos usando |
Lines 735-741
Link Here
|
735 |
|
741 |
|
736 |
<p> |
742 |
<p> |
737 |
Ahora vemos un listdo de productos cuyo precio es mayor a $2.00, |
743 |
Ahora vemos un listdo de productos cuyo precio es mayor a $2.00, |
738 |
permitiéndonos enfocar aún más en la data. Esta formas de consulta de |
744 |
permitiéndonos enfocar aún más en los datos. Estas formas de consulta de |
739 |
información son muy poderosas y pueden ayudar a crear informes |
745 |
información son muy poderosas y pueden ayudar a crear informes |
740 |
extremadamente útiles. |
746 |
extremadamente útiles. |
741 |
</p> |
747 |
</p> |