les fonctions mariadb - lemug.fr
TRANSCRIPT
Les fonctions et fonctionnalitésMariaDB
Christophe Villeneuve@hellosct1
Stéphane Varoqui@svaroqui
Le 29/01/2015 – Meetup Les bonnes pratiques avec MariaDB
Qui ?
Stéphane Varoqui Christophe Villeneuve
<<
afup – lemug.fr – mysql – mariadb – drupal – demoscene – firefoxos – drupagora – phptour – forumphp – solutionlinux – demoinparis – ici et maintenant – eyrolles – editions eni – programmez – linux pratique – webriver – phptv – neuros elephpant
Microseconds
✔ Précision date-heure✔ Avant
– TIME – DATETIME– TIMESTAMP
✔ Dispo MariaDB 5.3+– temporal functions– CAST– dynamic columns
Source : https://mariadb.com/kb/en/mariadb/microsecondsinmariadb/
✔ Create table t1 (d DATETIME) ;
✔ Insert INTO t1 values....✔ Select * from t1 ;
✔ Create table t2 (d DATETIME (6) ) ;
✔ Insert Into t2 values ('2011-03-11'), ('2012-04-19 13:08:22'),('2013-07-18 13:44:22.123456');
✔ Select * from t2 ;
Avant MariaDB 5.3+
Exemple (Microseconds)
PCRE
✔ Disponible MariaDB 10.0+
✔ Expressions régulières
✔ Compatible● REGEXP● RLIKE operator
✔ Fonctionne– Multi caractères
Source : https://mariadb.com/kb/en/mariadb/pcre/
✔ Fonction de remplace SELECT REGEXP_REPLACE('ab12cd','[0-9]','') AS r; → abcd
Exemple (PCRE) (1/2)
✔ Retourne 1ère positionSELECT REGEXP_INSTR('abc','b') ;
→ 2SELECT REGEXP_INSTR('hello','o') ;
→ 5
✔ Retourne la partie correspondante d'une chaineSELECT REGEXP_SUBSTR( 'http://www.lemug.fr/category/actualites/', 'http?://[^/]*')
→ http://www.lemug.fr
Exemple (PCRE) (2/2)
Colonnes Virtuelles
✔ Disponible MariaDB 5.2+
✔ Colonne dans une table qui sa valeur calculée automatiquement
✔ 2 types : – VIRTUAL : sur le principe d'une vue– PERSISTENT : Calculé lorsque les données sont
insérées et stockées dans une table
Source : https://mariadb.com/kb/en/virtualcolumns/
> CREATE TABLE table1 ( a INT NOT NULL, b VARCHAR(32), c INT AS (a mod 10) VIRTUAL, d VARCHAR(5) AS (left(b,5)) PERSISTENT);> DESCRIBE table1;
Exemple (Colonnes Virtuelles) (1/2)
> INSERT INTO table1 VALUES (1, 'some text',default,default),(2, 'more text',5,default),(123, 'even more text',default,'something');
> Select * from table1;
Exemple (Colonnes Virtuelles) (2/2)
Colonnes dynamiques
✔ Dispo MariaDB 5.3+
✔ Pont entre les BDD relationnelles et non relationnelles
✔ Toutes les colonnes stockées dans un 'blob'
✔ Possibilité de manipuler
✔ Possibilité de créer des index virtuels
Source : https://mariadb.com/kb/en/mariadb/dynamiccolumns/
create table newsql(
id int
auto_increment primary key,
nom varchar(40),
type enum
('animal',
'ordinateur'),
prix int,
nosql blob);
COLUMN_CREATE(
column_nr,
value [as type],
[
column_nr,
value [as type]
],
...)
Exemple (colonne dynamique) 1/3
ID nom type Prix blob
Multi produits
Exemple (colonne dynamique) 2/3
>INSERT into newsql values (NULL, 'Atari' ,'ordinateur',500, COLUMN_CREATE('couleur', 'Noir', 'type' , 'STe'));
>INSERT into newsql values (NULL, 'elePHPant','animal',20, COLUMN_CREATE('taille', 'normal', 'description' , 'peluche'));
>UPDATE newsql SET nosql = COLUMN_ADD(nosql, 'couleur' , 'blue') WHERE id=2;
ID Nom type prix couleur type taille description
1 Atari Ordinateur 500 Noir Ste
2 elePHPant animal 20 bleu normal peluche
>SELECT nom, column_list (nosql) FROM newsql;
Multi produits
Exemple (colonne dynamique) 3/3>SELECT nom, COLUMN_JSON(nosql) FROM newsql;
>SELECT id,type,nom,
COLUMN_GET(nosql, 'couleur' as char) AS couleur,prix FROM newsql;
Multi produits
Sequence Engine
✔ Dispo MariaDB 10.0.3+✔ Une fonction en Storage Engine✔ Pas de création & pas de lecture de table
✔ Principe : ✔ Génère à la volée une séquence de nombres entiers✔ Résultat retourné à votre requête✔ La fonction disparaît
✔ Plugin nécessaire à installer : ha_sequence> install soname "ha_sequence";
Source : https://mariadb.com/kb/en/mariadb/sequence
✔ Calcul de dateEx : Connaître le jour de la semaine d'une date donnée :
✔ exemple : Le 1er Janvier tombe… Quand ?
> SELECT DAYNAME('2015-01-01' + INTERVAL (seq) YEAR) day, '2015-01-01' + INTERVAL (seq) YEAR date FROM seq_0_to_10;
Exemple (Sequence) 2/2
La suite est disponible
http://fr.slideshare.net/lemugfr/lesfonctionnalitesmariadb