Table des matières
1. Les tableaux sont stockés sous forme de chaînes dans MySQL
2 Exemple de stockage d'un tableau (liste) dans MySQL
Note 1 :
Remarque 2 :
Maison base de données tutoriel mysql MySQL a-t-il des tableaux ?

MySQL a-t-il des tableaux ?

Jun 03, 2023 pm 12:04 PM
mysql

Il n'y a pas de types de tableau dans MySQL. Les éléments du tableau sont généralement divisés par un certain caractère et stockés sous forme de chaîne. La raison pour laquelle il n'y a pas de tableaux dans MYSQL est que la plupart des gens n'en ont pas vraiment besoin. Dans les bases de données relationnelles, utilisant généralement un modèle relationnel, il est préférable d'attribuer chaque unité d'information à une ligne de tableau distincte. Par exemple, on pourrait penser "Je veux une liste de choses" et créer à la place une nouvelle table qui relie les lignes d'une table aux lignes d'une autre table, cela peut représenter une relation "M:N". La base de données peut indexer ces lignes ; les tableaux ne sont généralement pas indexés.

1. Les tableaux sont stockés sous forme de chaînes dans MySQL

Il n'y a pas de types de tableaux dans MySQL. Les éléments du tableau sont généralement divisés par certains caractères et stockés sous forme de chaînes

1.1. d'éléments dans le tableau

Méthode : diviser la chaîne selon le symbole spécifié et renvoyer le nombre d'éléments divisés. Le résultat souhaité peut être obtenu en comptant le nombre de délimiteurs dans la chaîne et en ajoutant 1. La méthode est très simple.

<code>CREATE function Get_StrArrayLength <br/>( <br/>@str varchar(1024), --要分割的字符串 <br/>@split varchar(10) --分隔符号 <br/>) <br/>returns int <br/>as <br/>begin <br/>declare @location int <br/>declare @start int <br/>declare @length int <br/>set @str=ltrim(rtrim(@str)) <br/>set @location=charindex(@split,@str) <br/>set @length=1 <br/>while @location<>0 <br/>begin <br/>set @start=@location+1 <br/>set @location=charindex(@split,@str,@start) <br/>set @length=@length+1 <br/>end <br/>return @length <br/>end<br/></code>
Copier après la connexion

Exemple d'appel :

select  Get_StrArrayLength(&#39;78,1,2,3&#39;,&#39;,&#39;)
Copier après la connexion

Valeur de retour :

4
Copier après la connexion

1.2 Obtenez l'élément à la position spécifiée dans le tableau

Méthode : divisez la chaîne en fonction du symbole spécifié et renvoyez l'élément avec l'index spécifié. après le fractionnement (notez l'index à partir de 1), aussi pratique qu'un tableau

<code>CREATE function Get_StrArrayStrOfIndex <br/>( <br/>@str varchar(1024), --要分割的字符串 <br/>@split varchar(10), --分隔符号 <br/>@index int --取第几个元素 <br/>) <br/>returns varchar(1024) <br/>as <br/>begin <br/>declare @location int <br/>declare @start int <br/>declare @next int <br/>declare @seed int <br/>set @str=ltrim(rtrim(@str)) <br/>set @start=1 <br/>set @next=1 <br/>set @seed=len(@split) <br/>set @location=charindex(@split,@str) <br/>while @location<>0 and @index>@next <br/>begin <br/>set @start=@location+@seed <br/>set @location=charindex(@split,@str,@start) <br/>set @next=@next+1 <br/>end <br/>if @location =0 select @location =len(@str)+1 <br/>--这儿存在两种情况:1、字符串不存在分隔符号 2、字符串中存在分隔符号,跳出while循环后,@location为0,那默认为字符串后边有一个分隔符号。 <br/>return substring(@str,@start,@location-@start) <br/>end<br/></code>
Copier après la connexion

Exemple d'appel :

select  Get_StrArrayStrOfIndex(&#39;8,9,4&#39;,&#39;,&#39;,2)
Copier après la connexion

Valeur de retour :

9
Copier après la connexion

1.3 Combinez les deux fonctions ci-dessus pour parcourir les éléments du tableau

Méthode. : Combinez les deux fonctions ci-dessus, comme Traverser les éléments de la chaîne comme un tableau

<code>declare @str varchar(50) <br/>set @str=&#39;1,2,3,4,5&#39; <br/>declare @next int <br/>set @next=1 <br/>while @next<=Get_StrArrayLength(@str,&#39;,&#39;) <br/>begin <br/>print Get_StrArrayStrOfIndex(@str,&#39;,&#39;,@next) <br/>set @next=@next+1 <br/>end<br/></code>
Copier après la connexion

Résultat de l'appel :

1
2
3
4
5
Copier après la connexion

2 Exemple de stockage d'un tableau (liste) dans MySQL

J'ai deux tables dans MySQL. La table Person a les colonnes suivantes :

id | name | fruits
Copier après la connexion

La colonne fruit peut contenir des chaînes vides ou un tableau comme ("pomme", "orange", "banane") ou ("fraise") etc. La deuxième table est Table Fruit et comporte les trois colonnes suivantes :

____________________________
fruit_name | color  | price
____________________________
apple      | red    | 2
____________________________
orange     | orange | 3
____________________________
...,...
Copier après la connexion

Alors, comment dois-je concevoir la colonne fruits de la première table afin qu'elle puisse contenir le tableau de chaînes qui prend la valeur de la colonne fruit_name de la deuxième table ? Puisqu'il n'y a pas de type de données tableau dans MySQL, que dois-je faire ?

Meilleure réponse :

La bonne méthode consiste à utiliser plusieurs tables et à les joindre dans la requête.

Par exemple : la table

CREATE TABLE person (
`id` INT NOT NULL PRIMARY KEY,
`name` VARCHAR(50)
);
 
CREATE TABLE fruits (
`fruit_name` VARCHAR(20) NOT NULL PRIMARY KEY,
`color` VARCHAR(20),
`price` INT
);
 
CREATE TABLE person_fruit (
`person_id` INT NOT NULL,
`fruit_name` VARCHAR(20) NOT NULL,
PRIMARY KEY(`person_id`, `fruit_name`)
);
Copier après la connexion

person_fruit contient une ligne pour chaque fruit auquel une personne est associée et relie efficacement les tables de personnes et de fruits entre elles.

1 | "banana"
1 | "apple"
1 | "orange"
2 | "straberry"
2 | "banana"
2 | "apple"
Copier après la connexion

Lorsque vous souhaitez récupérer une personne et ses fruits, vous pouvez faire quelque chose comme ceci :

SELECT p.*, f.*
FROM person p
INNER JOIN person_fruit pf
ON p.id = pf.person_id
INNER JOIN fruits f
ON pf.fruit_name = f.fruit_name
Copier après la connexion

Note 1 :

La raison pour laquelle il n'y a pas de tableaux dans SQL est que la plupart des gens n'en ont pas vraiment besoin il. Les bases de données relationnelles (c'est ce qu'est SQL) fonctionnent en utilisant des relations, et la plupart du temps, il est préférable d'avoir une ligne du tableau pour chaque « élément d'information ». Par exemple, vous pourriez penser "Je veux une liste de quelque chose ", mais créez plutôt un nouveau tableau qui relie les lignes d'une table aux lignes d'une autre table Lien . [1] De cette façon, vous pouvez représenter la relation M:N. Un autre avantage est que ces liens n’encombrent pas la ligne contenant l’élément lié. La base de données peut indexer ces lignes. Les tableaux ne sont généralement pas indexés.

Si vous n'avez pas besoin d'une base de données relationnelle, vous pouvez utiliser par exemple un magasin clé-valeur.

"message. Phrase réécrite : Selon la règle d'or, chaque attribut non clé doit fournir des informations correspondantes pour la clé et l'ensemble du fait clé. " Le tableau en fait trop. Il a plusieurs faits, il stocke la commande (ce qui n'a rien à voir avec la relation elle-même). Les performances sont médiocres (voir ci-dessus

Imaginez que vous avez une table de personnes, vous avez une table). table qui peut permettre aux gens d'appeler. Vous pouvez désormais demander à chaque personne d'avoir sa liste de numéros de téléphone, mais chaque personne a de nombreuses autres relations avec beaucoup d'autres choses. Cela signifie-t-il que ma table de personnes doit contenir un tableau de tout ce à quoi elle est connectée ? pas une propriété de la personne elle-même.

[1] : Si la table liée n'a que deux colonnes (la clé primaire de chaque table), cela n'a pas d'importance si la relation elle-même a d'autres propriétés, elle doit être représentée dans ! ce tableau en tant que colonne.

Remarque 2 :

MySQL 5.7 fournit désormais un type de données JSON. Ce nouveau type de données offre une nouvelle façon pratique de stocker des données complexes : listes, dictionnaires, etc.

Le mappage objet-relationnel peut être utilisé. être très complexe, car les Rrays ne sont pas mappés efficacement aux bases de données, historiquement, les gens créaient généralement des tables pour stocker des listes ou des tableaux et ajoutaient chaque valeur en tant qu'enregistrement. La table pouvait n'avoir que 2 ou 3 colonnes, ou en contenir davantage. Colonne. La manière de stocker ces données dépend vraiment des caractéristiques des données

Par exemple, la liste contiendra-t-elle un nombre statique ou dynamique d'entrées, ou la table devrait-elle atteindre des millions d'enregistrements ? de lecture ? Beaucoup d'écriture ? Ce sont tous des facteurs à prendre en compte lorsque vous décidez comment stocker votre collection de données.

De plus, les magasins de données/magasins de fichiers key:value comme Cassandra, MongoDB, Redis, etc. fournissent également une bonne solution. Notez où les données sont réellement stockées (si sur disque ou en mémoire). Toutes les données ne doivent pas nécessairement se trouver dans la même base de données. Certaines données ne correspondent pas bien à une base de données relationnelle et vous pouvez avoir des raisons de les stocker ailleurs, ou vous souhaiterez peut-être utiliser une base de données clé: valeur en mémoire comme cache chaud pour les données stockées quelque part sur le disque ou comme stockage temporaire. comme des séances.

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

MySQL: la facilité de gestion des données pour les débutants MySQL: la facilité de gestion des données pour les débutants Apr 09, 2025 am 12:07 AM

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.

Comment ouvrir phpmyadmin Comment ouvrir phpmyadmin Apr 10, 2025 pm 10:51 PM

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

MySQL: Concepts simples pour l'apprentissage facile MySQL: Concepts simples pour l'apprentissage facile Apr 10, 2025 am 09:29 AM

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.

MySQL et SQL: Compétences essentielles pour les développeurs MySQL et SQL: Compétences essentielles pour les développeurs Apr 10, 2025 am 09:30 AM

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.

Comment créer Navicat Premium Comment créer Navicat Premium Apr 09, 2025 am 07:09 AM

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.

Comment créer une nouvelle connexion à MySQL dans Navicat Comment créer une nouvelle connexion à MySQL dans Navicat Apr 09, 2025 am 07:21 AM

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.

Comment exécuter SQL dans Navicat Comment exécuter SQL dans Navicat Apr 08, 2025 pm 11:42 PM

Étapes pour effectuer SQL dans NAVICAT: Connectez-vous à la base de données. Créez une fenêtre d'éditeur SQL. Écrivez des requêtes ou des scripts SQL. Cliquez sur le bouton Exécuter pour exécuter une requête ou un script. Affichez les résultats (si la requête est exécutée).

Navicat se connecte au code et à la solution d'erreur de base de données Navicat se connecte au code et à la solution d'erreur de base de données Apr 08, 2025 pm 11:06 PM

Erreurs et solutions courantes Lors de la connexion aux bases de données: nom d'utilisateur ou mot de passe (erreur 1045) Blocs de pare-feu Connexion (erreur 2003) Délai de connexion (erreur 10060) Impossible d'utiliser la connexion à socket (erreur 1042) Erreur de connexion SSL (erreur 10055) Trop de connexions Résultat de l'hôte étant bloqué (erreur 1129)

See all articles