ENTRAR EN EL FOROHACK ANTIGUO (Muchos temas viejos y de menor nivel)
19:26:17 24/04/2014
¿No estas registrado?
Login: Clave:
27 Usuarios en línea: 0 registrados, 27 invitados.
Conéctate y verás los usuarios en línea
Tema: Tutorial de MySQL 2 votos2 votos2 votos2 votos2 votos
    Responder
Todos Los Foros -> SQL/mySQL -> Tutorial de MySQL
Autor Mensaje (Ver Versión para Imprimir)
trisquel
Usuario aficionado

Mensajes: 18
Registrad@:
22/12/2003
Estado: Desconectad@
Ver último Post
Tutorial de MySQL

Este es un tutorial más de MySQL,lo más importante de él es que lo hice yo.
Es traducción, del gallego, de uno que existe en: http://trisquel-blog.com, aunque corregida, la traducción está hecha con google, si aparece algún enlace roto o alguna sentencia errónea en el blog mencionado se probó todo, si me mandais un privado indicándomelo lo arreglo. Espero que os guste.

Que é MySQL? - MySQL es uno de los servidores de bases de datos más usados, que sigue el esquema cliente/servidor y al que si puede acceder a través de una red, es un sistema gestor de bases de datos relacionales (SGBDR) capaz de atender el mismo tiempo a varias aplicaciones o usuarios. Y también es, Open Source(Código Abierto).
Una base de datos es una estructura de datos complejos, está formada por tablas, registros, campos y las relaciones entre ellos. Puede ir desde una simple agenda de teléfonos hasta todos los archivos de la policía o de la Seguridad Social.
Como ejemplo sencillo de base de datos puede servir el DNI. El armario que guarda el DNI podría corresponderse con una base de datos, cada departamento del armario sería una tabla, cada DNI vendría siendo un registro y cada uno de los datos que contiene el DNI, un campo.

Instalación. -Va a ser una instalación de MySQL 5.0 sobre Debian, pero todo el que vamos a hacer vale para Ubuntu. La manera recomendada por MySQL para instalar en Linux es utilizando paquetes RPM. Los podemos bajar desde aquí. Los RPMs de MySQL están engendrados en SuSE Linux 7.3, pero deberían funcionar con cualquier versión de Linux que soporte rpm y el uso de glibc. La manera de instalarlos en Debian es con el paquete alien desde los repositorios oficiales, primero instalamos alien:
#aptitude install alien
E despois convertemos os rmp a deb:
#alien -d paquete.rpm
O bien directamente:
#alien -i paquete.rpm
Más fácil es hacerlo desde los repositorios de Debian, sólo tenemos que hacer:
# aptitude install mysql-server mysql-client
En la mayoría de los casos bastante para conseguir que funcione.
Muy importante: Durante la instalación, vamos a tener que dar una contraseña, mientras no la cambiemos, será la contraseña de root para MySQL. Nada que ver con la contraseña del superusuario del sistema. Tampoco estaría de más comprobar que existen el usuario y el grupo mysql, si hace falta, podemos crearlos así:
#groupadd mysql
#useradd -g mysql mysql

Aquí hay una relación de S.O. que soportan MySQl.

Configuración y GUI.-MySQL dispone de varias herramientas con entorno gráfico que ayudan en la administración y configuración de la base de datos. una de las más sencillas es MySQL-Administrator, es parte del MySQL y para instalarlo so tenemos que hacer:
#aptitude install mysql-admin
Si lo ejecutamos desde el menú o la línea de comandos accedemos a todas estas opciones:


También dispone de un editor llamado MySQL Query Browser que permite crear bases de datos, tablas y hacer operaciones con los datos almacenados en ellas. Se instala así:
#aptitude install mysql-query-browser
El resultado es:

Hay otros ámbitos gráficos de administración que aunque no pertenecen a MySQL tienen una gran popularidad. Entre ellos vamos a subrayar:
phpMyAdmin. -Es una herramienta hecha en PHP para administrar MySQL a través de páginas web. En la actualidad puede crear y eliminar bases de datos, crear, modificar y eliminar tablas, borrar, editar y añadir campos, ejecutar sentencias SQL, administrar claves, administrar privilegios, exportar datos en varios formatos y está disponible en 50 idiomas. Es licencia GPL.

Se puede descargar desde aquí o desde los repositorios Debian.
Y como alternativa:
phpMinAdmin.-Tiene unas características semejantes a phpMyAdmin, también está feito en PHP, es un solo módulo y es de uso libre bajo licencia Apache.

Se puede descargar desde aquí.
Además de los ámbitos gráficos también tenemos la línea de comandos de la consola, que es la que vamos a usar en este tutorial. La abrimos como root y después vamos a MySQL, lo hacemos según la primera línea señalada por la flecha roja de la figura de abajo, como vedes es obligatorio hacerlo como root ya que hasta ahora es el único usuario, en la línea siguiente nos pide la contraseña, tenemos que darle el que le pusimos en la instalación, después de un saludo nos muestra la línea de comandos de MySQL, justo encima de la segunda flecha roja, la que nos muestra el comando para salir, que es quit, tal como vemos abajo:

Esto nos dice que ya estamos dentro del SGBDR.
La siguiente tabla muestra cada uno de los indicadores que podrá ver y sintetiza lo que dicen acerca del estado en que se encuentra mysql:
Prompt          Significado
mysql> Listo para un nuevo|joven comando.
             -> Esperando a siguiente línea un comando de múltiples líneas.
               '> Esperando la siguiente línea una cadena que comienza con apostrofo (''').
             "> Esperando la siguiente línea una cadena que comienza con comilla doble ('"').
             '> Esperando la siguiente línea una cadena que comienza con tilde (''').
         /* > Esperando a siguiente línea un comentario que comienza con /*.
El prompt /* > fue introducido en la serie 5.0 a partir de MySQL 5.0.6.
Ahí vamos a escribir todas las instrucciones que necesitamos para sacarle partido a nuestro servidor de bases de datos. Vamos a ver de sacarle provecho.
Crear Usuarios e BBDD..- Crear una cuenta de usuario y fácil. La siguiente línea creará un nombre de usuario trisquel y contraseña trisquel:
mysql> CREATE USER trisquel@localhost IDENTIFIED BY 'trisquel';
La sentencia CREATE USER
crea nuevas cuentas. Para utilizarla debes tener el privilegio GRANT OPTION para la base de datos. Se puede dar una contraseña a la cuenta con la cláusula opcional IDENTIFIED.
Dejemos que él pueda trabajar con bases de datos. La siguiente línea daríalle nuestro usuario todos los privilegios sobre todos los bases de datos en el servidor:
mysql> GRANT ALL ON PRIVILEGES *.* TO trisquel@localhost IDENTIFIED BY 'trisquel';
De acuerdo a la siguiente, nuestro usuario tendrá todos los privilegios sobre la base de datos db1234:
mysql> GRANT ALL ON PRIVILEGES db1234.* TO trisquel@localhost
   -> IDENTIFIED BY 'trisquel';

Pongo a continuación la tabal de privilegios:

Según la línea de abajo nuestro user puede utilizar la opción SELECT en todas las bases de datos:
mysql> SELECT ON *.* TO trisquel@localhost IDENTIFIED BY 'trisquel';
Para quitar todos los privilegios:
mysql> REVOKE ALL PRIVILEGES ON *.* FROM trisquel@localhost;
Y para deshacernos del siempre:
mysql>DROP USER trisquel@localhost;
GRANT
y REVOKE permiten a los administradores de sistemas crear cuentas de usuario de MySQL y conceder y revocar los derechos de estas cuentas.
Una vez que disponemos de cuenta de usuario vamos a crear la base de datos. Esto lo hace la sentencia CREATE:
mysql> CREATE DATABASE db1234;
Y para eliminarla DROP:
mysql>DROP DATABASE db1234;
La sentencia SHOW muestra las bases de datos que existen actualmente en el servidor:
mysql> SHOW DATABASES;
Para trabajar con ella necesitamos la sentencia USE, que al igual QUIT, no es necesario poner un punto y coma al final (pero se puede hacer). La sentencia USE tiene otra característica:Se debe escribir en una sola línea:
mysql> USE db1234;
Las bases de datos solo es necesario crearlas una vez, pero deben ser seleccionadas cada vez que inicia una sesión. Se puede hacer mediante el comando USE como se muestra arriba, o puede indicar la base de datos desde la línea de comando al ejecutar MySQL. Sólo tenemos que indicar el nombre de la base de datos a continuación de los parámetros de entrada:
mysql> mysql-u user -p db1234

Primera Mirada a SQL.- MySQL cumple con el estándar SQL. El Lenguaje de consulta estructurado SQL (Structured Query Language) es un lenguaje declarativo de acceso a bases de datos relacionales, que permite especificar diversos tipos de operaciones en estas. Una de sus características es el manejo del álgebra y del cálculo relacional permitendo efectuar consultas con el fin de recuperar, de una manera sencilla, información de una base de datos y realizar modificaciones en ella. Es un lenguaje de cuarta generación (4GL).
Vamos a ver las consultas antes de crear tablas, cargar datos y recuperalos. Aquí veremos la entrada de comandos usando consultas SQL para ir familiarizándonos con mysql.
Vamos a empezar con un comando que indica al servidor que muestre su número de versión y fecha actual. Lo escribimos a continuación do prompt mysql> y presionamos Enter:
mysql>SELECT VERSION(), CURRENT_DATE;

Esta consulta nos dice que:
Una sentencia SQL termina con un punto y coma. (Hay excepciones, como Quit, mencionado anteriormente).
MySQL muestra los resultados de la consulta en filas y columnas. La primera fila contiene etiquetas para las columnas. Las líneas restantes son el resultado de la consulta. Cada línea representa un registro y cada columna un campo.
Las palabras clave pueden ingresarse en cualquier combinación de mayúsculas y minúsculas. Observa la palabra reservada SELECT.

No así los nombres de bases de datos, tablas, etc.

El hecho de usar una letra mayúscula causa un error, ese nombre de tabla no existe. Esto se debe, a que, a diferencia de MySQL, Linux diferencia entre mayúsculas y minúsculas.

Tablas. Siguiendo con SQL.- La creación de la base de datos fue una tarea sencilla, pero hasta ahora permanece vacía, la ejecución de SHOW lo muestra:
mysql> SHOW TABLE;
Obtendríamos-> Empty set (0.00 sec)
Vamos a crear una tabla:
mysql> CREATE TABLE taboa1 ( Id INT AUTO_INCREMENT,desc ->VARCHAR(100) NULL, precio DECIMAL(9, 3) NULL, data DATE NULL,
->PRIMARY KEY (id)) ENGINE = MyISAM;

Para comprobar que la tabla ha sido creada como se esperaba, se utiliza la sentencia DESCRIBE:
mysql> DESCRIBE taboa1;
Deshacernos de una tabla es muy fácil DROP:
mysql>DROP taboa1;
Ojo. DROP elimina la tabla, no el contenido, eso lo hace DELETE.
mysql> DELETE FROM taboa1;
Una manera de llenar una base de datos vacía es con un archivo de texto que tenga un registro por línea y los campos separados por tabulador (esto es lo que MySQL usa por defecto). La sentencia siguiente, si tenemos un archivo llamado pepe.txt, lo hace:
Mysql>LOAD DATA LOCAL INFILE ‘/home/anxo/pepe.txt’ INTO TABLE taboa1;
Para leer un archivo txt delimitado por comas, la frase es:
Mysql> LOAD DATA INFILE ‘/home/anxo/pepe.txt’ INTO TABLE taboa1
->FIELDS TERMINATED BY ‘,’;

Escribir un archivo con campos delimitados por comas:
Mysql> SELECT * INTO OUTFILE ‘/home/anxo/pepe.txt’
->FIELDS TERMINATED BY ‘,’ FROM taboa1;

Si quieren añadir registros uno a un:
mysql> INSERT INTO taboa1 VALUES(1,’Valdorras’,’2010-01-01′,NULL);
Las cadenas y las fechas van entre comillas simples. El formato de fecha es el inglés.
Para actualizar un registro:
mysql> UPDATE taboa1 SET descri=’Limia’ WHERE Id=1;
Esta línea cambia el contenido del campo descri condicionado por el valor Id gracias a la cláusula WHERE.
La parte difícil será decidir cómo va a ser la estructura de la base de datos: qué tablas necesitará, y qué columnas estarán en cada tabla. Pero esa ya es otra historia.

Tipos de datos y funciones.- MySQL soporta los tipos de datos numéricos, fecha y hora y cadenas de carácteres. La siguiente tabla contiene los números enteros y los intervalos que incluyen: </ p>
<table border="1" width="60%" align="center">
<tbody>
<tr>
<td width="15%" align="justify"> Tipo </ td>
<td width="20%" align="right"> mínimo </ td>
<td width="20%" align="right"> <máxima </ td>
</ TR>
<tr>
<td width="15%" TINYINT align="left"> </ td>
width="20%" <td align="right"> -128 </ td>
<td align="right"> 127 width = "20%" </ td>
</ TR>
<tr>
<td width="15%" align="justify"> </ td>
width="20%" <td align="right"> 0 </ td>
width="20%" <td align="right"> 255 </ td>
</ TR>
<tr>
<td width="15%" SMALLINT align="left"> </ td>
width="20%" <td align="right"> -32 768 </ td>
width="20%" <td align="right"> 327 670 </ td>
</ TR>
<tr>
<td width="15%" align="justify"> </ td>
width="20%" <td align="right"> 0 </ td>
width="20%" <td align="right"> 65 535 </ td>
</ TR>
<tr>
<td width="15%" MEDIUMINT align="left"> </ td>
width="20%" <td align="right"> -8388608 </ td>
width="20%" <td align="right"> 8388607 </ td>
</ TR>
<tr>
<td width="15%" align="justify"> </ td>
width="20%" <td align="right"> 0 </ td>
<td align="right"> 16.777.215 width = "20%" </ td>
</ TR>
<tr>
<td width="15%" <p INT </ td>
width="20%" <td align="right"> -2147483648 </ td>
width="20%" <td align="right"> 2147483647 </ td>
</ TR>
<tr>
<td width="15%" align="justify"> </ td>
width="20%" <td align="right"> 0 </ td>
width="20%" <td align="right"> 4294967295 </ td>
</ TR>
<tr>
<td width="15%" BIGINT align="left"> </ td>
width="20%" <td align="right"> -9,2233 x 10 ^ 18 </ td>
width="20%" <td align="right"> 9,2233 x10 ^ 18 </ td>
</ TR>
<tr>
<td width="15%" align="justify"> </ td>
width="20%" <td align="right"> 0 </ td>
width="20%" <td align="right"> 18,4467 x10 ^ 18 </ td>
</ TR>
</> TBODY
</ Table> </ p>
Para declarar un entero: INT(n), donde n es el número de dígitos de acuerdo con la tabla anterior.
Después de los enteros van los decimales, y se declaran así:
DECIMAL(E,D)
Donde E<=64 y D<=30, lo que se traduce en un número de 64 dígitos, 30 son decimales y el resto forman la parte entera.
Los tipos de datos DOBLE , FLOAT y REAL son de coma flotante. El tipo DECIMAL es de punto fijo y los cálculos son precisos hasta 64 dígitos. Antes de MySQL 5.0.3 permitíanse 254 dígitos, pero la precisión es menor. Los cálculos fueron realizados previamente con punto flotante de doble precisión, que tiene una precisión de 52 bits (unos 15 dígitos decimales). En esta dirección hay algunos ejemplos de valores de punto flotante .
Para representar la fecha y la hora MySQL tiene los siguientes tipos:
<table align="center" width="60%"> border="1"
   <tbody>
      <tr>
         <td align="center"> Tipo </ td>
         <td align="center"> Valor </ td>
      </ TR>
      <tr>
         <<td> DATETIME / td>
         aaaa hh-mm-dd <td> ': mm: <ss' / td>
      </ TR>
      <tr>
         <<td> DATE / td>
         <Dddd <td> '-mm-aa' / td>
      </ TR>
      <tr>
         <<td> TIMESTAMP / td>
         <td> 0000000000000 </ td>
      </ TR>
      <tr>
         <<td> TIME / td>
         <td> hh: mm: <ss '/ td>
      </ TR>
      <tr>
         <<td> YEAR / td>
         <td> 0000 </ td>
      </ TR>
   </> TBODY
</ Table>
Todo sobre las funciones fecha y hora aquí.
Hay que tener en cuenta que MySQL hace una validación básica de las fechas. Así, los rangos para año, mes y día son: 1000-9999. 00 a 12 y 00 a 31. Eso permitiría almacenar fechas como: 2010-04-31.
Los separadores, entre otros son: '-', '/', '.', '@', para la fecha, y: ':', '+', '*', '^' para o tempo.
Para almacenar las cadenas MySQL ofrece los siguientes tipos:
</ P>
<table border="1" width="85%" align="center">
   <tbody>
      <tr>
         <td align="center" width="45%"> Tipo </ td>
         <td align="center" width"40%"> Valor </ td>
      </ TR>
      <tr>
         <td> CHAR / td>
         <td> 0-255 </ td>
      </ TR>
      <tr>
         <td> VARCHAR / td>
         <td> 0-255 </ td>
      </ TR>
      <tr>
         <td> BINARY / td>
         <td> 0-255 </ td>
      </ TR>
      <tr>
         <td> VARBINARY / td>
         <td> 0-255 </ td>
      </ TR>
      <tr>
         <td> TINYBLOB, TINYTEXT / td>
         <td> L+1 byte, donde L < 2^8 </ td>
      </ TR>
      <tr>
         BLOB <td>, TEXT </ td>
         <td> L+2 bytes, donde L < 2^16 </ td>
      </ TR>
      <tr>
         MEDIUMBLOB <td>, <MEDIUMTEXT / td>
         <td> L+3 bytes, donde L < 2^24 </ td>
      </ TR>
      <tr>
         <td> LONGBLOB LONGTEXT / td>
         <td> L+4 bytes, donde L < 2^32 </ td>
      </ TR>
      <tr>
         <td> ENUM ('valor1', 'valor2',...)</ td>
         <td> 1 o 2 bytes, según nº de valores (65.535 máximo) </ td>
      </ TR>
      <tr>
         <td> SET ('valor1', 'valor2',...)</ td>
         <td> 1,2,3,4 o 8 bytes, según nº. de miembros (64 máximo) </ td>
      </ TR>
   </> TBODY
</ Table>
La diferencia entre CHAR y VARCHAR está en la forma de almacenamiento, mientras que las cadenas son de longitud variable en VARCHAR , almacenando solo los valores necesarios más 1 byte para la longitud, CHAR llena con espacios los lugares vacíos. BINARY y VARBINARY son como CHAR y VARCHAR excepto que alamacenan bytes en lugar de caracteres.
En MySQL tenemos las siguientes funciones y operadores de comparación:
OR, | |, XOR Estos operadores son de exclusión, es suficiente con que cumpla una de las condiciones.
&&, AND son de inclusión y deben cumplir todas las condiciones.
La palabra clave WHERE Especifica una condición de búsqueda, y =, <, <=, >, >=, <>, son operadores de comparación.
La siguiente imagen ilustra su uso:

La palabra reservada SELECT permite seleccionar las columnas nome y vendas de la FROM tabla de nombre taboa1, WHERE, cuyas ventas fuesen mayores > o iguales = a 3000, OR o aquellas menores < de 375, AND y mayores > 120, o lo que es lo mismo entre 120 y 375.
NOT o !, es NOT lógico, comprueba si un valor es nulo o no. Se evaluase a 1 si el operando es 0, y 0 si el operando no es 0, y NOT NULL devuelve NULL. Ejemplo:

Entre
BETWEEN le permite elegir una serie dentro de un rango de valores. En nuestro caso todas las fechas entre el 1 y el 03 de enero 2010.

CASE, WHEN, THEN, ELSE
La sentenciaCASE busca el contenido de una constante/variable en una lista condicionada por WHEN, cuando lo encuentra, THEN le asígna el valor correspondiente, si no, ELSE ejecuta el default. Lo vemos mejor en el:

IN similar a un "=" para cada uno de los valores.

IS se comprueba un valor contra un valor booleano, donde el valor booleano puede ser TRUE,FALSE, o UNKNOWN.

IN e IS cobinados permiten realizar subconsultas.

Selección de la taboa1 aquellos registros cuyo identificador es nulo, y, además, no pertenezca a la tabla zonas.

LIKE, REGEXP permiten el uso de patrones para hacer búsquedas complejas.

Encuentra nombres que contienen la "a".

Encuentra nombres que empiezan por "C". Se puede hacer un montón de patrones con los dos operadores, teniendo en cuenta que:
Los patrones SQL, no distinguen entre mayúsculas y minúsculas, permiten utilizar el carácter '_' para representar una coincidencia con un carácter individual y '%' como comodín.
Algunas características de las expresiones regulares son:
~ '.' Coincidencia con cualquier carácter.
~ '[...>' Coincide con cualquier carácter entre los corchetes. Por ejemplo, '[cde>' coincidirá con 'c','d ', o ' e '. Para una referencia a un rango de caracteres. '[a-z>' detecta cualquier letra coicidente, así como '[0-9>' lo hace con cualquier dígito.
~ '*' coincidencia con cero o más apariciones de los caracteres que le preceden. Por ejemplo, 'x*' detecta cualquier número de caracteres 'x', '[0-9>*' cualquier cantidad de dígitos, y '.*' coincidirá con cualquier número de cualquier carácter.
~ REGEXP tendrá éxito si el patrón encuentra coincidencia en cualquier parte del valor examinado (esto difiere con LIKE, en que este sólo tiene éxito si el patrón concuerda con todo el valor).
~ Para que un patrón detecte coincidencias solamente al final o al principio del valor, seusa '^' al principio o '$' al final del patrón.
Las operaciones de comparación dan un valor de 1 (TRUE) o 0 (falso), o NULL.

Funciones de agregación GROUP BY. Si se utiliza una función de grupo sin cláusula GROUP BY, es similar a agrupar todos los registros. Veamos las más importantes:
AVG, MAX, MIN, SUM calculan la media, máximo, mínimo y la suma de una serie de valores de datos y COUNT, da un contador con el número de registros devueltos por una consulta. Algunos ejemplos:

La primera de las sentencias devuelve todas las filas y columnas de la tabla taboa1, la segunda sin GROUP BY, devuelve el valor de las funciones agrupande todos los registros y, por último, aquí ya con GROUP BY, es la misma consulta agrupando por fechas.
El comportamiento de COUNT es así en tablas MyISAM. Para motores de almacenamiento transaccionales (InnoDB, BDB ), llevar un contador de los registros no es fácil, ya que pueden ocurrir múltiples transacciones, y cada una de ellas puede afectar al contador.
El motor de almacenamiento es la parte del SGDB responsable de la creación, actualización, reparación y borrado de los datos. MySQL tiene la opción de definir qué motor usar cada vez que se crea una tabla.
La sentencia:
mysql> SHOW ENGINES
nos permite ver los motores disponibles;

Referencias:
http://dev.mysql.com/doc/refman/5.0/es/index.html.
Wikipedia
Proponer una traducción mejor





O Blogue do Trisquel



Mensaje Editado el 21:51:18 09/09/2010
30/07/2010 20:03:44 
jonn06
Usuario novato
Sin Imagen

Mensajes: 3
Registrad@:
22/06/2007
Estado: Desconectad@
Ir Arriba
RE: Tutorial de MySQL

muy bueno gracias
24/05/2011 19:17:57 


REGÍSTRATE PARA PODER ENVIAR UN MENSAJE (tardas 20 segundos)

Copyright ForoHack.com