les fonctions mariadb - lemug.fr

22
 Les fonctions et fonctionnalités MariaDB Christophe Villeneuve @hellosct1 Stéphane Varoqui @svaroqui Le 29/01/2015 – Meetup - Les bonnes pratiques avec MariaDB

Upload: christophe-villeneuve

Post on 24-Jul-2015

455 views

Category:

Internet


2 download

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

Les points d'aujourd'hui

● Les fonctions● Les fonctionnalités

   

 5.x10.x

5fonctions

   

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/microseconds­in­mariadb/

   

✔ 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/virtual­columns/

   

> 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/dynamic­columns/

   

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

   

> select * FROM seq_1_to_3;

Exemple (Sequence) 1/2

> select * FROM seq_5_to_1_step_2;

   

✔ 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

   

 5.x10.x

Les fonctionnalités

   

La suite est disponible

http://fr.slideshare.net/lemugfr/les­fonctionnalites­mariadb

   

Merci