COMANDOS Y SINTASIS MYSQL

Download COMANDOS Y SINTASIS MYSQL

Post on 07-Aug-2015

51 views

Category:

Documents

0 download

Embed Size (px)

DESCRIPTION

COMANDOS Y SINTASIS MYSQL

TRANSCRIPT

<p>Guia de referencia de la sintaxis de MySQLEn este apendice se incluyen las instrucciones y la sintaxis SQL utilizadas en la version 4.0 de MySQL. Para versiones posteriores es aconsejable consultar la documentacion correspondiente a su distribucion o visitar el sitio de MySQL (www . mysql .com).</p> <p>La convencion utilizada a lo largo de 10s apendices es la siguiente: Los corchetes ( [ ] ) indican un elemento opcional. Por ejemplo:SELECT expresion [FROM nombre-de-tabla [WHERE clausula-where]]</p> <p>indica que la expresion es obligatoria (por ejemplo SELECT 4 2 / 10) y que la clausula WHERE es opcional per0 solamente puede existir si existe la clausula opcional FROM nombre -d e -t a b l a (podriamos tener SELECT*FROM t l , per0 no SELECT*WHERE f 1 &gt; 1 0 , ya que entonces faltaria la clausula nombre -de -tabla). Una barra vertical ( I ) separa las distintas alternativas. Por ejemplo:CREATE [UNIQUE I FULLTEXT] INDEX indica que UNIQUE y FULLTEXT son opciones distintas.</p> <p>Las llaves ( { ) ) indican que es necesario seleccionar una de las opciones. Por ejemplo:CREATE TABLE [TYPE = (BDB MRG -MYISAM I MYISAM 1 1</p> <p>...</p> <p>I</p> <p>HEAP</p> <p>I</p> <p>ISAM</p> <p>I InnoDB I MERGE I</p> <p>Si se especifica la clausula opcional TYPE, sera necesario especificar una de las siguientes opciones: BDB, HEAP, ISAM, I n n o D B , MERGE, MRG -MYISAMo M Y I S A M . Tres puntos (...) indican que la opcion se puede repetir. Por ejemplo:SELECT expresion,</p> <p>.. .</p> <p>indica que la expresion se puede repetir (separada por una coma), como se 2 3 indica a continuacion: SELECT f 1, f ,f .</p> <p>ALTERLa sintaxis de ALTER es la siguiente:ALTER [IGNORE] TABLE nombre-de-tabla especif icacion-alter [, especificacion-alterI</p> <p>...</p> <p>La sintaxis de e s p e c i f i c a c i 6 n -a 1t e r puede ser una de las siguientes:ADD [COLUMN] definition-create [FIRST I AFTER nombre-de-campo ] ADD [COLUMN] (definition-create , definition-create, . . . ) ADD INDEX [nombre-de-indice] (nombre-de-campo-de-indice, ... ) ADD P R I W Y KEY (nombre-de-campo-de-indice, . . . ) ADD UNIQUE [nombre-de-indice] (nombre-de-indice, ) ADD FULLTEXT [nombre-de-indice] (nombre-de-indice, .) ADD [CONSTRAINT simbolo] FOREIGN KEY nombre-de-indice (nombre-de-indice, in direferencia-definicih] ALTER [COLUMN] nombre-de-campo ( SET DEFAULT literal I DROP DEFAULT 1 CHANGE [COLUMN] antiguo-nombre-de-campo definition-create [FIRST AFTER nombre-de-campo] MODIFY [COLUMN] definition-create [FIRST I AFTER nombre-de-camp01 DROP [COLUMN] nombre-de-campo DROP PRIMARY KEY DROP INDEX nombre-de-indice DISABLE KEYS ENABLE KEYS RENAME [TO] nuevo-nombre-de-tabla ORDER BY nombre-de-campo opcionesde-tabla</p> <p>. .. ..</p> <p>I</p> <p>ALTER TABLE le permite cambiar la estructura de una tabla existente. Puede aiiadir columnas ( ADD ), cambiar definiciones y nombres de columnas</p> <p>( CHANGE), modificar definiciones de columnas sin cambiar el nombre (MODIFY), eliminar columnas o indices ( DROP), cambiar el nombre de las tablas ( RENAME ), ordenar datos ( ORDER ) asi como activar ( ENABLE ) y desactivar ( DISABLE) indices. Una extension MySQL que no sea ANSI es significa que ALTER TABLE puede contener varios componentes (CHANGE, AND, etc.) en una instruccion. Necesitara permiso ALTER, I N S E R T y CREATE en la tabla para utilizar ALTER TABLE. I G N O R E (extension MySQL no ANSI) hace que MySQL elimine registros que puedan generar una clave principal o unica duplicada. Normalmente MySQL cancela y ALTER falla. FIRST y ADD...AFTER le permiten especificar donde se debe aiiadir un campo a la definicion.</p> <p>ANALYZE TABLEANALYZE TABLE nombre-de-tabla[,</p> <p>nombre-de-tabla..</p> <p>.]</p> <p>En tablas MyISAM y BDB, analiza y almacena la distribucion de claves de las tablas especificadas. Bloquea las tablas con un bloqueo de lectura durante la duracion de la operacion.</p> <p>BACKUP TABLEBACKUP TABLE nombre-de-tabla 'nombre-de-ruta'[</p> <p>,nombre-de-tabla..</p> <p>.]</p> <p>TO</p> <p>En tablas MyISAM, copia 10s archivos de datos y de definicion de datos en el directorio de copias de seguridad.</p> <p>BEGINBEGIN</p> <p>La instruccion B E G I N inicia una transaccion o un conjunto de instrucciones. La transaccion permanece abierta hasta la siguiente instruccion COMMIT oROLLBACK.</p> <p>CHECK TABLECHECK TABLE nombre-tbl[, nombre-tbl-.</p> <p>.. ]</p> <p>[opcion [opcion..</p> <p>.] 1</p> <p>La opcion puede ser una de las siguientes:CHANGED EXTENDED FAST MEDIUM QUICK</p> <p>Comprueba la presencia de errores en una tabla MyISAM o BDB y, en tablas MyISAM, actualiza las estadisticas del indice. La opcion QUICK no analiza las filas para comprobar 10s enlaces. La opcion FAST solamente comprueba las tablas que no se cerraron correctamente. La opcion CHANGED es la misma que FAST per0 tambien comprueba las tablas que han cambiado desde la ultima comprobacion. La opcion MEDIUM verifica que 10s enlaces eliminados son correctos y la opcion EXTENDED realiza una busqueda completa de todas las claves de todas las filas.</p> <p>COMMITCOMMIT</p> <p>La instruccion COMMIT finaliza una instruccion o un conjunto de instrucciones y vuelca 10s resultados en disco.</p> <p>CREATELa sintaxis de CREATE puede ser una de las siguientes:CREATE DATABASE [IF NOT EXISTS ] nombre-de-base-de-datos CREATE [UNIQUEIFULLTEXT] INDEX nombre-de-indice ON nombre-de-tabla (nombre-de-campo [ (longitud) 1, . ) CREATE [TEMPORARY] TABLE [IF NOT EXISTS] nombre-de-tabla [ (crear definicion, . . ) 1 [opciones-de-tabla] [instruction-select]</p> <p>..</p> <p>.</p> <p>La sintaxis de crear</p> <p>-</p> <p>defi ni c i 6n puede ser una de las siguientes:</p> <p>tipo nombre-de-campo [NOT NULL I NULL] [DEFAULT valor-predeterminado] [AUTO-INCREMENT] [PRIMARY KEY] [definition-de-referencia] PRIMARY KEY (nombre-de-campo-de-indice, . . . ) KEY [nombre-de-indice] (nombre-de-campo-de-indice, . . . ) INDEX [nombre-de-indice] (nombre-de-campo-de-indice, . . . ) UNIQUE [INDEX] [nombre-de-indice] (nombre-de-campo-de-indice, FULLTEXT [INDEX] [nombre-de-indice] (nombre-de-campo-deoindice, . . . ) [CONSTRAINT simbolo] FOREIGN KEY [nombre-de-indice](nombre-de-carnpo-deoindice,</p> <p>... )</p> <p>... )</p> <p>[definition-de-referencia] CHECK (expr)</p> <p>La sintaxis de type puede ser una de las siguientes:TINYINT [ (longitud) ] [UNSIGNED] [ZEROFILL] SMALLINT [ (longitud) ] [UNSIGNED] [ZEROFILL] MEDIUMINT [ (longitud) 1 [UNSIGNED] [ZEROFILL] INT[(longitud)] [UNSIGNED] [ZEROFILL] INTEGER[(longitud)] [UNSIGNED] [ZEROFILL] BIGINT [ (longitud) ] [UNSIGNED] [ZEROFILL] REAL [ (longitud,decimales) ] [UNSIGNED] [ZEROFILL] DOUBLE[(longitud,decimales)] [UNSIGNED] [ZEROFILL] FLOAT[(longitud,decimales)] [UNSIGNED] [ZEROFILL] DECIMAL(longitud,decimales) [UNSIGNED] [ZEROFILL] NUMERIC(longitud,decimales) [UNSIGNED] [ZEROFILL] CHAR(longitud) [BINARY] VARCHAR(longitud) [BINARY] DATE TIME TIMESTAMP DATETIME TINYBLOB BLOB MEDIUMBLOB LONGBLOB TINYTEXT TEXT MEDIUMTEXT LONGTEXT ENUM(valorl,valor2,valor3, . . . ) SET(valorl,valor2,valor3, . . . )</p> <p>La sintaxis de nombre-de-campo -de-indice es la siguiente:nombre-de-campo [ (longitud) ]</p> <p>La sintaxis de definici6n-de-referencia es la siguiente:REFERENCES nombre-de-tabla n nodre-de-campo-de-indice, ... )] [MATCH FULL I MATCH PARTIAL] [ON DELETE opcion-de-referencia] [ON UPDATE opcion-de-referencia]</p> <p>La sintaxis de opci6n-de-referencia es la siguiente:RESTRICT I CASCADE</p> <p>I SET NULL I NO ACTION I SET DEFAULT</p> <p>La sintaxis de opciones -de-tabla puede ser una de las siguientes:TYPE = (BDB I HEAP I ISAM I InnoDB I MERGE AUTO-INCREMENT = # AVG-ROW-LENGTH = # CHECKSUM = ( 0 I 1)</p> <p>I</p> <p>MRG-MYISAM I MYISAM</p> <p>)</p> <p>COMMENT = cccadena" MAX-ROWS = # MIN-ROWS = # PACK-KEYS = ( 0 I 1 I DEFAULT) PASSWORD = cccadena" DELAY-KEY-WRITE = ( 0 I 1) ROW-FORMAT= ( predeterminado I dinamico I fijo I comprimido ) RAID-TYPE= ( 1 I STRIPED I RAID0 ) RAID-CHUNKS=# RAID-CHUNKSIZE=# UNION = (nombre-de-tabla,[nornbre-de-tabla . . . I ) INSERT-METHOD= (NO I FIRST I LAST ) DATA DIRECTORY="ruta-absoluta-a-directorio" INDEX DIRECTORY="ruta-absoluta-a-directorio"</p> <p>La sintaxis de ins t rucc i6 n-s e 1 c t puede ser la siguiente: e[IGNORE I REPLACE] SELECT</p> <p>...</p> <p>(instruccion select)</p> <p>La instruccion CREATE crea una base de datos, una tabla o un indice. Las tablas TEMPORARY existen siempre que la conexion este activa. Para ello necesitara el permiso CREATE TEMPORARY TABLES. De forma predeterminada, las definiciones de campos adoptan el valor NULL. Los campos numericos adoptan el valor 0 (excepto con AUTO INCREMENT) y 10s campos de cadena, una cadena vacia (excepto 10s campos ENUM, que toman de forma predeterminada la primera opcion). De forma predeterminada, 10s campos de fecha y hora completan el campo con ceros. Los campos AUTO INCREMENT empiezan a contar desde 1 de forma predeterminada y se incrementan en uno cada vez que se aiiade un nuevo registro. KEY e INDEX son sinonimos en este contexto. PRIMARY KEY especifica que el indice no puede contener duplicados y el campo (o combinacion de campos), debe especificarse como NOT NULL. UNIQUE especifica que el indice no puede contener duplicados. La opcion RAID TYPE contribuye a que 10s sistemas operativos que no pueden adrnitir archivosde gran tamaiio, superen esta limitacibn. La opci6n STRIPED es la unica que se utiliza actualmente. En tablas MyISAM, esto crea subdirectorios dentro del directorio de bases de datos, cada uno con una parte del archivo. Los primeros 1024*RAID CHUNKS IZE bytes se incluyen en la primera parte, 10s siguientes 1o ~ ~ * R A CHUNKS IZE en la siguiente y asi sucesivamente. ID DIRECTORY="directorio" e INDEX Las opciones DIRECTORY ="direct or io " especifican rutas absolutas a la ubicacion en la que se almacenan 10s datos o 10s indices. La opcion PACK KEYS=l agrupa campos numericos en el indice de tablas MyISAM (y, de f o i a predeterminada, cadenas). Solamente resulta util si tiene indices con gran cantidad de numeros duplicados. Puede utilizar AVG ROW LENGTH para que MySQL se haga una idea de la longitud media de las f i a s dela tabla. Solamente resulta Ctil si la tabla es de gran tamaiio y 10s registros son de un tamaiio variable.</p> <p>DATA</p> <p>CHECKSUM se puede definir como 1 en tablas MyISAM si quiere realizar una comprobacion de todas las tablas, lo que facilita la reparacion de la tabla en caso de que este daiiada aunque tambien reduce su velocidad. COMMENT es un comentario de hasta 60 caracteres. MAX ROWS y M I N ROWS especifican el numero maximo y minim0 de filas que se van a almacenar en la tabla. PASSWORD codifica el archivo de definicion de datos (. frm) con una contraseiia. DELAY K E Y W R I T E hace que MySQL espere hasta que se cierre una tabla MyISAM antes &amp;.actualizar el indice, lo que aumenta la velocidad de operaciones INSERT y UPDATE. ROW -FORMAT especifica si una tabla MyISAM debe ser FIXED o DYNAMIC.</p> <p>DELETELa sintaxis de D E L E T E puede ser una de las siguientes:DELETE [LOW-PRIORITY I QUICK] FROM nombre-de-tabla [WHERE clausula-where] [ORDER B Y ] [LIMIT filas] DELETE [LOW-PRIORITY I QUICK] nombre-de-tabla [ * ] [ , nombre-de-tabla [ * ] ] FROM referencias de tablas [WHERE clausula-where] DELETE [LOW-PRIORITY I QUICK] FROM tabla [ *] , [tabla [ *] . . .I USING referencias de tabla [WHERE clausula-where]</p> <p>...</p> <p>.</p> <p>...</p> <p>.</p> <p>.</p> <p>.</p> <p>La instruction D E L E T E borra registros de la tabla (o tablas) que cumplen la clausula w h e r e (o todos 10s registros si no existe esta clausula). La palabra clave LOW P R I O R I T Y hace que DELETE espere hasta que no haya ningun cliente leyendo la tabla antes de procesarla. La palabra clave Q U I C K hace que MySQL no combine hojas de indice durante DELETE, lo que en ocasiones resulta mas rapido. L I M I T determina el numero maximo de registros que se pueden eliminar. La clausula O R D E R BY hace que MySQL borre registros en un determinado orden (lo que resulta muy util con una clausula LIMIT).</p> <p>DESCDESC equivale a DESCRIBE</p> <p>DESCRIBEDESCRIBE nombre-de-tabla (nombre-de-campo</p> <p>I comodin)</p> <p>DESCRIBE devuelve la definition de la tabla y 10s campos especificados (igual que SHOW COLUMNS FROM n o m b r e de t a b l a ) . Se puede utilizar un comodin como parte deinombre de archivo y puede ser un signo % que equivale a un numero de caracteres o un guion bajo (-), que equivale a un caracter.</p> <p>La sintaxis de Do es la siguiente:D O expresion, [expresion,</p> <p>. . .]</p> <p>DO tiene el mismo efecto que SELECT, a exception de que no devuelve resultados (lo que lo hace ligeramente mas rapido).</p> <p>DROPLa sintaxis de DROP es la siguiente:DROP DATABASE [IF EXISTS] nornbre-de-base-de-datos DROP TABLE [IF EXISTS] nombre-de-tabla [ , nombre-de-tabla, [RESTRICT I CASCADE] DROP INDEX nombre-de-indice ON nombre-de-tabla</p> <p>...]</p> <p>DROP DATABASE elimina la base de datos y todas sus tablas.</p> <p>DROP TABLE elimina la tabla especificada. DROP I N D E X elimina el indice especificado. MySQL devuelve un error si la base de datos no existe, a menos que se utilice la clausula I F EX1STS. DROP TABLE confirma, automaticamente, las transacciones activas. RESTRICT y CASCADE no se implementan actualmente.p p p p p p p p p p p p -</p> <p>EXPLAINEXPLAIN nornbre-de-tabla EXPLAIN consults-select</p> <p>c o n s u l t a s e l e c t es la misma que la que especificamos en la descripci6n de SELECT. El uso de EXPLAIN con un nombre de tabla equivale a DESCRIBE n o m b r e d e t a b l a . El uso de EXPLAIN con una consulta proporciona informaci6n sobre i o m o se ejecutari la consulta, lo que resulta muy 6til para optimizar la consulta y aprovechar a1 maximo 10s indices asociados.</p> <p>FLUSH opcion-de-vaciado [,option-de-vaciado] ...</p> <p>La opcion FLUSH puede ser una de las siguientes:DES-KEY-FILE HOSTS LOGS QUERY CACHE PRIVILEGES STATUS TABLES [TABLE I TABLES] nombre-de-tabla [,nodre-de-tabla ...I TABLES WITH READ LOCK USER-RESOURCES</p> <p>A1 vaciar DE S KEY FIELDS se vuelven a cargar ]as claves DE S. Con la opci6n HOSTS se vacia la cache del servidor (que, por ejemplo, se utiliza despuCs de cambiar direcciones IP). A1 vaciar 10s registros (LOGS), se cierran y se vuelven a abrir 10s archivos de registro y se incrementa el registro binario. Al vaciar QUERY CACHE se defragmenta la cache de consultas. A1 vaciar 10s PRIVILEGES se vuelven a cargar las tablas de permisos desde la base de datos mysql. A1 vaciar STATUS se restablecen las variables de estado. A1 vaciar TABLES sucede lo mismo que a1 vaciar QUERY CACHE, per0 tambien se cierran todas las tablas abiertas. Solamente se pueden especificar determinadas tablas para ser vaciadas. Puede aiiadir un READ LOCK a las tablas, que resulta muy util para bloquear un grupo de tablas por motivos de creacion de copias de seguridad. A1 vaciar USER-R E SOURCES se restablecen 10s recursos de usuario (utilizados para limitar consultas, conexiones y actualizaciones por hora).</p> <p>GRANTGRANT tipo-de-privilegio [(lista-de-campos)] [ , tipo-de-privilegio [ (lista-de-campos) ] . ..] ON Inombre-de-tabla I * I * . * I nombre-de-base-de-dates.*) TO nombre-de-usuario [IDENTIFIED BY [PASSWORD] 'contrasefia'] [ , nombre-de-usuario [IDENTIFIED BY 'contrasefia'] ...I [REQUIRE NONE I [(SSLI X509)I [CIPHER cifrado [AND1I [ISSUER emis...</p>