PHP con MySQL: Introducción a SQL

SQL (Structured query language) es el lenguaje para interactuar con las bases de datos, el cual nos permitirá insertar registros, actualizar registros, buscar registros así como manipular tablas.

El lenguaje SQL es semejante en todos los servidores de base de datos salvo pequeñas diferencias, en nuestro caso veremos una guía de SQL para MySQL. Los ejemplos los puedes probar directamente en la línea de comandos de MySQL o en algún cliente como phpMyAdmin o Navicat.

Preparando los datos

Para nuestro ejemplo imaginemos que necesitamos almacenar los datos de una empresa. Para cada empresa necesitamos guardar: nombre, dirección, teléfono y una imagen con su logo. Entonces necesitaremos crear una tabla a la que llamaremos ‘empresa‘ la cual tendrá 5 campos:

  • id: será el identificador (interno) de la empresa el cual será un número entero.
  • nombre: es el campo que aceptará una cadena de texto con el nombre de la empresa.
  • direccion: campo que guardará una cadena de texto con la dirección de la empresa.
  • telefono: es un campo que aceptará solo números que representan el teléfono de la empresa.
  • imagen: es el campo donde guardaremos el nombre del archivo del logo de la empresa.

Crear tablas con SQL

Para definir la estructura de la tabla utilizaremos CREATE TABLE, donde se asigna el nombre de la tabla así como cada uno de los campos indicando que tipos de datos vamos a almacenar. Entre los principales tipos de datos disponibles tenemos:

  • int: que permite guardar números enteros.
  • float: permite almacenar datos decimales.
  • date: para guardar fechas, el formato de la fecha es aaaa-mm-dd.
  • datetime: es para guardar fecha y hora, el formato es aaaa-mm-dd hh:mm:ss.
  • time: para almacenar la hora, el formato de la hora es hh:mm:ss.
  • char(n): almacena una cadena de texto de longitud fija n (De 0 a 255 caracteres).
  • varchar(n): para cadenas de tamaño variable de hasta n caracteres (De 0 a 255).
  • text es un campo para almacenar textos de hasta 65535 caracteres.

Para nuestro ejemplo crearíamos la tabla con 5 campos, donde el primero de ellos será el identificador de la empresa que será un entero que ser irá auto-incrementando.

[SQL]
CREATE TABLE empresa (
id int(11) NOT NULL AUTO_INCREMENT,
nombre varchar(180),
direccion varchar(180),
telefono int(8),
imagen varchar(50)
)
[/SQL]

Notese que por cada campo definimos el tipo de dato que puede almacenar. Los campos nombre y dirección aceptan textos de hasta 180 caracteres mientras que el campo imagen solo acepta 50 caracteres como máximo.

Insertar datos con SQL

Para insertar datos en las tablas haremos uso de la sentencia INSERT INTO, para ello podemos indicar los campos con sus respectivos valores, esto respetando los tipos de datos aceptados.

Para nuestra tabla recién creada, insertaremos registros de la siguiente forma:

[SQL]
INSERT INTO empresa (nombre, direccion, telefono, imagen)
VALUES (‘Apple’, ‘1 Infinite Loop, Cupertino’, 89961010, ‘apple.png’)
[/SQL]

Como se aprecia no es necesario incluir el dato para el id por el del tipo AUTO_INCREMENT lo cual significa que se creará automáticamente y con un valor incrementado en 1 al anterior registro.

Si estamos insertando todos los valores de una tabla, podríamos obviar los nombres de los campos si mantenemos el mismo orden en el que fueron creados los campos.

[SQL]
INSERT INTO empresa
VALUES (‘Apple’, ‘1 Infinite Loop, Cupertino’, 89961010, ‘apple.png’)
[/SQL]

También se pueden insertar solo algunos campos de la tabla y no necesariamente en el orden en que fueron creados los campos en donde si debemos indicar los nombres de los campos, por ejemplo:

[SQL]
INSERT INTO empresa (nombre, logo)
VALUES (‘Apple’, ‘apple.png’)
[/SQL]

Los campos para los que no asignamos valores tendrán valores nulos o el valor por defecto que hayamos definido en la creación de la tabla.

Editar datos con SQL

Para actualizar datos de los registros de una tabla se puede utilizar UPDATE, donde indicamos la tabla donde se harán los cambios, los campos a reemplazar con sus respectivos valores asi como la condición que se debe cumplir para realizar el cambio de los datos.

Para hacer uso de estas condiciones, MySQL provee de funciones de comparación como:

  • = para comparar si dos valores son iguales.
  • <> para comparar si dos valores son diferentes.
  • != para comparar si dos valores son diferentes. Igual al operador <>.
  • <= compara si un dato es menor o igual a otro.
  • < verifica si el datos es menor a otro.
  • => para compara si el datos es mayor o igual a otro.
  • > prueba si el datos es mayor a otro.
  • IS NULL devuelve verdadero si el campo es nulo.
  • IS NOT NULL verdadero si el campo no es nulo.

Adicionalmente se pueden utilizar las funciones booleanas como NOT, AND, OR y XOR.

Continuando con nuestro ejemplo, suponiendo que tenemos registrada una empresa con el identificador 57, podríamos actualizar los datos de la siguiente forma:

[SQL]
UPDATE empresa
SET nombre = ‘Google’, direccion = ‘1600 Amphitheatre Parkway, Mountain View’
WHERE id = 57
[/SQL]

También podríamos asignar una imagen por defecto a todas las empresas que no tengan logo, para ello haríamos:

[SQL]
UPDATE empresa
SET imagen = ‘logo-default.png’
WHERE imagen IS NULL
[/SQL]

Eliminar datos con SQL

Para eliminar datos utilizaremos DELETE FROM, en esta sentencia indicamos sobre que tabla vamos a realizar la eliminación además de la condición que se debe cumplir para realizar la eliminación.

En nuestro ejemplo eliminaremos todas las empresas que tengan el campo del nombre vacio o nulo.

[SQL]
DELETE FROM empresa
WHERE nombre IS NULL OR nombre = ”
[/SQL]

Consultar datos con SQL

Para consultar datos (extraer datos) de una tabla se utiliza SELECT indicando los campos que deseamos extraer y el nombre de la tabla que utilizaremos.

Para nuestra tabla de ejemplo si deseamos consultar todas nombres y direcciones de las empresas:

[SQL]SELECT nombre, direccion FROM empresa[/SQL]

Se pueden utilizar alias para los campos extraídos, por ejemplo:

[SQL]SELECT nombre as ‘Empresa’, direccion as ‘Dirección’ FROM empresa [/SQL]

Si deseamos extraer todos los campos podemos utilizar el caracter *.

[SQL]SELECT * FROM empresa[/SQL]

Filtrando los resultados

Podemos aplicar condiciones a nuestras consultas con la directiva WHERE.

Para extraer la empresa con identificador 57 la consulta sería:

[SQL]SELECT * FROM empresa WHERE id = 57[/SQL]

Si deseamos mostrar todas las empresas que tengan registradas su dirección:

[SQL]SELECT * FROM empresa WHERE direccion IS NOT NULL[/SQL]

Tambiém podriamos consultar todas las empresas cuyo nombre empiece con la letra A.

[SQL]SELECT * FROM empresa WHERE nombre like ‘A%'[/SQL]

Ordenando los resultados

Para el ordenamiento de los resultados se utiliza ORDER BY, este define por que campo se hará el ordenamiento así como si será en forma ascendente (ASC) o descendente (ASC).

Si utilizamos nuestra tabla de ejemplo podríamos listar todas las empresas en orden alfabetico:

[SQL]SELECT * FROM empresa ORDER BY nombre ASC[/SQL]

Contando los resultados

Es posible contar los registros utilizando COUNT, esto unido al filtro de datos es útil para hacer conteos de datos.

Si deseamos conocer cuantas empresa registradas tenemos:

[SQL]SELECT COUNT(*) FROM empresa[/SQL]

Podríamos conocer cuantas empresas tienen registradas direcciones vacías:

[SQL]SELECT COUNT(*) FROM empresa WHERE direccion = ”[/SQL]

Limitando los resultados

MySQL permite limitar la cantidad de resultados utilizando la palabra LIMIT, esta sentencia es muy flexible pues permite definir a partir de que registro y la cantidad de datos devueltos.

Si deseamos visualir las 5 ultimas empresas registradas en nuestra tabla tendríamos:

[SQL]SELECT * FROM empresa ORDER BY id DESC LIMIT 5[/SQL]

Si estamos mostrando los resultados ordenados alfabeticamente en grupos de 10, tendríamos:

[SQL]
/* Para mostrar los primero 10 resultados */
SELECT * FROM empresa ORDER BY nombre ASC LIMIT LIMIT 0, 10
/* Para mostrar los siguientes 10 resultados */
SELECT * FROM empresa ORDER BY nombre ASC LIMIT LIMIT 10, 10
[/SQL]

Ahora ya podemos crear, editar, eliminar y consultar los datos utilizando condiciones con la posibilidad de filtrar, ordenar y limitar los resultados.

Mas Información

Obviamente este artículo es solo un resumen del lenguaje SQL, donde he seleccionado las sentencias mas utilizadas en la manipulación de datos. Para una guía completa y detallada pueden visitar la documentación oficial de MySQL o en algún libro que explique con mayor detalle estos temas.

Comentarios Total 8 comentarios


Pedro
Publicado: 05/12/2010 3:19 pm

Buena información y muy completa.
Gracias!

javier
Publicado: 05/12/2010 4:32 pm

muy bueno tu tutorial

saludos!!!

javier
Publicado: 05/12/2010 5:00 pm

ola que tal, me gustaria que hicieran un un tutorial de como hacer un protector de links tipo el de esta pagina

http://www.capcom.com/bumper.php?tgtwww=http://www.google.com

saludos!!!


[…] una base de datos de ejemplo el cual pueden crear con el siguiente script SQL y finalmente conocimientos básicos de SQL.Conceptos BásicosPHP provee funciones nativas que permiten interactuar con MySQL, para el proceso […]

zeomara
Publicado: 22/02/2011 1:57 pm

Gracias
muy bien explicado


[…] en nuestras tablas. Para ello haremos uso de la sentencia UPDATE explicada anteriormente en PHP con MySQL: Introducción a SQL.El proceso será: primero mostrar un formulario con los datos que tenemos guardados, luego el […]


[…] de manera sencilla. Si es que no has leído los artículos anteriores te recomiendo revisar:PHP con MySQL: Introducción a SQLPHP con MySQL: Crear una conexión a MySQLPHP con MySQL: Insertar datos en MySQLPHP con MySQL: […]


[…] PHP con MySQL: Introducción a SQL […]

 

Comentar

En este blog los comentarios están moderados, serán mostrados cuando el administrador los apruebe. Por favor, evita comentarios ofensivos u obscenos por que no serán aprobados.
Si deseas publicar código fuente debes hacerlo entre las etiquedas <code> y </code>, además debes reemplazar los carácteres < por &lt; y > por &gt;.

(Requerido)

(Requerido, no será publicado)

(Requerido)

(Tags aceptados: <a> <em> <strong> <code> <ul> <li>)