sistemas gestores bd

11
SISTEMAS GESTORES DE BASES DE DATOS REALIZAR UNA BASE DE DATOS EN ACCESS Una base de datos es una herramienta para recopilar y organizar información CONECTARLA CON EL SERVIDOR DE BASES DE DATOS MYSQL. MySQL es un sistema de administración de bases de datos (Database Management System, DBMS) para bases de datos relacionales. Así, MySQL no es más que una aplicación que permite gestionar archivos llamados de bases de datos. REALIZACION DE CONSULTAS Algunos de los ejemplos emplean la tabla shop para contener el precio de cada artículo (número de item) para ciertos distribuidores (dealers). Suponiendo que cada distribuidor tiene un único precio fijo por cada artículo, entonces (article, dealer) es una clave primaria para los registros.

Upload: grey-enterprice

Post on 13-Jun-2015

46 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Sistemas gestores bd

SISTEMAS GESTORES DE BASES DE DATOS

REALIZAR UNA BASE DE DATOS EN ACCESS

Una base de datos es una herramienta para recopilar y organizar información

CONECTARLA CON EL SERVIDOR DE BASES DE DATOS MYSQL.

MySQL es un sistema de administración de bases de datos (Database Management System, DBMS) para bases de datos relacionales. Así, MySQL no es más que una aplicación que permite gestionar archivos llamados de bases de datos.

REALIZACION DE CONSULTAS

Algunos de los ejemplos emplean la tabla shop para contener el precio de cada artículo (número de item) para ciertos distribuidores (dealers). Suponiendo que cada distribuidor tiene un único precio fijo por cada artículo, entonces (article, dealer) es una clave primaria para los registros.

Inicie la utilidad de línea de comandos mysql y seleccione una base de datos:

shell> mysql base-de-datos

(En la mayoría de las instalaciones de MySQL, podrá emplear la base de datos test).

Page 2: Sistemas gestores bd

Puede crear e ingresar datos a la tabla del ejemplo utilizando estas sentencias:

mysql> CREATE TABLE shop (

-> article INT(4) UNSIGNED ZEROFILL DEFAULT '0000' NOT NULL,

-> dealer CHAR(20) DEFAULT '' NOT NULL,

-> price DOUBLE(16,2) DEFAULT '0.00' NOT NULL,

-> PRIMARY KEY(article, dealer));

mysql> INSERT INTO shop VALUES

-> (1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.45),

-> (3,'C',1.69),(3,'D',1.25),(4,'D',19.95);

Luego de ejecutar estas sentencias, la tabla debería tener el siguiente contenido:

mysql> SELECT * FROM shop;

+---------+--------+-------+

| article | dealer | price |

+---------+--------+-------+

| 0001 | A | 3.45 |

| 0001 | B | 3.99 |

| 0002 | A | 10.99 |

| 0003 | B | 1.45 |

| 0003 | C | 1.69 |

| 0003 | D | 1.25 |

| 0004 | D | 19.95 |

+---------+--------+-------+

Page 3: Sistemas gestores bd

 El valor máximo de una columnaSELECT MAX(article) AS article FROM shop;

+---------+

| article |

+---------+

| 4 |

+---------+

El registro que tiene el valor máximo de determinada columna

En MySQL 5.0 (y en SQL estándar), esto se hace fácilmente con una subconsulta:

SELECT article, dealer, price

FROM shop

WHERE price=(SELECT MAX(price) FROM shop);

Otra solución es ordenar las columnas por precio, en forma descendente, y obtener solamente el primer registro utilizando la cláusula LIMIT, específica de MySQL:

SELECT article, dealer, price

FROM shop

ORDER BY price DESC

LIMIT 1;

Nota: Si hubiera varios artículos que presenten el precio más alto, cada uno a 19.95, la solución LIMIT sólo mostraría el primero de ellos.

Page 4: Sistemas gestores bd

Máximo de columna por grupo

SELECT article, MAX(price) AS price

FROM shop

GROUP BY article

+---------+-------+

| article | price |

+---------+-------+

| 0001 | 3.99 |

| 0002 | 10.99 |

| 0003 | 1.69 |

| 0004 | 19.95 |

+---------+-------+

 Los registros de un grupo que tienen el máximo valor en alguna columna

En MySQL 5.0 (y en SQL estándar), este problema puede resolverse con una subconsulta como esta:

SELECT article, dealer, price

FROM shop s1

WHERE price=(SELECT MAX(s2.price)

FROM shop s2

WHERE s1.article = s2.article);

Page 5: Sistemas gestores bd

Usar claves foráneas (foreign keys)

En MySQL, las tablas InnoDB soportan restricciones de claves foráneas. Consulte Capítulo 15, El motor de almacenamiento InnoDB. Consulte también Sección 1.7.5.5, “Claves foráneas (foreign keys)”.

No se requiere una restricción de clave foránea para simplemente unir dos tablas. Para otros tipos de tabla que no sean InnoDB, es posible, al momento de definir una columna, utilizar una cláusula REFERENCEStbl_name(col_name), la cual no tiene efecto real y funciona solamente como un recordatorio o comentario de que la columna que se está definiendo está dirigida a hacer referencia a una columna en otra tabla. Al emplear esta sintaxis es muy importante comprender que:

MySQL no efectúa ningún tipo de CHECK o comprobación para asegurarse de que col_name realmente existe entbl_name (o incluso que tbl_name existe).

MySQL no realiza ningún tipo de acción sobre tbl_name tal como borrar filas en respuesta a acciones ejecutadas sobre filas en la tabla que se está definiendo; en otras palabras, esta sintaxis no produce por sí misma un comportamiento ON DELETE u ON UPDATE. (Inclusive cuando se puede escribir una cláusula ON DELETE u ON UPDATE como parte de la cláusula REFERENCES, estas son también ignoradas).

Esta sintaxis crea una columna; no crea ninguna clase de índice o campo clave.

Esta sintaxis causará un error si se la emplea durante la definición de una tabla InnoDB.

Una columna creada de esta forma se puede utilizar como columna de unión, como se muestra aquí:

CREATE TABLE person (

id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,

name CHAR(60) NOT NULL,

PRIMARY KEY (id)

);

Page 6: Sistemas gestores bd

CREATE TABLE shirt (

id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,

style ENUM('t-shirt', 'polo', 'dress') NOT NULL,

color ENUM('red', 'blue', 'orange', 'white', 'black') NOT NULL,

owner SMALLINT UNSIGNED NOT NULL REFERENCES person(id),

PRIMARY KEY (id)

);

INSERT INTO person VALUES (NULL, 'Antonio Paz');

SELECT @last := LAST_INSERT_ID();

INSERT INTO shirt VALUES

(NULL, 'polo', 'blue', @last),

(NULL, 'dress', 'white', @last),

(NULL, 't-shirt', 'blue', @last);

INSERT INTO person VALUES (NULL, 'Lilliana Angelovska');

SELECT @last := LAST_INSERT_ID();

INSERT INTO shirt VALUES

(NULL, 'dress', 'orange', @last),

(NULL, 'polo', 'red', @last),

(NULL, 'dress', 'blue', @last),

Page 7: Sistemas gestores bd

(NULL, 't-shirt', 'white', @last);

SELECT * FROM person;

+----+---------------------+

| id | name |

+----+---------------------+

| 1 | Antonio Paz |

| 2 | Lilliana Angelovska |

+----+---------------------+

SELECT * FROM shirt;

+----+---------+--------+-------+

| id | style | color | owner |

+----+---------+--------+-------+

| 1 | polo | blue | 1 |

| 2 | dress | white | 1 |

| 3 | t-shirt | blue | 1 |

| 4 | dress | orange | 2 |

| 5 | polo | red | 2 |

| 6 | dress | blue | 2 |

| 7 | t-shirt | white | 2 |

+----+---------+--------+-------+

SELECT s.* FROM person p, shirt s

Page 8: Sistemas gestores bd

WHERE p.name LIKE 'Lilliana%'

AND s.owner = p.id

AND s.color <> 'white';

+----+-------+--------+-------+

| id | style | color | owner |

+----+-------+--------+-------+

| 4 | dress | orange | 2 |

| 5 | polo | red | 2 |

| 6 | dress | blue | 2 |

+----+-------+--------+-------+

Cuando se usa de esta manera, la cláusula REFERENCES no es mostrada en la salida de SHOW CREATE TABLE oDESCRIBE:

SHOW CREATE TABLE shirt\G

*************************** 1. row ***************************

Table: shirt

Create Table: CREATE TABLE `shirt` (

`id` smallint(5) unsigned NOT NULL auto_increment,

`style` enum('t-shirt','polo','dress') NOT NULL,

`color` enum('red','blue','orange','white','black') NOT NULL,

`owner` smallint(5) unsigned NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1

GENERAR UNA PAGINA EN PHP CON ESTILOS

Page 9: Sistemas gestores bd

Podemos utilizar una hoja de estilos únicamente para estos datos que queramos cambiar. El truco está en crear el archivo en PHP y definimos el header, por ejemplo:

estilo.php:

Código :

<?php

$colors = 3;

$random = rand(1,$color_txt);

$color_txt = array();

$color_txt[1] = "blue";

$color_txt[2] = "red";

$color_txt[3] = "black";

header('Content-Type: text/css');

echo 'body{margin:0;background:'.$color_txt[array_rand ( $color_txt)].';}';

?>

En el html solo linkamos en el header:

Código :

<? echo '<link href="estilo.php" rel="stylesheet" type="text/css">'; ?>

También podríamos enviar variables por POST en el link del html y funcionaria perfecto. El truco está en la línea:

Page 10: Sistemas gestores bd

Código :

header('Content-Type: text/css');