Mysql

De drev
Aller à : navigation, rechercher

Synospsis

Mysql est un moteur de base de données SQL libre

Implementations

Il existe plusieurs implementations de mysql autre que celle d'oracle.

L'implementation la plus populaire est MariaDB

Moteurs de table

MySQL à plusieurs moteur pour gérer les tables.

Les plus connues sont:

MyISAM

Moteur de table historique de MySQL. Ne gère pas les relations : pas de clé étrangères.

InnoDB

Gère les relations.

Nom du service sous UNIX

mysqld.service

Ligne de commande

connexion

mysql -u <USER> -p<PASSWORD> -h <address> [database]


executer une requete sql

mysql -e "SELECT * FROM CACTUS"


Opérations sur la structure

Lister les bases de données

SHOW DATABASES;

Décrire une table

Avec l'instruction describe

mysql> describe tablename;

Importer et Exporter

  • creer un dump

la commande sqldump prend les memes arguments que la commande mysql

mysqldump
  • Importer dump
> source <DUMP_PATH>;
  • exporter le résultat d'une requête dans un fichier csv
select username, email, date_created INTO OUTFILE './export.csv' FIELDS TERMINATED BY ';' ENCLOSED BY '"' LINES TERMINATED BY '\r\n' FROM users;

Gestion des dates

Formats

  • Mysql timestamp
YYYYMMDD[HHMMSS]

ou

YYYY-MM-DD

Manupulation de dates

Differance entre deux dates

Avec DATEDIFF.

Exemple: nombre de jour entre le 31 décembre 2016 et le 24 décembre 2016.

SELECT DATEDIFF('20161231','20161224');
+---------------------------------+
| DATEDIFF('20161231','20161224') |
+---------------------------------+
|                               7 |
+---------------------------------+

Mise a jour d'un champ DATE

Avec une chaine de caractère au format timestamp (voir format).

Exemple, mise a jour de la date de publication au 2 février 2018.

update articles SET pub_date='20180201' where id=42;

ou

update articles SET pub_date='2018-02-01' where id=42;

Fonctions curdate()

donne la date courante

exemple

SELECT id, expire WHERE expire >= CURDATE()

API

Template

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <mysql.h>

int main(void){
    char *host = "localhost";
    char *user = "";
    char *pass = "";
    char *db = "test";

    MYSQL *sock;
    MYSQL_RES *res;
    MYSQL_ROW  row;

    char req[BUFSIZ];
    int i;
    
    sock = mysql_init(0);

    if (!mysql_real_connect(sock, host, user, pass, db, 0, NULL, 0)){
      puts("Cannot connect to host");
      return EXIT_FAILURE;
    }
  
    printf(">");
    fgets(req, BUFSIZ, stdin);
    
    mysql_query(sock, req); 
    res = mysql_store_result(sock);
    int num_fields = mysql_num_fields(res);
 
    while( row = mysql_fetch_row(res)){
      for(i = 0; i < num_fields; i++){
	printf("%s ", row[i] ? row[i] : "NULL");
      }
      puts(""); 
   }
    
   mysql_close(sock);
   return EXIT_SUCCESS;
}