Enero 16, 2018, 04:02:20 am

Autor Tema: [Tutorial Base de Datos + SQL + PHP DESDE CERO]  (Leído 23291 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado TXS

  • Moderador Global
  • *****
  • Mensajes: 1774
  • Sexo: Masculino
  • Prefiero morir de pie, a vivir arrodillado
    • Ver Perfil
    • Infierno Hacker
[Tutorial Base de Datos + SQL + PHP DESDE CERO]
« en: Junio 12, 2009, 07:28:46 am »
TUTORIAL DE BASES DE DATOS + SQL + PHP DESDE CERO


PRESENTACIÓN.


Hola a todos. Hace ya mucho tiempo desde que escribí mi ultimo tutorial, manual o como lo quieran llamar, y creo que ya es hora de traer algo nuevo!!
En esta ocasión, vamos a aprender para que sirve una base de datos, como crearla, el uso de SQL, formularios... etc. Comenzaremos desde cero, con los conceptos basicos y aprendiendo a base de ejemplos, ya que es la mejor forma de ver este tipo de cosas...

¿QUE ES UNA BASE DE DATOS?


Una base de datos en si, puede considerarse como una especie de archivador electrónico; dicho de otra manera, un lugar donde almacenar un conjunto de archivos e información.

El usuario de una base de datos pude realizar entre otras cosas las siguientes tareas:

 - Agregar nuevos archivos a la base de datos.
 - Insertar datos nuevos en los archivos ya existentes
 - Obtener datos almacenados.
 - Borrar datos.
 - Obtener datos de una manera especifica y personalizada

y otra serie de cosas que veremos mas adelante...

Por lo tanto, podríamos decir que en definitiva una base de datos es un sistema computadorizado cuyo propósito general es mantener información y hacer que esta sea accesible cuando se solicite.

Si aun te cuesta ver que es una base de datos, imagínate la sala de archivos del ayuntamiento de tu ciudad, donde tienen almacenados archivos y documentos en grandes armarios, carpetas, cuadernos... de una forma ordenada por ejemplo alfaveticamente, por zonas, por tipologia... etc. Pues una base de datos en informatica es en esencia lo mismo, pero con las siguientes ventajas:

 - Es compacta. No hacen falta archivos de papeles que pudieran ocupar mucho espacio y con el tiempo pueden perderse, traspapelarse...etc.

 - Es rapida. La maquina puede obtener, modificar y añadir datos con mucha mayor velocidad que un ser humano.

 - Es menos laborioso. Se elimina gran parte del tiempo y esfuerzo de mantener archivos a mano en un espacio físico.

 - La posibilidad de hacer copias de seguridad fácilmente (backups).

Posiblemente existirán algunas otras ventajas que se me olviden, pero principalmente podemos quedarnos con estas.

SISTEMA GESTOR DE BASES DE DATOS.


Un sistema gestor de bases de datos (SGBD) es un software que permite la interacción entre la base de datos, el usuario y las aplicaciones creadas.

Existen sistemas gestores libres y otros de pago.

El mas popular y conocido por su seguridad, estabilidad y fiabilidad es ORACLE, aunque también hay que decir que es un poco caro y esta mas bien destinado a empresas que al usuario común.

Entre los SGBD libres, destacan MySQL, SQLite y PostgreeSQL.

Un sistema gestor "de pago" y que posiblemente todos tengamos en nuestro PC y con el que trabajaremos inicialmente es ACCESS de Microsoft.

CREANDO NUESTRA PRIMERA BASE DE DATOS


Sin mas preámbulos, crearemos ya nuestra primera base de datos.

El primer paso en la creación de una base de datos, es la creación del esquema conceptual, es decir, estudiar previamente como sera nuestra base de datos.

Las tareas a realizar en el diseño conceptual son las siguientes:

1. identificar las entidades.
2. identificar las relaciones.
3. identificar los atributos.
4. determinar los dominios de los atributos.
5. Determinar los identificadores.
6. Determinar las jerarquías de generalización (si las hay).
7. Dibujar el diagrama entidad-relación.
8. Revisar el esquema conceptual local con el usuario.

No se asusten por toda esta terminología... en realidad es mas sencillo de lo que parece.

Para nuestra primera base de datos no seguiremos todo este estudio paso a paso, pues podríamos estar mucho tiempo analizando, pero veremos lo fundamental.

Comenzamos!!!

La primera base de datos que vamos a crear para este tutorial, va a ser muy sencilla. En ella almacenaremos a USUARIOS, FOROS y Nº DE POST.

Las bases de datos se componen por TABLAS.

Para nuestro ejemplo, necesitaremos 3 tablas que seran; la tabla USUARIOS, POST y FOROS.

- TABLA USUARIOS:

En todas las tablas tiene que haber un campo clave o principal, el cual sera diferente para cada campo de la tabla. Un ejemplo de esto puede ser el DNI, Nº de pasaporte, un ID que establezcamos...etc, pero nunca podremos establecer como clave principal un nombre, apellido, fecha de nacimiento... ya que puede dar la casualidad de que se repita para dos datos de la tabla.

Por lo tanto uno de los campos de nuestra tabla sera el ID_Usuario

También añadiremos otros que serán; Nick, Pais y Email, con estos serán suficientes para nuestro ejemplo.

Por lo tanto, la tabla USUARIOS quedaría de la siguiente forma:

Código: You are not allowed to view links. Register or Login
ID_Usuario
Nick
Pais
Email

- TABLA FOROS:

En esta tabla asignaremos como clave a ID_Foro y pondremos ademas los campos Nombre y Descripcion de tal forma que nuestra tabla FOROS quedara de la siguiente forma:

Código: You are not allowed to view links. Register or Login
ID_Foro
Nombre
Descripcion

- TABLA POST:

La tabla POST surge en realidad como relacion de muchos a muchos entre la tabla USUARIOS y la tabla FOROS.

Existen varios tipos de relaciones;

- Relacion de 1 a muchos. (hay que poner la clave de la tabla 1 en la tabla muchos)
- Relacion de muchos a muchos. (hay que crear una tabla intermedia con las claves de ambas tablas)

Mas adelante estudiaremos todos tipos de relaciones... de momento no quiero liaros mas.

Entonces, como iba diciendo, entre USUARIOS y FOROS hay una relación de muchos a muchos, porque un usuario puede postear en muchos foros, y un foro puede ser posteado por muchos usuarios. Por esta razón, surge una tabla intermedia donde se almacenaran los post que hace cada usuario en los foros. Dicha tabla a de contener las claves principales de los foros relacionados.

La tabla POST tendrá por lo tanto la siguiente estructura:

Código: You are not allowed to view links. Register or Login
ID_Usuario
ID_Foro
Post

ID_Usuario e ID_Foro serán las claves principales de la tabla POST.



Una vez visto esto, abramos el Microsoft Access, y comencemos a crear nuestras tablas!!
You are not allowed to view links. Register or Login

Una vez abierto access, hacemos clic en NUEVO > BASE DE DATOS EN BLANCO, y seleccionamos un nombre o dejamos el que esta por defecto.

Se nos abrirá una tabla por defecto y sino, damos a crear nueva tabla.

Nos aseguramos de estar trabajando en vista diseño:
You are not allowed to view links. Register or Login

Una vez estamos en VISTA DISEÑO metemos los campos de la tabla USUARIOS.

You are not allowed to view links. Register or Login

Prestamos atención a las Mayúsculas y minúsculas, podremos barra baja _ y no guiones (-) espacios ni barras ( / ) el nombre de la tabla la llamaremos USUARIOS todo con mayúsculas o como quieran... pero deben acordarse o seguir siempre un orden, porque sino luego las sentencias SQL fallaran!

Creamos las dos tablas que nos quedan, la de USUARIOS y POST de la misma forma...

CREAR > TABLA EN VISTA DISEÑO

e insertamos los campos.

Una vez tengamos las tres tablas, tendremos algo asi:
You are not allowed to view links. Register or Login

Ahora que ya tenemos las tablas creadas, hacemos clic en HERRAMIENTAS DE BASES DE DATOS >> RELACIONES

You are not allowed to view links. Register or Login

Nos aparecerá una ventana para donde AGREGAREMOS nuestras 3 tablas.

A continuación, para hacer las relaciones, hacemos clic en el id_foro de la tabla FOROS y lo arrastramos hasta el id_foro de la tabla POST. Nos aparecera una ventana de relaciones donde deberemos marcar la casilla de exigir integridad referencial.

You are not allowed to view links. Register or Login

Hacemos lo mismo para id_usuario.

Al final de las relaciones tendremos lo siguiente:

You are not allowed to view links. Register or Login

Ahora ya podemos cerrar las relaciones y GUARDAR!!!

Asta aquí, hemos creado ya nuestras tablas y establecido las relaciones entre ellas, a continuación, procederemos a meter datos en las tablas.

Hacemos clic en la tabla USUARIOS y se nos abrirá por defecto en vista de datos. Meted 5 o 6 usuarios...

por ejemplo:
You are not allowed to view links. Register or Login

Seguimos añadiendo datos a las tablas POST y FOROS:

por ejemplo:
You are not allowed to view links. Register or Login

Pues bien, con esto ya tenemos nuestra base de datos creada!!

GUÁRDENLA pues con ella trabajaremos mas adelante cuando veamos SQL! que sera en el siguiente apartado.

Aquí les dejo la Base de datos que he creado en este tutorial por si alguien a tenido algun problema o se la quiere descargar:
You are not allowed to view links. Register or Login

INTRODUCCIÓN AL LENGUAJE SQL


SQL significa Structured Querly Languaje, o LENGUAJE ESTRUCTURADO DE CONSULTA.

SQL no nació por si solo... sino que fue creado por los desarrolladores de aplicaciones de bases de datos para responder a una serie de necesidades.

Con SQL podremos ejecutar muchos tipos de instrucciones que nos permitirán leer datos de las tablas, borrarlos, insertar datos, obtener datos de una manera especifica...etc.

Una sentencia SQL es como una "frase" escrita en ingles con la que decimos lo que queremos obtener y de donde obtenerlo.

Todas las sentencias empiezan con un "verbo" (palabra reservada) seguida del resto de clausuras...(algunas obligatorias y otras condicionales).

Si quieren pueden informarse un poco mas sobre el lenguaje SQL por la red, pero teniendo estos conceptos básicos sera mas que suficiente por ahora.

CONSULTAS SQL.


Todas las consultas que realicemos, deberán tener una sintaxis ordenada que iremos viendo a lo largo de este capitulo.

Las consultas que realizaremos por ahora seguirán la siguiente sintaxis:

SELECT campos FROM tablas WHERE condiciones

Ahora, volvamos a nuestra Base de Datos y vallamos a CREAR >> DISEÑO DE CONSULTA >> y se nos abrira un cuadro llamado "Mostrar tabla" pero lo CERRAMOS.

You are not allowed to view links. Register or Login

Ahora vamos a VISTA SQL tal y como vemos en la imagen:

You are not allowed to view links. Register or Login

Ahora ya estamos en la consola desde donde podremos ejecutar consultas SQL.

Comenzaremos con una serie de consultas sencillas. Solo tienen que escribir la consulta y dar a ejecutar para ver los resultados:

You are not allowed to view links. Register or Login

Comenzaremos con la siguiente consulta:

Código: You are not allowed to view links. Register or Login
SELECT * FROM USUARIOS;Como ven, les muestra todos los datos de la tabla usuarios.

Siempre que pongamos * nos referiremos a "todos"

Volvamos a vista SQL y probemos:
Código: You are not allowed to view links. Register or Login
SELECT Nick, Email, Pais FROM USUARIOS;
¿Se hacen una idea de como funciona verdad?

Si traducimos la sentencia veremos que estamos diciendo... SELECCIONA "el" Nick, Email, Pais DE USUARIOS.

Aquí van otros ejemplos:
Código: You are not allowed to view links. Register or Login
SELECT Nick, Email, Pais FROM USUARIOS WHERE ID_Usuario=1;
Código: You are not allowed to view links. Register or Login
SELECT * FROM USUARIOS WHERE ID_Usuario=1;
Código: You are not allowed to view links. Register or Login
SELECT Nombre, Descripcion FROM FOROS;
Ahora que ya hemos visto como funciona esto de las consultas SQL, en el siguiente capitulo veremos un manual de SQL un poco mas especifico y cosas mas avanzadas.

TUTORIAL SQL


Ahora que ya hemos visto un poco de SQL, vamos a pasar a estudiarlo un poco mas detalladamente.

- Sintaxis de la sentencia SELECT (consultas simples)

Citar
SELECT
  • ALL (viene por defecto (muestra todas las tablas))
  • DISTINCT (no muestra las repeticiones)
  • TOP n - PERCENT - (saca las tuplas que quieras, puede ir en función de un porcentaje)

FROM (especificación de tabla)

WHERE (condición de selección)

ORDER BY - nombre columna/nº columna -
  • ASC (ascendiente)
  • DESC (descendiente)

La clausura WHERE nos acepta los siguientes operadores:

= (igual)
<> (distinto de)
< (menor que)
> (mayor que)
<= (menor o igual que)
>= (mayor o igual que)

Veamos algunos ejemplos aplicando lo aprendido con nuestra base de datos.

Si ejecutamos:
Código: You are not allowed to view links. Register or Login
SELECT TOP 1 * FROM USUARIOSNos devolverá el 1º campo de la tabla usuarios, en nuestro caso:
You are not allowed to view links. Register or Login

Código: You are not allowed to view links. Register or Login
SELECT TOP 50 PERCENT * FROM USUARIOSNos devolverá la mitad de los usuarios (el 50%) que haya en la tabla usuarios. En nuestro caso, al haber 6 usuarios, esta consulta nos devolverá los primeros 3 usuarios.

Espero que no tengan problemas hasta aquí. Si todo les va bien, pueden ir probando por su cuenta las sentencias que quieran. Intenten meter las siguientes condiciones a alguna consulta (seguro que os sale ;) ):

Código: You are not allowed to view links. Register or Login
SELECT  * FROM USUARIOS WHERE Nick='TXS';
- WHERE ID_Usuario=1;
- WHERE ID_Usuario=1 OR ID_Usuario=5;
- WHERE ID_Usuario <> 3;
- WHERE ID_Usuario >= 3 AND ID_Usuario <= 6

-- ORDER BY Nick DESC

Vallan practicando consultas!!! es la única forma de aprender!!!

TEST DE RANGO (BETWEEN)
Examina si el valor de la expresión esta comprendido entre los dos valores definidos.
Tiene la siguiente sintaxis:

Código: You are not allowed to view links. Register or Login
SELECT  Nick, Pais
FROM USUARIOS
WHERE ID_Usuario BETWEEN 2 AND 5;

Muestra el Nick y el Pais de los USUARIOS que estan entre los ID_Usuario 2 y 5
Seria lo mismo que escribir:

Código: You are not allowed to view links. Register or Login
SELECT  Nick, Pais
FROM USUARIOS
WHERE ID_Usuario>=2 AND ID_Usuario<=5;

TEST DE PERTENENCIA A CONJUNTO (IN)
Examina si el valor de la expresion es uno de los valores incluidos en la lista de valores.
Tiene la siguiente sintaxis:

Código: You are not allowed to view links. Register or Login
SELECT  Nick, Pais
FROM USUARIOS
WHERE ID_Usuario IN (1,2,4,6);

Mostrara el Nick y Pais de los USUARIOS que tengan el ID_Usuario 1,2,4,6.

Obtendríamos lo mismo que escribir:

Código: You are not allowed to view links. Register or Login
SELECT  Nick, Pais
FROM USUARIOS
WHERE ID_Usuario=1 OR  ID_Usuario=2 OR  ID_Usuario=4 OR  ID_Usuario=6;

TEST DE VALOR NULO (IS NULL)
Una condición, puede dar como resultado el valor verdadero TRUE, falso FALSE o nulo NULL.

En la base de datos que nosotros hemos creado, no hay ningún campo que sea nulo, pero supongamos que tenemos una base de datos con empleados, directores, oficinas... etc y queremos la lista de las oficinas que no tienen director. Tendríamos que ejecutar la siguiente consulta:

Código: You are not allowed to view links. Register or Login
SELECT oficina, ciudad
FROM OFICINAS
WHERE director IS NULL;

o por ejemplo, si queremos la lista de los empleados asignados a alguna oficina:

Código: You are not allowed to view links. Register or Login
SELECT nombre, apellidos
FROM EMPLEADOS
WHERE oficina IS NOT NULL;

fácil verdad??

TEST DE CORRESPONDENCIA CON PATRON (LIKE)
Se utiliza cuando queremos utilizar caracteres comodines para formar el valor con el que comparar.

Los comodines mas usados son los siguientes:
? Representa un carácter cualquiera.
* Representa varios caracteres.
# Representa un dígito cualquiera (0-9)

Por ejemplo, si queremos el Nick de los usuarios que su país empiece por E, ejecutaríamos la siguiente consulta:

Código: You are not allowed to view links. Register or Login
SELECT  Nick
FROM USUARIOS
WHERE Pais LIKE 'E*';

o si queremos el nick y pais de los usuarios que tengan en su nombre una 'a', haríamos:

Código: You are not allowed to view links. Register or Login
SELECT  Nick, Pais
FROM USUARIOS
WHERE Nick LIKE '*a*';

SUM (suma) AVG (media) MIN (minimo) MAX, COUNT, STDEV....
Existen una serie de funciones que nos permiten obtener datos de nuestra base de datos de una forma concreta como son:

SUM > suma
MIN > minimo
AVG > media
MAX > maximo
STDEV > desviacion estandar de una serie de numeros
COUNT > cuenta datos
... existen otra serie de sentencias, pero para nosotros, estás son mas que suficientes.

probemos:
Código: You are not allowed to view links. Register or Login
SELECT SUM (Post) FROM POST;Nos devolverá el total de los post, es decir la suma de post.

Código: You are not allowed to view links. Register or Login
SELECT SUM (Post) FROM POST WHERE ID_Foro=1;
Nos devolverá el total de los post del foro 1

Código: You are not allowed to view links. Register or Login
SELECT AVG (Post) FROM POST WHERE ID_Foro=3;Nos devuelve la media de post del foro 3

Código: You are not allowed to view links. Register or Login
SELECT MAX (Post) FROM POST;Devuelve el máximo de post que se han publicado

... y el resto de sentencias siguen la misma estructura o similar, no creo que tengan problemas, y si quieren algún otro ejemplo me dicen.

PRODUCTO CARTESIANO "Muy importante"

La resolución del producto cartesiano a la hora de ejecutar algunas sentencias es fundamental.

Supongamos que queremos realizar una consulta en la que intervengan 2 o mas tablas. Con lo visto hasta ahora, si os mando mostrar el nick, nombre de foro y post de los usuarios, posiblemente ariais:

Código: You are not allowed to view links. Register or Login
SELECT Nick, Nombre, Post FROM USUARIOS, FOROS, POST;
Pero al ejecutar esa sentencia, nos devolvera un monton de datos mal...

Citar
Nick | Nombre |  Post
TXS   Hacking   22
TXS   Programacion   22
TXS   Webmaster   22
Pasqui   Hacking   22
Pasqui   Programacion   22
Pasqui   Webmaster   22
Skywallker   Hacking   22
Skywallker   Programacion   22
Skywallker   Webmaster   22
Redrick   Hacking   22
Redrick   Programacion   22
Redrick   Webmaster   22
Dynamique   Hacking   22
Dynamique   Programacion   22
Dynamique   Webmaster   22
Xianuro   Hacking   22
Xianuro   Programacion   22
Xianuro   Webmaster   22
TXS   Hacking   44
TXS   Programacion   44
TXS   Webmaster   44
Pasqui   Hacking   44
Pasqui   Programacion   44
Pasqui   Webmaster   44
Skywallker   Hacking   44
Skywallker   Programacion   44
Skywallker   Webmaster   44
Redrick   Hacking   44
Redrick   Programacion   44
Redrick   Webmaster   44
Dynamique   Hacking   44
Dynamique   Programacion   44
Dynamique   Webmaster   44
............
............
............
y de esta forma seguiría la lista hasta 342 registros!!

Para que no nos muestre toda esta "basura" es necesario resolver el producto cartesiano, es decir, establecer los datos de las tablas que están relacionados.

En la tabla USUARIOS hay un ID_Usuario
En la tabla POST hay un ID_Usuario

y

En la tabla POST hay un ID_Foro
En la tabla FOROS hay un ID_Foro

Estos datos es necesario relacionarlos, para ello, estableceremos en la clausura WHERE la siguiente sintaxis;

Código: You are not allowed to view links. Register or Login
WHERE USUARIOS.ID_Usuario=POST.ID_Usuario AND POST.ID_Foro=FOROS.ID_Foro
Asi indicaremos los datos que estan relacionados entre las tablas, y al realizar la consulta no nos mostrara repeticiones y lo agrupara de la manera correcta.

De este modo, volviendo a la cuestión de mostrar el NICK, NOMBRE del foro y POST, tendríamos que ejecutar la siguiente consulta:

Código: You are not allowed to view links. Register or Login
SELECT Nick, Nombre, Post
FROM USUARIOS, FOROS, POST
WHERE USUARIOS.ID_Usuario=POST.ID_Usuario AND POST.ID_Foro=FOROS.ID_Foro;

Esta nos devolvería todo correctamente;

You are not allowed to view links. Register or Login

Podemos seguir estableciendo clausuras como por ejemplo que solo nos muestre los de un usuario en concreto, entonces la consulta seria:

Código: You are not allowed to view links. Register or Login
SELECT Nick, Nombre, Post
FROM USUARIOS, FOROS, POST
WHERE USUARIOS.ID_Usuario=POST.ID_Usuario AND POST.ID_Foro=FOROS.ID_Foro AND USUARIOS.ID_Usuario=1;

o

Código: You are not allowed to view links. Register or Login
SELECT Nick, Nombre, Post
FROM USUARIOS, FOROS, POST
WHERE USUARIOS.ID_Usuario=POST.ID_Usuario AND POST.ID_Foro=FOROS.ID_Foro AND USUARIOS.Nick='TXS';

Con todo esto visto, ya casi estamos llegando al final del "tutorial para lumis de SQL". Ahora pasaremos a ver las sentencias para insertar datos, modificar datos, borrar filas y borrar tablas.

Insertar una fila, INSERT INTO ... VALUES ...

La inserción de nuevos datos en una tabla se realiza añadiendo filas enteras a la tabla, la sentencia SQL que lo permite es la orden ISERT INTO

La inserción se puede realizar de una fila o de varias filas de golpe. Nosotros veremos como hacerlo para insertar una fila.

Supongamos que queremos agregar un nuevo USUARIO.

Vamos a la tabla USUARIOS, y vemos que su estructura es la siguiente:

Citar
|            TABLA USUARIOS            |
 ID_Usuario                                       
 Nick                                                 
 Pais                                                 
 Email                                               

Para insertar un nuevo usuario, podríamos ejecutar la siguiente consulta:

Código: You are not allowed to view links. Register or Login
INSERT INTO USUARIOS VALUES (7,'Askatasun','España','askatasun:-com');
Esta consulta nos funcionaria, pero para hacer las cosas un poco mejor, usaremos otro método que veremos en un momento.

Imagina que usamos la sentencia anterior para añadir una nueva fila a una tabla, pero queremos dejar algún dato en blanco o que por lo que sea nos liamos en el orden... Para eso, hay otra sentencia INSERT INTO que nos permite establecer antes las posiciones donde se añadiran los datos.

Mejor, veamos un ejemplo:

Código: You are not allowed to view links. Register or Login
INSERT INTO USUARIOS (ID_Usuario, Nick, Pais, Email) VALUES (7,'Askatasun','España','askatasun:-com')Esta sentencia es la recomendada, y aunque sea un poco mas larga es mejor aprenderlo asi.

Si queremos añadir un usuario pero desconocemos el pais, simplemente tendríamos que hacer:

Código: You are not allowed to view links. Register or Login
INSERT INTO USUARIOS (ID_Usuario, Nick, Email) VALUES (8,'ZeroMercy','zeromercy:-com')
*Nota; Al ser tablas relacionadas, hay que seguir las reglas de integridad referencial.

Modificar el contenido de las filas, UPDATE

Supongamos que queremos poner a 0 los post del usuario 2 del foro 1:
Código: You are not allowed to view links. Register or Login
UPDATE POST
SET Post=0
WHERE ID_Usuario=2 AND ID_Foro=1;

o bien, supongamos que queremos doblar (multiplicar por dos) los post del usuario 1 en el foro 3

Código: You are not allowed to view links. Register or Login
UPDATE POST
SET Post=Post*2
WHERE ID_Usuario=1 AND ID_Foro=3;

dividir...

Código: You are not allowed to view links. Register or Login
UPDATE POST
SET Post=Post/2
WHERE ID_Usuario=1 AND ID_Foro=3;

Sencillo verdad?

Borrar filas, DELETE

La sentencia DELETE elimina filas de una tabla. Su sintaxis es la siguiente:
Citar
DELETE (tabla) FROM (origen) WHERE (posibles condiciones)

Borrar una tabla, DROP TABLE

La sentencia DROP TABLE tabla, nos permite borrar una tabla de la BD.

Código: You are not allowed to view links. Register or Login
DROP TABLE USUARIOS
Este seria un ejemplo de como eliminar una tabla, aunque en la base de datos que estamos empleando, no nos lo permitirían al estar relacionadas.

Una vez visto esto, pasaremos a ver otro gestor de bases de datos >>> MySQL



SGBD MySQL orientado al desarrollo web con PHP



MySQL es un sistema gestor de bases de datos "libre" que esta desarrollado por SUN MICROSYSTEMS.

MySQL lo podemos encontrar casi seguro instalado junto a PHPMyAdmin en cualquier hosting/servidor que compremos o que obtengamos gratuitamente para publicar nuestra web.

Para este manual, he preferido que sean ustedes los que se monten su propio "localhost" en su PC para aprender, ¿como hacerlo?, lo veremos a continuación.

Instalando MySQL + APACHE + PHP + PHPMyAdmin

Existen varios programas que nos instalan automáticamente estos servicios en nuestro PC que nos permitirán trabajar con paginas web y bases de datos empleando PHP.

Entre los mas destacados se encuentran: You are not allowed to view links. Register or Login y You are not allowed to view links. Register or Login

Podremos descargar cualquiera de los dos, u otro que conozcan, aunque el que yo empleare para este tutorial y el cual os recomiendo es EASYPHP, el cual podrán descargar gratuitamente de su web.

Una vez descargado, lo instalan y el disco donde tengan su sistema operativo. La instalación es sencilla, dejen los valores por defecto hasta que complete la instalación.

Una vez instalado, lo podrán ejecutar desde INICIO >> PROGRAMAS >> EASYPHP >>
You are not allowed to view links. Register or Login
Les aparecerá al lado del reloj de windows, un icono con el que podrán interactivo haciendo clic con el botón derecho del ratón.

Una vez este ejecutándose, abrimos firefox y colocamos la url You are not allowed to view links. Register or Login o You are not allowed to view links. Register or Login

You are not allowed to view links. Register or Login

Hacemos clic donde se indica en la imagen (mysqlgestion) para acceder a nuestro nuevo sistema gestor de bases de datos!!!

Si siguen el tutorial desde el principio, puede que ya estén acostumbrados a la facilidad y entorno intuitivo de microsoft access, y a primera vista, este nuevo sistema les resulte complejo, pero enseguida verán que en base es igual y le cogerán el ritmo rápidamente.

CREANDO UNA NUEVA BASE DE DATOS


Partiendo desde el punto anterior, ahora nos encontramos en You are not allowed to view links. Register or Login es decir, en el phpMyAdmin.

Vamos a crear una base de datos nueva con la que trabajaremos y realizaremos nuestros ejercicios. Dicha BD vamos a llamarla MiWeb.

Podemos crear la base de datos de dos formas:

- Abriendo la pestaña SQL y ejecutando la instruccion:
Código: You are not allowed to view links. Register or Login
CREATE DATABASE `MiWeb` ;
- Mediante el entorno de phpMyAdmin tal y como vemos en la imagen:

You are not allowed to view links. Register or Login

Vamos a comenzar desarrollando un ejemplo sencillo, de como crear una tabla y despues mostrar los datos mediante php en nuestra web. Mas adelante, intentaremos crear una web un poco mas compleja con usuarios, categorias, noticias...etc.

Una vez dentro de la base de datos que acabamos de crear (MiWeb), nos aparecera la opcion de "Crear nueva tabla en la base de datos miweb"

You are not allowed to view links. Register or Login

Nombraremos a la tabla como "NOTICIAS" y le asignaremos 5 campos. (mas adelante podemos agregar mas campos si lo deseamos)

A continuación, procederemos a introducir los campos para la tabla:

Citar
TABLA USUARIOS
ID_Usuario > tipo entero > clave primaria
Usuario > tipo texto > longitud 20
Tematica > tipo texto > longitud 20
Fecha > tipo date
Noticia > tipo varchar > longitud 255

You are not allowed to view links. Register or Login

Tambien podemos crearla ejecutando la senencia SQL;
Código: You are not allowed to view links. Register or Login
CREATE TABLE `miweb`.`NOTICIAS` (
`ID_Noticia` INT NOT NULL ,
`Usuario` TEXT NOT NULL ,
`Tematica` TEXT NOT NULL ,
`Fecha` DATE NOT NULL ,
`Noticia` VARCHAR( 255 ) NOT NULL ,
PRIMARY KEY ( `ID_Noticia` )
) ENGINE = InnoDB

Una vez creada nuestra tabla, vamos a la pestaña INSERTAR y metemos datos para nuestra nueva tabla, o bien, ejecutáis la siguiente sentencia SQL para introducir los mios.

Código: You are not allowed to view links. Register or Login
INSERT INTO `miweb`.`NOTICIAS` (
`ID_Noticia` ,
`Usuario` ,
`Tematica` ,
`Fecha` ,
`Noticia`
)
VALUES (
'1', 'TXS', 'Webmaster', '2009-06-12', 'Comenzamos un nuevo tutorial sobre Bases de Datos + SQL + PHP en nuestro foro. No se lo pierdan!!'
), (
'2', 'TXS', 'Webmaster', '2009-06-14', 'ORACLE anuncia descuentos para pequeñas y medianas empresas que quieran comprar una licencia de su SGBD. Ademas, ofrece nuevos servicios y horarios de atencion las 24 horas del dia.'
);

Asi insertaremos 2 noticias en la tematica Webmaster.

Añadamos 2 mas para hacking!!
Código: You are not allowed to view links. Register or Login
INSERT INTO `miweb`.`NOTICIAS` (
`ID_Noticia` ,
`Usuario` ,
`Tematica` ,
`Fecha` ,
`Noticia`
)
VALUES (
'3', 'Pasqui', 'Hacking', '2009-06-15', 'El encriptador de infiernohacker ya esta totalmente a su disposicion. Cualquier duda o sugerencia no dude en ponerse en contacto con nosotros.'
), (
'4', 'Skywallker', 'Hacking', '2009-06-17', 'Participa en el primer reto infiernohacker. Hay muchos premios a repartir para los primeros en conseguirlo. Suerte!'
);

Una vez insertadas las noticias, nuestra tabla tendrá un aspecto similar a este:

You are not allowed to view links. Register or Login

Para nuestra primera toma de contacto con mysql ya es mas que suficiente. Podriamos haber añadido un campo para titulo o mas tablas, pero bueno, ya aremos algo mas complejo mas adelante!!

CREANDO UN USUARIO PARA NUESTRA BASE DE DATOS


La mayoría de las bases de datos traen por defecto un usuario administrador que recibe el nombre de ROOT. Pueden usar este usuario si quieren, aunque yo para este tutorial empleare otro con los mismos privilegios que crearemos a continuacion.

Vayan a la pestaña PRIVILEGIOS del PHPMyAdmin

You are not allowed to view links. Register or Login

A continuacion seleccionen *Agregar un nuevo usuario

Denle un nombre al nuevo usuario, yo le llamare Admin, y establezcan una contraseña, que en mi caso sera 5636

Como Servidor seleccionen LOCAL
En Base de datos para el usuario dejen marcada *Ninguna
En Privilegios globales Marquen todos
Los Límites de recursos déjenlos en 0

Hagan clic en CONTINUAR para acabar de crear su usuario.

CONECTANDO CON NUESTRA BASE DE DATOS A TRAVÉS DE PHP


Ahora que ya tenemos nuestra mini base de datos montada, vamos a ver como leer los datos a traves de PHP y mostrarlos en nuestra web.

En primer lugar, abrimos el dreamweaver, bloc de notas, o el editor que utilizen y escribimos el siguente codigo:

Código: You are not allowed to view links. Register or Login
<?php
$conexion 
mysql_connect("localhost""admin""5636");
mysql_select_db("MiWeb"$conexion);
?>

Lo que hacemos aqui, es crear una variable llamada $conexion, y en ella guardamos la funcion mysql_connect("servidor", "usuario", "contraseña"); que nos permite conectar a la base de datos.
A continuacion, seleccionamos la base de datos mediante la funcion mysql_select_db("nombreBD", + lo contenido en la variable conexion);
De esta forma, ya tenemos la conexion con la base de datos MyWeb creada.

Lo guardamos como conexion.php en la carpeta www de la instalacion de EasyPHP.

Ahora si abrimos You are not allowed to view links. Register or Login veremos que nos aparece el archivo conexion.php que acabamos de crear, pero no veremos nada.

Ahora vamos a crear otro fichero php que llamaremos index.php.

En el, introduciremos lo siguiente:

Código: You are not allowed to view links. Register or Login
<?php
require ("conexion.php");
$sql "SELECT * FROM NOTICIAS";
$extraccion mysql_query($sql$conexion) or die(mysql_error());
$contador mysql_num_rows($extraccion);

if (
$contador0
{
while ($dat mysql_fetch_assoc($extraccion)) 
{
echo "<tt><i>Fecha de publicacion: </i></tt>".$dat['Fecha']."<br/>";
echo "<strong>Usuario: </strong>".$dat['Usuario']."<br/>";
echo "<strong>Tematica: </strong>".$dat['Tematica']."<br/>";
echo "<table border='1' width='100%'><tr><td><strong>Noticia: </strong><br/>".$dat['Noticia']."</td></tr></table><br/>";
}
}
?>

require ("conexion.php"); require(""); nos hace posible que tengamos en el nuevo index.php que vamos a crear, la conexion que hemos establecido con la Base de datos.

$sql = "SELECT * FROM NOTICIAS";
$extraccion = mysql_query($sql, $conexion) or die(mysql_error());
$contador = mysql_num_rows($extraccion);

En estas 3 lineas de codigo, creamos 3 variables llamadas sql, extraccion y contador. En la variable $sql tenemos guardada la sentencia SQL que vamos a ejecutar.
En $extraccion nos permite extraer nuestros datos de la Base de Datos. Y $contador es una variable que no nos hace falta en esencia, pero que la usaremos a continuacion, y que recoje el numero de campos que tenemos, que en nuestro caso son 4.

if ($contador> 0)
   {

Aqui lo que hacemos, es comprobar que tenemos datos metidos en la base de datos.

    while ($dat = mysql_fetch_assoc($extraccion))
      {
      echo "<tt><i>Fecha de publicacion: </i></tt>".$dat['Fecha']."<br/>";
      echo "<strong>Usuario: </strong>".$dat['Usuario']."<br/>";
      echo "<strong>Tematica: </strong>".$dat['Tematica']."<br/>";
      echo "<table border='1' width='100%'><tr><td><strong>Noticia: </strong><br/>".$dat['Noticia']."</td></tr></table><br/>";
      }
   }

A continuacion, mostramos los datos obtenidos de nuestra consulta, para ello, usamos la funcion mysql_fech_assoc que nos devuelve una matriz asociativa utilizando los nombres de los campos de la tabla.

Una vez visto esto, guardan ya su index.php en la carpeta www/ donde habian guardado el conexion.php y vuelven a ir a You are not allowed to view links. Register or Login y podran ver los resultados!!!

You are not allowed to view links. Register or Login
Aqui un ejemplo funcionando:
You are not allowed to view links. Register or Login

Ahora, si saben algo de html, pueden editar el codigo para dejarlo un poco mas bonito! :)
Código: You are not allowed to view links. Register or Login
<html>
<head>
<title>My WEB</title>
    <style type="text/css">
<!--
.Estilo2 {
color: #FFFFFF;
font-weight: bold;
}
.Estilo1 {
color: #00FF00;
font-weight: bold;
}
.Titulo {
color: #FFFF00;
font-weight: bold;
font-size: xx-large
}
-->
    </style>
</head>
<style type="text/css">
</style>
<body bgcolor="#000000">
<div align="center"><span class='Titulo'>My Web</span></div>
<br/><br/>
<span class="Estilo2">Noticias >>><br/>
</span>
<?php
require ("conexion.php");
$sql "SELECT * FROM NOTICIAS";
$extraccion mysql_query($sql$conexion) or die(mysql_error());
$contador mysql_num_rows($extraccion);

if (
$contador0
{
while ($dat mysql_fetch_assoc($extraccion)) 
{
echo "<table bgcolor='#339900' width='100%'><tr><td>";
echo "<tt><i>Fecha de publicacion: </i></tt>".$dat['Fecha']."<br/>";
echo "<strong>Usuario: </strong>".$dat['Usuario']."<br/>";
echo "<strong>Tematica: </strong>".$dat['Tematica']."<br/>";
echo "<table border='1' width='100%' bgcolor='#CCCCCC'><tr><td><strong>Noticia: </strong><br/>".$dat['Noticia']."</td></tr></table><br/>";
echo "</td></tr></table>";
echo "<br/><br/>";
}
}

echo 
"<span class='Estilo1'><i>Numero total de noticias: </i>".$contador."</span><br/>";
?>

</body>
You are not allowed to view links. Register or Login

Aqui tienen como quedaria la web que acabamos de crear:
You are not allowed to view links. Register or Login

Se que el diseño de la web no es demasiado bonito, pero no quería meter mucho "código de diseño" para no complicar mucho las cosas.


Próximamente mas!!!
... en construcción ...

(pueden ir comentando, sugiriendo o preguntando a lo largo del tutorial)

TXS
17/JUN/2009
« Última modificación: Mayo 04, 2013, 10:29:46 am por M4inFox »
Por una red libre de información y sin censuras
"Podrán morir las personas, pero jamas sus ideales"

Desconectado Meta

  • Me das tu IP?
  • *
  • Mensajes: 26
    • Ver Perfil
Re: Bases de Datos + SQL + PHP
« Respuesta #1 en: Julio 09, 2009, 05:25:20 am »
El mejor tutorial que he visto en todo internet de este tipo. Buen trabajo.

Cuando lo acabes mejor pasarlo a pdf.

You are not allowed to view links. Register or Login

Saludo.

Desconectado reddraco

  • Me das tu IP?
  • *
  • Mensajes: 15
    • Ver Perfil
Re: Bases de Datos + SQL + PHP
« Respuesta #2 en: Julio 12, 2009, 05:16:10 pm »
bueno bueno bueno   te quedo genial....espero lo subas a pdf...aunque lo estoy compiando para leerlo con mas calma  saludos

Desconectado TXS

  • Moderador Global
  • *****
  • Mensajes: 1774
  • Sexo: Masculino
  • Prefiero morir de pie, a vivir arrodillado
    • Ver Perfil
    • Infierno Hacker
Re: Bases de Datos + SQL + PHP
« Respuesta #3 en: Julio 13, 2009, 08:10:26 am »
Gracias por sus comentarios, en unos dias seguire con el tutorial.

Espero terminarlo pronto ;) y lo pasare a .pdf

Saludos!

Desconectado Traffic777

  • Me das tu IP?
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Bases de Datos + SQL + PHP
« Respuesta #4 en: Julio 19, 2009, 01:18:52 am »
Compadre se paso..excelente tutorial..
Saludos!!!


Compare en el transcurso del manual todo bn, pero llegue a la parte de MySQL, al momento de abrir cualquiera de las 2 paginas que anexo (You are not allowed to view links. Register or Login o You are not allowed to view links. Register or Login ) y ninguna de las 2 me las cargo firefox..:(...a que se debe, ojala me puedas ayudar...Saludos!!!!
« Última modificación: Julio 20, 2009, 12:49:35 pm por Traffic777 »

Desconectado Meta

  • Me das tu IP?
  • *
  • Mensajes: 26
    • Ver Perfil
Re: Bases de Datos + SQL + PHP
« Respuesta #5 en: Julio 19, 2009, 07:24:34 am »
La verdad es que si.

Suerte con el tutorial...

Desconectado sh0ck-r00t

  • Me das tu IP?
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Bases de Datos + SQL + PHP
« Respuesta #6 en: Octubre 01, 2009, 07:36:10 am »
hola me viene de maravilla este gran tutorial ahora  esperando el PDF el tutorial jeje y otra cosa amigo ya que saves mucho no taria mal aser un tutorial intalar el apache  y configurar el httpd  y el php.ini ya con eso basta jeje
te digo por que tu explicas muy bn asta mi hermanito de 5 años entiende tu tutoriales muy bueno felicitaciones
saludos

Desconectado DJGLJ

  • Me das tu IP?
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Bases de Datos + SQL + PHP
« Respuesta #7 en: Octubre 31, 2009, 08:44:33 am »
Hola some preocupa estar en bases de datos de todo tipo como empresas, tambien de publicidad y/y empresas de internet en las que inevitablemente uno tiene que meter datos. y nuevo aqui este es mi 1º mensaje.


hay alguna manera y/o programa, que metiendo tus datos salga una lista de todas las compañias en las que uno esta registrado, para posteriormente poder  darse de baja sea contactando con la compañia u otra manera?

Desconectado shevchenko

  • "Desde el punto de vista de un programador, el usuario no es más que un periférico que teclea cuando se le envía una petición de lectura"
  • Yo vivo en CPH
  • ***
  • Mensajes: 1353
  • Sexo: Masculino
  • Eres más falso que Windows 95 a prueba de fallos
    • Ver Perfil
    • Ycnexperu SAC
Re: Bases de Datos + SQL + PHP
« Respuesta #8 en: Noviembre 02, 2009, 11:14:22 am »
no hagas doble post y lee las reglas


You are not allowed to view links. Register or Login   You are not allowed to view links. Register or Login  You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login   You are not allowed to view links. Register or Login

Desconectado jamp

  • Yo vivo en CPH
  • ***
  • Mensajes: 1069
  • Sexo: Masculino
  • Ayudando a mis compañeros
    • Ver Perfil
Re: Bases de Datos + SQL + PHP
« Respuesta #9 en: Enero 10, 2010, 03:55:38 pm »
La gente sige esperando ansioso ese tutorial....

Muy buen trabajo

Un saludo
Si ves que un hombre tiene hambre, dale un pescado; si no quieres que pase hambre nuevamente, enséñale a pescar.

Desconectado ActerMarking

  • Yo vivo en CPH
  • ***
  • Mensajes: 565
  • Sexo: Masculino
  • La vondad de Nuestro SeÑor JeSuCrisTo.!!!
    • Ver Perfil
    • Gear Tuts->Actermaking, Karmac
Re: Bases de Datos + SQL + PHP
« Respuesta #10 en: Febrero 02, 2010, 09:35:02 am »
Muy bien turorial... esperamos su continuacion
|<a href="You are not allowed to view links. Register or Login"> Engine Scripts</a> |  <a href="You are not allowed to view links. Register or Login">MI CANAL YOUTUBE</a> |
Hay camino que al hombre le parece derecho, pero al final es camino de <i>muerte</i>. PROVERBIOS 16:25

Desconectado Meta

  • Me das tu IP?
  • *
  • Mensajes: 26
    • Ver Perfil
Re: Bases de Datos + SQL + PHP
« Respuesta #11 en: Diciembre 08, 2010, 11:12:51 pm »
Aquí les dejo mi manual que hice sobre instalar bases de datos y servidor Web casero.

You are not allowed to view links. Register or Login

Saludo.

Desconectado metaleroqwe

  • Me das tu IP?
  • *
  • Mensajes: 86
  • Sexo: Masculino
  • UN HACKER SE HACE, NO NACE CON SUS CONOCIMIENTOS
    • Ver Perfil
Re: Bases de Datos + SQL + PHP
« Respuesta #12 en: Diciembre 24, 2010, 03:06:54 pm »
upa muy bueno este tema..
gracias por el aporte
√√√√√=Metalero

Desconectado crashh

  • Me das tu IP?
  • *
  • Mensajes: 171
    • Ver Perfil
Re: Bases de Datos + SQL + PHP
« Respuesta #13 en: Enero 04, 2011, 12:35:56 am »
Buenas noches ! =) PERO AHI UNOS DATOS PA LOS NEWBIES COMO YO ! QUE PASE CASI DOS HORAS PA MAS DE HACER EL COMIENZO =(

BUENO A LO QUE SE ACABA DE HACER CADA TABLA SE DEBE GUARDAD ! YA QUE SI NO SE GUARDA DE UNA EN UNA DESPUES CUANDO SE PONE UNO A HACER LAS RELACIONES , no sale nada =)

AHORA SI MI PROBLEMA !! .... cuando señalo exigir integridad referencial !! me sale el ERROR ! , DE QUE LA TABLA NO SE PUDO BLOQUEAR PORQUE ESTA SIENDO USADA POR OTRO PROCESO !! =(  eh leido en google , pero la unica solucion dice que espere , que vaya a el software de utilidades y trate de arreglarlo ! ya reinicie la pc y todo pero nada =( ALGUIEN SABE QUE PUEDO HACER ! ... PSDATA: MI EQUIPO ES SOLO MIO ASI QUE NADIE MAS LO PUEDE USAR ...= )

Desconectado GOYfilms

  • Me das tu IP?
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Bases de Datos + SQL + PHP
« Respuesta #14 en: Abril 29, 2011, 02:23:47 am »
hola, estoy logueado en el foro y me aparece esto "[Solo Miembros registrados pueden ver [links] ] Registrate ó Logeate"

edito: ya está, al comentar el post ya me deja ver las imágenes

estupendo tuto!
« Última modificación: Abril 29, 2011, 02:24:37 am por GOYfilms »


question
Meter datos booleanos en una base de datos access y sql server desde vb .net

Iniciado por leovijil20

2 Respuestas
1905 Vistas
Último mensaje ſeptiembre 26, 2012, 08:01:38 pm
por leovijil20
xx
Entrar a una base de datos de una web desde Ip

Iniciado por Jesusmx

1 Respuestas
1009 Vistas
Último mensaje Julio 15, 2012, 06:13:17 am
por cibergolen
xx
[Tutorial] Scam + Base de datos.

Iniciado por xT3mP

0 Respuestas
2206 Vistas
Último mensaje Agosto 23, 2009, 03:52:52 am
por xT3mP
xx
hacer Base de datos con BV[Video Tutorial]

Iniciado por Cloud_xd

1 Respuestas
1210 Vistas
Último mensaje Febrero 15, 2010, 06:47:14 pm
por Shell Root
exclamation
Generar Modelo de JTable desde una Tabla[Base de Datos]

Iniciado por Kreusser

0 Respuestas
2091 Vistas
Último mensaje Mayo 22, 2011, 09:43:25 pm
por Kreusser
question
error al guardar en base de datos en sql 2000 desde visual basic

Iniciado por eqron

0 Respuestas
1118 Vistas
Último mensaje Agosto 01, 2009, 01:03:17 pm
por eqron
thumbup
comienzo desde cero en esto del html, donde puedo encontrar un tutorial

Iniciado por Darktriby_

5 Respuestas
2414 Vistas
Último mensaje Mayo 07, 2007, 11:55:21 am
por Big-Peru_
exclamation
Tutorial - Manejando bases de datos con SQL desde VB6

Iniciado por messerschmitt

8 Respuestas
4502 Vistas
Último mensaje Noviembre 27, 2009, 04:08:05 pm
por EddyW
resuelto
[Solucionado] ayuda principiante (guardar datos en base de datos en access)

Iniciado por miguel-in

5 Respuestas
1647 Vistas
Último mensaje Junio 04, 2010, 05:00:38 pm
por EddyW
question
Insertar datos a nuestra base de datos

Iniciado por miguel1454

1 Respuestas
1326 Vistas
Último mensaje Junio 19, 2011, 05:18:12 pm
por Kreusser