Introduction
- Je m'en fiche.
- MySQL est un système de gestion de bases de données relationnelles (SGBDR). Il s'agit d'un système de base de données open source, multi-utilisateurs et multithread qui permet de stocker et de gérer des données structurées dans des tables. Il utilise le Structured Query Language (SQL) pour gérer et manipuler les données.
Principales fonctionnalités de MySQL :
- Open Source
- Multiplateforme
-
Base de données relationnelle : MySQL est basé sur un modèle de base de données relationnelle, qui stocke les données dans des tables (également appelées relations).
-
Haute performance : il est optimisé pour la vitesse et peut gérer efficacement une grande quantité de données.
-
ACID Compliant : MySQL prend en charge les propriétés ACID (Atomicity, Consistency, Isolation, Durability), garantissant que les transactions de base de données sont traitées de manière fiable.
- Atomicité garantit qu'une transaction est traitée comme une unité unique et indivisible. Soit toutes les opérations d'une transaction sont terminées avec succès, soit aucune d'entre elles n'est appliquée. Autrement dit, une transaction est atomique : c'est du « tout ou rien ».
- La cohérence garantit qu'une transaction fait passer la base de données d'un état valide à un autre état valide. Après une transaction, toutes les données doivent être dans un état cohérent, adhérant à toutes les règles, contraintes et relations définies.
- L'isolement garantit que les transactions sont exécutées indépendamment les unes des autres, même si elles se produisent simultanément. Chaque transaction doit être exécutée comme s'il s'agissait de la seule transaction en cours de traitement, évitant ainsi l'interférence d'autres transactions.
- La durabilité garantit qu'une fois qu'une transaction est validée, elle est permanente, même en cas de pannes du système comme des pannes de courant ou des crashs. Les modifications apportées par la transaction sont enregistrées sur le disque et survivront à tout échec ultérieur.
-
Accès multi-utilisateur : MySQL permet à plusieurs utilisateurs d'accéder simultanément à la base de données sans affecter les performances.
Mots-clés SQL
CRÉER
-
CRÉER UNE BASE DE DONNÉES
- La commande CREATE DATABASE permet de créer une nouvelle base de données. Dans Mongoose, vous n'avez pas besoin de créer explicitement une base de données ; il est automatiquement créé lorsque vous vous connectez à la base de données.
// DB is created if it doesn't exist
mongoose.connect('mongodb://localhost/my_database');
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
CREATE DATABASE my_database;
Copier après la connexion
Copier après la connexion
Copier après la connexion
-
UTILISER LA BASE DE DONNÉES
- Le USE DB_NAME est utilisé pour sélectionner la base de données à utiliser. Dans Mongoose, ceci est géré par la chaîne de connexion.
mongoose.connect('mongodb://localhost/my_database');
Copier après la connexion
Copier après la connexion
Copier après la connexion
USE my_database;
Copier après la connexion
Copier après la connexion
Copier après la connexion
-
CRÉER UNE TABLE
- La commande CREATE TABLE permet de créer une nouvelle table dans la base de données. Dans Mongoose, cela revient à créer une nouvelle collection.
// DB is created if it doesn't exist
mongoose.connect('mongodb://localhost/my_database');
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
CREATE DATABASE my_database;
Copier après la connexion
Copier après la connexion
Copier après la connexion
-
CRÉER UN INDEX
- La commande CREATE INDEX est utilisée pour créer un index sur une table afin d'améliorer les performances des requêtes. Dans MongoDB, c'est la même chose.
mongoose.connect('mongodb://localhost/my_database');
Copier après la connexion
Copier après la connexion
Copier après la connexion
USE my_database;
Copier après la connexion
Copier après la connexion
Copier après la connexion
DÉCRIRE
- Utilisé en SQL pour visualiser la structure d'une table (ses colonnes, types de données, contraintes, etc.). Exemple Mongoose : Dans MongoDB, il n'y a pas d'équivalent direct à DESCRIBE. Cependant, vous pouvez inspecter un schéma par programmation.
mongoose.model('User', UserSchema);
Copier après la connexion
Copier après la connexion
CREATE TABLE Users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) NOT NULL UNIQUE
);
Copier après la connexion
Copier après la connexion
INSÉRER
- La commande INSERT INTO est utilisée pour insérer de nouvelles lignes dans un tableau. En mangouste, vous insérez un nouveau document dans une collection/(Modèle).
UserSchema.index({ email: 1 }); // Unnamed Index
UserSchema.index({ email: 1 }, { name: 'idx_email' }); // Named Index
Copier après la connexion
Copier après la connexion
-- Syntax: CREATE INDEX index_name ON table_name (column_name);
CREATE INDEX idx_email ON Users (email); -- Named Index
CREATE INDEX ON Users (email); -- Unnamed Index
Copier après la connexion
Copier après la connexion
SÉLECTIONNER
- L'instruction SELECT en SQL est utilisée pour récupérer des données d'une base de données. Dans Mongoose, cela équivaut à utiliser la méthode .find() pour interroger une collection.
console.log(UserSchema.paths);
// Outputs details about the schema fields and types
Copier après la connexion
Copier après la connexion
DESCRIBE Users;
Copier après la connexion
Copier après la connexion
MISE À JOUR
- L'instruction UPDATE est utilisée pour modifier les enregistrements existants dans une table. Dans Mangouste, vous utilisez find et update ou .update()
// In mongoose its equivalent to .save() or .create();
const newUser = new User({ name: 'John Doe', email: 'john@example.com' });
newUser.save()
Copier après la connexion
Copier après la connexion
INSERT INTO Users (name, email)
VALUES ('John Doe', 'john@example.com');
Copier après la connexion
Copier après la connexion
SUPPRIMER
- L'instruction DELETE est utilisée pour supprimer les enregistrements existants dans une table. Dans Mangouste, nous utiliserions deleteOne, deleteMany ou find et delete.
const users = await User.find(); // Fetches all users
const { name, email } = await User.findById(1); // Fetches user with id = 1
Copier après la connexion
Copier après la connexion
SELECT * FROM Users; -- all users
SELECT name, email FROM Users WHERE id = 1; -- user of id 1
Copier après la connexion
Copier après la connexion
MODIFIER
- L'instruction ALTER TABLE en SQL est utilisée pour modifier la structure d'une table existante (ajouter une colonne, supprimer une colonne et modifier une colonne).
Dans Mongoose, l'opération équivalente consisterait à modifier le schéma pour inclure le nouveau champ, puis à gérer les mises à jour des documents existants si nécessaire.
// update all user of name kb
const query = { name: "kb" };
User.update(query, { name: "thekbbohara" })
Copier après la connexion
Copier après la connexion
-- update all user of name kb
UPDATE Users
SET name = "thekbbohara", email = "thekbbohara@gmail.com"
WHERE name = "kb";
Copier après la connexion
Copier après la connexion
REJOINDRE
- Une clause JOIN est utilisée pour combiner des lignes de deux tables ou plus, en fonction d'une colonne liée entre elles. Dans MongoDB, les jointures ne sont pas supportées nativement comme dans les bases de données relationnelles. Au lieu de cela, vous utilisez généralement des pipelines d'agrégation comme $lookup pour des fonctionnalités similaires.
User.deleteOne({ _id: 1 })
// All users whose name is notKb will be deleted.
User.deleteMany({ name: "notKb" })
Copier après la connexion
JOINTURE INTERNE
- Le mot-clé INNER JOIN sélectionne les enregistrements qui ont des valeurs correspondantes dans les deux tables.
DELETE FROM Users WHERE id = 1;
DELETE FROM Users WHERE name = "notKb"
-- All users whose name is notKb will be deleted.
Copier après la connexion
REJOINDRE À GAUCHE
- Le mot-clé LEFT JOIN renvoie tous les enregistrements de la table de gauche (table1) et les enregistrements correspondants (le cas échéant) de la table de droite (table2).
// Update the UserSchema to add the 'age' field
const UserSchema = new mongoose.Schema({
name: String,
email: String,
age: Number, // New field
});
Copier après la connexion
REJOINDRE À DROITE
- Le mot-clé RIGHT JOIN renvoie tous les enregistrements de la table de droite (table2) et les enregistrements correspondants (le cas échéant) de la table de gauche (table1).
-- Adds an 'age' column to the Users table
ALTER TABLE Users ADD age INT;
-- Delete 'Email' column from Users table
ALTER TABLE Users DROP COLUMN email;
-- Makes 'id' column unsigned and auto-incrementing
ALTER TABLE Users MODIFY COLUMN id INT UNSIGNED AUTO_INCREMENT;
Copier après la connexion
JOINTION CROISÉE
- Le mot-clé CROSS JOIN renvoie tous les enregistrements des deux tables (table1 et table2).
// DB is created if it doesn't exist
mongoose.connect('mongodb://localhost/my_database');
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
TYPES DE DONNÉES
Dans MySQL, il existe trois types de données principaux : chaîne, numérique et date et heure. Mais dans MongoDB, il existe une variété de types de données, mais ils diffèrent de ceux de MySQL. MongoDB utilise BSON (Binary JSON) pour stocker les données, qui prend en charge un riche ensemble de types de données. Voici une comparaison des types de données courants dans MySQL et MongoDB :
Types de données de chaîne
MySQL |
MongoDB (BSON) |
Notes |
CHAR, VARCHAR
|
String |
Both store textual data. MongoDB's String is analogous to VARCHAR. |
TEXT, TINYTEXT, etc. |
String |
No separate TEXT type in MongoDB; all textual data is stored as String. |
Types de données numériques
MySQL |
MongoDB (BSON) |
Notes |
INT, SMALLINT, etc. |
NumberInt |
Represents 32-bit integers. |
BIGINT |
NumberLong |
Represents 64-bit integers. |
FLOAT, DOUBLE
|
NumberDouble |
Represents floating-point numbers. |
DECIMAL, NUMERIC
|
String or custom |
MongoDB doesn't have an exact equivalent; use String for precision. |
Types de données de date et d'heure
MySQL |
MongoDB (BSON) |
Notes |
DATE |
Date |
Both store date-only values. |
DATETIME, TIMESTAMP
|
Date |
MongoDB stores both date and time as a Date object. |
TIME |
String or custom |
MongoDB does not have a direct TIME type; store as String if needed. |
YEAR |
String or Int
|
Represented using String or NumberInt. |
Types de données booléens
MySQL |
MongoDB (BSON) |
Notes |
BOOLEAN, TINYINT(1)
|
Boolean |
Both store true/false values. |
Types de données binaires
MySQL |
MongoDB (BSON) |
Notes |
BLOB, TINYBLOB, etc. |
BinData |
MongoDB's BinData is used for storing binary data like files. |
Types de données JSON/tableau
MySQL |
MongoDB (BSON) |
Notes |
JSON |
Object |
MongoDB natively stores JSON-like documents as Object. |
N/A |
Array |
MongoDB has a native Array type for storing lists of values. |
Autres types de données
MySQL |
MongoDB (BSON) |
Notes |
ENUM |
String or custom |
Use a String field with validation for enumerated values. |
SET |
Array |
Use an Array to represent sets of values. |
N/A |
ObjectId |
Unique identifier type in MongoDB, typically used as a primary key. |
N/A |
Decimal128 |
Used for high-precision decimal numbers in MongoDB. |
CLÉ PRIMAIRE
- Garantit que chaque ligne d'un tableau possède un identifiant unique.
// DB is created if it doesn't exist
mongoose.connect('mongodb://localhost/my_database');
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
CREATE DATABASE my_database;
Copier après la connexion
Copier après la connexion
Copier après la connexion
CLÉ ÉTRANGÈRE
- Garantit que les valeurs d'une colonne correspondent aux valeurs d'un autre tableau.
mongoose.connect('mongodb://localhost/my_database');
Copier après la connexion
Copier après la connexion
Copier après la connexion
USE my_database;
Copier après la connexion
Copier après la connexion
Copier après la connexion
Intégrité des données et contraintes
-
NON NULL :
Garantit qu'une colonne ne peut pas avoir de valeurs NULL.
mongoose.model('User', UserSchema);
Copier après la connexion
Copier après la connexion
CREATE TABLE Users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) NOT NULL UNIQUE
);
Copier après la connexion
Copier après la connexion
-
UNIQUE :
Garantit que toutes les valeurs d’une colonne sont uniques.
UserSchema.index({ email: 1 }); // Unnamed Index
UserSchema.index({ email: 1 }, { name: 'idx_email' }); // Named Index
Copier après la connexion
Copier après la connexion
-- Syntax: CREATE INDEX index_name ON table_name (column_name);
CREATE INDEX idx_email ON Users (email); -- Named Index
CREATE INDEX ON Users (email); -- Unnamed Index
Copier après la connexion
Copier après la connexion
-
PAR DÉFAUT :
Attribue une valeur par défaut à une colonne si aucune valeur n'est fournie.
console.log(UserSchema.paths);
// Outputs details about the schema fields and types
Copier après la connexion
Copier après la connexion
DESCRIBE Users;
Copier après la connexion
Copier après la connexion
-
VÉRIFIER (MySQL 8.0 ) :
Garantit que les valeurs d'une colonne satisfont à une condition donnée.
// In mongoose its equivalent to .save() or .create();
const newUser = new User({ name: 'John Doe', email: 'john@example.com' });
newUser.save()
Copier après la connexion
Copier après la connexion
INSERT INTO Users (name, email)
VALUES ('John Doe', 'john@example.com');
Copier après la connexion
Copier après la connexion
-
AUTO_INCREMENT :
Génère automatiquement une valeur unique pour une colonne, souvent utilisée pour les clés primaires.
const users = await User.find(); // Fetches all users
const { name, email } = await User.findById(1); // Fetches user with id = 1
Copier après la connexion
Copier après la connexion
SELECT * FROM Users; -- all users
SELECT name, email FROM Users WHERE id = 1; -- user of id 1
Copier après la connexion
Copier après la connexion
C'est tout. Vous êtes prêt à partir, n'hésitez pas à laisser vos commentaires et vous pouvez me contacter ici : thekbbohara
OH, au fait, comment pouvons-nous configurer Mysql.
Je recommande d'utiliser docker :
// update all user of name kb
const query = { name: "kb" };
User.update(query, { name: "thekbbohara" })
Copier après la connexion
Copier après la connexion
-- update all user of name kb
UPDATE Users
SET name = "thekbbohara", email = "thekbbohara@gmail.com"
WHERE name = "kb";
Copier après la connexion
Copier après la connexion
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!