Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Databases
Code

SQL para Principiantes

by
Length:MediumLanguages:

Spanish (Español) translation by Viviana Brito (you can also view the original English article)

La mayoría de las aplicaciones web modernas interactúan con bases de datos, generalmente con un lenguaje llamado SQL. Por suerte para nosotros, este lenguaje es bastante sencillo de aprender.  En este artículo, vamos a comenzar con algunas consultas básicas de SQL y las usaremos para interactuar con una base MySQL. 

Lo que necesitas

SQL(Structured Query Languaje) o Lenguaje de Consulta Estructurado, es un lenguaje diseñado para interactuar con sistemas de administración de bases de datos relacionales (RDBMS), como MySQL, Oracle, Sqlite, etc... Para llevar a cabo las consultas de este artículo, sugiero que tenga MySQL instalado.  También le recomiendo phpMyAdmin como interfaz visual para MySQL. 

Las siguientes aplicaciones facilitan la instalación tanto de MySQL como de phpMyAdmin en tu máquina local. 

Vamos a usar la linea de comando para las consultas WAMP ya tiene incluida una consola MySQL. Para MAMP, puedes necesitar leer este artículo

CREATE DATABASE: Creación de una base de datos

Aquí viene nuestra primera consulta.  Vamos a crear una base de datos con la que trabajaremos. 

Primero, abre tu Consola MySQL y accede.  Para WAMP la contraseña por defecto, está vacía.  Para MAMP, la contraseña por defecto debería ser 'root'.

Luego de acceder, escribe esta consulta y presiona enter. 

Toma nota que el punto y coma (;) es añadido al final de la consulta, igual que al final de las líneas de código. 

También, las palabras especiales 'CREATE DATABASE' son insensibles a las mayúsculas, junto con todas las palabras especiales en SQL.   Pero por el bien de su legilibilidad, vamos a escribirlas con mayúsculas. 

Opcional: Character Set y Collation. 

Si quisieras establecer el conjunto de caracteres por defecto y su definition, puedes escribir la misma consulta de esta forma: 

Aquí está una lista de los caracteres soportados en MySQL. 

SHOW DATABASE: Listado de todas las Bases de Datos. 

Esta consulta es usada para obtener un listado de todas las bases de datos que usted tiene. 

DROP DATABASE: Eliminar una Base de Datos. 

También puede eliminar una base de datos existente con esta consulta. 

Sea cuidadoso con esta consulta, porque no le muestra ninguna advertencia.  Si tiene tablas y e información en la base de datos, todos ellos serán eliminados al instante. 

USE: Seleccionando una Base de Datos. 

Esta, técnicamente no es una consulta.  Es una 'sentencia' y no requiere un punto y coma al final. 

Le dice a MySQL que seleccione una base de datos por defecto con la que trabajar, para la sesión actual.  Ahora estamos listos para crear tablas y hacer otras cosas dentro de esta base de datos.

Qué es una Tabla de una Base de Datos?. 

Puedes pensar en una base de datos como una hoja de cálculo o un archivo csv que contiene información estructurada. 

Igual que en este ejemplo, las tablas tiene nombres de columnas y filas de datos.  Con las consultas SQL podemos crear estas tablas.  También podemos añadir, leer, actualizar y borrar la información. 

CREATE TABLE: Creación de una tabla. 

Con esta consulta podemos crear tablas en la base de datos.  Desafortunadamente, la documentación MySQL no es muy amigable para los nuevos aprendices.  La estructura de este tipo de consulta puede volverse muy compleja, pero comenzaremos con una simple. 

La siguiente consulta creará una tabla con 2 columnas. 

Observe que somos capaces de escribir una consulta en múltiples líneas e incluso usar tabuladores para la sangría. 

La primera línea es fácil.  Acabamos de crear una tabla llamada 'usuarios'. A continuación, entre paréntesis, tenemos un listado de las columnas de la tabla separadas por coma.  Luego de cada nombre de columna, tenemos el tipo de dato, como ser VARCHAR o DATE.

VARCHAR(20) significa que la columna es de tipo cadena y puede tener un máximo de 20 caracteres de longitud.  DATE también es un tipo de dato que se emplea específicamente para almacenar fechas, en este formato: AAAA-MM-DD

PRIMARY KEY

Antes de correr esa consulta, deberíamos incluir también una columna para 'user_id', la cual será la PRIMARY KEY (CLAVE PRIMARIA).  Sin entrar en mucho detalle, puedes pensar en la PRIMARY KEY como una manera de identificar cada fila de datos en una tabla. 

Ahora la consulta se convierte en:

INT hace que sea un tipo entero de 32 bits (es decir, numérico) AUTO_INCREMENT automáticamente general un nuevo número de id cada vez que añadimos una fila de datos. No es necesario, pero es mucho más conveniente. 

Esta columna no tiene que ser un entero, pero es el tipo que más comúnmente se usa.  Tener una columna PRIMARY KEY tampoco es obligatorio, pero es muy recomendable para un buen diseño de la base de datos y rendimiento.

Vamos a ejecutar la consulta:

SHOW TABLES: Lista todas las tablas

Esta consulta le permite obtener un listado de las tablas que actualmente están en la base de datos. 

EXPLAIN: Muestra la estructura de la tabla. 

Para ver la estructura de una tabla existente, puede usar esta consulta. 

Los campos ( también llamados columnas) son listados en los resultados, junto a sus propiedades. 

DROP TABLE: Elimina una tabla

Al igual que DROP DATABASE, esta consulta borra o elimina una tabla y su contenido sin ninguna advertencia. 

ALTER TABLE: Modifica una tabla. 

Esta consulta también puede tener una estructura compleja por la multitud de cambios que puede realizar sobre una tabla.  Vamos a ver algunos ejemplos sencillos. 

(Asegúrese de re-crear la tabla que acabamos de eliminar o las siguientes consultas, obviamente no funcionarán).

Añada una Columna

Gracias a la legibilidad de SQL, no creo que esa consulta necesite explicación. 

Remueva una Columna.

Eso también fue bastante simple.  Pero úselo con cuidado ya que eliminará permanentemente la información sin ninguna advertencia. 

Vuelva a añadir la columna email porque después vamos a usarla. 

Modificar una columna

A veces puede desear cambiar las propiedades de una columna, para no tener que eliminarla y recrearla. 

Eso renombró la columna username a 'user_name' y modificó el tipo de VARCHAR(20) a VARCHAR(30). Un cambio como este, no debería alterar nada de la información existente en la tabla. 

INSERT: Añadir Datos a una Tabla.

Vamos a añadir algunos datos en la tabla, haciendo uso de esta consulta. 

Como puede ver, VALUES() contiene la lista de los valores de los campos, separados por comas.  Los valores string o cadena, están encerrados entre comillas simples.  Y los valores necesitan estar en el orden de las columnas que fueron definidos cuando creamos la tabla. 

Tome nota que el primer valor es NULL para el campo PRIMARY KEY al que llamamos 'user_id'. Hacemos esto de manera que un id es automáticamente generado, porque la columna esta configurada en AUTO_INCREMENT.  Cuando ingresamos una fila de datos por primera vez, el id será 1.  La fila que sea insertada a continuación, sera 2 y así sucesivamente.

Sintaxis Alternativa.

Aquí tenemos otra sintaxis para insertar filas. 

Esta vez, vamos a usar el comando SET en lugar de VALUES y no es seguido por paréntesis.  Hay unas cuantas cosas para tener en cuenta en esta parte: 

  • Una columna puede ser omitida. Por ejemplo, no hemos asignado un valor a user_id que se ajustará por defecto a la funcionalidad AUTO_INCREMENT. Si omite una columna VARCHAR, por defecto tomará una cadena vacía (a no ser que un valor diferente haya sido especificado durante la creación de la tabla).
  • Cada columna tiene que ser referenciada por su nombre.  Debido a esto, pueden estar en cualquier orden, a diferencia de la sintaxis anterior. 

Sintaxis Alternativa 2.

Aquí hay otra sintaxis. 

De nuevo, ya que cada columna es referenciada por su nombre, pueden estar en cualquier orden. 

LAST_INSERT_ID()

Puede usar esta consulta para obtener el id AUTO_INCREMENT de la última fila insertada de la sesión actual. 

NOW()

Creo que es un buen momento para demostrar cómo puede utilizar una función MySQL dentro de sus consultas. 

La función NOW() devuelve la fecha actual.  Así que puede aplicarla para establecer una columna DATE para el día actual mientras se inserta una nueva fila. 

Tenga en cuenta que recibimos una advertencia de MySQL, pero no es algo importante.  La razón es porque NOW() en realidad también devuelve información sobre el tiempo. 

Pero la columna create_date que creamos, sólo contiene la fecha y no el tiempo, por lo tanto la información devuelta estaba truncada.  En su lugar, podemos usar la función CURDATE() la cual devuelve sólo la fecha, pero la información almacenada al final, de cualquier forma, sería la misma.   

SELECT: Leer la Información de una Tabla. 

Obviamente, la información que añadimos sería inútil a no ser que podamos leerla.  Es aquí en donde la consulta SELECT entra en juego.

Aquí tenemos la consulta SELECT más simple que pueda presentarse para leer datos de una tabla. 

En este caso, el asterisco (*) significa que hemos pedido que nos devuelva todas las columnas de la tabla. Si sólo quiere columnas específicas, la consulta debería ser así:

Cláusula WHERE

Más a menudo que no, sólo estamos interesados sólo en algunas de las filas y no todas.  Por ejemplo, digamos que queremos la dirección email del usuario 'nettuts'

Piense en ello como una sentencia IF WHERE le permite poner condiciones en la consulta para los resultados que está buscando. 

Tenga en cuenta que para la igualdad de la condición, sólo un signo igual es empleado(=), en lugar del doble (==) el cual debe estar acostumbrado a usar para la programación.

También puede usar otras condiciones comparativas:

AND y OR pueden usarse para unir condiciones. 

Véase que los valores numéricos no tienen que estar dentro de comillas. 

IN()

Esto es útil para hacer coincidir múltiples valores. 

LIKE

Esto le permite hacer búsquedas comodines. 

El signo de porcentaje (%) es empleado como comodín.

Cláusula ORDER BY

Si desea que los resultados sean devueltos en un orden específico, emplee esta cláusula. 

El orden por defecto es ASC (es decir, ascendente). Puede agregar DESC para revertir el orden. 

LIMIT ... OFFSET ...

Puede limitar el número de resultados devueltos. 

LIMIT 2 sólo obtiene los dos primeros resultados.  LIMIT 1 OFFSET 2, obtiene 1 resultado, luego de los 2 primeros resultados.  LIMIT 2, 1 significa la misma cosa, pero tenga en cuenta que el primer número es el offset y el segundo es el límite. 

UPDATE: Actualización de Datos de una Tabla. 

Esta consulta se aplica para la actualización de información en una tabla.

La mayor parte del tiempo es empleada con una sentencia WHERE, porque usted va a querer que sólo filas específicas sean actualizadas.  Si no se incluye una sentencia WHERE, todas las filas serán actualizadas con los mismos cambios. 

También puede usar una sentencia LIMIT para limitar el número de filas que serán actualizadas. 

DELETE: Eliminar Información de una Tabla. 

Al igual que UPDATE, esta consulta es también empleada usualmente con una sentencia WHERE. 

TRUNCATE TABLE

Para eliminar el contenido completo de una tabla, puede hacer esto:

Pero normalmente, es más eficiente en su lugar usar TRUNCATE.

TRUNCATE también restablece los números AUTO_INCREMENT por lo que una nueva fila tendrá el id 1.  Pero esto no sucede con una consulta DELETE y el contador continúa aumentando. 

Valores String Escaping y Palabras Especiales

Valores String

Determinados caracteres necesitan ser escapados, de otro modo usted puede tener problemas.

La barra invertida (\) es usada para escapar.

Esto también es muy importante por razones de seguridad. Cualquier entrada del usuario en la base de datos, necesita ser propiamente escapada.  En PHP, usted usa la función mysql_real_escape_string()  o las sentencias preparadas ya que hacen escapadas automáticamente. 

Palabras Especiales

Debido a que MySQL tiene muchas palabras especiales como SELECT o UPDATE, usted puede prevenir colisiones al poner comillas alrededor de los nombres de su tabla y columnas.  Pero estas no son las comillas comunes; necesita usar el caracter de acento invertido (`).

Vamos a decir que usted desea añadir por alguna razón, una columna llamada 'delete'. 

Conclusión

Gracias por leer este artículo.  Espero haber podido demostrarles que a pesar de que SQL tiene una curva de aprendizaje sencilla, es muy poderoso.  

Por favor deje sus comentarios y preguntas, y tenga un buen día!

  • Síganos en Twitter o suscríbase a Nettuts+ RSS Feed para los mejores tutoriales de desarrollo web de la web.  Listo

Listo para llevar sus habilidades al próximo nivel y comenzar a sacar provecho de sus scripts y componentes?  Eche un vistazo a nuestra hermana en el mercado, CodeCanyon

CodeCanyon

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.