MySQL al vuelo, en Linux

Este es un artículo que hice hace mucho tiempo, lo quería publicar pero está muy desordenado. Lo puse como si fuera un código fuente ya que así no se modifica el formato del artículo. Lo que trata este artículo es un vistazo rápido de como se usa MySQL. No explico para nada, de que trata una base de datos ni cosas teóricas. Es solo a lo práctico, para las personas que tienen una idea de que son y para que sirven las bases de datos.

MySQL al vuelo, en Linux
Mas que nada esto son unos pequeños apuntes que hice para mi, y tal vez se pueda descifrar:

Hay que abrir el monitor MySQL, en Linux. En Win igual hay un monitor de MySQL:

writkas@writkas-desktop:~$ sudo mysql -u root -h localhost -p

se abre el monitor de mysql en el servidor local, osea en mi pc.
-u indica el nombre del usuario, root para poder crear y eliminar bases de datos
-h indica el nombre del host
-p para que pida password (la contraseña es la misma que tu usuario root)

El comando anterior muestra:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 154
Server version: 5.0.67-0ubuntu6 (Ubuntu)
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

Una vez dentro del shell MySql, podemos ver las bases de datos con:

mysql show databases;

Muestra:

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
+--------------------+
2 rows in set (0.00 sec)

Creo una base de datos con el nombre ‘Foro’:

mysql create database Foro;

Muestra:

Query OK, 1 row affected (0.00 sec)

Ahora la puedes ver creada con:

mysql show databases;

Muestra:

+--------------------+
| Database           |
+--------------------+
| information_schema |
| Foro               |
| mysql              |
+--------------------+
3 rows in set (0.00 sec)

Para eliminar la base de datos ‘Foro’ se utiliza:

mysql drop database Foro;

Muestra:

Query OK, 0 rows affected (0.01 sec)

La creamos de nuevo:

mysql create database Foro;

Muestra:

Query OK, 1 row affected (0.00 sec)

Para usar una base de datos, en el caso de que se quiera crear tablas, etc.
Vuelvo con el ejemplo de la base de datos ‘Foro’ :

mysql use Foro;

Muestra:

Database changed

Luego de haber indicado que base de datos se utiliza, con la palabra ‘use’, se
pueden ver las tablas. Pero en este caso no mostrará ninguna por que no la he creado:

mysql show tables;

Muestra:

Empty set (0.00 sec)

Ahora para crear una tabla ‘Usuarios’ que contenga los usuarios del foro:

mysql create table Usuarios (usuariosID int unsigned not null auto_increment primary key, nombre char(30) not null, direccion varchar(50) not null, ciudad varchar(50) not null, edad tinyint unsigned not null);

Muestra:

Query OK, 0 rows affected (0.00 sec)

con ‘create table’ se crea una tabla con el identificador ‘Usuarios’ luego entre paréntesis
se definen cada uno de los campos. ‘usuariosID’ es un identificador que referencia a datos
tipo ‘int unsigned’, enteros sin signos (solo números positivos). ‘not null’ indica que no
debe ser nulo, no entiendo muy bien esto… ‘auto_increment’ indica que automáticamente, el
numero entero que contiene, va a ser incrementado en 1 si el valor no es asignado. En el
caso de que el numero si sea asignado estará bien pero NO debe repetirse en la tabla
‘Usuarios’, esto último es gracias a la palabra ‘primary key’. Si se especifica un valor en
el campo ‘usuariosID’ el próximo que no se especifique sera un numero +1 que el anterior.
‘,’ Indica que se va a definir otros campos. ‘nombre’ es el identificador de un tipo de
variable que tiene 30 caracteres lo que también en MySQL es equivalente a 30 bytes,
cerradamente si no contiene 30 bytes se rellena. Siempre son 30 bytes. ‘direccion’ es el
identificador de un tipo de variable que contiene caracteres, como máximo son 50, pero al
contrario que ‘char’ este valor se redondea a el numero de caracteres que ocupe. Por que se
utilizan estos dos tipos, varchar y char, es que char es mas rápido al no tener que redondiar
para ahorrar espacio. ‘edad’ es un identificador de un tipo de variable ‘tinyint unsigned’
que no es mas que una pequeña variable entera sin signo, a diferencia de int es que int es
mas grande.

El siguiente comando muestra la tabla creada:

mysql describe Usuarios;

Muestra:

+------------+---------------------+------+-----+---------+----------------+
| Field      | Type                | Null | Key | Default | Extra          |
+------------+---------------------+------+-----+---------+----------------+
| UsuariosID | int(10) unsigned    | NO   | PRI | NULL    | auto_increment |
| nombre     | char(30)            | NO   |     | NULL    |                |
| direccion  | varchar(50)         | NO   |     | NULL    |                |
| ciudad     | varchar(50)         | NO   |     | NULL    |                |
| edad       | tinyint(3) unsigned | NO   |     | NULL    |                |
+------------+---------------------+------+-----+---------+----------------+
5 rows in set (0.03 sec)

Para insertar datos en la tabla, en cada uno de los campos se puede hacer de esta manera:

mysql> insert into Usuarios values (null, 'Writkas sss', 'Angamos 9750', 'Victoria', 99);

De otra manera se podría hacer así:

mysql> insert into Usuarios set nombre = 'Writkos', direccion = 'Arturo Prat 999',
ciudad = 'victoria', edad = '1';

Muestra:

Query OK, 1 row affected (0.00 sec)

Ahora para mostrar los datos agregados:

mysql> select * from Usuarios;

Muestra:

+------------+-------------+-----------------+----------+------+
| UsuariosID | nombre      | direccion       | ciudad   | edad |
+------------+-------------+-----------------+----------+------+
|          1 | Writkas sss | Angamos 9750    | Victoria |   55 |
|          2 | Writkos     | Arturo Prat 999 | victoria |    1 |
+------------+-------------+-----------------+----------+------+
2 rows in set (0.00 sec)

Para ver solo algunos campos se puede utilizar:

mysql> select nombre, ciudad from Usuarios;

Muestra:

+-------------+----------+
| nombre      | ciudad   |
+-------------+----------+
| Writkas sss | Victoria |
| Writkos     | victoria |
+-------------+----------+
2 rows in set (0.00 sec)

Para ver los mismo campos pero con un limite de lineas:

mysql> select nombre, ciudad from Usuarios limit 0,1;

Muestra:

+-------------+----------+
| nombre      | ciudad   |
+-------------+----------+
| Writkas sss | Victoria |
+-------------+----------+
1 row in set (0.00 sec)

Para buscar segun algun criterio:

mysql> select * from Usuarios where edad=1;

Muestra:

+------------+---------+-----------------+----------+------+
| UsuariosID | nombre  | direccion       | ciudad   | edad |
+------------+---------+-----------------+----------+------+
|          2 | Writkos | Arturo Prat 999 | victoria |    1 |
+------------+---------+-----------------+----------+------+
1 row in set (0.00 sec)

Abría mucho mas que mostrar pero en el momento que escribí esto tenía mucho sueño…

Como ven no es para nada teórico.