Apprenez MySQL / MARIADB pour les débutants - Partie 1

Apprenez MySQL / MARIADB pour les débutants - Partie 1

Dans cet article, nous montrerons comment créer une base de données (également connue sous le nom de schéma), des tables (avec des types de données), et expliquer comment effectuer Langage de manipulation des données (DML) opérations avec des données sur un Mysql / / Mariadb serveur.

Il est supposé que vous avez auparavant 1) installé les packages nécessaires sur votre système Linux et 2) réalisé mysql_secure_installation Pour améliorer la sécurité du serveur de base de données. Sinon, suivez les guides ci-dessous pour installer le serveur MySQL / MARIADB.

  1. Installez la dernière base de données MySQL dans les systèmes Linux
  2. Installez la dernière base de données MARIADB dans Linux Systems

Par la brièveté, nous nous référerons à Mariadb exclusivement tout au long de cet article, mais les concepts et les commandes décrits ici s'appliquent à Mysql aussi.

Partie 1: Apprenez MySQL / Mariadb pour les débutants Partie 2: Apprenez à utiliser plusieurs fonctions de MySQL et MariaDB

Création de bases de données, de tables et d'utilisateurs autorisés

Comme vous le savez, une base de données peut être définie en termes simples comme une collection organisée d'informations. Notamment, Mariadb est un système de gestion de la base de données relationnelle (SRBDS) et utilise le langage de requête de structure pour effectuer des opérations sur les bases de données. De plus, gardez à l'esprit que MariaDB utilise la base de données et le schéma termes de manière interchangeable.

Pour stocker des informations persistantes dans une base de données, nous utiliserons les tables qui stockent des rangées de données. Souvent, deux tables ou plus seront liées les unes aux autres d'une manière ou d'une autre. Cela fait partie de l'organisation qui caractérise l'utilisation de bases de données relationnelles.

Création d'une nouvelle base de données

Pour créer une nouvelle base de données nommée Books db, Entrez l'invite MariaDB avec la commande suivante (vous serez invité à entrer le mot de passe pour l'utilisateur de Root MariaDB):

[[Protégé par e-mail] ~] # mysql -u root -p Entrez le mot de passe: bienvenue dans le moniteur MariADB. Les commandes se terminent avec; ou \ g. Votre ID de connexion MARIADB est 2 Version du serveur: 10.1.14-MariaDB Mariadb Server Copyright (C) 2000, 2016, Oracle, Mariadb Corporation AB et autres. Type 'help;' ou '\ h' pour obtenir de l'aide. Tapez '\ c' pour effacer l'instruction de saisie actuelle. MariaDb [(aucun)]> Créer une base de données BookStoredB; Requête ok, 1 rangée affectée (0.00 sec) mariaDb [(aucun)]> 

Une fois la base de données créée, nous devons créer au moins deux tables dessus. Mais explorons d'abord le concept de types de données.

Présentation des types de données MARIADB

Comme nous l'avons expliqué plus tôt, les tables sont des objets de base de données où nous garderons des informations persistantes. Chaque tableau se compose de deux champs ou plus (également connus sous le nom Colonnes) d'un type de données donné (le type d'informations) que ce champ peut stocker.

Les types de données les plus courants dans MARIADB sont les suivants (vous pouvez consulter la liste complète dans la documentation officielle de MariADB):

Numérique:
  1. Booléen considère 0 comme faux et toute autre valeur comme vraie.
  2. Minuscule, S'il est utilisé avec signé, couvre la plage de -128 à 127, tandis que la plage non signée est de 0 à 255.
  3. Petit, S'il est utilisé avec signé, couvre la plage de -32768 à 32767. La plage non signée est de 0 à 65535.
  4. Int, S'il est utilisé avec non signé, couvre la plage de 0 à 4294967295 et -2147483648 au 2147483647.

Note: Dans Tinyint, SmallInt et INT, la valeur par défaut est supposée.

Double (m, d), où M est le nombre total de chiffres et D est le nombre de chiffres après le point décimal, représente un numéro de point flottant à double précision. Si non signé est spécifié, des valeurs négatives ne sont pas autorisées.

Chaîne:
  1. Varchar (m) représente une chaîne de longueur variable où M est la longueur de colonne maximale autorisée en octets (65 535 en théorie). Dans la plupart des cas, le nombre d'octets est identique au nombre de caractères, à l'exception de certains caractères qui peuvent prendre jusqu'à 3 octets. Par exemple, la lettre espagnole ñ représente un personnage mais prend 2 octets.
  2. Texte (M) représente une colonne avec une longueur maximale de 65 535 caractères. Cependant, comme cela se produit avec Varchar (m), La longueur maximale réelle est réduite si les caractères multi-octets sont stockés. Si M est spécifié, la colonne est créée comme le plus petit type qui peut stocker ce nombre de caractères.
  3. Moyen-texte (M) et LongText (M) sont similaires à Texte (M), seulement que les longueurs maximales autorisées sont de 16 777 215 et 4 294 967 295 caractères, respectivement.
Date et l'heure:
  1. DATE représente la date dans Yyyy-mm-dd format.
  2. TEMPS représente le temps dans HH: MM: SS.SSS Format (heure, minutes, secondes et millisecondes).
  3. DateTime est la combinaison de DATE et TEMPS dans Yyyy-mm-dd hh: mm: ss format.
  4. Horodatage est utilisé pour définir le moment où une ligne a été ajoutée ou mise à jour.

Après avoir examiné ces types de données, vous serez dans une meilleure position pour déterminer le type de données dont vous avez besoin pour attribuer à une colonne donnée dans un tableau.

Par exemple, le nom d'une personne peut facilement s'adapter à un Varchar (50), alors qu'un article de blog aura besoin d'un TEXTE Tapez (choisissez M Selon vos besoins spécifiques).

Création de tables avec des clés primaires et étrangères

Avant de plonger dans la création de tables, il existe deux concepts fondamentaux sur les bases de données relationnelles que nous devons examiner: primaire et étranger clés.

UN clé primaire contient une valeur qui identifie de manière unique chaque ligne ou enregistrement dans le tableau. D'un autre côté, un clé étrangère est utilisé pour créer un lien entre les données dans deux tables et pour contrôler les données qui peuvent être stockées dans le tableau où se trouve la clé étrangère. Les clés primaires et étrangères sont généralement INTS.

Pour illustrer, utilisons le Libs et créer deux tables nommées Auteur et Bookstbl comme suit. Le Pas nul la contrainte indique que le champ associé nécessite une valeur autre que NUL.

Aussi, INCRÉMENTATION AUTOMATIQUE est utilisé pour augmenter en une valeur de Int colonnes de clé primaire lorsqu'un nouvel enregistrement est inséré dans la table.

MariaDb [(aucun)]> Utilisez BookStoredB; MariaDb [(aucun)]> Créer une table AuthorStBL (AuthorId int Not Null Auto_increment, Authorname Varchar (100), Clé primaire (AuthorId)); MariaDb [(aucun)]> Créer une table Bookstbl (bookid int not null auto_increment, bookname varchar (100) pas null, authorId int null, bookprice décimal (6,2) pas null, bookLastupdated timestamp, bookisavailable boolean, primaire (bookid), foreign key (autorid) Références AuthorStBL (AuthorId)); 
Créez des tables MySQL avec une clé primaire et étrangère
MariaDb [(aucun)]> Utilisez BookStoredB; La base de données a changé MariADB [BookStoredB]> Créer une table AuthorStBL (-> AuthorId int not null Auto_inCment, -> AuthorName Varchar (100), -> Clé primaire (AuthorId) ->); Requête ok, 0 lignes affectées (0.05 SEC) MARIADB [BookStoredB]> Créer une table Bookstbl (-> bookid int not null Auto_increment, -> bookname varchar (100) pas null, -> AuthorId int not null, -> bookPrice Decimal (6,2) pas null, -> booklastupdatedampd, -> bookisavaillable boolean , -> Clé primaire (bookid), -> clé étrangère (auteur) références AuthorStBl (autorise) ->); Requête ok, 0 lignes affectées (0.05 SEC) MARIADB [BookStoredB]> 

Maintenant, nous pouvons aller de l'avant et commencer à insérer des enregistrements dans Auteur et Bookstbl.

Sélection, insertion, mise à jour et supprimer des lignes

Nous allons d'abord peupler le Auteur tableau. Pourquoi? Parce que nous devons avoir des valeurs pour Auteur avant d'insérer des enregistrements dans le Bookstbl.

Exécutez la requête suivante de votre invite MariaDB:

MariaDb [BookStoredB]> Insérer dans les valeurs AuthorStBl (Authorname) ('Agatha Christie'), ('Stephen King'), ('Paulo Coelho'); 

Après cela, nous sélectionnerons tous les enregistrements de Auteur. N'oubliez pas que nous aurons besoin du Auteur pour chaque enregistrement pour créer le INSÉRER interroger Bookstbl.

Si vous souhaitez récupérer un enregistrement à la fois, vous pouvez utiliser un clause pour indiquer une condition qu'une ligne doit rencontrer pour être retournée. Par exemple,

MariaDB [BookStoredB]> Sélectionnez * à partir de l'auteur où authorname = "Agatha Christie"; 

Alternativement, vous pouvez sélectionner tous les enregistrements simultanément:

MariaDB [BookStoredB]> SELECT * dans AuthorStBL; 
Sélectionnez et interrogez l'enregistrement dans MySQL
MariaDB [BookStoredB]> Sélectionnez * à partir de l'auteur où authorname = "Agatha Christie"; +----------+-----------------+ | Auteur | Authorname | + ---------- + ----------------- + | 1 | Agatha Christie | + ---------- + ----------------- + 1 ligne en set (0.00 sec) Mariadb [BookStoredB]> SELECT * dans AuthorStBL; +----------+-----------------+ | Auteur | Authorname | + ---------- + ----------------- + | 1 | Agatha Christie | | 2 | Stephen King | | 3 | Paulo Coelho | + ---------- + ----------------- + 3 lignes en jeu (0.00 sec) Mariadb [BookStoredB]> 
Sélectionnez et interrogez une chaîne dans la base de données MySQL

Maintenant, créons le INSÉRER interroger Bookstbl, en utilisant le correspondant Auteur Pour correspondre à l'auteur de chaque livre. Une valeur de 1 dans Booksavailable indique que le livre est en stock, 0 sinon:

MariaDB [BookStoredB]> Insérer dans BookstBl (BookName, Authorid, BookPrice, Bookisavailable) Valeurs («Et puis il n'y en avait pas», 1, 14.95, 1), («L'homme en costume brun», 1, 23.99, 1), («The Stand», 2, 35.99, 1), («Pet Sematary», 2, 17.95, 0), («The Green Mile», 2, 29.99, 1), («The Alchemist», 3, 25, 1), («Par la rivière Piedra, je me suis assis et pleuré», 3, 18.95, 0); 
Insérer la requête dans la table MySQL
MariaDB [BookStoredB]> Insérer dans BookStBl (BookName, AuthorId, BookPrice, Bookisavailable) -> VALEUR («Et puis il n'y en avait pas», 1, 14.95, 1), -> («L'homme en costume brun», 1, 23.99, 1), -> ('The Stand', 2, 35.99, 1), -> ('Pet Sematary', 2, 17.95, 0), -> ('The Green Mile', 2, 29.99, 1), -> ('The Alchemist', 3, 25, 1), -> ('par la rivière Piedra, je me suis assis et pleuré', 3, 18.95, 0); Requête ok, 7 rangées affectées (0.03 SEC) RECORDS: 7 DUPLICATION: 0 AVERTISSEMENTS: 0 

À ce stade, nous ferons un SÉLECTIONNER Pour voir les enregistrements dans Bookstbl. Alors allons MISE À JOUR le prix de "L'alchimiste" par Paulo Coelho et SÉLECTIONNER Ce record spécifique à nouveau.

Notez comment le BookLastupdated Le champ montre maintenant une valeur différente. Comme nous l'avons expliqué plus tôt, un Horodatage Le champ montre la valeur lorsque l'enregistrement a été inséré ou pour la dernière modification.

MariaDB [BookStoredB]> SELECT * FROM BookSTBL; MariaDB [BookStoredB]> Mettre à jour le set bookstbl bookPrice = 22.75 où bookid = 6; MariaDB [BookStoredB]> SELECT * FROM BookSTBL Where BookId = 6; 
Insérer la table de requête et de mise à jour dans la base de données MySQL
MariaDB [BookStoredB]> SELECT * FROM BookSTBL; +--------+-----------------------------------------+----------+-----------+---------------------+-----------------+ | Bookid | BookName | Auteur | BookPrice | BookLastupdated | Bookisavailable | + -------- + ---------------------------------------- - + ---------- + ----------- + --------------------- + --- -------------- + | 1 | Et puis il n'y en avait pas | 1 | 14.95 | 2016-10-01 23:31:41 | 1 | | 2 | L'homme en costume brun | 1 | 23.99 | 2016-10-01 23:31:41 | 1 | | 3 | Le stand | 2 | 35.99 | 2016-10-01 23:31:41 | 1 | | 4 | Sematary pour animaux de compagnie | 2 | 17.95 | 2016-10-01 23:31:41 | 0 | | 5 | Le mile vert | 2 | 29.99 | 2016-10-01 23:31:41 | 1 | | 6 | L'alchimiste | 3 | 25.00 | 2016-10-01 23:31:41 | 1 | | 7 | Par la rivière Piedra, je me suis assis et j'ai pleuré | 3 | 18.95 | 2016-10-01 23:31:41 | 0 | + -------- + ---------------------------------------- - + ---------- + ----------- + --------------------- + --- -------------- + 7 rangées en jeu (0.00 sec) Mariadb [BookStoredB]> Mettre à jour le set bookstbl bookPrice = 22.75 où bookid = 6; Requête ok, 1 rangée affectée (0.04 SEC) Rows Matchés: 1 Modification: 1 Avertissement: 0 MariaDB [BookStoredB]> SELECT * FROM BookSTBL Where BookId = 6; +--------+---------------+----------+-----------+---------------------+-----------------+ | Bookid | BookName | Auteur | BookPrice | BookLastupdated | Bookisavailable | + -------- + --------------- + ---------- + ----------- + - -------------------- + ----------------- + | 6 | L'alchimiste | 3 | 22.75 | 2016-10-01 23:35:00 | 1 | + -------- + --------------- + ---------- + ----------- + - -------------------- + ----------------- + 1 ligne en jeu (0.00 sec) Mariadb [BookStoredB]> 
Insérer et mettre à jour l'enregistrement de la table de base de données

Bien que nous ne le fassions pas ici, vous pouvez également supprimer un enregistrement s'il n'est plus utilisé. Par exemple, supposons que nous voulons supprimer "L'alchimiste" depuis Bookstbl.

Pour ce faire, nous utiliserons le SUPPRIMER Déclaration comme suit:

MariaDB [BookStoredB]> Supprimer de BookstBl où bookid = 6; 

Comme dans le cas de MISE À JOUR, c'est une bonne idée de faire un SÉLECTIONNER d'abord afin de visualiser l'enregistrement qui peut potentiellement être affecté par le SUPPRIMER.

Aussi, n'oubliez pas d'ajouter le clause et une condition (Bookid = 6) Pour sélectionner l'enregistrement spécifique à supprimer. Sinon, vous courez le risque de supprimer toutes les lignes du tableau!

Si vous souhaitez concaténer deux (ou plus) champs, vous pouvez utiliser le Concat déclaration. Par exemple, disons que nous voulons retourner un ensemble de résultats qui se compose d'un champ avec le nom du livre et l'auteur sous la forme de «L'alchimiste (Paulo Coelho)»Et une autre colonne avec le prix.

Cela nécessitera un REJOINDRE entre Auteur et Bookstbl sur le champ commun partagé par les deux tables (Auteur):

MariaDB [BookStoredB]> Sélectionnez Concat (BookstBl.BookName, '(', Authorstbl.Authorname, ')') comme description, bookstbl.BookPrice de AuthorStBl rejoignez BookstBl sur AuthorStBl.Authorid = BookstBl.Auteur; 

Comme on peut le voir, Concat nous permet de rejoindre plusieurs expressions de chaîne séparées par des virgules. Vous avez également remarqué que nous avons choisi l'alias Description pour représenter l'ensemble de résultats de la concaténation.

La sortie de la requête ci-dessus est indiquée dans l'image ci-dessous:

Interroger plusieurs champs dans la table MySQL
MariaDB [BookStoredB]> Sélectionnez Concat (BookstBl.BookName, '(', Authorstbl.Authorname, ')') comme description, bookstbl.BookPrice de AuthorStBl rejoignez BookstBl sur AuthorStBl.Authorid = BookstBl.Auteur; +--------------------------------------------------------+-----------+ | Description | BookPrice | + ------------------------------------------------- ------- + ----------- + | Et puis il n'y en avait pas (Agatha Christie) | 14.95 | | L'homme en costume brun (Agatha Christie) | 23.99 | | Le stand (Stephen King) | 35.99 | | Pet Sematary (Stephen King) | 17.95 | | Le mile vert (Stephen King) | 29.99 | | L'alchimiste (Paulo Coelho) | 25.00 | | Par la rivière Piedra, je me suis assis et j'ai pleuré (Paulo Coelho) | 18.95 | + ------------------------------------------------- ------- + ----------- + 7 rangées en jeu (0.00 sec) 
Interroger plusieurs champs dans la table de base de données

Créer un utilisateur pour accéder à la base de données BookstoredB

En utilisant racine Pour effectuer tout DML Les opérations dans une base de données sont une mauvaise idée. Pour éviter cela, nous pouvons créer un nouveau Mariadb Compte d'utilisateur (nous allons le nommer librairie) et attribuer toutes les autorisations nécessaires pour Libs:

MariaDB [BookStoredB]> Créer un utilisateur [Protégé par e-mail] identifié par «YourPasswordHere»; MariaDB [BookStoredB]> Accorder tous les privilèges sur BookStoredB.* à [e-mail protégé]; MariaDB [BookStoredB]> Privilèges de rinçage; 
Créer un nouvel utilisateur de base de données avec des privilèges
MariaDB [BookStoredB]> Créer un utilisateur [Protégé par e-mail] identifié par «Tecmint»; Requête ok, 0 lignes affectées (0.00 sec) Mariadb [BookStoredB]> Accorder tous les privilèges sur BookStoredB.* à [e-mail protégé]; Requête ok, 0 lignes affectées (0.00 sec) Mariadb [BookStoredB]> Privilèges de rinçage; Requête ok, 0 lignes affectées (0.00 sec) 

Le fait d'avoir un utilisateur dédié et séparé pour chaque base de données empêchera les dommages à l'ensemble de la base de données si un seul compte est compromis.

Conseils supplémentaires

Pour éliminer le Mariadb Invite, tapez la commande suivante et appuyez sur Entrer:

MariaDB [BookStoredB]> \! clair 

Pour inspecter la configuration d'une table donnée, faites:

MariaDB [BookStoredB]> Sélectionnez les colonnes dans [Nom de la table ici]; 

Par exemple,

MariaDB [BookStoredB]> Afficher les colonnes dans BookstBl; 
Liste des colonnes dans la table de base de données
MariaDB [BookStoredB]> Afficher les colonnes dans BookstBl; +-----------------+--------------+------+-----+-------------------+-----------------------------+ | Champ | Type | NULL | Clé | Par défaut | Extra | + ----------------- + -------------- + ------ + ----- + --- ---------------- + ----------------------------- + | Bookid | int (11) | Non | Pri | NULL | auto_increment | | BookName | varchar (100) | Non | | NULL | | | Auteur | int (11) | Non | Mul | NULL | | | BookPrice | décimal (6,2) | Non | | NULL | | | BookLastupdated | Timestamp | Non | | Current_timestamp | sur Update Current_timestamp | | Bookisavailable | Tinyint (1) | Oui | | NULL | | + ----------------- + -------------- + ------ + ----- + --- ---------------- + ----------------------------- + 6 rangées set (0.02 SEC) 
Liste des colonnes dans la table de base de données

Une inspection rapide révèle que le Booksavailable Field admet NUL valeurs. Puisque nous ne voulons pas autoriser cela, nous MODIFIER le tableau comme suit:

MariaDB [BookStoredB]> Alter Table BookstBl modifie Bookisavailable Boolean pas nul; 

(N'hésitez pas à afficher à nouveau les colonnes - la mise en évidence OUI dans l'image ci-dessus devrait maintenant être un NON).

Enfin, pour afficher toutes les bases de données de votre serveur, faites:

MariaDB [BookStoredB]> Afficher des bases de données; OU MariaDB [BookStoredB]> Montrer des schémas; 
Répertoriez toutes les bases de données MySQL
[[Protégé par e-mail] ~] # mysql -u librairie -p Entrez le mot de passe: bienvenue dans le moniteur MariADB. Les commandes se terminent avec; ou \ g. Votre ID de connexion MARIADB est 3 Version du serveur: 10.1.14-MariaDB Mariadb Server Copyright (C) 2000, 2016, Oracle, Mariadb Corporation AB et autres. Type 'help;' ou '\ h' pour obtenir de l'aide. Tapez '\ c' pour effacer l'instruction de saisie actuelle. MariaDB [BookStoredB]> Afficher des bases de données; +--------------------+ | Base de données | + -------------------- + | BookStoredB | | information_schema | + -------------------- + 2 rangées en jeu (0.00 sec) Mariadb [BookStoredB]> Montrer des schémas; +--------------------+ | Base de données | + -------------------- + | BookStoredB | | information_schema | + -------------------- + 2 rangées en jeu (0.00 sec) 

L'image suivante montre le résultat de la commande ci-dessus après avoir accédé à l'invite mariaDB comme le librairie (Notez comment ce compte ne peut pas «voir» d'autres bases de données autres que Libs et information_schema (Disponible pour tous les utilisateurs):

Répertoriez toutes les bases de données MySQL

Résumé

Dans cet article, nous avons expliqué comment courir DML opérations et comment créer une base de données, des tables et des utilisateurs dédiés sur une base de données MARIADB. De plus, nous avons partagé quelques conseils qui peuvent vous faciliter la vie en tant qu'administrateur système / base de données.

  1. Partie d'administration de la base de données MySQL - 1
  2. Partie d'administration de la base de données MySQL - 2
  3. Mysql Performance Tunning and Optimization - Partie 3

Si vous avez des questions sur cet article, n'hésitez pas à nous le faire savoir! N'hésitez pas à utiliser le formulaire de commentaire ci-dessous pour nous joindre.