Search the Community
Showing results for tags 'SQL'.
-
Bonjour à tous Pour s'améliorer en SQL selon moi la meilleure façon c'est de pratiquer et faire des erreurs (bien se prendre la tête ). Du coup, je vous met à disposition ce petit travail personnel (niveau BTS, SIO) à disposition. L’énoncé (avec la BDD, affichée) + Le fichier texte pour ouvrir la BDD + La correction si join. Si ça intéresse je peux mettre d'autres TPs. Et si vous avez des questions n'hésitez pas ! Akimace. TP01 - Vol Aérien.pdf BDD.txt Correction.docx
- 9 replies
-
- [Exercices]SQL
- exercice
-
(and 4 more)
Tagged with:
-
Bonsoir, vous n'êtes pas sans savoir que, les hackeurs utilisent une méthode appelée "l'injection sql", qui comme son nom l'indique, permet d'injecté du code sql dans une fonction POST ou GET d'une page php. Elle est souvent utilisé pour contourner des connexion (par exemple, 'OR "="). Mais comment se protégé ? Tout simplement, rajoutez dans votre méthode POST ou GET : mysql_escape_string(); Ce qui donnerais au final (avec la variable et la méthode) : $user = mysql_escape_string($_POST['user']); Voila, j'espère que ça vous auras aidé ! ^^
-
La dernière version de MariaDB il y a peu mais n'est toujours pas disponible dans les dépots officiels de certaines distrubutions de Linux. Heureusement, pour ceux qui désir rester constamment à jour, vous pouvez installer MariaDB 10.0 via des dépots non-officiels comme expliqué ici : https://downloads.mariadb.org/mariadb/repositories. Voici les procédures à suivres pour installer MariaDB 10.0 : Debian 7 : sudo apt-get install python-software-properties sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db sudo add-apt-repository 'deb http://ftp.igh.cnrs.fr/pub/mariadb/repo/10.0/debian wheezy main' sudo apt-get update sudo apt-get install mariadb-server Linux Mint 17 et Ubuntu 14.04 : sudo apt-get install software-properties-common sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db sudo add-apt-repository 'deb http://ftp.igh.cnrs.fr/pub/mariadb/repo/10.0/ubuntu trusty main' sudo apt-get update sudo apt-get install mariadb-server Red Hat EL 7, CentOS 7 et Fedora 20 : Copiez et collez le code suivant dans le fichier /etc/yum.repos.d/ # MariaDB 10.0 RedHat repository list - created 2014-10-09 17:16 UTC # http://mariadb.org/mariadb/repositories/ [mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.0/rhel7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1 Puis exécutez la commande suivante dans votre Shell : sudo yum install MariaDB-server MariaDB-client Mageia : urpmi mariadb systemctl start mysqld.service mysql_secure_installation Arch Linux : pacman -S mariadb systemctl enable mysqld.service systemctl start mysqld.service mysql_secure_installation OpenSUSE : zypper install mariadb
-
Bonjour, ce sujet est très simple car il réside en une ligne. Imaginons que vous devez réunir 12 000 fichiers SQL dans un dossier en un seul fichier SQL. Il suffit de vous rendre dans le dossier (cd /ma/destination/) où sont situés les fichiers et d'effectuer la commande : cat *.sql > fichier.sql Tout simplement.
-
Bonjour, ce guide très court pour vous expliquer comment sauvegarder vos bases de données MySQL en ligne de commandes, pour les stocker dans un fichier. Tout simplement : mysqldump -u root --password=mot_de_passe bdd > dump.sql Vous l'aurez compris, il suffit de remplacer root par son nom d'utilisateur, mot_de_passe par son mot de passe, bdd par sa base de donnée existante et dump.sql sera le nom de votre fichier.
-
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 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.
-
Bonjour à tous, je vais vous faire cette fois un topic sur les tables en elle même. Commençons par la création (le début des temps lulz), connaître ces scripts devient presque obsolète vu les programmes et api disponiblent maintenant mais bon ça peut toujours servir: #syntaxe: CREATE TABLE [NOM] ([VARIABLES+TYPE+PARAMÈTRES])[PARAMÈTRES SUPPLEMENTAIRES]; CREATE TABLE `ma_table` ( `texte` text NOT NULL, `chiffre` int(10) unsigned NOT NULL, ); Donc: >doc- [NOM] = `ma_table` : C'est simplement le nom que vous voulez donner à votre table - [VARIABLES] : Vous devez donner le nom de la variable/colonne, sont type (chiffre, texte, date, ..) la longueur qu'il doit faire, etc. - [PARAMÈTRES SUPP] : paramètre de la table j'en montrerais dans les exemples suivants au niveau des type de variables vous avez: >doc - tinyint : chiffre entier (de -128 à 127) - smallint : chiffre entier (de -32768 à 32767) - mediumint : chiffre entier (de -8388608 à 8388607) - int : chiffre entier (de -2147483648 à 2147483647) - bigint : chiffre entier (de -9223372036854775808 à 9223372036854775807) - float, decimal, double: pour faire simple on va dire chiffre à virgule - bit: chiffre en binaire (ex: 10110010110100100100...) - binary et varbinary : un peut comme bit sauf que la limite attribuée maximale est de 255 bits - date : Attention c'est la date dans le format mysql uniquement (AAAA-MM-JJ), c'est la norme rfc-machin, ex: 1996-06-21 - time : une heure dans le format standard (HH:MM:SS), ex: 20:32:51 - datetime : le format de "date" et "time" séparé par un espace, ex: 199-06-21 20:32:51 - year : l'année en 4 chiffres, ex: 1996 ou 0666 - char : chaîne de caractères de maximum de 255 caractères (ex: "blsdkngki jsngkj rn1121 dgd") - varchar : similaire à "char" sauf dans le fait que "char" considère les cratères vides comme un espaces jusqu'au comment où il arrive à la limite et oui char peut être avantageux au niveau d'utilisation de fonction par exemple - text (tinytext, text, mediumtext et longtext) : simplement de text, je pense que la limite est dynamique malgré ses autres types qui peut changer la consommation de mémoire à mon avis, je regarderais quand j'aurais le temps. - enum : liste de possibilité définie à la place de la limite. - set : similaire à "enum" sauf que plusieurs possibilités peuvent être attribuées à la varible. normalement toute on utilise pour toutes ses variables un limite de caractère (sauf text), on définie celle-ci entre parenthèses à la suite du type, exemple un "int" a une limite par défaut de 10: `chiffre` int(10) ... les types à virgules (float, decimal, ..) peuvent avoir un second paramètre qui est la limite après la virgule exemple avec une limite de 3 avant et 2 après la virgule: `chiffre2` float(3, 2) ... et la dernières exception je pense est "enum", sa limite sont les choix possibles, exemple la variable fruit peut être 3 fruits différents: `fruit` enum("fraise", "pomme", "cranberrys") ... vous vous demandez peut-être pourquoi ne pas utiliser toujours "text" pour du texte par exemple, c'est simple ça évite de bouffer de la mémoire pour rien bien que maintenant les machines sont si puissantes que la perte se compte en nano-secondes (ns) mais bon dans certaines entreprises grattent jusqu'à la plus infime nano-seconde surtout dans les infrastructure réseau... maintenant on va ajouter des paramètres à nos variables avec une valeur par défaut, une auto-incrémentation (A_I), ou déclarer comme ... en cours de rédaction, c'est long et chiant ...
- 1 reply
-
- 3
-
-
- mysql
- gestion table
-
(and 3 more)
Tagged with:
-
Bonjour à tous. Aujourd'hui, je lance le premier concours de programmation, donc pas nécessairement le plus dur. C'est simple, celui-ci sera de coder un site web basique pour aider Akimace dans son projet ! Toutes les informations sont ses besoins sont ici, mais je vais détailler. Langage de programmation du projet : Web : HTML / CSS (obligatoire). PHP, SQL, Javascript et autre (facultatif). Le but est de concevoir un site web de meilleur qualité que celui-ci : Basket Club Solérien (son club de basket). La date limite est le 31 Mars 2014, 23h59. Les participants devront préciser leurs noms, s'ils veulent s'y essayer, et ceux-ci seront inscrit ci-dessus. Les récompenses seront : 20 points de réputation. Le code final sera exposé sur le GitHub de Melinyel, avec les crédits pour l'auteur. J'espère que vous saurez monter vos capacités.