<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://www.ainw.org/wiki/lib/exe/css.php?s=feed" type="text/css"?>
<rss version="2.0">
    <channel xmlns:g="http://base.google.com/ns/1.0">
        <title>Mon wiki - informatique:databases:mysql</title>
        <description></description>
        <link>https://www.ainw.org/wiki/</link>
        <lastBuildDate>Mon, 04 May 2026 11:42:42 +0000</lastBuildDate>
        <generator>FeedCreator 1.8</generator>
        <image>
            <url>https://www.ainw.org/wiki/lib/exe/fetch.php?media=wiki:dokuwiki.svg</url>
            <title>Mon wiki</title>
            <link>https://www.ainw.org/wiki/</link>
        </image>
        <item>
            <title>changement_du_mot_de_passe_root_ubuntu_16.04</title>
            <link>https://www.ainw.org/wiki/doku.php?id=informatique:databases:mysql:changement_du_mot_de_passe_root_ubuntu_16.04&amp;rev=1732243947&amp;do=diff</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;changement_du_mot_de_passe_root_ubuntu_1604&quot;&gt;Changement du mot de passe root (Ubuntu 16.04)&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Sur Ubuntu 16.04, le mécanisme de gestion des mots de passe ne permet pas d&amp;#039;avoir un mot de passe vide lors de l&amp;#039;installation. Pour pouvoir quand même utiliser un mot de passe vide, il faut réaliser les quelques manipulations suivantes :
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;co0&quot;&gt;# Arrêt de mysql&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; service mysql stop
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# Démarrage de mysql en &amp;quot;safe-mode&amp;quot;&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; mysqld_safe &lt;span class=&quot;re5&quot;&gt;--skip-grant-tables&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# Mise à jour du mot de passe&lt;/span&gt;
mysql &lt;span class=&quot;re5&quot;&gt;-u&lt;/span&gt; root &lt;span class=&quot;re5&quot;&gt;-e&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;update user set authentication_string=&amp;quot;&amp;quot; where User=&amp;quot;root&amp;quot;&#039;&lt;/span&gt; mysql
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# Mise à jour du mécanisme de gestion des mots de passe&lt;/span&gt;
mysql &lt;span class=&quot;re5&quot;&gt;-u&lt;/span&gt; root &lt;span class=&quot;re5&quot;&gt;-e&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;update user set plugin=&amp;quot;mysql_native_password&amp;quot; where User=&amp;quot;root&amp;quot;&#039;&lt;/span&gt; mysql
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# Remise à zéro des privilèges&lt;/span&gt;
mysql &lt;span class=&quot;re5&quot;&gt;-u&lt;/span&gt; root &lt;span class=&quot;re5&quot;&gt;-e&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;FLUSH PRIVILEGES&#039;&lt;/span&gt; mysql
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# Démarrage de mysql&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; service mysql start&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_info plugin_wrap&quot;&gt;
&lt;p&gt;
Cette manipulation n&amp;#039;est pas recommandée et sera à refaire à chaque mise à jour de MySql
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 22 Nov 2024 02:52:27 +0000</pubDate>
        </item>
        <item>
            <title>comments</title>
            <link>https://www.ainw.org/wiki/doku.php?id=informatique:databases:mysql:comments&amp;rev=1732243056&amp;do=diff</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;commentaires&quot;&gt;Commentaires&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Pour un code de qualité, il faut commenter et le faire de manière intelligente. L&amp;#039;environnement de base de données n&amp;#039;échappe pas à cette règle.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Commentaires&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;commentaires&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-177&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;dans_les_options_de_table&quot;&gt;Dans les options de table&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Il est possible d&amp;#039;ajouter un commentaire dans les options d&amp;#039;une table. Il est possible d&amp;#039;ajouter ce commentaire à sa création ou à sa mise à jour. Attention, la taille du commentaire ne peut pas dépasser 60 caractères.
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;ALTER&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;TABLE&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
COMMENT &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&amp;lt;comment&amp;gt;&#039;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Dans les options de table&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dans_les_options_de_table&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;178-524&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;dans_les_options_de_colonne&quot;&gt;Dans les options de colonne&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Il est possible d&amp;#039;ajouter un commentaire dans les options d&amp;#039;une colonne. Il est possible d&amp;#039;ajouter ce commentaire à sa création ou à sa mise à jour. Attention, la taille du commentaire ne peut pas dépasser 255 caractères.
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;ALTER&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;TABLE&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;MODIFY&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;COLUMN&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;column&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;datatype&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; COMMENT &lt;span class=&quot;st0&quot;&gt;&#039;&amp;lt;comment&amp;gt;&#039;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Dans les options de colonne&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dans_les_options_de_colonne&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;525-908&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit8&quot; id=&quot;dans_les_options_de_procedure_stockee&quot;&gt;Dans les options de procédure stockée&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Il est possible d&amp;#039;ajouter un commentaire dans les options d&amp;#039;une procédure stockée. Il est possible d&amp;#039;ajouter ce commentaire à sa création ou à sa mise à jour.
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;ALTER&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;PROCEDURE&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;proc&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
COMMENT &lt;span class=&quot;st0&quot;&gt;&#039;&amp;lt;comment&amp;gt;&#039;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Dans les options de proc\u00e9dure stock\u00e9e&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dans_les_options_de_procedure_stockee&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;909-1210&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit11&quot; id=&quot;dans_la_procedure_stockee&quot;&gt;Dans la procédure stockée&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Il est également recommandé d&amp;#039;ajouter des commentaires dans les procédures stockés et les scripts. Il existe trois syntaxes pour cela.
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;# Première syntaxe
# &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;comment&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;-- Deuxième syntaxe&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;-- &amp;lt;comment&amp;gt;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/* Troisième syntaxe, peut être affiché sur plusieurs lignes */&lt;/span&gt;
&lt;span class=&quot;coMULTI&quot;&gt;/* &amp;lt;comment&amp;gt; */&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Dans la proc\u00e9dure stock\u00e9e&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dans_la_procedure_stockee&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;1211-1582&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit14&quot; id=&quot;dans_la_requete&quot;&gt;Dans la requête&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Il est possible d&amp;#039;ajouter un commentaire directement dans une requête SQL. Ce qui peut s&amp;#039;avérer très pratique lors de l&amp;#039;affichage des requêtes en cours d&amp;#039;exécution.
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;co1&quot;&gt;-- Première syntaxe&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt;
&lt;span class=&quot;coMULTI&quot;&gt;/* &amp;lt;comment&amp;gt; */&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;column&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;-- Deuxième syntaxe&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;-- &amp;lt;comment&amp;gt;&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;column&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Dans la requ\u00eate&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dans_la_requete&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;1583-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 22 Nov 2024 02:37:36 +0000</pubDate>
        </item>
        <item>
            <title>export_de_donnees</title>
            <link>https://www.ainw.org/wiki/doku.php?id=informatique:databases:mysql:export_de_donnees&amp;rev=1732243812&amp;do=diff</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;export_de_donnees&quot;&gt;Export de données&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Export de donn\u00e9es&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;export_de_donnees&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-34&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;export_d_une_base_de_donnees&quot;&gt;Export d&amp;#039;une base de données&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Il est possible de le faire avec PhpMyAdmin mais c&amp;#039;est très long et pas forcément fiable. Il vaut mieux utiliser l&amp;#039;outil mysqldump installé en même temps que mysql.
Voici un exemple d&amp;#039;utilisation :
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code bash&quot;&gt;mysqldump 
    &lt;span class=&quot;re5&quot;&gt;--add-drop-database&lt;/span&gt;
    &lt;span class=&quot;re5&quot;&gt;--skip-comments&lt;/span&gt;
    &lt;span class=&quot;re5&quot;&gt;--complete-insert&lt;/span&gt;
    &lt;span class=&quot;re5&quot;&gt;--disable-keys&lt;/span&gt;
    &lt;span class=&quot;re5&quot;&gt;--extended-insert&lt;/span&gt;
    &lt;span class=&quot;re5&quot;&gt;--routines&lt;/span&gt;
    &lt;span class=&quot;re5&quot;&gt;--host&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;hostname&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;re5&quot;&gt;--password&lt;/span&gt;
    &lt;span class=&quot;re5&quot;&gt;--user&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;username&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;re5&quot;&gt;--result-file&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;filename&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;re5&quot;&gt;--databases&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;database&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;--add-drop-database&lt;/code&gt; ajoute une requête de suppression de base avant chaque requête de création de base.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;--skip-comments&lt;/code&gt; n&amp;#039;ajoute pas les commentaires dans le fichier généré.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;--complete-insert&lt;/code&gt; génère des requêtes d&amp;#039;insertion contenant les noms de colonnes.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;--disable-keys&lt;/code&gt; ajoute une requête pour désactiver les clés avant la requête d&amp;#039;insertion et une requête pour activer les clés après.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;--extended-insert&lt;/code&gt; utilise la syntaxe multi-lignes pour les requêtes d&amp;#039;insertion.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;--routines&lt;/code&gt; extrait les procédures stockées et les fonctions des bases de données sauvegardées.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;--host&lt;/code&gt; indique l&amp;#039;hôte de la base de donnée à utiliser.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;--password&lt;/code&gt; indique le mot de passe à utiliser.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;--user&lt;/code&gt; indique l&amp;#039;utilisateur à utiliser.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;--result-file&lt;/code&gt; indique le nom du fichier à générer.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;--databases&lt;/code&gt; indique que les arguments sont des bases et ajoute les requêtes de création de base.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Pour plus d&amp;#039;option, il faut regarder dans la &lt;a href=&quot;https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html&quot; class=&quot;urlextern&quot; title=&quot;https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html&quot; rel=&quot;ugc nofollow&quot;&gt;documentation officielle&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Export d&amp;#039;une base de donn\u00e9es&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;export_d_une_base_de_donnees&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;35-1719&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;export_d_une_table&quot;&gt;Export d&amp;#039;une table&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Comme pour l&amp;#039;exportation d&amp;#039;une base de données, il est possible de le faire avec PhpMyAdmin mais il vaut mieux utiliser directement mysql. Voici un exemple d&amp;#039;utilisation :
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code bash&quot;&gt;mysqldump 
    &lt;span class=&quot;re5&quot;&gt;--skip-comments&lt;/span&gt;
    &lt;span class=&quot;re5&quot;&gt;--complete-insert&lt;/span&gt;
    &lt;span class=&quot;re5&quot;&gt;--disable-keys&lt;/span&gt;
    &lt;span class=&quot;re5&quot;&gt;--extended-insert&lt;/span&gt;
    &lt;span class=&quot;re5&quot;&gt;--host&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;hostname&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;re5&quot;&gt;--password&lt;/span&gt;
    &lt;span class=&quot;re5&quot;&gt;--user&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;username&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;re5&quot;&gt;--result-file&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;filename&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;re5&quot;&gt;--single-transaction&lt;/span&gt;
    &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;database&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Export d&amp;#039;une table&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;export_d_une_table&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;1720-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 22 Nov 2024 02:50:12 +0000</pubDate>
        </item>
        <item>
            <title>procedures_et_fonctions</title>
            <link>https://www.ainw.org/wiki/doku.php?id=informatique:databases:mysql:procedures_et_fonctions&amp;rev=1732243056&amp;do=diff</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;procedures_et_fonctions&quot;&gt;Procédures et fonctions&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Proc\u00e9dures et fonctions&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;procedures_et_fonctions&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-39&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;interruption_de_l_execution_d_une_procedure&quot;&gt;Interruption de l&amp;#039;exécution d&amp;#039;une procedure&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;co1&quot;&gt;-- Avec l&#039;utilisation d&#039;une étiquette&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;PROCEDURE&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;nom de la procédure&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
this_proc:&lt;span class=&quot;kw1&quot;&gt;BEGIN&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;IF&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;condition&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;THEN&lt;/span&gt;
        LEAVE this_proc;
    &lt;span class=&quot;kw1&quot;&gt;END&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;IF&lt;/span&gt;;
    &lt;span class=&quot;sy0&quot;&gt;...&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;END&lt;/span&gt;;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;-- Avec l&#039;utilisation d&#039;un bloc IF&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;PROCEDURE&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;nom de la procédure&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;BEGIN&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;IF&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;condition&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;THEN&lt;/span&gt;
        &lt;span class=&quot;sy0&quot;&gt;...&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;END&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;IF&lt;/span&gt;;
&lt;span class=&quot;kw1&quot;&gt;END&lt;/span&gt;;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;p&gt;
La première méthode est plus intéressante car elle permet de garder un code propre, même quand le nombre de d&amp;#039;interruption augmente.&lt;br/&gt;

Avec la seconde méthode, il sera nécessaire d&amp;#039;imbriquer de multiples blocs &lt;em&gt;IF&lt;/em&gt;, le rendant moins lisible.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Interruption de l&amp;#039;ex\u00e9cution d&amp;#039;une procedure&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;interruption_de_l_execution_d_une_procedure&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;40-697&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;definition_d_une_procedure&quot;&gt;Définition d&amp;#039;une procédure&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;D\u00e9finition d&amp;#039;une proc\u00e9dure&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;definition_d_une_procedure&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;698-739&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;utilisateur_de_creation&quot;&gt;Utilisateur de création&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
S&amp;#039;il n&amp;#039;est pas explicitement mentionné, l&amp;#039;utilisateur utilisé pour la définition de la procédure sera utilisé.&lt;br/&gt;

Il est possible de spécifier l&amp;#039;utilisateur à utiliser :
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;CREATE&lt;/span&gt; DEFINER &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;`&amp;lt;utilisateur&amp;gt;`&lt;/span&gt;@&lt;span class=&quot;st0&quot;&gt;`&amp;lt;hôte&amp;gt;`&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;PROCEDURE&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;nom de la procédure&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;BEGIN&lt;/span&gt;
   &lt;span class=&quot;sy0&quot;&gt;...&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;END&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;p&gt;
&lt;strong&gt;Note&lt;/strong&gt; : il n&amp;#039;est pas nécessaire que l&amp;#039;utilisateur existe sur la base de données.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Utilisateur de cr\u00e9ation&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;utilisateur_de_creation&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;740-1174&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit9&quot; id=&quot;type_de_securite_appliquee&quot;&gt;Type de sécurité appliquée&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Il existe 2 types de sécurité pour l&amp;#039;exécution des procédures :
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;em&gt;DEFINER&lt;/em&gt; : utilise les droits de l&amp;#039;utilisateur utiliser pour la définition de la procédure,&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;em&gt;INVOKER&lt;/em&gt; : utilise les droits de l&amp;#039;utilisateur appelant la procédure.&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
S&amp;#039;il n&amp;#039;est pas explicitement mentionné, le type de sécurité appliqué sera &lt;em&gt;DEFINER&lt;/em&gt;.&lt;br/&gt;

Lors de la création d&amp;#039;une procédure, il est possible de définir le type de sécurité à appliquer.
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;PROCEDURE&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;nom de la procédure&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SQL&lt;/span&gt; SECURITY INVOKER
&lt;span class=&quot;kw1&quot;&gt;BEGIN&lt;/span&gt;
   &lt;span class=&quot;sy0&quot;&gt;...&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;END&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;p&gt;
&lt;strong&gt;Note&lt;/strong&gt; : si l&amp;#039;utilisateur n&amp;#039;existe pas et que le type de sécurité appliquée est &lt;em&gt;DEFINER&lt;/em&gt;, l&amp;#039;erreur suivante sera générée:
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code&quot;&gt;ERROR 1449 (HY000): The user specified as a definer (&amp;#039;&amp;lt;utilisateur&amp;gt;&amp;#039;@&amp;#039;%&amp;#039;) does not exist&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Type de s\u00e9curit\u00e9 appliqu\u00e9e&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;type_de_securite_appliquee&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;1175-2041&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit14&quot; id=&quot;commentaires&quot;&gt;Commentaires&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;PROCEDURE&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;nom de la procédure&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
COMMENT &lt;span class=&quot;st0&quot;&gt;&#039;&amp;lt;commentaire&amp;gt;&#039;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;BEGIN&lt;/span&gt;
    &lt;span class=&quot;sy0&quot;&gt;...&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;END&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Commentaires&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;commentaires&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;2042-2191&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit17&quot; id=&quot;fonctions_utiles&quot;&gt;Fonctions utiles&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Fonctions utiles&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;fonctions_utiles&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:17,&amp;quot;range&amp;quot;:&amp;quot;2192-2221&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit18&quot; id=&quot;ajout_d_une_duree_normalisee_a_une_date&quot;&gt;Ajout d&amp;#039;une durée normalisée à une date&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Selon la norme &lt;a href=&quot;https://fr.wikipedia.org/wiki/ISO_8601#Dur%C3%A9e&quot; class=&quot;urlextern&quot; title=&quot;https://fr.wikipedia.org/wiki/ISO_8601#Dur%C3%A9e&quot; rel=&quot;ugc nofollow&quot;&gt;ISO 8601&lt;/a&gt;, on peut normaliser les durées utilisées pour le calcul de dates. MySQL permet d&amp;#039;ajouter des durées à des dates mais en utilisant une syntaxe n&amp;#039;utilisant pas les durées normalisées. La fonction &lt;sup&gt;&lt;a href=&quot;#fn__1&quot; id=&quot;fnt__1&quot; class=&quot;fn_top&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt;qui suit permet de faire ça mais uniquement pour les jours, les semaines, les mois et les années.
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:19,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;FUNCTION&lt;/span&gt; ADD_ISO_DURATION&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;StartDate &lt;span class=&quot;kw1&quot;&gt;DATE&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; Duration &lt;span class=&quot;kw1&quot;&gt;VARCHAR&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;45&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;RETURNS&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;DATE&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;BEGIN&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;DECLARE&lt;/span&gt; Pos &lt;span class=&quot;kw1&quot;&gt;INTEGER&lt;/span&gt;;
&amp;nbsp;
  &lt;span class=&quot;kw1&quot;&gt;IF&lt;/span&gt; StartDate &lt;span class=&quot;kw1&quot;&gt;IS&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NULL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;OR&lt;/span&gt; Duration &lt;span class=&quot;kw1&quot;&gt;IS&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NULL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;OR&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;LENGTH&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Duration&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;THEN&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;RETURN&lt;/span&gt; StartDate;
  &lt;span class=&quot;kw1&quot;&gt;END&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;IF&lt;/span&gt;;
&amp;nbsp;
  &lt;span class=&quot;kw1&quot;&gt;IF&lt;/span&gt; Duration &lt;span class=&quot;kw1&quot;&gt;REGEXP&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;^P[0-9]+W$&#039;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;THEN&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;SET&lt;/span&gt; StartDate &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; DATE_ADD&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;StartDate&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;INTERVAL&lt;/span&gt; SUBSTR&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Duration&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;LENGTH&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Duration&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; WEEK&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
    &lt;span class=&quot;kw1&quot;&gt;RETURN&lt;/span&gt; StartDate;
  &lt;span class=&quot;kw1&quot;&gt;END&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;IF&lt;/span&gt;;
&amp;nbsp;
  &lt;span class=&quot;kw1&quot;&gt;IF&lt;/span&gt; Duration &lt;span class=&quot;kw1&quot;&gt;NOT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;REGEXP&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;^P([0-9]+Y)?([0-9]+M)?([0-9]+D)?$&#039;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;THEN&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;RETURN&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NULL&lt;/span&gt;;
  &lt;span class=&quot;kw1&quot;&gt;END&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;IF&lt;/span&gt;;
&amp;nbsp;
  &lt;span class=&quot;kw1&quot;&gt;SET&lt;/span&gt; Duration &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; SUBSTR&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Duration&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
  &lt;span class=&quot;kw1&quot;&gt;SET&lt;/span&gt; Pos &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; LOCATE&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;Y&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; Duration&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
  &lt;span class=&quot;kw1&quot;&gt;IF&lt;/span&gt; Pos &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;THEN&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;SET&lt;/span&gt; StartDate &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; DATE_ADD&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;StartDate&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;INTERVAL&lt;/span&gt; SUBSTR&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Duration&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; Pos &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;YEAR&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
    &lt;span class=&quot;kw1&quot;&gt;SET&lt;/span&gt; Duration &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; SUBSTR&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Duration&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; Pos &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
  &lt;span class=&quot;kw1&quot;&gt;END&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;IF&lt;/span&gt;;
&amp;nbsp;
  &lt;span class=&quot;kw1&quot;&gt;SET&lt;/span&gt; Pos &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; LOCATE&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;M&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; Duration&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
  &lt;span class=&quot;kw1&quot;&gt;IF&lt;/span&gt; Pos &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;THEN&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;SET&lt;/span&gt; StartDate &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; DATE_ADD&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;StartDate&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;INTERVAL&lt;/span&gt; SUBSTR&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Duration&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; Pos &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;MONTH&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
    &lt;span class=&quot;kw1&quot;&gt;SET&lt;/span&gt; Duration &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; SUBSTR&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Duration&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; Pos &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
  &lt;span class=&quot;kw1&quot;&gt;END&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;IF&lt;/span&gt;;
&amp;nbsp;
  &lt;span class=&quot;kw1&quot;&gt;SET&lt;/span&gt; Pos &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; LOCATE&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;D&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; Duration&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
  &lt;span class=&quot;kw1&quot;&gt;IF&lt;/span&gt; Pos &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;THEN&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;SET&lt;/span&gt; StartDate &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; DATE_ADD&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;StartDate&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;INTERVAL&lt;/span&gt; SUBSTR&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Duration&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; Pos &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;DAY&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
  &lt;span class=&quot;kw1&quot;&gt;END&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;IF&lt;/span&gt;;
&amp;nbsp;
  &lt;span class=&quot;kw1&quot;&gt;RETURN&lt;/span&gt; StartDate;
&lt;span class=&quot;kw1&quot;&gt;END&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:20,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Ajout d&amp;#039;une dur\u00e9e normalis\u00e9e \u00e0 une date&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ajout_d_une_duree_normalisee_a_une_date&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:18,&amp;quot;range&amp;quot;:&amp;quot;2222-&amp;quot;} --&gt;&lt;div class=&quot;footnotes&quot;&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__1&quot; id=&quot;fn__1&quot; class=&quot;fn_bot&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;Largement inspirée de &lt;a href=&quot;https://stackoverflow.com/questions/42079380/mysql-convert-iso-8601-duration-to-interval-for-date-add?rq=1&quot; class=&quot;urlextern&quot; title=&quot;https://stackoverflow.com/questions/42079380/mysql-convert-iso-8601-duration-to-interval-for-date-add?rq=1&quot; rel=&quot;ugc nofollow&quot;&gt;iso8601 - MySQL - Convert ISO-8601 Duration to Interval for DATE_ADD - Stack Overflow&lt;/a&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 22 Nov 2024 02:37:36 +0000</pubDate>
        </item>
        <item>
            <title>requetes_administration</title>
            <link>https://www.ainw.org/wiki/doku.php?id=informatique:databases:mysql:requetes_administration&amp;rev=1732243056&amp;do=diff</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;requetes_d_administration&quot;&gt;Requêtes d&amp;#039;administration&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Requ\u00eates d&amp;#039;administration&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;requetes_d_administration&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-41&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;affichage_des_erreurs&quot;&gt;Affichage des erreurs&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SHOW&lt;/span&gt; ERRORS&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;p&gt;
Plus d&amp;#039;informations &lt;a href=&quot;http://dev.mysql.com/doc/refman/5.5/en/show-errors.html&quot; class=&quot;urlextern&quot; title=&quot;http://dev.mysql.com/doc/refman/5.5/en/show-errors.html&quot; rel=&quot;ugc nofollow&quot;&gt;ici&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Affichage des erreurs&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;affichage_des_erreurs&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;42-214&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;affichage_des_alertes&quot;&gt;Affichage des alertes&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SHOW&lt;/span&gt; WARNINGS&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;p&gt;
Plus d&amp;#039;informations &lt;a href=&quot;http://dev.mysql.com/doc/refman/5.5/en/show-warnings.html&quot; class=&quot;urlextern&quot; title=&quot;http://dev.mysql.com/doc/refman/5.5/en/show-warnings.html&quot; rel=&quot;ugc nofollow&quot;&gt;ici&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Affichage des alertes&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;affichage_des_alertes&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;215-391&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit8&quot; id=&quot;affichage_de_la_description_d_une_table&quot;&gt;Affichage de la description d&amp;#039;une table&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;DESC&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;p&gt;
Plus d&amp;#039;informations &lt;a href=&quot;http://dev.mysql.com/doc/refman/5.5/en/explain.html&quot; class=&quot;urlextern&quot; title=&quot;http://dev.mysql.com/doc/refman/5.5/en/explain.html&quot; rel=&quot;ugc nofollow&quot;&gt;ici&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Affichage de la description d&amp;#039;une table&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;affichage_de_la_description_d_une_table&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;392-579&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit11&quot; id=&quot;purge_des_caches&quot;&gt;Purge des caches&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;/* Ferme les tables ouvertes, force la fermeture des tables utilisées, purge le tampon de requêtes */&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;FLUSH&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;TABLES&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/* Purge le cache des hôtes lorsqu&#039;ils changent d&#039;IP ou lorsqu&#039;ils génèrent trop de connexions */&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;FLUSH&lt;/span&gt; HOSTS&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;p&gt;
Plus d&amp;#039;informations &lt;a href=&quot;http://dev.mysql.com/doc/refman/5.5/en/flush.html&quot; class=&quot;urlextern&quot; title=&quot;http://dev.mysql.com/doc/refman/5.5/en/flush.html&quot; rel=&quot;ugc nofollow&quot;&gt;ici&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Purge des caches&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;purge_des_caches&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;580-960&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit14&quot; id=&quot;changement_de_mot_de_passe&quot;&gt;Changement de mot de passe&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SET&lt;/span&gt; PASSWORD &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; PASSWORD&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;&amp;lt;password&amp;gt;&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Changement de mot de passe&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;changement_de_mot_de_passe&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;961-1080&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit17&quot; id=&quot;changer_les_droits_d_un_utilisateur&quot;&gt;Changer les droits d&amp;#039;un utilisateur&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:18,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;/* Pour donner les droits à tous les hôtes, il faut utiliser % */&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;GRANT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; PRIVILEGES &lt;span class=&quot;kw1&quot;&gt;ON&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;database&lt;span class=&quot;sy0&quot;&gt;&amp;gt;.*&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;TO&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&amp;lt;username&amp;gt;&#039;&lt;/span&gt;@&lt;span class=&quot;st0&quot;&gt;&#039;&amp;lt;host&amp;gt;&#039;&lt;/span&gt;;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;FLUSH&lt;/span&gt; PRIVILEGES;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:19,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Changer les droits d&amp;#039;un utilisateur&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;changer_les_droits_d_un_utilisateur&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:17,&amp;quot;range&amp;quot;:&amp;quot;1081-1321&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit20&quot; id=&quot;recuperer_la_liste_des_index_d_une_base_de_donnees&quot;&gt;Récupérer la liste des index d&amp;#039;une base de données&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:21,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;DISTINCT&lt;/span&gt; s&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;INDEX_SCHEMA
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; s&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;INDEX_NAME
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; s&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;TABLE_NAME
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; INFORMATION_SCHEMA&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;STATISTICS s
&lt;span class=&quot;kw1&quot;&gt;LEFT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;OUTER&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;JOIN&lt;/span&gt; INFORMATION_SCHEMA&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;TABLE_CONSTRAINTS t &lt;span class=&quot;kw1&quot;&gt;ON&lt;/span&gt; t&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;TABLE_SCHEMA &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;TABLE_SCHEMA &lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; t&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;TABLE_NAME &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;TABLE_NAME
&lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; s&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;INDEX_NAME &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; t&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;CONSTRAINT_NAME
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; t&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;CONSTRAINT_NAME &lt;span class=&quot;kw1&quot;&gt;IS&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NULL&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; s&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;TABLE_SCHEMA &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&amp;lt;database&amp;gt;&#039;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:22,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;R\u00e9cup\u00e9rer la liste des index d&amp;#039;une base de donn\u00e9es&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;recuperer_la_liste_des_index_d_une_base_de_donnees&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:20,&amp;quot;range&amp;quot;:&amp;quot;1322-1753&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit23&quot; id=&quot;gerer_les_processus_en_cours&quot;&gt;Gérer les processus en cours&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:24,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;co1&quot;&gt;-- Affiche la liste des processus en cours&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;SHOW&lt;/span&gt; processlist;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;-- Arrête un processus en le sélectionnant par son id&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;KILL&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;id&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:25,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;G\u00e9rer les processus en cours&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;gerer_les_processus_en_cours&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:23,&amp;quot;range&amp;quot;:&amp;quot;1754-1967&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit26&quot; id=&quot;comparer_le_schema_de_deux_tables&quot;&gt;Comparer le schéma de deux tables&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:27,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; COLUMN_NAME
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; ORDINAL_POSITION
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; DATA_TYPE
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; COLUMN_TYPE
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; information_schema&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;`COLUMNS`&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; TABLE_SCHEMA &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;DATABASE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;TABLE_NAME&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;IN&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;&amp;lt;table1&amp;gt;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&amp;lt;table2&amp;gt;&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;GROUP&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;BY&lt;/span&gt; COLUMN_NAME
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; ORDINAL_POSITION
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; DATA_TYPE
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; COLUMN_TYPE
&lt;span class=&quot;kw1&quot;&gt;HAVING&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;COUNT&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:28,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;p&gt;
La requête précédente est un peu violente car elle valide que les champs sont à la même position.
En voici une qui est moins restrictive car elle ne fait pas cette vérification :
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:29,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; COLUMN_NAME
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; DATA_TYPE
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; COLUMN_TYPE
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; information_schema&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;`COLUMNS`&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; TABLE_SCHEMA &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;DATABASE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;TABLE_NAME&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;IN&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;&amp;lt;table1&amp;gt;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&amp;lt;table2&amp;gt;&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;GROUP&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;BY&lt;/span&gt; COLUMN_NAME
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; DATA_TYPE
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; COLUMN_TYPE
&lt;span class=&quot;kw1&quot;&gt;HAVING&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;COUNT&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:30,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Comparer le sch\u00e9ma de deux tables&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;comparer_le_schema_de_deux_tables&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:8,&amp;quot;secid&amp;quot;:26,&amp;quot;range&amp;quot;:&amp;quot;1968-2760&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit31&quot; id=&quot;recuperer_la_liste_des_tables_avec_une_colonne_manquante&quot;&gt;Récupérer la liste des tables avec une colonne manquante&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Dans certaines tables, on travaille avec les couples de colonnes &lt;code&gt;createdAt&lt;/code&gt;/&lt;code&gt;createdBy&lt;/code&gt;, &lt;code&gt;updatedAt&lt;/code&gt;/&lt;code&gt;updatedBy&lt;/code&gt; et/ou &lt;code&gt;deletedAt&lt;/code&gt;/&lt;code&gt;deletedBy&lt;/code&gt;. Mais parfois, on oublie l&amp;#039;une des deux colonnes. Trouver ces tables n&amp;#039;est pas un vrai problème quand on n&amp;#039;a que quelques tables mais avec plusieurs centaines, il vaut mieux écrire une requête appropriée.
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:32,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; @tableSchema :&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;database&#039;&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; @columnName :&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;deleted&#039;&lt;/span&gt;;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;-- Première écriture de la requête (naïve). Le temps d&#039;exécution est très long (≈ 10 secondes).&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; t&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;TABLE_NAME
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; information_schema&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;TABLES &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; t
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; t&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;TABLE_SCHEMA &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; @tableSchema
&lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;EXISTS&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; information_schema&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;`COLUMNS`&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; c
	&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; c&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;TABLE_SCHEMA &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; t&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;TABLE_SCHEMA
	&lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; c&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;TABLE_NAME &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; t&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;TABLE_NAME
	&lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; c&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;COLUMN_NAME &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; CONCAT&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;@columnName&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;At&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NOT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;EXISTS&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; information_schema&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;`COLUMNS`&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; c
	&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; c&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;TABLE_SCHEMA &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; t&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;TABLE_SCHEMA
	&lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; c&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;TABLE_NAME &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; t&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;TABLE_NAME
	&lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; c&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;COLUMN_NAME &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; CONCAT&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;@columnName&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;By&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;-- Seconde écriture de la requête. Le temps d&#039;exécution est nettement meilleur (≈ 30 milli-secondes) pour un résultat identique.&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; c&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;TABLE_NAME
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; information_schema&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;`COLUMNS`&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; c
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; c&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;TABLE_SCHEMA &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; @tableSchema
&lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; c&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;COLUMN_NAME &lt;span class=&quot;kw1&quot;&gt;LIKE&lt;/span&gt; CONCAT&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;@columnName&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;%&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;GROUP&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;BY&lt;/span&gt; c&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;TABLE_NAME
&lt;span class=&quot;kw1&quot;&gt;HAVING&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;COUNT&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:33,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;R\u00e9cup\u00e9rer la liste des tables avec une colonne manquante&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;recuperer_la_liste_des_tables_avec_une_colonne_manquante&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:10,&amp;quot;secid&amp;quot;:31,&amp;quot;range&amp;quot;:&amp;quot;2761-4193&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit34&quot; id=&quot;calculer_la_taille_des_donnees&quot;&gt;Calculer la taille des données&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:35,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;co1&quot;&gt;-- Afficher la taille globale de l&#039;ensemble des bases de données&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; TABLE_SCHEMA &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Nom de la base de données&amp;quot;&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; CONCAT&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ROUND&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;SUM&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;DATA_LENGTH &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; INDEX_LENGTH&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1024&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1024&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot; MB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Taille de la base de données&amp;quot;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; information_schema&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;TABLES
&lt;span class=&quot;kw1&quot;&gt;GROUP&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;BY&lt;/span&gt; TABLE_SCHEMA
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;-- Afficher le détail de la taille des tables d&#039;une base de données&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;TABLE_NAME&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Nom de la table&amp;quot;&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; TABLE_ROWS &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Nombre de lignes&amp;quot;&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; CONCAT&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ROUND&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;DATA_LENGTH &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1024&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1024&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot; MB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Taille des données&amp;quot;&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; CONCAT&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ROUND&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;INDEX_LENGTH &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1024&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1024&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot; MB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Taille de l&#039;index&amp;quot;&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; CONCAT&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ROUND&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;DATA_LENGTH &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; INDEX_LENGTH&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1024&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1024&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot; MB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Taille de la table&amp;quot;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; information_schema&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;TABLES
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; TABLE_SCHEMA &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;resamania&amp;quot;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;ORDER&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;BY&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;DATA_LENGTH &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; INDEX_LENGTH&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;TABLE_NAME&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:36,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Calculer la taille des donn\u00e9es&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;calculer_la_taille_des_donnees&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:11,&amp;quot;secid&amp;quot;:34,&amp;quot;range&amp;quot;:&amp;quot;4194-5070&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit37&quot; id=&quot;logguer_les_requetes&quot;&gt;Logguer les requêtes&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:38,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;co1&quot;&gt;-- Définition de la destination (mysql.general_log)&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;SET&lt;/span&gt; GLOBAL log_output &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;TABLE&#039;&lt;/span&gt;;
&lt;span class=&quot;co1&quot;&gt;-- Activation du logging&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;SET&lt;/span&gt; GLOBAL general_log &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;ON&#039;&lt;/span&gt;;
&lt;span class=&quot;co1&quot;&gt;-- Désactivation du logging&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;SET&lt;/span&gt; GLOBAL general_log &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;OFF&#039;&lt;/span&gt;;
&lt;span class=&quot;co1&quot;&gt;-- Purge de la table (uniquement quand le logging est arrêté)&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;TRUNCATE&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;TABLE&lt;/span&gt; mysql&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;general_log&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:39,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:40,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_info plugin_wrap&quot;&gt;
&lt;p&gt;
Pour logguer dans un fichier :
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:42,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;co1&quot;&gt;-- Définition de la destination&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;SET&lt;/span&gt; GLOBAL log_output &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;FILE&#039;&lt;/span&gt;;
&lt;span class=&quot;co1&quot;&gt;-- Définition du fichier&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;SET&lt;/span&gt; GLOBAL general_log_file &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;lt;/path/to/file&amp;gt;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:43,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:41,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Logguer les requ\u00eates&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;logguer_les_requetes&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:12,&amp;quot;secid&amp;quot;:37,&amp;quot;range&amp;quot;:&amp;quot;5071-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 22 Nov 2024 02:37:36 +0000</pubDate>
        </item>
        <item>
            <title>requetes_amusantes</title>
            <link>https://www.ainw.org/wiki/doku.php?id=informatique:databases:mysql:requetes_amusantes&amp;rev=1732244050&amp;do=diff</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;requetes_amusantes&quot;&gt;Requêtes amusantes&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Requ\u00eates amusantes&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;requetes_amusantes&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-34&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;multiplier_le_nombre_de_lignes_d_une_table&quot;&gt;Multiplier le nombre de lignes d&amp;#039;une table&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Cette requête permet de multiplier le nombre d&amp;#039;enregistrements d&amp;#039;une table en fonction d&amp;#039;un multiplicateur de cette même table. Dans l&amp;#039;exemple suivant, on ne pourra pas générer plus de 9 lignes. Il suffit d&amp;#039;augmenter le nombre de &lt;em&gt;UNION&lt;/em&gt; pour pouvoir générer plus d&amp;#039;enregistrements.
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; id
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; multiplier
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;`rank`&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; multiplier
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; multiplier&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;`rank`&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table&lt;span class=&quot;sy0&quot;&gt;&amp;gt;.&lt;/span&gt;multiplier&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_tip plugin_wrap&quot;&gt;
&lt;p&gt;
Il est possible de se passer des &lt;em&gt;UNION&lt;/em&gt; en remplaçant la sous-requête par une table contenant les nombres de &lt;strong&gt;0&lt;/strong&gt; à &lt;strong&gt;n&lt;/strong&gt;.
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; id
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; multiplier
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; multiplier
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; multiplier&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;`rank`&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table&lt;span class=&quot;sy0&quot;&gt;&amp;gt;.&lt;/span&gt;multiplier&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Multiplier le nombre de lignes d&amp;#039;une table&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;multiplier_le_nombre_de_lignes_d_une_table&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;35-1040&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit9&quot; id=&quot;trier_des_numeros_de_version&quot;&gt;Trier des numéros de version&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Cette requête permet de trier des numéros de versions (&lt;em&gt;5&lt;/em&gt;, &lt;em&gt;4.1&lt;/em&gt;, &lt;em&gt;3.2.5&lt;/em&gt;, …) entre eux.
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; version
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; @version :&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;IF&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;LOCATE&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;.&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;version&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; CONCAT&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;version&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;.0.0&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; version&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;-- Ajoute les versions mineure et hotfix quand on a qu&#039;une version majeure&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; @version :&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;IF&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;@version &lt;span class=&quot;kw1&quot;&gt;REGEXP&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;^.+&lt;span class=&quot;es0&quot;&gt;\.&lt;/span&gt;.+&lt;span class=&quot;es0&quot;&gt;\.&lt;/span&gt;.+$&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; @version &lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; CONCAT&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;@version&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;.0&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;-- Ajoute la version hotfix quand on a qu&#039;une version mineure&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; CONCAT&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
 LPAD&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;SUBSTRING_INDEX&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;SUBSTRING_INDEX&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;@version&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;.&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;.&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;0&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;-- Extrait la version majeure et la préfixe avec des 0&lt;/span&gt;
 LPAD&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;SUBSTRING_INDEX&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;SUBSTRING_INDEX&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;@version&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;.&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;.&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;0&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;-- Extrait la version mineure et la préfixe avec des 0&lt;/span&gt;
 LPAD&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;SUBSTRING_INDEX&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;SUBSTRING_INDEX&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;@version&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;.&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;.&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;0&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;-- Extrait la version hotfix et la préfixe avec des 0&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; concat
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; docs
&lt;span class=&quot;kw1&quot;&gt;ORDER&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;BY&lt;/span&gt; concat &lt;span class=&quot;kw1&quot;&gt;DESC&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_important plugin_wrap&quot;&gt;
&lt;p&gt;
Limitations :
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Cette requête ne permet de gérer que des versions dont le format correspond au versionnage sémantique.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Seules les versions ne contenant que des chiffres sont supportées.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Les sections du numéro de version ne peuvent pas excéder 10 caractères.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Trier des num\u00e9ros de version&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;trier_des_numeros_de_version&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;1041-2292&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit14&quot; id=&quot;recuperation_des_trous_dans_une_sequence&quot;&gt;Récupération des &amp;quot;trous&amp;quot; dans une séquence&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;strong&gt;Récupération sous la forme de plages d&amp;#039;identifiants&lt;/strong&gt;
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_important plugin_wrap&quot;&gt;
&lt;p&gt;
Cette requête ne permet pas de récupérer le premier “trou” de séquence si celui-ci commence au premier identifiant.
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:17,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; range_start
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; range_end
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt;  @rownum1 :&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; @rownum1 &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; rownum_end
	&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; table1&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;id &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; range_end
	&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; table1
	&lt;span class=&quot;kw1&quot;&gt;JOIN&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; @rownum1 :&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; dummy
	&lt;span class=&quot;kw1&quot;&gt;LEFT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;JOIN&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; table2 &lt;span class=&quot;kw1&quot;&gt;ON&lt;/span&gt; table2&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;id &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; table1&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;id &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; table2&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;id &lt;span class=&quot;kw1&quot;&gt;IS&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NULL&lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; table1&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;id &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;MIN&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;id&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; e
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; @rownum2 :&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; @rownum2 &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; rownum_start
	&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; table1&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;id &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; range_start
	&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; table1
	&lt;span class=&quot;kw1&quot;&gt;JOIN&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; @rownum2 :&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; dummy
	&lt;span class=&quot;kw1&quot;&gt;LEFT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;JOIN&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; table2 &lt;span class=&quot;kw1&quot;&gt;ON&lt;/span&gt; table2&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;id &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; table1&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;id &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; table2&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;id &lt;span class=&quot;kw1&quot;&gt;IS&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NULL&lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; table1&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;id &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;MAX&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;id&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; s
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; rownum_end &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; rownum_start&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:18,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;p&gt;
&lt;strong&gt;Récupération de la liste complète des identifiants&lt;/strong&gt;
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:19,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; dummy&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;`row`&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; @&lt;span class=&quot;kw1&quot;&gt;ROW&lt;/span&gt; :&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; @&lt;span class=&quot;kw1&quot;&gt;ROW&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;`row`&lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; 
		&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; dummy1&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
		&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; dummy2&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
		&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; dummy3&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
		&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; dummy4&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
		&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; @&lt;span class=&quot;kw1&quot;&gt;ROW&lt;/span&gt; :&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; numbers
	&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; @&lt;span class=&quot;kw1&quot;&gt;ROW&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;MAX&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;id&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; dummy
&lt;span class=&quot;kw1&quot;&gt;LEFT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;JOIN&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; table1 &lt;span class=&quot;kw1&quot;&gt;ON&lt;/span&gt; table1&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;id &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; dummy&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;`row`&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; table1&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;id &lt;span class=&quot;kw1&quot;&gt;IS&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NULL&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:20,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;R\u00e9cup\u00e9ration des \&amp;quot;trous\&amp;quot; dans une s\u00e9quence&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;recuperation_des_trous_dans_une_sequence&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;2293-4338&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit21&quot; id=&quot;generer_une_liste_de_1000_dates&quot;&gt;Générer une liste de 1000 dates&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Cette méthode peut être étendue pour générer plus de dates ou au contraire restreinte pour en générer moins. Dans l&amp;#039;exemple suivant, la date de départ sera la plus petite date, mais il est possible qu&amp;#039;elle devienne la plus grande en changeant le signe de l&amp;#039;opération. Pour que les dates soient ordonnées, la requête &lt;em&gt;units&lt;/em&gt; doit impérativement être avant la requête &lt;em&gt;tens&lt;/em&gt; qui elle même doit impérativement être avant la requête &lt;em&gt;hundreds&lt;/em&gt;. 
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:22,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;2013-04-01&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;INTERVAL&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;hundreds&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;val &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; tens&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;val &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; units&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;val&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;DAY&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;DAY&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; val
    &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; units
&lt;span class=&quot;kw1&quot;&gt;CROSS&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;JOIN&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; val
    &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;30&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;40&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;70&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;80&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;90&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; tens
&lt;span class=&quot;kw1&quot;&gt;CROSS&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;JOIN&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; val 
    &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;200&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;300&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;400&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;600&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;700&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;800&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;900&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; hundreds&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:23,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;G\u00e9n\u00e9rer une liste de 1000 dates&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;generer_une_liste_de_1000_dates&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:21,&amp;quot;range&amp;quot;:&amp;quot;4339-5750&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit24&quot; id=&quot;generer_une_liste_de_nombre&quot;&gt;Générer une liste de nombre&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Cette requête permet de générer une liste de 10000 valeurs consécutives. Pour avoir plus de valeur, il faut ajouter une ligne identique aux lignes &lt;code&gt;dummy&lt;/code&gt; existantes.
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:25,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; @&lt;span class=&quot;kw1&quot;&gt;ROW&lt;/span&gt; :&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; @&lt;span class=&quot;kw1&quot;&gt;ROW&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;`row`&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; 
	&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; dummy1&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
	&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; dummy2&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
	&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; dummy3&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
	&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;UNION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; dummy4&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
	&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; @&lt;span class=&quot;kw1&quot;&gt;ROW&lt;/span&gt; :&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; numbers&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:26,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;G\u00e9n\u00e9rer une liste de nombre&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;generer_une_liste_de_nombre&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:24,&amp;quot;range&amp;quot;:&amp;quot;5751-6851&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit27&quot; id=&quot;quine&quot;&gt;Quine&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Une &lt;a href=&quot;http://en.wikipedia.org/wiki/Quine_%28computing%29&quot; class=&quot;urlextern&quot; title=&quot;http://en.wikipedia.org/wiki/Quine_%28computing%29&quot; rel=&quot;ugc nofollow&quot;&gt;quine&lt;/a&gt; est un programme sans entrée qui génère son propre code source.
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:28,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;REPLACE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;REPLACE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;SELECT REPLACE(REPLACE(&amp;quot;$&amp;quot;,CHAR(34),CHAR(39)),CHAR(36),&amp;quot;$&amp;quot;) AS Quine&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;CHAR&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;34&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;CHAR&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;39&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;CHAR&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;36&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;SELECT REPLACE(REPLACE(&amp;quot;$&amp;quot;,CHAR(34),CHAR(39)),CHAR(36),&amp;quot;$&amp;quot;) AS Quine&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; Quine&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:29,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;table sectionedit30&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt; Code &lt;abbr title=&quot;American Standard Code for Information Interchange&quot;&gt;ASCII&lt;/abbr&gt; &lt;/th&gt;&lt;th class=&quot;col1&quot;&gt; Caractère &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 34 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; “ &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 36 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; $ &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 39 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; &amp;#039; &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:30,&amp;quot;range&amp;quot;:&amp;quot;7249-7309&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Quine&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;quine&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:27,&amp;quot;range&amp;quot;:&amp;quot;6852-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 22 Nov 2024 02:54:10 +0000</pubDate>
        </item>
        <item>
            <title>requetes_donnees</title>
            <link>https://www.ainw.org/wiki/doku.php?id=informatique:databases:mysql:requetes_donnees&amp;rev=1732244045&amp;do=diff</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;requetes_de_manipulation_de_donnees&quot;&gt;Requêtes de manipulation de données&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Requ\u00eates de manipulation de donn\u00e9es&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;requetes_de_manipulation_de_donnees&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-52&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;utiliser_le_caractere_d_echappement_dans_une_requete&quot;&gt;Utiliser le caractère d&amp;#039;échappement dans une requête&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Lorqu&amp;#039;on utilise le caractère d&amp;#039;échappement (&lt;code&gt;\&lt;/code&gt;) dans une requête, il faut prendre quelques précautions. En effet, il faut le doubler pour pouvoir l&amp;#039;utiliser car le parseur en enlève un.
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;co1&quot;&gt;-- Ne fonctionne pas&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;column&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;1&lt;span class=&quot;es0&quot;&gt;\1&lt;/span&gt;&#039;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;INSERT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;INTO&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;column&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;VALUES&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;1&lt;span class=&quot;es0&quot;&gt;\1&lt;/span&gt;&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;-- Fonctionne&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;column&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;1&lt;span class=&quot;es0&quot;&gt;\\&lt;/span&gt;1&#039;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;INSERT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;INTO&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;column&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;VALUES&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;1&lt;span class=&quot;es0&quot;&gt;\\&lt;/span&gt;1&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;p&gt;
Lorsqu&amp;#039;on utilise la méthode de recherche &lt;code&gt;LIKE&lt;/code&gt;, il faut prendre des précautions supplémentaires. En effet, il faut le quadrupler car le parseur en enlève un et le motif également. On peut utiliser un caractère d&amp;#039;échappement différent et dans ce cas, il ne faut que le doubler.
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;co1&quot;&gt;-- Ne fonctionne pas&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;column&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;LIKE&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;%&lt;span class=&quot;es0&quot;&gt;\%&lt;/span&gt;&#039;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;column&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;LIKE&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;%&lt;span class=&quot;es0&quot;&gt;\\&lt;/span&gt;%&#039;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;column&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;LIKE&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;%&lt;span class=&quot;es0&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;es0&quot;&gt;\%&lt;/span&gt;&#039;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;-- Fonctionne&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;column&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;LIKE&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;%&lt;span class=&quot;es0&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;es0&quot;&gt;\\&lt;/span&gt;%&#039;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;column&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;LIKE&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;%&lt;span class=&quot;es0&quot;&gt;\\&lt;/span&gt;%&#039;&lt;/span&gt; ESCAPE &lt;span class=&quot;st0&quot;&gt;&#039;|&#039;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_info plugin_wrap&quot;&gt;
&lt;p&gt;
Extrait de la &lt;a href=&quot;https://dev.mysql.com/doc/refman/5.6/en/string-comparison-functions.html&quot; class=&quot;urlextern&quot; title=&quot;https://dev.mysql.com/doc/refman/5.6/en/string-comparison-functions.html&quot; rel=&quot;ugc nofollow&quot;&gt;documentation&lt;/a&gt; :
&lt;/p&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 Because MySQL uses C escape syntax in strings (for example, &lt;code&gt;\n&lt;/code&gt; to represent a newline character), you must double any &lt;code&gt;\&lt;/code&gt; that you use in LIKE strings. For example, to search for &lt;code&gt;\n&lt;/code&gt;, specify it as &lt;code&gt;\\n&lt;/code&gt;. To search for &lt;code&gt;\&lt;/code&gt;, specify it as &lt;code&gt;\\\\&lt;/code&gt;; this is because the backslashes are stripped once by the parser and again when the pattern match is made, leaving a single backslash to be matched against. &lt;/div&gt;&lt;/blockquote&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Utiliser le caract\u00e8re d&amp;#039;\u00e9chappement dans une requ\u00eate&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;utiliser_le_caractere_d_echappement_dans_une_requete&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;53-1748&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit9&quot; id=&quot;calculer_une_moyenne_geometrique&quot;&gt;Calculer une moyenne géométrique&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Il n&amp;#039;existe pas de fonction d&amp;#039;agrégation pour réaliser cela facilement. Cependant, en utilisant les mathématiques décrites dans &lt;a href=&quot;http://www.datagenetics.com/blog/april42014/index.html&quot; class=&quot;urlextern&quot; title=&quot;http://www.datagenetics.com/blog/april42014/index.html&quot; rel=&quot;ugc nofollow&quot;&gt;cet article&lt;/a&gt;, on peut la calculer nous même.
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;EXP&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;AVG&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;LN&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;column&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Calculer une moyenne g\u00e9om\u00e9trique&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;calculer_une_moyenne_geometrique&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;1749-2118&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit12&quot; id=&quot;afficher_le_numero_de_ligne&quot;&gt;Afficher le numéro de ligne&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Il n&amp;#039;existe pas de pseudo-colonne pour numéroter les lignes comme il en existe sur la base de données Oracle. On peut cependant recréer cette pseudo-colonne. Ça surcharge la requête, mais ça peut être utile si on veut utiliser le résultat tel quel.
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; @rownum :&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; @rownum &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; rownum
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;column&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; @rownum :&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;alias&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;p&gt;
Pour plus d&amp;#039;information, voir &lt;a href=&quot;http://jimmod.com/blog/2008/09/displaying-row-number-rownum-in-mysql/&quot; class=&quot;urlextern&quot; title=&quot;http://jimmod.com/blog/2008/09/displaying-row-number-rownum-in-mysql/&quot; rel=&quot;ugc nofollow&quot;&gt;ici&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Il est également possible d&amp;#039;introduire des sauts dans la numérotation pour, par exemple, numéroter les lignes par groupes :
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; a
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; b
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; @num :&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;IF&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;@a &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; a&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; @num &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; rownum
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; @a :&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; a
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; @a :&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; @num :&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;alias&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;p&gt;
Pour plus d&amp;#039;information, voir &lt;a href=&quot;http://www.xaprb.com/blog/2006/12/02/how-to-number-rows-in-mysql/&quot; class=&quot;urlextern&quot; title=&quot;http://www.xaprb.com/blog/2006/12/02/how-to-number-rows-in-mysql/&quot; rel=&quot;ugc nofollow&quot;&gt;ici&lt;/a&gt;
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:17,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_alert plugin_wrap&quot;&gt;
&lt;p&gt;
Lors de l&amp;#039;écriture de ce genre de requêtes dans Talend, il faut faire attention à choisir des noms de variables en minuscule.
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:18,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Afficher le num\u00e9ro de ligne&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;afficher_le_numero_de_ligne&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;2119-3215&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit19&quot; id=&quot;mise_a_jour_d_une_table_avec_des_donnees_variables&quot;&gt;Mise à jour d&amp;#039;une table avec des données variables&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Quand on veut mettre à jour une table avec des données provenant d&amp;#039;une requête, voici la structure de la requête à utiliser. On retrouve facilement cette syntaxe en cherchant sur le web ou en testant rapidement, mais c&amp;#039;est encore mieux de savoir où trouver l&amp;#039;information rapidement quand ce n&amp;#039;est pas quelque chose que l&amp;#039;on fait régulièrement.
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:20,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;UPDATE&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;SET&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;.&amp;lt;&lt;/span&gt;column&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;.&amp;lt;&lt;/span&gt;column&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;.&lt;/span&gt;id &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;.&lt;/span&gt;id
&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;EXISTS&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;.&lt;/span&gt;id &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;.&lt;/span&gt;id
&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:21,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;p&gt;
Après avoir utilisé cette syntaxe depuis pas mal de temps, je viens de me rendre compte qu&amp;#039;il existe une syntaxe beaucoup plus facile et surtout qui autorise la mise à jour de plus d&amp;#039;un champ à la fois. La cerise sur le gâteau est qu&amp;#039;elle autorise l&amp;#039;utilisation d&amp;#039;alias de tables.
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:22,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;UPDATE&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;,&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;SET&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;.&amp;lt;&lt;/span&gt;column&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;.&amp;lt;&lt;/span&gt;column&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;.&amp;lt;&lt;/span&gt;column&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;.&amp;lt;&lt;/span&gt;column&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;.&lt;/span&gt;id &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;.&lt;/span&gt;id&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:23,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Mise \u00e0 jour d&amp;#039;une table avec des donn\u00e9es variables&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;mise_a_jour_d_une_table_avec_des_donnees_variables&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:19,&amp;quot;range&amp;quot;:&amp;quot;3216-4383&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit24&quot; id=&quot;creer_une_table_a_partir_d_une_autre_table&quot;&gt;Créer une table à partir d&amp;#039;une autre table&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Méthode 1 :&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:25,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;co1&quot;&gt;-- Copie de la structure et des données&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;TABLE&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;new_table&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;old_table&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;-- Copie de la structure uniquement&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;TABLE&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;new_table&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;old_table&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;LIMIT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:26,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Méthode 2 :&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:27,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;co1&quot;&gt;-- Copie de la structure uniquement&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;TABLE&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;new_table&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;LIKE&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;old_table&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:28,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;p&gt;
Lors de l&amp;#039;utilisation de la méthode 1, on perd l&amp;#039;ensemble des index de la table ainsi que certaines propriétés (auto_increment, comment). La méthode 2 n&amp;#039;a pas ce problème.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Cr\u00e9er une table \u00e0 partir d&amp;#039;une autre table&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;creer_une_table_a_partir_d_une_autre_table&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:24,&amp;quot;range&amp;quot;:&amp;quot;4384-5010&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit29&quot; id=&quot;changer_la_base_d_un_nombre&quot;&gt;Changer la base d&amp;#039;un nombre&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:30,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;/* De binaire en octal */&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; CONV&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;101101&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;-- Retourne 55&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/* De binaire en décimal */&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; CONV&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;101101&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;-- Retourne 45&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/* De binaire en héxadécimal */&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; CONV&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;101101&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;-- Retourne 2D&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:31,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;p&gt;
La fonction &lt;em&gt;CONV&lt;/em&gt; supporte les bases comprises entre 2 et 36.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Changer la base d&amp;#039;un nombre&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;changer_la_base_d_un_nombre&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:9,&amp;quot;secid&amp;quot;:29,&amp;quot;range&amp;quot;:&amp;quot;5011-5389&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit32&quot; id=&quot;generer_les_requetes_pour_deplacer_les_tables_d_une_base_a_une_autre&quot;&gt;Générer les requêtes pour déplacer les tables d&amp;#039;une base à une autre&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Pour déplacer des tables d&amp;#039;une base à une autre, on peut passer par un export des données de la base source puis par un import des données dans la base cible. Mais ces actions sont très longues. Si les bases source et cible peuvent communiquer entre-elles (par exemple, elles sont sur le même serveur), il est possible de renommer les tables en ne changeant que le nom de la base de données.
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:33,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;RENAME&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;TABLE&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;`&amp;lt;source&amp;gt;`&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;`&amp;lt;table&amp;gt;`&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;TO&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;`&amp;lt;destination&amp;gt;`&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;`&amp;lt;table&amp;gt;`&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:34,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:35,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_info plugin_wrap&quot;&gt;
&lt;p&gt;
Si la table de la base d&amp;#039;origine existe déjà dans la base cible, celle-ci n&amp;#039;est pas déplacée.
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:36,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;p&gt;
Si le nombre de tables à déplacer est élevé, il est intéressant de générer la liste les requêtes dynamiquement. Par exemple, pour déplacer toutes les tables d&amp;#039;une base vers une autre :
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:37,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;co1&quot;&gt;-- Initialisation des variables&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;SET&lt;/span&gt; @orig:&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;&amp;lt;source&amp;gt;&#039;&lt;/span&gt;;
&lt;span class=&quot;kw1&quot;&gt;SET&lt;/span&gt; @dest:&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;&amp;lt;destination&amp;gt;&#039;&lt;/span&gt;;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;-- Génération des requêtes&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; CONCAT&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;RENAME TABLE &#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;REPLACE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;NAME&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; CONCAT&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;@orig&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;/&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;CONCAT&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;`&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; @orig&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;`.`&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;` TO &#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;REPLACE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;NAME&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; CONCAT&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;@orig&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;/&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; CONCAT&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;`&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; @dest&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;`.`&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;`;&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; information_schema&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;INNODB_SYS_TABLES
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; NAME &lt;span class=&quot;kw1&quot;&gt;LIKE&lt;/span&gt; CONCAT&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;@orig&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;/%&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:38,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:39,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_important plugin_wrap&quot;&gt;
&lt;p&gt;
Cette méthode de déplacement de table ne fonctionne qu&amp;#039;en innoDB.
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:40,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;G\u00e9n\u00e9rer les requ\u00eates pour d\u00e9placer les tables d&amp;#039;une base \u00e0 une autre&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;generer_les_requetes_pour_deplacer_les_tables_d_une_base_a_une_autre&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:10,&amp;quot;secid&amp;quot;:32,&amp;quot;range&amp;quot;:&amp;quot;5390-6794&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit41&quot; id=&quot;filtre_multiple&quot;&gt;Filtre multiple&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:42,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table1&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table1&lt;span class=&quot;sy0&quot;&gt;&amp;gt;.&amp;lt;&lt;/span&gt;column1&lt;span class=&quot;sy0&quot;&gt;&amp;gt;,&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table1&lt;span class=&quot;sy0&quot;&gt;&amp;gt;.&amp;lt;&lt;/span&gt;column2&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;IN&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table2&lt;span class=&quot;sy0&quot;&gt;&amp;gt;.&amp;lt;&lt;/span&gt;column1&lt;span class=&quot;sy0&quot;&gt;&amp;gt;,&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table2&lt;span class=&quot;sy0&quot;&gt;&amp;gt;.&amp;lt;&lt;/span&gt;column2&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table2&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:43,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Filtre multiple&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;filtre_multiple&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:12,&amp;quot;secid&amp;quot;:41,&amp;quot;range&amp;quot;:&amp;quot;6795-7006&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit44&quot; id=&quot;filtrer_des_donnees_accentuees&quot;&gt;Filtrer des données accentuées&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:45,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;co1&quot;&gt;-- Retourne l&#039;ensemble des valeurs contenant &amp;quot;e&amp;quot;, &amp;quot;é&amp;quot;, &amp;quot;è&amp;quot;, &amp;quot;E&amp;quot;, &amp;quot;É&amp;quot;, &amp;quot;È&amp;quot;, …&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;column&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;LIKE&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;%e%&#039;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;-- Retourne uniquement les valeurs contenant &amp;quot;e&amp;quot; et &amp;quot;E&amp;quot;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;LOWER&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;field&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;LIKE&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;%e%&#039;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;COLLATE&lt;/span&gt; utf8_bin
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;-- Retourne uniquement les valeurs contenant &amp;quot;e&amp;quot;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;table&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;field&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;LIKE&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;%e%&#039;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;COLLATE&lt;/span&gt; utf8_bin&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:46,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Filtrer des donn\u00e9es accentu\u00e9es&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;filtrer_des_donnees_accentuees&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:13,&amp;quot;secid&amp;quot;:44,&amp;quot;range&amp;quot;:&amp;quot;7007-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 22 Nov 2024 02:54:05 +0000</pubDate>
        </item>
        <item>
            <title>stockage_utilisation_hierarchie</title>
            <link>https://www.ainw.org/wiki/doku.php?id=informatique:databases:mysql:stockage_utilisation_hierarchie&amp;rev=1732243056&amp;do=diff</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;stockage_et_utilisation_d_une_hierarchie_de_donnees&quot;&gt;Stockage et utilisation d&amp;#039;une hiérarchie de données&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_info plugin_wrap&quot;&gt;
&lt;p&gt;
Cette page contient une traduction partielle d&amp;#039;un article proposé sur &lt;em&gt;mysql.com&lt;/em&gt;.
Malheureusement, celui-ci a été supprimé mais on peut encore en trouver une copie sur &lt;em&gt;&lt;a href=&quot;https://web.archive.org/web/20101206231732/http://dev.mysql.com/tech-resources/articles/hierarchical-data.html&quot; class=&quot;urlextern&quot; title=&quot;https://web.archive.org/web/20101206231732/http://dev.mysql.com/tech-resources/articles/hierarchical-data.html&quot; rel=&quot;ugc nofollow&quot;&gt;archive.org&lt;/a&gt;&lt;/em&gt;.
Cette traduction a été faite en utilisant &lt;a href=&quot;https://www.deepl.com/translator&quot; class=&quot;urlextern&quot; title=&quot;https://www.deepl.com/translator&quot; rel=&quot;ugc nofollow&quot;&gt;DeepL&lt;/a&gt;, par conséquent, il se peux que certaines traductions soient approximatives.
J&amp;#039;ai essayé de reprendre la plus part du texte généré mais il se peut que j&amp;#039;ai oublié certains passages.
Certaines parties ont été complètement supprimées car elle étaient soit obsolètes soit inutiles.
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Stockage et utilisation d&amp;#039;une hi\u00e9rarchie de donn\u00e9es&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;stockage_et_utilisation_d_une_hierarchie_de_donnees&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-775&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
La plupart des utilisateurs ont, à un moment ou à un autre, traité des données hiérarchiques dans une base de données SQL et ont sans doute appris que la gestion de données hiérarchiques n&amp;#039;est pas ce à quoi une base de données relationnelle est destinée. Les tableaux d&amp;#039;une base de données relationnelle ne sont pas hiérarchiques (comme XML), mais sont simplement une liste plate. Les données hiérarchiques ont une relation parent-enfant qui n&amp;#039;est pas naturellement représentée dans une table de base de données relationnelle.
&lt;/p&gt;

&lt;p&gt;
Pour nos besoins, les données hiérarchiques sont une collection de données où chaque élément a un seul parent et zéro ou plusieurs enfants (à l&amp;#039;exception de l&amp;#039;élément racine, qui n&amp;#039;a pas de parent). Les données hiérarchiques peuvent être trouvées dans une variété d&amp;#039;applications de base de données, y compris les fils de discussion des forums et des listes de diffusion, les organigrammes d&amp;#039;entreprises, les catégories de gestion de contenu et les catégories de produits. Pour nos besoins, nous utiliserons la hiérarchie de catégories de produits suivante, provenant d&amp;#039;un magasin d&amp;#039;électronique fictif :
&lt;/p&gt;

&lt;p&gt;
&lt;img class=&#039;mediacenter&#039; id=&#039;informatique:mysql:hierarchical-data-tree-1.png&#039; 
                        style=&#039;max-width:100%;cursor:pointer;&#039; onclick=&#039;edit(this);&#039;
						src=&#039;/wiki/lib/exe/fetch.php?media=informatique:mysql:hierarchical-data-tree-1.png&#039; 
                        alt=&#039;informatique:mysql:hierarchical-data-tree-1.png&#039; /&gt;
&lt;/p&gt;

&lt;p&gt;
Ces catégories forment une hiérarchie à peu près comme les autres exemples cités ci-dessus.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Introduction&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;introduction&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;776-2126&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;modele_de_liste_adjacente&quot;&gt;Modèle de liste adjacente&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Généralement, les catégories d&amp;#039;exemple présentées ci-dessus seront stockées dans un tableau comme le suivant :
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;dl class=&quot;file&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://www.ainw.org/wiki/doku.php?do=export_code&amp;amp;id=informatique:databases:mysql:stockage_utilisation_hierarchie&amp;amp;codeblock=0&quot; title=&quot;Télécharger cet extrait&quot; class=&quot;mediafile mf_sql&quot;&gt;adjacency.list.tree.sql&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code file sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;TABLE&lt;/span&gt; category&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
    category_id &lt;span class=&quot;kw1&quot;&gt;INT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AUTO_INCREMENT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;PRIMARY&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;KEY&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    name &lt;span class=&quot;kw1&quot;&gt;VARCHAR&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NOT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    parent &lt;span class=&quot;kw1&quot;&gt;INT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;DEFAULT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NULL&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;INSERT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;INTO&lt;/span&gt; category &lt;span class=&quot;kw1&quot;&gt;VALUES&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;ELECTRONICS&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;TELEVISIONS&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;TUBE&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;LCD&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;PLASMA&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;PORTABLE ELECTRONICS&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;MP3 PLAYERS&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;FLASH&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;CD PLAYERS&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;2 WAY RADIOS&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; category
&lt;span class=&quot;kw1&quot;&gt;ORDER&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;BY&lt;/span&gt; category_id;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;table sectionedit8&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt; category_id &lt;/th&gt;&lt;th class=&quot;col1 leftalign&quot;&gt; name                 &lt;/th&gt;&lt;th class=&quot;col2&quot;&gt; parent &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0 rightalign&quot;&gt;           1 &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; ELECTRONICS          &lt;/td&gt;&lt;td class=&quot;col2 rightalign&quot;&gt;   NULL &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0 rightalign&quot;&gt;           2 &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; TELEVISIONS          &lt;/td&gt;&lt;td class=&quot;col2 rightalign&quot;&gt;      1 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0 rightalign&quot;&gt;           3 &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; TUBE                 &lt;/td&gt;&lt;td class=&quot;col2 rightalign&quot;&gt;      2 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0 rightalign&quot;&gt;           4 &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; LCD                  &lt;/td&gt;&lt;td class=&quot;col2 rightalign&quot;&gt;      2 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0 rightalign&quot;&gt;           5 &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; PLASMA               &lt;/td&gt;&lt;td class=&quot;col2 rightalign&quot;&gt;      2 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0 rightalign&quot;&gt;           6 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; PORTABLE ELECTRONICS &lt;/td&gt;&lt;td class=&quot;col2 rightalign&quot;&gt;      1 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;td class=&quot;col0 rightalign&quot;&gt;           7 &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; MP3 PLAYERS          &lt;/td&gt;&lt;td class=&quot;col2 rightalign&quot;&gt;      6 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row8&quot;&gt;
		&lt;td class=&quot;col0 rightalign&quot;&gt;           8 &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; FLASH                &lt;/td&gt;&lt;td class=&quot;col2 rightalign&quot;&gt;      7 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row9&quot;&gt;
		&lt;td class=&quot;col0 rightalign&quot;&gt;           9 &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; CD PLAYERS           &lt;/td&gt;&lt;td class=&quot;col2 rightalign&quot;&gt;      6 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row10&quot;&gt;
		&lt;td class=&quot;col0 rightalign&quot;&gt;          10 &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; 2 WAY RADIOS         &lt;/td&gt;&lt;td class=&quot;col2 rightalign&quot;&gt;      6 &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;2816-3343&amp;quot;} --&gt;
&lt;p&gt;
Dans le modèle de liste adjacente, chaque élément du tableau contient un pointeur vers son parent. L&amp;#039;élément le plus haut, dans ce cas l&amp;#039;électronique, a une valeur nulle pour son parent.
Le modèle de liste adjacente a l&amp;#039;avantage d&amp;#039;être assez simple, il est facile de voir que FLASH est un enfant des lecteurs mp3, qui est un enfant de l&amp;#039;électronique portable, qui est un enfant de l&amp;#039;électronique.
Alors que le modèle de liste adjacente peut être traité assez facilement dans le code côté client, travailler avec ce modèle peut être plus problématique en SQL pur.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Mod\u00e8le de liste adjacente&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;modele_de_liste_adjacente&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;2127-3926&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit9&quot; id=&quot;recuperation_d_un_arbre_complet&quot;&gt;Récupération d&amp;#039;un arbre complet&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
La première tâche courante lorsqu&amp;#039;on traite des données hiérarchiques est l&amp;#039;affichage de l&amp;#039;arbre entier, généralement avec une certaine forme d&amp;#039;indentation.
La façon la plus courante de le faire en SQL pur est d&amp;#039;utiliser une auto-jointure :
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; t1&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; lev1
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; t2&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; lev2
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; t3&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; lev3
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; t4&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; lev4
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; category &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; t1
&lt;span class=&quot;kw1&quot;&gt;LEFT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;JOIN&lt;/span&gt; category &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; t2 &lt;span class=&quot;kw1&quot;&gt;ON&lt;/span&gt; t2&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;parent &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; t1&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;category_id
&lt;span class=&quot;kw1&quot;&gt;LEFT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;JOIN&lt;/span&gt; category &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; t3 &lt;span class=&quot;kw1&quot;&gt;ON&lt;/span&gt; t3&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;parent &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; t2&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;category_id
&lt;span class=&quot;kw1&quot;&gt;LEFT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;JOIN&lt;/span&gt; category &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; t4 &lt;span class=&quot;kw1&quot;&gt;ON&lt;/span&gt; t4&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;parent &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; t3&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;category_id
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; t1&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;ELECTRONICS&#039;&lt;/span&gt;;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;table sectionedit12&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; lev1        &lt;/th&gt;&lt;th class=&quot;col1 leftalign&quot;&gt; lev2                 &lt;/th&gt;&lt;th class=&quot;col2 leftalign&quot;&gt; lev3         &lt;/th&gt;&lt;th class=&quot;col3 leftalign&quot;&gt; lev4  &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; ELECTRONICS &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; TELEVISIONS          &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; TUBE         &lt;/td&gt;&lt;td class=&quot;col3 leftalign&quot;&gt; NULL  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; ELECTRONICS &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; TELEVISIONS          &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; LCD          &lt;/td&gt;&lt;td class=&quot;col3 leftalign&quot;&gt; NULL  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; ELECTRONICS &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; TELEVISIONS          &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; PLASMA       &lt;/td&gt;&lt;td class=&quot;col3 leftalign&quot;&gt; NULL  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; ELECTRONICS &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; PORTABLE ELECTRONICS &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; MP3 PLAYERS  &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; FLASH &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; ELECTRONICS &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; PORTABLE ELECTRONICS &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; CD PLAYERS   &lt;/td&gt;&lt;td class=&quot;col3 leftalign&quot;&gt; NULL  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; ELECTRONICS &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; PORTABLE ELECTRONICS &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 2 WAY RADIOS &lt;/td&gt;&lt;td class=&quot;col3 leftalign&quot;&gt; NULL  &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table1&amp;quot;,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;4555-4988&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;R\u00e9cup\u00e9ration d&amp;#039;un arbre complet&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;recuperation_d_un_arbre_complet&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;3927-4989&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit13&quot; id=&quot;trouver_tous_les_nœuds_feuille&quot;&gt;Trouver tous les nœuds feuille&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Nous pouvons trouver tous les nœuds feuilles de notre arbre (ceux qui n&amp;#039;ont pas d&amp;#039;enfants) en utilisant une requête avec une jointure gauche :
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; t1&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; category &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; t1
&lt;span class=&quot;kw1&quot;&gt;LEFT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;JOIN&lt;/span&gt; category &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; t2 &lt;span class=&quot;kw1&quot;&gt;ON&lt;/span&gt; t1&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;category_id &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; t2&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;parent
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; t2&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;category_id &lt;span class=&quot;kw1&quot;&gt;IS&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NULL&lt;/span&gt;;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;table sectionedit16&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; name         &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; TUBE         &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; LCD          &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; PLASMA       &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; FLASH        &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; CD PLAYERS   &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 2 WAY RADIOS &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table2&amp;quot;,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;5340-5458&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Trouver tous les n\u0153uds feuille&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;trouver_tous_les_n\u0153uds_feuille&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;4990-5459&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit17&quot; id=&quot;retrouver_un_chemin_unique&quot;&gt;Retrouver un chemin unique&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
L&amp;#039;auto-jointure nous permet également de voir le chemin complet à travers nos hiérarchies :
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:18,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; t1&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; lev1
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; t2&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; lev2
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; t3&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; lev3
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; t4&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; lev4
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; category &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; t1
&lt;span class=&quot;kw1&quot;&gt;LEFT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;JOIN&lt;/span&gt; category &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; t2 &lt;span class=&quot;kw1&quot;&gt;ON&lt;/span&gt; t2&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;parent &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; t1&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;category_id
&lt;span class=&quot;kw1&quot;&gt;LEFT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;JOIN&lt;/span&gt; category &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; t3 &lt;span class=&quot;kw1&quot;&gt;ON&lt;/span&gt; t3&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;parent &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; t2&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;category_id
&lt;span class=&quot;kw1&quot;&gt;LEFT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;JOIN&lt;/span&gt; category &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; t4 &lt;span class=&quot;kw1&quot;&gt;ON&lt;/span&gt; t4&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;parent &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; t3&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;category_id
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; t1&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;ELECTRONICS&#039;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; t4&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;FLASH&#039;&lt;/span&gt;;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:19,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;table sectionedit20&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; lev1        &lt;/th&gt;&lt;th class=&quot;col1 leftalign&quot;&gt; lev2                 &lt;/th&gt;&lt;th class=&quot;col2 leftalign&quot;&gt; lev3        &lt;/th&gt;&lt;th class=&quot;col3 leftalign&quot;&gt; lev4  &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; ELECTRONICS &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; PORTABLE ELECTRONICS &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; MP3 PLAYERS &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; FLASH &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table3&amp;quot;,&amp;quot;secid&amp;quot;:20,&amp;quot;range&amp;quot;:&amp;quot;5950-6071&amp;quot;} --&gt;
&lt;p&gt;
La principale limite d&amp;#039;une telle approche est qu&amp;#039;il faut une auto-jointure pour chaque niveau de la hiérarchie et les performances se dégraderont naturellement avec chaque niveau ajouté à mesure que la jointure deviendra plus complexe.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Retrouver un chemin unique&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;retrouver_un_chemin_unique&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:17,&amp;quot;range&amp;quot;:&amp;quot;5460-6313&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit21&quot; id=&quot;limites_du_modele_de_liste_adjacente&quot;&gt;Limites du modèle de liste adjacente&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Travailler avec le modèle de liste adjacente en SQL pur peut être difficile.
Avant de pouvoir voir le chemin complet d&amp;#039;une catégorie, nous devons connaître le niveau auquel elle se trouve.
En outre, il faut être particulièrement attentif lors de la suppression de nœuds en raison du risque de création d&amp;#039;orphelin d&amp;#039;un sous-arbre entier au cours du processus (supprimer la catégorie de l&amp;#039;électronique portable rend tous ses enfants orphelins).
Certaines de ces limitations peuvent être résolues par l&amp;#039;utilisation de codes côté client ou de procédures stockées.
Avec un langage procédural, nous pouvons commencer au bas de l&amp;#039;arbre et itérer vers le haut pour revenir à l&amp;#039;arbre complet ou à un seul chemin.
Nous pouvons également utiliser la programmation procédurale pour supprimer des nœuds sans rendre orphelins des sous-arbres entiers en favorisant un élément enfant et en réordonnant les enfants restants pour qu&amp;#039;ils pointent vers le nouveau parent.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Limites du mod\u00e8le de liste adjacente&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;limites_du_modele_de_liste_adjacente&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:21,&amp;quot;range&amp;quot;:&amp;quot;6314-7339&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit22&quot; id=&quot;modele_d_ensembles_imbriques&quot;&gt;Modèle d&amp;#039;ensembles imbriqués&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Dans le modèle d&amp;#039;ensembles imbriqués, nous pouvons considérer notre hiérarchie d&amp;#039;une nouvelle manière, non pas comme des nœuds et des lignes, mais comme des conteneurs imbriqués.
Essayez d&amp;#039;imaginer nos catégories électroniques de cette manière :
&lt;/p&gt;

&lt;p&gt;
&lt;img class=&#039;mediacenter&#039; id=&#039;informatique:mysql:hierarchical-data-nested-set-1.png&#039; 
                        style=&#039;max-width:100%;cursor:pointer;&#039; onclick=&#039;edit(this);&#039;
						src=&#039;/wiki/lib/exe/fetch.php?media=informatique:mysql:hierarchical-data-nested-set-1.png&#039; 
                        alt=&#039;informatique:mysql:hierarchical-data-nested-set-1.png&#039; /&gt;
&lt;/p&gt;

&lt;p&gt;
Remarquez comment notre hiérarchie est toujours maintenue, puisque les catégories de parents enveloppent leurs enfants.
Nous représentons cette forme de hiérarchie dans un tableau en utilisant des valeurs de gauche et de droite pour représenter l&amp;#039;emboîtement de nos nœuds :
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:23,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;dl class=&quot;file&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://www.ainw.org/wiki/doku.php?do=export_code&amp;amp;id=informatique:databases:mysql:stockage_utilisation_hierarchie&amp;amp;codeblock=4&quot; title=&quot;Télécharger cet extrait&quot; class=&quot;mediafile mf_sql&quot;&gt;nested.set.tree.sql&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code file sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;TABLE&lt;/span&gt; nested_category &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
    category_id &lt;span class=&quot;kw1&quot;&gt;INT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AUTO_INCREMENT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;PRIMARY&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;KEY&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    name &lt;span class=&quot;kw1&quot;&gt;VARCHAR&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NOT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    lft &lt;span class=&quot;kw1&quot;&gt;INT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NOT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    rgt &lt;span class=&quot;kw1&quot;&gt;INT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NOT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NULL&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;INSERT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;INTO&lt;/span&gt; nested_category &lt;span class=&quot;kw1&quot;&gt;VALUES&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;ELECTRONICS&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;TELEVISIONS&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;TUBE&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;LCD&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;PLASMA&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;PORTABLE ELECTRONICS&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;MP3 PLAYERS&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;FLASH&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;CD PLAYERS&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;2 WAY RADIOS&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; nested_category
&lt;span class=&quot;kw1&quot;&gt;ORDER&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;BY&lt;/span&gt; category_id;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:24,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;table sectionedit25&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt; category_id &lt;/th&gt;&lt;th class=&quot;col1 leftalign&quot;&gt; name                 &lt;/th&gt;&lt;th class=&quot;col2&quot;&gt; lft &lt;/th&gt;&lt;th class=&quot;col3&quot;&gt; rgt &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0 rightalign&quot;&gt;           1 &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; ELECTRONICS          &lt;/td&gt;&lt;td class=&quot;col2 rightalign&quot;&gt;   1 &lt;/td&gt;&lt;td class=&quot;col3 rightalign&quot;&gt;  20 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0 rightalign&quot;&gt;           2 &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; TELEVISIONS          &lt;/td&gt;&lt;td class=&quot;col2 rightalign&quot;&gt;   2 &lt;/td&gt;&lt;td class=&quot;col3 rightalign&quot;&gt;   9 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0 rightalign&quot;&gt;           3 &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; TUBE                 &lt;/td&gt;&lt;td class=&quot;col2 rightalign&quot;&gt;   3 &lt;/td&gt;&lt;td class=&quot;col3 rightalign&quot;&gt;   4 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0 rightalign&quot;&gt;           4 &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; LCD                  &lt;/td&gt;&lt;td class=&quot;col2 rightalign&quot;&gt;   5 &lt;/td&gt;&lt;td class=&quot;col3 rightalign&quot;&gt;   6 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0 rightalign&quot;&gt;           5 &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; PLASMA               &lt;/td&gt;&lt;td class=&quot;col2 rightalign&quot;&gt;   7 &lt;/td&gt;&lt;td class=&quot;col3 rightalign&quot;&gt;   8 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0 rightalign&quot;&gt;           6 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; PORTABLE ELECTRONICS &lt;/td&gt;&lt;td class=&quot;col2 rightalign&quot;&gt;  10 &lt;/td&gt;&lt;td class=&quot;col3 rightalign&quot;&gt;  19 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;td class=&quot;col0 rightalign&quot;&gt;           7 &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; MP3 PLAYERS          &lt;/td&gt;&lt;td class=&quot;col2 rightalign&quot;&gt;  11 &lt;/td&gt;&lt;td class=&quot;col3 rightalign&quot;&gt;  14 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row8&quot;&gt;
		&lt;td class=&quot;col0 rightalign&quot;&gt;           8 &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; FLASH                &lt;/td&gt;&lt;td class=&quot;col2 rightalign&quot;&gt;  12 &lt;/td&gt;&lt;td class=&quot;col3 rightalign&quot;&gt;  13 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row9&quot;&gt;
		&lt;td class=&quot;col0 rightalign&quot;&gt;           9 &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; CD PLAYERS           &lt;/td&gt;&lt;td class=&quot;col2 rightalign&quot;&gt;  15 &lt;/td&gt;&lt;td class=&quot;col3 rightalign&quot;&gt;  16 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row10&quot;&gt;
		&lt;td class=&quot;col0 rightalign&quot;&gt;          10 &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; 2 WAY RADIOS         &lt;/td&gt;&lt;td class=&quot;col2 rightalign&quot;&gt;  17 &lt;/td&gt;&lt;td class=&quot;col3 rightalign&quot;&gt;  18 &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table4&amp;quot;,&amp;quot;secid&amp;quot;:25,&amp;quot;range&amp;quot;:&amp;quot;8588-9148&amp;quot;} --&gt;
&lt;p&gt;
Nous utilisons &lt;em&gt;lft&lt;/em&gt; et &lt;em&gt;rgt&lt;/em&gt; parce que &lt;em&gt;left&lt;/em&gt; et &lt;em&gt;right&lt;/em&gt; sont des mots réservés à MySQL, voir la &lt;a href=&quot;https://dev.mysql.com/doc/refman/5.7/en/keywords.html&quot; class=&quot;urlextern&quot; title=&quot;https://dev.mysql.com/doc/refman/5.7/en/keywords.html&quot; rel=&quot;ugc nofollow&quot;&gt;liste complète des mots réservés&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
Alors comment déterminer les valeurs de gauche et de droite ?
Nous commençons à numéroter du côté le plus à gauche du nœud extérieur et nous continuons vers la droite :
&lt;/p&gt;

&lt;p&gt;
&lt;img class=&#039;mediacenter&#039; id=&#039;informatique:mysql:hierarchical-data-nested-set-2.png&#039; 
                        style=&#039;max-width:100%;cursor:pointer;&#039; onclick=&#039;edit(this);&#039;
						src=&#039;/wiki/lib/exe/fetch.php?media=informatique:mysql:hierarchical-data-nested-set-2.png&#039; 
                        alt=&#039;informatique:mysql:hierarchical-data-nested-set-2.png&#039; /&gt;
&lt;/p&gt;

&lt;p&gt;
Cette conception peut également être appliquée à un arbre classique :
&lt;/p&gt;

&lt;p&gt;
&lt;img class=&#039;mediacenter&#039; id=&#039;informatique:mysql:hierarchical-data-tree-2.png&#039; 
                        style=&#039;max-width:100%;cursor:pointer;&#039; onclick=&#039;edit(this);&#039;
						src=&#039;/wiki/lib/exe/fetch.php?media=informatique:mysql:hierarchical-data-tree-2.png&#039; 
                        alt=&#039;informatique:mysql:hierarchical-data-tree-2.png&#039; /&gt;
&lt;/p&gt;

&lt;p&gt;
Lorsque l&amp;#039;on travaille avec un arbre, on travaille de gauche à droite, une couche à la fois, en descendant vers les enfants de chaque nœud avant d&amp;#039;attribuer un numéro à droite et de se déplacer vers la droite. Cette approche est appelée l&amp;#039;algorithme de traversée d&amp;#039;arbre pré-ordonné modifié.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Mod\u00e8le d&amp;#039;ensembles imbriqu\u00e9s&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;modele_d_ensembles_imbriques&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:22,&amp;quot;range&amp;quot;:&amp;quot;7340-10030&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit26&quot; id=&quot;recuperation_d_un_arbre_complet1&quot;&gt;Récupération d&amp;#039;un arbre complet&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Nous pouvons récupérer l&amp;#039;arbre complet grâce à l&amp;#039;utilisation d&amp;#039;un auto-jointure qui relie les parents aux nœuds sur la base que la valeur &lt;em&gt;lft&lt;/em&gt; d&amp;#039;un nœud apparaîtra toujours entre les valeurs &lt;em&gt;lft&lt;/em&gt; et &lt;em&gt;rgt&lt;/em&gt; de son parent :
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:27,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; nested_category &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
nested_category &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; parent
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft &lt;span class=&quot;kw1&quot;&gt;BETWEEN&lt;/span&gt; parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft &lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;rgt
&lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;ELECTRONICS&#039;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;ORDER&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;BY&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:28,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;table sectionedit29&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; name                 &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ELECTRONICS          &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; TELEVISIONS          &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; TUBE                 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; LCD                  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; PLASMA               &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; PORTABLE ELECTRONICS &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; MP3 PLAYERS          &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row8&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; FLASH                &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row9&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; CD PLAYERS           &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row10&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; 2 WAY RADIOS         &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table5&amp;quot;,&amp;quot;secid&amp;quot;:29,&amp;quot;range&amp;quot;:&amp;quot;10528-10802&amp;quot;} --&gt;
&lt;p&gt;
Contrairement à nos précédents exemples avec le modèle de liste adjacente, cette requête fonctionnera quelle que soit la profondeur de l&amp;#039;arbre.
Nous ne nous préoccupons pas de la valeur &lt;em&gt;rgt&lt;/em&gt; du nœud dans notre clause &lt;em class=&quot;u&quot;&gt;BETWEEN&lt;/em&gt;, car la valeur &lt;em&gt;rgt&lt;/em&gt; sera toujours comprise dans le même parent que les valeurs &lt;em&gt;lft&lt;/em&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;R\u00e9cup\u00e9ration d&amp;#039;un arbre complet&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;recuperation_d_un_arbre_complet1&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:26,&amp;quot;range&amp;quot;:&amp;quot;10031-11134&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit30&quot; id=&quot;trouver_tous_les_nœuds_feuille1&quot;&gt;Trouver tous les nœuds feuille&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Trouver tous les nœuds de feuilles dans le modèle d&amp;#039;ensemble imbriqué est encore plus simple que la méthode utilisée dans le modèle de liste adjacente.
Si vous regardez le tableau, vous pouvez remarquer que les valeurs &lt;em&gt;lft&lt;/em&gt; et &lt;em&gt;rgt&lt;/em&gt; pour les nœuds de feuilles sont des nombres consécutifs.
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:31,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; name
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; nested_category
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; rgt &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; lft &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:32,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;table sectionedit33&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; name         &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; TUBE         &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; LCD          &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; PLASMA       &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; FLASH        &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; CD PLAYERS   &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 2 WAY RADIOS &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table6&amp;quot;,&amp;quot;secid&amp;quot;:33,&amp;quot;range&amp;quot;:&amp;quot;11578-11696&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Trouver tous les n\u0153uds feuille&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;trouver_tous_les_n\u0153uds_feuille1&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:30,&amp;quot;range&amp;quot;:&amp;quot;11135-11697&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit34&quot; id=&quot;retrouver_un_chemin_unique1&quot;&gt;Retrouver un chemin unique&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Avec le modèle d&amp;#039;ensemble imbriqué, nous pouvons retrouver un seul chemin sans avoir de multiples auto-jointures :
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:35,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; nested_category &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
nested_category &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; parent
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft &lt;span class=&quot;kw1&quot;&gt;BETWEEN&lt;/span&gt; parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft &lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;rgt
&lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;FLASH&#039;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;ORDER&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;BY&lt;/span&gt; parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:36,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;table sectionedit37&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; name                 &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ELECTRONICS          &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; PORTABLE ELECTRONICS &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; MP3 PLAYERS          &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; FLASH                &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table7&amp;quot;,&amp;quot;secid&amp;quot;:37,&amp;quot;range&amp;quot;:&amp;quot;12065-12189&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Retrouver un chemin unique&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;retrouver_un_chemin_unique1&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:34,&amp;quot;range&amp;quot;:&amp;quot;11698-12190&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit38&quot; id=&quot;trouver_la_profondeur_des_nœuds&quot;&gt;Trouver la profondeur des nœuds&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Nous avons déjà examiné comment montrer l&amp;#039;arbre entier, mais que faire si nous voulons également montrer la profondeur de chaque nœud de l&amp;#039;arbre, pour mieux identifier comment chaque nœud s&amp;#039;insère dans la hiérarchie ? 
Cela peut être fait en ajoutant une fonction &lt;em class=&quot;u&quot;&gt;COUNT&lt;/em&gt; et une clause &lt;em class=&quot;u&quot;&gt;GROUP BY&lt;/em&gt; à notre requête existante pour afficher l&amp;#039;arbre entier :
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:39,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;COUNT&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; depth
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; nested_category &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
nested_category &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; parent
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft &lt;span class=&quot;kw1&quot;&gt;BETWEEN&lt;/span&gt; parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft &lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;rgt
&lt;span class=&quot;kw1&quot;&gt;GROUP&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;BY&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name
&lt;span class=&quot;kw1&quot;&gt;ORDER&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;BY&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:40,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;table sectionedit41&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; name                 &lt;/th&gt;&lt;th class=&quot;col1&quot;&gt; depth &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ELECTRONICS          &lt;/td&gt;&lt;td class=&quot;col1 rightalign&quot;&gt;     0 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; TELEVISIONS          &lt;/td&gt;&lt;td class=&quot;col1 rightalign&quot;&gt;     1 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; TUBE                 &lt;/td&gt;&lt;td class=&quot;col1 rightalign&quot;&gt;     2 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; LCD                  &lt;/td&gt;&lt;td class=&quot;col1 rightalign&quot;&gt;     2 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; PLASMA               &lt;/td&gt;&lt;td class=&quot;col1 rightalign&quot;&gt;     2 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; PORTABLE ELECTRONICS &lt;/td&gt;&lt;td class=&quot;col1 rightalign&quot;&gt;     1 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; MP3 PLAYERS          &lt;/td&gt;&lt;td class=&quot;col1 rightalign&quot;&gt;     2 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row8&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; FLASH                &lt;/td&gt;&lt;td class=&quot;col1 rightalign&quot;&gt;     3 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row9&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; CD PLAYERS           &lt;/td&gt;&lt;td class=&quot;col1 rightalign&quot;&gt;     2 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row10&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; 2 WAY RADIOS         &lt;/td&gt;&lt;td class=&quot;col1 rightalign&quot;&gt;     2 &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table8&amp;quot;,&amp;quot;secid&amp;quot;:41,&amp;quot;range&amp;quot;:&amp;quot;12844-13206&amp;quot;} --&gt;
&lt;p&gt;
Nous pouvons utiliser la valeur de profondeur pour indenter nos noms de catégorie avec les fonctions de chaîne &lt;em class=&quot;u&quot;&gt;CONCAT&lt;/em&gt; et &lt;em class=&quot;u&quot;&gt;REPEAT&lt;/em&gt; :
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:42,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; CONCAT&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; REPEAT&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;…&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;COUNT&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; name
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; nested_category &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
nested_category &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; parent
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft &lt;span class=&quot;kw1&quot;&gt;BETWEEN&lt;/span&gt; parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft &lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;rgt
&lt;span class=&quot;kw1&quot;&gt;GROUP&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;BY&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name
&lt;span class=&quot;kw1&quot;&gt;ORDER&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;BY&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:43,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;table sectionedit44&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; name                  &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ELECTRONICS           &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; …TELEVISIONS          &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ……TUBE                &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ……LCD                 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ……PLASMA              &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; …PORTABLE ELECTRONICS &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ……MP3 PLAYERS         &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row8&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ………FLASH              &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row9&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ……CD PLAYERS          &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row10&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ……2 WAY RADIOS        &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table9&amp;quot;,&amp;quot;secid&amp;quot;:44,&amp;quot;range&amp;quot;:&amp;quot;13608-13927&amp;quot;} --&gt;
&lt;p&gt;
Bien entendu, dans une application cliente, vous serez plus enclin à utiliser directement la valeur de profondeur pour afficher votre hiérarchie.
Les développeurs web pourraient faire une boucle dans l&amp;#039;arborescence, en ajoutant les balises &lt;a href=&quot;https://developer.mozilla.org/fr/docs/Web/HTML/Element/li&quot; class=&quot;urlextern&quot; title=&quot;https://developer.mozilla.org/fr/docs/Web/HTML/Element/li&quot; rel=&quot;ugc nofollow&quot;&gt;&amp;lt;li&amp;gt;&lt;/a&gt; et &lt;a href=&quot;https://developer.mozilla.org/fr/docs/Web/HTML/Element/ul&quot; class=&quot;urlextern&quot; title=&quot;https://developer.mozilla.org/fr/docs/Web/HTML/Element/ul&quot; rel=&quot;ugc nofollow&quot;&gt;&amp;lt;ul&amp;gt;&lt;/a&gt; à mesure que le nombre de profondeur augmente et diminue.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Trouver la profondeur des n\u0153uds&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;trouver_la_profondeur_des_n\u0153uds&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:8,&amp;quot;secid&amp;quot;:38,&amp;quot;range&amp;quot;:&amp;quot;12191-14367&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit45&quot; id=&quot;trouver_la_profondeur_d_un_sous-arbre&quot;&gt;Trouver la profondeur d&amp;#039;un sous-arbre&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Lorsque nous avons besoin d&amp;#039;informations de profondeur pour un sous-arbre, nous ne pouvons limiter ni le nœud ni les tables parentes dans notre auto-jointure car cela corromprait nos résultats.
Au lieu de cela, nous ajoutons une troisième auto-jointure, ainsi qu&amp;#039;une sous-requête pour déterminer la profondeur qui sera le nouveau point de départ de notre sous-arbre :
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:46,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;COUNT&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sub_tree&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;depth &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; depth
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; nested_category &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    nested_category &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; parent&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    nested_category &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; sub_parent&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name
        &lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;COUNT&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; depth
        &lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; nested_category &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        nested_category &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; parent
        &lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft &lt;span class=&quot;kw1&quot;&gt;BETWEEN&lt;/span&gt; parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft &lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;rgt
        &lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;PORTABLE ELECTRONICS&#039;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;GROUP&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;BY&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name
        &lt;span class=&quot;kw1&quot;&gt;ORDER&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;BY&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft
    &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; sub_tree
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft &lt;span class=&quot;kw1&quot;&gt;BETWEEN&lt;/span&gt; parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft &lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;rgt
&lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft &lt;span class=&quot;kw1&quot;&gt;BETWEEN&lt;/span&gt; sub_parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft &lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; sub_parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;rgt
&lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; sub_parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; sub_tree&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name
&lt;span class=&quot;kw1&quot;&gt;GROUP&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;BY&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name
&lt;span class=&quot;kw1&quot;&gt;ORDER&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;BY&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:47,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;table sectionedit48&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; name                 &lt;/th&gt;&lt;th class=&quot;col1&quot;&gt; depth &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; PORTABLE ELECTRONICS &lt;/td&gt;&lt;td class=&quot;col1 rightalign&quot;&gt;     0 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; MP3 PLAYERS          &lt;/td&gt;&lt;td class=&quot;col1 rightalign&quot;&gt;     1 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; FLASH                &lt;/td&gt;&lt;td class=&quot;col1 rightalign&quot;&gt;     2 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; CD PLAYERS           &lt;/td&gt;&lt;td class=&quot;col1 rightalign&quot;&gt;     1 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; 2 WAY RADIOS         &lt;/td&gt;&lt;td class=&quot;col1 rightalign&quot;&gt;     1 &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table10&amp;quot;,&amp;quot;secid&amp;quot;:48,&amp;quot;range&amp;quot;:&amp;quot;15503-15700&amp;quot;} --&gt;
&lt;p&gt;
Cette fonction peut être utilisée avec n&amp;#039;importe quel nom de nœud, y compris le nœud racine.
Les valeurs de profondeur sont toujours relatives au nœud nommé.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Trouver la profondeur d&amp;#039;un sous-arbre&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;trouver_la_profondeur_d_un_sous-arbre&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:10,&amp;quot;secid&amp;quot;:45,&amp;quot;range&amp;quot;:&amp;quot;14368-15865&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit49&quot; id=&quot;trouver_les_enfants_immediats_d_un_nœud&quot;&gt;Trouver les enfants immédiats d&amp;#039;un nœud&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Imaginez que vous présentez une catégorie de produits électroniques sur le site web d&amp;#039;un détaillant.
Lorsqu&amp;#039;un utilisateur clique sur une catégorie, vous souhaitez afficher les produits de cette catégorie, ainsi que la liste de ses sous-catégories immédiates, mais pas l&amp;#039;arbre entier des catégories.
Pour cela, nous devons afficher le nœud et ses sous-nœuds immédiats uniquement.
Par exemple, lorsque nous affichons la catégorie &lt;em&gt;ÉLECTRONIQUE PORTABLE&lt;/em&gt;, nous voulons afficher les catégories &lt;em&gt;LECTEURS MP3&lt;/em&gt;, &lt;em&gt;LECTEURS CD&lt;/em&gt; et &lt;em&gt;RADIOS 2 VOIES&lt;/em&gt;, mais pas la catégorie &lt;em&gt;FLASH&lt;/em&gt;.
&lt;/p&gt;

&lt;p&gt;
Cela peut être facilement réalisé en ajoutant une clause &lt;em class=&quot;u&quot;&gt;HAVING&lt;/em&gt; à notre requête précédente :
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:50,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;COUNT&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sub_tree&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;depth &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; depth
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; nested_category &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    nested_category &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; parent&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    nested_category &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; sub_parent&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name
        &lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;COUNT&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; depth
        &lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; nested_category &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        nested_category &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; parent
        &lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft &lt;span class=&quot;kw1&quot;&gt;BETWEEN&lt;/span&gt; parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft &lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;rgt
        &lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;PORTABLE ELECTRONICS&#039;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;GROUP&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;BY&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name
        &lt;span class=&quot;kw1&quot;&gt;ORDER&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;BY&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft
    &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; sub_tree
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft &lt;span class=&quot;kw1&quot;&gt;BETWEEN&lt;/span&gt; parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft &lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;rgt
&lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft &lt;span class=&quot;kw1&quot;&gt;BETWEEN&lt;/span&gt; sub_parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft &lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; sub_parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;rgt
&lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; sub_parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; sub_tree&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name
&lt;span class=&quot;kw1&quot;&gt;GROUP&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;BY&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name
&lt;span class=&quot;kw1&quot;&gt;HAVING&lt;/span&gt; depth &lt;span class=&quot;sy0&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;ORDER&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;BY&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:51,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;table sectionedit52&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; name                  &lt;/th&gt;&lt;th class=&quot;col1 leftalign&quot;&gt; depth  &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; PORTABLE ELECTRONICS  &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; 0      &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; MP3 PLAYERS           &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; 1      &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; CD PLAYERS            &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; 1      &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; 2 WAY RADIOS          &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; 1      &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table11&amp;quot;,&amp;quot;secid&amp;quot;:52,&amp;quot;range&amp;quot;:&amp;quot;17353-17527&amp;quot;} --&gt;
&lt;p&gt;
Si vous ne souhaitez pas afficher le nœud parent, changez la ligne &lt;code&gt;HAVING depth &amp;lt;= 1&lt;/code&gt; par &lt;code&gt;HAVING depth = 1&lt;/code&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Trouver les enfants imm\u00e9diats d&amp;#039;un n\u0153ud&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;trouver_les_enfants_immediats_d_un_n\u0153ud&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:11,&amp;quot;secid&amp;quot;:49,&amp;quot;range&amp;quot;:&amp;quot;15866-17661&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit53&quot; id=&quot;fonctions_d_agregation_dans_un_ensemble_imbrique&quot;&gt;Fonctions d’agrégation dans un ensemble imbriqué&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Ajoutons une table de produits que nous pouvons utiliser avec des fonctions agrégées :
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:54,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;TABLE&lt;/span&gt; product &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
    product_id &lt;span class=&quot;kw1&quot;&gt;INT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AUTO_INCREMENT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;PRIMARY&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;KEY&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    name &lt;span class=&quot;kw1&quot;&gt;VARCHAR&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;40&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    category_id &lt;span class=&quot;kw1&quot;&gt;INT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NOT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;NULL&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;INSERT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;INTO&lt;/span&gt; product &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;name&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; category_id&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;VALUES&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;20&amp;quot; TV&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;36&amp;quot; TV&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;Super-LCD 42&amp;quot;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;Ultra-Plasma 62&amp;quot;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;Value Plasma 38&amp;quot;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;Power-MP3 5gb&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;Super-Player 1gb&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;Porta CD&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;CD To go!&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;Family Talk 360&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; product;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:55,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;table sectionedit56&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; product_id  &lt;/th&gt;&lt;th class=&quot;col1 leftalign&quot;&gt; name               &lt;/th&gt;&lt;th class=&quot;col2 leftalign&quot;&gt; category_id  &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; 1           &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; 20“ TV             &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; 3            &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; 2           &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; 36” TV             &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; 3            &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; 3           &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; Super-LCD 42“      &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; 4            &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; 4           &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; Ultra-Plasma 62”   &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; 5            &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; 5           &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; Value Plasma 38“   &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; 5            &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; 6           &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; Power-MP3 128mb    &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; 7            &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; 7           &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; Super-Shuffle 1gb  &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; 8            &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row8&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; 8           &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; Porta CD           &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; 9            &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row9&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; 9           &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; CD To go!          &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; 9            &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row10&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; 10          &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; Family Talk 360    &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; 10           &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table12&amp;quot;,&amp;quot;secid&amp;quot;:56,&amp;quot;range&amp;quot;:&amp;quot;18304-18875&amp;quot;} --&gt;
&lt;p&gt;
Produisons maintenant une requête qui récupère notre arbre de catégories, ainsi que le nombre de produits pour chaque catégorie :
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:57,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;COUNT&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;product&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; nested_category &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
nested_category &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; parent&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
product
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft &lt;span class=&quot;kw1&quot;&gt;BETWEEN&lt;/span&gt; parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft &lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;rgt
&lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;category_id &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; product&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;category_id
&lt;span class=&quot;kw1&quot;&gt;GROUP&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;BY&lt;/span&gt; parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name
&lt;span class=&quot;kw1&quot;&gt;ORDER&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;BY&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:58,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;table sectionedit59&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; name                 &lt;/th&gt;&lt;th class=&quot;col1&quot;&gt; COUNT(product.name) &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ELECTRONICS          &lt;/td&gt;&lt;td class=&quot;col1 rightalign&quot;&gt;                  10 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; TELEVISIONS          &lt;/td&gt;&lt;td class=&quot;col1 rightalign&quot;&gt;                   5 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; TUBE                 &lt;/td&gt;&lt;td class=&quot;col1 rightalign&quot;&gt;                   2 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; LCD                  &lt;/td&gt;&lt;td class=&quot;col1 rightalign&quot;&gt;                   1 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; PLASMA               &lt;/td&gt;&lt;td class=&quot;col1 rightalign&quot;&gt;                   2 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; PORTABLE ELECTRONICS &lt;/td&gt;&lt;td class=&quot;col1 rightalign&quot;&gt;                   5 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; MP3 PLAYERS          &lt;/td&gt;&lt;td class=&quot;col1 rightalign&quot;&gt;                   2 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row8&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; FLASH                &lt;/td&gt;&lt;td class=&quot;col1 rightalign&quot;&gt;                   1 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row9&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; CD PLAYERS           &lt;/td&gt;&lt;td class=&quot;col1 rightalign&quot;&gt;                   2 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row10&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; 2 WAY RADIOS         &lt;/td&gt;&lt;td class=&quot;col1 rightalign&quot;&gt;                   1 &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table13&amp;quot;,&amp;quot;secid&amp;quot;:59,&amp;quot;range&amp;quot;:&amp;quot;19294-19810&amp;quot;} --&gt;
&lt;p&gt;
C&amp;#039;est notre requête classique de récupération d&amp;#039;arbre entier avec l&amp;#039;ajout de &lt;em class=&quot;u&quot;&gt;COUNT&lt;/em&gt; et &lt;em class=&quot;u&quot;&gt;GROUP BY&lt;/em&gt; et d&amp;#039;une jointure entre le nœud et la table de produits dans la clause &lt;em class=&quot;u&quot;&gt;WHERE&lt;/em&gt;.
Comme vous pouvez le voir, il y a un nombre pour chaque catégorie et le nombre de sous-catégories est reflété dans les catégories parentes.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Fonctions d\u2019agr\u00e9gation dans un ensemble imbriqu\u00e9&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;fonctions_d_agregation_dans_un_ensemble_imbrique&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:12,&amp;quot;secid&amp;quot;:53,&amp;quot;range&amp;quot;:&amp;quot;17662-20145&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit60&quot; id=&quot;ajout_d_un_nœud&quot;&gt;Ajout d&amp;#039;un nœud&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Maintenant que nous avons appris à interroger notre arbre, nous devrions examiner comment le mettre à jour en y ajoutant un nouveau nœud.
Examinons à nouveau notre diagramme d&amp;#039;ensembles imbriqués :
&lt;/p&gt;

&lt;p&gt;
&lt;img class=&#039;mediacenter&#039; id=&#039;informatique:mysql:hierarchical-data-nested-set-2.png&#039; 
                        style=&#039;max-width:100%;cursor:pointer;&#039; onclick=&#039;edit(this);&#039;
						src=&#039;/wiki/lib/exe/fetch.php?media=informatique:mysql:hierarchical-data-nested-set-2.png&#039; 
                        alt=&#039;informatique:mysql:hierarchical-data-nested-set-2.png&#039; /&gt;
&lt;/p&gt;

&lt;p&gt;
Si nous voulions ajouter un nouveau nœud entre les nœuds &lt;em&gt;TELEVISIONS&lt;/em&gt; et &lt;em&gt;ELECTRONIQUE PORTABLE&lt;/em&gt;, le nouveau nœud aurait des valeurs &lt;em&gt;lft&lt;/em&gt; et &lt;em&gt;rgt&lt;/em&gt; de 10 et 11, et tous les nœuds à sa droite auraient leurs valeurs &lt;em&gt;lft&lt;/em&gt; et &lt;em&gt;rgt&lt;/em&gt; augmentées de deux.
Nous ajouterions alors le nouveau nœud avec les valeurs &lt;em&gt;lft&lt;/em&gt; et &lt;em&gt;rgt&lt;/em&gt; appropriées.
Bien que cela puisse être fait avec une procédure stockée dans MySQL 5, &lt;del&gt;je vais supposer pour le moment que la plupart des lecteurs utilisent la version 4.1, car c&amp;#039;est la dernière version stable&lt;/del&gt;, je vais isoler mes requêtes avec une instruction &lt;em class=&quot;u&quot;&gt;LOCK TABLES&lt;/em&gt; à la place :
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:61,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;co1&quot;&gt;-- Verrouillage en écriture de la table&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;LOCK&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;TABLE&lt;/span&gt; nested_category &lt;span class=&quot;kw1&quot;&gt;WRITE&lt;/span&gt;;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;-- Récupération des informations de l&#039;élément parent&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; @myRight :&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; rgt
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; nested_category
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; name &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;TELEVISIONS&#039;&lt;/span&gt;;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;-- Mise à jour des bornes droites des éléments concernés&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;UPDATE&lt;/span&gt; nested_category
&lt;span class=&quot;kw1&quot;&gt;SET&lt;/span&gt; rgt &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; rgt &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; rgt &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; @myRight;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;-- Mise à jour des bornes gauches des éléments concernés&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;UPDATE&lt;/span&gt; nested_category
&lt;span class=&quot;kw1&quot;&gt;SET&lt;/span&gt; lft &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; lft &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; lft &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; @myRight;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;-- Insertion du nouvel élément&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;INSERT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;INTO&lt;/span&gt; nested_category &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;name&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; lft&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; rgt&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;VALUES&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;GAME CONSOLES&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; @myRight &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; @myRight &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;-- Suppression des verrous&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;UNLOCK&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;TABLES&lt;/span&gt;;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:62,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;p&gt;
Nous pouvons alors vérifier notre arborescence grâce à notre requête d&amp;#039;arbre avec indentation :
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:63,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; CONCAT&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; REPEAT&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;…&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;COUNT&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; name
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; nested_category &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
nested_category &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; parent
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft &lt;span class=&quot;kw1&quot;&gt;BETWEEN&lt;/span&gt; parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft &lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;rgt
&lt;span class=&quot;kw1&quot;&gt;GROUP&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;BY&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name
&lt;span class=&quot;kw1&quot;&gt;ORDER&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;BY&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:64,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;table sectionedit65&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; name                  &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ELECTRONICS           &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; …TELEVISIONS          &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ……TUBE                &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ……LCD                 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ……PLASMA              &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; …GAME CONSOLES        &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; …PORTABLE ELECTRONICS &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row8&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ……MP3 PLAYERS         &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row9&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ………FLASH              &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row10&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ……CD PLAYERS          &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row11&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ……2 WAY RADIOS        &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table14&amp;quot;,&amp;quot;secid&amp;quot;:65,&amp;quot;range&amp;quot;:&amp;quot;22132-22479&amp;quot;} --&gt;
&lt;p&gt;
Si nous voulons plutôt ajouter un nœud en tant qu&amp;#039;enfant d&amp;#039;un nœud qui n&amp;#039;a pas d&amp;#039;enfant existant, nous devons modifier légèrement notre procédure.
Ajoutons un nouveau nœud &lt;em&gt;FRS&lt;/em&gt; sous le nœud &lt;em&gt;2 WAY RADIOS&lt;/em&gt; :
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:66,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;LOCK&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;TABLE&lt;/span&gt; nested_category &lt;span class=&quot;kw1&quot;&gt;WRITE&lt;/span&gt;;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; @myLeft :&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; lft
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; nested_category
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; name &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;2 WAY RADIOS&#039;&lt;/span&gt;;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;UPDATE&lt;/span&gt; nested_category
&lt;span class=&quot;kw1&quot;&gt;SET&lt;/span&gt; rgt &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; rgt &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; rgt &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; @myLeft;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;UPDATE&lt;/span&gt; nested_category
&lt;span class=&quot;kw1&quot;&gt;SET&lt;/span&gt; lft &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; lft &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; lft &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; @myLeft;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;INSERT&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;INTO&lt;/span&gt; nested_category&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;name&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; lft&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; rgt&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;VALUES&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;FRS&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; @myLeft &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; @myLeft &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;UNLOCK&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;TABLES&lt;/span&gt;;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:67,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;p&gt;
Dans cet exemple, nous développons tout à droite du numéro de gauche de notre nouveau nœud parent, puis nous plaçons le nœud à droite de la valeur de gauche.
Comme vous pouvez le voir, notre nouveau nœud est maintenant correctement imbriqué :
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:68,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; CONCAT&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; REPEAT&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;…&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;COUNT&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; name
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; nested_category &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
nested_category &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; parent
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft &lt;span class=&quot;kw1&quot;&gt;BETWEEN&lt;/span&gt; parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft &lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;rgt
&lt;span class=&quot;kw1&quot;&gt;GROUP&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;BY&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name
&lt;span class=&quot;kw1&quot;&gt;ORDER&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;BY&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:69,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;table sectionedit70&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; name                  &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ELECTRONICS           &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; …TELEVISIONS          &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ……TUBE                &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ……LCD                 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ……PLASMA              &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; …GAME CONSOLES        &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; …PORTABLE ELECTRONICS &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row8&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ……MP3 PLAYERS         &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row9&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ………FLASH              &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row10&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ……CD PLAYERS          &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row11&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ……2 WAY RADIOS        &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row12&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ………FRS                &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table15&amp;quot;,&amp;quot;secid&amp;quot;:70,&amp;quot;range&amp;quot;:&amp;quot;23602-23981&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Ajout d&amp;#039;un n\u0153ud&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ajout_d_un_n\u0153ud&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:14,&amp;quot;secid&amp;quot;:60,&amp;quot;range&amp;quot;:&amp;quot;20146-23981&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit71&quot; id=&quot;suppression_d_un_nœud&quot;&gt;Suppression d&amp;#039;un nœud&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
La dernière tâche de base impliquée dans le travail avec des ensembles imbriqués est la suppression des nœuds.
La marche à suivre pour supprimer un nœud dépend de la position du nœud dans la hiérarchie ; il est plus facile de supprimer des nœuds feuilles que des nœuds enfants, car nous devons nous occuper des nœuds orphelins.
&lt;/p&gt;

&lt;p&gt;
Lors de la suppression d&amp;#039;un nœud de feuille, le processus est tout à fait inverse à celui de l&amp;#039;ajout d&amp;#039;un nouveau nœud ; nous supprimons le nœud et sa largeur de chaque nœud à sa droite :
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:72,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;co1&quot;&gt;-- Verrouillage en écriture de la table&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;LOCK&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;TABLE&lt;/span&gt; nested_category &lt;span class=&quot;kw1&quot;&gt;WRITE&lt;/span&gt;;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;-- Récupération des informations de l&#039;élément à supprimer&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; @myLeft :&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; lft
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; @myRight :&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; rgt
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; @myWidth :&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; rgt &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; lft &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; nested_category
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; name &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;GAME CONSOLES&#039;&lt;/span&gt;;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;-- Suppression de l&#039;élément&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;DELETE&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; nested_category
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; lft &lt;span class=&quot;kw1&quot;&gt;BETWEEN&lt;/span&gt; @myLeft &lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; @myRight;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;-- Mise à jour des bornes droites des éléments concernés&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;UPDATE&lt;/span&gt; nested_category
&lt;span class=&quot;kw1&quot;&gt;SET&lt;/span&gt; rgt &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; rgt &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; @myWidth
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; rgt &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; @myRight;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;-- Mise à jour des bornes gauches des éléments concernés&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;UPDATE&lt;/span&gt; nested_category
&lt;span class=&quot;kw1&quot;&gt;SET&lt;/span&gt; lft &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; lft &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; @myWidth
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; lft &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; @myRight;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;-- Suppression des verrous&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;UNLOCK&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;TABLES&lt;/span&gt;;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:73,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;p&gt;
Et une fois de plus, nous exécutons notre requête d&amp;#039;arbre avec indentation pour confirmer que notre nœud a été supprimé sans corrompre la hiérarchie :
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:74,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; CONCAT&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; REPEAT&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;…&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;COUNT&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; name
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; nested_category &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
nested_category &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; parent
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft &lt;span class=&quot;kw1&quot;&gt;BETWEEN&lt;/span&gt; parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft &lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;rgt
&lt;span class=&quot;kw1&quot;&gt;GROUP&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;BY&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name
&lt;span class=&quot;kw1&quot;&gt;ORDER&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;BY&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:75,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;table sectionedit76&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; name                  &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ELECTRONICS           &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; …TELEVISIONS          &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ……TUBE                &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ……LCD                 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ……PLASMA              &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; …PORTABLE ELECTRONICS &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ……MP3 PLAYERS         &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row8&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ………FLASH              &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row9&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ……CD PLAYERS          &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row10&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ……2 WAY RADIOS        &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row11&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ………FRS                &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table16&amp;quot;,&amp;quot;secid&amp;quot;:76,&amp;quot;range&amp;quot;:&amp;quot;25681-26032&amp;quot;} --&gt;
&lt;p&gt;
Cette approche fonctionne tout aussi bien pour supprimer un nœud et tous ses enfants :
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:77,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;LOCK&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;TABLE&lt;/span&gt; nested_category &lt;span class=&quot;kw1&quot;&gt;WRITE&lt;/span&gt;;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; @myLeft :&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; lft
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; @myRight :&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; rgt
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; @myWidth :&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; rgt &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; lft &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; nested_category
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; name &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;MP3 PLAYERS&#039;&lt;/span&gt;;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;DELETE&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; nested_category
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; lft &lt;span class=&quot;kw1&quot;&gt;BETWEEN&lt;/span&gt; @myLeft &lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; @myRight;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;UPDATE&lt;/span&gt; nested_category
&lt;span class=&quot;kw1&quot;&gt;SET&lt;/span&gt; rgt &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; rgt &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; @myWidth 
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; rgt &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; @myRight;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;UPDATE&lt;/span&gt; nested_category
&lt;span class=&quot;kw1&quot;&gt;SET&lt;/span&gt; lft &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; lft &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; @myWidth
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; lft &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; @myRight;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;UNLOCK&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;TABLES&lt;/span&gt;;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:78,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;p&gt;
Et une fois de plus, nous exécutons notre requête pour valider que nous avons réussi à supprimer un sous-arbre entier :
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:79,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; CONCAT&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; REPEAT&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;…&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;COUNT&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; name
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; nested_category &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
nested_category &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; parent
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft &lt;span class=&quot;kw1&quot;&gt;BETWEEN&lt;/span&gt; parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft &lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;rgt
&lt;span class=&quot;kw1&quot;&gt;GROUP&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;BY&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name
&lt;span class=&quot;kw1&quot;&gt;ORDER&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;BY&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:80,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;table sectionedit81&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; name                  &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ELECTRONICS           &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; …TELEVISIONS          &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ……TUBE                &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ……LCD                 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ……PLASMA              &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; …PORTABLE ELECTRONICS &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ……CD PLAYERS          &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row8&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ……2 WAY RADIOS        &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row9&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ………FRS                &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table17&amp;quot;,&amp;quot;secid&amp;quot;:81,&amp;quot;range&amp;quot;:&amp;quot;26934-27223&amp;quot;} --&gt;
&lt;p&gt;
L&amp;#039;autre scénario que nous devons traiter est la suppression d&amp;#039;un nœud parent mais pas des enfants.
Dans certains cas, il est possible de changer le nom en place jusqu&amp;#039;à ce qu&amp;#039;un remplaçant soit présenté, par exemple lorsqu&amp;#039;un superviseur est licencié.
Dans d&amp;#039;autres cas, les nœuds enfants doivent tous être déplacés jusqu&amp;#039;au niveau du parent supprimé :
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:82,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;LOCK&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;TABLE&lt;/span&gt; nested_category &lt;span class=&quot;kw1&quot;&gt;WRITE&lt;/span&gt;;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; @myLeft :&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; lft
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; @myRight :&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; rgt
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; @myWidth :&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; rgt &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; lft &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; nested_category
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; name &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;PORTABLE ELECTRONICS&#039;&lt;/span&gt;;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;DELETE&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; nested_category
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; lft &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; @myLeft;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;UPDATE&lt;/span&gt; nested_category
&lt;span class=&quot;kw1&quot;&gt;SET&lt;/span&gt; rgt &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; rgt &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; lft &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; lft &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; lft &lt;span class=&quot;kw1&quot;&gt;BETWEEN&lt;/span&gt; @myLeft &lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; @myRight;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;UPDATE&lt;/span&gt; nested_category
&lt;span class=&quot;kw1&quot;&gt;SET&lt;/span&gt; rgt &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; rgt &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; rgt &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; @myRight;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;UPDATE&lt;/span&gt; nested_category
&lt;span class=&quot;kw1&quot;&gt;SET&lt;/span&gt; lft &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; lft &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; lft &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; @myRight;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;UNLOCK&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;TABLES&lt;/span&gt;;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:83,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;p&gt;
Dans ce cas, nous en soustrayons deux de tous les éléments à droite du nœud (puisque sans les enfants, il aurait une largeur de deux), et un des nœuds qui sont ses enfants (pour combler l&amp;#039;écart créé par la perte de la valeur gauche du parent).
Une fois de plus, nous pouvons confirmer que nos éléments ont été promus :
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:84,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; CONCAT&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; REPEAT&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;…&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;COUNT&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; name
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; nested_category &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
nested_category &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; parent
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft &lt;span class=&quot;kw1&quot;&gt;BETWEEN&lt;/span&gt; parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft &lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;rgt
&lt;span class=&quot;kw1&quot;&gt;GROUP&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;BY&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name
&lt;span class=&quot;kw1&quot;&gt;ORDER&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;BY&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:85,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;table sectionedit86&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; name          &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ELECTRONICS   &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; …TELEVISIONS  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ……TUBE        &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ……LCD         &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ……PLASMA      &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; …CD PLAYERS   &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; …2 WAY RADIOS &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row8&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ……FRS         &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table18&amp;quot;,&amp;quot;secid&amp;quot;:86,&amp;quot;range&amp;quot;:&amp;quot;28682-28865&amp;quot;} --&gt;
&lt;p&gt;
D&amp;#039;autres scénarios de suppression de nœuds incluent la promotion d&amp;#039;un des enfants en position parentale et le déplacement des nœuds enfants sous un frère ou une sœur du nœud parent, mais par souci d&amp;#039;espace, ces scénarios ne seront pas couverts dans cet article.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Suppression d&amp;#039;un n\u0153ud&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;suppression_d_un_n\u0153ud&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:18,&amp;quot;secid&amp;quot;:71,&amp;quot;range&amp;quot;:&amp;quot;23982-29136&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit87&quot; id=&quot;autres_ressources&quot;&gt;Autres ressources&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://sqlpro.developpez.com/cours/arborescence/&quot; class=&quot;urlextern&quot; title=&quot;https://sqlpro.developpez.com/cours/arborescence/&quot; rel=&quot;ugc nofollow&quot;&gt;Représentation intervallaire des arborescences&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://web.archive.org/web/20101207084854/http://articles.sitepoint.com/article/hierarchical-data-database/&quot; class=&quot;urlextern&quot; title=&quot;https://web.archive.org/web/20101207084854/http://articles.sitepoint.com/article/hierarchical-data-database/&quot; rel=&quot;ugc nofollow&quot;&gt;Storing Hierarchical Data in a Database&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Autres ressources&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;autres_ressources&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:24,&amp;quot;secid&amp;quot;:87,&amp;quot;range&amp;quot;:&amp;quot;29137-29431&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit88&quot; id=&quot;manipulations_de_donnees_supplementaires&quot;&gt;Manipulations de données supplémentaires&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:89,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_info plugin_wrap&quot;&gt;
&lt;p&gt;
Ces manipulations ne sont pas abordées dans l&amp;#039;article traduit, c&amp;#039;est pourquoi elles sont regroupées ici.
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:90,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Manipulations de donn\u00e9es suppl\u00e9mentaires&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;manipulations_de_donnees_supplementaires&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:24,&amp;quot;secid&amp;quot;:88,&amp;quot;range&amp;quot;:&amp;quot;29432-29618&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit91&quot; id=&quot;retrouver_un_chemin_unique_sans_le_nœud&quot;&gt;Retrouver un chemin unique sans le nœud&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:92,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; nested_category &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
nested_category &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; parent
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft &lt;span class=&quot;kw1&quot;&gt;BETWEEN&lt;/span&gt; parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft &lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;rgt
&lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;FLASH&#039;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;category_id &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&amp;gt;&lt;/span&gt; parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;category_id
&lt;span class=&quot;kw1&quot;&gt;ORDER&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;BY&lt;/span&gt; parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:93,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;table sectionedit94&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; name                 &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ELECTRONICS          &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; PORTABLE ELECTRONICS &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; MP3 PLAYERS          &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table19&amp;quot;,&amp;quot;secid&amp;quot;:94,&amp;quot;range&amp;quot;:&amp;quot;29928-30027&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Retrouver un chemin unique sans le n\u0153ud&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;retrouver_un_chemin_unique_sans_le_n\u0153ud&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:24,&amp;quot;secid&amp;quot;:91,&amp;quot;range&amp;quot;:&amp;quot;29619-30028&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit95&quot; id=&quot;retrouver_le_parent_immediat_d_un_nœud&quot;&gt;Retrouver le parent immédiat d&amp;#039;un nœud&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:96,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; nested_category &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
nested_category &lt;span class=&quot;kw1&quot;&gt;AS&lt;/span&gt; parent
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft &lt;span class=&quot;kw1&quot;&gt;BETWEEN&lt;/span&gt; parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft &lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;rgt
&lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;name &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;FLASH&#039;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; node&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;category_id &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&amp;gt;&lt;/span&gt; parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;category_id
&lt;span class=&quot;kw1&quot;&gt;ORDER&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;BY&lt;/span&gt; parent&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;lft &lt;span class=&quot;kw1&quot;&gt;DESC&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;LIMIT&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:97,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;table sectionedit98&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; name        &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; MP3 PLAYERS &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table20&amp;quot;,&amp;quot;secid&amp;quot;:98,&amp;quot;range&amp;quot;:&amp;quot;30351-30382&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Retrouver le parent imm\u00e9diat d&amp;#039;un n\u0153ud&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;retrouver_le_parent_immediat_d_un_n\u0153ud&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:25,&amp;quot;secid&amp;quot;:95,&amp;quot;range&amp;quot;:&amp;quot;30029-30383&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit99&quot; id=&quot;deplacement_d_un_nœud&quot;&gt;Déplacement d&amp;#039;un nœud&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Ici, on ne couvre que le cas du déplacement d&amp;#039;un nœud vers un nœud qui n&amp;#039;est pas un descendant du nœud traité.
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:100,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;co1&quot;&gt;-- Verrouillage en écriture de la table&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;LOCK&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;TABLE&lt;/span&gt; nested_category &lt;span class=&quot;kw1&quot;&gt;WRITE&lt;/span&gt;;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;-- Récupération des informations de l&#039;élément à déplacer&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; @myLeft :&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; lft
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; @myRight :&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; rgt
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; @myWidth :&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; rgt &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; lft &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; nested_category
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; name &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;CD PLAYERS&#039;&lt;/span&gt;;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;-- Récupération des informations du nouvel élément parent&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; @myNewParentLeft :&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; lft
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; @myNewParentRight :&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; rgt
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; nested_category
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; name &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;ELECTRONICS&#039;&lt;/span&gt;;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;-- Calcul de la valeur de déplacement de l&#039;élément à déplacer&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; @offsetWidth :&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; @myNewParentRight &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; @myRight &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;IF&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; SIGN&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; @myNewParentRight &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; @myRight &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; @myWidth &lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;-- Calcul de la borne gauche de déplacement des autres éléments&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; @offsetLeft :&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;IF&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; SIGN&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; @offsetWidth &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; @myRight &lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; @myNewParentRight &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;-- Calcul de la borne droite de déplacement des autres éléments&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; @offsetRight :&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;IF&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; SIGN&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; @offsetWidth &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; @myNewParentRight &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; @myLeft &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;-- Calcul de la valeur de déplacement des autres éléments&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; @signedNodeWidth :&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; SIGN&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; @offsetWidth &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt; @myWidth;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;-- Exclusion temporaire de l&#039;élément à déplacer&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;UPDATE&lt;/span&gt; nested_category
&lt;span class=&quot;kw1&quot;&gt;SET&lt;/span&gt; lft &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;lft
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; rgt &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;rgt
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; lft &lt;span class=&quot;sy0&quot;&gt;&amp;gt;=&lt;/span&gt; @myLeft
&lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; rgt &lt;span class=&quot;sy0&quot;&gt;&amp;lt;=&lt;/span&gt; @myRight;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;-- Mise à jour des bornes droites des éléments concernés&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;UPDATE&lt;/span&gt; nested_category
&lt;span class=&quot;kw1&quot;&gt;SET&lt;/span&gt; rgt &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; rgt &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; @signedNodeWidth
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; rgt &lt;span class=&quot;kw1&quot;&gt;BETWEEN&lt;/span&gt; @offsetLeft &lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; @offsetRight;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;-- Mise à jour des bornes gauches des éléments concernés&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;UPDATE&lt;/span&gt; nested_category
&lt;span class=&quot;kw1&quot;&gt;SET&lt;/span&gt; lft &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; lft &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; @signedNodeWidth
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; lft &lt;span class=&quot;kw1&quot;&gt;BETWEEN&lt;/span&gt; @offsetLeft &lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; @offsetRight;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;-- Repositionnement de l&#039;élément à déplacer&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;UPDATE&lt;/span&gt; nested_category
&lt;span class=&quot;kw1&quot;&gt;SET&lt;/span&gt; lft &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;lft &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; @offsetWidth
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; rgt &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;rgt &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; @offsetWidth
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; rgt &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;-- Suppression des verrous&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;UNLOCK&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;TABLES&lt;/span&gt;;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:101,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;table sectionedit102&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; name                  &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ELECTRONICS           &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; …TELEVISIONS          &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ……TUBE                &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ……LCD                 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ……PLASMA              &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; …GAME CONSOLES        &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; …PORTABLE ELECTRONICS &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row8&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ……MP3 PLAYERS         &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row9&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ………FLASH              &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row10&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ……2 WAY RADIOS        &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row11&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ………FRS                &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row12&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; …CD PLAYERS           &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table21&amp;quot;,&amp;quot;secid&amp;quot;:102,&amp;quot;range&amp;quot;:&amp;quot;32298-32675&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;D\u00e9placement d&amp;#039;un n\u0153ud&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;deplacement_d_un_n\u0153ud&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:26,&amp;quot;secid&amp;quot;:99,&amp;quot;range&amp;quot;:&amp;quot;30384-32675&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit103&quot; id=&quot;transformation_d_un_nœud_en_nœud_racine&quot;&gt;Transformation d&amp;#039;un nœud en nœud racine&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Cela implique de déplacer un nœud ainsi que l&amp;#039;ensemble de ses descendants.
Le nœud sélectionné pour être un nouveau nœud racine n&amp;#039;aura, de ce fait, plus de parent.
À la fin de la transformation, on aura donc deux arborescences côte à cote.
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:104,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code sql&quot;&gt;&lt;span class=&quot;co1&quot;&gt;-- Verrouillage en écriture de la table&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;LOCK&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;TABLE&lt;/span&gt; nested_category &lt;span class=&quot;kw1&quot;&gt;WRITE&lt;/span&gt;;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;-- Récupération des informations de l&#039;élément à déplacer&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; @myLeft :&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; lft
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; @myRight :&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; rgt
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; @myWidth :&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; rgt &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; lft &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; nested_category
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; name &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;PORTABLE ELECTRONICS&#039;&lt;/span&gt;;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;-- Récupération des informations de déplacement de l&#039;élément&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;SELECT&lt;/span&gt; @offsetWidth :&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;MAX&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rgt&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; @myRight
&lt;span class=&quot;kw1&quot;&gt;FROM&lt;/span&gt; nested_category;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;-- Exclusion temporaire de l&#039;élément à déplacer&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;UPDATE&lt;/span&gt; nested_category
&lt;span class=&quot;kw1&quot;&gt;SET&lt;/span&gt; lft &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;lft
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; rgt &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;rgt
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; lft &lt;span class=&quot;sy0&quot;&gt;&amp;gt;=&lt;/span&gt; @myLeft
&lt;span class=&quot;kw1&quot;&gt;AND&lt;/span&gt; rgt &lt;span class=&quot;sy0&quot;&gt;&amp;lt;=&lt;/span&gt; @myRight;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;-- Mise à jour des bornes droites des éléments concernés&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;UPDATE&lt;/span&gt; nested_category
&lt;span class=&quot;kw1&quot;&gt;SET&lt;/span&gt; rgt &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; rgt &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; @myWidth
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; rgt &lt;span class=&quot;sy0&quot;&gt;&amp;gt;=&lt;/span&gt; @myRight;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;-- Mise à jour des bornes gauches des éléments concernés&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;UPDATE&lt;/span&gt; nested_category
&lt;span class=&quot;kw1&quot;&gt;SET&lt;/span&gt; lft &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; lft &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; @myWidth
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; lft &lt;span class=&quot;sy0&quot;&gt;&amp;gt;=&lt;/span&gt; @myRight;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;-- Repositionnement de l&#039;élément à déplacer&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;UPDATE&lt;/span&gt; nested_category
&lt;span class=&quot;kw1&quot;&gt;SET&lt;/span&gt; lft &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;lft &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; @offsetWidth
&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; rgt &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;rgt &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; @offsetWidth
&lt;span class=&quot;kw1&quot;&gt;WHERE&lt;/span&gt; rgt &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;-- Suppression des verrous&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;UNLOCK&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;TABLES&lt;/span&gt;;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:105,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;table sectionedit106&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; name                 &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ELECTRONICS          &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; …TELEVISIONS         &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ……TUBE               &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ……LCD                &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ……PLASMA             &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; …GAME CONSOLES       &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; PORTABLE ELECTRONICS &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row8&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; …MP3 PLAYERS         &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row9&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ……FLASH              &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row10&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; …CD PLAYERS          &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row11&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; …2 WAY RADIOS        &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row12&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ……FRS                &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table22&amp;quot;,&amp;quot;secid&amp;quot;:106,&amp;quot;range&amp;quot;:&amp;quot;34023-34377&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Transformation d&amp;#039;un n\u0153ud en n\u0153ud racine&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;transformation_d_un_n\u0153ud_en_n\u0153ud_racine&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:27,&amp;quot;secid&amp;quot;:103,&amp;quot;range&amp;quot;:&amp;quot;32676-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 22 Nov 2024 02:37:36 +0000</pubDate>
        </item>
        <item>
            <title>utilisation_du_client</title>
            <link>https://www.ainw.org/wiki/doku.php?id=informatique:databases:mysql:utilisation_du_client&amp;rev=1732243893&amp;do=diff</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;utilisation_du_client&quot;&gt;Utilisation du client&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Utilisation du client&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;utilisation_du_client&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-37&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;affichage_des_options_utilisees_par_defaut&quot;&gt;Affichage des options utilisées par défaut&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code bash&quot;&gt;mysql &lt;span class=&quot;re5&quot;&gt;--print-defaults&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Affichage des options utilis\u00e9es par d\u00e9faut&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;affichage_des_options_utilisees_par_defaut&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;38-161&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;ouverture_d_une_connexion&quot;&gt;Ouverture d&amp;#039;une connexion&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code bash&quot;&gt;mysql
    &lt;span class=&quot;re5&quot;&gt;--user&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;username&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;re5&quot;&gt;--password&lt;/span&gt;
    &lt;span class=&quot;re5&quot;&gt;--host&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;hostname&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_alert plugin_wrap&quot;&gt;
&lt;p&gt;
Depuis la version 5.6.7, l&amp;#039;option &lt;code&gt;secure-auth&lt;/code&gt; est activé par défaut.&lt;br/&gt;

Il faut la désactiver cette option en utilisant l&amp;#039;option &lt;code&gt;skip-secure-auth&lt;/code&gt; si l&amp;#039;erreur suivante apparait :
&lt;/p&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
ERROR 2049 (HY000): Connection using old (pre-4.1.1) authentication protocol refused (client option &amp;#039;secure_auth&amp;#039; enabled)&lt;/div&gt;&lt;/blockquote&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;p&gt;
S&amp;#039;il y a des options inconnues dans les fichiers de configuration, l&amp;#039;ouverture de la connexion échouera. Pour ne pas utiliser ces options, il faut utiliser l&amp;#039;option &lt;code&gt;no-defaults&lt;/code&gt;.&lt;br/&gt;

Il faut noter que le fichier &lt;code&gt;.mylogin.cnf&lt;/code&gt; est chargé quoiqu&amp;#039;il arrive.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Ouverture d&amp;#039;une connexion&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ouverture_d_une_connexion&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;162-904&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit10&quot; id=&quot;import_de_base_de_donnees&quot;&gt;Import de base de données&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Comme pour l&amp;#039;exportation d&amp;#039;une base de données, il est possible de le faire avec PhpMyAdmin mais il vaut mieux utiliser directement mysql. Voici un exemple d&amp;#039;utilisation :
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_prewrap plugin_wrap&quot;&gt;&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;co0&quot;&gt;# avec une redirection&lt;/span&gt;
mysql &lt;span class=&quot;re5&quot;&gt;--password&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--user&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;username&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--database&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;database&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;filename&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# avec un &amp;quot;pipe&amp;quot;&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;cat&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;filename&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt; mysql &lt;span class=&quot;re5&quot;&gt;--password&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--user&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;username&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--database&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;database&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;--password&lt;/code&gt; indique le mot de passe à utiliser.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;--user&lt;/code&gt; indique l&amp;#039;utilisateur à utiliser.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;--database&lt;/code&gt; indique la base de données à utiliser.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Import de base de donn\u00e9es&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;import_de_base_de_donnees&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;905-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 22 Nov 2024 02:51:33 +0000</pubDate>
        </item>
    </channel>
</rss>
