Desarrollo de aplicaciones web para bases de datos Almería 2005 mySQL Manuel Torres Gil mtorres@ual.es Departamento de Lenguajes y Computación Universidad de Almería Desarrollo de aplicaciones web para bases de datos Almería 2005 mySQL Contenidos 1. La consola de mySQL 2. Comandos de interés 3. Creación de bases de datos 4. Manipulación de bases de datos 5. mySQL Administrator 1 Desarrollo de aplicaciones web para bases de datos Almería 2005 mySQL Contenidos 1. La consola de mySQL 2. Comandos de interés 3. Creación de bases de datos 4. Manipulación de bases de datos 5. mySQL Administrator La consola de mySQL Introducción mySQL: SGBDR open source Consola mySQL: mysql –u usuario [baseDeDatos] [-pPassword] 2 Desarrollo de aplicaciones web para bases de datos Almería 2005 mySQL Contenidos 1. La consola de mySQL 2. Comandos de interés 3. Creación de bases de datos 4. Manipulación de bases de datos 5. mySQL Administrator Comandos de interés Resumen SHOW DATABASES USE baseDeDatos SELECT DATABASE(): Nombre de la base de datos activa SHOW TABLES DESCRIBE tabla 3 Desarrollo de aplicaciones web para bases de datos Almería 2005 mySQL Contenidos 1. La consola de mySQL 2. Comandos de interés 3. Creación de bases de datos 4. Manipulación de bases de datos 5. mySQL Administrator Creación de bases de datos Creación de tablas CREATE DATABASE baseDeDatos CREATE TABLE nombreTabla ( Columna1 Tipo1 [Restricciones] , ... ColumnaN TipoN [Restricciones] , PRIMARY KEY(Columna1, Columna2, ...) FOREIGN KEY (col1, col2, ...) REFERENCES tabla(columna)); CREATE TABLE CURSOS ( CODIGO INT NOT NULL AUTO_INCREMENT, CURSO VARCHAR(255) NOT NULL, DURACION TINYINT NOT NULL, LUGARTEORIA VARCHAR(255), LUGARPRACTICAS VARCHAR(255), PRECIO DOUBLE, PRIMARY KEY(CODIGO)); 4 Creación de bases de datos Tipos de tablas en mySQL Tablas orientadas a transacciones (TST) •InnoDB •BDB Tablas no orientadas a transacciones (NTST) •HEAP •ISAM •MERGE •myISAM El tipo se especifica opcionalmente al final de la definición CREATE TABLE cursos ( ... ) TYPE=InnoDB; Creación de bases de datos Modificación de tablas ALTER TABLE nombreTabla [ ADD [COLUMN] columna [FIRST | AFTER columna ] ADD PRIMARY KEY (columna1, …) ADD FOREIGN KEY [reference_definition] ALTER [COLUMN] columna {SET DEFAULT literal | DROP DEFAULT} DROP [COLUMN] columna DROP PRIMARY KEY RENAME [TO] nombreTabla] ALTER TABLE CURSOS ADD DESCRIPCION TEXT; ALTER TABLE CURSOS ALTER COLUMN LUGARPRACTICAS SET DEFAULT ‘AULA 7 – CITE III’; 5 Creación de bases de datos Eliminación de tablas. Indices DROP TABLE nombreTabla DROP TABLE cursos; CREATE INDEX nombreIndice ON nombreTabla (col1, ...) ; DROP INDEX nombreIndice ON nombreTabla ; Creación de bases de datos Carga masiva de datos Desde la consola mySQL: LOAD DATA INFILE LOAD DATA INFILE “archivo" [REPLACE|IGNORE] INTO TABLE tabla LOAD DATA INFILE “c:/temp/almacen.txt" INTO TABLE almacen Desde shell: mysqlimport mysqlimport [opciones] BD textfile1 [textfile2 ...] 6 Creación de bases de datos Base de datos de ventas ALMACEN Codigo 1 1 VENTAS Numero CodigoProducto Direccion Condado Estado Zip Distrito Codigo Descripcion Nombre Ciudad PRODUCTO M CodigoPromocion CodigoBarras M Presentacion M Marca CodigoAlmacen Subcategoria Fecha Departamento Ventas Envase UnidadesVendidas 1 Region PROMOCION Codigo Responsable Descripcion Telefono Coste Fax Superficie Creación de bases de datos Consulta de datos SELECT columnas FROM tablas WHERE condiciones [GROUP BY columnas [HAVING condiciones]] [ORDER BY columas] [LIMIT [desde,] n]; select descripcion from producto where departamento = "Food" order by descripcion limit 20, 10; 7 Creación de bases de datos Funciones habituales DAYOFWEEK DAYNAME MONTH MONTHNAME YEAR HOUR MINUTE SECOND NOW() CURDATE() CURTIME() Select subcategoria, sum(ventas), sum(unidadesVendidas) From producto P, ventas V Where P.codigo = V.codigoProducto and Year(Fecha) = “1995” and Month(Fecha) = “12” Group by subcategoria; Creación de bases de datos Volcado de resultados a un archivo Desde la consola: tee archivo notee (Iniciar volcado en el archivo especificado) Desde la shell: mysql [BD] [ < archivoEntrada] [ > archivoSalida] Desde el SELECT SELECT columnas INTO OUTFILE archivo FROM ... Resultados en HTML o XML mysql [BD] [ > archivoSalida] [-H | --html] [-X | --xml] 8 Creación de bases de datos Búsqueda bruta (full-text) Usada con tablas myISAM Los índices full-text se crean sobre columnas CHAR, VARCHAR o TEXT Create table publicaciones ( Id tinyint not null, Titulo varchar(200), Autores varchar(250), PublicadoEn varchar(250), Anio varchar(4), Primary key(Id), FULLTEXT(Titulo, Autores, PublicadoEn, Anio)) TYPE = myISAM; Creación de bases de datos Búsqueda bruta (full-text) Búsqueda con MATCH y AGAINST MATCH incluye los campos del índice full-text sobre los que se realiza la búsqueda AGAINST especifica la cadena de búsqueda select titulo from publicaciones where match(titulo,autores,publicadoen,anio) against (‘”esquemas externos” ”external schemas”’) select titulo from publicaciones where match(titulo,autores,publicadoen,anio) against (‘+ODMG +2001’ in boolean mode); 9 Desarrollo de aplicaciones web para bases de datos Almería 2005 mySQL Contenidos 1. La consola de mySQL 2. Comandos de interés 3. Creación de bases de datos 4. Manipulación de bases de datos 5. mySQL Administrator Manipulación de bases de datos Resumen INSERT INTO tabla VALUES (valores) INSERT INTO tabla(columnas) VALUES (valores) UPDATE tabla SET columna = valor WHERE condición DELETE FROM tabla [WHERE condición] Validación y cancelación de cambios Sólo en tablas transaccionales COMMIT ROLLBACK 10 Desarrollo de aplicaciones web para bases de datos Almería 2005 mySQL Contenidos 1. La consola de mySQL 2. Comandos de interés 3. Creación de bases de datos 4. Manipulación de bases de datos 5. mySQL Administrator mySQL Administrator Descripción Interfaz gráfica para la administración de bases de datos mySQL Gestión de: •Parámetros de seguridad del servidor •Cuentas de usuario •Conexiones activas del servidor •Analizar archivos de registro •Copias de seguridad •Esquemas, tablas e índices ... 11 mySQL Administrator Descripción (2) Información del servidor Información del servicio mySQL Administrator Descripción (3) Definición de tablas Tablas de un esquema 12 Desarrollo de aplicaciones web para bases de datos Almería 2005 mySQL Manuel Torres Gil mtorres@ual.es Departamento de Lenguajes y Computación Universidad de Almería 13