SlideShare una empresa de Scribd logo
1 de 10
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).
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 |
+---------+--------+-------+
El valor máximo de una columna
SELECT 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.
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);
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)
);
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),
(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
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 shirtG
*************************** 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
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:
Código :
header('Content-Type: text/css');

Más contenido relacionado

La actualidad más candente

Filtro Avanzado en Excel
Filtro Avanzado en ExcelFiltro Avanzado en Excel
Filtro Avanzado en Excelangela1140
 
Actualización de bases de datos en MySQL
Actualización de bases de datos en MySQLActualización de bases de datos en MySQL
Actualización de bases de datos en MySQLalexmerono
 
Informática seccion 5
Informática seccion 5Informática seccion 5
Informática seccion 5juancarz73
 
manejo de sentencias de manipulacion
manejo de sentencias de manipulacionmanejo de sentencias de manipulacion
manejo de sentencias de manipulacionSergio Perez
 
FILTROS AVANZADOS EXCEL
FILTROS AVANZADOS EXCELFILTROS AVANZADOS EXCEL
FILTROS AVANZADOS EXCELgsourigues
 
USO DE SENTECIAS SQL
USO DE SENTECIAS SQLUSO DE SENTECIAS SQL
USO DE SENTECIAS SQLJorge Porras
 
Introduccion a microsoft excel
Introduccion a microsoft excelIntroduccion a microsoft excel
Introduccion a microsoft excelbhylenia
 
Introducción a Sql
Introducción a SqlIntroducción a Sql
Introducción a Sqlalexmerono
 
Formulas y funciones de ms excel.Mely
Formulas y funciones de ms excel.MelyFormulas y funciones de ms excel.Mely
Formulas y funciones de ms excel.MelyMely Bonilla Silva
 
Consultas combinadas
Consultas combinadasConsultas combinadas
Consultas combinadasyehisam
 
Sql avanzado
Sql avanzadoSql avanzado
Sql avanzadodmonges
 

La actualidad más candente (20)

Curso SQL - Leccion 6
Curso SQL - Leccion 6Curso SQL - Leccion 6
Curso SQL - Leccion 6
 
Filtro Avanzado en Excel
Filtro Avanzado en ExcelFiltro Avanzado en Excel
Filtro Avanzado en Excel
 
Actualización de bases de datos en MySQL
Actualización de bases de datos en MySQLActualización de bases de datos en MySQL
Actualización de bases de datos en MySQL
 
SENTENCIAS DE SQL SERVER
SENTENCIAS DE SQL SERVERSENTENCIAS DE SQL SERVER
SENTENCIAS DE SQL SERVER
 
Introducción a sql server
Introducción a sql serverIntroducción a sql server
Introducción a sql server
 
Comandos SQL
Comandos SQLComandos SQL
Comandos SQL
 
Sentencias my sql
Sentencias my sqlSentencias my sql
Sentencias my sql
 
Informática seccion 5
Informática seccion 5Informática seccion 5
Informática seccion 5
 
manejo de sentencias de manipulacion
manejo de sentencias de manipulacionmanejo de sentencias de manipulacion
manejo de sentencias de manipulacion
 
Manipulacion de Bases de Datos
Manipulacion de Bases de DatosManipulacion de Bases de Datos
Manipulacion de Bases de Datos
 
FILTROS AVANZADOS EXCEL
FILTROS AVANZADOS EXCELFILTROS AVANZADOS EXCEL
FILTROS AVANZADOS EXCEL
 
USO DE SENTECIAS SQL
USO DE SENTECIAS SQLUSO DE SENTECIAS SQL
USO DE SENTECIAS SQL
 
Filtros y ordenación de datos.
Filtros y ordenación de datos.Filtros y ordenación de datos.
Filtros y ordenación de datos.
 
Introduccion a microsoft excel
Introduccion a microsoft excelIntroduccion a microsoft excel
Introduccion a microsoft excel
 
Introducción a Sql
Introducción a SqlIntroducción a Sql
Introducción a Sql
 
Consultas base de datos en SQL
Consultas base de datos en SQLConsultas base de datos en SQL
Consultas base de datos en SQL
 
Formulas y funciones de ms excel.Mely
Formulas y funciones de ms excel.MelyFormulas y funciones de ms excel.Mely
Formulas y funciones de ms excel.Mely
 
Consultas combinadas
Consultas combinadasConsultas combinadas
Consultas combinadas
 
Curso SQL - Leccion 8
Curso SQL - Leccion 8Curso SQL - Leccion 8
Curso SQL - Leccion 8
 
Sql avanzado
Sql avanzadoSql avanzado
Sql avanzado
 

Destacado

Manual html
 Manual html Manual html
Manual htmlgrupohtml
 
Novedades Factura Electrónica Básica versión 1.3.8
Novedades Factura Electrónica Básica versión 1.3.8 Novedades Factura Electrónica Básica versión 1.3.8
Novedades Factura Electrónica Básica versión 1.3.8 Victor Manuel Urbano Martinez
 
Academia Representación Gráfica- Actividades
Academia Representación Gráfica- ActividadesAcademia Representación Gráfica- Actividades
Academia Representación Gráfica- Actividadesarorep
 
Las 100 mejores noticias de 2011
Las 100 mejores noticias de 2011Las 100 mejores noticias de 2011
Las 100 mejores noticias de 2011easypress.es
 
Analisis Sitios MSIG XIV - Tecnologías para el Internet
Analisis Sitios MSIG XIV - Tecnologías para el InternetAnalisis Sitios MSIG XIV - Tecnologías para el Internet
Analisis Sitios MSIG XIV - Tecnologías para el InternetGerardo Garnica
 

Destacado (6)

Manual html
 Manual html Manual html
Manual html
 
Novedades Factura Electrónica Básica versión 1.3.8
Novedades Factura Electrónica Básica versión 1.3.8 Novedades Factura Electrónica Básica versión 1.3.8
Novedades Factura Electrónica Básica versión 1.3.8
 
Academia Representación Gráfica- Actividades
Academia Representación Gráfica- ActividadesAcademia Representación Gráfica- Actividades
Academia Representación Gráfica- Actividades
 
Proyecto de vida Nathalya
Proyecto de vida NathalyaProyecto de vida Nathalya
Proyecto de vida Nathalya
 
Las 100 mejores noticias de 2011
Las 100 mejores noticias de 2011Las 100 mejores noticias de 2011
Las 100 mejores noticias de 2011
 
Analisis Sitios MSIG XIV - Tecnologías para el Internet
Analisis Sitios MSIG XIV - Tecnologías para el InternetAnalisis Sitios MSIG XIV - Tecnologías para el Internet
Analisis Sitios MSIG XIV - Tecnologías para el Internet
 

Similar a Sistemas gestores bd

Material Clase BDD: Diseño de una Base de Datos
Material Clase BDD: Diseño de una Base de DatosMaterial Clase BDD: Diseño de una Base de Datos
Material Clase BDD: Diseño de una Base de Datosliras loca
 
Mejoras en T-SQL para SQL Server 2005
Mejoras en T-SQL para SQL Server 2005Mejoras en T-SQL para SQL Server 2005
Mejoras en T-SQL para SQL Server 2005pabloesp
 
Manejo De Sentencias De Definicion
Manejo De Sentencias De DefinicionManejo De Sentencias De Definicion
Manejo De Sentencias De DefinicionSergio Perez
 
8 Guía_Fundamentos de Base de Datos (2).docx
8 Guía_Fundamentos de Base de Datos (2).docx8 Guía_Fundamentos de Base de Datos (2).docx
8 Guía_Fundamentos de Base de Datos (2).docxLeydyVeronicaDelgado
 
Modulo de programacion sql unidad II
Modulo de programacion sql   unidad IIModulo de programacion sql   unidad II
Modulo de programacion sql unidad IIfiremas
 
Manual MySQL.pdf
Manual MySQL.pdfManual MySQL.pdf
Manual MySQL.pdfquesadah
 
MySQL - SQL.pdf
MySQL - SQL.pdfMySQL - SQL.pdf
MySQL - SQL.pdfkabern
 
MySQL.pdf
MySQL.pdfMySQL.pdf
MySQL.pdfkabern
 
Diapositivas funciones de grupo en sql
Diapositivas funciones de grupo en sqlDiapositivas funciones de grupo en sql
Diapositivas funciones de grupo en sqlrosamelosa
 
Taller indices 01
Taller indices 01Taller indices 01
Taller indices 01AgenteAlbo
 
Comandos en consola de mysql desde el portal
Comandos en consola de mysql desde el portalComandos en consola de mysql desde el portal
Comandos en consola de mysql desde el portaleavila5
 

Similar a Sistemas gestores bd (20)

Parte 08 my sql
Parte 08 my sqlParte 08 my sql
Parte 08 my sql
 
Material Clase BDD: Diseño de una Base de Datos
Material Clase BDD: Diseño de una Base de DatosMaterial Clase BDD: Diseño de una Base de Datos
Material Clase BDD: Diseño de una Base de Datos
 
Mejoras en T-SQL para SQL Server 2005
Mejoras en T-SQL para SQL Server 2005Mejoras en T-SQL para SQL Server 2005
Mejoras en T-SQL para SQL Server 2005
 
Manejo De Sentencias De Definicion
Manejo De Sentencias De DefinicionManejo De Sentencias De Definicion
Manejo De Sentencias De Definicion
 
8 Guía_Fundamentos de Base de Datos (2).docx
8 Guía_Fundamentos de Base de Datos (2).docx8 Guía_Fundamentos de Base de Datos (2).docx
8 Guía_Fundamentos de Base de Datos (2).docx
 
Modulo de programacion sql unidad II
Modulo de programacion sql   unidad IIModulo de programacion sql   unidad II
Modulo de programacion sql unidad II
 
210927124637-Manual MySQL.pdf
210927124637-Manual MySQL.pdf210927124637-Manual MySQL.pdf
210927124637-Manual MySQL.pdf
 
Manual MySQL.pdf
Manual MySQL.pdfManual MySQL.pdf
Manual MySQL.pdf
 
Tarea bd
Tarea bdTarea bd
Tarea bd
 
MySQL - SQL.pdf
MySQL - SQL.pdfMySQL - SQL.pdf
MySQL - SQL.pdf
 
MySQL.pdf
MySQL.pdfMySQL.pdf
MySQL.pdf
 
Indices y Vistas.pptx
Indices y Vistas.pptxIndices y Vistas.pptx
Indices y Vistas.pptx
 
Diapositivas funciones de grupo en sql
Diapositivas funciones de grupo en sqlDiapositivas funciones de grupo en sql
Diapositivas funciones de grupo en sql
 
Ejercicio tabla my_sql (1)
Ejercicio tabla my_sql (1)Ejercicio tabla my_sql (1)
Ejercicio tabla my_sql (1)
 
Unidad 4
Unidad 4Unidad 4
Unidad 4
 
Consultas
ConsultasConsultas
Consultas
 
Clase 2 El lenguaje DDL de SQL
Clase 2 El lenguaje DDL de SQLClase 2 El lenguaje DDL de SQL
Clase 2 El lenguaje DDL de SQL
 
Taller indices 01
Taller indices 01Taller indices 01
Taller indices 01
 
Comandos mysql
Comandos mysqlComandos mysql
Comandos mysql
 
Comandos en consola de mysql desde el portal
Comandos en consola de mysql desde el portalComandos en consola de mysql desde el portal
Comandos en consola de mysql desde el portal
 

Más de grey enterprice (19)

Formulario yesi
Formulario yesiFormulario yesi
Formulario yesi
 
Formulario pancho
Formulario panchoFormulario pancho
Formulario pancho
 
Formulario misa
Formulario misaFormulario misa
Formulario misa
 
Documento de ALTAS
Documento de ALTASDocumento de ALTAS
Documento de ALTAS
 
Formulario ultimo
Formulario ultimoFormulario ultimo
Formulario ultimo
 
MENÚ PRINCIPAL Y FORMULARIO DE ALTAS
MENÚ PRINCIPAL Y FORMULARIO DE ALTAS MENÚ PRINCIPAL Y FORMULARIO DE ALTAS
MENÚ PRINCIPAL Y FORMULARIO DE ALTAS
 
Menú
MenúMenú
Menú
 
MENÚ PRINCIPAL Y FORMULARIO DE ALTAS
MENÚ PRINCIPAL Y FORMULARIO DE ALTAS MENÚ PRINCIPAL Y FORMULARIO DE ALTAS
MENÚ PRINCIPAL Y FORMULARIO DE ALTAS
 
Altas belen
Altas belenAltas belen
Altas belen
 
Formulario Altas
Formulario AltasFormulario Altas
Formulario Altas
 
FORMULARIO (BOTON ALTAS)
FORMULARIO (BOTON ALTAS)FORMULARIO (BOTON ALTAS)
FORMULARIO (BOTON ALTAS)
 
FORMULARIO (BOTON ALTAS)
FORMULARIO (BOTON ALTAS)FORMULARIO (BOTON ALTAS)
FORMULARIO (BOTON ALTAS)
 
FORMULARIO (BOTÓN ALTAS)
FORMULARIO (BOTÓN ALTAS)FORMULARIO (BOTÓN ALTAS)
FORMULARIO (BOTÓN ALTAS)
 
Analisis
AnalisisAnalisis
Analisis
 
Diseño arquitectonico
Diseño arquitectonicoDiseño arquitectonico
Diseño arquitectonico
 
Pantallas
PantallasPantallas
Pantallas
 
Analisis
AnalisisAnalisis
Analisis
 
Diseno arquitectonico
Diseno arquitectonicoDiseno arquitectonico
Diseno arquitectonico
 
Primeros pasos para proponer el desarrollo del sistema
Primeros pasos para proponer el desarrollo del sistemaPrimeros pasos para proponer el desarrollo del sistema
Primeros pasos para proponer el desarrollo del sistema
 

Sistemas gestores bd

  • 1. 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).
  • 2. 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 | +---------+--------+-------+
  • 3. El valor máximo de una columna SELECT 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.
  • 4. 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);
  • 5. 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) );
  • 6. 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),
  • 7. (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
  • 8. 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 shirtG *************************** 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
  • 9. GENERAR UNA PAGINA EN PHP CON ESTILOS 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
  • 10. funcionaria perfecto. El truco está en la línea: Código : header('Content-Type: text/css');