Requête de connexion de requête de données MySQL
- Les relations de connexion sont les principales caractéristiques du modèle de base de données relationnelle. C'est également la requête la plus importante, comprenant principalement les jointures internes, les jointures externes, etc.
- Des requêtes de tables multiples peuvent être implémentées via des opérateurs de connexion.
- Dans un système de gestion de base de données relationnelle, la relation entre chaque donnée n'a pas besoin d'être déterminée lors de l'établissement de la table. Toutes les informations d'une entité sont souvent stockées dans une seule table. Lors de l'interrogation de données, les informations stockées dans différentes entités dans plusieurs tables sont interrogées via des opérations de connexion. Lorsqu'il existe des champs ayant la même signification dans deux tables ou plus, vous pouvez utiliser ces champs pour effectuer des requêtes de jointure sur différentes tables.
Ce qui suit présente trois méthodes de connexion entre plusieurs tables :
(1) Requête de jointure interne
(2) Requête de jointure externe
(3) Conditions composées Requête de connexion
(recommandation d'apprentissage gratuite : tutoriel vidéo mysql )
(1), requête de jointure interne (jointure interne)
- Les jointures internes utilisent des opérateurs de comparaison pour comparer les données de certaines (certaines) colonnes entre les tables et répertorient les lignes de données de ces tables qui correspondent aux conditions de jointure pour former de nouveaux enregistrements, c'est-à-dire que dans la requête de jointure interne, seuls les enregistrements qui remplissent les conditions peut apparaître dans la relation de résultat.
Créez la table de données fournisseurs ci-dessous pour démonstration :
mysql> create table suppliers -> ( -> s_id int not null auto_increment, -> s_name char(50) not null, -> s_city char(50) null, -> s_zip char(10) null, -> s_call char(50) not null, -> primary key(s_id) -> );Query OK, 0 rows affected (0.17 sec)mysql> insert into suppliers(s_id,s_name,s_city,s_zip,s_call) -> values(101,'FastFruit Inc.','Tianjin','300000','48075'), -> (102,'LT Supplies','Chongqing','400000','44333'), -> (103,'ACME','Shanghai','200000','90046'), -> (104,'FNK Inc.','Zhongshan','528437','11111'), -> (105,'Good Set','Taiyuan','030000','22222'), -> (106,'Just Eat Ours','Beijing','010','45678'), -> (107,'DK Inc','Zhengzhou','450000','33332');Query OK, 7 rows affected (0.07 sec)Records: 7 Duplicates: 0 Warnings: 0
[Exemple 1] Utilisez une requête de jointure interne entre la table des fruits et la table des fournisseurs.
mysql> desc fruits;+---------+--------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+---------+--------------+------+-----+---------+-------+| f_id | char(10) | NO | PRI | NULL | || s_id | int(11) | NO | | NULL | || f_name | char(255) | NO | | NULL | || f_price | decimal(8,2) | NO | | NULL | |+---------+--------------+------+-----+---------+-------+4 rows in set (0.06 sec)mysql> desc suppliers;+--------+----------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+--------+----------+------+-----+---------+----------------+| s_id | int(11) | NO | PRI | NULL | auto_increment || s_name | char(50) | NO | | NULL | || s_city | char(50) | YES | | NULL | || s_zip | char(10) | YES | | NULL | || s_call | char(50) | NO | | NULL | |+--------+----------+------+-----+---------+----------------+5 rows in set (0.00 sec)
Vous pouvez voir que les tables de fruits et de fournisseurs ont le même champ de type de données s_id, et que les deux tables sont connectées via le champ s_id.
Ensuite, interrogez les champs f_name et f_price de la table fruits, et interrogez le s_id et s_name de la table des fournisseurs. L'instruction SQL est la suivante :
mysql> select suppliers.s_id,s_name,f_name,f_price -> from fruits,suppliers -> where fruits.s_id=suppliers.s_id;+------+----------------+------------+---------+| s_id | s_name | f_name | f_price |+------+----------------+------------+---------+| 104 | FNK Inc. | lemon | 6.40 || 101 | FastFruit Inc. | apple | 5.20 || 103 | ACME | apricot | 2.20 || 101 | FastFruit Inc. | blackberry | 10.20 || 104 | FNK Inc. | berry | 7.60 || 107 | DK Inc | xxxx | 3.60 || 102 | LT Supplies | orange | 11.20 || 105 | Good Set | melon | 8.20 || 101 | FastFruit Inc. | cherry | 3.20 || 106 | Just Eat Ours | mango | 15.70 || 105 | Good Set | xbabay | 2.60 || 105 | Good Set | xxtt | 11.60 || 103 | ACME | coconut | 9.20 || 102 | LT Supplies | banana | 10.30 || 102 | LT Supplies | grape | 5.30 || 107 | DK Inc | xbabay | 3.60 |+------+----------------+------------+---------+16 rows in set (0.00 sec)
- Remarque : Parce que. les champs de la table fruits et de la table fournisseurs ont le même champ s_id, donc lors de la comparaison, le nom de la table doit être entièrement qualifié au format "nom de la table.nom de la colonne". Si seul s_id est donné, MySQL ne saura pas lequel. celui auquel il fait référence et renverra un message d’erreur.
[Exemple 2] Utilisez la syntaxe de jointure interne pour effectuer une requête de jointure interne entre la table des fruits et la table des fournisseurs. L'instruction SQL est la suivante :
mysql> select suppliers.s_id,s_name,f_name,f_price -> from fruits inner join suppliers -> on fruits.s_id = suppliers.s_id;+------+----------------+------------+---------+| s_id | s_name | f_name | f_price |+------+----------------+------------+---------+| 104 | FNK Inc. | lemon | 6.40 || 101 | FastFruit Inc. | apple | 5.20 || 103 | ACME | apricot | 2.20 || 101 | FastFruit Inc. | blackberry | 10.20 || 104 | FNK Inc. | berry | 7.60 || 107 | DK Inc | xxxx | 3.60 || 102 | LT Supplies | orange | 11.20 || 105 | Good Set | melon | 8.20 || 101 | FastFruit Inc. | cherry | 3.20 || 106 | Just Eat Ours | mango | 15.70 || 105 | Good Set | xbabay | 2.60 || 105 | Good Set | xxtt | 11.60 || 103 | ACME | coconut | 9.20 || 102 | LT Supplies | banana | 10.30 || 102 | LT Supplies | grape | 5.30 || 107 | DK Inc | xbabay | 3.60 |+------+----------------+------------+---------+16 rows in set (0.00 sec)
- Utilisez la définition de la clause Where. Les conditions de connexion sont relativement simples et claires, et la syntaxe de jointure interne est la spécification standard d'ANSI SQL. L'utilisation de la syntaxe de connexion de jointure interne peut garantir que les conditions de connexion ne sont pas oubliées et que la clause Where affectera les performances de la requête. un certain point.
Si les deux tables impliquées dans une requête de jointure sont la même table, ce type de requête est appelé requête d'auto-jointure. L'auto-jointure est une jointure interne spéciale, ce qui signifie que les tables connectées les unes aux autres sont physiquement la même table, mais peuvent être logiquement divisées en deux tables.
[Exemple 3] Interrogez les types de fruits fournis par le fournisseur de fruits fournissant f_id='a1'
L'instruction SQL est la suivante :
mysql> select f1.f_id,f1.f_name -> from fruits as f1,fruits as f2 -> where f1.s_id =f2.s_id and f2.f_id ='a1';+------+------------+| f_id | f_name |+------+------------+| a1 | apple || b1 | blackberry || c0 | cherry |+------+------------+3 rows in set (0.00 sec)
(2), requête de jointure externe<.>
- Les requêtes de jointure externe interrogeront les lignes associées dans plusieurs tables.
- Lors de la jointure interne, seules les lignes de l'ensemble de résultats de la requête qui répondent aux conditions de requête et de connexion sont renvoyées. Mais il est parfois nécessaire d'inclure des données dans des lignes non liées, c'est-à-dire que le jeu de résultats de requête renvoyé inclut non seulement les lignes qui remplissent les conditions de jointure, mais inclut également la table de gauche (jointure externe gauche ou jointure gauche), la table de droite (jointure droite jointure externe ou jointure droite)) ou toutes les lignes de données de deux tables périphériques (jointure externe complète). Les jointures externes sont divisées en jointures externes gauches ou jointures gauches et jointures externes droites ou jointures droites :
②Jointure à droite : renvoie les enregistrements, y compris les enregistrements de la table de droite et les champs de jointure de la table de gauche qui sont égaux.
left join
mysql> create table orders -> ( -> o_num int not null auto_increment, -> o_date datetime not null, -> c_id int not null, -> primary key (o_num) -> );Query OK, 0 rows affected (0.11 sec)mysql> insert into orders(o_num,o_date,c_id) -> values(30001,'2008-09-01',10001), -> (30002,'2008-09-12',10003), -> (30003,'2008-09-30',10004), -> (30004,'2008-10-03',10005), -> (30005,'2008-10-08',10001);Query OK, 5 rows affected (0.06 sec)Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from customers;+-------+----------+---------------------+---------+--------+-----------+-------------------+| c_id | c_name | c_address | c_city | c_zip | c_contact | c_email |+-------+----------+---------------------+---------+--------+-----------+-------------------+| 10001 | redhool | 200 Street | Tianjin | 300000 | LiMing | LMing@163.com || 10002 | Stars | 333 Fromage Lane | Dalian | 116000 | Zhangbo | Jerry@hotmail.com || 10003 | Netbhood | 1 Sunny Place | Qingdao | 266000 | LuoCong | NULL || 10004 | JOTO | 829 Riverside Drive | Haikou | 570000 | YangShan | sam@hotmail.com |+-------+----------+---------------------+---------+--------+-----------+-------------------+4 rows in set (0.00 sec)mysql> select * from orders;+-------+---------------------+-------+| o_num | o_date | c_id |+-------+---------------------+-------+| 30001 | 2008-09-01 00:00:00 | 10001 || 30002 | 2008-09-12 00:00:00 | 10003 || 30003 | 2008-09-30 00:00:00 | 10004 || 30004 | 2008-10-03 00:00:00 | 10005 || 30005 | 2008-10-08 00:00:00 | 10001 |+-------+---------------------+-------+5 rows in set (0.00 sec)mysql> select customers.c_id , orders.o_num -> from customers left outer join orders -> on customers.c_id = orders.c_id;+-------+-------+| c_id | o_num |+-------+-------+| 10001 | 30001 || 10003 | 30002 || 10004 | 30003 || 10001 | 30005 || 10002 | NULL |+-------+-------+5 rows in set (0.00 sec)
right join
- La jointure de droite est la jointure inversée de la jointure de gauche. et renverra toutes les lignes du bon tableau. Si une ligne du tableau de droite n'a aucune ligne correspondante dans le tableau de gauche, le tableau de gauche renverra une valeur nulle.
mysql> select customers.c_id, orders.o_num -> from customers right outer join orders -> on customers.c_id = orders.c_id;+-------+-------+| c_id | o_num |+-------+-------+| 10001 | 30001 || 10003 | 30002 || 10004 | 30003 || NULL | 30004 || 10001 | 30005 |+-------+-------+5 rows in set (0.00 sec)
(3), conditions composées Requête de connexion
- Une requête de connexion conditionnelle complexe consiste à ajouter des conditions de filtrage pour limiter les résultats de la requête pendant le processus de requête de connexion, rendant les résultats de la requête plus précis.
mysql> select customers.c_id,orders.o_num -> from customers inner join orders -> on customers.c_id = orders.c_id and customers.c_id = 10001;+-------+-------+| c_id | o_num |+-------+-------+| 10001 | 30001 || 10001 | 30005 |+-------+-------+2 rows in set (0.00 sec)
mysql> select suppliers.s_id,s_name,f_name,f_price -> from fruits inner join suppliers -> on fruits.s_id = suppliers.s_id -> order by fruits.s_id;+------+----------------+------------+---------+| s_id | s_name | f_name | f_price |+------+----------------+------------+---------+| 101 | FastFruit Inc. | apple | 5.20 || 101 | FastFruit Inc. | blackberry | 10.20 || 101 | FastFruit Inc. | cherry | 3.20 || 102 | LT Supplies | orange | 11.20 || 102 | LT Supplies | banana | 10.30 || 102 | LT Supplies | grape | 5.30 || 103 | ACME | apricot | 2.20 || 103 | ACME | coconut | 9.20 || 104 | FNK Inc. | lemon | 6.40 || 104 | FNK Inc. | berry | 7.60 || 105 | Good Set | melon | 8.20 || 105 | Good Set | xbabay | 2.60 || 105 | Good Set | xxtt | 11.60 || 106 | Just Eat Ours | mango | 15.70 || 107 | DK Inc | xxxx | 3.60 || 107 | DK Inc | xbabay | 3.60 |+------+----------------+------------+---------+16 rows in set (0.00 sec)
.Plus de recommandations d'apprentissage gratuites associées :tutoriel mysql(vidéo)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

MySQL convient aux débutants car il est simple à installer, puissant et facile à gérer les données. 1. Installation et configuration simples, adaptées à une variété de systèmes d'exploitation. 2. Prise en charge des opérations de base telles que la création de bases de données et de tables, d'insertion, d'interrogation, de mise à jour et de suppression de données. 3. Fournir des fonctions avancées telles que les opérations de jointure et les sous-questionnaires. 4. Les performances peuvent être améliorées par l'indexation, l'optimisation des requêtes et le partitionnement de la table. 5. Prise en charge des mesures de sauvegarde, de récupération et de sécurité pour garantir la sécurité et la cohérence des données.

MySQL est un système de gestion de base de données relationnel open source. 1) Créez une base de données et des tables: utilisez les commandes CreateDatabase et CreateTable. 2) Opérations de base: insérer, mettre à jour, supprimer et sélectionner. 3) Opérations avancées: jointure, sous-requête et traitement des transactions. 4) Compétences de débogage: vérifiez la syntaxe, le type de données et les autorisations. 5) Suggestions d'optimisation: utilisez des index, évitez de sélectionner * et utilisez les transactions.

Vous pouvez ouvrir PHPMYADMIN via les étapes suivantes: 1. Connectez-vous au panneau de configuration du site Web; 2. Trouvez et cliquez sur l'icône PHPMYADMIN; 3. Entrez les informations d'identification MySQL; 4. Cliquez sur "Connexion".

Créez une base de données à l'aide de NAVICAT Premium: Connectez-vous au serveur de base de données et entrez les paramètres de connexion. Cliquez avec le bouton droit sur le serveur et sélectionnez Créer une base de données. Entrez le nom de la nouvelle base de données et le jeu de caractères spécifié et la collation. Connectez-vous à la nouvelle base de données et créez le tableau dans le navigateur d'objet. Cliquez avec le bouton droit sur le tableau et sélectionnez Insérer des données pour insérer les données.

MySQL et SQL sont des compétences essentielles pour les développeurs. 1.MySQL est un système de gestion de base de données relationnel open source, et SQL est le langage standard utilisé pour gérer et exploiter des bases de données. 2.MySQL prend en charge plusieurs moteurs de stockage via des fonctions de stockage et de récupération de données efficaces, et SQL termine des opérations de données complexes via des instructions simples. 3. Les exemples d'utilisation comprennent les requêtes de base et les requêtes avancées, telles que le filtrage et le tri par condition. 4. Les erreurs courantes incluent les erreurs de syntaxe et les problèmes de performances, qui peuvent être optimisées en vérifiant les instructions SQL et en utilisant des commandes Explication. 5. Les techniques d'optimisation des performances incluent l'utilisation d'index, d'éviter la numérisation complète de la table, d'optimiser les opérations de jointure et d'améliorer la lisibilité du code.

Vous pouvez créer une nouvelle connexion MySQL dans NAVICAT en suivant les étapes: ouvrez l'application et sélectionnez une nouvelle connexion (CTRL N). Sélectionnez "MySQL" comme type de connexion. Entrez l'adresse Hostname / IP, le port, le nom d'utilisateur et le mot de passe. (Facultatif) Configurer les options avancées. Enregistrez la connexion et entrez le nom de la connexion.

La récupération des lignes supprimées directement de la base de données est généralement impossible à moins qu'il n'y ait un mécanisme de sauvegarde ou de retour en arrière. Point clé: Rollback de la transaction: Exécutez Rollback avant que la transaction ne s'engage à récupérer les données. Sauvegarde: la sauvegarde régulière de la base de données peut être utilisée pour restaurer rapidement les données. Instantané de la base de données: vous pouvez créer une copie en lecture seule de la base de données et restaurer les données après la suppression des données accidentellement. Utilisez la déclaration de suppression avec prudence: vérifiez soigneusement les conditions pour éviter la suppression accidentelle de données. Utilisez la clause WHERE: Spécifiez explicitement les données à supprimer. Utilisez l'environnement de test: testez avant d'effectuer une opération de suppression.

Redis utilise une architecture filetée unique pour fournir des performances élevées, une simplicité et une cohérence. Il utilise le multiplexage d'E / S, les boucles d'événements, les E / S non bloquantes et la mémoire partagée pour améliorer la concurrence, mais avec des limites de limitations de concurrence, un point d'échec unique et inadapté aux charges de travail à forte intensité d'écriture.
