Accueil - MySQL Tout afficher

MySQL - Récupérer toutes les clés étrangères d'une colonne

Wakonda - MySQL Posté le 21 février 2023

Cette requête SQL va permettre de voir toutes les clés étrangères d'une colonne spécifique :

SELECT 
  TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME, REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME
FROM
  INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE
  REFERENCED_TABLE_SCHEMA = '<database>' AND
  REFERENCED_TABLE_NAME = '<table>' AND
  REFERENCED_COLUMN_NAME = '<column>';

Pour récupérer toutes les clés étrangères d'une table :

SELECT 
  TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME, REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME
FROM
  INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE
  REFERENCED_TABLE_SCHEMA = '<database>' AND
  REFERENCED_TABLE_NAME = '<table>';
Lire ...

Changer le mot de passe de MySQL

Wakonda - MySQL Posté le 27 août 2022

Pour changer le mot de passe MySQL, en ligne de commande, il suffit d'ouvrir une console et de taper la commande suivante :

mysqladmin -u root -p password "newpassword"
Lire ...

MySQL - Appliquer un fichier MySQL en ligne de commande

Wakonda - MySQL Posté le 4 mars 2018

Habituellement, lorsque l'on souhaite importer une table dans une base de données depuis un fichier SQL, on peut utiliser la commande suivante :

mysql -u <username> -p <databasename> < <filename.sql>

Toutefois, comment fait-on si l'on souhaite appliquer un fichier SQL qui contient les commandes SQL servant aussi à créer les base de données ? Pour se faire, il faut commencer par se connecter à MySQL (toujours en ligne de commande) :

mysql -u root -p

Le paramètre "root" représente, bien évidemment, le nom de l'utilisateur. Une fois connecté, il suffit de lancer la commande suivante :

source /path/to/sql/file/file.sql

 

Lire ...

Erreur : "this is incompatible with sql_mode=only_full_group_by"

Wakonda - MySQL Posté le 21 janvier 2018

Cette erreur apparaît depuis la version 5.7 de MySQL. Avant cette version, MySQL autorisait de ne pas avoir les mêmes colonnes présentes dans le SELECT et dans le GROUP BY. Maintenant, et pour se rapprocher des comportements des autres SGBDR, MySQL refuse ce comportement.

Pour pallier à ce problème, deux options s'offrent à nous : soit faire en sorte d'avoir les mêmes colonnes dans le SELECT et le GROUP BY, soit désactiver l'option "only_full_group_by" et ainsi retrouver le comportement d'avant.

Pour désactiver l'option, il suffit de lancer la requête SQL suivante :

SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

 

Lire ...

MySQL - Supprimer la totalité des tables d'une base de données sans erreur

Wakonda - MySQL Posté le 21 janvier 2018

Pour supprimer l'ensemble des tables d'une base de données sans qu'il y ait d'erreurs (notamment les erreurs provoquées par les contraintes de clés étrangères), il suffit simplement de lancer la requête suivante :

SET FOREIGN_KEY_CHECKS = 0;
SET GROUP_CONCAT_MAX_LEN=32768;
SET @tables = NULL;
SELECT GROUP_CONCAT('`', table_name, '`') INTO @tables
  FROM information_schema.tables
  WHERE table_schema = (SELECT DATABASE());
SELECT IFNULL(@tables,'dummy') INTO @tables;

SET @tables = CONCAT('DROP TABLE IF EXISTS ', @tables);
PREPARE stmt FROM @tables;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET FOREIGN_KEY_CHECKS = 1;

 

Lire ...

MySQL faire la somme d'une somme

Wakonda - MySQL Posté le 12 février 2017

En MySQL, il existe une astuce pour faire la somme d'une somme très simplement ; il s'agit du modificateur "WITH ROLLUP".

Exemple :

Soit la table suivante que nous appellerons "test" :

+------+--------+
| year | price  |
+------+--------+
| 2000 |   500  |
| 2000 |   9.5  |
| 2001 |   5.2  |
| 2000 |   47   |
| 2001 |   98   |
+------+--------+

Si nous souhaitons calculer la somme de la colonne "price" par années, on fait la requête suivante :

SELECT SUM(price)
FROM test
GROUP BY year

Résultat :

+------------+
| SUM(price) |
+------------+
|    556.5   |
|    103.2   |
+------------+

Maintenant, si nous souhaitons faire la somme total de l'ensemble des éléments de la colonne "price", on pourra utiliser la fonctionnalité "WITH ROLLUP" :

SELECT SUM(price)
FROM testprice
GROUP BY year
WITH ROLLUP

Résultat :

+------------+
| SUM(price) |
+------------+
|    556.5   |
|    103.2   |
|    659.7   |
+------------+
Lire ...

Enregistrer des emoji dans une base de données MySQL

Wakonda - MySQL Posté le 2 janvier 2017

Depuis quelques années, les "emoji" se sont répandus sur le web comme une traînée de poudre. La première fois que je me suis essayé à les utiliser, j'ai rapidement confronté à un problème : en enregistrant du texte en contenant dans une base de données MySQL, les émoticônes disparaissaient et tronquaient le reste du texte.

Après de brèves recherches, j'ai constaté que cela provenait d'un problème d'encodage. Les colonnes de mes tables étaient encodées en "utf8_general_ci". Or, il s'avère que les "emoji" sont codés sur 4 octets, alors que l'encodage précité n'en supporte que 3 maximum. Pour palier à ce problème, MySQL (depuis la version 5.5.3) propose un autre encodage appelé "utf8mb4". Avec ce dernier, l'enregistrement des "emoji" en base n'est plus un problème.

Liens utiles :

Lire ...

Rechercher

Tags

Publicité

Suivez-nous

Aidez-nous !