Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse

NodeBB

  1. Home
  2. Programmation
  3. Développement web
  4. SQL
  5. Les commandes de base table mySQL

Les commandes de base table mySQL

Scheduled Pinned Locked Moved SQL
5 Posts 4 Posters 3.2k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • mars073M
    mars073M
    mars073
    wrote on last edited by
    #1

    <p>Salut all,</p><p>j'avais fais un beau tuto bien long et bien expliqué mais je me suis fail et tout a disparu en enfer... D:</p><p></p><p>Donc je fais une version abrégée, le mySQL est différent des autres oui, par exemple cette saloperie de SQLite ne prend pas le caractère " " pour isoler les variables même si il n'est pas obligatoire de plus certaines fonctions ne sont pas disponible. bref mySQL c'est bien et gratuit. ^-^</p><p></p><p>je vais pas refaire tout un truc sur la structure... il était tellement bien mon autre tuto disparu :'(</p><p></p><p>la structure de la commande se compose d'une action, une cible, de valeur(s)(optionnel), de condition(s)(optionnel), d'un ordre(optionnel) et une limite(optionnel).</p><p></p><p>exemple pour un ajout on utilise: une action, une cible et des valeurs::</p><p></p><pre class="ipsCode prettyprint lang-auto">#syntaxe: INSERT INTO [CIBLE] ([VARIABLE(S)]) VALUES([VALEURS]); INSERT INTOma_table (texte, chiffre) VALUES('Coucou', 123); </pre>Donc:<p>- la "cible" c'est la table que vous voulez affecter vous pouvez la sélectionner aussi à travers une db (ex: db_forum.ma_table).</p><p>- les variables sont les noms des colonnes dans votre table.</p><p>- les valeurs sont les valeurs (._.) que vous donnez aux variables.</p><p>&gt; <a href="http://dev.mysql.com/doc/refman/5.0/fr/insert.html" rel="external nofollow">Documentation Mysql::INSERT</a></p><p></p><p>si la valeur est un chiffre vous n'êtes pas obligé de mettre de guillemets mais si vous désirez mettre un guillemet dans une phrase vous devait mettre un anti-slash devant (ex: 'C\'est bon le chocolat!').</p><p></p><p>il existe une syntaxe où vous n'êtes pas obligé de donner le nom des variables mais alors vous devez donner les valeurs pour toutes les variables dans l'ordre.</p><p></p><pre class="ipsCode prettyprint lang-auto">#dans le contexte il y a une variable guid qui sert d'index et l'ordre est: guid, texte, chiffre INSERT INTO ma_tableVALUES(NULL, 'Coucou', 123); </pre>"NULL" retourne la valeur par défaut (ou une case vide) si la variable est un index avec une AI (auto-incrémentation) la valeur sera égale à l’incrémentation actuel de l'index de l'IA ._.<p></p><p>EDIT: je viens de me relire après ~8mois et je viens de voir que je n'ai pas indiqué comment ajouter plusieurs lignes en une commande, c'est simple il suffit de mettre une virgule entre les paquets de valeurs (les parenthèses).</p><p>Ce qui donne:</p><p></p><pre class="ipsCode prettyprint lang-auto">#syntaxe: INSERT INTO [CIBLE] ([VARIABLE(S)]) VALUES([VALEURS]); INSERT INTOma_table (texte, chiffre) VALUES('Coucou', 123), ('tu veux?', 456); </pre>vous pouvez en mettre plus mais je ne connais pas la limite :( <p></p><p>maintenant pour modifier des variables: action, cible, variables, nouvelles valeurs, limite (non obligatoire mais c'est une petite sécurité)::</p><p></p><pre class="ipsCode prettyprint lang-auto">#syntaxe: UPDATE [CIBLE] SET [VARIABLES] = [VALEURS] WHERE [CONDITION] LIMIT 1 #dans le contexte notre commande précédente, a affecté la valeur 58 à guidUPDATEma_tableSETtexte= 'Au revoir',chiffre = (chiffre+ 250) WHEREguid= 58 LIMIT 1; </pre>quand vous avez plusieurs variables à mettre à jour vous n'avez cas les séparer par une virgule et vous pouvez aussi réutiliser les variables dans votre ligne comme par exemple pour augmenter la valeur d'un chiffre de 250. Vous pouvez appliquez une modification à toutes lignes en supprimant "WHERE [CONDITION]" et la limite.<p>&gt; <a href="http://dev.mysql.com/doc/refman/5.0/fr/update.html" rel="external nofollow">Documentation Mysql::UPDATE</a></p><p></p><p>pour bien illustrer le "WHERE" dans mon exemple précédent je vais vous expliquer le "SELECT" (la sélection, impressionnant non?), la syntace:</p><p></p><pre class="ipsCode prettyprint lang-auto">SELECT [COLONNE] FROM [CIBLE] WHERE [CONDITION] ORDER BY [ORDRE] LIMIT [LIMIT]; </pre>-[COLONNE] : Les informations que vous souhaites récupérer, j'aurais pu aussi mettre [VARIABLES]comme au dessus mais bon ça reste une légende.<p>-[CIBLE] : La table dans la quelle vous désirez faire votre recherche.</p><p>-[CONDITION] : La condition pour que la donnée soit sélectionnée.</p><p>-[ORDRE] : Ordre croissant (ASC) ou décroissant (DESC).</p><p>-[LIMIT] : La limite de la sélection.</p><p>&gt; <a href="http://dev.mysql.com/doc/refman/5.0/fr/select.html" rel="external nofollow">Documentation Mysql::SELECT</a></p><p></p><p>Premier exemple, nous allons sélectionner l'utilisateur dont l' "ID" est 169 dans une table du nom de "users":</p><p></p><pre class="ipsCode prettyprint lang-auto">SELECT * FROM usersWHEREID= 169 LIMIT 1; </pre>Comme vous avez pu le constater j'ai mis un * dans les colonnes que je veux récupérer, celà signifie que je veux récupérer tout les colonnes de la ligne mais attention il n'est pas disponible dans toute les variantes SQL, le "LIMIT 1" est optionnel et inutile mais je le mets par hygiène de code :P <p></p><p>maintenant nous allons faire un truc un peu plus compliqué, nous allons chercher dans une table du nom de "news" si le mot "patate" est présent dans la colonne "title" (titre) ou "content" (le contenu) et nous allons récupérer que le titre, le contenu et sont "guid" (qui correspond à son numéro d'index dans la table) dans l'ordre croissant selon le titre, mais vous vous dites pour trouver le mot ça va être compliqué :( non en faite regardez :</p><p></p><pre class="ipsCode prettyprint lang-auto">SELECTguid, title, contentFROMnews WHERE (title LIKE '%patate%') OR (cotent LIKE '%patate%) ORDER BY title ASC;
    </pre>Comme vous pouvez le voir le "LIKE" est apparu, il est utilisé au même titre que le caractère "=", et il est complémenté par le caractère "%" qui dans la recherche signifie qu'il peut s'agir de n'importe quel caractère ou même de plusieurs mais vous désirez avoir qu'une possibilité que de 1 caractère il suffit de mettre un "_" à la place du "%".<p>il y a aussi l’apparition du "OR" qui signifie "ou", je dis donc à la requête que c'est ça <u>ou</u> ça pour être sélectionné, je mets des parenthèses pour bien séparer les conditions, vous pouvez aussi mettre un "AND" ("et" en français) si vous désirez que les deux conditions soient remplies.</p><p></p><p>pour un peu mieux illustrer l'exemple au dessus je vais le "traduite" dans un langage plus un langage plus "humain":</p><p></p><pre class="ipsCode prettyprint lang-auto">Sélectionne le guid, title, content dans les news où dans le title ressemble à '[n'importe]patate[n'importe]' ou dans le content si il y a une ressemblance à '[n'importe]patate[n'importe]' dans l'ordre de title en croissant.
    </pre>c'est moche et pire à comprendre mais bon il existe des langages en français... ^-^<p></p><p>maintenant la suppression <3</p><p>rien de plus simple de mettre fin aux jours de sa création,</p><p>comme exemple je vais reprendre l'exemple de l'users 169 ci-dessus et vu qu'il est méchant on va le supprimer:</p><p></p><pre class="ipsCode prettyprint lang-auto">#content: l'user (utilisateur) dont le guid (numéro index unique donné) est 169 est méchant donc on le supprime.
    #syntaxe: DELETE FROM [CIBLE] WHERE [CONDITION];
    DELETE FROM users WHERE guid= 169 LIMIT 1;
    </pre>/!\ Attention, avec les commandes il n'est jamais possible de revenir en arrière sauf si vous avez une bonne mémoire ou une sauvegarde.<p>Le "LIMIT 1" est présent non pas pour hygiène mais par sécurité car une faute de syntaxe et vous risquez de grave perte si vous ne mettez pas de conditions c'est tout le mode qui disparait.</p><p>> <a href="http://dev.mysql.com/doc/refman/5.0/fr/delete.html" rel="external nofollow">Documentation Mysql::DELETE</a></p><p></p><p>La remise à zéro, la commande "DELETE" c'est bien mais la commande "TRUNCATE" c'est mieux, quand vous utilisez la commande "DELETE" si votre table à un ou plusieurs index il(s) reste(nt) marqué(s) donc si vous voulez tout effacer et repartir à zéro (0) vous devez utiliser la commande "TRUNCATE":</p><p></p><pre class="ipsCode prettyprint lang-auto">#context: vous avez un vieux site et vous désire l'utiliser avec ses dbs mais ils y a plein de vieux users à supprimer.
    #syntaxe: TRUNCATE TABLE [CIBLE]
    TRUNCATE TABLE cible;
    </pre>une raison de plus de ne pas avoir de faille sql dans son serveur...<p>> <a href="http://dev.mysql.com/doc/refman/5.0/fr/truncate.html" rel="external nofollow">Documentation Mysql::TRUNCATE</a></p><p></p><p>Je pense avoir expliquer les commandes le plus utilisés, je ferais un autre topic sur la gestion des tables elle même, les comptes mysql et autre si j'en ai le courage x')</p><p></p><p>Bonne programmation à tous même si je considère par le SQL comme de la prog,</p><p>Mars073. 😛 </p>

    Aide à l'apprentissage et la réalisation pour des graphismes, des programmes, des sites ou autres.Signature aléatoire, proposez vous aussi une signature ici!

    1 Reply Last reply
    3
    • AzadA
      AzadA
      Azad
      wrote on last edited by
      #2

      <p>Tiens, j'avais pas vu ça, merci du partage. 🙂 <br/>
      Vivement la fin de la rédaction.<br/><br/>
      +1 Rep en attendant. 🙂 </p>

      Administrateur du forum.
      Contactez-moi par message privé ou par mail.

      1 Reply Last reply
      0
      • AlexMogA
        AlexMogA
        AlexMog
        Modérateur spécialisé
        wrote on last edited by
        #3

        <p>Pas mal comme cours, j'essayerais de ré-écrire les miens un jour 🙂 , avec les jointures et tout le tralala 🙂 , en attendant, continue à faire tes cours, ils sont pas mal expliqués!</p>
        <p>Si j'ai un conseil, ajoute aussi un lien sur la doc SQL 😉 </p>

        Multiplayer GameDev @ Unexpected
        

        Mon CV

        1 Reply Last reply
        0
        • mars073M
          mars073M
          mars073
          wrote on last edited by
          #4

          <p>j'ai ajouté les liens</p>

          Aide à l'apprentissage et la réalisation pour des graphismes, des programmes, des sites ou autres.Signature aléatoire, proposez vous aussi une signature ici!

          1 Reply Last reply
          0
          • GotaG
            GotaG
            Gota
            wrote on last edited by
            #5

            <p>Merci ça ma beaucoup servit.</p>

            1 Reply Last reply
            0

            Hello! It looks like you're interested in this conversation, but you don't have an account yet.

            Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

            With your input, this post could be even better 💗

            Register Login
            Reply
            • Reply as topic
            Log in to reply
            • Oldest to Newest
            • Newest to Oldest
            • Most Votes


            • Login

            • Login or register to search.
            Powered by NodeBB Contributors
            • First post
              Last post
            0
            • Categories
            • Recent
            • Tags
            • Popular
            • World
            • Users
            • Groups