Aller au contenu

Les commandes de base table mySQL


mars073
 Share

Recommended Posts

Salut all,

j'avais fais un beau tuto bien long et bien expliqué mais je me suis fail et tout a disparu en enfer... D:

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. ^-^

je vais pas refaire tout un truc sur la structure... il était tellement bien mon autre tuto disparu :'(

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).

exemple pour un ajout on utilise: une action, une cible et des valeurs::

#syntaxe: INSERT INTO [CIBLE] ([VARIABLE(S)]) VALUES([VALEURS]);
INSERT INTO `ma_table` (`texte`, `chiffre`) VALUES('Coucou', 123);
Donc:

- la "cible" c'est la table que vous voulez affecter vous pouvez la sélectionner aussi à travers une db (ex: `db_forum`.`ma_table`).

- les variables sont les noms des colonnes dans votre table.

- les valeurs sont les valeurs (._.) que vous donnez aux variables.

> Documentation Mysql::INSERT

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!').

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.

#dans le contexte il y a une variable guid qui sert d'index et l'ordre est: guid, texte, chiffre
INSERT INTO `ma_table` VALUES(NULL, 'Coucou', 123);
"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 ._.

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).

Ce qui donne:

#syntaxe: INSERT INTO [CIBLE] ([VARIABLE(S)]) VALUES([VALEURS]);
INSERT INTO `ma_table` (`texte`, `chiffre`) VALUES('Coucou', 123), ('tu veux?', 456);
vous pouvez en mettre plus mais je ne connais pas la limite :(

maintenant pour modifier des variables: action, cible, variables, nouvelles valeurs, limite (non obligatoire mais c'est une petite sécurité)::

#syntaxe: UPDATE [CIBLE] SET [VARIABLES] = [VALEURS] WHERE [CONDITION] LIMIT 1
#dans le contexte notre commande précédente, a affecté la valeur 58 à `guid`
UPDATE `ma_table` SET `texte` = 'Au revoir', `chiffre` = (`chiffre` + 250) WHERE `guid`= 58 LIMIT 1;
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.

> Documentation Mysql::UPDATE

pour bien illustrer le "WHERE" dans mon exemple précédent je vais vous expliquer le "SELECT" (la sélection, impressionnant non?), la syntace:

SELECT [COLONNE] FROM [CIBLE] WHERE [CONDITION] ORDER BY [ORDRE] LIMIT [LIMIT];
-[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.

-[CIBLE] : La table dans la quelle vous désirez faire votre recherche.

-[CONDITION] : La condition pour que la donnée soit sélectionnée.

-[ORDRE] : Ordre croissant (ASC) ou décroissant (DESC).

-[LIMIT] : La limite de la sélection.

> Documentation Mysql::SELECT

Premier exemple, nous allons sélectionner l'utilisateur dont l' "ID" est 169 dans une table du nom de "users":

SELECT * FROM `users` WHERE `ID` = 169 LIMIT 1;
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

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 :

SELECT `guid`, `title`, `content` FROM `news` WHERE (`title` LIKE '%patate%') OR (`cotent` LIKE '%patate%`) ORDER BY `title` ASC;
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 "%".

il y a aussi l’apparition du "OR" qui signifie "ou", je dis donc à la requête que c'est ça ou ç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.

pour un peu mieux illustrer l'exemple au dessus je vais le "traduite" dans un langage plus un langage plus "humain":

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.
c'est moche et pire à comprendre mais bon il existe des langages en français... ^-^

maintenant la suppression <3

rien de plus simple de mettre fin aux jours de sa création,

comme exemple je vais reprendre l'exemple de l'users 169 ci-dessus et vu qu'il est méchant on va le supprimer:

#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;
/!\ 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.

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.

> Documentation Mysql::DELETE

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":

#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`;
une raison de plus de ne pas avoir de faille sql dans son serveur...

> Documentation Mysql::TRUNCATE

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')

Bonne programmation à tous même si je considère par le SQL comme de la prog,

Mars073. :P

Modifié par mars073
ajout plusieurs ligne en une commande
  • Upvote 3
Lien vers le commentaire
Partager sur d’autres sites

  • 3 weeks later...
  • 2 months later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Invité
Répondre à ce sujet…

×   Vous avez collé du contenu avec mise en forme.   Supprimer la mise en forme

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Chargement
 Share

×
×
  • Créer...