Documentos de Académico
Documentos de Profesional
Documentos de Cultura
0
Sistemas informticos II
Dra. Marta E. Zorrilla
Departamento de Matemtica Aplicada y
Ciencias de la Computacin
Universidad de Cantabria
Curso 2005/06
Tabla de contenidos
Introduccin a MySQL
Crear BDs. Bases de datos del sistema
Usuarios y privilegios
Tipos de datos
Lenguaje de definicin
Lenguaje de manipulacin
Marta Zorrilla
Introduccin
MySQL es un gestor de BDs relacionales
Es Open Source como PostgreSQL, pero este
ltimo es un gestor relacional de objetos.
Ambos utilizan el lenguaje estndar SQL
Ambos son portables (Windows, Mac, Unix,
Linux)
MySQL dispone tambin de licencia comercial
Marta Zorrilla
PostgreSQL vs MySQL
PostgreSQL es un sistema de
BD de mayor nivel, cercano a
Oracle, Sybase o Interbase
Consume bastantes recursos y
carga ms el sistema
Soporta transacciones y desde
la v.7.0 integridad referencial
Soporta un subconjunto de
SQL92 mayor que MySQL
Marta Zorrilla
Marta Zorrilla
Conexin a MySQL
El usuario administrador es root
Inicialmente, al instalarse MySQL el root no tiene
password. Para asignrsele:
# ./mysqladmin u root password new_passwd
Marta Zorrilla
Marta Zorrilla
Marta Zorrilla
Usuarios y privilegios
Se recomienda no utilizar el usuario root para trabajar
con la base de datos. Es mejor crear un usuario, al
menos, por aplicacin Web con los privilegios mnimos
necesarios.
Los niveles de privilegios son:
Marta Zorrilla
10
Marta Zorrilla
11
Marta Zorrilla
12
Rango
Bytes Descripcin
TINYINT
-127 128
o 0..255
Enteros muy
pequeos
BIT
BOOL
01
1 bit
Entero 0 1
SMALLINT
-32768 .. 32767 o
0 .. 65535
Enteros
pequeos
MEDIUMINT
-8388608 .. 8388607
0 .. 16777215
Entero
INT o INTEGER
-2147483648 .. 2147483647 4
0 .. 4294967295.
Entero habitual
BIGINT
-9223372036854775808 ..
8
9223372036854775807
0 ..18446744073709551615
Entero grande
Marta Zorrilla
13
Rango
Bytes Descripcin
FLOAT (m)
3.402823466E+38 ..
1.175494351E-38
Coma flotante
precisin
nica
DOUBLE(m,d)
1.7976931348623157E+308 ..
2.2250738585072014E-308
Coma flotante
precisin
nica
DOUBLE
1.7976931348623157E+308 ..
PRECISION (m,d) 2.2250738585072014E-308
Sinnimo de
DOUBLE
REAL (m,d)
Sinnimo de
DOUBLE
m+2
Flotante
almacenado
como char
1.7976931348623157E+308 ..
2.2250738585072014E-308
14
Rango
Descripcin
CHAR (m)
1 a 255
Cadena de caracteres
VARCHAR(m)
1 a 255
Char variable
TINYBLOB
TINYTEXT
255
Binario/text pequeo
65.535
Hasta 16.777.215
BLOB
TEXT
MEDIUMBLOB
MEDIUMTEXT
LONGBLOB
LONGTEXT
Marta Zorrilla
Rango
Descripcin
DATE
1000-01-01 A
9999-12-31
FECHA YYYY-MM-DD
TIME
-838:59:59 A
838:59:59
HORA EN HH:MM:SS
DATETIME
TIMESTAMP [(m)]
YEAR [(2|4)]
1901-2155
Marta Zorrilla
Ao con 2 4 dgitos
16
Mximo
Descripcin
valores en lista
ENUM
65.535
SET
64
Marta Zorrilla
17
Instrucciones de definicin
Las IDD comprenden todas las operaciones necesarias
para implantar y mantener un esquema relacional.
Con ellas, se describen los datos y su agrupamiento
formando tablas, as como las restricciones que deben
cumplir.
Las IDD permiten crear, modificar y eliminar tablas, as
como todos los componentes que las definen: campos,
ndices, claves, etc. y las restricciones que sean precisas.
Principales instrucciones:
CREATE | ALTER | DROP DATABASE
CREATE | ALTER | DROP TABLE
CREATE | DROP INDEX
Marta Zorrilla
18
Tablas transaccionales
Marta Zorrilla
19
create_definition:
col_name type [NOT NULL | NULL] [DEFAULT default_value]
[AUTO_INCREMENT]
[PRIMARY KEY] [reference_definition]
or PRIMARY KEY (index_col_name,...)
or KEY [index_name] (index_col_name,...)
or INDEX [index_name] (index_col_name,...)
or UNIQUE [INDEX] [index_name] (index_col_name,...)
or FULLTEXT [INDEX] [index_name] (index_col_name,...)
or [CONSTRAINT symbol] FOREIGN KEY index_name
(index_col_name,...) [reference_definition]
or CHECK (expr)
Marta Zorrilla
20
Marta Zorrilla
21
ndices en MySQL
CREATE [UNIQUE|FULLTEXT] INDEX index_name
ON tbl_name (col_name [(length)],... )
Marta Zorrilla
22
Modificacin de tablas
ALTER [IGNORE] TABLE tbl_name alter_spec [, alter_spec ...]
alter_spec:
ADD [COLUMN] create_definition [FIRST | AFTER column_name ]
or ADD [COLUMN] (create_definition, create_definition,...)
or ADD INDEX [index_name] (index_name,...)
or ADD PRIMARY KEY (index_col_name,...)
or ADD UNIQUE [index_name] (index_col_name,...)
or ADD FULLTEXT [index_name] (index_col_name,...)
or ADD [CONSTRAINT symbol] FOREIGN KEY index_name (index_col_name,...)
[reference_definition]
or ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}
or CHANGE [COLUMN] old_col_name create_definition
or MODIFY [COLUMN] create_definition
or DROP [COLUMN] col_name
or DROP PRIMARY KEY
or DROP INDEX index_name
or RENAME [TO] new_tbl_name
or ORDER BY col
or table_options
Marta Zorrilla
23
Borrar db/tablas/ndices
DROP [DATABASE | TABLE | INDEX] name
Marta Zorrilla
24
TABLETABLE
Lineas (
IDD
III
IDD CREATE
III :: CREATE
CREATE
TABLE
Escribir las instrucciones SQL necesarias para construir
numped
NOT
NULL,
Ejemplos
numpedINTEGER
INTEGERUNSIGNED
UNSIGNEDla
NOT
Ejemplos
baseNULL,
de datos cuyo esquema de relaciones es:
numlin
numlinSMALLINT
SMALLINTUNSIGNED
UNSIGNEDNOT
NOTNULL,
NULL,
codigart
codigartCHAR(6)
CHAR(6)NOT
NOTNULL,
NULL,
unilin
FLOAT
NOT
unilin
FLOAT
NOTNULL,
NULL,
CREATE
TABLE
Pedidos
CREATE TABLE Pedidos( (
preunilin
REAL
NOT
preunilin
REALUNSIGNED
NOTNULL,
NULL,NOT NULL,
numped
INTEGER
CREATE
TABLE
Proveedores
( ( NULL,
numped
INTEGER
UNSIGNED
NOT
CREATE TABLE Proveedores
desculin
FLOAT
NOT
NULL,
desculin
FLOAT
NOT
NULL,
codigpro
CHAR(4)
NOT
NULL,
codigpro
CHAR(4)
NOT
codigpro
CHAR(4)
NOT
NULL,
codigpro CHAR(4) NOTNULL,
NULL,
PRIMARY
KEY
(numped,
numlin),
PRIMARY
KEY
(numped,
numlin),
fechaped
DATE
NOT
NULL,
cifpro
CHAR(12)
NOT
NULL,
fechaped
DATE
NOT
NULL,
cifpro CHAR(12) NOT NULL,
INDEX
Lineas_FKIndex1(numped),
INDEX
Lineas_FKIndex1(numped),
ivaped
FLOAT
NULL,
nombrpro
CHAR(30)
NOT
ivaped
FLOATNOT
NOT
NULL,
nombrpro
CHAR(30)
NOTNULL,
NULL,
INDEX
Lineas_FKIndex2(codigart),
INDEX
Lineas_FKIndex2(codigart),
fentrped
DATE
NOT
direcpro
NOT
fentrped
DATE
NOTNULL,
NULL,
direcproCHAR(30)
CHAR(30)
NOTNULL,
NULL,
FOREIGN
KEY
(numped)
FOREIGN
KEY
(numped)
PRIMARY
KEY
(numped),
cpostpro
CHAR(5)
NOT
PRIMARY
KEY
(numped),
cpostpro
CHAR(5)
NOTNULL,
NULL,
REFERENCES
Pedidos
(numped)
CREATE
TABLE
Articulos
((
REFERENCES
Pedidos
(numped)
CREATE
TABLE
Articulos
INDEX
Pedidos_FKIndex1(codigpro),
faxpro
CHAR(15)
NULL,
INDEXfaxpro
Pedidos_FKIndex1(codigpro),
CHAR(15) NULL,
ON
DELETE
NO
ACTION
codigart
CHAR(6)
ON
DELETE
NO
ACTIONNOT
codigart
CHAR(6)
NOTNULL,
NULL,
FOREIGN
KEY
(codigpro)
emailpro
CHAR(25)
NULL,
FOREIGN
KEY
(codigpro)
emailpro CHAR(25) NULL,
ON
NO
ACTION,
descrart
CHAR(40)
NOT
ONUPDATE
UPDATE
NO
ACTION,
descrart
CHAR(40)
NOTNULL,
NULL,
REFERENCES
Proveedores
(codigpro)
procepro
(No
UE)
REFERENCES
Proveedores
proceproENUM
ENUM
(NoUE,
UE,(codigpro)
UE)DEFAULT
DEFAULTUE,
UE,
FOREIGN
KEY
(codigart)
preunart
REAL
NOT
NULL,
FOREIGN
KEY
(codigart)
preunart
REAL NOT NULL,
ON
DELETE
NO
ACTION
KEY(codigpro),
ONPRIMARY
DELETE
NO
ACTION
PRIMARY KEY(codigpro),
REFERENCES
Articulos
(codigart)
stockart
FLOAT
NULL,
REFERENCES
Articulos
(codigart)
stockart
FLOATNOT
NOT
NULL,
ON
UPDATE
NO
ACTION
UNIQUE
INDEX
Proveedores_cif
ON UNIQUE
UPDATEINDEX
NO ACTION
Proveedores_cif(cifpro)
(cifpro)
ON
DELETE
NO
ACTION
PRIMARY
KEY
(codigart)
ON
DELETE
NO
ACTION
PRIMARY
KEY
(codigart)
) )ENGINE=InnoDB;
) )ENGINE=InnoDB;
ENGINE=InnoDB;
ENGINE=InnoDB;
ON
NO
) )ENGINE=InnoDB;
ONUPDATE
UPDATE
NOACTION
ACTION
ENGINE=InnoDB;
Zorrilla
)Marta
)ENGINE=InnoDB;
ENGINE=InnoDB;
25
Comandos en MySQL
mysql> show tables;
lista tablas de BD
mysql> show columns;
show fields
mysql> show databases;
mysql> describe tbl_name; describe tabla
mysql> source fichero.sql;
- ejecuta instrucciones
Marta Zorrilla
26
Instrucciones de manipulacin
Las IMD permiten actuar sobre los propios datos.
Las operaciones bsicas de manipulacin de datos son:
insertar, modificar, borrar y consultar.
Las tres primeras permiten alterar el contenido de la base
de datos.
La ltima consiste en localizar datos para su observacin.
Principales instrucciones:
INSERT
UPDATE
DELETE
SELECT
Marta Zorrilla
27
IMD
IMD II :: INSERT
INSERT
INSERT
INSERT INTO
INTOdestino
destino [(campo1[,
[(campo1[,campo2[,
campo2[,...]])]
...]])]
VALUES
VALUES(valor1[,
(valor1[,valor2[,
valor2[,...]])
...]])
La sintaxis para insertar varias filas es:
INSERT
INSERTINTO
INTOdestino
destino[(campo1[,
[(campo1[,campo2[,
campo2[,...]])]
...]])]
Instruccin_SELECT
Instruccin_SELECT
destino: es el nombre de la tabla o consulta (de seleccin) donde se van a aadir filas.
campo1, campo2: son los nombres de los campos donde se van a aadir los datos.
valor1, valor2: son los valores que tomarn los campos en la nueva fila que se van a insertar. Cada valor
se asigna al campo que corresponde a la posicin del valor en la lista, as, valor1 se asigna al campo1,
valor2 al campo2, y as sucesivamente. Por su frecuencia, cabe mencionar que los valores que se asignen a
campos de texto deben escribirse entre comillas simples ("texto").
Instruccin_SELECT: es la instruccin SELECT cuya ejecucin proporcionar las filas a insertar.
Marta Zorrilla
28
IMD
IMD II
II :: UPDATE
UPDATE
Permite modificar informacin existente en una o varias filas de una tabla.
Su sintaxis es:
UPDATE
UPDATEtabla
tablaSET
SETcampo1=nuevovalor1
campo1=nuevovalor1[,[,campo2=nuevovalor2
campo2=nuevovalor2[,[,...]]
...]]
[WHERE
[WHEREcondicin]
condicin]
tabla: es el nombre de la tabla en la que se desea modificar datos.
campo1, campo2: son los nombres de los campos que van a modificar su valor.
nuevovalor1, nuevovalor2: son expresiones que determinan los valores que van a tomar los
campos de las filas que se van a actualizar.
condicin: es una expresin lgica que determina qu filas se actualizarn. Slo se
actualizarn las filas que satisfagan la expresin. Si no se incluye clusula WHERE (no hay
condicin) se modificarn todas las filas de la tabla.
Marta Zorrilla
29
IMD
IMD III
III :: DELETE
DELETE
Permite eliminar una o varias filas de una tabla. Su sintaxis es:
DELETE
DELETEFROM
FROMtabla
tabla [WHERE
[WHEREcondicin]
condicin]
Marta Zorrilla
30
IMD
IMD IV
IV :: INSERT,
INSERT, UPDATE,
UPDATE, DELETE
DELETE
Ejemplos
Ejemplos
Incorporar el e-mail del proveedor Luis Gil Laso, con valor mailto:gil@unican.es.
UPDATE
UPDATEProveedores
Proveedores SET
SETemailpro="mailto:gil@unican.es"
emailpro="mailto:gil@unican.es"
WHERE
codigpro=P004
WHERE codigpro=P004
Marta Zorrilla
31
IMD
IMD V
V :: SELECT
SELECT
Est dedicada a obtener informacin de la base de datos. El resultado de su
ejecucin, si existe, siempre tiene estructura de una tabla y los campos de sus filas
responden a la lista de seleccin. Tiene enormes posibilidades, lo que hace que su
sintaxis presente muchas variantes.
SELECT
SELECT[ [predicado
predicado] ] Lista_de_seleccin
Lista_de_seleccin
[INTO
[INTOOUTFILE
OUTFILE'nombre_fichero'
'nombre_fichero'opciones_exportacion
opciones_exportacion
| |INTO
INTODUMPFILE
DUMPFILEnombre_fichero]]
nombre_fichero]]
FROM
FROM[nombre_bd].lista_de_tablas
[nombre_bd].lista_de_tablas
[WHERE
[WHEREcondicin
condicin] ]
[GROUP
[GROUPBY
BYlista_campos_group_by]
lista_campos_group_by]
[HAVING
[HAVINGcondicin_group_by]
condicin_group_by]
[ORDER
[ORDERBY
BYcolum1
colum1{ {[ASC]
[ASC]| |DESC
DESC} }[,[,colum2
colum2{ {[ASC]
[ASC]| |DESC
DESC},},....
....] ]] ]
[LIMIT
[LIMIT[offset,]
[offset,]nro_filas]
nro_filas]
Marta Zorrilla
32
IMD
IMD VI
VI :: SELECT
SELECT
predicado: puede tomar uno de los siguientes valores: ALL, DISTINCT o DISTINCTROW. Si no especifica
ninguno, el valor predeterminado es ALL.
Lista_de_seleccin: es el conjunto de los elementos que sern aportados como respuesta. stos, pueden ser
expresiones y funciones separados por comas, aunque generalmente responden a una de las siguientes alternativas:
{ * | tabla.* | [tabla.]campo1 [AS alias1] [, [tabla.]campo2 [AS alias2] , ...] }
o * especifica que se seleccionan todos los campos de la tabla o tablas a las que se accede.
o tabla: es el nombre de la tabla que contiene los campos de la que se van a seleccionar los registros.
o campo1, campo2: son los nombres de los campos que contienen los datos que desea recuperar.
o alias1, alias2: Los nombres que se van a utilizar como encabezados de columnas en vez de los nombres de
columnas originales en tabla.
nombre_fichero: es el nombre del fichero que se crear en el servidor y donde se escribirn las filas de datos.
lista_de_tablas: representa el nombre de la tabla o las tablas que contienen los datos a los que se desea acceder.
base_datos_externa: es la ruta de acceso a la base de datos que contiene las tablas de la lista_de_tablas que no
estn en la base de datos activa.
condicin: es una expresin lgica con los criterios de seleccin de registros.
lista_campos_group_by: son los nombres de los campos que se van a utilizar para agrupar los registros.
condicin_group_by: son las condiciones que se imponen sobre el criterio de agrupamiento.
colum1, colum2: son nombres de elementos de la lista de seleccin o la posicin que ocupan en ella. ASC quiere
decir ordenacin ascendente (es la opcin por defecto) y DESC significa ordenacin descendente.
Limit permite especificar el nmero de filas a devolver comenzando en offset y hasta el nro_filas.
Marta Zorrilla
33
IMD
IMD VII
VII :: SELECT
SELECT
Con Operadores
Con Pred. BETWEEN... AND...
Con Pred. IN (lista_de_valores)
Con Pred. LIKE cadena_caracteres
Con Pred. NULL
Bsquedas
Bsquedas
Sencillas
Sencillas
Condiciones
Condiciones de
de
Comparacin
Comparacin
Bsquedas
Bsquedas
Cualificadas
Cualificadas
Condiciones
Condiciones de
de
Combinacin
Combinacin
Condiciones
Condiciones de
de
Subsentencia
Subsentencia
Simple
Mltiple
Autocombinacin
Combinacin
Externa
De Comparacin
Con Predicado IN
Con Predicado EXISTS
Marta Zorrilla
34
IMD
IMD VIII
VIII :: SELECT
SELECT
Funciones
Funciones de
de Grupo
Grupo
Funciones
Funciones de
de Fecha
Fecha
Agrupamiento
Agrupamiento de
de Datos
Datos
Condicin
Condicin de
de Agrupamiento
Agrupamiento
Ordenacin
Ordenacin del
del Resultado
Resultado
Guardar
Guardar Resultado
Resultado
en
en fichero
fichero
Unin
Unin de
de Sentencias
Sentencias
Marta Zorrilla
35
IMD
IMD IX
IX :: SELECT
SELECT
Bsquedas
Bsquedas Sencillas
Sencillas (Ejemplos)
(Ejemplos)
Marta Zorrilla
36
IMD
IMD X
X :: SELECT
SELECT
Bsquedas
Bsquedas Cualificadas.
Cualificadas. Cond.
Cond. de
de Comparacin
Comparacin 11
(Ejemplos)
(Ejemplos)
Las condiciones de comparacin son expresiones lgicas que permiten comparar una
columna o expresin con otra columna, expresin o lista de columnas. Pueden adoptar
una de las formas siguientes:
exp
expoperador_de_comparacin
operador_de_comparacinexp
exp
exp
exp[NOT]
[NOT]BETWEEN
BETWEENexp
expAND
ANDexp
exp
exp
exp[NOT]
[NOT]IN
IN(lista
(listade
devalores)
valores)
campo
campo[NOT]
[NOT]LIKE
LIKE "cadena_de_caracteres"
"cadena_de_caracteres"
campo
campoIS
IS[NOT]
[NOT]NULL
NULL
Encontrar los artculos cuyo precio unitario sea superior a 180 y su stock sea
inferior o igual a 100.
SELECT
SELECT** FROM
FROMArticulos
Articulos
WHERE
WHEREpreunart
preunart>>180
180AND
ANDstockart
stockart<=
<=100
100
Marta Zorrilla
37
IMD
IMD XI:
XI: SELECT
SELECT
Bsquedas
Bsquedas Cualificadas.
Cualificadas. Cond.
Cond. de
de Comparacin
Comparacin 22
(Ejemplos)
(Ejemplos)
Listar los artculos cuyo precio unitario est comprendido entre 180 y 300 .
SELECT
SELECT** FROM
FROMArticulos
Articulos
WHERE
WHEREpreunart
preunartBETWEEN
BETWEEN180
180AND
AND300
300
Marta Zorrilla
38
IMD
IMD XII
XII :: SELECT
SELECT
Bsquedas
Bsquedas Cualificadas.
Cualificadas. Cond.
Cond. de
de Comparacin
Comparacin 33
(Ejemplos)
(Ejemplos)
Encontrar todos los proveedores cuyo primer apellido comience por la letra A.
SELECT
SELECTcodigpro,
codigpro,nombrpro,
nombrpro,direcpro,
direcpro,cpostpro,
cpostpro,localpro
localproFROM
FROMProveedores
Proveedores
WHERE
WHEREnombrpro
nombrproLIKE
LIKEA%
A%
Hallar todos los proveedores de los que no se tenga informacin sobre su correo
electrnico.
SELECT
SELECTcodigpro,
codigpro,nombrpro,
nombrpro,direcpro,
direcpro,cpostpro,
cpostpro,localpro,
localpro,telefpro
telefpro
FROM
FROMProveedores
Proveedores
WHERE
WHEREemailpro
emailproIS
ISNULL
NULL
Marta Zorrilla
39
IMD
IMD XIII
XIII :: SELECT
SELECT
Bsquedas
Bsquedas Cualificadas.
Cualificadas. Cond.
Cond. de
de Combinacin
Combinacin
Combinacin
Simple
(Ejemplo)
Combinacin Simple (Ejemplo)
Las bsquedas cualificadas son las que afectan a datos de ms de una tabla.
Una
Una Combinacin
Combinacin Simple
Simple es
es aquella
aquella en
en lala que
que lala condicin
condicin de
de lala clusula
clusula
FROM
FROM (o
(o WHERE)
WHERE) contiene
contiene una
una comparacin
comparacin de
de igualdad
igualdad entre
entre campos
campos
pertenecientes
pertenecientesaados
dostablas
tablasdistintas.
distintas.
Listar todos los proveedores a los que se ha efectuado algn pedido entre el 20/1/2002 y
el 15/9/2002.
SELECT
SELECTDISTINCT
DISTINCTProveedores.codigpro,
Proveedores.codigpro,nombrpro,
nombrpro,direcpro,
direcpro,localpro
localpro
FROM
FROMProveedores
ProveedoresINNER
INNERJOIN
JOINPedidos
Pedidos
ON
ONProveedores.codigpro
Proveedores.codigpro==Pedidos.codigpro
Pedidos.codigpro
WHERE
WHEREfechaped
fechapedBETWEEN
BETWEEN2002/01/20"
2002/01/20"AND
AND"2002/09/15"
"2002/09/15"
Marta Zorrilla
40
IMD
IMD XIV
XIV :: SELECT
SELECT
Bsquedas
Bsquedas Cualificadas.
Cualificadas. Cond.
Cond. de
de Combinacin
Combinacin
Combinacin
Simple
(Ejemplo.
Continuacin)
Combinacin Simple (Ejemplo. Continuacin)
SELECT
SELECT DISTINCT
DISTINCTProveedores.codigpro,
Proveedores.codigpro,nombrpro,
nombrpro,direcpro,
direcpro,localpro
localpro
FROM
FROMProveedores
Proveedores INNER
INNERJOIN
JOIN Pedidos
Pedidos
ON
ONProveedores.codigpro
Proveedores.codigpro==Pedidos.codigpro
Pedidos.codigpro
WHERE
WHEREfechaped
fechapedBETWEEN
BETWEEN20/01/2002
20/01/2002AND
AND15/09/2002
15/09/2002
Proveedores
Informacin
de proceso
Marta Zorrilla
codigpro cifpro
P001
P001
P001
P001
codigpro
P002
P001
P002
P001
P002
codigpro
P002
P002
P003
P003
P001
P003
P001
P003
P002
P003
P004
P004
P004
P004
nombrpro
Pedidos
...
numped
...
...
...
... .. .
...
.. .. ..
.. .. ..
........ .
.. .. ..
...
...
...
...
...
...
...
1
2
3
4
numped
1
12
43
numped
24
3
11
42
23
4
1
2
3
4
fechaped
codigpro
...
22/05/2002
P001
Pedidos
10/06/2002
P002
15/10/2002
P003
13/08/2002
P001
fechaped
codigpro
22/05/2002
P001
Pedidos
22/05/2002
10/06/2002 P001
P002
13/08/2002
P001
15/10/2002
P003
fechaped
10/06/2002
P002
13/08/2002 codigpro
P001
15/10/2002
P003
22/05/2002 P001
P001
22/05/2002
10/06/2002 P001
P002
13/08/2002
15/10/2002
P003
10/06/2002
P002
13/08/2002
P001
22/05/2002
P001
10/06/2002
P002
15/10/2002
P003
13/08/2002
P001
...
...
...
. .. .. .
...
......
......
........ .
.........
. .. .. .
. .. .. .
...
...
...
...
...
41
IMD
IMD XV
XV :: SELECT
SELECT
Bsquedas
Bsquedas Cualificadas.
Cualificadas. Cond.
Cond. de
de Combinacin
Combinacin
Combinacin
Mltiple
(Ejemplo)
Combinacin Mltiple (Ejemplo)
Una
UnaCombinacin
CombinacinMltiple
Mltiplees
esaquella
aquella
combinacin
combinacin que
que relaciona
relaciona varios
varios
campos
camposde
dems
msde
dedos
dostablas.
tablas.
Encontrar todos los artculos que han sido pedidos entre el 15/5/2002 y el 30/5/2002.
SELECT
SELECTDISTINCT
DISTINCTArticulos.codigart,
Articulos.codigart,descrart
descrart
FROM
FROMPedidos
PedidosINNER
INNERJOIN
JOIN
(Lineas
(Lineas INNER
INNERJOIN
JOINArticulos
ArticulosON
ONLineas.codigart
Lineas.codigart==Articulos.codigart)
Articulos.codigart)
ON
ONPedidos.numped
Pedidos.numped==Lineas.numped
Lineas.numped
WHERE
WHEREfechaped
fechapedBETWEEN
BETWEEN2002/05/15
2002/05/15AND
AND2002/05/30
2002/05/30
Marta Zorrilla
42
IMD
IMD XVI
XVI :: SELECT
SELECT
Bsquedas
Bsquedas Cualificadas.
Cualificadas. Cond.
Cond. de
de Combinacin
Combinacin
Autocombinacin
(Ejemplo)
Autocombinacin (Ejemplo)
Una
UnaAutocombinacin
Autocombinacines
esuna
unacombinacin
combinacinde
deuna
unatabla
tablacon
conella
ellamisma.
misma.
Localizar todos los pedidos que tienen varias lneas del mismo artculo.
SELECT
SELECTx.numped,
x.numped,x.numlin,
x.numlin,x.codigart
x.codigart
FROM
FROMLineas
Lineasx,x,Lineas
Lineasyy
WHERE
WHEREx.numped
x.numped ==y.numped
y.numped AND
AND x.numlin
x.numlin<>
<>y.numlin
y.numlin
AND
ANDx.codigart
x.codigart==y.codigart
y.codigart
Marta Zorrilla
43
IMD
IMD XVI
XVI :: SELECT
SELECT
Bsquedas
Bsquedas Cualificadas.
Cualificadas. Cond.
Cond. de
de Combinacin
Combinacin
Autocombinacin
(Ejemplo)
Autocombinacin (Ejemplo)
Localizar todos los pedidos que tienen varias lneas del mismo artculo.
SELECT
SELECT x.numped,
x.numped,x.numlin,
x.numlin,x.codigart
x.codigart
FROM
FROMLineas
Lineasx,x,Lineas
Lineasyy
WHERE
WHERE x.numped
x.numped ==y.numped
y.numped AND
AND x.numlin
x.numlin<>
<>y.numlin
y.numlin
AND
AND x.codigart
x.codigart==y.codigart
y.codigart
Informacin
de proceso
Marta Zorrilla
Acceso X
Acceso Y
Acceso X
Acceso X
Acceso Y
Acceso Y
44
IMD
IMD XVII
XVII :: SELECT
SELECT
Bsquedas
Bsquedas Cualificadas.
Cualificadas. Cond.
Cond. de
de Combinacin
Combinacin
Combinacin
Externa
(Ejemplo)
Combinacin Externa (Ejemplo)
Una
Una Combinacin
Combinacin Externa
Externa es
es aquella
aquella que
que da
da preferencia
preferencia aa una
una tabla
tabla
con
con respecto
respecto aa otra.
otra. As,
As, las
las filas
filas de
de lala tabla
tabla dominante
dominante sern
sern
seleccionadas
seleccionadasaunque
aunquelalacondicin
condicinde
deenlace
enlaceno
nose
sehaya
hayaverificado.
verificado.
Listar todos los proveedores indicando, en su caso, los que han recibido algn pedido.
SELECT
SELECTProveedores.codigpro,
Proveedores.codigpro,nombrpro,
nombrpro,Pedidos.numped
Pedidos.numped
FROM
FROMProveedores
ProveedoresLEFT
LEFTJOIN
JOINPedidos
Pedidos
Preferencia a la
tabla de la izquierda
ON
ON Proveedores.codigpro
Proveedores.codigpro==Pedidos.codigpro
Pedidos.codigpro
SELECT
SELECTProveedores.codigpro,
Proveedores.codigpro,nombrpro,
nombrpro,Pedidos.numped
Pedidos.numped
FROM
FROMPedidos
PedidosRIGHT
RIGHTJOIN
JOINProveedores
Proveedores
ON
ON Proveedores.codigpro
Proveedores.codigpro==Pedidos.codigpro
Pedidos.codigpro
Marta Zorrilla
Preferencia a la
tabla de la derecha
45
IMD
IMD XVIII
XVIII :: SELECT
SELECT
Bsquedas
Bsquedas Cualificadas.
Cualificadas. Cond.
Cond. de
de Subsentencias
Subsentencias
(Ejemplo
de
comparacin)
(Ejemplo de comparacin)
La
Lainstruccin
instruccinSELECT
SELECTpermite
permitecontrastar
contrastaruna
unaexpresin
expresinooun
uncampo
campocon
conelelresultado
resultado
de
otra
instruccin
(subsentencia)
SELECT.
A
este
contraste
se
le
llama
condicin
de otra instruccin (subsentencia) SELECT. A este contraste se le llama condicinde
de
subsentencia
subsentenciayylas
lasdos
dosinstrucciones
instruccionesse
sellaman
llamaninstrucciones
instruccionesimbricadas.
imbricadas.AAsu
suvez,
vez,lala
subsentencia
subsentenciapuede
puedeincluir
incluiren
ensu
sucondicin
condicinaaotra
otrasubsentencia
subsentenciayyas
assucesivamente.
sucesivamente.
Las
condiciones
de
subsentencia
pueden
adoptar
una
de
las
formas
siguientes:
Las condiciones de subsentencia pueden adoptar una de las formas siguientes:
exp
exp operador_de_comparacin
operador_de_comparacin{ALL
{ALL| |[ANY
[ANY| |SOME]
SOME]}} (instruccin
(instruccinSELECT)
SELECT)
exp
exp [NOT]
[NOT]IN
IN (instruccin
(instruccinSELECT)
SELECT)
campo
campo [NOT]
[NOT]EXISTS
EXISTS (instruccin
(instruccinSELECT)
SELECT)
Encontrar los artculos cuyo stock es mayor que toda cantidad pedida del mismo artculo.
SELECT
SELECTarticulos.codigart,
articulos.codigart,descrart,
descrart,stockart
stockartFROM
FROMArticulos
Articulos
WHERE
WHEREstockart
stockart>>ALL
ALL(SELECT
(SELECTunilin
unilin FROM
FROMLineas
Lineas
WHERE
WHEREArticulos.codigart
Articulos.codigart==Lineas.codigart)
Lineas.codigart)
Marta Zorrilla
46
IMD
IMD XIX
XIX :: SELECT
SELECT
Bsquedas
Bsquedas Cualificadas.
Cualificadas. Cond.
Cond. de
de Subsentencias
Subsentencias..
(Ejemplos
(Ejemplos con
con predicados
predicados IN
IN yy EXIST)
EXIST)
SELECT
SELECTDISTINCT
DISTINCTArticulos.codigart,
Articulos.codigart,descrart
descrart FROM
FROMArticulos
Articulos
WHERE
WHEREArticulos.codigart
Articulos.codigartNOT
NOTIN
IN(SELECT
(SELECTLineas.codigart
Lineas.codigartFROM
FROMLineas,
Lineas,Pedidos
Pedidos
WHERE
WHEREPedidos.numped
Pedidos.numped==Lineas.numped
Lineas.numped
AND
ANDPedidos.fechaped
Pedidos.fechaped
BETWEEN
BETWEEN24/09/2002
24/09/2002AND
AND21/11/02)
21/11/02)
Encontrar los proveedores de Madrid a los que se les ha realizado algn pedido entre el
24/09/2002 y el 21/11/2002 .
SELECT
SELECTDISTINCT
DISTINCTProveedores.codigpro,
Proveedores.codigpro,nombrpro
nombrproFROM
FROMProveedores
Proveedores
WHERE
WHERE EXISTS
EXISTS ((SELECT
SELECT** FROM
FROMPedidos
Pedidos
WHERE
WHEREProveedores.codigpro
Proveedores.codigpro==Pedidos.codigpro
Pedidos.codigproAND
AND
fechaped
fechapedBETWEEN
BETWEEN2002/09/24
2002/09/24AND
AND2002/11/21)
2002/11/21)
AND
ANDlocalpro
localpro=="Madrid
"Madrid
Marta Zorrilla
47
IMD
IMD XX
XX :: SELECT
SELECT
Funciones
Funciones de
de grupo
grupo (Ejemplo)
(Ejemplo)
Con
Con las
las filas
filas de
de lala informacin
informacin de
de
proceso
proceso correspondiente
correspondiente aa una
una
instruccin
instruccin SELECT
SELECT se
se pueden
pueden
establecer
establecergrupos.
grupos.
En
En cada
cada uno
uno de
de estos
estos grupos,
grupos,
mediante
mediantelas
lasfunciones
funcionesde
degrupo,
grupo,se
se
pueden
puedenefectuar
efectuarciertos
ciertosclculos.
clculos.
Encontrar cuntos artculos hay
registrados, el mximo y el mnimo
precio unitario, el precio unitario
medio y la valoracin del almacn.
COUNT(*)
COUNT(*)
N
N de
de filas
filas que
que componen
componen
elelgrupo.
grupo.
COUNT(campo)
COUNT(campo)
N
N de
de filas
filas con
con valor
valor
asignado
al
campo
(nulos
asignado al campo (nulos
no
nocuentan).
cuentan).
SUM(exp)
SUM(exp)
Suma
Suma de
de valores
valores obtenidos
obtenidos
con
la
expresin
en
con la expresin en cada
cada
fila.
fila.
AVG(exp)
AVG(exp)
MAX(exp)
MAX(exp)
Media.
Media.
Mximo.
Mximo.
MIN(exp)
MIN(exp)
STDEV(exp)
STDEV(exp)
Mnimo.
Mnimo.
Desviacin
Desviacintpica.
tpica.
VAR(exp)
VAR(exp)
Varianza.
Varianza.
SELECT
SELECT COUNT(codigart)
COUNT(codigart)AS
ASCantidad,
Cantidad, MAX(preunart)
MAX(preunart)AS
ASMax,
Max,
MIN(preunart)
MIN(preunart)AS
ASMin,
Min, AVG(preunart)
AVG(preunart)AS
ASPrecio_medio,
Precio_medio,
SUM(preunart*stockart)
SUM(preunart*stockart)AS
ASValoracin
Valoracin
FROM
FROMArticulos
Articulos
Marta Zorrilla
48
IMD
IMD XXI
XXI :: SELECT
SELECT
Funciones
Funciones de
de fecha
fecha (Ejemplo)
(Ejemplo)
Los
Los datos
datos de
de tipo
tipo fecha
fecha son
son
almacenados
almacenadoscomo
comouna
unaunidad
unidadde
de
informacin.
informacin. Cuando
Cuando se
se necesita
necesita
trabajar
trabajar con
con componentes
componentes de
de una
una
fecha,
fecha,es
espreciso
precisoutilizar
utilizarfunciones
funciones
de
defecha.
fecha.
DAYOFMONTH(fecha)
DAYOFMONTH(fecha) Devuelve
Devuelveelelda
dade
demes
mes
de
defecha.
fecha.
MONTH
Devuelve
MONTH(fecha)
(fecha)
Devuelveelelmes
mesde
defecha.
fecha.
YEAR
Devuelve
YEAR(fecha)
(fecha)
Devuelveelelao
aode
defecha.
fecha.
WEEKDAY(fecha)
WEEKDAY(fecha) Devuelve
Devuelve elel da
da de
de lala
semana
semana correspondiente
correspondiente
aa fecha
(el
lunes,
fecha (el 00
lunes,
elel11 martes,
...).
martes, ...).
Marta Zorrilla
49
IMD
IMD XXII
XXII :: SELECT
SELECT
Agrupamiento
Agrupamiento de
de datos
datos (Ejemplo)
(Ejemplo)
La
La clusula
clusula GROUP
GROUP permite
permite formar
formar grupos
grupos con
con las
las filas
filas de
de datos
datos que
que
tengan
tenganvalores
valoresiguales
igualespara
paradeterminados
determinadoscampos.
campos.
La
La respuesta
respuesta tiene
tiene tantas
tantas filas
filas como
como grupos
grupos haya
haya establecido
establecido lala
instruccin.
instruccin.
Marta Zorrilla
50
IMD
IMD XXIII
XXIII :: SELECT
SELECT
Agrupamiento
Agrupamiento de
de Datos.
Datos. Cond.
Cond. de
de agrupamiento
agrupamiento
(Ejemplo)
(Ejemplo)
Listar el importe, sin aplicar el IVA, de los pedidos que tienen ms de una lnea.
SELECT
SELECTnumped,
numped,SUM((preunilin
SUM((preunilin**unilin)
unilin)**(1-desculin/100))
(1-desculin/100))as
asImporte
Importe
FROM
FROMLineas
Lineas
GROUP
GROUPBY
BYnumped
numped
HAVING
HAVINGCOUNT(
COUNT(**))>>11
Marta Zorrilla
51
IMD
IMD XXIV
XXIV :: SELECT
SELECT
Ordenacin
Ordenacin del
del Resultado
Resultado (Ejemplo)
(Ejemplo)
[ORDER
[ORDERBY
BYcolum1
colum1{{[ASC]
[ASC]| |DESC
DESC}}[,[,colum2
colum2{{[ASC]
[ASC]| |DESC
DESC},},....
....] ]] ]
colum1,
colum1,colum2,
colum2,...:
...: son
sonnombres
nombres de
de elementos
elementos (campos,
(campos, expresiones
expresiones
oofunciones)
funciones)de
delalalista
listade
deseleccin
seleccinoolalaposicin
posicinque
queocupan
ocupanen
enella.
ella.
ASC:
ASC:quiere
quieredecir
decirordenacin
ordenacinascendente
ascendente(opcin
(opcinpor
pordefecto)
defecto)yyDESC
DESC
descendente.
descendente.
Listar los valores de los campos que componen el ndice de unicidad de la tabla
Lineas (numped, numlin), por orden decreciente de n de pedido y de n de lnea.
SELECT
SELECTnumped,
numped,numlin
numlin
FROM
FROMLineas
Lineas
ORDER
ORDERBY
BY11DESC,
DESC,22DESC
DESC
Marta Zorrilla
52
IMD
IMD XXV
XXV :: SELECT
SELECT
Guardar
Guardar Resultado
Resultado en
en un
un fichero
fichero (Ejemplo)
(Ejemplo)
INTO
INTOOUTFILE
OUTFILEfichero
ficheroopciones
opciones
Crea un fichero con nombre result.text con los datos del todos los proveedores. El
Select no permite guardar su resultado en tabla temporal.
SELECT
SELECT**
INTO
INTOOUTFILE
OUTFILEc:/tmp/result.text'
c:/tmp/result.text'
FIELDS
FIELDSTERMINATED
TERMINATEDBY
BY','','OPTIONALLY
OPTIONALLYENCLOSED
ENCLOSEDBY
BY'"''"'
LINES
LINESTERMINATED
TERMINATEDBY
BY'\n'
'\n'
FROM
FROMProveedores
Proveedores
Cargar el fichero en la tabla.
LOAD
LOADDATA
DATAINFILE
INFILE"c:/temp/proveedores.txt"
"c:/temp/proveedores.txt"
INTO
INTOTABLE
TABLEproveedores
proveedores
FIELDS
FIELDSTERMINATED
TERMINATEDBY
BY','','OPTIONALLY
OPTIONALLYENCLOSED
ENCLOSEDBY
BY'"'
'"'
Marta Zorrilla
53
IMD
IMD XXVI
XXVI :: SELECT
SELECT
Unin
Unin de
de Sentencias
Sentencias (Ejemplo)
(Ejemplo)
Permite
Permitecombinar
combinarlos
losresultados
resultadosde
dedos
dosooms
msconsultas.
consultas.Para
Paraello
ellose
se
requiere
requiereeleloperador
operadorUNION.
UNION.
Marta Zorrilla
54
Triggers
Cursors: de solo lectura y no scrolling
Vistas actualizables
Transacciones distribuidas
Marta Zorrilla
55
Procedimientos en MySQL
CREATE PROCEDURE sp_name ([proc_parameter[,...]])
[characteristic ...] routine_body
proc_parameter:
type:
characteristic:
LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT 'string'
routine_body:
Marta Zorrilla
Ejemplo procedimiento
delimiter
delimiter//
//
CREATE
IN codigo
CREATEPROCEDURE
PROCEDUREprecio
precio((IN
codigochar(6),
char(6),OUT
OUTprecio
precio
decimal(8,2))
decimal(8,2))
BEGIN
BEGIN
SELECT
=codigo;
SELECTpreunart
preunartINTO
INTOprecio
precioFROM
FROMarticulos
articuloswhere
wherecodigart
codigart=codigo;
END;
END;
//
//
delimiter
delimiter;;
CALL
("0001",@valor);
CALLprecio
precio("0001",@valor);
SELECT
SELECT@valor;
@valor;
Marta Zorrilla
57
Ejemplo procedimiento
CREATE
_pedido(IN codigo
CREATEPROCEDURE
PROCEDUREcalcula
calcula_pedido(IN
codigochar(6),
char(6),OUT
OUTtotal
total
decimal(8,2),
decimal(8,2),OUT
OUTiva
ivadecimal(3,1))
decimal(3,1))
BEGIN
BEGIN
SELECT
preunlin*unilin)*(1-desculin/100)) into
SELECT SUM((
SUM((preunlin*unilin)*(1-desculin/100))
intototal
total
from
fromlineas
lineas
WHERE
=codigo
WHEREnumped
numped=codigo
group
;
groupby
bynumped
numped;
SELECT
SELECTivaped
ivapedinto
intoiva
ivafrom
frompedidos
pedidos
WHERE
=codigo;
WHEREnumped
numped=codigo;
END
END
////
call
_pedido (1,@total,@
iva);
callcalcula
calcula_pedido
(1,@total,@iva);
select
@total
iva/100));
select
@total++(@total
(@total**(@
(@iva/100));
Marta
Zorrilla
58
Funciones en MySQL
CREATE FUNCTION sp_name ([func_parameter[,...]])
RETURNS type
[characteristic ...] routine_body
func_parameter:
type:
param_name type
Marta Zorrilla
59
Ejemplo funcin
drop
dropfunction
functionififexists
existsshowdate
showdate
////
create
() returns
(20)
createfunction
functionshowdate
showdate()
returnsvarchar
varchar(20)
begin
begin
declare
declarel_date
l_datedate;
date;
set
setl_date
l_date==CURDATE();
CURDATE();
return
returnl_date;
l_date;
end
end
////
select
()
selectshowdate
showdate()
Marta Zorrilla
60
Vistas en MySQL
CREATE|ALTER [OR REPLACE] VIEW view_name [(column_list)]
AS select_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]
Marta Zorrilla
61
Ejemplo vista
CREATE
CREATEVIEW
VIEWpedidos_totales
pedidos_totalesAS
AS
SELECT
SELECTnumped,
numped,SUM((preunlin*unilin)*(1-desculin/100))
SUM((preunlin*unilin)*(1-desculin/100))
from
fromlineas
lineas
group
groupby
bynumped;
numped;
----su
suuso
uso
SELECT
SELECT**FROM
FROMpedidos_totales
pedidos_totales
Marta Zorrilla
62
Triggers en MySQL
CREATE [DEFINER = { user | CURRENT_USER }]
TRIGGER trigger_name trigger_time trigger_event ON tbl_name
FOR EACH ROW trigger_stmt
Trigger_time: se activa BEFORE o AFTER de la instruccin que lo activ
Trigger_event : evento que activa el trigger: INSERT, UPDATE o
DELETE
OLD.col_name y NEW.col_name se refieren a los valores antes y
despus de la accin.
Permite actuar sobre otras tablas y sobre valores de la tabla afectada
pero no controlar reglas de negocio. Permite llamar a proc. almacenados
Marta Zorrilla
63
Ejemplo trigger
----CONTROL
CONTROLDE
DELOG.
LOG.SiSise
semodifica
modificaelelprecio
preciode
deun
unartculo
artculoapunto
apunto
cundo
cundoyyquin
quinloloha
hahecho
hechoen
enlalatabla
tablaauditoria_art.
auditoria_art.
CREATE
CREATETRIGGER
TRIGGERtrigger_auditoria_art
trigger_auditoria_artAFTER
AFTERUPDATE
UPDATEON
ONarticulos
articulos
FOR
FOREACH
EACHROW
ROW
BEGIN
BEGIN
INSERT
INSERTINTO
INTOauditoria_art
auditoria_art(codart,
(codart,precio_anterior,
precio_anterior,precio_actual,
precio_actual,
usuario,
usuario,fecha_modificacion)
fecha_modificacion)
VALUES
VALUES(OLD.codart,
(OLD.codart,OLD.preunart,
OLD.preunart,NEW.preunart,CURRENT_USER(),
NEW.preunart,CURRENT_USER(),
NOW()
NOW()););
END;
END;
Marta Zorrilla
64
----ACTUALIZACION
ACTUALIZACIONSOBRE
SOBRELA
LAPROPIA
PROPIATABLA
TABLA
Ejemplo trigger
mysql>
mysql>DELIMITER
DELIMITER////
mysql>
mysql>CREATE
CREATETABLE
TABLEventas
ventas(id
(idINT
INTNOT
NOTNULL
NULLAUTO_INCREMENT,
AUTO_INCREMENT,
->
->item
itemVARCHAR(10),
VARCHAR(10),
->
->valor
valorDECIMAL(9,2),
DECIMAL(9,2),
->
->comision
comisionDECIMAL(7,2),
DECIMAL(7,2),
->
->PRIMARY
PRIMARYKEY(id))
KEY(id))////
mysql>
mysql>CREATE
CREATEPROCEDURE
PROCEDUREcomision(valor
comision(valorDECIMAL(9,2))
DECIMAL(9,2))
->
->BEGIN
BEGIN
->
->SET
SET@comm
@comm:=
:=valor
valor//10;
10;
->
->END;
END;
->
->////
mysql>
mysql>CREATE
CREATETRIGGER
TRIGGERventas_comm
ventas_commBEFORE
BEFOREINSERT
INSERTON
ONventas
ventas
->
->FOR
FOREACH
EACHROW
ROW
->
->BEGIN
BEGIN
->
->CALL
CALLcomision(NEW.valor);
comision(NEW.valor);
->
->SET
SETNEW.comision
NEW.comision==@comm;
@comm;
->
->END;
END;
->
->////
Marta Zorrilla
mysql>
DELIMITER
DELIMITER;;
mysql>
65
Bibliografa
BASES DE DATOS:
BASES DE DATOS:
-Mora, E.; Zorrilla, M.; Daz de Entresotos, J. (2003). Iniciacin a las bases
-Mora, E.; Zorrilla, M.; Daz de Entresotos, J. (2003). Iniciacin a las bases
de datos con Access 2002. Daz de Santos. Madrid.
de datos con Access 2002. Daz de Santos. Madrid.
- Halpin, T. (2001). Information Modeling and Relational Databases. From
- Halpin, T. (2001). Information Modeling and Relational Databases. From
Conceptual Analysis to Logical Design. Morgan Haufmann Publishers.
Conceptual Analysis to Logical Design. Morgan Haufmann Publishers.
- Miguel, A. de; Piattini, M ; Marcos, E. (1999). Diseo de Bases de Datos
- Miguel, A. de; Piattini, M ; Marcos, E. (1999). Diseo de Bases de Datos
Relacionales. ra-ma.
Relacionales. ra-ma.
- Miguel, A. de; Piattini, M. (1999). Fundamentos y modelos de bases de
- Miguel, A. de; Piattini, M. (1999). Fundamentos y modelos de bases de
datos. ra-ma.
datos. ra-ma.
-Silberschatz, A.; Korth, H. F.; Sudarshan, S. (2002). Fundamentos de bases
-Silberschatz, A.; Korth, H. F.; Sudarshan, S. (2002). Fundamentos de bases
de datos. Mc. Graw Hill. Madrid.
de datos. Mc. Graw Hill. Madrid.
MySQL y PHP
MySQL y PHP
- http://dev.mysql.com/
- http://dev.mysql.com/
- Cobo, A. Gmez, P.; Prez, D.; Rocha, R. PHP y MySQL. Tecnologas para
- Cobo, A. Gmez, P.; Prez, D.; Rocha, R. PHP y MySQL. Tecnologas para
el desarrollo de Aplicaciones Web.
el desarrollo de Aplicaciones Web.
66