9. MySQL

91
7/23/2019 9. MySQL http://slidepdf.com/reader/full/9-mysql 1/91

Transcript of 9. MySQL

Page 1: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 1/91

Page 2: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 2/91

Índice

• Introducción• MySQL

Page 3: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 3/91

Introducción

• Michael Widenius en la década de los 90 crear una API SQdenominada MySQL para bases de datos muy similar a la

mSQL pero más portable.

• Por otro lado, el nombre del delfín de MySQL es Sakila y fu

seleccionado por los fundadores de MySQL AB en el concu“Name the Dolphin”.

Page 4: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 4/91

¿Qué es MySQL?

•Sistema de Gestión de Base de Datos

. Una implemenCliente Servidor, basado en el álgebra relacioncaracteriza por disponer toda la información contentablas, y las relaciones entre datos deben ser represeexplícitamente en esos mismos datos.

• Es un software de códigoabierto escrito en C

accesible para cualquiera para usarlo y modificarlo.

usa el GPL GNU Licencia Publica General)  no nos

dinero a menos que lo incluyamos en un so

comercial.

Page 5: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 5/91

MySQL Relational

Database Structure

MySQL

server

dcp

1 20

2 20

3 20

Page 6: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 6/91

Simple base de datos

Page 7: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 7/91

MySQL Consola

Page 8: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 8/91

SHOW databases;

Page 9: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 9/91

Comandos MySQL

Page 10: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 10/91

Creación de una base de datos

•CREATE DATABASE

publications;

•USE

 publications;

Page 11: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 11/91

Creación de usuarios

• GRANT ALL ON publications.* TO 'jim'@'localhost'IDENTIFIED BY 'mypasswd';

Page 12: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 12/91

Creación de tablas

CREATE TABLE classics (author VARCHAR(128),

title VARCHAR(128),

type VARCHAR(16),

year CHAR(4)) ENGINE MyISAM;

Page 13: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 13/91

Page 14: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 14/91

Agregar una columna autoincremento

ALTER TABLE

classicsADD

 idINT UNSIGNED NOT NULL

AUTO_INCREMENT KEY;

Page 15: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 15/91

Eliminando una columna

ALTER TABLE

classicsDROP

 id;

Page 16: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 16/91

Insertar datos a la tabla

INSERT INTO

classics(author, title, type, year)VALUES

('MTwain','The Adventures of Tom Sawyer','Fiction','1876');

Page 17: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 17/91

Renombrar una tabla

ALTER TABLE

classicsRENAME

 pre1900;

Page 18: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 18/91

Cambiar el tipo de dato de una columna

ALTER TABLE

classicsMODIFY

 yearSMALLINT

;

Page 19: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 19/91

Renombrar una columna

ALTER TABLE

classicsCHANGE

 type categoryVARCHAR 1

Eliminar una columna

ALTER TABLE classics DROP pages;

Page 20: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 20/91

Eliminar una tabla

• CREATE TABLE disposable(trash INT);• DESCRIBE disposable;

• DROP TABLE disposable;

• SHOW tables;

Page 21: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 21/91

Crear un índice

• Las búsquedas se pueden hacer sin problemas en MyShasta que crezca más de un par de cientos de filas, es la base de datos de accesos será más y más lento con nueva fila añadida, ya que MySQL tiene que buscar a trde cada fila cada vez que se haga una consulta.

• La manera de lograr búsquedas rápidas es añadir un íncuando se crea una tabla

Page 22: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 22/91

Crear un índice

• ALTER TABLE classics ADD INDEX(author(20));• ALTER TABLE classics ADD INDEX(title(20));

• ALTER TABLE classics ADD INDEX(category(4));

• ALTER TABLE classics ADD INDEX(year);

• Ejemplo:

The Adventures of Tom Sawyer

Solo va a almacenar en el índice de los primeros 20 caracteres:

The Adventures of To

Page 23: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 23/91

Clave primaria

•ALTER TABLE

classicsADD

 isbnCHAR 13

);

•UPDATE

 classicsSET

 isbn='9781598184891'WHERE

 year='187

•ALTER TABLE

classicsADD PRIMARY KEY

(isbn);

Page 24: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 24/91

Indice FULLTEXT

• A diferencia de un índice normal, FULLTEXT permitebúsquedas súper rápidas de columnas enteras de texto

• ALTER TABLE classics ADD FULLTEXT(author,title

Page 25: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 25/91

Consultas a una base de datos MySQL

• Con la base de datos creada y sus tablas de MySQL, lledatos, y sus índices para hacerlos rápido para buscar.

• Ahora se pude ver cómo se realizan las búsquedas, y lodiferentes comandos y calificadores disponibles. 

Page 26: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 26/91

Select

•SELECT

 author,titleFROM

 classics;

• SELECT title,isbn FROM classics;

Page 27: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 27/91

Select

Page 28: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 28/91

SELECT COUNT

• Muestra el número de filas (registros) de una tab

SELECT COUNT(*) FROM classics;

Page 29: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 29/91

SELECT DISTINCT

• Elimina las múltiples entradas cuando contienenlos mismos datos.

SELECT DISTINCT author FROM classics;

Page 30: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 30/91

WHERE

• Retorna los registros que cumple la condición.

SELECT author,title FROM classics WHERE author"Mark Twain";

Page 31: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 31/91

LIKE calificador)

• Permite buscar en partes de una cadena.

• SELECT author,title FROM classics WHERE author LIKE 

• SELECT author,title FROM classics WHERE title LIKE "%

• SELECT author,title FROM classics WHERE title LIKE "%

Page 32: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 32/91

LIKE calificador)

Page 33: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 33/91

DELETE

• Elimina el registro que cumple la condición.

DELETE FROM classics WHERE title='Little Dorrit';

Page 34: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 34/91

LIMIT calificador)

• Permite elegir el número de filas que retorna unconsulta, y en qué parte de la tabla empieza adevolverlos.

•SELECT

 author,titleFROM

 classicsLIMIT

 3;• SELECT author,title FROM classics LIMIT 1,2;

• SELECT author,title FROM classics LIMIT 3,1;

Page 35: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 35/91

LIMIT calificador)

Page 36: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 36/91

MATCH ... AGAINST

• Se usa en columnas al que se les ha dado el índFULLTEXT. Con esto se puede hacer búsquedas elenguaje natural.

• SELECT author,title FROM classics WHERE MATCH(authAGAINST('and');

• SELECT author,title FROM classics WHERE MATCH(authAGAINST('old shop');

• SELECT author,title FROM classics WHERE MATCH(authAGAINST('tom sawyer');

Page 37: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 37/91

MATCH ... AGAINST

Page 38: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 38/91

MATCH ... AGAINST en modo Boolean

• Es mas poderoso para las búsquedas, podemos (+) o exlucir (-) palabras

• SELECT author,title FROM classics WHERE MATCH(auth

AGAINST

('+charles -species'IN BOOLEAN MODE

);

• SELECT author,title FROM classics WHERE MATCH(authAGAINST('"origin of"' IN BOOLEAN MODE);

Page 39: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 39/91

MATCH ... AGAINST en modo Boolean

Page 40: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 40/91

UPDATE ... SET

• Permite actualizar el contenido de un campo

• UPDATE classics SET author='Mark Twain (Samuel LangClemens)‘ WHERE author='Mark Twain';

• UPDATE classics SET category='Classic Fiction‘ WHERE

category='Fiction';

Page 41: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 41/91

ORDER BY

• Retorna las columnas en orden ascendente o de

• SELECT author,title FROM classics ORDER BY au

• SELECT author,title FROM classics ORDER BY tit

Page 42: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 42/91

GROUP BY

• Agrupa resultados de la consulta por gruposSELECT category,COUNT(author) FROM classics G

category;

Page 43: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 43/91

Unión de Tablas 

• SELECT name,author,title FROM customers,classWHERE customers.isbn=classics.isbn;

Page 44: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 44/91

Natural Join 

•SELECT

 name,author,titleFROM

 customersNATURAL JOIN classics;

Page 45: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 45/91

phpMyAdmin

Page 46: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 46/91

Page 47: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 47/91

 

Page 48: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 48/91

 

Page 49: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 49/91

 

Page 50: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 50/91

 

Page 51: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 51/91

 

Page 52: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 52/91

Page 53: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 53/91

Page 54: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 54/91

Page 55: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 55/91

Agregar un campo

Page 56: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 56/91

Page 57: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 57/91

Eliminar un campo

Page 58: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 58/91

Page 59: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 59/91

Page 60: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 60/91

 

Page 61: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 61/91

Page 62: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 62/91

Renombrar una tabla

Page 63: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 63/91

Renombrar una tabla

Page 64: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 64/91

Cambiar el tipo de dato de una columna

Page 65: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 65/91

Cambiar el tipo de dato de una columna

Page 66: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 66/91

Cambiar el tipo de dato de una columna

Page 67: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 67/91

Agregar índices

Page 68: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 68/91

Agregar índices

Page 69: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 69/91

 

Page 70: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 70/91

Funciones de PHP para el acceso a ba

datos MySQL

• Los pasos para acceder desde PHP a una base de datos son los siguien

• Conectar con el servidor de bases de datos

• Seleccionar una base de datos

• Enviar la instrucción SQL a la base de datos

• Obtener y procesar los resultados

• Cerrar la conexión con el servidor de bases de datos

Page 71: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 71/91

Acceso a bases de datos MySQL

• Las funciones concretas de MySQL que realizan estas operaciones son:

• Conectar con el servidor de bases de datos:

•  mysql_connect )

• Seleccionar una base de datos:

• mysql_select_db )

• Enviar la instrucción SQL a la base de datos:

•  mysql_query )

• Obtener y procesar los resultados:

• mysql_num_rows ) y mysql_fetch_array )

• Cerrar la conexión con el servidor de bases de datos:

•  mysql_close )

Page 72: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 72/91

Acceso a bases de datos MySQL

• Conectar con el servidor de bases de datos: mysql_connect )

• Devuelve un identificador de la conexión en caso de éxito y false en caso

• Sintaxis:

$conexi on = mysql _connect ( servi dor, user name, password) ;

• Ejemplo:$conexi on = mysql _connect ( “l ocal host ”, “cur sophp”, “”)

or di e (“No se puede conect ar con el servi dor”) ;

$conexi on = mysql _connect ( “l ocal host ”, “cursophp- ad”, “php. hph”)or di e (“No se puede conect ar con el servi dor”) ;

Page 73: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 73/91

Acceso a bases de datos MySQL

• Seleccionar una base de datos: mysql_select_db )

• Devuelve true en caso de éxito y false en caso contrario

• Sintaxis:

mysql _sel ect _db ( dat abase) ;

• Ejemplo:

mysql _sel ect _db ( “l i ndavi st a”)or di e (“No se puede sel ecci onar l a base de dat os”) ;

Page 74: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 74/91

Acceso a bases de datos MySQL

• Enviar la instrucción SQL a la base de datos: mysql_query )

• Devuelve un identificador o true (dependiendo de la instrucción) si la inscorrectamente y false en caso contrario

• Sintaxis:

$consul t a = mysql _quer y ( i nst r ucci ón, $conexi on) ;

• Ejemplo:

$consul t a = mysql _quer y ( “sel ect * f r om not i ci as”, $conexi on)or di e (“Fal l o en l a consul t a”);

Page 75: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 75/91

Acceso a bases de datos MySQL

• Obtener y procesar los resultados: mysql_num_rows ), mysql_fetch_arra

• En el caso de que la instrucción enviada produzca unos resultados, mysqlas filas de la tabla afectadas por la instrucción

• mysql_num_rows() devuelve el número de filas afectadas

• Para obtener las distintas filas del resultado se utiliza la función mysql_obtiene una fila del resultado en un array asociativo cada vez que se inv

• Sintaxis:

$nf i l as = mysql _num_r ows ( $consul t a) ;$f i l a = mysql _f et ch_ar r ay ( $consul t a) ;

Page 76: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 76/91

Acceso a bases de datos MySQL

• Ejemplo: 

Título 1 Texto 1 05/02/2004

noticias

1

Título 2 Texto 2 05/02/20042

Título 3 Texto 3 04/02/20043

Título 4 Texto 4 01/02/20044

Título 5 Texto 5 31/01/20045

Instrucción:sel ect * f r om not i ci as wher e cat egor i a=“pr omoci ones”

ofertas

promociones

promociones

costas

promociones

Page 77: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 77/91

Acceso a bases de datos MySQL

• Ejemplo: 

Título 1 Texto 1 05/02/2004

noticias

1

Título 2 Texto 2 05/02/20042

Título 3 Texto 3 04/02/20043

Título 4 Texto 4 01/02/20044

Título 5 Texto 5 31/01/20045

Instrucción:sel ect * f r om not i ci as wher e cat egor i a=“pr omoci ones”

ofertas

promociones

promociones

costas

promociones

Page 78: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 78/91

Acceso a bases de datos MySQL

• Obtención de las filas:$nf i l as = mysql _num_r ows ( $consul t a) ;i f ( $nf i l as > 0){

f or ( $i =0; $i <$nf i l as; $i ++){

$f i l a = mysql _f et ch_ar r ay ( $consul t a) ;   procesar fila i-ésima de los resultados 

}}

Page 79: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 79/91

Acceso a bases de datos MySQL

• Obtener los resultados: mysql_num_rows ), mysql_fetch_array ) 

• Para acceder a un campo determinado de una fila se usa la siguiente si

$f i l a[“nombr e_campo”] / / por ser un ar r ay asoci at i vo

$f i l a[ $i ] / / $i =í ndi ce del campo desde 0

• Ejemplo:

f or ( $i =0; $i <$nf i l as; $i ++){

$f i l a = mysql _f et ch_ar r ay ( $consul t a) ;pr i nt “Tí tul o: “ . $f i l a[ “ t i tul o”] ;pr i nt “Fecha: “ . $f i l a[ “f echa”];

}

Page 80: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 80/91

Acceso a bases de datos MySQL

• Cerrar la conexión con el servidor de bases de datos: mysql_close )

• Sintaxis:

mysql _cl ose ( $conexi on) ;

• Ejemplo

mysql _cl ose ( $conexi on) ;

Page 81: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 81/91

Consulta avanzada de tablas

• Objetivo:

• mostrar los resultados de la consultadivididos en bloques de un número

elementos

 (por ejemplo, de 5 en 5)

• Requisitos:

• Recuperar un número limitado de elementos de la tabla

• Implementar un mecanismo de navegación que permita avanzar al siguanterior bloque de elementos

Page 82: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 82/91

Consulta avanzada de tablas

• Para recuperar un número fijo de elementos de una tabla se utiliza la o

orden SELECT. Así, por ejemplo,

SELECT * f r om not i ci as LI MI T 0, 5

recupera los 5 primeros elementos de la tabla. Y en general,

SELECT * f r om not i ci as LI MI T $comi enzo, $num

 

recupera $num elementos a partir de la posición $comienzo

Page 83: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 83/91

Consulta avanzada de tablas

• La variable $num tendrá un valor constante (en este caso 5), mientras q

$comienzo se incrementará o decrementará en 5 unidades al pasar a lo anterior

• Para ello se pasará la variable como parámetro en el enlace asociado acorrespondiente

• Por ejemplo, el código para el botón siguiente será:

"<A HREF=' " . $_SERVER[ ' PHP_SELF' ] . "?comi enzo=" . ( $comi enzo " ' >Si gui ent e</ A>"

• Habrá que comprobar previamente que el nuevo valor de comienzo es vse encuentra dentro de los límites de la tabla devuelta por la consulta

Page 84: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 84/91

Consulta avanzada de tablas

• Objetivo:

• Mostrar los resultados de una consulta de manera que se puedanfiltrar

de una determinada columna

 de la tabla

• Requisitos:

• Recuperar de una tabla los elementos que cumplan una determinada c

• Permitir seleccionar un valor de entre los valores posibles de una colum

Page 85: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 85/91

Consulta avanzada de tablas

• Para recuperar los elementos de una tabla que cumplen una condición

WHERE

 de la orden SELECT. Por ejemplo,

SELECT * f r om not i ci as WHERE cat egori a=’ of ert as’

recupera las noticias cuya categoría tiene el valor “ofertas”. Y en genera

SELECT * f r om not i ci as WHERE cat egori a =’ $cat egori a’

recupera las noticias cuya categoría tiene el valor dado por la variable $

• La variable $categoria se obtendrá de un elemento SELECT

Page 86: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 86/91

Consulta avanzada de tablas

• Objetivo:

• Modificar el ejercicio anterior para que los resultados se actualicen de foseleccionar un nuevo valor para la columna

• Requisitos:

• Obtener automáticamente los valores de una columna de tipo enumeratabla

• Utilizar código JavaScript para detectar un cambio en la opción selecciode tipo SELECT

Page 87: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 87/91

Consulta avanzada de tablas

• Función JavaScript que actualiza una página en función de la opción se

elemento SELECT de nombre ‘categoria’ del formulario de nombre ‘sele

<SCRI PT LANGUAGE=' J avaScr i pt ' ><! - -f unct i on act ual i zaPagi na ( ){

i = document . f or ms. sel ecci ona. cat egor i a. sel ect edI ndex;categori a =

document . f or ms. sel ecci ona. cat egor i a. opt i ons[ i ] . val ue;wi ndow. l ocat i on = ‘ muest r a_not i ci as. php?categor i a=' +

cat egor i a;}/ / - - ></ SCRI PT>

Page 88: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 88/91

Consulta avanzada de tablas

• Para ejecutar la función JavaScript es preciso asociarla al elemento SEL

evento ONCHANGE, que se activa cuando se modifica la opción seleccio

<SELECT NAME=' cat egor i a' ONCHANGE=' act ual i zaPagi na( ) ' >

Page 89: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 89/91

Consulta avanzada de tablas

• Es conveniente que la opción seleccionada aparezca marcada por defec

página

• Para ello es preciso generar las opciones del elemento SELECT de form

• De esta manera se puede comparar cada una de las opciones con el vaformulario y colocar el atributo SELECTED a la que corresponda

Page 90: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 90/91

Consulta avanzada de tablas

• En el formulario del ejercicio anterior los valores de los campos de tipo

(ENUM) están escritos directamente en el propio código. Así, para la catse tiene:

<SELECT NAME=“cat egor i a">

<OPTI ON VALUE=“pr omoci ones">pr omoci ones

<OPTI ON VALUE=“of er t as" SELECTED>of er t as

<OPTI ON VALUE=“cost as">cost as

</ SELECT>

• Este hecho no es muy deseable ya que si se modifican los valores de latabla hay que modificar también el código del formulario

Page 91: 9. MySQL

7/23/2019 9. MySQL

http://slidepdf.com/reader/full/9-mysql 91/91

Consulta avanzada de tablas

• Lo ideal es tomar los valores automáticamente de la tabla en lugar de e

en el código. Para ello se utiliza la siguiente instrucción SQL:

SHOW col umns FROM not i ci as LI KE ‘ cat egori a‘

que devuelve una tabla con las propiedades del campo ‘categoria’. El e

esta tabla contiene lo siguiente:

enum( “pr omoci ones" , “of ert as" , “cost as" )

• A partir de esta información podemos obtener los valores del tipo enumlas opciones del elemento SELECT. Sólo queda marcar con SELECTED laestaba seleccionada en caso de haberse enviado el formulario