Comandos y Sintasis Mysql
Comandos y Sintasis Mysql
Comandos y Sintasis Mysql
de referencia
de la sintaxis
de MySQL
En 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).
La convencion utilizada a lo largo de 10s apendices es la siguiente:
Los corchetes ( [ ] ) indican un elemento opcional. Por ejemplo:
Tres puntos (...) indican que la opcion se puede repetir. Por ejemplo:
SELECT expresion, .. .
indica que la expresion se puede repetir (separada por una coma), como se
indica a continuacion: SELECT f 1, f2,f3.
ALTER
La sintaxis de ALTER es la siguiente:
ALTER [IGNORE] TABLE nombre-de-tabla especif icacion-alter [,
especificacion-alter- I ...
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 siguien-
tes:
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 I
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
ANALYZE TABLE
ANALYZE TABLE nombre-de-tabla [, nombre-de-tabla.. .]
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.
BACKUP TABLE
BACKUP TABLE nombre-de-tabla [ ,nombre-de-tabla.. .] TO
'nombre-de-ruta'
BEGIN
BEGIN
CHECK TABLE
CHECK TABLE nombre-tbl [, nombre-tbl-. .. ] [opcion [opcion.. .] 1
La opcion puede ser una de las siguientes:
CHANGED
EXTENDED
FAST
MEDIUM
QUICK
COMMIT
COMMIT
CREATE
La 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]
DELETE
La 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]
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 duran-
te 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).
DESC
DESC equivale a DESCRIBE
DESCRIBE
DESCRIBE nombre-de-tabla (nombre-de-campo I comodin)
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.
La sintaxis de Do es la siguiente:
D O expresion, [expresion, . . .]
DO tiene el mismo efecto que SELECT, a exception de que no devuelve re-
sultados (lo que lo hace ligeramente mas rapido).
DROP
La 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
EXPLAIN
EXPLAIN nornbre-de-tabla
EXPLAIN consults-select
GRANT
GRANT 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 emisor [AND]] [SUBJECT asunto]] [WITH [GRANT OPTION I
MAX QUERIES PER HOUR # I MAX-UPDATES-PER-HOUR # I
MAXICONNECTIONSPER-HOUR #I1
INSERT
La sintaxis de I N S E RT puede ser una de las siguientes:
INSERT [LOW-PRIORITY I DELAYED] [IGNORE] [INTO] nombre-de-tabla
[ (nombre-de-campo, . . . ) 1 VALUES ( (expresion I
.
DEFAULT) , . . . ) , ( . . ) , . . .
INSERT [LOW-PRIORITY I DELAYED] [IGNORE] [INTO] nombre-de-tabla
.
[ (nombre-de-campo, . . . ) 1 SELECT . .
INSERT [LOW-PRIORITY I DELAYED] [IGNORE] [INTO] nombre-de-tabla
SET nombre-de-campo = (expresion I DEFAULT) , . . .
INSERT [LOW-PRIORITY] [IGNORE] [INTO] nombre-de-tabla [ (lista de
campos) ] SELECT . . .
INSERT aiiade nuevas filas a una tabla. Sin la lista inicial de campos, se
asume que 10s campos estan en el mismo orden que en la definicion, y que debe
haber un valor para cada uno de ellos.
Todas las columnas que no se definan explicitamente se configuran con su
valor predeterminado.
La palabra clave LOW PRIORITY hace que INSERT espere a que no haya
clientes leyendo la tabla antes de procesarla.
Con la palabra clave DELAY ED, MySQL libera el cliente per0 espera para
realizar la insercion.
I G N O R E hace que MySQL ignore las inserciones que resultan en la duplica-
cion de claves principales o exclusivas, en lugar de cancelarlas.
INSERT ..SELECT le permite insertar en una tabla desde filas existente de
una o varias tablas.
MySQL acepta cualquiera de las siguientes sintaxis para J O I N :
nombre-de-tabla, nombre-de-tabla
nombre-de-tabla [CROSS] JOIN nombre-de-tabla
nombre-de-tabla INNER JOIN condicion nombre-de-tabla
nombre-de-tabla STRAIGHT-JOIN nombre-de-tabla
nombre-de-tabla LEFT [OUTER] JOIN condicion nombre-de-tabla
nombre-de-tabla LEFT [OUTER] JOIN nombre-de-tabla
nombre-de-t abla NATURAL [LEFT [OUTER] ] JOIN nombre-de-tabla
nombre-de-tabla LEFT OUTER JOIN nombre-de-tabla ON
expresion condicional
nombre-deItabla RIGHT [OUTER] JOIN condicibn nombre-de-tabla
nombre-de-tabla RIGHT [OUTER] JOIN nombre-de-tabla
nombre-de-tabla NATURAL [RIGHT [OUTER] ] JOIN nombre-de-tabla
KILL
KILL id-subproceso
LOAD DATA lee datos de un archivo de texto y 10s aiiade a una tabla. Es una
forma mas rapida de aiiadir grandes volumenes de datos que por medio de
INSERT.
La palabra clave LOCAL indica que el archivo se encuentra en el equipo cliente;
en caso contrario, se asume que se encuentra en el servidor de bases de datos.
LOCAL no funciona si el servidor se ha iniciado con la opcion -local-
infi le=0 o si el cliente no ha podido admitirla.
Los archivos del servidor deben ser legibles para todos o encontrarse en el
directorio de bases de datos. Tambien necesitara el permiso FILE para utilizar
LOAD DATA en un archivo del servidor.
En el servidor, se supone que el archivo se encuentra en el directorio de bases
de datos de la base de datos actual si no se indica ninguna ruta. Si la ruta es
relativa, se asume que proviene del directorio de datos. Tambien se pueden utili-
zar rutas absolutas.
La palabra clave LOW PRIORITY hace que LOAD DATA espere hasta que
no haya ningun cliente leyendo la tabla antes de procesarla.
La palabra clave CONCURRENT permite que otros subprocesos puedan acce-
der a una tabla MyISAM a1 mismo tiempo que se ejecuta LOAD DATA (lo que
reducira la velocidad de LOAD DATA).
La palabra clave REPLACE hace que MySQL elimine y sustituya un registro
existente si tiene la misma clave principal o exclusiva que el registro que se va a
aiiadir. I G N O R E hace que MySQL continue con el siguiente registro.
Si se especifica una clausula FIELDS, a1 menos se necesita una de las si-
guientes opciones: TERMINATED BY, [OPT IONALLY 1 ENCLOSED BY y
ESCAPED BY. Si no se especifica ninguna clausula FIELDS, se asume que las
predeterminadas seran FIELDS TERMINATED BY ' \ t ENCLOSED BY
' ' ESCAPED BY ' \ \ ' . Estas clausulas especifican el caracter a1 final de un
campo (de forma predeterminada, una tabulacion), que rodean a1 campo (de for-
ma predeterminada nada) y el caracter de salida (de forma predeterminada, la
barra invertida). Debe prestar especial atencion cuando utilice rutas de Windows
para salir de la ruta correctamente.
Sin una clausula L I NE S, se asume que la predeterminada sera L I N E S
TERMINATED BY ' \ n ' . Especifica el caracter a1 final de un registro (de
forma predeterminada, una nueva linea). La opcion I G N O R E numero L I N E S
ignora una serie de lineas en la parte superior del archivo (lo que resulta muy util
cuando el archivo contiene un encabezado).
LOAD DATA INFILE es el complemento de SELECT...INTO INFILE.
LOCK TABLES
LOCK TABLES nombre-de-tabla [AS alias] {READ I [READ LOCAL] I
[LOW-PRIORITY]
WRITE) [ , nombre-de-tabla {READ I [LOW-PRIORITY] WRITE) . . . ]
La sintaxis de RE N AM E es la siguiente:
RENAME TABLE nombre-de-tabla T O nuevo-nombre-de-tabla
[ , nombre-de-tabla2 T O nuevo-nombre-de-tabla2 , . . I
REPAIR TABLE
REPAIR TABLE nombre-de-tabla [,nombre-de-tabla ... ] [EXTENDED]
[QUICK] [USE-FRM]
Repara una tabla MyISAM daiiada. Con la opcion QUICK, solamente se re-
para el arb01 de indices.
Con EXTENDED, el indice se vuelve a crear fila a fila. Con U S E R FRM, el
indice se repara en funcibn del archivo de datos (para cuando falte elindice o
este totalmente dafiado).
REPLACE
La sintaxis de REPLACE puede ser una de las siguientes:
REPLACE [LOW-PRIORITY I DELAYED] [INTO] nombre-de-tabla
..
[ (nombre-de-campo,. . . ) 1 VALUES (expresion,. . . ) , ( . . . ) , .
REPLACE [LOW-PRIORITY I DELAYED] [INTO] nombre-de-tabla
.
[ (nombre-de-campo, . . ) 1 SELECT ...
REPLACE [LOW-PRIORITY I DELAYED] [INTO] nombre-de-tabla SET
nombre-de-campo =expresion, nombre-de-campo =expresion, ...
REPLACE es exactamente igual que INSERT, a excepcion de que cuando
MySQL encuentra un registro con una clave principal o exclusiva que ya existe,
la elimina y la reemplaza.
RESET
RESET opcion-reset [,option-reset] ...
o p c i o n-r e s e t puede ser una de las siguientes:
MASTER
QUERY CACHE
SLAVE
RESTORE TABLE
RESTORE TABLE nombre-de-tabla [,nombre-de-tabla . . . I FROM 'ruta'
Recupera una tabla de la que se ha creado una copia de seguridad con BACKUP
TABLE.
No sobrescribe las tablas existentes.
REVOKE
REVOKE tipo-de-privilegio [(lista-de-campos)] [,tipo-de-privilegio
[ (lista-de-campos) 1
... ] ON {nombre-de-tabla I * I * . * I nombre-de-base-de-dates.*)
FROM nombre-de-usuario
[ , nombre-de-usuario . ] ..
Elimina 10s privilegios concedidos previamente a 10s usuarios especificados.
t ipo -de-privi legio puede ser cualquiera de 10s privilegios enumerados
para GRANT.
ROLLBACK
ROLLBACK
SELECT
La sintaxis de SELECT es la siguiente:
SELECT [STRAIGHT-JOIN] [SQL-SMALL-RESULT] [SQL-BIG-RESULT]
[SQL-BUFFER-RESULT] [SQL-CACHE I SQL-NO-CACHE]
[SQL-CALC-FOUND-ROWS] [HIGH-PRIORITY] [DISTINCT I
.
DISTINCTROW I ALL] expresion, . . [INTO (OUTFILE I
DUMPFILE) 'nombre-de-archivo' opciones-de-exportation]
[FROM nombres-de-tabla
[WHERE clausula-where] [GROUP BY {entero-sin-firma I
nombre-de-campo I formula) [ASC I DESC], . . . [HAVING
definicionwhere] [ORDER BY (entero-sin-firma I
nombre-de-campo I formula) [ASC I DESC], . . . ] [LIMIT
[desplazamiento,] filas] [PROCEDURE nombre-procedimiento] [FOR
UPDATE I LOCK IN SHARE MODE] ]
La clausula WHERE esta formada por condiciones (que pueden contener fun-
ciones) que debe cumplir una fila para poder ser devuelta:
SELECT team-name FROM results WHERE points > 10
SQL CALC FOUND ROWS hace que MySQL calcule el numero de filas que
se tendrian que-haber de-vuelto si no hubiera una c l ~ u s u l aLIMIT. Esta cifra se
puede obtener con ayuda de la funcion SELECT FOUND ROWS ( ) .
SQL CACHE hace que MySQL almacene el resultado en la cachC de consul-
tas y, SQL-NO-CACHE, que no lo haga. Se trata de dos extensiones MySQL no
ANSI.
STRAIGHT J O I N (una extension MySQL no ANSI) hace que el optimizador
combine las tablas en el orden en el que aparecen en la clausula FROM, lo que
puede aumentar la velocidad de las consultas si las tablas se combinan de una
forma que no sea optima (utilice EXPLAIN para comprobarlo).
SELECT...INTO OUT FILE ' nombre de archivo" escribe 10s resul-
tados en un nuevo archivo (que todo el mundo plede leer) en el servidor. Nece-
sita el permiso FILE para utilizarlo. Es el complemento de LOAD DATA INFILE
y utiliza las mismas opciones.
A1 utilizar I N T O DUMPFILE, MySQL escribe una fila en el archivo, sin
columnas o terminaciones de linea y sin conversiones de escape.
Con tablas InnoDB y BDB, la clausula FOR UPDATE escribe bloqueos en las
filas.
SET
SET [GLOBAL I SESSION] nombre-de-variable =expresion, [[GLOBAL I
SESSION I
LOCAL ] nombre-de-variable =expresion ...I
m
SET TRANSACTION
SET [GLOBAL I SESSION] TRANSACTION ISOLATION LEVEL { READ UNCOMMITTED
I READ COMMITTED I REPEATABLE READ I SERIALIZABLE )
Define el nivel de aislamiento de transacciones. De forma predeterminada,
solamente se aplica a la siguiente transaccion, a menos que se utilicen las pala-
bras clave S E S S I O N o GLOBAL (que determinan el nivel de todas las transac-
ciones en la conexion actual o en todas las transacciones de las nuevas
conexiones).
SHOW
La sintaxis de SHOW puede ser una de las siguientes:
SHOW DATABASES [LIKE expresion]
SHOW [OPEN] TABLES [FROM nombre-de-base-de-datos] [LIKE expresion]
SHOW [FULL] COLUMNS FROM nombre-de-tabla [FROM
nombre-de-base-de-datos] [LIKE expresion]
SHOW INDEX FROM nombre-de-tabla [FROM nombre-de-base-de-datos]
SHOW TABLE STATUS [FROM nombre-de-base-de-datos] [LIKE expresion]
SHOW STATUS [LIKE expresion]
SHOW VARIABLES [LIKE expresion]
SHOW LOGS
SHOW [FULL] PROCESSLIST
SHOW GRANTS FOR usuario
SHOW CREATE TABLE nombre-de-tabla
SHOW MASTER STATUS
SHOW MASTER LOGS
SHOW SLAVE STATUS
TRUNCATE
TRUNCATE TABLE nombre-de-tabla
UNLOCK TABLES
UNLOCK TABLES
UPDATE
UPDATE [LOW-PRIORITY] [IGNORE] nombre-de-tabla SET
nombre-de-campol=expresionl [, nombre-de-campo2=expresibn2, ...I
[WHERE cldusula-where] [LIMIT #]
USE
USE nombre-de-base-de-datos
Operadores Iogicos
Los operadores Iogicos, o booleanos, comprueban si algo es verdadero o falso.
Devuelven 0 si la expresion es falsa y 1 si es verdadera. Los valores nulos se
procesan de distintas formas, en funcion del operador. Normalmente devuelven
un valor NULL.
AND, &&
v a l o r l AND v a l o r l
v a l o r l & & valor2
valorl OR valor2
valorl I I valor 2
NOT, !
NOT valorl
! valorl
Operadores aritmeticos
Los operadores aritmeticos realizan calculos matematicos basicos. Si alguno
de 10s valores es nulo, 10s resultados de toda la operacion tambien lo seran. Por
motivos del calculo, las cadenas se convierten en numeros. Algunas cadenas se
convierten a1 numero equivalente (como las cadenas '1' y '33'); otras se convierten
en 0 (como las cadenas 'uno' y 'abc').
valorl + valor2
Suma dos valores.
Por ejemplo:
mysql> SELECT 1 + 3 ;
+-+
1 1+3 1
+-+
1 4 1
+-+
mysql> SELECT 1 5 + " 9 r 1;
valorl - valor2
valorl / valor2
Devuelve el modulo (el resto que se obtiene despues de dividir valorl por
valor2). Por ejemplo:
mysql> SELECT 3%2;
+-+
1 3%2 1
+-+
I 1 I
+-+
Operadores de comparacion
Los operadores de comparacion comparan valores y devuelven verdadero o
falso ( 1 o 0) en funcion de 10s resultados. Si hay un valor nulo, en la mayoria de
10s casos el operador devolvera el valor NULL. Se pueden comparar distintos
tipos (cadenas, numeros, fechas, etc.) aunque si 10s tipos son diferentes tendra
que prestar especial atencion. MySQL convierte 10s tipos a su equivalente todo lo
bien que puede.
Si se trata de comparar cadenas, se comparan sin distinguir entre maytisculas
y minusculas, a menos que Sean BINARY.Por ejemplo, A es lo mismo que a , per0
BINARY A no es lo mismo que BINARY a. En este caso primer0 vienen las
mayusculas, por lo que BINARY A es menor que BINARY a. Del mismo modo, la
cadena 10 es menor que la cadena 2 porque, a1 ser una cadena, se compara de
izquierda a derecha. La primera comprobacion es ver si 1 es menor que 2 y, como
si lo es, la comprobacion se detiene en ese punto (lo mismo queaz es anterior ab).
valorl = valor2
v a l o r l <> v a l o r 2
valorl != valor2
Verdadero si valor 1 no es igual a valor 2 .
Por ejemplo:
mysql> SELECT 'a' != 'A';
+-
-- +
1 'at != 'A' 1
+- +
I 0 I
+- +
mysql> SELECT BINARY 'a' <> 'A';
+ +
I BINARY 'a' <> 'A' I
+ +
I 1 I
+ +
IS NULL
valorl IS NULL
I 1 I
+ +
mysql> SELECT 0 I S NULL;
+- +
I 0 IS NULL I
+---+
I 0 I
+- +
I 1 BETWEEN 0 AND 2 1
I 1 I
+ +
mysql> SELECT la' BETWEEN 'A' and
+ +
I 'a' BETWEEN 'A' and 'B' I
+ +
I .I I
+ +
mysql> SELECT BINARY 'a' BETWEEN 'A' AND 'C';
REGEXP, RLlKE
valorl REGEXP valor2
v a l o r l RLIKE v a l o r 2
Por ejemplo:
m y s q l > SELECT ' p q w x y z ' REGEW 'xyz';
+-- +
I 'pqwxyz' REGEXP 'xyz' I
+ +
I 1 I
+ +
m y s q l > SELECT xyz ' REGEW ' " x u;
+ +
I 'xyz' REGEXP ' " X I I
+ +
I 1 I
+ +
mysql> SELECT ' a b c d e f l REGEXP ' g + ' ;
+ +
I 'abcdef ' REGEXP 'g+' I
+ +
I 0 I
+ +
mysql> SELECT ' a b c d e f REGEXP 'gf ;
+ +
I ' a b c d e f ' REGEXP ' g* 1
+ +
I 1 I
+ +
mysql> SELECT ' i a n ' REGEXP ' i a i f n l ;
I 1 I
+ +
mysql> SELECT ' a b c b b c c c c ' REGEXP ' ( a l b l c) ( 3 ) ' ;
+ +
I ' abcbbcccc' REGEXP
Operadores de bits
Los operadores de bits no se utilizan muy a menudo. Le permiten trabajar con
valores de bits y realizar operaciones de bits en sus consultas.
Realiza una operacion AND en orden de bits. Convierte 10s valores a binarios y
compara 10s bits. Solamente si ambos bits correspondientes son I, el bit resultan-
te tambien sera 1.
Por ejemplo:
m y s q l > SELECT 2 h 1 ;
+-+
1 2&1 1
+-+
1 0 1
+-+
m y s q l > SELECT 3 h 1 ;
+-+
1 3&1 1
+-+
1 1 1
+-+
valorl I valor2
v a l o r l >> v a l o r 2
ADDDATE
ADDDATE (fecha,INTERVAL tipo de expresion)
CURDATE
CURDATE ( )
CURRENT-DATE
CURRENT-DATE ( )
CURRENT-TIME
CURRENT-T IME ( )
Devuelve la hora actual del sistema bien como la cadena hh:mm:ss o como el
numero hhrnmss, en funcion del contexto. Por ejemplo:
mysql> SELECT CURRENT-TIME ( ) ;
+ +
I CURRENT-TIME () I
+ +
1 23:53:15 I
+ +
mysql> SELECT CURRENT-TIME() + 1;
+ +
I CURRENT-TIME() + 1 I
+ +
I 235434 1
+ +
CURRENT-TIMESTAMP
CURRENT-TIMESTAMP ( )
CURTIME ( )
DATE-ADD
DATE-ADD (fe c h a , INTERVAL t i p o de e x p r e s i o n )
DATE-FORMAT
DATE-FORMAT(fecha, cadena-f ormato)
Por ejemplo:
mysql> SELECT DATE-FORMAT ( '1999-03-02 , %c %MI ) ;
DAYNAME ( fecha)
I Monday
DAYOFMONTH
D A Y O F M O N T H (fecha)
DAYOFYEAR
DAYOFYEAR (fecha)
EXTRACT
EXTRACT (tipo-de-fecha FROM f echa)
I 2002 1
+ +
mysql> SELECT EXTRACT (MINUTE-SECOND FROM '2002-02-03
l2:32:45') ;
I EXTRACT(M1NUTE-SECOND FROM '2002-02-03 1 2 : 3 2 : 4 S 1 ) 1
FROM-DAYS
FROM-DAYS ( n u m e r o )
FROM-UNlXTlME
F R O M ~ U N I X T I M E ( m a r c a ~ d e ~ t i e m p o ~ u n[ i
, x cadena-formato])
HOUR
H O U R (hora)
MINUTE
MINUTE (hora)
MONTH
MONTH (fecha)
MONTHNAME
MONTHNAME ( fecha)
I MONTHNAME ('2000-12-25') 1
+ +
I December 1
Devuelve la marca de hora actual (fecha y hora en formato AAAA-MM-DD
hh:mm:ss), bien como cadena o como numero en funcion del contexto. La funcion
devolvera el mismo resultado en varias llamadas a una misma consulta.
Por ejemplo:
mysql> SELECT NOW() :
+ +
I NOW0 I
PERIOD-ADD
PERIOD-ADD (periodo,meses)
PERIOD-DlFF
QUARTER
QUARTER (fecha)
SEC-TO-TIME
SEC-TO-TIME (segundos)
I SEC-TO-TIME (-10000) I
+ +
1 -02:46:40 I
SECOND
SECOND (hora)
Sinonimo de DATE -S U B ( ) .
SYSDATE
SYSDATE ()
TIME-FORMAT
TIME-FORMAT(hora, f ormato)
TIME-TO-SEC
TIME-TO-SEC (hora)
TO-DAYS
TO-DAYS (fecha)
Devuelve un entero sin firma que representa la marca de tiempo Unix (10s
segundos transcurridos desde medianoche del 1 de enero de 1970) bien de la hora
del sistema (si se invoca sin un parametro) o bien de la fecha especificada.
Por ejemplo:
mysql> SELECT UNIX-TIMESTAMP ( ) ;
+ +
I UNIX-TIMESTAMP() I
+ +
I 1031621727 1
WEEK
WEEK (date [ , inicio-semana] )
I 26 1
+ +
mysql> SELECT WEEK( '2002-06-31 ' ,1);
+ +
mysql> SELECT WEEK( 'l998-l2-3ll ,1) ;
+ +
I WEEK('1998-12-31', 1) I
+ +
I 53 1
+ +
mysql> SELECT WEEK( ' 1998-01-01' ) ;
+ +
WEEKDAY
WEEKDAY (fecha)
Utilice DAY 0 FWEEK ( ) para devolver el indice de dia segun el estindar ODBC
(1-7, domingo-sabado).
YEAR
YEAR (fecha)
Funciones de cadena
Las funciones de cadena suelen adoptar argurnentos de cadena y devolver resulta-
dos de cadena. A1 contrario de lo que ocurre en la mayoria de 10s lenguajes de progra-
macion, el primer caracter de la cadena se corresponde a la posicion 1, no a 0.
ASCII (cadena)
Devuelve el valor ASCII del primer caracter (el que se encuentra mas a la
izquierda), 0 si la cadena esta vacia y NULL si la cadena es nula.Por ejemplo:
mysql> SELECT ASCII('a');
+-
-- +
I ASCII('al) I
+-
-- +
I 97 1
+-------- +
mysql> SELECT A S C I I ( aa') ;
+------- +
I ASCII('azl) I
+-
-- +
I 97 1
+------ +
Utilice O R D ( ) para devolver el valor ASCII si el caracter es un caracter
multibyte.
BIN(numero)
BIT-LENGTH
BIT-LENGTH (cadena)
Devuelve la longitud de la cadena en bits.
Por ejemplo:
mysql> SELECT BIT-LENGTH ( ' MySQL ' ) ;
+ +
I BIT-LENGTH('MySQL1) I
+ +
1 40 I
+ +
CHAR
Esta funcion devuelve 10s caracteres que se obtendrian si cada numero fuera
un entero convertido desde codigo ASCII, ignorando 10s valores nulos. Los deci-
males se redondean a1 valor entero m h proximo. Por ejemplo:
mysql> SELECT CHAR(97,101,105,111,117);
+ +
I CHAR(97,101,105,111,117) I
+ +
I aeiou I
+ +
mysql> SELECT CHAR (97.6,101,105,111,117)
;
+ +
I beiou
+ +
CHAR-LENGTH
Sinonimo de la funcion LENGTH ) , a excepcion de que 10s caracteres multibyte
solamente se cuentan una vez.
CONCAT
CONCAT-WS
CONCAT-WS(separador, cadenal [ , cadena2 [ , .. . ] 1)
Similar a CONCAT a excepcion de que el primer argument0 es un separador
situado entre cada una de las cadenas concatenadas. Ignora todas las cadenas
nulas (a excepcion del separador, en cuyo caso el resultado sera NULL). No es
necesario que el separador sea una cadena.
Por ejemplo:
mysql> SELECT CONCAT-WS ( - ' , ' a ' , 'b') ;
+ +
I CONCATJS('-', 'a', 'b') I
+ +
I a-b I
+ +
mysql> SELECT CONCAT-WS ( 1 , . 3 , - 4 ) ;
+ +
I CONCAT-WS ( 1,.3, - 4) I
+ +
1 0.310.4 I
+ +
mysql> SELECT CONCAT-WS (NULL, ' a , 'b' ) ;
7
CONV
C O W (numero, de-base, a-base)
+ +
1 row in set (0.00 sec)
mysql> SELECT C O W ( ' 3 z 1 , 1 6 , l o ) ;
+ +
ELT
ELT (numero, cadenal [ , cadena2, . . .I )
1 NULL I
+ +
La funcion FIELD ( ) es el complemento de ELT () .
EXPORT-SET
FIND-IN-SET
FIND-IN-SET(cadena,lista de cadenas)
I 2 1
+ +
mysql> SELECT FIND-IN-SET ( a ' , ' aa,bb,cc ' ) ;
I FIND-IN-SET('a','aa,bb,cc') I
+ +
I 0 I
mysql> SELECT H E X ( 9 7 ) ;
+- - +
I HEX(97) I
+- +
1 61 I
+-+
1 row in set (0.00 sec)
I What is M y S Q L I
+ +
mysql> SELECT INSERT ( 'MySQLt ,1,1, 'PI);
+ +
I INSERT('MySQL',l,l,lP') I
I 1 I
+ +
mysql> SELECT INSTR ( ' C e c i l i a ' , ' i ' ) ;
LCASE
LCASE (cadena)
LEFT
LEFT (cadena, longitud)
LENGTH
LENGTH (cadena)
I 5 1
+ +
mysql> SELECT LENGTH ( 9 9 ) ;
+- +
I LENGTH(99) I
CHAR LENGTH ( ) , CHARACTER-LENGTH ( ) y OCTET -LENGTH ( ) son
sin6nimo& a excepcibn de que 10s caracteres multibyte solamente se cuentan una
vez con CHAR -LENGTH ( ) y CHARACTER-LENGTH ( ) .
LOAD-FILE
LOAD-FILE (nombre-deLoAD_FILEoar~hivo)
Lee el archivo y devuelve 10s contenidos del mismo como cadena. El archivo
debe encontrarse en el servidor, debe especificar la ruta completa a1 archivo y
debe tener el privilegio FI L E. El archivo debe ser legible para todos y ser mas
pequefio que max a 1l o w e d p a c k e t . Si el archivo no existe o no se puede
leer por alguna deias razonesanteriores, la funci6n devuelve NULL.
Por ejemplo, si el archivo /home / i a n g / t e s t . t x t contiene el texto 123456,
con LOAD-FILE ( ) se devolveria lo siguiente:
mysql> SELECT LOAD-FILE ( /home/iang/test.txt ) ;
+ +
I LOAD-FILE('/home/iang/test.txt') I
+ +
1 123456 1
LOCATE
LOCATE(subcadena, cadena [,position]
LOWER
LOWER (cadena)
Devuelve una cadena con todos 10s caracteres convertidos a minusculas (en
funcion del conjunto de caracteres actual). La funcion es segura para multibytes.
Por ejemplo:
mysql> SELECT LOWER( ' A b C 1 );
+ +
I LOWER('AbC1) I
+ +
I abc I
+ +
La funcion LCASE () es un sinonimo de esta.
I too-lon I
+ +
mysql> SELECT L P A D ( ' a l ,4, '12');
LTRIM (cadena)
MAKE-SET
MAKE-SET (numero, cadenal [ , cadena2, ... ] )
Devuelve un conjunto (una cadena en la que 10s elementos e s t h separados por
comas) con las cadenas que coinciden con el numero convertido a binario. La
primera cadena aparece si se configura el bit 0, la segunda si se configura el bit 1
y asi sucesivamente. Si el argument0 de bits se define con el valor 3, se devuelven
las dos primeras cadenas ya que 3 es 11 en binario. Por ejemplo:
mysql> SELECT MAKE-SET ( 3 , ' a ' , ' b ' , ' c ' ) ;
I a,b I
+ +
mysql> SELECT MAKE-SET(5, 'a' , 'b', 'c') ;
OCT
OCT (numero)
OCTET-LENGTH
Sinonimo de la funcion LENGTH.
ORD
ORD (cadena)
Devuelve el valor ASCII del primer caracter de la cadena (el que se encuentra
m b a la izquierda), 0 si la cadena esta vacia y NULL si la cadena es nula. Es
similar a la funcion ASCII, a excepcion de que el caracter es un caracter multibyte,
en cuyo caso el valor se calcula como un numero de base 256, es decir, cada byte
vale 256 veces mas que el siguiente. Por ejemplo, la formula para un caracter de
2 bytes seria la siguiente: (byte-1-codigo ASCII * 256) + (byte-2-codigo ASCII).
Por ejemplo:
mysql> SELECT ORD ( " a " ) ;
+- +
I ORD("aW) I
+- +
I 97 1
+- +
mysql> SELECT ORD ( " a z " ) ;
+- +
I ORD("az") I
+- +
I 97 1
Puede utilizar las funciones B I N ( ) , OCT ( ) y HEX ( ) para convertir numeros
decimales en binarios, octales y hexadecimales respectivamente.
POSITION
POSITION (subcadena IN cadena)
Busca, sin distinguir entre mayusculas y minusculas (a menos que uno de 10s
argumentos sea una cadena binaria), la primera instancia de s u b c a d e n a en
c a d e n a y devuelve la posicion (empezando desde 1) o 0 si no encuentra
s u b c a d e n a . La funcion es segura para multibytes.
Por ejemplo:
mysql> SELECT POSITION ( ' i ' IN 'Cecilia');
+ +
I POSITION('it IN 'Cecilia') I
+ +
I 4 1
+ +
QUOTE
QUOTE (cadena)
REPEAT
REPEAT (cadena, numero)
REPLACE
REVERSE
REVERSE (cadena)
I REVERSE ('abc' ) I
+ +
I cba I
+ +
RIGHT
RIGHT (cadena, longitud)
Devuelve el numero de caracteres especificados en longi tud situados mas a
derecha. Esta funcion es segura para multibytes.
Por ejemplo:
mysql> SELECT RIGHT ( ' abc ,2);
+ +
I RIGHT('abcV,2) I
+ +
I bc I
+ +
I too-lon I
mysql> SELECT RPAD('aa,4,'12');
+ +
RTRIM (cadena)
Devuelve una cadena soundex, una cadena fonetica diseiiada para indexar
errores ortograficos de forma mas eficaz. Las cadenas que suenan de la misma
forma tendran las mismas cadenas soundex. Normalmente tiene una longitud de
cuatro caracteres per0 esta funcion devuelve una cadena de longitud arbitraria.
Utilice la funcion SUBSTRING ( ) sobre SOUNDEX ( ) para devolver una cadena
soundex esthdar. Los caracteres no alfanumericos se ignoran y 10s caracteres
alfabeticos no ingleses se tratan como vocales.
Por ejemplo:
mysql> SELECT SOUNDEX ( 'MySQL1) ;
+ +
I SOUNDEX('MySQL') I
+ +
I M240 I
+ +
mysql> SELECT SOUNDEX ( l M y S e q u l t ) ;
+ +
I SOUNDEX ( 'MySequl' ) I
SPACE (numero)
SUBSTRING
SUBSTRING(cadena, posicion [,longitud])
SUBSTRING (cadena FROM posicion [FOR longitud] )
SUBSTRING-INDEX
I I am w h I
+ +
mysql> SELECT SUBSTRING-INDEX ( I am what I a m 1, a ' ,-2);
I W h a t a w a s t e of space I
+ +
mysql> SELECT TRIM(LEAD1NG ' 0 ' FROM ' 0 0 0 1 ' ) ;
+ +
I TRIM(LEAD1NG ' 0 ' FROM ' 0 0 0 1 ' ) 1
+- +
I 1 I
I 1 I
+ +
mysql> SELECT TRIM(B0TH ' abc ' FROM ' abcabcaabbccabcabc );
UCASE
UCASE ( c a d e n a )
Sinonimo de UPPER().
UPPER
UPPER ( c a d e n a )
Devuelve una cadena con todos 10s caracteres convertidos en mayusculas (en
funcion del conjunto de caracteres actual). La funcion es segura para multibytes.
Por ejemplo:
m y s q b SELECT UPPER ( aBcl) ;
+ +
I UPPER('aBcr) I
+ +
I ABC I
+ +
Su sinonimo es la funcion UCASE ().
Funciones numericas
Las funciones numericas trabajan con numeros y, basicamente, adoptan argu-
mentos numericos y devuelven resultados numericos. En caso de que se produzca
un error, devuelven NULL. Tendra que prestar especial atencion y no superar el
ambito numeric0 de un numero; la mayoria de las funciones MySQL funcionan
con BIGINT (263con sign0 o 264sin signo) y si se supera este ambito, MySQL
devolvera NULL.
ABS (numero)
ACOS
ACOS (numero)
Devuelve el arc0 coseno del numero (el coseno inverso). El numero debe estar
comprendido entre -1 y 1 o la funcion devolvera NULL.
Por ejemplo:
mysql> SELECT ACOS(0.9);
+- +
ASIN (numero)
Devuelve el arc0 seno del numero (el seno inverso). El numero debe estar
comprendido entre -1 y 1 o la funcion devolvera NULL.
Por ejemplo:
mysql> SELECT ASIN(-0.4) ;
+- -
- +
I ASIN(-0.4) I
+--- +
1 -0.411517 1
+------+
Devuelve la tangente del numero (la tangente inversa) o de dos numeros (el
punto n u m e r o 1,n u m e r o 2 ) . Por ejemplo:
mysql> SELECT ATAN(4) ;
+------ +
I ATAN(4) I
+- +
1 1.325818 1
+-+
mysql> SELECT ATAN(-4,-3) ;
+-
-- +
\ ATAN(-4,-3) I
+-
-- +
1 -2.214297 1
+-
-- +
CEILING
CEILING (numero)
Redondea el numero a1 entero mas proximo y lo devuelve como BGINT.
Por ejemplo:
mysql> SELECT CEILING ( 2 . 9 8 ) ;
+ +
I CEILING(2.98) (
+ +
I 3 1
+ +
mysql> SELECT CEILING ( - 2 . 9 8 ) ;
Utilice FLOOR ( ) para redondear hacia abajo y ROUND ( ) para hacerlo hacia
arriba o hacia abajo.
COS
COS ( n u m e r o - r a d i a n e s )
COT
DEGREES ( n u m e r o )
Convierte el numero de radianes a grados y devuelve el resultado.
Por ejemplo:
mysql> SELECT DEGREES ( 2 ) ;
+ +
I DEGREES (2) I
+ +
1 114.59155902616 1
+ +
mysql> SELECT DEGREES ( P I ( ) / 2 ) ;
+ +
I DEGREES (PI ( ) /2) I
+ +
I 90 1
+ +
EXP
EXP (numero)
FLOOR
FLOOR (numero)
FORMAT
FORMAT (numero,decimales)
Aplica un formato a un numero de forma que cada tres digitos se separen por
una coma y redondea el resultado hasta el numero de posiciones indicado.
Por ejemplo:
mysql> SELECT FORMAT ( 8 8 7 7 7 6 3 4 . 2 3 2 , 2 ) ;
+ +
I FORMAT (88777634.232,2) 1
+ +
1 88,777,634.23 I
GREATEST
GREATEST (argumentol, argument02 [, .. . ] )
Devuelve el mayor de 10s argumentos. Los argumentos se comparan de distin-
tas formas en funcion del context0 del valor devuelto o de 10s tipos de argumento,
que pueden ser enteros, reales o cadenas (que distinguen entre mayusculas y mi-
nusculas, y son la opcion predeterminada).
Por ejemplo:
mysql> SELECT GREATEST ( - 3 , - 4 , 5 ) ;
+ +
I GREATEST (-3, -4,5) 1
+ +
I 5 1
+ +
mysql> SELECT GREATEST( ' P a ' , ' M a 1, ' C a r ) ;
+ +
I GREATEST('Pa','Maf,'Ca') I
LEAST
LEAST (argumentol, argument02 [, ... ] )
Devuelve el menor de 10s argumentos. Los argumentos se comparan de distin-
tas formas en funcion del context0 del valor devuelto o de 10s tipos de argumento,
que pueden ser enteros, reales o cadenas (que distinguen entre mayusculas y mi-
nusculas, y son la opcion predeterminada).
Por ejemplo:
mysql> SELECT LEAST ( - 3 , - 4 , 5 ) ;
+ +
I LEAST(-3,-4,5) I
+ +
I -4 1
+ +
mysql> SELECT LEAST ( ' P a ' , ' M a ' , 'Ca') ;
+ +
I LEAST('Pa','Ma','Cal) I
+ +
I Ca I
LN (numero)
LOG
LOG2 (numerol)
POW
POWER
RADIANS
RADIANS (numerol)
Convierte el numero de grados a radianes y devuelve el resultado.
Por ejemplo:
mysql> SELECT RADIANS ( 1 8 0 ) ;
+ +
I RADIANS (180) I
+ +
1 3.1415926535898 1
+ +
RAND ( [ n u m e r o ] )
ROUND
SIGN (numero)
SIN (numero-radianes)
TAN
TRUNCATE
TRUNCATE(numero,decimales)
I 2.23 1
+ +
mysql> SELECT TRUNCATE ( 2 . 4 , s ) ;
+ +
I TRUNCATE(2.4,5) I
+ +
1 2.40000 1
+ +
mysql> SELECT TRUNCATE ( 2 . 9 9 8 , O ) ;
+ +
I TRUNCATE(2.998,O) I
+ +
I 2 1
+ +
mysql> SELECT TRVNCATE ( - 1 2 . 4 3 , l ) ;
+ +
I TRUNCATE(-12.43,l) I
+ +
I -12.4 1
Funciones agregadas
Las funciones agregadas son las que trabajan con un grupo de datos (lo que
significa que se pueden utilizar en una clausula G R O U P BY). Si no existe esta
clausula, se asume que el grupo es todo el conjunto de resultados y devuelven
solamente un resultado. En 10s siguientes ejemplos, imagine que existe una senci-
lla tabla como esta:
mysql> SELECT * FROM tablel;
+- +
I field1
+- +
I 4
I 12
I 12
I 20
+- +
4 rows in set (0.00 sec)
AVG(expresion)
BIT-AND
BIT-AND(expresion)
Devuelve el operador AND en orden de bits de todos 10s bits de las expresiones
del grupo (con una precision de 64 bits).
mysql> SELECT BIT-AND (fieldl) FROM tablel;
+ +
I BIT-AND(field1) I
+ +
I 4 1
+ +
BIT-OR
BIT-OR (expresion)
Devuelve el operador OR de todos 10s bits de las expresiones del grupo (con
una precision de 64 bits).
Por ejemplo:
mysql> SELECT BIT-OR (fieldl) FROM tablel;
+ +
I BIT-OR(field1) I
+ +
I 28 1
+ +
COUNT
COUNT( [DISTINCT] expresionl, [expresion2])
MAX
MAX (expresion)
Devuelve el mayor valor de las expresiones del grupo. La expresion puede ser
numerica o una cadena.
Por ejemplo:
mysql> SELECT MAX (fieldl) FROM tablel;
+-
-- +
I MAX (fieldl) I
MIN(expresion)
STD
STD (expresion)
STDDEV
STDDEV(expresion)
SUM (expresion)
Devuelve el valor mas pequefio de las expresiones del grupo o NULL si no hay
filas. La expresion puede ser un numero o una cadena.
Por ejemplo:
mysql> SELECT S U M ( f i e l d 1 ) FROM tablel ;
+------ +
Otras funciones
Entre las siguientes funciones se incluyen funciones de cifrado, de compara-
cion, de flujo de control y otros tipos de diversa naturaleza.
AES-DECRYPT
AES-ENCRYPT
BENCHMARK
CASE
CASE valor W H E N
[ v a l o r l ~ c o m p a r a c i o n ]T H E N resultadol [WHEN
[valor2~comparacion]
THEN resultado2 ..
. ] [ELSE resultado31 END
CASE WHEN [condicionl] THEN resultadol [WHEN [condicion2]
THEN resultado2 . . . ] [ELSE resultado31 END
I CASE 'b' WHEN 'a' THEN ' a it is' WHEN 'b' THEN ' b it is' END
I
mysql> SELECT CASE 9 WHEN 1 THEN ' i s 1' WHEN 2 THEN ' i s 2' ELSE
'not found' END;
I CASE 9 WHEN 1 THEN 'is 1' WHEN 2 THEN 'is 2' ELSE 'not found'
END I
I not found
I
+ +
mysql> SELECT CASE 9 WHEN 1 THEN ' i s 1' WHEN 2 THEN ' i s 2' END;
I CASE 9 WHEN 1 THEN 'is 1' WHEN 2 THEN 'is 2' END I
I NULL I
mysql> SELECT CASE WHEN 1>2 THEN '1>2' WHEN 2=2 THEN ' i s 2'
END ;
I CASE WHEN 1>2 THEN ' 1>2 ' WHEN 2=2 THEN 'is 2 ' END (
m y s q l > SELECT CASE WHEN 1 > 2 THEN ' 1 > 2 l WHEN 2 < 2 THEN l2<2' ELSE
' n o n e ' END;
I CASE WHEN 1 > 2 THEN ' 1>2' WHEN 2 < 2 THEN '2<2 ' ELSE ' n o n e ' END
I
1 none
I
+ +
m y s q l > SELECT CASE WHEN BINARY 'a' = 'A' THEN ' b i n 1 WHEN
l a l = t A l THEN ' t e x t ' END;
+ +
I CASE WHEN BINARY ' a ' = ' A ' THEN ' b i n ' WHEN 'al='A' THEN
' t e x t ' END I
I text
I
m y s q l > SELECT CASE WHEN BINARY 1=1THEN '1' WHEN 2 = 2 THEN ' 2 '
END ;
I CASE WHEN BINARY 1=1THEN ' 1 ' WHEN 2 = 2 THEN ' 2 ' END I
CAST
CAST ( e x p r e s i o n AS tipo)
1 7 I
+ +
mysql> SELECT C A S T ( 5 0 - 6 0 AS UNSIGNED INTEGER) ;
CONNECTION-ID
CONNECTION-ID ( )
CONVERT
C O NVERT (expresion,tipo)
DATABASE
DATABASE ( )
DECODE
DECODE(cadena~codificada,cadena~contrasefia)
DES-DECRYPT
DES-DECRYPT(cadena-cifrada [, cadena-clave])
DES-ENCRYPT
DES-ENCRYPT (cadena [ , (numero-clave I cadena-clave) ] )
Utiliza el algoritmo DES para codificar la cadena y devuelve una cadena binaria.
Si se omite el argumento de clave opcional, se utiliza la primera clave del archivo
de claves de descodificacion.
Si el argumento es un numero (comprendido entre 0 y 9), se utiliza la corres-
pondiente clave de archivo de claves de descodificacion. Si el argumento es una
cadena, se utilizara dicha clave.
Si 10s valores de clave cambian en el archivo de claves de descodificacion,
MySQL puede leer 10s nuevos valores cuando ejecute una instruccion
FLUSH DES KEY F I L E , que requiere el permiso *load.
~ s t a f u n c i c nsolamente funciona si MySQL es compatible con SSL.
Devuelve una cadena binaria codificada. Puede utilizar DECODE ( ) con la
misma c a d e n a c o n t r a s e Aa para devolver la cadena original. Las cadenas
codificada y descodificada tendrhn la misrna longitud. Por ejemplo:
mysql> SELECT ENCODE ( ' a ' , ' 1 ' ) ;
+ +
I ENCODE('at,'1') I
+ +
ENCRYPT
ENCRYPT(cadena [ , salt] )
FOUND-ROWS
FOUND-ROWS ( )
GET-LOCK
IFNULL ( e x p r e s i o n l , e x p r e s i 6 n 2 )
INET-ATON
INET-NTOA
IS-FREE-LOCK
IS-FREE-LOCK (cadena)
LAST-INSERT-ID
MASTER-POS-WAIT
I NULLIF('al,'b') I
+ +
I a I
+ +
mysql> SELECT NULLIF(1, '1 ) ;
+ +
I NULLIF(l,'lt) I
I NULL I
+ +
PASSWORD (cadena)
RELEASE-LOCK
SESSION-USER
SESSION-USER ( )
SHA
SHA (cadena)
Utiliza el algoritmo SHA (de hash seguro) para calcular una comprobacion de
160 bits a partir de la cadena y devuelve el numero hexadecimal de 40 digitos
resultante. Es una codificacion mas segura que la que se obtiene con la funcion
MD5 ( ) . Por ejemplo:
mysql> SELECT SHA ( how many more ' ) :
+ +
I SHA('how many more' ) I
+ +
I 38ccbb8146b0673fa91abba3239829af6f3e5a6b I
+ +
SHAl (cadena)
Sinonimo de SHA ( ) .
SYSTEM-USER
SYSTEM-USER ()
Sinonimo de S E S S I O N -USER ( )
USER
USER ()
Sinonimo de SESSION-U S E R ( )
VERSION
VERSION ( )
Devuelve la version del servidor MySQL en forma de cadena y adjunta -log
si se ha activado el registro.
Por ejemplo:
mysql> SELECT VERSION ( ) ;
+ +
I VERSION() 1
+ +
I 4.0.3-beta-log I
+ +
API PHP
PHP es uno de 10s lenguajes mas conocidos que se utilizan con MySQL, espe-
cialmente en entornos Web. En este apendice describiremos todas las funciones
PHP que funcionan con MySQL, incluyendo algunas que todavia no se incluyen
en la version comercial de PHP.
msyql-affected-rows
int m y s q l ~ a f f e c t e d ~ r o w s ( [ r e c u r s oc o n e x i o n ~ m y s q l ] )
Devuelve el numero de filas afectadas por la ultima instruction que haya mo-
dificado 10s datos (INSERT, UPDATE, DELETE, LOAD DATA, REPLACE) o -
1 si la consulta ha fallado. Recuerde que REPLACE I N T O afectara a dos filas
por cada fila de la tabla original afectada (una DELETE y otra INSERT). Si la
conexion a la base de datos no se especifica, se utiliza la ultima conexion que se
haya abierto.
Si utiliza transacciones, invoque m s y q l -affected -rows antes de invo-
car COMMIT.
Para devolver el numero de filas devuelto por una instruccion SELECT,utilice
msyql num rows ( ) .
Por ejempG:
/ / abra una conexion permanente a la base de datos
$connect = mysql-pconnect($hostname, Susername, Spassword);
Cambia el usuario MySQL actual (el que se haya conectado) por otro (es
necesario especificar el nombre de usuario y la contraseiia de este). Tambien
puede cambiar la base de datos a1 mismo tiempo o especificar una nueva co-
nexion; en caso contrario, se utilizaran la conexion y la base de datos actuales.
Devuelve TRUE si es satisfactoria y FALSE en caso contrario, manteniendo el
usuario y 10s detalles existentes.
Por ejemplo:
/ / abra una conexion permanente a la base de datos
$connect = mysql-pconnect (Shostname, Susername, Spassword);
mysql-client-encoding
int mysql-client-encoding ([recurso conexion-mysql])
$charset = m y s q l ~ c l i e n t ~ e n c o d i n g ( $ c o n n e c t ) ;
print "The current character set is $charset";
boolean mysql~close([recurso conexion-mysql])
msyql-connect
mysql-connection mysql-connect([cadena nombre de anfitrion
[ , cadena nombre de usuario
[ , cadena contrasefia [ , nueva - conexion booleana
[ , indicadores-cliente int]]]]])
Crea una nueva base de datos en el servidor por medio de la conexion especi-
ficada o de la ultima conexion abierta si no es especifica ninguna. Devuelve
t r u e si es satisfactoria y f a 1s e en caso contrario.
La nueva base de datos no se convierte en la base de datos activa. Tendra que
utilizar la funcion m s y q l s e 1e c t db ( ) para activarla.
Esta funcibn reemplaza< la obsoleta funci6n rnysql -c r e a t edb ( ) que to-
davia funciona.
Por ejemplo:
/ / abra una conexion permanente a la base de datos
$connect = mysql-pconnect($hostname, Susername, Spassword);
if (mysql-create-db("new-db", $connect)) (
print "Database new-db successfully created";
1
else
print "Database new-db was not created";
1
Devuelve una cadena con todos 10s caracteres de conversion de escape que
pueden dividir la consulta (con una barra invertida por delante de 10s mismos).
Entre estos caracteres se incluyen 10s nulos (\xOO), nueva linea (\n), retorno del
carro (\r), barra invertida (\), cornillas simple('), cornillas dobles (") y Control-Z
(\x1A).
No se aplica conversion de escape a 10s signos de porcentaje (%) y guion bajo
(-1.
De esta forma, la consulta resulta segura de utilizar. Siempre que se utilicen
entradas del usuario en una consulta, es aconsejable utilizar esta funcion para
garantizar la seguridad de la consulta.
Tambien puede utilizar la funcion a d d s l a s h e s ( ) , ligeramente menos com-
pleta.
Por ejernplo:
mysql-fetch-field
object m y s q l ~ f e t c h ~ f i e l d ( r e c u r s or e s u l t a d o ~ c o n s u l t a
[ , desplazamiento int 1 )
mysql-fetch-lengths
array m y s q l ~ f e t c h ~ l e n g t h s ( r e c u r s oresultado~consulta)
Devuelve una matriz de las longitudes de cada campo en la ultima fila obtenida
de un resultado de una consulta (la longitud de dicho resultado, no la longitud
maxima) y devuelve f a 1se si no ha sido satisfactorio.
Puede utilizar la funcion m y s q l -f i e l d -l e n ( ) para devolver la maxima
longitud de un campo.
Por ejemplo:
/ / abra una conexion a la base de datos
$connect = mysql-pconnect (Shostname, $username, Spassword);
mysql-fetch-object
object m y s q l ~ f e t c h ~ o b j e c t ( r e c u r s oresultado-consulta)
/ / procese una iteracion por las filas para devolver cada una
/ / de ellas como un objeto
/ / y mostrar 10s campos
while ($row = mysql-fetch-object ($result) ) {
print "Fieldl: ".$row->fieldl."<br>\nW;
print "Field2: ".$row->field2."<br>\nW;
1
mysql-fetch-row
array mysql~fetch~row(recursoresultado-consulta)
/ / procese una iteration por las filas para devolver cada una
/ / de ellas como matriz nurnerica
/ / y mostrar 10s campos
while ($row = mysql-fetch-row ($result) ) {
print "Fieldl: " . $row[O] . "<br>\nW;
print "Field2 : " . $row[l] . "<br>\nW;
1
mysql-field-flags
string m y s q l ~ f i e l d ~ f l a g s ( r e c u r s resultado-cadena,
o
desplazamiento int)
Devuelve una cadena que contiene indicadores del campo especificado basado
en un resultado de una consulta devuelto por una funcion comomysql q u e r y ( ) .
El desplazamiento determina quC campo se examina (0 para el prime~campo).
Entre 10s indicadores se incluyen
La antigua funcion mys q l -f i e 1d f 1a g s ( ) hace lo mismo, per0 se ha que-
dado obsoleta.
Por ejemplo:
/ / abra una conexion permanente a la base de datos
$connect = m y s q l ~ p c o n n e c t ( $ h o s t n a m e , $username, Spassword);
mysql-field-seek
boolean mysql-field-seek(recurso resultado-consulta,
desplazamiento int)
mysqlfield-table
string mysql-field-table(recurso resultado-consulta,
desplazamiento int)
for ($i=O;$i<mysql-n~m~fields
($result); $i++) {
echo "Field $i is of type: ".mysql-field-type($result, $i) .
"<br>\nW;
}
mysql-free-result
boolean mysql-free-result(recurso resultado-consults)
Libera toda la memoria utilizada por el recurso q u e r y r e s u l t , lo que
permite volverlo a utilizar. Devuelve t r u e si es satisfactorio-y f a l s e si no lo
es. La memoria se libera automaticamente a1 final de la secuencia de comandos
incluso sin invocar esta funcion. La funcion mysq 1-f r e e r e s u l t ( ) , ya
obsoleta, es identica.
Por ejemplo:
/ / abra una conexion permanente a la base de datos
$connect = mysql-pconnect(Shostname, Susername, Spassword);
/ / procese una iteration por las filas para devolver cada una
/ / de ellas como matriz numerica
/ / y muestre 10s campos
while ($row = mysql-fetch-row ($result) ) (
print "Fieldl: ".$row[O]."<br>\n";
print "Field2: " .$row[l]. "<br>\nV;
mysql-get-client-info
string mysql-get-client-info()
mysql-get-host-info
string m y s q l ~ g e t ~ h o s t ~ i n f o ( [ r e c u rconexion-mysql])
so
Devuelve una cadena que contiene informacion sobre la conexion (por ejemplo
"Servidor local a traves de un socket Unix). La informacion es de la conexion
especificada (o de la ultima conexion abierta en caso de no especificar ninguna en
concreto). Por ejemplo:
/ / muestra - Tipo de conexion: Servidor local a traves de un
/ / socket UNIX
/ / (por ejemplo)
print "Tipo de conexion: ".mysql-get-host-info();
mysql-get-proto-info
int mysql-get-proto-info ( [recurso conexion-mysql] )
Devuelve una cadena que contiene la version del servidor MySQL (por ejem-
plo, 4.0.3). La informacion se obtiene de la conexion especificada (o de la ultima
conexion abierta, en caso de no especificar ninguna en concreto).
Por ejemplo:
/ / muestra - Version del servidor: 4.0.3-beta-log (por ejemplo)
print "Version del servidor: ".mysql-get-server-infoo;
mysql-info
string mysql-info ( [recurso conexion-msyql])
/ / muestra:
/ / Information sobre la consulta: Formato de cadena: Filas que
/ / coinciden: 19 Modificada: 19 Advertencias: 0
/ / (por e j emplo)
print "Query info: " .mysql-in£o ( ) ;
mysql-i nsert-id
int mysql-insert-id([recurso conexion-mysql])
Devuelve un entero que contiene el valor AUTO INCREMENT mas reciente de
dicha conexion, o devuelve f a 1s e si falla (no se han definido valores
AUTO INCREMENT para esa conexion). La informacion se obtiene de la co-
nexi6n-especificada (o de la dtima conexion abierta, en caso de no especificar
ninguna en concreto).
Por ejemplo:
/ / abra una conexion permanente a la base de datos
$connect = mysql~pconnect($hostname, $username, Spassword);
Devuelve un recurso que contiene una lista de 10s procesos MySQL actuales o
f a 1 s e en caso de fallo. Tras ello, puede utilizar una funcion como
m y s q l f e t c h a s s o c ( ) para devolver una matriz que contenga 10s elemen-
tos ~ d , H o s tdb,
, Command y T i m e . La informacion proviene de la conexion
especificada (o de la ultima que se haya abierto, si no se especifica ninguna en
concreto).
Por ejemplo:
/ / abra una conexion a la base de datos
$connect = mysql-pconnect (Shostname, $username, Spassword);
Devuelve un recurso que apunta a una lista de tablas de una determinada base
de datos o f a l s e en caso de fallo. La informacion proviene de la conexion
especificada (o de la ultima que se haya abierto, si no se especifica ninguna en
concreto).
Por ejemplo:
/ / abra una conexion permanente a la base de datos
$connect = mysql-pconnect (Shostname, Susername, Spassword);
mysql-num -fields
int m y s q l ~ n u m ~ f i e l d s ( r e c u r s oresultado-consults)
mysql-num-rows
int mysql-num~rows(recurso resultado-consults)
Devuelve un entero que contiene el numero de filas de un resultado de una
consulta o NULL en caso de que se produzca un error. No funciona si el resultado
de la consulta se ha obtenido con la funcion m y s q l u n b u f f e r e d q u e r y ( ) .
Deberia utilizar mys q l a f f e c t e d r o w s ( ) p a r a devolver e i numero de
filas de datos modificados f i r una consulta (por ejemplo, despues de INSERT o
UPDATE ).
Por ejemplo:
/ / abra una conexion permanente a la base de datos
$connect = mysql-pconnect (Shostname, Susername, Spassword) ;
mysql-pconnect
mysql-connection mysql-pconnect([cadena nombre-anfitrion
[ , cadena nombre-usuario [ , cadena contraseda
[ , indicadores-cliente int]]]])
Establece una conexion permanente (una que se puede reutilizar) con un servi-
dor MySQL (especificado por el nombre de servidor, el nombre de usuario y la
contraseiia) y devuelve un identificador de enlaces que pueden utilizar otras fun-
ciones. Si ya existe uno, se reutilizara. El parametro final puede ser uno o varios
de 10s siguientes indicadores, que determinan elementos del comportamiento de
MySQL cuando se conecta:
mysql-client-compress. Utiliza un protocolo de compresion.
mysql-client-ignore-space. Permite que haya espacio detrh de 10s nom-
bres de funciones.
mysql-client-interactive. Espera el valor de la variable i n t e r a c t i v e
t i m e o u t en lugar del de la variable mysqld w a i t -t i m e o u t antes de
cerrar una conexion inactiva.
mysql-client-ssl. Utiliza el protocolo SSL.
MySQL cierra conexiones permanentes despues de 10s segundos especificados
en w a i t t i m e o u t (una variable mysqld) o despues de que se cierre el proceso
que ha i&iado la conexion. Por ejemplo, su proceso de servidor Web puede
utilizar la misma conexion para varias secuencias de comandos, per0 la conexion
se cerrara una vez que termine dicho proceso.
Por ejemplo:
/ / defina 10s parametros de conexion (normalmente se hace fuera
/ / de la secuencia de comandos)
Shostname = "localhost:3306";
Susername = "guru2b";
Spassword = "gOOr002b";
/ / el tiempo pasa.. .
if (mysql-ping 0 ) (
print "Still connected";
1
else (
print "Connection lost";
1
mysql-real -escape-string
string mysql-real-escape-string (cadena nombre de cadena
[ , recurso conexion-mysql] )
Devuelve una cadena con todos 10s caracteres a 10s que se ha aplicado conver-
sion de escape que pueden dividir la consulta (una barra invertida por delante de
10s mismos).
Entre estos se incluyen 10s nulos (\xOO), nueva linea (\n), retorno del carro
(\r), barra invertida (\), comillas simples (I), comillas dobles (") y Control-Z
(\xlA). No se aplica conversion de escape a 10s signos de porcentaje (%) y
guion bajo (-).
De esta forma, la consulta resulta segura de utilizar. Difiere de m y s q l -
e s c a p e -string ( ) en que tiene en cuenta el conjunto de caracteres actual.
Por ejemplo:
/ / cadena original no segura
$field-value = "Isn't it true that the case may be";
mysql-stat
string mysql-stat ( [recurso conexion-mysqll)
Devuelve una cadena que contiene el estado del servidor. Contiene el tiempo en
ejecucion, subprocesos, preguntas, consultas lentas, consultas abiertas, tablas
vacias, tablas abiertas y consultas medias por segundo. Utiliza la conexion espe-
cificada (o la ultima que se haya abierto en caso de no especificar ninguna en
concreto).
Por ejemplo:
/ / muestra (por ejemplo):
/ / Tiempo en ejecucion: 109 Subprocesos: 2 Preguntas: 199
/ / Consultas lentas: 1 Abiertas: 4
/ / Tablas vacias: 1 Tablas abiertas: 2 Consultas medias por
/ / segundo: 1.826
print "Estado del servidor: " .mysql-stat ( ) ;
mysql-thread-id
int mysql-thread-id ( [recurso conexion-mysql])