9.- Insertar, cambiar y borrar datos de una tabla MySQL

INTRODUCCIÓN

En el capítulo anterior ya vimos cómo crear nuestra base de datos y creamos una tabla. Ahora vamos a ver cómo introducir datos en esa tabla, como borrarlos, como cambiarlos si nos hemos equivocado y pos supuesto cómo conseguir que mysql nos muestre los datos.

CÓMO INSERTAR DATOS EN UNA TABLA

Para meter datos en una tabla utilizamos la orden INSERT

INSERT INTO nombre_de_la_tabla (
Columna1, columna 2, …. )
VALUES (
Valor1, valor2, ….);

En nuestro caso sería así:

INSERT INTO refranero  ( refran , fecha )
VALUES (
' Más vale pájaro en mano que ciento volando', '2003-06-01'
);

Nota: Recordemos que mysql está en inglés, luego el formato en que tenemos que meter la fecha es en inglés: AÑO-MES-DIA.

Los valores que vamos a introducir, van en comillas simples (‘), en el caso del ID, cómo no queremos introducir ningún valor (preferimos que lo asigne mysql), dejamos el valor vacío.

Practicar metiendo los siguientes refranes:

No por mucho madrugar amanece más temprano, 2003-06-03
Quien a buen árbol se arrima buena sombra le cobija, 2003-08-15

CÓMO VER LOS DATOS QUE TENEMOS EN UNA TABLA

Para extraer los datos y que nos los presente en pantalla, utilizamos la orden SELECT. SELECT, sirve para hacer casi cualquier cosa, así que os cansaréis de utilizarla

SELECT * FROM refranero;
En cristiano: Selecciona todo de la tabla refranero; * significa todo.
Image

Las selects pueden llegar a complicarse mucho, pero de momento, para nuestros fines, ha sido fácil ¿no?

Si el texto de nuestro refrán es muy largo, se nos puede descabalar un poco la tabla y no quedarnos las cosas tan claras.

Pero ¿y si queremos seleccionar sólo un campo?

SELECT nombre_del_campo FROM nombre_de_la_tabla;

Para nuestra tabla sería;

SELECT ID FROM refranero;

+——-+
| ID |
+——-+
| 1 |
| 2 |
| 3 |
+——-+

ó SELECT fecha FROM refranero;

+——-+—————————+
| ID | fecha |
+——-+—————————+
| 1 | 2003-06-01 |
| 2 | 2003-06-01 |
| 3 | 2003-06-01 |
+——-+—————————+

FUNCIONES BÁSICAS

Cómo seleccionar parte de un campo.

Supongamos que queremos seleccionar sólo una parte de cada refran, para que no nos ocupe mucho en pantalla, pero al menos lo justo para reconocer de qué refrán se trata.

Utilizaremos la función LEFT que nos permite específicar el número de caracteres máximo que queremos mostrar. Por ejemplo queremos ver los 15 primeros caracteres del campo “refrán” (los espacios también son un carácter):

SELECT id, LEFT(refran,15), fecha FROM refranero;
Image

También podríamos seleccionar los últimos 15 con

SELECT ID RIGHT(refran,15), fecha FROM refranero;

¿Cómo saber cuántos refranes tenemos?

Contando los registros con COUNT

SELECT COUNT(*) FROM refranero;

+——————-+
| COUNT(*) |
+——————-+
| 3 |
+——————-+

¿Cómo elegir sólo aquellos registros que cumplan una determinada condición?

Utilizando la cláusula WHERE

Por ejemplo, queremos ver todos aquellos refranes que hayan sido publicados después del 1 junio:

SELECT * FROM refranero WHERE fecha > “2003-06-01”;
Image

Aquí la cosa está fácil porque sólo tenemos 2 registros que cumplen la condición, pero ¿y si tuviéramos cientos, y necesitáramos saber cuántos tenemos? Pues los contamos Wink, utilizando COUNT como vimos antes, pero combinándolo con la condición

SELECT COUNT(*) FROM refranero WHERE fecha > “2003-06-01”;

Image

¿Cómo elegir sólo aquellos registros que contengan determinado texto?

Para esto tenemos “LIKE”, supongamos que queremos encontrar todos aquellos refranes que contenga la palabra madrugar. Con Like, le decimos a Mysql que queremos que nos devuelva todos los registros que cumplan un patrón que le especificamos, cómo puede ser contener una determinada palabra, por ejemplo.

SELECT refran FROM refranero WHERE refran LIKE "%madrugar%";

Image

Los caracteres % son comodines, rodeando madrugar con este símbolo, le decimos a mysql que nos dé todos los registros que contengan la palabra madrugar independientemente de qué caracteres haya antes y después de la palabra.

Si quisiéramos todos los registros que empezaran por la palabra madrugar podríamos hacer esta query:

SELECT refran FROM refranero WHERE refran LIKE "madrugar%";

También podemos combinar las distintas formas que hemos visto para restringir aún más los resultados. Por ejemplo podemos pedirle a mysql que nos dé todos los registros que contengan la palabra madrugar y que hayan sido publicados entre el 1 de julio y el 15 de agosto.

mysql> SELECT refran, fecha FROM refranero
-> WHERE refran LIKE "%madrugar%" AND
-> fecha >= "2003-07-01" AND
-> fecha < "2003-08-15";

Image

CÓMO MODIFICAR LOS DATOS QUE TENEMOS EN UNA TABLA

Ahora que ya hemos introducido nuestros refranes en la tabla, echamos un vistazo, y nos damos cuenta de que hemos cometido algún error, por ejemplo en el primer refrán he metido mal la fecha y aparece “0000-00-00” y además he escrito parajo en vez de pájaro.

Para arreglar este tipo de entuertos tenemos la orden UPDATE, que nos permite hacer cambios en los datos que ya tenemos introducido.

La sintaxis de esta orden es:

Mysql> UPDATE nombre_de_table SET
-> nombre_columna = nuevo_valor,
-> WHERE….

Por ejemplo en nuestro caso:

Mysql> UPDATE refranero SET fecha="2003-06-01" WHERE ID=1;

+———+—————————————————————-+—————–+
| ID | refran | fecha |
+———+—————————————————————-+——————+
| 1 | Más vale párajo en mano que ciento volando | 2003-06-01 |
+———+—————————————————————–+—————–+
1 row in set (0.00 sec)

Y ahora queremos cambiar párajo por pájaro, y para ello utilizamos el LIKE como hacíamos antes para ver los registros, así que le decimos a mysql que debe cambiar la columna refrán

Mysql> UPDATE refranero SET refran="Más vale pájaro en mano que ciento volando" WHERE refran LIKE "%párajo%";

CÓMO BORRAR REGISTROS DE UNA TABLA

Ahora que ya sabemos añadir registros y cambiarlos nos toca aprender a borarlos, lo que, como dice Kevin Yank, es peligrosamente fácil.

La sintaxis:

DELETE FROM nombre_de_tabla WHERE condiciones

Por ejemplo

DELETE FROM refranero where id =1;

Ó si queremos borrar todos los refranes que contengan la palabra “amor”?

DELETE FROM refranero WHERE LIKE "%amor%";

Y para borrar todos los refranes de nuestra tabla?

Todavía más fácil

DELETE FROM refranero;

Un consejo tonto, cuando quieras borrar archivos, prueba primero con un select si el select, funciona correctamente y te selecciona exactamente los archivos que querías borrar; entonces cambias SELECT por DELETE y listo.

Y ahora que nos hemos cargado todos los registros, nos cargamos también la tabla y la base de datos

DROP TABLE refranero;
DROP DATABASE refranes;

¿Qué porqué hago esta locura? Para obligaros a volver a empezar y que practiquéis, porque en los siguientes capítulos la váis a necesitar.

Volver al índice

2 responses to “9.- Insertar, cambiar y borrar datos de una tabla MySQL

  1. Gracias por el tutorial, me está ayudando un montón pero tengo una duda:
    Si quisieramos corregir una sola palabra de un texto en una columna, por ejemplo quiero sustituir pajaro por pájaro donde pajaro aparece en una frase completa dentro de la columna created_by_alias, ¿Cómo puedo hacer para que en la frase “el pajaro vuelta alto” me sustituya sólo “pajaro” por “pájaro” y deje el resto de la frase intacta?

    Si utilizo UPDATE jos_content SET created_by_alias=”%pájaro%” WHERE created_by_alias LIKE “pajaro” me machaca todo el contenido actualizandolo sólo con pájaro… ;-(

    Mil Gracias!

  2. hola Jorge,

    me temo que hace 10 años ya que escribí este tutorial y hace por lo menos 6 que no toco una línea de código, el php desde entonces se ha ido actualizando…
    pásate por aquí: http://www.forosdelweb.com/f18/ que son unos cracks

    Salu2

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s