= | Égal à | a = b |
|
---|---|---|---|
<=> | NULL safe égal à | a <=> b |
|
<>, != | Différent de | a != b |
|
< | Inférieur à | a < b |
|
<= | Inférieur ou égal à | a <= b |
|
> | Supérieur à | a > b |
|
>= | Supérieur ou égal à | a >= b |
|
BETWEEN ... AND | Entre deux valeurs (incluses) | BETWEEN a AND b |
|
IS NULL | A pour valeur NULL |
a IS NULL |
|
LIKE | Correspond au motif (1) | a LIKE 'pattern' |
|
EXISTS | A au moins un résultat | a EXISTS |
|
AND, && | Et | a && b |
|
OR, || | Ou | a || b |
|
XOR | Ou exclusif | a xor b |
|
NOT, ! | Inverse (2) | not a |
|
(1) Pour le LIKE
:
%
: 0 à n caractères quelconques
_
: exactement un caractère
Voir exemples
(2) Le NOT
peut s’appliquer à une expression entre parenthèses mais aussi à un opérateur : NOT NULL
, NOT LIKE
, NOT BETWEEN
, etc
+ | Addition | num1 + num2 |
|
---|---|---|---|
- | Soustraction | num1 - num2 |
|
/, DIV | Division | num1 / num2 |
|
* | Multiplication | num1 * num2 |
|
%, MOD | Modulo | num1 % num2 |
|
ROUND | Arrondi | ROUND(num,precision) |
|
TRUNCATE | Troncature | TRUNCATE(num,precision) |
|
CEIL | Arrondi à l'entier supérieur Synonyme: CEILING |
CEIL(num) |
|
FLOOR | Arrondi à l'entier inférieur | FLOOR(num) |
|
FORMAT | Arrondi + formattage | FORMAT(num,precision) |
|
BIN | Retourne le code binaire de num | BIN(code) |
|
HEX | Retourne le code hexadecimal de num | HEX(code) |
|
OCT | Retourne le code octal de num | OCT(code) |
|
CONV | Convertit num d'une base à l'autre | CONV(num,from,to) |
|
ABS | Valeur absolue | ABS(num) |
|
SIGN | Retourne le signe de num (-1,0 ou 1) | SIGN(num) |
|
RAND | Retourne un nombre aléatoire entre 0 et 1 | RAND() |
|
PI | Retourne pi | PI() |
|
POW | Retourne num pouvoir p Synonyme: POWER |
POW(num,p) |
|
SQRT | Racine carrée | SQRT(num) |
|
EXP | Exponentielle | EXP(num) |
|
LN | Logarithme népérien | LN(num) |
|
LOG10 | Log base 10 | LOG10(num) |
|
LOG2 | Log base 2 | LOG2(num) |
|
LOG | Log base n | LOG(base,num) |
|
SIN | Sinus | SIN(num) |
|
COS | Cosinus | COS(num) |
|
TAN | Tangente | TAN(num) |
|
ASIN | Arc Sinus | ASIN(num) |
|
ACOS | Arc Cosinus | ACOS(num) |
|
ATAN | Arc tangente | ATAN(num) |
|
ATAN2 | Arc tangente de deux points | ATAN2(num1,num2) |
|
COT | Cotangente | COT(num) |
|
DEGREES | Convertion d'un degrès en radian | DEGREES(num) |
|
RADIANS | Convertion d'un radian en degrès | RADIANS(num) |
|
BIT_COUNT | Retourne le nombre de bits à 1 dans arg | BIT_COUNT(num) |
|
---|---|---|---|
& | Bitwise and | a & b |
|
| | Bitwise or | a | b |
|
^ | Bitwise xor | a ^ b |
|
<< | Left shift | a << n |
|
>> | Right shift | a >> n |
|
~ | Bitwise not | ~num |
|
CASE | Multi-condition | CASE arg WHEN val1 THEN rval1 WHEN val2 THEN rval2 ELSE rval3 END CASE WHEN arg1 = val1 THEN rval1 WHEN arg2 = val2 THEN rval2 ELSE rval3 END |
|
---|---|---|---|
IF | Condition ternaire | IF(exp, valtrue, valfalse) |
|
IFNULL | Retourne arg si != NULL , sinon default |
IFNULL(arg, default) |
|
NULLIF | Retoure NULL si arg = default |
NULLIF(arg, default) |
|
DEFAULT | Retourne la valeur par défaut d'une colonne. Lève une erreur si la colonne n'a pas de valeur par défaut | DEFAULT(attr) |
|
CAST | Convertion d'un type de donnée à un autre | CAST(value AS type) |
|
---|---|---|---|
CONVERT | Convertion d'un encodage à un autre | CONVERT(value USING transcoding_name) |
|
CHARSET | Retourne l'encodage utilisé | CHARSET(arg) |
|
COLLATION | Retourne la collation utilisée | COLLATION(arg) |
|
CONCAT | Concaténation | CONCAT(args) |
|
---|---|---|---|
CONCAT_WS | Concaténation avec séparateur | CONCAT_WS(sep, args) |
|
TRIM | Supprime les espaces au début et à la fin. Voir aussi: LTRIM et RTRIM |
TRIM(arg) |
|
SPACE | Retourne num espaces | SPACE(num) |
|
REPEAT | Répète arg num fois | REPEAT(arg,num) |
|
LPAD | Préfixe arg avec char pour obtenir num caractères. Voir aussi: RPAD |
LPAD(arg,num,char) |
|
CHAR_LENGTH | Retourne le nombre de caractère de arg Synonyme: CHARACTER_LENGTH |
CHAR_LENGTH(arg) |
|
LENGTH | Retourne le nombre d'octets de arg. Synonyme: OCTET_LENGTH |
LENGTH(arg) |
|
BIT_LENGTH | Retourne le nombre de bits de arg | BIT_LENGTH(arg) |
|
ASCII | Retourne le code decimal de char. Valeur > 127 = pas un caractère ASCII |
ASCII(char) |
|
ORD | Retourne la valeur numérique de char (= (code octet 1) + (code octet 2 * 256) + (code octet 3 * 2562)) = ASCII si le caractère est sur 1 octet |
ORD(arg) |
|
CHAR | Retourne le caractère du code decimal num | CHAR(arg) |
|
HEX | Retourne arg en hexadécimal | HEX(arg) |
|
UNHEX | Decode le code hexadécimal arg | HEX(arg) |
|
REVERSE | Inverse les lettres | REVERSE(arg) |
|
QUOTE | Ajoute un backslash devant chaque caractère de quote, backslash, NUL et control-Z. | QUOTE(arg) |
|
REPLACE | Remplace a par b | REPLACE(arg,a,b) |
|
INSERT | Remplace la sous-chaine par une autre selon sa position | INSERT(arg,pos,len,new) |
|
LOWER | Retourne arg en minuscules. Synonyme: LCASE |
LOWER(arg) |
|
UPPER | Retourne arg en majuscules. Synonyme: UCASE |
UPPER(arg) |
|
SOUNDEX | Retourne le résultat de Soundex sur arg(1) | SOUNDEX(arg) |
|
SUBSTRING | Retourne une sous-chaîne (à partir de 1) Synonyme: MID, SUBSTR |
SUBSTRING(arg,pos,num) |
|
LEFT | Retourne num caractères à partir de la gauche | LEFT(arg,num) |
|
RIGHT | Retourne num caractères à partir de la droite | RIGHT(arg,num) |
|
SUBSTRING_INDEX | Retourne le texte situé devant le délimiteur | SUBSTRING_INDEX(arg, delim, occurrence) |
|
POSITION | Retourne la position d'une sous-chaîne | POSITION(char IN arg) |
|
INSTR | Retourne la position du délimiteur | INSTR(arg,delim) |
|
LOCATE | Retourne la position du délimiteur à partir de la position donnée (incluse). | LOCATE(delim,arg,pos) |
|
STRCMP | Compare deux chaînes de caractère. 1:(arg>str), -1:(arg<str), 0:(arg=str) |
STRCMP(arg,str) |
|
CRC32 | Calcule la check-sum de arg | CRC32(arg) |
|
(1) Soundex est un algorithme d’indexation de noms par leur prononciation (en anglais britannique), l’objectif étant que Soundex retourne la même valeur pour deux mots qui se prononcent de la même manière, indifféremment des différences d’écriture.
ELT | Retourne l'élément num dans la liste d'arguments | ELT(num,args) |
|
---|---|---|---|
FIELD | Retourne la position de arg dans liste d'arguments | FIELD(arg,args) |
|
MAKE_SET | Crée un set des arguments situés à la position donnée en binaire (1) | MAKE_SET(binpos,args) |
|
FIND_IN_SET | Retourne la position de arg dans le set (2) | FIND_IN_SET(arg,set) |
|
GREATEST | Retourne la plus grande valeur parmis une liste | GREATEST(args) |
|
LEAST | Retourne la plus petite valeur parmis une liste | LEAST(args) |
|
INTERVAL | Retourne l'index de la valeur plus petite que arg parmis une liste | INTERVAL(arg, args) |
|
COALESCE | Retourne la première valeur non nulle parmis une liste | COALESCE(args) |
|
IN | Vérifie si arg est dans une liste de valeurs donnée | arg IN(args) |
|
(1) Position en binaire = puissances de 2. Pos 1→1 (2^0), pos 2→2 (2^1), pos 3→4 (2^2), pos 4→8 (2^3), etc.
(2) On peut aussi utiliser l’opérateur sur les bits &
pour vérifier la présence d’un index ou non
Tester la présence d’une valeur dans un groupe :
Soit en testant la présence de l’index (position binaire)
-- interests: set('reading','sports','swimming','drawing','writing','acting')
-- Les personnes ayant les intérêts "reading" (2^0) et "drawing" (2^3)
SELECT name
FROM people_interests
WHERE interests & 1 AND interests & 8
ORDER BY name;
Soit avec FIND_IN_SET
(revient au même que la requête précédente)
SELECT name
FROM people_interests
WHERE FIND_IN_SET('reading',interests)>0
AND FIND_IN_SET('drawing',interests)>0
ORDER BY name;
COUNT | Nombre de résultats | COUNT({*|DISTINCT att}) |
|
---|---|---|---|
MAX | Valeur maximale | MAX(att) |
|
MIN | Valeur minimale | MIN(att) |
|
AVG | Moyenne | AVG(att) |
|
SUM | Somme | SUM([DISTINCT] att) |
|
VARIANCE | Variance standard (population) Synonyme: VAR_POP |
VARIANCE(att) |
|
VAR_SAMP | Variance échantillon. Le dénominateur est le nombre de ligne - 1 | VAR_SAMP(att) |
|
STD | Déviation standard (population) Synonyme: STDDEV, STDDEV_POP |
STD(att) |
|
STDDEV_SAMP | Déviation échantillon | STD(att) |
|
GROUP_CONCAT | Concaténe toutes les valeurs du groupe. SQLFiddle | GROUP_CONCAT(att [ORDER BY att] [SEPARATOR sep]) |
|
NOW | Retourne la date et heure actuelle Synonyme: CURRENT_TIMESTAMP, LOCALTIME, LOCALTIMESTAMP |
NOW() |
|
---|---|---|---|
SYSDATE | Retourne la date et heure au moment de l'execution(1) | SYSDATE() |
|
UTC_TIMESTAMP | Retourne la date et heure UTC | UTC_TIMESTAMP() |
|
CURRENT_DATE | Retourne la date du jour Synonyme: CURDATE |
CURRENT_DATE() |
|
UTC_DATE | Retourne la date UTC | UTC_DATE() |
|
CURRENT_TIME | Retourne l'heure actuelle Synonyme: CURTIME |
CURRENT_TIME() |
|
UTC_TIME | Retourne ll'heure UTC | UTC_TIME() |
|
FROM_DAYS | Crée une date à partir d'un nombre de jours | FROM_DAYS(num) |
|
FROM_UNIXTIME | Crée une date à partir d'un timestamp Unix | FROM_UNIXTIME(timestamp) |
|
MAKEDATE | Crée une date à partir d'un numéro de jour + année | MAKEDATE(year,dayofyear) |
|
SEC_TO_TIME | Crée un time à partir d'un nombre de secondes | SEC_TO_TIME(num) |
|
MAKETIME | Crée un time à partir d'une heure + minute + seconde | MAKETIME(hour,minute,second) |
|
TIMESTAMP | Crée une date à partir d'un timestamp donné | TIMESTAMP(timestamp) |
|
STR_TO_DATE | Crée une date à partir d'une chaîne de caractères et du format donné (2) | STR_TO_DATE(str, format) |
|
LAST_DAY | Retourne le dernier jour du mois de arg | LAST_DAY(arg) |
|
MICROSECOND | Retourne le nombre de microsecondes de arg | MICROSECOND(arg) |
|
SECOND | Retourne le nombre de secondes de arg | SECOND(arg) |
|
MINUTE | Retourne le nombre de minutes de arg | MINUTE(arg) |
|
HOUR | Retourne l'heure de arg | HOUR(arg) |
|
TIME | Retourne la partie temps de arg | TIME(arg) |
|
DATE | Retourne la partie date de arg | DATE(arg) |
|
DAY | Retourne le jour du mois de arg (entre 1 et 31) Synonyme: DAYOFMONTH |
DAY(arg) |
|
DAYNAME | Retourne le jour de la semaine de arg | DAYNAME(arg) |
|
DAYOFWEEK | Retourne le numéro de jour de la semaine de arg (de Dimanche 1 à Samedi 7) | DAYOFWEEK(arg) |
|
WEEKDAY | Retourne l'index du jour de la semaine (de Lundi 0 à Dimanche 6) | WEEKDAY(arg) |
|
WEEK | Retourne le numéro de la semaine dans l'année (de 0 à 53). Premier jour: Dimanche. | WEEK(arg) |
|
WEEKOFYEAR | Retourne le numéro de la semaine dans l'année (de 1 à 53). Premier jour: Lundi. | WEEKOFYEAR(arg) |
|
MONTH | Retourne le numéro de mois de arg (entre 1 et 12) | MONTH(arg) |
|
MONTHNAME | Retourne le nom du mois de arg | MONTHNAME(arg) |
|
QUARTER | Retourne le numéro de quart d'année de arg (entre 1 et 4) | QUARTER(arg) |
|
DAYOFYEAR | Retourne le jour de l'année de arg (de 1 à 366) | DAYOFWEEK(arg) |
|
YEAR | Retourne l'année de arg (de 1000 à 9999) | YEAR(arg) |
|
YEARWEEK | Retourne l'année et la semaine de l'année de arg | YEARWEEK(arg) |
|
UNIX_TIMESTAMP | Retourne arg en timestamp Unix | UNIX_TIMESTAMP(arg) |
|
TO_DAYS | Retourne le nombre de jours depuis l'an 0 | TO_DAYS(arg) |
|
DATE_FORMAT | Formatte une date en chaîne de caractère (2) | DATE_FORMAT(date, format) |
|
TIME_FORMAT | Formatte un time en chaîne de caractère (2) | TIME_FORMAT(time, format) |
|
GET_FORMAT | Retourne le format d'une date selon la localisation donnée (ex: USA, EUR) (3) | GET_FORMAT({DATE|TIME|DATETIME},"{EUR|USA|JIS|ISO|INTERNATIONAL}") |
|
+, DATE_ADD | Ajoute l'intervalle donné à une date (4) Synonyme: ADDDATE |
date + INTERVAL n unit , ADDDATE(date,INTERVAL n unit) , ADDDATE(expr,days) |
|
-, DATE_SUB | Soutrait l'intervalle donné à une date (4) Synonyme: SUBDATE |
date - INTERVAL n unit , DATE_SUB(date,INTERVAL n unit) |
|
DATEDIFF | Calcule la différence en jours entre deux dates | DATEDIFF(date1,date2) |
|
TIMESTAMPADD | Ajoute l'intervalle donné à une date (4) (uniquement les unités entières) | TIMESTAMPADD(unit, num, date) |
|
TIMESTAMPDIFF | Calcule la différence entre deux dates avec l'unité donné(4) (uniquement les unités entières) | TIMESTAMPDIFF(unit,date1,date2) |
|
TIMEDIFF | Calcule la différence de temps entre deux temps. La date supérieure doit nécessairement être en premier pour avoir un résultat valide | TIMEDIFF(date1,date2) |
|
ADDTIME | Ajoute le temps donné à une date | ADDTIME(arg,time) |
|
SUBTIME | Soustrait le temps donné à une date | SUBTIME(arg,time) |
|
CONVERT_TZ | Convertit d'une timezone à une autre | CONVERT_TZ(date, from, to) |
|
PERIOD_ADD | Ajoute num mois à une période année/mois donnée | PERIOD_ADD(period, num) |
|
PERIOD_DIFF | Retourne la différence entre deux périodes | PERIOD_DIFF(period1, period2) |
|
(1) NOW() retourne le temps auquel la requête à été lancée tandis que SYSDATE() retourne le temps auquel la requête à été executée. La différence est notable à l’intérieur d’une procédure.
(2) Format date
(3) Liste des formats par localisation
(4) Unités d’intervalle disponibles
TO_BASE64 | Encode str en base64 | TO_BASE64 |
|
---|---|---|---|
FROM_BASE64 | Decode str en base64 | FROM_BASE64 |
|
ENCODE | Encode str avec secret | ENCODE(str, secret) |
|
DECODE | Decode str avec secret | DECODE(str, secret) |
|
AES_ENCRYPT | Encrypte str avec secret (algorithme AES) | AES_ENCRYPT(str, secret) |
|
AES_DECRYPT | Decrypte str avec secret (algorithme AES) | AES_DECRYPT(str, secret) |
|
DES_ENCRYPT | Encrypte str avec secret (algorithme Triple-DES) | DES_ENCRYPT(str, secret) |
|
DES_DECRYPT | Decrypt str avec secret (algorithme Triple-DES) | DES_DECRYPT(str, secret) |
|
COMPRESS | Compresse str | COMPRESS(str) |
|
UNCOMPRESS | Decompresse str | UNCOMPRESS(str) |
|
UNCOMPRESSED_LENGTH | Retourne la longueur decompressée de str | UNCOMPRESSED_LENGTH(str) |
|
ENCRYPT | Hashe str avec secret (fonction Unix crypt()). Retourne `NULL` sous Windows | ENCRYPT(str, secret) |
|
MD5 | Hashe str (algorithme MD5) | MD5(str) |
|
SHA1 | Hashe str (algorithme SHA1) | SHA1(str) |
|
SHA2 | Hashe str avec secret (algorithme SHA2) | SHA2(str) |
|
PASSWORD | Hashe str | PASSWORD(str) |
|
MATCH ... AGAINST
permet de vérifie pertinence d’une ligne pour une recherche, selon les colonnes ciblées et le texte recherché.
Les termes recherchés ne sont pas forcemment accolés dans le texte.
Les mots-vides de la requête (stopwords en anglais) sont ignorés. Plus d’info sur les stopwords.
Ne peut être utilisé que sur les colonnes ayant un index de type FULLTEXT
.
Le format est comme suit :
MATCH (colonnes) AGAINST (recherche [
IN NATURAL LANGUAGE MODE
| [IN NATURAL LANGUAGE MODE] WITH QUERY EXPANSION
| IN BOOLEAN MODE
])
Plusieurs modes sont disponibles :
IN NATURAL LANGUAGE MODE
(par défaut) :
Interprète la chaîne comme une phrase en langage naturel (texte libre).
SQLFiddle
SELECT id, MATCH(title, text) AGAINST('security attack') as relevance FROM documents;
+----+---------------------+
| id | relevance |
+----+---------------------+
| 1 | 0 |
| 2 | 0.22764469683170319 |
| 3 | 0.9105787873268127 |
+----+---------------------+
WITH QUERY EXPANSION
:
Élargit le résultat de la recherche naturelle en recherchant les documents apparentés aux résultats trouvés
SELECT productName
FROM products
WHERE MATCH(productName)
AGAINST('1992' WITH QUERY EXPANSION);
+-------------------------------------+
| productName |
+-------------------------------------+
| 1992 Porsche Cayenne Turbo Silver |
| 1992 Ferrari 360 Spider red |
| 2001 Ferrari Enzo |
| 1932 Alfa Romeo 8C2300 Spider Sport |
| 1948 Porsche 356-A Roadster |
| 1948 Porsche Type 356 Roadster |
| 1956 Porsche 356A Coupe |
+-------------------------------------+
IN BOOLEAN MODE
:
Spécifie les termes à inclure et à exclure
SELECT * FROM articles WHERE MATCH (title,body)
AGAINST ('+MySQL -YourSQL' IN BOOLEAN MODE);
+----+-----------------------+-------------------------------------+
| id | title | body |
+----+-----------------------+-------------------------------------+
| 1 | MySQL Tutorial | DBMS stands for DataBase ... |
| 2 | How To Use MySQL Well | After you went through a ... |
| 3 | Optimizing MySQL | In this tutorial we will show ... |
| 4 | 1001 MySQL Tricks | 1. Never run mysqld as root. 2. ... |
| 6 | MySQL Security | When configured properly, MySQL ... |
+----+-----------------------+-------------------------------------+
Opérateurs de la recherche booléenne:
Opérateur | Description | Exemple |
---|---|---|
mot | Les lignes qui contiennent ce mot ont une pertinence plus élevée | join union : les lignes qui contiennent un des deux mots |
~mot | Les lignes qui contiennent ce mot ont une pertinence moins élevée | join ~union : les lignes qui contiennent "join" et "union" sont moins pertinentes que celles qui ne contiennent que "join" |
"mot1 mot2" | Les lignes qui contiennent ces deux mots littéralement, accolés | join union : les lignes qui contiennent exactement l'expression "join union" |
+mot | Le mot doit être présent |
+join +union : les lignes qui contiennent "join" et "union"+join union : les lignes qui contiennent "join" (résultat plus pertinent si elle contient aussi "union") |
-mot | Le mot ne doit pas être présent | +join -union : contient "join" mais pas "union" |
(mot1 mot2) | Sous-expression, permet d'appliquer un opérateur à plusieurs mots | +(join union) : les lignes qui contiennent "join" et "union" |
>mot1 <mot2 | Augmente (>) ou diminue (<) la pertinence | +join +(>left <right) : les lignes qui contiennent "join left" ou "join right" ("join left" plus pertinent) |
mot* | Les lignes qui contiennent un mot qui commence par "mot" | join : matche 'join', 'joins', 'joining' etc. |
ExtractValue | Extrait une valeur d'une chaîne XML (1). SQLFiddle | ExtractValue(xml, xpath) |
|
---|---|---|---|
UpdateXML | Remplace un fragment XML (1). Ne fait rien si plusieurs nodes matchent. | UpdateXML(xml, xpath, newnode) |
|
(1) Format XPath
Extraire des valeurs :
ExtractValue
combiné à REPLACE
peut servir à extraire des valeurs d’une liste séparée par virgule :
SELECT ExtractValue(CONCAT('<items><item>',
REPLACE('a,b,c,d,e,f', ',', '</item><item>'),
'</item></items>'), '/items/item[5]') as items;
SELECT
ExtractValue(@items, '/items/item[5]') as item5,
ExtractValue(@items, '/items/item[2]') as item2
FROM
(
SELECT @items := CONCAT('<items><item>',
REPLACE('a,b,c,d,e,f', ',', '</item><item>'),
'</item></items>')
) as list;
IS_IPV4 | Vérifie si arg est une adresse IPv4 | IS_IPV4(arg) |
|
---|---|---|---|
INET_ATON | Retourne la représentation numérique d'une adresse IPv4 (NULL si l'adresse n'est pas valide) | INET_ATON(ip) |
|
INET_NTOA | Retourne l'adresse IPv4 de la représentation numérique | INET_NTOA(num) |
|
IS_IPV4_COMPAT | Vérifie si la représentation numérique donnée est une adresse IPv4 | IS_IPV4_COMPAT(num) |
|
IS_IPV4_MAPPED | Vérifie si la représentation numérique donnée est une adresse IPv4 mappée en IPv6 | IS_IPV4_MAPPED() |
|
IS_IPV6 | Vérifie si arg est une adresse IPv6 | IS_IPV6(arg) |
|
INET6_ATON | Retourne la représentation numérique d'une adresse IPv6 | INET6_ATON(ip) |
|
INET6_NTOA | Retourne l'adresse IPv6 de la représentation numérique | INET6_NTOA(num) |
|
GET_LOCK | Essaie d'obtenir un verrou nommé. Retourne 1 = ok, 0 = timeout, NULL = erreur (ex kill ou memory overflow) | GET_LOCK(str, timeout) |
|
---|---|---|---|
RELEASE_LOCK | Libère le verrou str | RELEASE_LOCK(str) |
|
RELEASE_ALL_LOCKS | Libère tous les verrous. Retourne le nombre de verrous libérés | RELEASE_ALL_LOCKS() |
|
IS_FREE_LOCK | Vérifie si le verrou str est libre. 1 = libre, 0 = utilisé, NULL = erreur (argument incorrect) | IS_FREE_LOCK(str) |
|
IS_USED_LOCK | Retourne l'identifiant de la session qui a crée le verrou s'il existe ou NULL | IS_USED_LOCK(str) |
|
UUID | Retourne un UUID unique | UUID() |
|
---|---|---|---|
UUID_SHORT | Retourne un UUID court unique | UUID_SHORT() |
|
RANDOM_BYTES | Retourne num octets aléatoires (num entre 1 et 1024) | RANDOM_BYTES(num) |
|
DATABASE | Retourne le nom de la base de données en cours Synonyme: SCHEMA |
DATABASE() |
|
USER | Retourne le nom de l'utiilisateur + hôte en cours Synonyme: SESSION_USER, SYSTEM_USER |
USER |
|
CONNECTION_ID | Retourne l'ID de connection de l'utilisateur | CONNECTION_ID() |
|
VERSION | Retourne le numéro de version MySQL | VERSION() |
|
BENCHMARK | Répète une expression num fois. Permet de mesurer le temps d'execution | BENCHMARK(num, expt) |
|
SLEEP | Attend pendant num secondes | SLEEP(num) |
|
FOUND_ROWS | Retourne le nombre de lignes trouvées par le dernier SELECT | FOUND_ROWS() |
|
ROW_COUNT | Retourne le nombre de lignes affectées par le dernier UPDATE ou DELETE. Nécessite le flag CLIENT_FOUND_ROWS (au moment de la connexion) | ROW_COUNT() |
|
LAST_INSERT_ID() | Retourne le dernier ID inséré | LAST_INSERT_ID() |
|
https://dev.mysql.com/doc/refman/5.7/en/json-functions.html
https://dev.mysql.com/doc/refman/5.7/en/spatial-analysis-functions.html
Exemples :
SELECT Area(ConvexHull(GeomFromText(points))) as area
FROM (
SELECT CONCAT('MULTIPOINT(', GROUP_CONCAT(CONCAT(x, " ", y) SEPARATOR ","), ')') as points
FROM `places`
) as tmp;
SELECT a.name AS place1, b.name AS place2
FROM sights AS a, sights AS b
WHERE a.name < b.name
AND DISTANCE(POINT(a.x, a.y), POINT(b.x, b.y)) < 5
ORDER BY place1, place2;
SELECT ROUND(SUM(
DISTANCE(POINT(a.x,a.y), POINT(b.x,b.y))
),9) as total
FROM cities AS a
INNER JOIN cities AS b ON b.id = (a.id + 1);
SELECT id1,
SUBSTRING_INDEX(GROUP_CONCAT(id2 ORDER BY distance, id2), ',', 1) as id2
FROM (
SELECT a.id AS id1, b.id AS id2, ROUND(DISTANCE(POINT(a.x,a.y), POINT(b.x,b.y))) as distance
FROM positions as a, positions as b
WHERE a.id != b.id
ORDER BY id1, distance, id2
) as tmp
GROUP BY id1;