Tutorial de comandos básicos de MySQL (Parte 1) 2013-07-27

En este tutorial vamos a aprender las sentencias básicas de SQL desde el cliente de MySQL en Debian Wheezy

Para inciar con este nanotutorial necesitamos tener instalado el cliente y servidor MySQL, puedes conocer más acerca de la instalación de ambos componentes en este nanotutorial.

Descargar la base de datos de prueba

Para el desarrollo de este nanotutorial, vamos a utilizar una base de datos de prueba que esta disponible desde la documentación oficial de MySQL, para esto vamos a ejecutar el siguiente comando:

wget https://launchpad.net/test-db/employees-db-1/1.0.6/+download/employees_db-full-1.0.6.tar.bz2

Descargar la base de datos de prueba

Esto puede tardar algunos minutos dependiendo de la velocidad de tu enlace a internet.

Descargar la base de datos de prueba

Descomprimir el archivo

Necesitamos ahora descomprimir el archivo que hemos descargado, para eso utilizaremos el siguiente comando:

tar -xvjf employees_db-full-1.0.6.tar.bz2

Descomprimir el archivo

Luego vamos a desplazarnos al directorio employees_db/ con el siguiente comando:

cd employees_db

Importar la base de datos con el cliente de MySQL

Para iniciar la importación de la base de datos a través del cliente de MySQL debes ejecutar el siguiente comando (debes saber la contraseña del usuario root).

mysql -u root -p -t < employees.sql

Importar la base de datos con el cliente de MySQL

Este proceso puede tardar unos minutos.

Importar la base de datos con el cliente de MySQL

Sentencias SQL

Ahora estamos listos para conocer un buen número de sentencias SQL con MySQL. Vamos a iniciar sesión con el cliente, para esto ejecuta el siguiente comando:

mysql -u root -p

Cada sentencia que ejecutemos en el cliente de MySQL debe de finalizar un el caracter ”;” al final de la sentencia.

SHOW DATABASES

Esta sentencia lista todas las bases de datos disponibles para el usuario con el que hemos iniciado sesión. En nuestro caso, al haber iniciado sesión con el usuario root, vamos a ver todas las bases de datos del servidor.

SHOW DATABASES;

SHOW DATABASES

USE <nombre_bd>

Esta sentencia nos sirve para cambiar a otra base de datos que el usuario tenga disponible.

USE employees;

SHOW TABLES

Esta sentencia lista todas las tablas disponibles en la base de datos.

SHOW TABLES;

SHOW TABLES

SHOW FIELDS FROM <nombre_tabla>

Lista la estructura de una tabla, mostrando los nombres de los campos, el tipo de datos y otras propiedades.

SHOW FIELDS FROM employees;

SELECT * FROM <nombre_tabla>

Lista todas las columnas y registros de una tabla.

SELECT * FROM employees;

SELECT * FROM employees

Ahora entienden porque tardo tanto la importación.

SELECT COUNT(*) FROM <nombre_tabla>

Devuelve el total de registros en la tabla.

SELECT COUNT(*) FROM employees;

 SELECT COUNT(*) FROM employees

SELECT * FROM <nombre_tabla> LIMIT <limite_filas> OFFSET <número_pagina>

Lista un número de registros limitado.

SELECT * FROM employees LIMIT 10;

SELECT * FROM employees LIMIT 10

También podemos definir el número de página deseado.

SELECT * FROM employees LIMIT 10 OFFSET 0;

SELECT * FROM employees LIMIT 10 OFFSET 0

Para obtener la siguiente página basta con incrementar el OFFSET.

SELECT * FROM employees LIMIT 10 OFFSET 1;

SELECT * FROM employees LIMIT 10 OFFSET 1

Este es el concepto de una paginación.

SELECT * FROM <nombre_tabla> ORDER BY <nombre_campo>

Lista los registros ordenados por un campo. El ordenamiento puede ser ascendente o descendente.

SELECT * FROM employees ORDER BY first_name ASC LIMIT 10;
SELECT * FROM employees ORDER BY first_name DESC LIMIT 10;

Si ven, podemos combinarlos con las otras sentencias.

SELECT * FROM employees ORDER BY first_name ASC LIMIT 10 OFFSET 1;

SELECT * FROM employees ORDER BY first_name ASC LIMIT 10 OFFSET 1

SELECT MAX|MIN(<nombre_campo>) FROM <nombre_tabla>

Muestra el valor mayor o menor del campo en la tabla.

SELECT MAX(hire_date) FROM employees;
SELECT MIN(hire_date) FROM employees;

SELECT MAX MIN

SELECT DISTINCT(<nombre_campo>) FROM <nombre_tabla>

Muestra los los diferentes valores de un campo en la tabla. Ningún valor aparecerá repetido.

SELECT DISTINCT(gender) FROM employees;

SELECT <nombre_campo> FROM <nombre_tabla>

Lista campos específicos de la tabla. Si hay más de un campo, estos deben delimitarse por una ”,”.

SELECT first_name, last_name, gender FROM employees LIMIT 10;

SELECT first_name, last_name, gender FROM employees LIMIT 10

SELECT SUM(<nombre_campo>) FROM <nombre_tabla>

Devuelve la sumatoria de campos numéricos.

SELECT SUM(salary) FROM salaries;

SELECT * FROM <nombre_tabla> WHERE <condiciones>

La sentencia WHERE nos sirve para filtrar registros por una serie de condiciones definidas por nosotros. Las condiciones deben cumplirse y pueden ser anidadas por los operadores lógicos OR y AND.

SELECT * FROM employees WHERE gender = 'M' AND last_name = 'Facello' LIMIT 10;

En este ejemplo estamos filtrando los registros donde el género sea M y además el apellido sea igual a Facello.

SELECT * FROM employees WHERE gender = 'M' AND (last_name = 'Facello' OR last_name = 'Simmel') LIMIT 10;

En el segundo ejemplo el campo género debe ser M y el apellido puede ser Facello o Simmel. Cuando se trabaja con diferentes operadores lógicos es necesario agruparlos por paréntesis para evitar malas interpretaciones del motor SQL.

Existen otros operadores condicionales como por ejemplo:

> mayor que

SELECT * FROM <nombre_tabla> WHERE <nombre_campo> > <valor>;

< menor que

SELECT * FROM <nombre_tabla> WHERE <nombre_campo> < <valor>;

>= mayor o igual que

SELECT * FROM <nombre_tabla> WHERE <nombre_campo> >= <valor>;

<= menor o igual que

SELECT * FROM <nombre_tabla> WHERE <nombre_campo> <= <valor>;

<> diferente a

SELECT * FROM <nombre_tabla> WHERE <nombre_campo> <> <valor>;

!= no igual que

SELECT * FROM <nombre_tabla> WHERE <nombre_campo> != <valor>;

IS NULL nulo

SELECT * FROM <nombre_tabla> WHERE <nombre_campo> IS NULL;

IS NOT NULL no nulo

SELECT * FROM <nombre_tabla> WHERE <nombre_campo> IS NOT NULL;

Mucho más por conocer

Existen otras sentencias que es necesario conocer, espera la segunda parte de este nanotutorial.


Acerca del autor

Hugo Gilmar Erazo Full Stack Web Developer

Soy un desarrollador web con más de 10 años de experiencia. Me considero fanático de GNU/Linux, lo cual me ha permitido complementar mis conocimientos en el desarrollo web con la administración de servidores.

Aunque manejo todo lo relacionado al Front-End, me inclino más por el desarrollo Back-End. También desarrollo aplicaciones móviles híbridas. Me gusta lo que hago.

Compartir este artículo