“blue”> (:htend:)


Consultas Multiples Tablas.


Audio.

Desde MySQL es posible realizar una consulta que devuelva los valores de una tabla que está relacionada con otras de una sola vez.

Chat Publico.

Base De Datos hosted by alberto_garcia_tirado.

Join now


Chat about what's on your mind. More about public chats.

Por ejemplo, tenemos una tabla principal bien normalizada, con muchos campos que estan relacionados mediante un id con otras tablas que contienen los valores reales.

Lo que necesitamos hacer es convertir esa tabla ppal en otra en que los IDs se conviertan en dichos valores reales, y para ello utilizaremos JOIN’S:

Hay varios tipos de JOIN:

- Cross-Join - Equi-Join o Inner Join - Left Join

En este ejemplo se verá la utilización de lo que se llama un Equi-Join o Inner Join.

Para ver el funcionamiento creamos una base de datos de ejemplo:

PLAIN TEXT

MySQL:

1. CREATE DATABASE% contactos;

2. USE contactos;

3.

4. CREATE TABLE clientes (

5. id INT(3),

6. nombre VARCHAR(100),

7. tipo_cliente INT(2),

8. localidad INT(3)

9. );

10.

11. CREATE TABLE% tipos_cliente

12. (

13. id INT(2),

14. tipo VARCHAR(255)

15. );

16.

17. CREATE TABLE localidades

18. (

19. id INT(3),

20. nombre_localidad VARCHAR(255)

21. );

22.

23. # rellenamos la tabla “clientes”

24. INSERT INTO clientes VALUES ( 1, ‘Marcos Gonzalez’, 1, 1 );

25. INSERT INTO clientes VALUES ( 2, ‘Ingeniería y Mezclas’, 3, 2 );

26. INSERT INTO clientes VALUES ( 3, ‘Daniel Aguilar’, 1, 3 );

27. INSERT INTO clientes VALUES ( 4, ‘Abel Molina’, 2, 3 );

28.

29. #rellenamos la tabla tipos_cliente

30. INSERT INTO tipos_cliente VALUES ( 1, ‘Desarrollador’ );

31. INSERT INTO tipos_cliente VALUES ( 2, ‘Diseñador’ );

32. INSERT INTO tipos_cliente VALUES ( 3, ‘Otros’ );

33.

34. # rellenamos la tabla localidades

35. INSERT INTO localidades VALUES ( 1, ‘Oviedo’ );

36. INSERT INTO localidades VALUES ( 2, ‘Girona’ );

37. INSERT INTO localidades VALUES ( 3, ‘Barcelona’ );

Y ahora la consulta:

Lo que queremos hacer es recoger todos los valores de la tabla clientes pero recogiendo el valor real de los Id’s, que está situado en otras tablas relacionadas.

PLAIN TEXT

MySQL:

1. SELECT

2. clientes.nombre AS nombre_cliente,

3. localidades.nombre_localidad AS localidad_cliente,

4. tipos_cliente.tipo AS tipo_cliente

5. FROM clientes,

6. localidades,

7. tipos_cliente

8. WHERE clientes.localidad=localidades.id

9. AND clientes.tipo_cliente=tipos_cliente.id;

Lo que hemos hecho aquí es, en la clausula SELECT seleccionar los campos de los que queremos sacar información y darles un nombre de alias con AS. El alias nos sirve para utilizar nombres que nos aclaren más la función de la tabla en cuestión, pero es totalmente opcional en este caso.

Seguidamente, en la clausula FROM% decimos de qué tablas sacamos la información del SELECT, y para acabar debemos aclarar las condiciones que se tienen que cumplir para que los valores sean los correctos en cada columna.

En este caso los id’s de la tabla ppal (clientes) deben coincidir con los id’s de las tablas relacionadas.

Si ejecutamos esta consulta debemos obtener el siguiente valor:

Nombre_cliente | Localidad_Cliente | Tipo_Cliente


Mateo Garcia | Ontario | Otro


Daniel Figueroa | Brasil | Desarrollador


Alberto Gonzalez | Mexico | Diseñador


Carlos Jimenez | Genovia | Jefe

Video.


Instruccion DELETE.


Crea una consulta de eliminación que elimina los registros de una o más de las tablas listadas en la cláusula FROM que satisfagan la cláusula WHERE. Esta consulta elimina los registros completos, no es posible eliminar el contenido de algún campo en concreto.

Su sintaxis es:

DELETE Tabla.* FROM Tabla WHERE

DELETE es especialmente útil cuando se desea eliminar varios registros.

En una instrucción DELETE con múltiples tablas, debe incluir el nombre de tabla (Tabla.*). Si especifica más de una tabla desde la que eliminar registros, todas deben ser tablas de muchos a uno. Si desea eliminar todos los registros de una tabla, eliminar la propia tabla es más eficiente que ejecutar una consulta de borrado.

Se puede utilizar DELETE para eliminar registros de una única tabla o desde varios lados de una relación uno a muchos. Las operaciones de eliminación en cascada en una consulta únicamente eliminan desde varios lados de una relación.

Por ejemplo, en la relación entre las tablas Clientes y Pedidos, la tabla Pedidos es la parte de muchos por lo que las operaciones en cascada solo afectaran a la tabla Pedidos. Una consulta de borrado elimina los registros completos, no únicamente los datos en campos específicos. Si desea eliminar valores en un campo especificado, crear una consulta de actualización que cambie los valores a Null. Una vez que se han eliminado los registros utilizando una consulta de borrado, no puede deshacer la operación.

Si desea saber qué registros se eliminarán, primero examine los resultados de una consulta de selección que utilice el mismo criterio y después ejecute la consulta de borrado. Mantenga copias de seguridad de sus datos en todo momento. Si elimina los registros equivocados podrá recuperarlos desde las copias de seguridad.

DELETE * FROM Empleados WHERE Cargo = ‘Vendedor’;


Instruccion INSERT INTO.


Agrega un registro en una tabla. Se la conoce como una consulta de datos añadidos. Esta consulta puede ser de dos tipos: Insertar un único registro ó Insertar en una tabla los registros contenidos en otra tabla. Para insertar un unico Registro:

En este caso la sintaxis es la siguiente:

INSERT INTO Tabla (campo1, campo2, ..,campoN)VALUES (valor1, valor2, …, valorN)

Esta consulta graba en el campo1 el valor1, en el campo2 y valor2 y así sucesivamente. Hay que prestar especial atención a acotar entre comillas simples (’) los valores literales (cadenas de caracteres) y las fechas indicarlas en formato mm-dd-aa y entre caracteres de almohadillas (#). Para insertar Registros de otra tabla:

En este caso la sintaxis es:

INSERT INTO Tabla [IN base_externa](campo1,campo2,…,campoN)SELECT Tabla Origen?.campo1, campo2,…,Tabla Origen.campoN FROM Tabla Origen

En este caso se seleccionarán los campos 1,2, …, n de la tabla origen y se grabarán en los campos 1,2,.., n de la Tabla. La condición SELECT puede incluir la cláusula WHERE para filtrar los registros a copiar. Si Tabla y Tabla Origen poseen la misma estructura podemos simplificar la sintaxis a:

INSERT INTO Tabla SELECT Tabla Origen.*FROM Tabla Origen

De esta forma los campos de Tabla Origen se grabarán en Tabla, para realizar esta operación es necesario que todos los campos de Tabla Origen estén contenidos con igual nombre en Tabla.

Con otras palabras que Tabla posea todos los campos de Tabla Origen (igual nombre e igual tipo).

En este tipo de consulta hay que tener especial atención con los campos contadores o autonuméricos puesto que al insertar un valor en un campo de este tipo se escribe el valor que contenga su campo homólogo en la tabla origen, no incrementándose como le corresponde.

Se puede utilizar la instrucción INSERT INTO para agregar un registro único a una tabla, utilizando la sintaxis de la consulta de adición de registro único tal y como se mostró anteriormente. En este caso, su código específica el nombre y el valor de cada campo del registro. Debe especificar cada uno de los campos del registro al que se le va a asignar un valor así como el valor para dicho campo. Cuando no se especifica dicho campo, se inserta el valor predeterminado o Null. Los registros se agregan al final de la tabla.

Galeria Fotos.

También se puede utilizar INSERT INTO para agregar un conjunto de registros pertenecientes a otra tabla o consulta utilizando la cláusula SELECT … FROM como se mostró anteriormente en la sintaxis de la consulta de adición de múltiples registros. En este caso la cláusula SELECT especifica los campos que se van a agregar en la tabla destino especificada.

La tabla destino u origen puede especificar una tabla o una consulta.

Si la tabla destino contiene una clave principal, hay que asegurarse que es única, y con valores no-Null ; si no es así, no se agregarán los registros. Si se agregan registros a una tabla con un campo Contador, no se debe incluir el campo Contador en la consulta. Se puede emplear la cláusula IN para agregar registros a una tabla en otra base de datos.

Se pueden averiguar los registros que se agregarán en la consulta ejecutando primero una consulta de selección que utilice el mismo criterio de selección y ver el resultado. Una consulta de adición copia los registros de una o más tablas en otra. Las tablas que contienen los registros que se van a agregar no se verán afectadas por la consulta de adición.

En lugar de agregar registros existentes en otra tabla, se puede especificar los valores de cada campo en un nuevo registro utilizando la cláusula VALUES. Si se omite la lista de campos, la cláusula VALUES debe incluir un valor para cada campo de la tabla, de otra forma fallará INSERT.

INSERT INTO Clientes SELECT Clientes_Viejos.*FROM Clientes?_Nuevos;INSERT INTO Empleado(Nombre, Apellido, Cargo)VALUES(‘Carlos’, ‘Garcia’, ‘Jefe de planta’);

INSERT INTO Empleados SELECT Vendedores.*FROM Vendedores WHERE Fecha_Contratacion < Now() - 30;&&


Instrucción UPDATE.


Crea una consulta de actualización que cambia los valores de los campos de una tabla especificada basándose en un criterio específico.

Su sintaxis es:

UPDATE Tabla SET Campo1=Valor1, Campo2=Valor2,…Campo N?=Valor N? WHERE Criterio;

UPDATE es especialmente útil cuando se desea cambiar un gran número de registros o cuando éstos se encuentran en múltiples tablas. Puede cambiar varios campos a la vez. El ejemplo siguiente incrementa los valores Cantidad pedidos en un 10 por ciento y los valores Transporte en un 3 por ciento para aquellos que se hayan enviado al Reino Unido.:

UPDATE Pedidos SET Pedido = Pedidos

  • 1.1, Transporte = Transporte * 1.03

WHERE Pais Envío? = ‘ES’;

UPDATE no genera ningún resultado. Para saber qué registros se van a cambiar, hay que examinar primero el resultado de una consulta de selección que utilice el mismo criterio y después ejecutar la consulta de actualización.

UPDATE Empleados SET Grado = 5 WHERE Grado = 2; UPDATE Productos SET Precio = Precio * 1.1 WHERE Proveedor = 8 AND Familia = 3;

Si en una consulta de actualización suprimimos la cláusula WHERE todos los registros de la tabla señalada serán actualizados.

UPDATE Empleados SET Salario = Salario* 1.1

Presentacion Powerpoint.

Contacto.

Skype Me™!

Competencias.

  • Programacion HTML.
  • Creacion, Eliminacion, Insercion, Editacion De Paginas HTML.
  • Tecnologias Siglo XXI, audio, video, flash, documentos, galerias, chat publicos, llamadas por skype algunas en google.docs.
  • Creacion De Multiformatos.
  • Nuevas Tecnologias.

Fuentes.

Luis Alberto Garcia Tirado-ISC-06210029.Profesor: Lauro Soto-Base De Datos.

Para Contacto Sobre Dudas O Sugerencias En: albertogarcia86@gmail.com, click en foto para ver perfil.


Búsqueda personalizada