Tutorial: Base de Datos, PHP y SQL


A la hora de hacer grandes proyectos en PHP necesitaremos almacenar y tener clasificados muchos datos en algún lugar. Las Cookies solo nos sirven para almacenar datos temporalmente, y solo es visible para el visitante. Guardar la información en archivos de texto por otro lado resultaría imposible de leer en caso de que tuviéramos muchos datos, sin contar que la seguridad de estos datos seria muy mala. Para facilitar el almacenamiento de información existen las Bases de Datos.

Fuente: http://jestudio.cl/blog/php-sql-y-bases-de-datos/


¿Que son las Bases de Datos?
Son espacios donde se pueden guardar en formato de tablas grandes cantidades de datos. Las Bases de Datos se ordenan de la siguiente Manera:
Bases De Datis
Bases De Datos
Cada Base de Datos cuenta con una serie de tablas y cada tabla tiene diferentes campos (fields) y a su vez estos campo tiene propiedades y valores.  Le llamaremosRegistro a este conjunto de campos que conforman una tabla.
De esta manera si visualizamos una Tabla de una Base de Datos la veríamos así.



Campo1Campo2Campo3
1 RegistroValorValorValor
2 RegistroValorValorValor





De esta manera cada vez que insertemos datos dentro de una tabla se irá creando una nueva columna con los datos. Por ejemplo si tuviésemos una tabla que guardara el nombre, el apellido y la edad de distintas personas la visualizaríamos así luego de que 3 personas hallan ingresado sus datos:



NombreApellidoEdad
JavierLetelier17
JaimeRuiz52
PedroTroemel26

Tipos de Bases de datos:

Existen diferentes tipos de Bases de datos, entre estos podemos destacar:
  • Oracle
  • Mysql
  • MS SQL Server
  • Acces
Cada una con sus ventajas y desventajas.

Diseñar Bases de Datos:

Al momento de idear como estará ordenada nuestra base de datos, cuantas tablas, cuantos campos o para que usaremos tablas y no campos etc… deberemos intentar hacerlo de la mejor manera y es aquí donde más tiempo le debemos dar antes de comenzar cualquier proyecto. La Base de Datos debe ser ordenada y estar pensada para poder acceder a los datos de la manera más cómoda posible. Pensando bien una base de datos desde un principio nos ahorraremos problemas luego.






En fin una Base de Datos nos puede ser de gran utilidad al momento de hacer paginas web mucho más dinámicas y ahorrarnos un montón de trabajo.

SQL

Si bien ahora sabemos que es una base de Datos debemos aprender como ingresar datos a esta y manejarlos. Para la interacción con Bases de Datos usamos el Lenguaje SQL (Lenguaje de Consultas Estructurado o Structured Query Lenguage). Este lenguaje es Estándar por ello es soportado por casi todos los tipos de bases de datos.
SQL como dice su nombre funciona a través de Consultas o Querys que no son más que ordenes o preguntas que se le dan a una Base de Datos para que agregue datos o nos los dé.

Funciones Básicas de SQL:







Crear Base de datos:
CREATE DATABASE nombrebase;
Ocuparemos mayúsculas para denotar cuales son las palabras claves de el lenguaje, y minúsculas para las variables y datos ingresados.  Pero realmente no importa por que SQL no distingue entre mayúsculas y minúsculas, pero si es una buena practica para facilitar la lectura.






Borrar Base de Datos:
Una vez creada una base de datos podremos borrarla con todas sus tablas e información.
DROP DATABASE nombrebase;
Usar Base de Datos:
Cuando queramos trabajar con alguna base primero deberemos especificar en cual, para ello usamos:
USE nombrebase;
de ahí en adelante todo lo que escribamos será aplicado sobre la Base de datos“nombrebase”.






Crear Tablas:
Antes de leer el siguiente código, te aviso que no debes asustarte a pesar de que se ve algo más complicado es bastante simple.

CREATE TABLE nombretabla ( campo1 int(6) auto_increment, campo2 varchar(50)  NOT NULL, campo3 varchar(4) NULL, PRIMARY KEY (campo1) );
Esto creará una Tabla dentro de de la base anteriormente especificada con USE, esta tabla tendrá los campos:
  • campo1, que soportara datos enteros (int) de 6 caracteres y se auto-incrementará lo que quiere decir que es un campo que se completa solo con un valor que aumenta a medida que más datos se ingresen.
  • campo2 que soporta texto de máximo 50 caracteres y no puede estar vacía (no puede ser nula)
  • campo3 que puede ser nulo, y que soporta una cadena de texto de máximo 4 caracteres.
Además se especifica que el campo1 sera la clave primaria, lo que quiere decir que es campo que encabeza esa tabla.






Insertar datos en una tabla (Crear un Registro):
Al insertar datos en una tabla nos crea un nuevo registro, que seria como una nueva fila en la tabla. Siendo cada columna un campo. Como en el ejemplo del principio donde 1º, Javier, Letelier 17 era un Registro y 2º,  Jaime Ruiz, 52 era otro.

INSERT INTO nombretabla (campo1, campo2, campo3) VALUES ('valor_campo1','valor_campo2','valor_campo3');

Como vemos los datos se agregan primero especificando la tabla y los campos a rellenar en orden. Luego los valores de cada campo en el mismo orden. En caso de que esta tabla fuese la misma del ejemplo anterior, no sería necesario rellenar el campo1 ya que es de auto-incremento y se podría omitir al igual que el campo3 que puede ser nulo.






Borrar una tabla:
Casi igual que para borrar Bases de datos.
DROP TABLE nombretable;






Consultar:
Luego de que tenemos todos nuestros datos guardados en una tabla lo más seguro es que luego necesito consultarle a la tabla cuales son los datos que esta tiene para esto tenemos diferentes formas.






Seleccionar:
SELECT campo1, campo2 FROM nombretabla;
Esto nos devolverá todos los datos ingresados en los campos campo1 y campo2 de la tabla nombretabla
Si quisiéramos que nos mostrase TODOS los campos podemos usar el comodín *
SELECT * FROM nombretabla;
lo que nos devolvería todos los datos ingresados en todos los campos.
así mismo podemos filtrar las búsquedas para que nos devuelven campos que cumplan ciertas condiciones.
SELECT * FROM nombretabla WHERE campo1="Condición";
Esta consulta nos dará como resultado todos los datos de cualquier campo de la tabla nombretabla que cumplan la condición de que su campo1 tenga el valorCondición
También se puede usar la palabra LIKE para encontrar resultados que no sean idénticos a lo pedido, si no que solo lo contengan.
SELECT *  FROM nombretabla WHERE campo1 LIKE  "%plo%";
como vemos usamos el signo %, que sirve para indicar un “comodín” lo que quiere decir que si ponemos un % antes de la condición se encontraran todos los que terminen en la condición. Si lo tiene al final todas las que comiencen, y si la tiene a los dos lados, no importa donde se encuentre.
Por ejemplo:
%plo% nos devolvería cualquier campo1 que contenga cosas como palabra “Plomero, Ejemplo, aplomar” etc..
si fuera %plo, solo nos encontraria “Ejemplo, Templo, Contemplo”, si fuese plo% nos encontraría solo los que tuviesen “Plomero, Plomo” y por ultimo si fuese a%to% nos encontraria palabras como “Anatomico, Atomico, Atontado, Amatorio, Ato”






Borrar datos de una tabla (Borrar un Registro)
Para borrar un registro ocupamos DELETE, como vemos debemos especificar que borrar para ello ocupamos una condición.Aquí es cuando los campo “Auto-increment” comienzan a ser muy útiles, ya que siempre estos campos tendrán un valor único (Ningún registro más que el mismo tendrán ese numero que se da por el orden en que fueron ingresados) Así podremos borrar un registro especifico.
DELETE FROM nombretabla WHERE campo1="Condición";
Y para borrar uno especifico:
DELETE FROM nombretabla WHERE campoautoincrement=2;
De esta manera nos borrara el registro numero 2.






Actualización y edición de datos (Edición de un registro):
Cuando necesitemos actualizar los datos de algun registro, por ejemplo por que alguien cambio su numero de telefono, o desea cambiar su avatar necesitaremos cambiar ese registro.
UPDATE nombretabla SET campo1 = "Nuevo valor", campo2 = "Nuevo valor2" WHERE campo1="Condición";
Al igual que al borrar datos, nos será muy util usar campos de auto incremento para reconocer registros únicos. Por ejemplo ocupando nuevamente la tabla del ejemplo de las Bases de Datos si quisiéramos cambiar la edad de Pedro podríamos usar:

UPDATE nombretabla SET edad="27" WHERE nombre="Pedro";

y para evitar que podamos cambiar tal vez la edad de otra persona también llamada Pedro seria mejor usar:
UPDATE nombretabla SET edad="27" WHERE id="3";

PHP y SQL

Por fin! ahora podremos desde PHP modificar, crear, actualizar, etc… nuestras bases de datos.
A pesar de que PHP soporta conexión con la gran mayoría de los tipos de bases de datos nosotros hablaremos solo de la conexión con las de tipo MySQL, pero no te sientas tan excluido si no es la que usas tu. Ya que la manera de usarlas es prácticamente igual cambiando tal vez una que otra palabra, busca en Google cuales serian los reemplazos de las funciones.  Por ejemplo una función para conectarse a SyBase es sybase_connect() mientras que la de Mysql esmysql_connect(); como vez no es muy grande la diferencia.






Conectarnos al Servidor
Antes que nada debemos conectarnos al servidor para poder realizar cualquier modificación de nuestra base de datos.
mysql_connect("Servidor","usuario","contraseña");
pero es importante que deberemos dejar la conexión dentro de una variable para poder despues usarla con mayor facilidad.

$conexion=mysql_connect("localhost","myuser","mypass");








Desconectandonos del Servidor
Una vez que hayamos hecho todo lo que necesitábamos deberemos desconectarnos del Servidor, para ello usaremos la funciona mysql_close()dándole como valor nuestra conexión.

$conexion=mysql_connect("localhost","myuser","mypass");
mysql_close($conexion);








Seleccionar Base de Datos.
Es común que se tengan más de una base de datos, por ello deberemos luego seleccionar cual es la base de datos con la cual trabajaremos. Usaremos la funciónmysql_select_db() y se le dan como valores el nombre de la base de datos y la conexión a la base de datos.

$conexion=mysql_connect("localhost","myuser","mypass");
mysql_select_db("nombreBaseDeDatos",$conexion);
mysql_close($conexion);








Realizar una consulta
Ahora lo más importante, como realizar cualquier clase de consulta a través de PHP.
Para ello usaremos la función mysql_query() y le daremos como valores la consulta misma en SQL y la conexión.
Siempre que esperemos resultados de nuestra consulta deberemos almacenarla en una variable, para después poder acceder a los resultados.

$conexion=mysql_connect("localhost","myuser","mypass");
mysql_select_db("nombreBaseDeDatos",$conexion);
$resultados = mysql_query("SELECT * FROM nombretabla WHERE campo1='condición';",$conexion);
mysql_close($conexion);







Obtener datos de la consulta:
Muchas veces nuestras consultas nos darán respuestas, ya sean tablas completas o numero de resultados para ello contamos con las siguientes funciones.
mysql_num_rows($resultados); Nos dará el numero de registros obtenidos por nuestra consulta.
mysql_result($resultado, registrocampo); Nos dará el valor que tenga el campo de un registro. Su uso es colocando números por ejemplo si ocupamosmysql_result($resultado, 2,4) nos dara el valor del campo que esta en la posición numero 5 (4+1) de el registro encontrado numero 3 (2+1) .




Bueno existen muchas otras funciones que nos permitirán ver los datos en forma de Arrays, saber los nombres de los campos, tipos de datos, crear o borrar Bases etc… Les dejare aquí una pequeña lista sin especificar mucho como se usan, pero de seguro realizando una búsqueda en Google de dicha función encontraran la manera correcta de usarla.
  • mysql_fetch_array($resultado) = Crea un array con los resultados.
  • mysql_field_name($resultadocampo) = Nos da el nombre de un campo.
  • mysql_field_type($resultadocampo) = Nos da el tipo de dato que almacena el campo.
  • mysql_errno() = Numero del ultimo error dado.
  • mysql_error() = Nos da el ultimo mensaje de error dado.
  • mysql_create_db(“NombreBaseNueva”$conexion= Crea una nueva base de datos.
  • mysql_drop_db(“Nombrebase”,$conexion= Borra una base.
  • mysql_free_result($resultados)= Libera la memoria de resultados.


No hay comentarios:

Publicar un comentario

Gracias por comentar en mi blog. Saludos.