Wiktionnaire:Requêtes SQL

Définition, traduction, prononciation, anagramme et synonyme sur le dictionnaire libre Wiktionnaire.
Aller à : Navigation, rechercher

La base de données de Wiktionnaire utilise MySQL. Elle peut être interrogée au moyen de requêtes SQL pour obtenir, par exemple, une liste d'articles vérifiant certains critères telle que la liste des articles pointant sur Physique. Les requêtes simples les plus utiles sont programmées dans le logiciel MediaWiki et sont accessibles sur Special:Specialpages.

Les admins peuvent parfois lancer des requêtes SQL en ligne. Si ce lien fonctionne, les admins peuvent lancer les requêtes sur la page special:Asksql.

Si les requêtes fonctionnent, soyez prudents ! Les requêtes complexes peuvent ralentir sévèrement le serveur. Les requêtes expirent automatiquement après 30 secondes.

Certains développeurs peuvent lancer des requêtes sur la base de donnée en ligne. Vous pouvez déposer une demande pour cela sur m:Requests for queries.

Le meilleur moyen pour effectuer des requêtes complexes ou contourner les limitations imposées par MediaWiki (telles que la limitation du nombre de résultats de "pages liées" à 500) est de télécharger la base de données et de lancer les requêtes sur votre copie locale. Des dumps de la base sont effectués plus ou moins régulièrement et sont accessibles ici.


Voir aussi :

Sommaire

[modifier] Instructions pour effectuer des requêtes MySQL sur votre ordinateur (Windows)

Ce processus devrait prendre moins d'une heure avec une connection haut-débit.

  1. Téléchargez le dump de la ou des bases de données dont vous avez besoin sur Wiktionnaire francophone, Wiktionnaires ou Tous les projets
  2. Pendant le téléchargement, téléchargez également MySQL sur MySQL.com
  3. Installez MySQL. (il n'est normalement pas nécessaire de redémarrer)
  4. Lancez le client MySQL (MySQL Command Line Client)
  5. Tapez CREATE wikipedia
  6. Tapez USE wikipedia
  7. La base de donnée devrait être prête, décompressez la et tapez SOURCE C:\Database Location\cur_fr_whatever.sql.
  8. Vous pouvez maintenant saisir quelques requêtes d'exemple de cette page. Tapez simplement la première ligne de la requête après l'entête mysql>, tapez entrée, et tapez la ligne suivante. La dernière ligne doit être terminée par un point-virgule. Gardez à l'esprit que, comme dans l'exemple suivant, le noms des champs et le nom de la base de donnée peuvent être différent de l'exemple. Si vous avez nommez votre base wikipedia alors ce qui suit doit fonctionner.

Exemple: (sample output)

mysql> SELECT c.cur_title FROM wikipedia.cur c
    -> WHERE c.cur_text LIKE "%directory.google.com%";
  • Il est aussi recommandé d'installer le navigateur de requêtes de MySQL, qui utilise une agréable interface pour les requêtes MySQL. pout l'utiliser, démarrez votre serveur MySQL sur la ligne de commande puis lancé ce programme par dessus. Parmi les options présentées, vous n'avez besoin que de taper l'adresse du serveur dans « localhost » et d'appuyer sur entrée.

[modifier] Modifieurs

Pour limiter le nombre de résultats :

"SELECT ... LIMIT 20".

Vous pouvez aussi ajouter une origine :

"SELECT ... LIMIT 100, 20" affichera les 20 pages à partir de la cent-unième.

[modifier] Recherche des pages protégées

   SELECT cur_title,cur_restrictions,cur_namespace
   from cur
   where cur_restrictions!=

[modifier] Recherche des pages contenues dans l'espace méta

   select cur_title from cur where cur_namespace=4
   order by cur_title LIMIT 100

[modifier] Recherche des pages de discussion orphelines

   SELECT cur_title
   FROM cur
   GROUP BY cur_title
   HAVING MIN(cur_namespace)=1

[modifier] Recherche d'une redirection

   SELECT cur_title 
   FROM cur 
   WHERE cur_is_redirect=1 LIMIT 99

[modifier] Rechercher les pages qui ne sont pas liés à un autre Wikipedia

(pour l'anglais) :

   SELECT cur_title 
   FROM cur 
   WHERE cur_text NOT LIKE "%[[en:%" AND cur_namespace=0  AND cur_is_redirect=0 

[modifier] Recherche des pages les plus demandées

   SELECT bl_to, COUNT( DISTINCT bl_from ) as nlinks
   FROM brokenlinks
   GROUP BY bl_to HAVING nlinks > 3
   ORDER BY nlinks DESC LIMIT 0, 100

[modifier] Recherche des nouveaux utilisateurs

   SELECT user_name, COUNT(*)
   FROM user, cur
   WHERE user_id=cur_user GROUP BY user_id ORDER BY user_id DESC LIMIT 10,20

[modifier] Recherche les pages dont aucun mot de paragraphe d'introduction n'est en gras

   
    SELECT cur_title
    FROM cur
    WHERE cur_namespace=0
      AND cur_is_redirect=0
      AND cur_text NOT LIKE "%'''%"
      AND cur_text NOT LIKE "%<b>%"
      AND cur_text NOT LIKE "%disambiguation%"
      AND cur_text NOT LIKE "%list%"
      AND cur_title NOT LIKE "1%" LIMIT 200,150 ;
    

[modifier] Recherche les redirects cassés

   SELECT cur_title, cur_namespace
   FROM cur,brokenlinks
   WHERE cur_id=bl_from AND cur_is_redirect=1 LIMIT 100 


[modifier] Liste de toutes les pages méta

List of all pages (names of pages) included in the meta space, which have been created after a certain date

  • pour les derniers jours
   SELECT rc_timestamp,rc_namespace,rc_title
   FROM recentchanges
   WHERE rc_new=1 AND rc_minor=0 AND rc_namespace=4
  • To find the creation date of a page you need to look in the 'old' table for the oldest edit for that page (if, that is, it's been edited more than once!) So we try to find the newest oldest edits.... WARNING: THIS MAY BE RATHER SLOW:
   SELECT min(old_timestamp),old_namespace,old_title as creation
   FROM old
   WHERE old_namespace=4 GROUP BY old_title ORDER BY creation desc
  • Those that have only been edited once are easier to pick out, because the cur table specially marks edits that are new:
   SELECT cur_timestamp as creation,cur_namespace,cur_title
   FROM cur
   WHERE cur_namespace=4 AND cur_is_new=1 AND cur_is_redirect=0 ORDER BY creation desc


[modifier] Liste de toutes les pages du Wiktionnaire qui contiennent un certain texte

   SELECT cur_namespace,cur_title
   FROM searchindex,cur
   WHERE si_page=cur_id AND MATCH(si_text) AGAINST('"certain texte"' IN BOOLEAN MODE)

Plus lent:

   SELECT cur_namespace,cur_title
   FROM cur
   WHERE cur_text LIKE '%certain texte%'


[modifier] Statistiques

Pour calculer les stats, on peut se servir d'un programme bot.

[modifier] Tous les editions (top) cette semaine, par ordre alphabétique.

(Changer le 'timestamp' suivant la date recherchée.)

   SELECT cur_user_text, COUNT(*) AS count 
   FROM cur WHERE cur_timestamp > '20030209000000' 
   AND cur_timestamp < '20030218000000'AND cur_user != 0 
   GROUP BY cur_user
   ORDER BY cur_user_text

[modifier] Les utilisateurs les plus actifs :

   SELECT cur_user_text, COUNT(*) AS count 
   FROM cur WHERE cur_timestamp > '20030209000000' 
   AND cur_timestamp < '20030218000000' AND cur_user != 0 
   GROUP BY cur_user ORDER BY count DESC LIMIT 20

en total:

   SELECT cur_user_text, COUNT(*) AS count
   FROM cur WHERE cur_user != 0
   GROUP BY cur_user ORDER BY count DESC LIMIT 100

sur RC:

   SELECT rc_user_text, COUNT(*) AS count
   FROM `recentchanges`
   WHERE rc_user !=0
   GROUP BY rc_user_text ORDER BY count DESC LIMIT 100

[modifier] Édition

   SELECT rc_user_text, COUNT(*) AS count
   FROM `recentchanges`
   WHERE rc_user !=0
     AND rc_timestamp > '20030209000000'
     AND rc_timestamp < '20030218000000'
   GROUP BY rc_user_text
   ORDER BY rc_user_text LIMIT 999

[modifier] Recherche des pages des anciennes phases

(Ryo)

   SELECT cur_title, cur_namespace, cur_is_redirect
   FROM cur
   WHERE cur_title like 'Wikipedia-%' limit 50

[modifier] Articles contenant un lien vers un redirect

donc potentiellement à corriger (Ryo):

   SELECT ca.cur_title, cb.cur_title AS lien
   FROM links, cur AS ca, cur AS cb
   WHERE cb.cur_is_redirect = 1
     AND l_to = cb.cur_id
     AND l_from = ca.cur_title
     AND ca.cur_namespace = 0 LIMIT 20

[modifier] Articles les plus liés

   SELECT cur_title, COUNT(*) AS cnt
   FROM cur, links
   WHERE links.l_to = cur.cur_id
    AND cur_namespace = 0
   GROUP BY links.l_to
   ORDER BY cnt DESC 
   LIMIT 100

[modifier] Images d'un utilisateur

   SELECT img_size, img_name, img_description, img_timestamp
   FROM image
   WHERE img_user_text = 'Pierre Dupont'
   ORDER BY img_timestamp DESC LIMIT 1000

[modifier] Redirect ayant au moins une page qui pointe sur eux

   SELECT cur_title, cur_namespace, count( l_from )
   FROM cur left join links on l_to = cur_id
   WHERE cur_is_redirect = 1
   GROUP BY cur_title, cur_namespace
   HAVING count( l_from ) > 0
   LIMIT 100
Outils personnels
Espaces de noms

Variantes
Actions
Navigation
Contribuer
Aide
Boîte à outils