Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Gestor Mysql Version
Gestor Mysql Version
0
Dra. Marta E. Zorrilla
Departamento de Matemticas, Estadstica
y Computacin
Universidad de Cantabria
Curso 2006/07
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
BD
BDcompras
compras
Finalidad:
Finalidad informatizar el proceso de pedidos de artculos, contemplados en un
cierto catlogo (propio de la empresa), que pueden ser dirigidos a proveedores
ya conocidos.
Estructura
Estructura
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( (
preunlin
REAL
preunlin
REALNOT
NOTNULL,
NULL,NOT NULL,
numped
INTEGER
UNSIGNED
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;
27
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
28
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
29
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
30
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
31
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
32
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
33
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
34
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
35
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
B
squedas
Bsquedas
Sencillas
Sencillas
Condiciones
Condiciones de
de
Comparaci
n
Comparacin
B
squedas
Bsquedas
Cualificadas
Cualificadas
Condiciones
Condiciones de
de
Combinaci
n
Combinacin
Condiciones
Condiciones de
de
Subsentencia
Subsentencia
Simple
Mltiple
Autocombinacin
Combinacin
Externa
De Comparacin
Con Predicado IN
Con Predicado EXISTS
Marta Zorrilla
36
IMD
IMD VIII
VIII :: SELECT
SELECT
Funciones
Funciones de
de Grupo
Grupo
Funciones
Funciones de
de Fecha
Fecha
Agrupamiento
Agrupamiento de
de Datos
Datos
Condici
n de
Condicin
de Agrupamiento
Agrupamiento
Ordenaci
n del
Ordenacin
del Resultado
Resultado
Guardar
Guardar Resultado
Resultado
en
en fichero
fichero
Uni
n de
Unin
de Sentencias
Sentencias
Marta Zorrilla
37
IMD
IMD IX
IX :: SELECT
SELECT
B
squedas Sencillas
Bsquedas
Sencillas (Ejemplos)
(Ejemplos)
Marta Zorrilla
38
IMD
IMD X
X :: SELECT
SELECT
BBsquedas
squedas Cualificadas.
n 11
Cualificadas. Cond.
Cond. de
de Comparaci
Comparacin
(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
39
IMD
IMD XI:
XI: SELECT
SELECT
BBsquedas
squedas Cualificadas.
n 22
Cualificadas. Cond.
Cond. de
de Comparaci
Comparacin
(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
40
IMD
IMD XII
XII :: SELECT
SELECT
BBsquedas
squedas Cualificadas.
n 33
Cualificadas. Cond.
Cond. de
de Comparaci
Comparacin
(Ejemplos)
(Ejemplos)
Encontrar todos los proveedores cuyo primer apellido no comience por la letra Z.
SELECT
SELECTcodigpro,
codigpro,nombrpro,
nombrpro,direcpro,
direcpro,cpostpro,
cpostpro,localpro
localproFROM
FROMProveedores
Proveedores
WHERE
WHEREnombrpro
nombrproNOT
NOTLIKE
LIKEZ%
Z%
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
41
IMD
IMD XIII
XIII :: SELECT
SELECT
BBsquedas
squedas Cualificadas.
n
Cualificadas. Cond.
Cond. de
de Combinaci
Combinacin
Combinaci
n Simple
Combinacin
Simple (Ejemplo)
(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
42
IMD
IMD XIV
XIV :: SELECT
SELECT
BBsquedas
squedas Cualificadas.
n
Cualificadas. Cond.
Cond. de
de Combinaci
Combinacin
Combinaci
n Simple
n)
Combinacin
Simple (Ejemplo.
(Ejemplo. Continuaci
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
BETWEEN2002/01/20
2002/01/20AND
AND2002/09/15
2002/09/15
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
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
...
...
...
. .. .. .
...
......
......
........ .
.........
. .. .. .
. .. .. .
...
...
...
...
...
fechaped
43
IMD
IMD XV
XV :: SELECT
SELECT
BBsquedas
squedas Cualificadas.
n
Cualificadas. Cond.
Cond. de
de Combinaci
Combinacin
Combinaci
n M
ltiple (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
44
IMD
IMD XVI
XVI :: SELECT
SELECT
BBsquedas
squedas Cualificadas.
n
Cualificadas. Cond.
Cond. de
de Combinaci
Combinacin
Autocombinaci
n (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
45
IMD
IMD XVI
XVI :: SELECT
SELECT
BBsquedas
squedas Cualificadas.
n
Cualificadas. Cond.
Cond. de
de Combinaci
Combinacin
Autocombinaci
n (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
46
IMD
IMD XVII
XVII :: SELECT
SELECT
BBsquedas
squedas Cualificadas.
n
Cualificadas. Cond.
Cond. de
de Combinaci
Combinacin
Combinaci
n Externa
Combinacin
Externa (Ejemplo)
(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
47
IMD
IMD XVIII
XVIII :: SELECT
SELECT
BBsquedas
squedas Cualificadas.
Cualificadas. Cond.
Cond. de
de Subsentencias
Subsentencias
(Ejemplo
de
comparaci
n)
(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
48
IMD
IMD XIX
XIX :: SELECT
SELECT
BBsquedas
squedas 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
BETWEEN2002/09/24
2002/09/24AND
AND2002/11/21)
2002/11/21)
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
49
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
50
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
51
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
52
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((preunlin
SUM((preunlin**unilin)
unilin)**(1-desculin/100))
(1-desculin/100))as
asImporte
Importe
FROM
FROMLineas
Lineas
GROUP
GROUPBY
BYnumped
numped
HAVING
HAVINGCOUNT(
COUNT(**))>>11
Marta Zorrilla
53
IMD
IMD XXIV
XXIV :: SELECT
SELECT
Ordenaci
n del
Ordenacin
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
54
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
55
IMD
IMD XXVI
XXVI :: SELECT
SELECT
Uni
n de
Unin
de Sentencias
Sentencias (Ejemplo)
(Ejemplo)
Permite
Permitecombinar
combinarlos
losresultados
resultadosde
dedos
dosooms
msconsultas.
consultas.Para
Paraello
ellose
se
requiere
requiereeleloperador
operadorUNION.
UNION.
Marta Zorrilla
56
Bibliografa
BASES DE DATOS:
BASES DE DATOS:
- Date, C. Introduccin a los sistemas de bases de datos. 8 edicin. Pearson
- Date, C. Introduccin a los sistemas de bases de datos. 8 edicin. Pearson
Educacin. 2004.
Educacin. 2004.
- Krishna Kulkarni. Overview of SQL:2003. Silicon Valley Laboratory
- Krishna Kulkarni. Overview of SQL:2003. Silicon Valley Laboratory
Silicon Valley Laboratory IBM Corporation, San Jose.2003-11-06
Silicon Valley Laboratory IBM Corporation, San Jose.2003-11-06
- Mora, E., Zorrilla, M. E., Daz de Entresotos, J. Iniciacin a las bases de
- Mora, E., Zorrilla, M. E., Daz de Entresotos, J. Iniciacin a las bases de
datos con Access 2002. Daz de Santos, 2003.
datos con Access 2002. Daz de Santos, 2003.
- Silberschatz, A., Korth, H.F., Sudarshan, S., Fundamentos de Bases de
- Silberschatz, A., Korth, H.F., Sudarshan, S., Fundamentos de Bases de
Datos, 5 edicin, Madrid, 2006
Datos, 5 edicin, Madrid, 2006
- Piattini, M., Daz, O. Advanced database technology and design. Artech
- Piattini, M., Daz, O. Advanced database technology and design. Artech
House, cop. 2000. Ullman, J., Widom, J. A First Course in Database Systems
House, cop. 2000. Ullman, J., Widom, J. A First Course in Database Systems
(2nd Edition). Prentice Hall. 2002
(2nd Edition). Prentice Hall. 2002
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.
57
Triggers
Cursors: de solo lectura y no scrolling
Vistas actualizables
Transacciones distribuidas
Marta Zorrilla
58
Aplicaciones de Usuario
El acceso a la la base de datos puede realizarse mediante:
Instrucciones SQL.
Utilidades de manipulacin de datos, sin escribir instrucciones SQL.
Aplicaciones desarrolladas expresamente para cada caso.
stas presentan tres aspectos complementarios pero bien diferenciados:
La interfaz de comunicacin con el usuario.
La lgica de funcionamiento.
Base de datos.
En el caso de Programacin Centralizada las aplicaciones de usuario residen
en un solo sistema, en donde se ejecutan. El usuario accede mediante terminales
remotas o mediante PCs que emulan el funcionamiento de estas terminales.
Mdulos de procesamiento desarrollados mediante:
Lenguajes de 3 generacin (C, Cobol, etc.), con instrucciones SQL embebidas.
Lenguajes de 4 generacin, 4GL (ms declarativos y orientados a datos).
Flujo de Datos
Presentacin
Procesamiento
Base de Datos
(campos de pantalla)
(variables)
(columnas)
persona.dni
persona.dni
persona.nombre
persona.nombre
variable.dni
variable.dni
variable.nombre
variable.nombre
persona.dni
persona.dni
persona.nombre
persona.nombre
persona.direccion
persona.direccion
persona.telefono
persona.telefono
variable.direccion
variable.direccion
variable.telefono
variable.telefono
persona.direccion
persona.direccion
persona.telefono
persona.telefono
Aplicaciones
Aplicacionesde
debases
basesde
dedatos
datosen
enla
laWeb
Web
Scripts de servidor
Son scripts que se ejecutan en el servidor Web y por tanto pueden interactuar con cualquier aplicacin
instalada en el mismo, y en particular con los gestores de bases de datos.
ASP (Active Server Pages) de Microsoft, basadas en VBScript o JScript.
JSP (Java Server Pages) de Sun, basadas en Java.
PHP de Open Source, organismo dedicado a la difusin de programas de dominio pblico.
Servicios Web:
Componentes software con interfaz WSDL e intercambio de datos va SOAP y HTTP
Servlets
: Como
CGI pero en tecnologa Java. Ms eficiente.
Marta
Zorrilla
61
Triggers
Triggers,, procedimientos
procedimientosyyfunciones
funciones
APLICACIONES:
APLICACIONES:
Implementacin
Implementacin de
de reglas
reglas de
de integridad
integridad complejas
complejas
Gestin
Gestin de
de Log
Log (control
(control de
de cambios)
cambios)
Flujos
Flujos de
de trabajo
trabajo oo proceso
proceso
VENTAJAS
Semntica del problema en un solo sitio integridad
Facilita la construccin de aplicaciones
Procedimientos y funciones almacenados
- lgica de negocio compartida por aplicaciones
- reutilizacin de cdigo
- seguridad de acceso a los usuarios
- reduccin del trfico de red
- mantenimiento ms sencillo
INCONVENIENTES
Deben escribirse con cuidado ejecucin infinita de disparos
Control complejo de condiciones
Mayor carga computacional del servidor
Marta Zorrilla
62
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
CREATEPROCEDURE
PROCEDUREupd_precio
upd_precio(IN
(INipc
ipcDECIMAL(3,1))
DECIMAL(3,1))
BEGIN
BEGIN
UPDATE
UPDATEARTICULOS
ARTICULOS
SET
SETPREUNART=
PREUNART=PREUNART
PREUNART+
+(PREUNART
(PREUNART**ipc/100)
ipc/100)
WHERE
WHEREPREUNART
PREUNARTis
isnot
notnull;
null;
END
END$$
$$
delimiter
delimiter;;
call
callupd_precio
upd_precio(10.0);
(10.0);
Marta Zorrilla
64
Funciones en MySQL
CREATE FUNCTION sp_name ([func_parameter[,...]])
RETURNS type
[characteristic ...] routine_body
func_parameter:
type:
param_name type
Marta Zorrilla
65
Ejemplo funcin
CREATE
CREATEfunction
functioncalculo_pedido(codigo
calculo_pedido(codigochar(6))
char(6))returns
returnsfloat
float
READS
READSSQL
SQLDATA
DATA
begin
begin
DECLARE
DECLAREv_total
v_totalfloat;
float;
DECLARE
DECLAREv_iva
v_ivafloat;
float;
SELECT
SELECT SUM((preunlin*unilin)*(1-desculin/100))
SUM((preunlin*unilin)*(1-desculin/100))into
intov_total
v_total
from
fromlineas
lineas
WHERE
WHEREnumped=codigo
numped=codigo
group
groupby
bynumped;
numped;
SELECT
SELECTivaped
ivapedinto
intov_iva
v_ivafrom
frompedidos
pedidos
WHERE
WHEREnumped=codigo;
numped=codigo;
RETURN
RETURNv_total
v_total++(v_total
(v_total**(v_iva/100));
(v_iva/100));
END
END$$
$$
SELECT
Marta
Zorrillaprecio(
SELECT
precio(
'0001'
'0001'),),codigart,
codigart,preunart
preunartFROM
FROMarticulos
articulos
66
Vistas en MySQL
CREATE|ALTER [OR REPLACE] VIEW view_name [(column_list)]
AS select_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]
Marta Zorrilla
67
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
68
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
69
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
70
----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>
71
Transacciones
Por defecto, MySQL se ejecuta con el modo autocommit activado. Esto
significa que en cuanto ejecute un comando que actualice (modifique) una
tabla, MySQL almacena la actualizacin en disco.
Si usa tablas transaccionales (como InnoDB), puede desactivar el modo
autocommit con el siguiente comando:
SET AUTOCOMMIT=0;
Tras deshabilitar el modo autocommit se debe usar COMMIT para almacenar
los cambios en disco o ROLLBACK si quiere ignorar los cambios hechos
desde el comienzo de la transaccin.
Si quiere deshabilitar el modo autocommit para una serie nica de
comandos, puede usar el comando START TRANSACTION:
START TRANSACTION;
SELECT @A:=SUM(salary) FROM table1 WHERE type=1;
UPDATE table2 SET summary=@A WHERE type=1;
COMMIT;
72
Backup
Ejemplos de comandos mysqldump:
Para realizar la copia se seguridad de la base de datos
mibase al fichero copia_seguridad.sql
mysqldump --opt --password=miclave --user=miuser -trigger mibasededatos > archivo.sql
Restaurar la base de datos
mysql --password=miclave --user=miuser mibase <
archivo.sql
Marta Zorrilla
73