Sunteți pe pagina 1din 841

lndice

Introduccidn

Razones para comprar este libro iQul queda fuera del alcance de este libro? iQue necesita? iC6m0 utilizar este libro?

de este libro? iQue necesita? iC6m0 utilizar este libro? Parte I . Uso de MySQL 1
de este libro? iQue necesita? iC6m0 utilizar este libro? Parte I . Uso de MySQL 1

Parte I. Uso de MySQL

1. Guia rapida de MySQL

Comprension de 10s fundamentos de MySQL ~QuCes una base de datos? Terminologia sobre bases de datos Conexion a una base de datos Creacion y uso de nuestra primera base de datos Caso en el que acabemos de instalar MySQL Si un administrador necesita concederle permiso Uso de la base de datos Creacion de una tabla Listado de las tablas de una base de datos con SHOW TABLES Analisis de la estructura de las tablas con DESCRIBE Insercion de nuevos registros en una tabla Insercion de datos dentro de una instruccion INSERT Insercion de grandes cantidades de datos desde un archivo de texto con LOAD DATA

dentro de una instruccion INSERT Insercion de grandes cantidades de datos desde un archivo de texto

Recuperacion de informacion de una tabla Orden en el que MySQL procesa las condiciones Correspondencia de patrones Ordenacion Limitacion del numero de resultados Devolucion del valor maximo con MAX() Recuperacion de registros distintos Como contar Como recuperar la media. el minimo y el total con AVG( ). MIN( ) y SUM( ) Realizacion de calculos en una consulta Eliminacion de registros Como cambiar 10s registros de una tabla Eliminacion de tablas y bases de datos Como modificar la estructura de la tabla Como agregar una columna Modificacion de una definicion de columna Como cambiar el nombre de una columna Como el~minaruna columna Uso de las funciones de fecha Como especificar el formato de fecha Recuperacion de la fecha y la hora actual Creacion de consultas mas avanzadas Como aplicar un nuevo encabezado a una columna con AS Combinacion de columnas con CONCAT Como buscar el dia del aiio Como trabajar con varias tablas Combinacion de dos o mas tablas Realizacion de calculos con fechas Agrupacion de una consulta Resumen

2. Tipos de datos y tipos de tabla

Analisis de 10s distintos tipos de columna Tipos de columna numericos Tipos de columnas de cadena Tipos de columna de fecha y hora Opciones de MySQL Analisis de 10s distintos tipos de tablas Tablas ISAM Tablas MyISAM Tablas estaticas Tablas dinamicas Tablas comprlm~das

10s distintos tipos de tablas Tablas ISAM Tablas MyISAM Tablas estaticas Tablas dinamicas Tablas comprlm~das .

.

.

10s distintos tipos de tablas Tablas ISAM Tablas MyISAM Tablas estaticas Tablas dinamicas Tablas comprlm~das .

.

.

10s distintos tipos de tablas Tablas ISAM Tablas MyISAM Tablas estaticas Tablas dinamicas Tablas comprlm~das .

Tablas MERGE Tablas HEAP Tablas InnoDB Tablas DBD Resumen

 

109

113

 

115

116

 

117

3. SQL Avanzado

119

Operadores

 

120

Operadores

logicos

 

120

Operadores

aritmeticos

 

121

Operadores

de comparacion

 

123

 

Como usar LIKE en equivalencias de patron de SQL Expresiones regulares Operadores bit a bit Combinaciones avanzadas Combinaciones internas Combinaciones por la izquierda (o combinaciones externas por la izquierda)

.

.

127

128

133

138

140

140

Combinaciones por la derecha (o combinaciones externas por la derecha) Combinaciones externas completas Combinaciones naturales y la palabra clave USING Recuperacion de 10s datos encontrados en una tabla per0 no en la otra Combinacion de resultados con UNION Subselecciones Como escribir subselecciones como combinaciones

143

143

144

146

147

149

149

Como agregar registros a una tabla desde otras tablas con INSERT SELECT

151

Mas

sobre la agregacion de registros

 

152

Mas sobre como eliminar registros (DELETE y TRUNCATE) Variable de usuario Ejecucion de instrucciones SQL almacenadas en archivos Redireccionamiento de la salida hacia un archivo Como usar 10s archivos desde la linea de comandos MySQL

archivos Redireccionamiento de la salida hacia un archivo Como usar 10s archivos desde la linea de

153

153

157

159

160

Transacciones y bloqueos Las transacciones en las tablas InnoDB Lecturas coherentes Lectura de bloqueos para actualizaciones Bloqueos de lectura en mod0 compartido Confirmaciones automaticas Transacciones en tablas DBD Otros comportamientos transaccionales

 

160

 

161

163

164

 

167

 

168

171

 

173

Bloqueo de tablas

 

175

     

181

Como evitar 10s bloqueos de tabla Niveles de transaccion Resumen

 

181

 

182

    181 Como evitar 10s bloqueos de tabla Niveles de transaccion Resumen   181  

4.

4 . indices y optimization de consultas . r C o m p r e n

indices y optimization de consultas

. r

Comprension de 10s indices

Creacion de un indice

Creacion de una clave primaria Creacion de un indice primario Creacion de un indice de texto completo Uso de 10s indices de texto completo Palabras ruido Relevancia Busquedas booleanas de texto completo Creacion de un indice unico Creacion de indices sobre una parte de un campo Como utilizar un campo de increment0 automatico Creacion de un campo de increment0 automatico Insertion de registros que contienen un campo de increment0 automatico Como recuperar y reiniciar el valor de increment0 automatico Mas alla de 10s limites Problemas con LAST- INSERT- ID() indices de varias columnas y carnpos de increment0 automatico Eliminacion o modificacion de un indice Tipos de tabla e indices Uso eficaz de 10s indices Donde utilizar 10s indices

u t i l i z a r 1 0 s i n d i c
u t i l i z a r 1 0 s i n d i c
u t i l i z a r 1 0 s i n d i c

.

.

.
.

.

Selection de indices

Uso del sistema de prefijacion mas a la izquierda Como utiliza MySQL 10s indices con EXPLAIN Realizacion de calculos en una consulta Uso de EXPLAIN con el sistema de preqos a la izquierda Optimizacion de las selecciones Como ayudar a1 optimizador de MySQL con ANALYZE Optimizacion de las instrucciones SELECT y seguridad Evaluacion del rendimiento de las funciones Optimizacion de actualizaciones, eliminaciones e inserciones Resumen

5. Programaci6n con MySQL

e inserciones Resumen 5 . Programaci6n con MySQL Uso de buenas tecnicas de programacion de bases

Uso de buenas tecnicas de programacion de bases de datos Uso de conexiones permanentes Como lograr codigo portable y sencillo de mantener La conexion Consultas de base de datos ~Cuintotrabajo deberia realizar el servidor de la base de datos? Las fases del desarrollo de aplicaciones

la base de datos? Las fases del desarrollo de aplicaciones 185 1 8 6 1 8

185

186

187

187

190

191

192

193

194

195

201

202

202

203

204

205

209

209

211

213

214

215

215

218

218

220

225

227

229

234

236

237

238

240

243

244

245

245

246

249

251

255

Fase 1: analisis de las necesidades Determination de las necesidades del usuario Deterrninacion de tecnologia necesaria Fase 2: Diseiio de la aplicacion Modelado Uso de pseudocodigo Codificacion Fase 4: fase de pruebas e implernentacion Resumen

6. Como ampliar las funciones de MySQL

Funciones definidas por el usuario Funciones UDF estandar

u n c i o n e s U D F e s t a n

La funcion init

La funcion principal La funcion deinit Creacion de una UDF estandar de ejemplo Analisis de las funciones agregadas

Creacion de una UDF agregada de ejemplo Resolucion de problemas de UDF Resumen

Parte I1. Diseiio de una base de datos

7. Comprensi6n de

las bases de datos relacionales

Analisis de 10s modelos anteriores a las base de datos Modelo jerarquico de base de datos Modelo de base de datos en red Modelo de base de datos relacional Terminos basicos Claves de tabla Claves externas Introduccion a las vistas Resumen

l a Claves externas Introduccion a las vistas Resumen 8 . Normalizac~on de bases de datos

8. Normalizac~onde bases de datos

Concepto de normalizacion Primera forma normal Segunda forma normal Tercera forma normal Forma normal de Boyce-Codd Cuarta forma normal Quinta forma normal y otras formas Concepto de desnormalizacion Resumen

.

I

255

256

256

257

257

257

257

260

260

263

264

268

268

270

272

272

274

275

278

278

281

283

284

284

286

286

287

290

290

292

295

297

7 2 5 7 257 260 260 263 264 2 6 8 268 270 2 7

9. Diseiio de bases de datos

Ciclo de vida de las bases de datos Fase 1: Analisis Fase 2: Diseiio Diseiio conceptual Diseiio logic0 y fisico Fase 3: Implementacion Fase 4: Pruebas Fase 5: Puesta en marcha Fase 6: Mantenimiento Un ejemplo del mundo real: un sistema de seguimiento de publicaciones Fase 1 de la base de datos de Poet's Circle: Analisis Fase 2 de la base de datos de Poet's Circle: Diseiio Fase 2 de la base de datos Poet's Circle: Implementacion Fase 4 a 6 de la base de datos Poet's Circle: Prueba. puesta en marcha y rnantenlrnlento Control de simultaneidad mediante transacciones Atomicidad Coherencia Aislamiento Durabilidad Resumen

a Aislamiento D u r a b i l i d a d Resumen . .
a Aislamiento D u r a b i l i d a d Resumen . .

.

.

321

322

323

324

325

329

333

333

334

335

336

336

337

341

342

343

343

343

344

344

344

Parte I11. Administracibn de MySQL 10. Administracibn baisica

347

349

Uso de MySQL como administrador Como iniciar y cerrar MySQL Como iniciar y cerrar MySQL en Unix Como iniciar MySQL automaticamente a1 arrancar el sistema Como evitar problemas comunes a1 iniciar MySQL en Unix Como iniciar y cerrar MySQL en Windows Como iniciar MySQL automaticamente Como evitar problemas comunes a1 iniciar MySQL en Windows Configuration de MySQL Registro El archivo de errores El registro de consultas El registro de actualization binario El registro de consultas lentas Rotacion de registros Optimization, analisis, comprobacion y reparacion de tablas

analisis, comprobacion y reparacion de tablas Optimization de tablas Optimization de tablas con la

Optimization de tablas Optimization de tablas con la instruccion OPTIMIZE

Optimization de tablas con la instruccion OPTIMIZE 350 352 352 354 355 355 356 358 359

350

352

352

354

355

355

356

358

359

363

363

364

365

368

369

372

373

373

Optimizacion de tablas con mysqlcheck Optimizacion de tablas con myisamchk Analisis de tablas Analisis de tablas con ANALYZE TABLE Analisis de las tablas con mysqlcheck Analisis de tablas con myisamchk Comprobacion de tablas Comprobacion de las tablas con CHECK TABLES Comprobacion de tablas con mysqlcheck Comprobacion de tablas con myisamchk Reparacion de tablas Reparacion tablas de tipo diferente a MyISAM Reparacion de tablas con REPAIR TABLE Reparacion de las tablas con mysqlcheck Reparacion de tablas con myisamchk Como usar mysqlcheck Uso de myisamchk Resumen

 

374

 

374

 

375

376

 

377

 

377

 

378

 

379

 

380

 

381

 

383

 

384

 

384

 

386

 

386

 

388

 

391

 

396

11.

Copias de seguridad de bases de datos

 

399

Volcados de seguridad de tablas MylSAM con BACKUP Uso de BACKUP en Unix Uso de BACKUP con Windows Restauracion de tablas MyISAM con RESTORE Volcados de seguridad de tablas de MyISAM mediante la copia de archivos directamente Realizacion de volcados con mysqldump Restauracion de una base de datos volcada con mysqldump Copias de seguridad con SELECT INTO Restauracion de una tabla con LOAD DATA ~QuCocurriria si algo sale mal? Uso de LOAD DATA con opciones Aspectos de seguridad relacionados con LOAD DATA LOCAL Uso de mysqlimport en lugar de LOAD DATA Uso de mysqlhotcopy para realizar copias de seguridad Uso del registro de actualizacion binario para restablecer la base de datos a su posicion mas reciente Copia de seguridad y restauracion de tablas InnoDB Duplicacion como medio de realizar copias de seguridad Resumen

.

.

400

400

403

404

406

409

411

416

419

420

421

426

426

429

431

436

438

439

12.

Duplicaci6n de base de datos

 

441

Que es la duplicacion

 

441

436 438 439 12 . Duplicaci6n de base de datos   441 Que es la duplicacion

Configuracion de duplication Opciones de duplication Comandos de duplicaclon Dificultades de la duplicacion Duplicacion de una base de datos Duplicacion con un registro binario activo en el principal Eliminacion de registros binarios antiguos del servidor principal e inicio de la operacion Como evitar un exceso de actualizaciones Como evitar errores clave Resumen

.

.

443

444

448

450

450

457

459

462

464

467

13. Configuration y optirnizacion de MySQL

471

Optimizacion de las variables msyqld

 

472

477

477

Optirnizacion de table-cache Optirnizacion de key- buffer- size Control de un elevado numero de conexiones Optirnizacion de las variables delayed-queue-

 

478

479

size y back- log

484

Optirnizacion de la variable sort- buffer Configuration de tablas InnoDB Presentacion de las opciones rnysqld Descripcion de las variables rnysqld Analisis de todas las variables de estado Cambio de valores de variables con el servidor en funcionamiento Mejoras en el hardware para acelerar el servidor Memoria Discos CPU Uso de anallsls comparativos Ejecucion de MySQL en mod0 ANSI Uso de distintos lenguajes en MySQL Como mostrar mensajes de error en otro idioma Utilizacion de un conjunto de caracteres diferente Como aiiadir un conjunto de caracteres propio Resumen

484

485

485

491

503

508

511

511

512

512

512

527

528

528

529

529

533

14. Seguridad de bases de datos

535

Seguridad a1 conectarse Gestion de usuarios y permisos La base de datos mysql Campos de las tablas Como examina MySQL permisos para conceder el acceso Como completar las tablas de permiso

536

537

537

538

543

544

permisos para conceder el acceso Como completar las tablas de permiso 536 537 537 538 543

Que hacer si no puede conectarse o no tiene permisos Que hacer si la tabla de usuarios se daiia Otras opciones de GRANT Estrategia para gestionar usuarios de forma segura Como evitar la concesion de privilegios peligrosos Conexiones SSL Seguridad de aplicaciones Seguridad del sistema Problemas de seguridad relacionados con LOAD DATA LOCAL Resumen

15. Instalaci6n de MySQL

Instalacion de una distribucion fuente o binaria Instalacion de MySQL en Windows Instalacion de una distribucion binaria en Windows Instalacion de MySQL como servicio en Windows NT/2000/XP Instalacion de MySQL en Unix Instalacion de una distribucion binaria (tar) en Unix Instalacion de una distribucion binaria (rpm) en Unix Instalacion desde codigo fuente en Unix Cornpilacion optima de MySQL Instalacion de varios servidores en el mismo equipo Como evitar problemas de instalacion comunes Problemas al iniciar msyqld Problemas de compilacion Problemas de Windows Actualizacion de MySQL 3.s a MySQL 4 Resumen

.

.

de MySQL 3.s a MySQL 4 R e s u m e n . . 16
de MySQL 3.s a MySQL 4 R e s u m e n . . 16

16. Multiples unidades

Significado de RAID RAID 0 RAID 1 RAID 2 y RAID 3 RAID 4 RAID 5 RAID 10 RAID 0+1 Otros tipos de RAID Uso de enlaces simbolicos Vinculacion simbolica de bases de datos Vinculacion simbolica de tablas Resumen

564

565

567

570

571

572

574

575

575

576

579

580

581

582

583

584

584

587

588

590

591

594

594

595

596

597

599

601

601

602

603

603

604

604

605

605

606

606

607

609

611

584 584 587 588 5 9 0 591 594 594 595 596 597 5 9 9
A. Guia de referencia de la sintaxis de MySQL 615 ALTER ANALYZE TABLE BACKUP TABLE

A. Guia de referencia de la sintaxis de MySQL

615

ALTER ANALYZE TABLE BACKUP TABLE BEGIN CHECK TABLE COMMIT CREATE DELETE DESC DESCRIBE DO DROP EXPLAIN FLUSH GRANT INSERT JOIN KILL LOAD DATA INFILE LOCK TABLES OPTIMIZE RENAME REPAIR TABLE REPLACE RESET RESTORE TABLE REVOKE ROLLBACK SELECT SET SET TRANSACTION SHOW TRUNCATE UNION UNLOCK TABLES UPDATE USE

616

617

617

617

617

618

618

621

621

621

622

622

622

623

623

625

626

626

626

627

628

628

628

629

629

629

629

630

630

632

635

635

635

636

636

636

636

B. Funciones y operadores de MySQL

Operadores logicos

635 635 635 636 636 636 636 B . Funciones y operadores de MySQL Operadores logicos

639

639

AND. && OR, I I NOT, ! Operadores aritmeticos

p e r a d o r e s a r i t m e t

639

640

640

641

e s a r i t m e t i c o s 639 640 640

%

Operadores de comparacion

-- !=, o
--
!=, o

642

642

643

643

1 % Operadores de comparacion -- !=, o 642 642 643 6 4 3 = 6
=
=

645

IS NULL BETWEEN LIKE IN REGEXP. RLIKE

 

646

 

646

 

647

 

647

 

647

Operadores de bits

 

650

&

650

& 650
>>
>>

651

Funciones de fecha y hora ADDDATE CURDATE CURRENT- DATE CURRENT- TIME CURRENT TIMESTAMP CURTIME DATE ADD DATE FORMAT DATE SUB DAYNAME DAYOFMONTH DAYOFWEEK DAYOFYEAR EXTRACT

.

.

.

.

 

651

 

652

 

652

 

652

 

653

 

653

 

653

 

653

 

654

 

656

 

656

 

656

 

657

 

657

 

657

FROM

-

DAYS

 

658

FROM- UNIXTIME

658

656   656   657   657   657 FROM - DAYS   658 FROM- UNIXTIME

HOUR

658

MINUTE

 

659

MONTH

 

659

MONTHNAME

659

NOW

660

PERIOD- ADD

660

PERIOD

- DIFF

660

QUARTER SEC TO- TIME SECOND SUBDATE SYSDATE TIME FORMAT TIME- TO- SEC

TO DAYS

:

-

-

-
-
CARACTER-LENGTH
CARACTER-LENGTH

UNIXTIMESTAMP WEEK WEEKDAY YEAR YEARWEEK Funciones de cadena ASCII BIN

BIT- LENGTH CHAR CHAR- LENGTH

CONCAT

CONCAT-WS
CONCAT-WS

CONV

 

ELT

EXPORT- SET

FIELD

 

FIND IN

-

-

SET

HEX

INSERT

 

INSTR

 

LCASE

 

LEFT

 

LENGTH

LOAD- FILE

LOCATE

LOWER

 
T H LOAD- FILE LOCATE L O W E R   661 661 661 662 662

661

661

661

662

662

662

662

662

663

663

664

664

665

665

665

666

666

667

667

667

667

668

669

670

670

671

671

672

673

673

674

674

674

675

675

676

LPAD LTRIM

 

676

 

677

 

677

 

.

MAKE SET OCT OCTET- LENGTH ORD POSITION QUOTE REPEAT REPLACE REVERSE RIGHT RPAD RTRIM SOUNDEX SPACE SUBSTRING SUBSTRING- INDEX TRIM UCASE UPPER Funciones numericas ABS ACOS ASIN ATAN

677

678

678

679

679

679

680

680

680

681

681

682

682

682

683

684

684

684

685

685

685

686

686

ATAN2

 

686

CEILING

 

686

COS

 

687

COT

 

687

DEGREES

 

687

EXP

 

688

FLOOR

 

688

FORMAT

 

689

GREATEST

 

689

LEAST

 

690

LN

690

LOG

 

690

LOG10

 

691

LOG2

 

691

MOD

 

691

PI

692

POW

 

692

LOG   690 LOG10   691 LOG2   691 MOD   691 PI 692 POW  

POWER RADIANS RAND ROUND SIGN SIN SQRT TAN TRUNCATE Funciones agregadas AVG

BIT AND

-

BIT OR

-

COUNT

MAX

MIN STD STDDEV SUM Otras funciones AES-DECRYPT AES-ENCRYPT BENCHMARK CASE CAST CONNECTION- ID CONVERT DATABASE DECODE

DES DECRYPT

S T CONNECTION- ID CONVERT DATABASE DECODE DES DECRYPT - DES-ENCRYPT ENCODE ENCRYPT FOUND ROWS GET-
S T CONNECTION- ID CONVERT DATABASE DECODE DES DECRYPT - DES-ENCRYPT ENCODE ENCRYPT FOUND ROWS GET-

-

DES-ENCRYPT ENCODE ENCRYPT FOUND ROWS GET- LOCK IF IFNULL INET ATON INET NTOA IS FREE- LOCK LAST- INSERT- ID MASTER- POS- WAIT

-

-

-

-

MD5

IS FREE- LOCK LAST- INSERT- ID MASTER- POS- WAIT - - - - MD5 692 692

692

692

693

693

694

694

695

695

695

696

696

696

697

697

697

698

698

698

698

699

699

699

699

699

701

702

702

702

703

703

703

704

704

704

705

705

706

707

707

707

708

708

709

NULLIF

709

PASSWORD

RELEASE- LOCK

SESSION- USER

SHA

SHA1

SYSTEM-

USER

VERSION

USER

.

.

.

.

.

.

.

.

.

C. API PHP

Opciones de configuracion PHP Funciones MySQL PHP msyql-affected-rows msyql change user mysql-client - encoding

-

-

msyql

msyql-connect

msyql create

msyql data seek msyql db name

- close

-

-

-

-

db

- - mysql-db-query
-
-
mysql-db-query

.

.

.

.

.

.

.

.

.

msyql drop

msyql errno

msyql error

msyql-escape-string

mysql-fetch-array

msyql fetch

mysql- fetch field mysql-fetch-lengths mysql- fetch object mysql- fetch row mysql field- flags

msyql field len mysql field name mysql-field-seek mysql-field-table

db

-

-

-

-

-

assoc

-

-

-

-

-

-

-

-

-

.

.

.

.

.

.

.

mysql field

mysql free- result mysql get- client- info

mysql-get- host- info mysql_getqroto-info mysqlxet server info

type

-

-

-

-

-

-

,

709

710

710

711

711

711

711

711

715

715

716

7 16

717

717

7 18

718

719

719

720

720

721

721

721

722

723

723

724

725

726

726

727

728

728

729

729

730

730

731

731

731

732

16 717 717 7 18 718 719 719 720 720 721 721 721 722 723 723
16 717 717 7 18 718 719 719 720 720 721 721 721 722 723 723
16 717 717 7 18 718 719 719 720 720 721 721 721 722 723 723

mysql

info

mysql

.

.

insert id

.

mysql list dbs mysql list fields mysql listqrocesses mysql list tables mysql num fields

mysql num rows mysqlqconnect mysqlqing mysql query

mysql-real-escape-string

mysql result mysql select db mysql stat mysql tablename mysql-thread-id mysql-unbuffered-query

.

.

.

-

-

-

.

.

-

-

-

-

-

-

-

-

-
-

D. DBI Per1

Metodos de la clase DBI available- drivers connect connect cached data sources trace Metodos DBI comunes a todos 10s identificadores err errstr func set. err state trace trace msg Funciones de utilidad DBI hash looks like number neat neat list Metodos de identificadores de base de datos begin work column info commit

.

.

.

.

. '
.
'

.

de datos begin work column info commit . . . . . ' . . .

.

.

datos begin work column info commit . . . . . ' . . . 732

732

732

733

733

734

735

735

735

736

737

737

738

738

739

739

740

740

741

743

744

744

744

745

746

746

746

747

747

747

747

748

748

748

748

748

748

749

749

749

749

749

749

disconnect do foreign key info get- info ping prepare prepare cached primary-key primary key info quote quote identifier rollback selectall-arrayref selectall hashref selectcol arrayref selectrow array selectrow arrayref selectrow-hashref() table info tables type-info Metodos de procesamiento de instrucciones bind-col bind- columns bindqaram bindqaram array bindqararn inout dump results execute execute array fetch fetchall arrayref fetchall hashref fetchrow array fetchrow arrayref fetchrow hashref finish rows Atributos DBI comunes a todos 10s identificadores Active ActiveKids CachedKids ChopBlanks CompatMode

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

CompatMode - - - - - - - - - - - - - - -

750

750

750

751

751

751

751

752

752

752

752

752

752

753

753

753

754

754

754

754

754

755

755

755

755

757

757

757

758

758

759

759

760

760

760

760

761

761

761

761

762

762

762

762

754 754 754 754 755 7 5 5 755 755 757 757 757 758 758 759

FreeHashKeyName HandleError InactiveDestroy Kids LongReadLen LongTruncOK PrintError private- * Profile RaiseError ShowErrorStatement Taint Warn Atributos de identificadores de base de datos Autocommit Driver Name RowCacheSize Statement Atributos de identificadores de instrucciones CursorName NAME NAME-hash NAME - lc NAME-lc-hash NAME uc NAME-uc-hash NULLABLE NUM-OF-FIELDS NUM-OF-PARAMS Paramvalues PRECISION RowsInCache SCALE Statement TYPE Atributos dinamicos err errstr lasth rows state Breve ejemplo de DBI Per1

:.

e e j e m p l o d e D B I P e r
-
-
e j e m p l o d e D B I P e r 1
e j e m p l o d e D B I P e r 1

762

762

763

763

763

763

763

764

764

764

764

765

765

765

765

765

765

766

766

766

766

766

766

767

767

767

767

767

768

768

768

768

768

768

768

769

769

769

769

769

769

769

770

E. API de base de datos Phyton

E . API de base de datos Phyton Atributos Atributos de modulo APILEVEL C O N

Atributos Atributos de modulo APILEVEL CONV PARAMSTYLE THREADSAFETY Atributos de cursor ARRAYSIZE DESCRIPTION ROWCOUNT Metodos Metodos de modulo Metodos de conexion BEGIN CLOSE COMMIT CURSOR ROLLBACK Metodos de cursor CLOSE EXECUTE EXECUTEMANY FETCHALL FETCHMANY FETCHNONE INSERT ID NEXTSET, SETINPUTSIZES y SETOUTPUTSIZES Breve ejemplo de Phyton

F. API Java

Metodos generales getBundle getconnection getstring Metodos de conexion clearwarnings close commit createstatement

o n getstring M e t o d o s d e c o n e
o n getstring M e t o d o s d e c o n e
o n getstring M e t o d o s d e c o n e

getTypeMap isclosed isReadOnly nativeSQL preparestatement rollback setAutoCommit setReadOnly setTransactionlsolation setTypeMap Metodos de instrucciones y de instrucciones preparadas addBatch clearBatch clearwarnings close execute executeBatch executeQuery executeupdate getconnection getFetchSize getMaxFieldSize getMaxRows getMoreResults getQueryTimeout getResultSet getResultType getupdatecount setXXX setCursorName setEscapeProcessing setFetchSize setMaxFieldSize setMaxRows setQueryTimeout Metodos Resultset absolute afterLast beforeFirst cancelRowUpdates close deleteRow findcolumn

784

785

785

785

785

785

785

785

786

786

786

786

786

786

787

787

787

787

787

787

788

788

788

788

788

788

789

789

789

790

790

790

790

791

791

791

791

791

791

791

792

792

792

789 790 790 790 790 791 791 791 7 9 1 791 791 791 792 792

first getXXX getCursorName getFetchSize getMetaData getRow() getstatement getType getwarnings insertRow isAfterLast isBeforeFirst isFirst isLast last moveToCurrentRow moveToInsertRow next previous refreshRow relative rowDeleted rowInserted rowupdated setFetchSize updateXXX updateRow wasNull Metodos ResultSetMetaData getColumnCount getColumnDisplaySize getColumnName getColumnType getColumnTypeName getprecision getscale getTableName isAutoIncrement iscasesensitive isDefinitelyWritable isNullable isReadOnly issearchable

.

.

isDefinitelyWritable isNullable isReadOnly issearchable . . 792 792 793 793 7 9 3 793 7 9
isDefinitelyWritable isNullable isReadOnly issearchable . . 792 792 793 793 7 9 3 793 7 9
isDefinitelyWritable isNullable isReadOnly issearchable . . 792 792 793 793 7 9 3 793 7 9

792

792

793

793

793

793

794

794

794

794

794

794

794

795

795

795

795

795

796

796

796

796

796

796

797

797

798

798

798

798

798

798

798

799

799

799

799

799

799

799

800

800

800

795 796 796 796 796 796 796 7 9 7 797 7 9 8 798 798

issigned iswritable Metodos SQLException getErrorCode getMessage getNextException getSQLState printStackTrace setNextException Metodos Warning getNextWarning setNextWarning Breve ejemplo de Java

800

800

800

800

801

801

801

801

801

801

801

801

802

G. API C

805

Tipos de datos del API C my ulonglong MSYQL MYSQL-FIELD MYSQL-FIELD-OFFSET MYSQL RES MYSQL ROW Funciones del API C msyql affected rows msyql change user

.

.

.

.

.

.

.

msyql-character-set-name msyql close mysql connect mysql create db msyql data seek msyql-debug mysql-drop -db mysql-dump-debug-info mysql eof mysql errno mysql error msyql escape string msyql-fetch-field

.

.

.

-

-

-

-

-

-

-

.

msyql-fetch-field-direct
msyql-fetch-field-direct

msyql-fetch-fields msyql fetch lengths msyql-fetch-row mysql-field-count

-

-

msyql fetch lengths msyql-fetch-row mysql-field-count - - 805 805 806 806 808 808 808 809 809

805

805

806

806

808

808

808

809

809

809

809

810

810

810

810

810

811

811

811

811

811

811

812

812

812

812

813

813

mysql field seek msyql field tell msyql free result msyql~et-client- info mysql~ethost- info mysql-getqroto- info
mysql field seek
msyql field tell
msyql free result
msyql~et-client- info
mysql~ethost- info
mysql-getqroto- info
814
-
-
814
-
-
814
-
-
814
814
-
814
mysql -get- server- info
815
mysql
info
815
-
mysql-init
815
mysql insert
id
815
-
-
mysql kill
mysql list dbs
mysql list fields
mysql listqrocesses
mysql list tables
mysql num fields
mysql num rows
mysql options
msyqlqing
816
-
816
-
-
816
-
-
817
-
817
-
-
817
-
-
818
-
-
818
-
819
mysql
query
819
-
mysql-real
connect
819
-
msyql real escape string
821
-
-
-
msyql real query
msyql reload
msyql row seek
msyql row tell
msyql select db
msyql-shutdown
821
-
-
821
-
821
-
-
822
-
-
822
-
-
822
msyql
stat
822
-
msyql store result
823
-
-
msyql-thread-id
823
msyql use
result
823
-
-
Breve ejemplo del API C
824
H. ODBC y .NET
827
Origenes de datos
Configuracion de un origen de datos en Windows
Configuracion de un origen de datos en Unix
Configuracion de opciones de conexion
Exportacion de datos desde Microsoft Access a MySQL
Uso de ODBC
Ejemplo de VB.NET
Ejemplo de C#.NET
828
828
829
829
830
831
831
833

Ejemplo de VB ADO Ejemplo de VB RDO Ejemplo de VB DAO Funciones MyODBC SQLAllocConnect SQLAllocEnv SQLAllocHandle SQLAllocStmt SQLBindParameter SQLBulkOperations SQLCancel SQLCloseCursor SQLColAttribute SQLColAttributes SQLColumnPrivileges SQLColumns SQLConnect SQLDataSources SQLDescribeCol SQLDescribeParam SQLDisconnect SQLDriverConnect SQLDrivers SQLEndTran SQLError SQLExecDirect SQLExecute SQLExtendedFetch SQLFetch SQLFetchScroll SQLFreeConnect SQLFreeEnv SQLFreeHandle SQLFreeStmt SQLForeignKe~s SQLGetConnectAttr SQLGetConnectOption SQLGetCursorName SQLGetDiagField SQLGetDiagRec SQLGetEnvAttr SQLGetFunctions SQLGetInfo

G e t E n v A t t r SQLGetFunctions SQLGetInfo 834 835 837 8
G e t E n v A t t r SQLGetFunctions SQLGetInfo 834 835 837 8
G e t E n v A t t r SQLGetFunctions SQLGetInfo 834 835 837 8

834

835

837

838

838

838

839

839

839

840

840

840

840

841

841

841

841

841

842

842

843

843

843

844

844

844

844

844

844

844

845

845

845

845

846

846

848

848

848

850

851

852

852

SQLGetStmtAttr

 

852

SQLGetStmtOption

 

856

SQLGetTypeInfo

856

 

SQLNativeSql

 

857

 

SQLNumParams

 

857

 

SQLNumResultCols

 

857

 

SQLParamData

SQLPrepare

 

857

 

858

SQLPrimaryKeys

 

858

SQLPutData

 

858

SQLRowCount

 

858

SQLSetConnectAttr

 

858

SQLSetConnectOption

 

859

SQLSetCursorName

 

859

SQLSetEnvAttr

SQLSetPos

 

859

 

859

SQLSetScrollOptions

 

860

SQLSetStmtAttr

 

860

SQLSetStmtOption

 

861

SQLSpecialColumns

 

861

SQLStatistics

 

862

 

.

.

SQLTablePrlvlleges

 

862

SQLTables

862

SQLTransact

 

862

I. Contenido del CD-ROM

865

Indice alfabktico

 

867

SQLTables 862 SQLTransact   862 I . Contenido del CD-ROM 865 Indice alfabktico   867

Introduccion

Introduccion MySQL HA CRECIDO. Lo que durante un tiempo se consider6 como un sencillo juguete para

MySQL HA CRECIDO. Lo que durante un tiempo se consider6 como un sencillo juguete para su uso en sitios Web, se ha convertido en la actualidad en una solucion viable y de mision critica para la administracion de datos. Antes, MySQL se consideraba como la opcion ideal para sitios Web; sin embargo, ahora incorpora muchas de las funciones necesarias para otros entornos y conserva su gran velocidad. MySQL supera desde hace tiempo a muchas soluciones comer- ciales en velocidad y dispone de un sistema de permisos elegante y potente, y ahora, ademas, la version 4 incluye el motor de almacenamiento InnoDB compa- tible con ACID. MySQL 4 es rapido, dispone de funciones de volcado online e incorpora una gran cantidad de funciones nuevas. Son pocas las razones para desechar MySQL como solucion de base de datos. MySQL AB, la compaiiia responsable del desa- rrollo de MySQL, dispone de un sistema de asistencia eficiente y a un precio razonable, y, como ocurre con la mayor parte de las comunidades de codigo abierto, encontrara una gran cantidad de ayuda en la Web. Las funciones estandar no incluidas todavia en MySQL (corno las vistas y 10s procedimientos almacena- dos) estan en fase de desarrollo y es posible que esten disponibles para cuando lea estas lineas. Son muchas las razones para escoger MySQL como solucion de mision critica para la administracion de datos.

estas lineas. Son muchas las razones para escoger MySQL como solucion de mision critica para la
estas lineas. Son muchas las razones para escoger MySQL como solucion de mision critica para la

Coste: El coste de MySQL es gratuito para la mayor parte de 10s usos y su El coste de MySQL es gratuito para la mayor parte de 10s usos y su servicio de asistencia resulta economico.

Asistencia: MySQL AB ofrece contratos de asistencia a precios razona- bles y existe una nutrida y MySQL AB ofrece contratos de asistencia a precios razona- bles y existe una nutrida y activa comunidad MySQL.

Velocidad: MySQL es mucho mas rapido que la mayor parte de sus rivales. MySQL es mucho mas rapido que la mayor parte de sus rivales.

Funcionalidad: MySQL dispone de muchas de las funciones que exigen 10s desarrolladores profesionales, como compatibilidadcompleta con MySQL dispone de muchas de las funciones que exigen 10sdesarrolladores profesionales, como compatibilidadcompleta con ACID, compatibilidad para la mayor parte de SQL ANSI, volcados online, dupli- cation, funciones SSL e integracion con la mayor parte de 10s entornos de programacion. Asi mismo, se desarrolla y actualiza de forma mucho mas rapida que muchos de sus rivales, por lo que practicamente todas las fun- ciones estandar de MySQL todavia no estan en fase de desarrollo.

Portabilidad: MySQL se ejecuta en la inmensa mayoria de sistemas operativos y, la mayor parte de MySQL se ejecuta en la inmensa mayoria de sistemas operativos y, la mayor parte de 10s casos, 10s datos se pueden transferir de un sistema a otro sin dificultad.

Facilidad de uso: MySQL resulta facil de utilizar y de administrar. Gran parte de las viejas bases de MySQL resulta facil de utilizar y de administrar. Gran parte de las viejas bases de datos presentan problemas por utilizar siste- mas obsoletos, lo que complica innecesariamente las tareas de administra- cion. Las herramientas de MySQL son potentes y flexibles, sin sacrificar su capacidad de uso.

potentes y flexibles, sin sacrificar su capacidad de uso. Razones para comprar este libro Este libro
potentes y flexibles, sin sacrificar su capacidad de uso. Razones para comprar este libro Este libro

Razones para comprar este libro

Este libro va dirigido a desarrolladores, administradores de bases de datos (DBA) y usuarios de MySQL. Aborda 10s siguientes temas:

Exploracion del lenguaje de consulta estructurado (SQL) en funcion de la implementacion de MySQL.

Comprension y uso de tipos de datos y de tablas.

optimizacion de sus consultas e indices.

Volcados de bases de datos.

Administracion de usuarios y seguridad.

Administracion y configuracion de MySQL (y optimizacion de la configu- ration para potenciar el rendimiento).

Duplicacion de MySQL en varios servidores.

Comprension del diseiio y la normalizacion de bases de datos y analisis de un cornpleto ejemplo practico. El conocimiento de estos temas resulta fun-

damental si se tiene la intencion de utilizar MySQL en aplicaciones profe- sionales.

Programacion con MySQL.de utilizar MySQL en aplicaciones profe- sionales. Desarrollo de extensiones propias en MySQL. Instalacion de

Desarrollo de extensiones propias en MySQL. propias en MySQL.

Instalacion de MySQL.con MySQL. Desarrollo de extensiones propias en MySQL. En 10s apendices del libro se incluyen 10s

En 10s apendices del libro se incluyen 10s siguientes elementos:

Una guia de referencia completa a MySQL.apendices del libro se incluyen 10s siguientes elementos: Guia de referencia sobre funciones y metodos de

Guia de referencia sobre funciones y metodos de PHP, Perl, C, Java, Python y ODBC para interactuar con sobre funciones y metodos de PHP, Perl, C, Java, Python y ODBC para interactuar con MySQL.

~Quequeda fuera del alcance de este libro?

MySQL es un concept0 inmenso, y en este libro se presenta todo el material necesario para ayudarle a convertirse en un experto administrador de bases de datos y desarrollador de MySQL. Sin embargo, como no se puede explicar todo, no se abordan 10s siguientes temas:

Como programar. Este libro le ayudara a programar con MySQL, per0 no enseiia a programar desde cero. per0 no enseiia a programar desde cero.

MySQL incrustado.con MySQL, per0 no enseiia a programar desde cero. Un analisis completo de como compilar e

Un analisis completo de como compilar e instalar bibliotecas. La labor de desarrollar extensiones exige ciertos analisis completo de como compilar e instalar bibliotecas. La labor de desarrollar extensiones exige ciertos conocimientos sobre la compilacion y la instalacion de bibliotecas en la plataforma de desarrollo seleccionada. Aunque este tema se explica, el libro no puede abordar todas las configu- raciones posibles de las distintas plataformas, por lo que si tiene pensado abordar este nivel avanzado de desarrollo, necesitara una buena fuente de informacion sobre su plataforma.

una buena fuente de informacion sobre su plataforma. ~Que necesita? Necesitara 10s siguientes elementos para
una buena fuente de informacion sobre su plataforma. ~Que necesita? Necesitara 10s siguientes elementos para

~Quenecesita?

Necesitara 10s siguientes elementos para seguir 10s ejemplos de este libro:

Una copia de, o acceso a, un cliente y un servidor MySQL. Puede descar- gar la version actual del sitio de MySQL: www.mysql.com.elementos para seguir 10s ejemplos de este libro: Un sistema en el que instalar MySQL (si

Un sistema en el que instalar MySQL (si no dispone de acceso a alguno todavia). Puede instalar MySQL en su equipo de sobremesa, per0 es mas habitual ejecutarlo en un servidor dedicado para aplicaciones su equipo de sobremesa, per0 es mas habitual ejecutarlo en un servidor dedicado para aplicaciones complejas.

MySQL en su equipo de sobremesa, per0 es mas habitual ejecutarlo en un servidor dedicado para
MySQL en su equipo de sobremesa, per0 es mas habitual ejecutarlo en un servidor dedicado para
MySQL en su equipo de sobremesa, per0 es mas habitual ejecutarlo en un servidor dedicado para
Si tiene pensado desarrollar aplicaciones con MySQL, es posible que ne- cesite descargar 10s ultimos

Si tiene pensado desarrollar aplicaciones con MySQL, es posible que ne- cesite descargar 10s ultimos controladores o interfaces de programacion de aplicaciones (API) de su entorno de desarrollo. MySQL integra lo mejor de PHP, Perl, Java, C, C++ y Python, per0 puede utilizarlo en cualquier entorno de programacion, como .NET a traves del sistema de conectividad abierta de base de datos (ODBC). Visitc cl sitio Web de MySQL (www.mysql.com) para descargar las versiones mas actuales de 10s controladores.

descargar las versiones mas actuales de 10s controladores. ~CO~O utilizar este libro? Este libro se divide
descargar las versiones mas actuales de 10s controladores. ~CO~O utilizar este libro? Este libro se divide

~CO~Outilizar este libro?

Este libro se divide en cuatro partes. Si tiene poca experiencia con bases de datos, le aconsejamos comenzar por el primer capitulo de la primera parte, que presenta el mundo de SQL a 10s usuarios noveles. Los lectores esperimentados en cl uso de otros sistemas de gestion de bases de datos pueden echar un rapido vistazo al capitulo 1 para familiarizarse con la forma de trabajar de MySQL, antes de pasar a esaminar 10s tipos de datos y tablas de esta plataforma que se analizan en el capitulo 2. Los lectores con nivel intermedio pueden empezar en el capitulo 3 y capitulo 4, dedicados a aspectos de SQL avanzados, indices y temas de optimizacion. Los lectores que deseen utilizar un lenguaje de programacion con MySQL deberian leer el capitulo 5 y consultar el apendice relacionado con el lengu