home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 27 / CDROM27.iso / linux / lf / july1998 / article10 < prev    next >
Encoding:
Text File  |  1998-07-03  |  35.4 KB  |  1,222 lines

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  2.  
  3. <HTML lang="en">
  4.  
  5. <HEAD>
  6. <META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  7. <TITLE>LinuxFocus Julio 1998:  MySQL</TITLE>
  8. </HEAD>
  9.  
  10.  
  11.  
  12. <BODY bgcolor="#ffffff"  text="#000000" alink="#336633" link="#336633" vlink="#336633">
  13.  
  14.  
  15.  
  16. <!-- MAP for top navegation bar -->
  17. <MAP name="top">
  18. <AREA shape="rect" coords="367, 9, 418, 30" alt="Home" href="../index.html">
  19. <AREA shape="rect" coords="423, 9, 457, 30" alt="Map" href="../map.html">
  20. <AREA shape="rect" coords="463, 9, 508, 30" alt="Index" href="../indice.html">
  21. <AREA shape="rect" coords="514, 9, 558, 30" alt="Search" href="../search.html">
  22. </MAP>
  23.  
  24.  
  25.  
  26. <!-- MAP for bottom navegation bar -->
  27. <MAP name="bottom">
  28. <AREA shape="rect" coords="78, 0, 163, 15"   alt="News" href="../News/">
  29. <AREA shape="rect" coords="189, 0, 284, 15"  alt="Archives" href="../Archives/">
  30. <AREA shape="rect" coords="319, 0,  395, 15" alt="Links" href="../Links">
  31. <AREA shape="rect" coords="436, 0,  523, 15" alt="About LF" href="../aboutus.html">
  32. </MAP>
  33.  
  34.  
  35.  
  36. <CENTER>
  37. <IMG src="Topbar.gif" width="600" height="40" border="0" alt="[Top Bar]" ismap usemap="#top" ><BR>
  38. <IMG src="Bottombar.gif" width="600" height="21" border="0" alt="[Bottom Bar]" ismap usemap="#bottom">
  39. </CENTER>
  40.  
  41.  
  42. <!-- SHORT BIO ABOUT THE AUTHOR -->
  43. <TABLE  align="left" width="30%" border="0" cellspacing="0" cellpadding="5">
  44.  
  45. <TR>
  46.  <TD>
  47.    <IMG src="Who.gif" width="173" height="164" alt="[Photo of the Author]"><BR>
  48.    <FONT color="#336633" size="+2">Jose M. Fernández </FONT><BR>
  49.  
  50.    <FONT color="#336633"> Sobre el autor</FONT>: 
  51.    [write a one to two paragraph bio here]
  52.    <BR>
  53.  
  54. <BR>
  55. <A HREF="mailto:JOSEFDEZ@latinmail.com">Escribe al autor</A>
  56. <BR>
  57.  
  58.     
  59. <!--   INDEX      -->
  60. <BR>
  61. <FONT color="#336633">Índice de Contenidos</FONT>: <p>
  62. <A href="#section1">Introducción</A><br>
  63. <A href="#section2">Principales Características</A><br>
  64. <A href="#section3">Instalación</A><br>
  65. <A href="#section4">Primeros Pasos, Administración (Seguridad)</A><br>
  66. <A href="#section5">Lenguaje SQL en MySQL</A><BR>
  67. <A href="#section6">Conclusiones</A><BR>
  68.  
  69.  
  70.  
  71.  
  72.  </TD>
  73. </TR>
  74.  
  75. </TABLE>
  76.  
  77.  
  78.  
  79.  
  80. <TABLE>
  81.  
  82. <TR>
  83. <TD>
  84.  
  85.  
  86. <!--   BODY OF THE ARTICLE    -->
  87. <H2>MySQL<BR> Servidor de Bases de Datos</H2>
  88. <IMG src="illustration10.gif" alt="[Ilustration]" width="100" height="100" hspace="10" >
  89.  
  90. <P align="top">
  91. <FONT color="#336633" size="2">Resumen</FONT>: 
  92. <FONT size="2" face="Helvetica,Arial,Roman">
  93. [Here goes the abstract
  94. of the article....]
  95. </FONT>
  96.  
  97. </P>
  98.  
  99.  
  100. <BR clear="all">
  101. <BR>
  102. <HR size="0" noshadow>
  103.  
  104.    
  105.  
  106.     <A name="section1"></A><H3>Introducción</H3>
  107.  
  108.     <P>MySQL es un gestor de  bases de datos SQL (Structured Query
  109.     Language). Es una implementación Cliente-Servidor   que
  110.     consta    de      un  servidor    y     diferentes    clientes
  111.     (programas/librerías).</P>
  112.  
  113.  
  114.     <p>Hablar de  una base de datos SQL  es muy  complicado ya que
  115.     habría que remontarse a  los orígenes mismos  de
  116.     las  bases de   datos  relacionales y   el  objetivo de   este
  117.     artículo no es   tan  ambicioso,  simplemente   intenta
  118.     describir y mostrar un implementación específica
  119.     de un gestor de bases de datos SQL.</p>
  120.  
  121.     <P>Aunque  reseñar  como dato  histórico que IBM
  122.     empezó a comercializar en 1.981 el SQL y desde entonces
  123.     este  producto ha tenido  un papel importante en el desarrollo
  124.     de la bases de datos relacionales. IBM  propuso y fue aceptada
  125.     , una versión de SQL  al Instituto de Estándares
  126.     Nacional Americano(ANSI)  y  desde  entonces es  utilizado  de
  127.     forma  generalizada en las  bases  de datos relacionales.   En
  128.     1.983 nació DB2 la  más popular( por lo menos en
  129.     los grandes ordenadores)  de las bases de  datos de este  tipo
  130.     hasta estos mismos momentos.</P>
  131.  
  132.     <P>En  el mundo  GNU,   una de  las  bases  de  datos   que se
  133.     reseña en cualquier    referencia de  aplicaciones   de
  134.     éste tipo  bajo  LINUX, es MySQL  aunque no está
  135.     incluida en  ninguna   distribución ya  que   no  tiene
  136.     licencia  GNU  como  tal, para   comercializarla a   ella o  a
  137.     cualquier software que la  utilice  o se sirva de  ésta
  138.     habrá que adquirir una licencia.</P>
  139.  
  140.     <P>Esta  base de    datos   es  considerada (en   su    propia
  141.     documentación    así  lo reseña)  como la
  142.     más rápida y robusta tanto para volúmenes
  143.     de  datos   grandes  como   pequeños  (siempre,   claro
  144.     está, comparada con las de su categoría), aunque
  145.     como veremos más adelante    está rapidez es   a
  146.     costa de no implementar ciertos aspectos del SQL.</P>
  147.  
  148.     <P>MySQL está  disponible   (Fuentes  y binario)  para:
  149.     Linux  2.0+, SCO, Solaris 2.5, 2.6,  SUNOS 4.x, BSDI 2.x, 3.0,
  150.     SGI IRIX 6.x,  AIX 4.x, DEC UNIX  4.x, HPUX  10.20, Windows 95
  151.     (con perdón) , entre los sistemas operativos más
  152.     populares.</P>
  153.  
  154.     <P>La versión libre fue  escrita por  Michael Windenis,
  155.     la   versión   comercial  es   distribuida    por   TCX
  156.     Datakonsulter AB.</P>
  157.  
  158.     <A name="section2"></A><H3>Principales Características</H3>
  159.  
  160.     <ul>
  161.     <li>El principal   objetivo     de  MySQL  es  velocidad     y
  162.     robustez.</li>
  163.  
  164.     <li>Escrito en C  y C++,  testado con   GCC 2.7.2.1. Usa   GNU
  165.     autoconf para potabilidad.</li>
  166.  
  167.     <li>Clientes C, C++, JAVA, Perl, TCL.</li>
  168.  
  169.     <li>Multiproceso,  es   decir    puede usar   varias  CPU   si
  170.     éstas están disponibles.</li>
  171.  
  172.     <li>Puede   trabajar     en     distintas    plataformas     y
  173.     S.O. distintos.</li>
  174.  
  175.     <li>Sistema de contraseñas y privilegios muy flexible y
  176.     segura.</li>
  177.  
  178.     <li>Todas la palabras de paso viajan encriptadas en la red.</li>
  179.  
  180.     <li>Registros de longitud fija y variable.</li>
  181.  
  182.     <li>16  índices   por tabla,  cada  índice puede
  183.     estar compuesto de 1  a 15 columnas o  partes de ellas con una
  184.     longitud máxima de 127 bytes.</li>
  185.  
  186.     <li>Todas las columnas pueden tener valores por defecto.</li>
  187.  
  188.     <li>Utilidad   (Isamchk)  para chequear,  optimizar  y reparar
  189.     tablas.</li>
  190.  
  191.     <li>Todos   los   datos   están    grabados en  formato
  192.     ISO8859_1.</li>
  193.  
  194.     <li>Los clientes usan TCP  o  UNIX Socket para  conectarse  al
  195.     servidor.</li>
  196.  
  197.     <li>El   servidor  soporta  mensajes de    error en  distintas
  198.     lenguas.</li>
  199.  
  200.     <li>Todos los comandos tienen -help o -? Para las ayudas.</li>
  201.  
  202.     <li>Diversos tipos de columnas como enteros de 1, 2, 3, 4, y 8
  203.     bytes, coma flotante, doble precisión, carácter,
  204.     fechas, enumerados, etc.</li>
  205.  
  206.     <li>ODBC para Windows   95  (con fuentes),  se  puede utilizar
  207.     ACCESS para conectar con el servidor.</li>
  208.  
  209.     </ul>
  210.  
  211.     <A name="section3"></A><H3>Instalación</H3>
  212.  
  213.     <p>Naturalmente, antes de la  instalación de la base de
  214.     datos, habrá   que conseguirla    y para  ello  podemos
  215.     acceder               al                    WEB:            <a
  216.     href="http://www.tcx.se">http://www.tcx.se</a>,    o   FTP: <a
  217.     href="ftp://ftp.sunet.se/pub/unix/databases/relational/mysql">
  218.     ftp://ftp.sunet.se/pub/unix/databases/relational/mysql</a></p>
  219.  
  220.  
  221.     <P>Además  habrá   que decidir  por bajarse  una
  222.     distribución          en  código fuente        o
  223.     binario. Ésta última es más  fácil
  224.     de instalar pero   debe de existir  la versión  binaria
  225.     para nuestra   plataforma (aunque  existe para  las más
  226.     populares).</P>
  227.  
  228.     <H4>Instalación     Binario </H4>
  229.     
  230.  
  231.     <P>Una  vez descargado el     fichero empaquetado  tal   como:
  232.     mysql-Version.tar.gz.         Se      procederá       a
  233.     desempaquetarlo.  Se puede hacer    de varias formas, pero  yo
  234.     prefiero hacerlo paso a paso:</P>
  235.  
  236.     <ol>
  237.     <li>    Desempaquetar:<br>
  238.     gunzip -dfv    mysql-Version.tar.gz</li>
  239.          
  240.     <li> Después
  241.     se realiza el comando tar<br>
  242.         tar -xvf mysql-Version.tar<br>
  243.     
  244.     <p>Este comando  tar en  mi instalación  lo  hice en el
  245.     directorio /usr/local con lo que en éste se creé
  246.     el directorio:<br> /usr/local/mysql-3.20.32a-pc-linux-gnu-i586</p>
  247.  
  248.     <p>que como vemos no es muy práctico  su manejo, con lo
  249.     que  se    recomienda   (en    la propia    guía     de
  250.     instalación del MySQL) que se realice un acceso directo
  251.     con el comando ln (hacer Links  entre ficheros)</p> > ln -s
  252.     mysql-3.20.32a-pc-linux-gnu-i586/bin mysql<br>
  253.     
  254.     <p>con lo que el
  255.     directorio tendrá el aspecto:</p>
  256.           <font size="-1"></font>
  257.     <pre>
  258. drwxr-xr-x    8192 Nov  24  1993 bin
  259. drwxr-xr-x    8192 Nov    24  1993 etc
  260. drwxr-xr-x    8192 Aug    17  1997 i18n
  261. drwxr-xr-x    8192 Mar    16  1994 include
  262. drwxr-xr-x    8192 Mar    19 02:03 jdk1.1.3
  263. drwxr-xr-x    8192 Aug    17  1997 jre
  264. drwxr-xr-x    8192 Mar    16  1994 lib
  265. lrwxrwxrwx      36 Jan    18 19:40 mysql 
  266. drwxr-xr-x    8192 Feb   5 00:07 mysql-3.20.32a-pc-linux-gnu-i586
  267. drwxr-xr-x    8192 Nov    24  1993 sbin
  268. drwxr-xr-x    8192 Nov    24  1993 src
  269.         </pre></font>
  270.  
  271.     <p>y haciendo cd mysql estaremos naturalmente en el directorio
  272.     bin de  MySQL,   con lo    cual y   si   todo  ha   funcionado
  273.     perfectamente   estaremos  en  disposición    de  poder
  274.     arrancar el servidor de la base da datos. </p></li>
  275.     </ol>
  276.  
  277.     <H4>Instalación     Fuentes </H4>
  278.  
  279.     <P>Desempaquetar el   archivo  de la  misma   forma que en  el
  280.     apartado anterior.</P>
  281.     <pre>
  282.         cd mysql-Version 
  283.         ./configure
  284.         make install
  285.     </pre>      
  286.  
  287.     Existe una gran cantidad de documentación para realizar
  288.     el proceso de instalación donde podemos encontrar desde
  289.     los  Errores    (Bugs),  pasando  por     documentación
  290.     específica   para     distintos   sistemas  operativos,
  291.     parámetros para distintas  configuraciones y hasta  una
  292.     colección  de  FAQ de  este  tema.   Si  el proceso  de
  293.     instalación se  realiza  sin problemas (sería la
  294.     primera vez que   pase) se tendrá  como  resultado algo
  295.     similar a lo obtenido en la instalación del software en
  296.     binario.
  297.  
  298.     <P> Esta opción es    solo recomendable para   aquellos
  299.     usuarios   con bastante experiencia    en  esto de compilar  e
  300.     instalar  código   fuente  y además disponer  de
  301.     bastante tiempo  y paciencia para ir   resolviendo cada uno de
  302.     los problemas que inevitablemente surjan.</P>
  303.  
  304.     <A name="section4"></A><H3>Primeros Pasos, Administración (Seguridad)</H3>
  305.  
  306.     <P>Una vez instalado en nuestro sistema el  gestor de bases de
  307.     datos  con una   de las  dos  formas descritas  en el apartado
  308.     anterior          y       dentro       del         directorio:
  309.     <tt>/usr/local/mysql-3.20.32a-pc-linux-gnu-i586</tt></p>
  310.  
  311.     <P>tendremos los siguientes ficheros y/o directorios:</P>
  312. <font size=-1>
  313.     <PRE>
  314. -rw-r--r--    1    root      root      4133    Oct    1  1997    INSTALL-BINARY
  315. -rw-r--r--    1 root         root     16666    Oct    7 21:10    INSTALL-SOURCE
  316. -rw-r--r--    1 root         root     24088    Oct   27 23:06    NEWS
  317. -rw-r--r--    1 root         root      3562    Apr   11  1997    PORTING
  318. -rw-r--r--    1 root         root      8512    May   21  1997    PUBLIC
  319. -rw-r--r--    1 root         root      1963    Jul   31  1997    README
  320. -rw-r--r--    1 root         root      3416    Jun    4  1997    TODO
  321. drwxr-xr-x    6 root      root      8192    Oct   28 00:44    bench
  322. drwxr-xr-x    2 cuenta1   users     8192    Mar   27 00:42    bin
  323. drwxr-xr-x    5 root      root      8192    Mar   31 00:26    data
  324. drwxr-xr-x    2 root      root      8192    Oct   28 00:44    include
  325. drwxr-xr-x    2 root      root      8192    Oct   28 00:44    lib
  326. -rw-r--r--    1 root      root    132883    Jun    8  1997    mysql-faq.html
  327. -rw-r--r--    1 root      root    117622    Jun   10  1997    mysql-faq.txt
  328. -rw-r--r--    1 root      root      9301    Jun    8  1997    mysql-faq_toc.html
  329. drwxr-xr-x    4 root      root      8192    Oct   28 00:44    mysqlperl
  330. drwxr-xr-x    2 root      root      8192    Oct   28 00:44    scripts
  331. drwxr-xr-x    3 root      root      8192    Oct   28 00:44    share
  332. drwxr-xr-x    2 root      root      8192    Oct   28 00:44    tests
  333.     </PRE></Font>
  334.  
  335.  
  336.  
  337.     <P>En   los ficheros README,   TODO, INSTALL, mysql-faq, etc.,
  338.     viene  información   sobre la  instalación   del
  339.     servidor  de bases  de datos,  FAQ,  manual de funcionamiento,
  340.     etc. que    es bastante completo  y   efectivo (parte  de este
  341.     articulo está basado en ellos).</P>
  342.  
  343.     <P>Dentro  del directorio  <tt>/data</tt>  encontraremos  como
  344.     subdirectorios de  este cada  una  de las bases  de  datos que
  345.     vamos  creando.  En  el  momento  de la  instalación se
  346.     define por defecto los archivos en los que se apoya el sistema
  347.     de seguridad, esta base de datos es "mysql".</P>
  348.  
  349.     <P>El  directorio <tt>/bench</tt> encontraremos ejemplos    de
  350.     SQL. Notar  que  en  la  instalación en   código
  351.     fuente los ejemplos  son mayores que  en la instalación
  352.     en binario. </P>
  353.  
  354.     <P>El  directorio   <tt>/share</tt>  contiene los mensajes  de
  355.     error del servidor en cada uno de  los idiomas que está
  356.     disponible.</P>
  357.  
  358.     <P>Los  directorios     <tt>/include</tt>  y  <tt>/lib</tt> se
  359.     encuentran     los     ficheros *.h  y    las librerías
  360.     necesarias.</P>
  361.  
  362.     <P>El directorio <tt>/bin</tt> están todos los ficheros
  363.     ejecutables, entre los más importantes destacaremos:<P>
  364.     `mysql'
  365.  
  366.     <br> Una Shell de SQL  (con readline de  GNU).  Se puede  usar
  367.     tanto interactivamente como no.<P> `mysqladmin'
  368.  
  369.     <br> Utilidades de administración.  Crear/borra base de
  370.     datos.  Información  sobre procesos    y  versiones.<P>
  371.     `mysqld'
  372.  
  373.     
  374.     <br>    El    SQL     "deamon"   .Debe    estar        siempre
  375.     ejecutándose.<P> `mysqlshow'
  376.  
  377.     <br> Visualiza información sobre  base de datos, tablas
  378.     y campos.<P> `safe_mysqld'
  379.  
  380.     <br> Arranca "mysqld".<P>
  381.     `mysqlaccess'
  382.  
  383.     <br>    Script  para    chequear  los   privilegios   de   una
  384.     combinación: Host, Usuario y base de datos.<p>
  385.  
  386.     `mysqlbug'
  387.     <br>   Se utiliza para enviar   los  posibles errores (bug) que
  388.     encontremos en el gestor.<p>
  389.     `mysql_install_db'
  390.  
  391.     <br>  Crear grandes tablas  con   privilegios por defecto,   se
  392.     ejecuta cuando   se instala por  primera   vez en  un  sistema
  393.     nuevo.</P>
  394.     `isamchk'<br>
  395.  
  396.     Chequea, optimiza y repara tablas.
  397.     
  398.     <H4>Seguridad</H4>
  399.  
  400.     <P>  El  sistema de  seguridad  de  MySQL  garantiza que  cada
  401.     usuario pueda hacer las cosas  que le están  permitidas
  402.     (nada más y nada menos).</P>
  403.  
  404.     <P>El sistema decide los diferentes privilegios dependiendo de
  405.     "QUE USUARIO"  conectado  a "QUE  BASE  DE  DATOS"  desde "QUE
  406.     HOST".  El sistema de privilegios está basado, como no,
  407.     en el contenido de 3 tablas, "USER", "HOST" y  "DB" de la base
  408.     de datos "mysql".</P>
  409.  
  410.     <P>Las columnas de estas 3 tablas son:</P>
  411.  
  412.     <CENTER>
  413.     Database: mysql<BR>
  414.     <TABLE bgcolor="#999999" cellspacing="0" cellpadding="10" border="1">
  415.     <TH bgcolor="#000000"><FONT color="#ffffff">Tables</FONT></TH>
  416.     <TR><TD>db</TD></TR>
  417.     <TR><TD>host</TD></TR>
  418.     <TR><TD>user</TD></TR>
  419.     </TABLE>
  420.     </CENTER>
  421. <BR><BR>
  422.     
  423.     <CENTER>
  424.     Table: db<BR>
  425.     <TABLE bgcolor="#999999" cellspacing="0" cellpadding="10" border="1">
  426.     <TR>
  427.     <TD bgcolor="#000000"><FONT color="#ffffff">Field </FONT></TD>
  428.     <TD bgcolor="#000000"><FONT color="#ffffff">Type</FONT></TD>
  429.     <TD bgcolor="#000000"><FONT color="#ffffff">Null</FONT></TD>
  430.     <TD bgcolor="#000000"><FONT color="#ffffff">Key</FONT></TD>
  431.     <TD bgcolor="#000000"><FONT color="#ffffff">Default</FONT></TD>
  432.     <TD bgcolor="#000000"><FONT color="#ffffff">Extra</FONT></TD>    
  433.         </FONT>
  434.         </TR>
  435.  
  436.     <TR>
  437.     <TD> Host  </TD>
  438.     <TD> char(60) </TD>
  439.     <TD>   </TD>
  440.     <TD> PRI </TD>
  441.     <TD>   </TD>
  442.     <TD>   </TD>
  443.         </TR>
  444.  
  445.     <TR>
  446.     <TD> Db  </TD>
  447.     <TD> char(32) </TD>
  448.     <TD>   </TD>
  449.     <TD> PRI </TD>
  450.     <TD>   </TD>
  451.     <TD>   </TD>
  452.         </TR>
  453.  
  454.     <TR>
  455.     <TD> User  </TD>
  456.     <TD> char(16) </TD>
  457.     <TD>   </TD>
  458.     <TD> PRI </TD>
  459.     <TD>   </TD>
  460.     <TD>   </TD>
  461.         </TR>
  462.  
  463.     <TR>
  464.     <TD> Select_priv  </TD>
  465.     <TD> char(1) </TD>
  466.     <TD>   </TD>
  467.     <TD>  </TD>
  468.     <TD> N </TD>
  469.     <TD>   </TD>
  470.         </TR>
  471.  
  472.     <TR>
  473.     <TD> Insert_priv  </TD>
  474.     <TD> char(1) </TD>
  475.     <TD>   </TD>
  476.     <TD>   </TD>
  477.     <TD> N </TD>
  478.     <TD>   </TD>
  479.         </TR>
  480.  
  481.     <TR>
  482.     <TD> Update_priv  </TD>
  483.     <TD> char(1) </TD>
  484.     <TD>   </TD>
  485.     <TD>   </TD>
  486.     <TD> N </TD>
  487.     <TD>   </TD>
  488.         </TR>
  489.  
  490.     <TR>
  491.     <TD> Delete_priv  </TD>
  492.     <TD> char(1) </TD>
  493.     <TD>   </TD>
  494.     <TD>  </TD>
  495.     <TD> N </TD>
  496.     <TD>   </TD>
  497.         </TR>
  498.  
  499.     <TR>
  500.     <TD> Create_priv  </TD>
  501.     <TD> char(1) </TD>
  502.     <TD>   </TD>
  503.     <TD>  </TD>
  504.     <TD> N </TD>
  505.     <TD>   </TD>
  506.         </TR>
  507.  
  508.     <TR>
  509.     <TD> Drop_priv  </TD>
  510.     <TD> char(1) </TD>
  511.     <TD>   </TD>
  512.     <TD>  </TD>
  513.     <TD> N </TD>
  514.     <TD>   </TD>
  515.         </TR>
  516.  
  517.     </TABLE>
  518.     </CENTER>
  519.  
  520.     <BR>
  521.  
  522.     <CENTER>
  523.     Table: host  <BR>
  524.     <TABLE bgcolor="#999999" cellspacing="0" cellpadding="10" border="1">
  525.  
  526.     <TR> 
  527.     <TD bgcolor="#000000"><FONT color="#ffffff">Field</FONT></TD>
  528.     <TD bgcolor="#000000"><FONT color="#ffffff">Type</FONT></TD>
  529.     <TD bgcolor="#000000"><FONT color="#ffffff">Null</FONT></TD>
  530.     <TD bgcolor="#000000"><FONT color="#ffffff">Key</FONT></TD>
  531.     <TD bgcolor="#000000"><FONT color="#ffffff">Default</FONT></TD>
  532.     <TD bgcolor="#000000"><FONT color="#ffffff">Extra</FONT></TD>
  533.     </TR>
  534.  
  535.     <TR>
  536.     <TD>Host</TD>
  537.     <TD>char(60)</TD>
  538.     <TD> </TD>
  539.     <TD>PRI</TD>
  540.     <TD> </TD>
  541.     <TD> </TD>
  542.     </TR>
  543.  
  544.  
  545.     <TR>
  546.     <TD>Db</TD>
  547.     <TD>char(32)</TD>
  548.     <TD> </TD>
  549.     <TD>PRI</TD>
  550.     <TD> </TD>
  551.     <TD> </TD>
  552.     </TR>
  553.  
  554.  
  555.     <TR>
  556.     <TD>Select_priv</TD>
  557.     <TD>char(1)</TD>
  558.     <TD> </TD>
  559.     <TD> </TD>
  560.     <TD>N</TD>
  561.     <TD> </TD>
  562.     </TR>
  563.  
  564.     <TR>
  565.     <TD>Insert_priv</TD>
  566.     <TD>char(1)</TD>
  567.     <TD> </TD>
  568.     <TD> </TD>
  569.     <TD>N</TD>
  570.     <TD> </TD>
  571.     </TR>
  572.  
  573.  
  574.  
  575.     <TR>
  576.     <TD>Update_priv</TD>
  577.     <TD>char(1)</TD>
  578.     <TD> </TD>
  579.     <TD> </TD>
  580.     <TD>N</TD>
  581.     <TD> </TD>
  582.     </TR>
  583.  
  584.     <TR>
  585.     <TD>Delete_priv</TD>
  586.     <TD>char(1)</TD>
  587.     <TD> </TD>
  588.     <TD> </TD>
  589.     <TD>N</TD>
  590.     <TD> </TD>
  591.     </TR>
  592.  
  593.     <TR>
  594.     <TD>Create_priv</TD>
  595.     <TD>char(1)</TD>
  596.     <TD> </TD>
  597.     <TD> </TD>
  598.     <TD>N</TD>
  599.     <TD> </TD>
  600.     </TR>
  601.  
  602.     <TR>
  603.     <TD>Drop_priv</TD>
  604.     <TD>char(1)</TD>
  605.     <TD> </TD>
  606.     <TD> </TD>
  607.     <TD>N</TD>
  608.     <TD> </TD>
  609.     </TR>
  610.  
  611.     </TABLE>
  612.     </CENTER>
  613.  
  614.     <BR>
  615.     <CENTER>
  616.     Table: user  <BR>
  617.     <TABLE bgcolor="#999999" cellspacing="0" cellpadding="10" border="1">
  618.  
  619.     <TR> 
  620.     <TD bgcolor="#000000"><FONT color="#ffffff">Field</FONT></TD>
  621.     <TD bgcolor="#000000"><FONT color="#ffffff">Type</FONT></TD>
  622.     <TD bgcolor="#000000"><FONT color="#ffffff">Null</FONT></TD>
  623.     <TD bgcolor="#000000"><FONT color="#ffffff">Key</FONT></TD>
  624.     <TD bgcolor="#000000"><FONT color="#ffffff">Default</FONT></TD>
  625.     <TD bgcolor="#000000"><FONT color="#ffffff">Extra</FONT></TD>
  626.     </TR>
  627.  
  628.     <TR>
  629.     <TD>Host</TD>
  630.     <TD>char(60)</TD>
  631.     <TD> </TD>
  632.     <TD>PRI</TD>
  633.     <TD> </TD>
  634.     <TD> </TD>
  635.     </TR>
  636.  
  637.     <TR>
  638.     <TD>User</TD>
  639.     <TD>char(16)</TD>
  640.     <TD> </TD>
  641.     <TD>PRI</TD>
  642.     <TD> </TD>
  643.     <TD> </TD>
  644.     </TR>
  645.  
  646.  
  647.     <TR>
  648.     <TD>Password</TD>
  649.     <TD>char(16)</TD>
  650.     <TD> </TD>
  651.     <TD> </TD>
  652.     <TD> </TD>
  653.     <TD> </TD>
  654.     </TR>
  655.  
  656.     <TR>
  657.     <TD>Select_priv</TD>
  658.     <TD>char(1)</TD>
  659.     <TD> </TD>
  660.     <TD> </TD>
  661.     <TD>N</TD>
  662.     <TD> </TD>
  663.     </TR>
  664.  
  665.     <TR>
  666.     <TD>Insert_priv</TD>
  667.     <TD>char(1)</TD>
  668.     <TD> </TD>
  669.     <TD> </TD>
  670.     <TD>N</TD>
  671.     <TD> </TD>
  672.     </TR>
  673.  
  674.  
  675.     <TR>
  676.     <TD>Update_priv</TD>
  677.     <TD>char(1)</TD>
  678.     <TD> </TD>
  679.     <TD> </TD>
  680.     <TD>N</TD>
  681.     <TD> </TD>
  682.     </TR>
  683.  
  684.  
  685.     <TR>
  686.     <TD>Delete_priv</TD>
  687.     <TD>char(1)</TD>
  688.     <TD> </TD>
  689.     <TD> </TD>
  690.     <TD>N</TD>
  691.     <TD> </TD>
  692.     </TR>
  693.  
  694.  
  695.     <TR>
  696.     <TD>Create_priv</TD>
  697.     <TD>char(1)</TD>
  698.     <TD> </TD>
  699.     <TD> </TD>
  700.     <TD>N</TD>
  701.     <TD> </TD>
  702.     </TR>
  703.  
  704.  
  705.     <TR>
  706.     <TD>Drop_priv</TD>
  707.     <TD>char(1)</TD>
  708.     <TD> </TD>
  709.     <TD> </TD>
  710.     <TD>N</TD>
  711.     <TD> </TD>
  712.     </TR>
  713.  
  714.  
  715.     <TR>
  716.     <TD>Reload_priv</TD>
  717.     <TD>char(1)</TD>
  718.     <TD> </TD>
  719.     <TD> </TD>
  720.     <TD>N</TD>
  721.     <TD> </TD>
  722.     </TR>
  723.  
  724.  
  725.     <TR>
  726.     <TD>Shutdown_priv</TD>
  727.     <TD>char(1)</TD>
  728.     <TD> </TD>
  729.     <TD> </TD>
  730.     <TD>N</TD>
  731.     <TD> </TD>
  732.     </TR>
  733.  
  734.     <TR>
  735.     <TD>Process_priv</TD>
  736.     <TD>char(1)</TD>
  737.     <TD> </TD>
  738.     <TD> </TD>
  739.     <TD>N</TD>
  740.     <TD> </TD>
  741.     </TR>
  742.  
  743.  
  744.     <TR>
  745.     <TD>File_priv</TD>
  746.     <TD>char(1)</TD>
  747.     <TD> </TD>
  748.     <TD> </TD>
  749.     <TD>N</TD>
  750.     <TD> </TD>
  751.     </TR>
  752.  
  753.  
  754.     </TABLE>
  755.     </CENTER>
  756.  
  757.     <BR>
  758.  
  759.     <P>Se puede   decidir  si  se   autoriza o  no   a seleccionar
  760.     (<tt>SELECT</tt>),    insertar (<tt>INSERT</tt>),   actualizar
  761.     (<tt>UPDATE</tt>),  y borrar  (<tt>DELETE</tt>)  filas de  una
  762.     tabla.</P>
  763.  
  764.     <P>Se puede permitir, o  no, crear o barrar  (<tt>CREATE</tt>,
  765.     <tt>DROP</tt>) tablas o bases de datos.</P>
  766.  
  767.     <P>Se pude   permitir,     o    no,   usar    comandos      de
  768.     administración  del   gestor  de bases de   datos  como
  769.     "<tt>shutdown</tt>",   "<tt>reload</tt>",  "<tt>process</tt>",
  770.     etc.</P>
  771.  
  772.     <P>Se puede   siempre comprobar nuestros  privilegios  con  el
  773.     script "mysqlaccess".</P>
  774.  
  775.     <P>Un HOST  debe ser  un "host  local", un   numero IP, o  una
  776.     expresión SQL  .  Si en  la tabla  "db" la columna host
  777.     está  vacía significa  "cualquier   host"  en la
  778.     tabla de "host".   Si en la tabla "host"  o  "user" la columna
  779.     host está  vacía  significa  que  cualquier HOST
  780.     puede crear una conexión TCP con vuestro servidor.</P>
  781.  
  782.     <P>Db es el nombre de una base de datos.</P>
  783.  
  784.     <P>Una   columna   "<tt>USER</tt>"    vacía   significa
  785.     cualquier nombre de usuario.</P>
  786.  
  787.  
  788.  
  789.     <H4>Primeros Pasos</H4>
  790.  
  791.     <P>La forma  más rápida de  arrancar el servidor
  792.     es ejecutando:</P>
  793.     <pre>
  794.     mysql.server  start<BR>
  795.     </pre>
  796.  
  797.     y para pararla:<BR>
  798.  
  799.     <pre>
  800.     mysql.server stop 
  801.     </pre>
  802.  
  803.     <P>Se    puede  realizar    lo mismo   ejecutando  el   script
  804.     <tt>safe_mysql</tt>   como  indica   en  la    guía  de
  805.     instalación, aunque al final,  de una forma o  de otra,
  806.     se ejecuta el fichero "mysqld".</P>
  807.  
  808.     <P>Es necesaria, como   se pude suponer,  arrancar el servidor
  809.     para realizar cualquier operación con la base de datos,
  810.     una vez realizado esto se  pueden ejecutar varios comando para
  811.     comprobar que el arranque  del servidor ha sido correcto como,
  812.     por    ejemplo,    "mysqladmin"   cuyo     formato    completo
  813.     será:</p>
  814.     <pre>
  815.     mysqladmin [OPCIONES] comando comando  …
  816.     </pre>
  817.     <P> donde <tt>OPCIONES</tt> puede ser:</P>
  818.  
  819.       <table>
  820.         <tr>
  821.           <td> <tt>-f,  --force</tt></td><td> No  realiza la  pregunta  para confirmar al
  822.         borran una tabla.</td>
  823.         <tr>
  824.           <td> <tt>-?,  --help</tt></td><td> Visualiza esta ayuda .
  825.         <tr>
  826.           <td>  <tt>-h, --host=#</tt> </td><td>Conexión con el host.
  827.         <tr>
  828.           <td>  <tt>-p, --password[=...]</tt>  </td><td> Palabra  de  paso  para  la  conexión  al
  829.         servidor
  830.         <tr>
  831.           <td> <tt>-P --port=...</tt></td><td> Numero de puerto a usar en la conexión.
  832.         <tr>
  833.           <td> <tt>-S --socket=...</tt>  </td><td>Fichero Socket para usar en la conexión.
  834.         <tr>
  835.           <td> <tt>-u, --user=#</tt></td><td> Usuario de conexión si no es el usuario actual.
  836.         <tr>
  837.           <td> <tt>-V, --version</tt></td><td> Información sobre la versión actual .<DT>
  838.         </tr>
  839.       </table>
  840.       
  841.        
  842.  
  843.     <P>donde <tt>Comando</tt> puede ser uno o más de:</P>
  844.  
  845.     <UL>
  846.     <li><tt>create  nombre_base_de_datos</tt>  <br> Crea una nueva
  847.     base de datos</li>
  848.  
  849.     <LI><tt>drop nombre_de_base_de_datos</tt>  <BR> Borra una base
  850.     de datos y todos sus tablas
  851.     
  852.     <LI> <tt>kill  identificador_de_procesos</tt> <BR>  "mata " un
  853.     proceso mysql
  854.  
  855.     <LI> <tt>processlist</tt>   <BR>  Muestra una   lista  de  los
  856.     procesos que se ejecutan en el servidor
  857.  
  858.     <LI> <tt>shutdown</tt> <BR> Para al servidor
  859.  
  860.     <LI> <tt>status</tt>  <BR> Obtiene un  mensaje del  estado del
  861.     servidor
  862.  
  863.     <LI><tt>version</tt> <BR>  Obtiene    la versión    del
  864.     servidor
  865.  
  866.     </DL>
  867.  
  868.  
  869.     <P>así que, ejecutando:</P>
  870.  
  871.     <pre>
  872.     mysqladmin create  nuevabasededatos<BR>
  873.     </pre>
  874.     
  875.     <P>crearemos una nueva  base de datos  cuyo nombre será
  876.     "nuevabasededatos" </P>
  877.  
  878.     <P>podremos ver los procesos que se están ejecutando en
  879.     el servidor con </P>
  880.     <pre>
  881.         mysqladmin     processlist <BR>
  882.     </pre>
  883.  
  884.     <P>Otro comando importante es el mysqlshow que nos permite ver
  885.     las bases de datos que existen,  por ejemplo, si ejecutamos el
  886.     comando tal cual:</P>
  887.     <pre>
  888.     mysqlshow
  889.     </pre>
  890.  
  891.     <P> nos mostrará como resultado:</P>
  892. <PRE>
  893.     +-----------+
  894.     | Databases |
  895.     +-----------+
  896.     | mysql     |
  897.     | personas  |
  898.     | test      |
  899.     +-----------+
  900. </PRE>
  901. <BR> <A name="section5"></A><H3>Lenguaje SQL en MySQL</H3>
  902.  
  903.     <P>Como idicamos en la  introducción, este  servidor de
  904.     bases de  datos  está considerada  como  las más
  905.     rápida entres las de  sus misma categoría  tanto
  906.     para volúmenes  de datos grandes  como pequeños,
  907.     pero como  también indicamos al  principio es a base de
  908.     no implementar ciertos  aspectos  de las especificación
  909.     SQL éstos aspectos, que  a mi entender, son importantes
  910.     son por una lado los Triggers y por otro lado la Lógica
  911.     Transaccional.</P>
  912.  
  913.  
  914.     <P>Los triggers no  es nada más  que una porción
  915.     de  código almacenado  que  se  "dispara" o se  ejecuta
  916.     cuando se realiza una operación ( actualización,
  917.     borrado, etc.) con  la base de  datos.  Naturalmente comprobar
  918.     la  propia existencia  de disparador  y  ejecutarlo si  existe
  919.     consume recursos y  tiempo y es  como su propio manual indica,
  920.     la  única razón   por  la  que los triggers   no
  921.     están soportados.</P>
  922.  
  923.     <P>Un    aspecto muy importante  en   cualquier  base de datos
  924.     relacional es la consistencia de las  diferentes tablas que la
  925.     componen, para conseguir esto  de una forma más o menos
  926.     fácil es utilizando  la "Lógica Transaccional" ,
  927.     será el propio   gestor    de base  de  datos   el  que
  928.     proporcione     mecanismos  de    bloqueo    de   ficheros   y
  929.     consolidación o retroceso  en  la operaciones  con  las
  930.     tablas. Pues bien Mysql no  soporta las transacciones en  aras
  931.     simplemente  de  la velocidad (o   por lo  menos así lo
  932.     indican en sus  comentarios) , sólo  nos podemos ayudar
  933.     con los comandos  LOCK   tables /UNLOCK tables  que   permiten
  934.     bloquear tablas impidiendo que otros usuarios puedan acceder a
  935.     ellas  pero sin  la posibilidad  de  deshacer las  operaciones
  936.     realizadas con los datos.</P>
  937.  
  938.     <P>Teniendo  en     cuenta    estas   restricciones    en   la
  939.     utilización del  servidor a continuación veremos
  940.     como implementamos algunos comandos SQL, no con el objetivo de
  941.     analizar  los  comandos,   sino  ver   como éstos    se
  942.     implementan en este Gestor de bases de datos
  943.     </P>
  944.  
  945.     <P>Una vez que tenemos  el servidor arrancado  ya no nos queda
  946.     nada más que  enviarle instrucciones para realizar  las
  947.     operaciones     que   deseemos.  Como      ejemplo veremos  la
  948.     creación de   una    base  de  datos   "personas"   que
  949.     está    constituida    por   tres   tablas   "clientes"
  950.     "provincias" y "municipios". Es  un  ejemplo muy simple  y sin
  951.     ninguna utilidad pero nos ayudará   en un ejemplo  real
  952.     como  podemos  manipular la base de   datos.  En primer lugar,
  953.     diremos que  éstas  operaciones podemos  realizarlas de
  954.     varias formas: una de ellas sería atreves de una API en
  955.     C , C++, JAVA  o por medio  de una ODBC si estuviéramos
  956.     trabajando en  Windows95 (con perdón)  o también
  957.     podríamos   realizarlo  con  la   shell  de  la  propia
  958.     instalación.  Ésta última forma no parece
  959.     más apropiada para  nuestro articulo ya que  no tenemos
  960.     que describir las particularidades  de los distintos lenguajes
  961.     de programación.</P>
  962.  
  963.     <P>La shell de Mysql podemos arrancarla ejecutando</P>
  964. <pre>
  965.     mysql     nombrebasedatos
  966. </pre>
  967.     <BR>
  968.  
  969.     <P>y se  nos presentará el  prompt de la shell,  con lo
  970.     cual podemos enviar comandos al servidor.</P>
  971.  
  972.     <P>Asimismo podemos  ejecutar  la   shell en modo   "batch"  o
  973.     diferido ejecutando:</P>
  974. <pre>
  975.         mysql -e("comando SQL .... ") nombre_base_datos<BR>
  976. </pre>
  977.  
  978.     <P>con lo que     conseguiremos  enviar el  comando  SQL    al
  979.     servidor.</P>
  980.  
  981.     <P>Para nuestro ejemplo hemos creado una base de datos llamada
  982.     "personas"con el comando</P>
  983. <pre>
  984.     mysqladmin create personas<BR>
  985. </pre>
  986.     <BR>
  987.     <P>Arrancaremos la shell con el comando</P>
  988. <pre>
  989.         mysql  personas
  990. </pre>
  991.  
  992.     <P>y  ya   desde la shell  podemos   enviar comandos al propio
  993.     servidor , como por ejemplo, que  nos enseñe las tablas
  994.     de la bases de datos con la que hemos arrancado la shell:</P>
  995.     <BR>
  996. <pre>
  997.     > show tables /g<BR>
  998. </pre>
  999.  
  1000.     <P>y el sistema nos responderá con:</P>
  1001.     <pre>
  1002.     Database: personas<BR>
  1003.     +-------------+
  1004.     |   Tables    |
  1005.     +-------------+
  1006.     | clientes    |
  1007.     | municipios  |
  1008.     | provincias  |
  1009.     +-------------+
  1010. </PRE>
  1011.  
  1012.     <P>Todos los comandos que  enviamos al servidor desde la shell
  1013.     siempre  acabarán con /g que es  la forma de indicar el
  1014.     fin de comando y el envío de este  al servidor para que
  1015.     lo ejecute.</P>
  1016.  
  1017.     <P>Naturalmente,  antes de  que el sistema   nos devuelva esta
  1018.     información, hemos tenido que crear  las tablas con los
  1019.     correspondiente comandos CREATE , los cuales tendrán un
  1020.     aspecto como:</P>
  1021.  
  1022.  
  1023. <pre>
  1024. CREATE TABLE clientes
  1025.           (NIF         CHAR(9)   NOT NULL PRIMARY KEY,
  1026.            Nombre      CHAR(15)  NOT NULL,
  1027.            Apellidos   CHAR(35)  NOT NULL,
  1028.            Direccion   CHAR(50)  NOT NULL,
  1029.            Poblacion   INT(5)    NOT NULL,
  1030.            Provincia   INT(2)    NOT NULL,
  1031.            Telefono    INT(9),
  1032.            Fecha_Alta  DATE      NOT NULL)   /g
  1033.  
  1034. CREATE TABLE provincias
  1035.           (Cod_provincia       INT(2)   NOT NULL PRIMARY KEY,
  1036.            Descripcion_p       CHAR(30) NOT NULL) g
  1037.  
  1038. CREATE TABLE municipios
  1039.           (Cod_provincia       INT(2)    NOT NULL,
  1040.            Cod_municipio       INT(3)    NOT NULL,
  1041.            Descripcion_m       CHAR(30)  NOT NULL,
  1042.               PRIMARY KEY(Cod_provincia,Cod_municipio)) /g
  1043. </pre>
  1044.     <BR>
  1045.  
  1046.  
  1047.     <P>Si a continuación ejecutamos:
  1048.     </P>
  1049. <pre>
  1050.     > show colums from clientes from personas /g
  1051.     > show columns from provincias  from personas /g
  1052.     > show columns from municipios  from personas /g
  1053. </pre>
  1054.  
  1055.     <P>obtendremos respectivamente:</P>
  1056.  
  1057. <PRE>
  1058. Database: personas     Table: clientes  Rows: 4
  1059. +--------------+----------+------+-----+---------+-------+
  1060. | Field        | Type     | Null | Key | Default | Extra |
  1061. +--------------+----------+------+-----+---------+-------+
  1062. | NIF          | char(9)  |      |PRI  |         |       |
  1063. | Nombre       | char(15) | YES  |     |         |       |
  1064. | Apellidos    | char(35) |      |     |         |       |
  1065. | Direccion    | char(50) |      |     |         |       |
  1066. | Poblacion    | int(5)   |      |     |   0     |       |
  1067. | Provincia    | int(2)   |      |     |   0     |       |
  1068. | Telefono     | int(9)   | YES  |     |         |       |
  1069. | Fecha_Alta   | date     | YES  |     |         |       |
  1070. +--------------+----------+------+-----+---------+-------+
  1071. </PRE>
  1072.  
  1073. <PRE>
  1074. Database: personas     Table: provincias  Rows: 3
  1075. +-----------------+----------+------+-----+---------+-------+
  1076. | Field           | Type     | Null | Key| Default  | Extra |
  1077. +-----------------+----------+------+-----+---------+-------+
  1078. | Cod_provincia   | int(2)   |      | PRI |    0    |       |
  1079. | Descripcion_p   | char(30) |      |     |         |       |
  1080. +-----------------+----------+------+-----+---------+-------+
  1081. </PRE>
  1082.  
  1083. <PRE>
  1084. Database: personas     Table: municipios  Rows: 9
  1085. +------------------+----------+------+-----+---------+-------+
  1086. | Field            | Type     | Null | Key| Default  | Extra |
  1087. +------------------+----------+------+-----+---------+-------+
  1088. | Cod_provincia    | int(2)   |      | PRI |   0     |       |
  1089. | Cod_municipio    |  int(3)  |      | PRI |   0     |       |
  1090. | Descripcion_m    | char(30) |      |     |         |       |
  1091. +------------------+----------+------+-----+---------+-------+
  1092. </PRE>
  1093.  
  1094.     <P>El siguiente paso  sería introducir datos a cada una
  1095.     de las tablas, vamos ha  utilizar el  comando INSERT puro  del
  1096.     SQL   sin   que   intervenga  ningún     lenguaje    de
  1097.     programación ni rutina ni API:</P>
  1098.  
  1099.  
  1100.     <P>Para   insertar  un registro    en   la tabla  de clientes,
  1101.     municipios y    provincias lo  realizaremos    respectivamente
  1102.     como:</P>
  1103.  
  1104.     <FONT size=-1>
  1105.     <pre>
  1106.     INSERT INTO clientes VALUES
  1107.     ("5316828K","PEDRO","ROMERO
  1108.     DIAZ","C/ HOLA 9   ",29003,29,911111111,19980203)  
  1109.     /g
  1110.  
  1111.     INSERT INTO municipios VALUES
  1112.     (28,001,"Fuenlabrada")
  1113.     /g
  1114.  
  1115.     INSERT INTO provincias VALUES
  1116.     (08,"Barcelona")
  1117.     /g
  1118.     </pre>
  1119.     </FONT>
  1120.  
  1121.  
  1122.     <P>Y  finalmente,   terminaremos  nuestro  recorrido   por los
  1123.     comandos  SQL  realizando selecciones de   los filas que hemos
  1124.     introducido en las tablas  creadas anteriormente dentro  de la
  1125.     base de  datos   que hemos creado  para   el ejemplo  de  este
  1126.     articulo.  Seleccionaremos registros  de las  tabla de cliente
  1127.     variando la condición se selección y una primera
  1128.     selección de la tabla de municipios:</P>
  1129.  
  1130. <font size=-1>
  1131.         <pre>
  1132. >   SELECT ALL
  1133. Cod_provincia, Cod_municipio, Descripcion_m from municipios
  1134.        where Cod_provincia = 28 /g
  1135.  
  1136. Cod_provincia    Cod_municipio    Descripcion_m
  1137. 28              1               Fuenlabrada
  1138. 28              2               Pozuelo
  1139. 28              3               Madrid
  1140.  
  1141.  
  1142.  
  1143. >  SELECT ALL
  1144. NIF,Nombre,Apellidos,Direccion from clientes
  1145.        where Poblacion = 28001       
  1146.  
  1147. NIF        Nombre        Apellidos          direccion
  1148. 2416728U   JOSE    FERNANDEZ     ROMERO      C/ FELIZ 1 3G
  1149.  
  1150. > SELECT ALL NIF,Nombre,Apellidos,Direccion from clientes
  1151.        where Provincia  = 29
  1152.  
  1153. NIF        Nombre         Apellidos           direccion
  1154. 23198623N  JUAN ANDRES    RUIZ MORALES   C/ CATEDRAL 12 2B
  1155. 5316828K   PEDRO          ROMERO DIAZ    C/ HOLA 9
  1156. 52312844J  LUIS ALBERTO   LISTO JIMENEZ  C/ ROSA DE LOS VIENTOS 129 3I  
  1157. </PRE>
  1158.  
  1159.     </FONT>
  1160.  
  1161. <A name="section6"></A><H3>Conclusiones</H3>
  1162.  
  1163.     <P>Como   comentaba   al   principio del  artículo,  el
  1164.     objetivo que     seguía era simplemente     mostrar  el
  1165.     funcionamiento y ver las características  fundamentales
  1166.     de una  implementación en  concreto de un   servidor de
  1167.     bases  de datos SQL ,  pero no  solo quería indicar una
  1168.     sería de recetas y comandos para poder utilizarlo, sino
  1169.     que pretendía  realizar un estudio de las posibilidades
  1170.     y carencias que  podía tener este software ,  sobretodo
  1171.     porque  conociendo  a fondo   un producto  podemos obtener  el
  1172.     máximo rendimiento de éste,  utilizándolo
  1173.     en   aquellos   aspectos  en los  que  más  potenciados
  1174.     están. Este es  el  caso  de este  gestor  de bases  de
  1175.     datos, ya que considero que la no implementación de los
  1176.     triggers y  la lógica transaccional hace muy complicado
  1177.     el manejo de  datos  (inserciones, modificaciones,  borrado de
  1178.     registros) desde    aplicaciones  multiusuarios  y  utilizando
  1179.     multitud de tablas relacionas  entre  si.  Aunque pienso  que,
  1180.     para aplicaciones  donde se   pretenda realizar consultas  muy
  1181.     rápidas a  bases  de datos  muy  grandes,  sería
  1182.     recomendable   éste servidor (teniendo siempre     como
  1183.     referencia la versión semi-free de este servidor)</P>
  1184.  
  1185.     <P>Indicar para concluir que  la base de  este articulo  la he
  1186.     obtenido   de la propia    documentación Mysql,  que la
  1187.     considero bastante  completa, de  algunos  artículos de
  1188.     revistas  especializadas así   como de un   amarillento
  1189.     manual de "auto-estudio" de IBM sobre SQL.</P>
  1190.  
  1191.  
  1192.  
  1193.  
  1194.     </TD>
  1195.       </TR>
  1196.     </TABLE>
  1197.     
  1198.  
  1199. <!-- ARTICLE FOOT -->
  1200.     <BR clear="all">
  1201.     <CENTER>
  1202.       <TABLE width="95%">
  1203.  
  1204.     <TR>
  1205.       <TD align="center" bgcolor="#666666">
  1206.         <FONT color="#ffffff">
  1207.           Páginas web mantenidas por Miguel Ángel Sepúlveda<BR>
  1208.           © Jose M. Fernández 1998<BR>
  1209.           <B>LinuxFocus 1998</B>
  1210.         </FONT>
  1211.       </TD>
  1212.     </TR>
  1213.     
  1214.       </TABLE>
  1215.     </CENTER>
  1216.     
  1217.  
  1218.  
  1219.   </BODY>
  1220.   
  1221. </HTML>
  1222.