Se connecter avec
S'enregistrer | Connectez-vous

Rédaction d'un tuto sur les possibilités de MySQL

Dernière réponse : dans Programmation
Expert Programmation

Après la lecture d'un topic, j'ai eu envie de montrer un peu les possibilité de MySQL. Les commentaires arrivent mais j'aimerais avoir votre avis sur les scripts avant histoire d'adapter mon texte qui arrive.

Le script évolue en 5 étapes :

Script 1 :
DROP DATABASE IF EXISTS mysqltuto;

CREATE DATABASE mysqltuto;

USE mysqltuto;

CREATE TABLE billets (
billet_id INT(11) AUTO_INCREMENT,
billet_date DATETIME,
billet_texte TEXT,
PRIMARY KEY(billet_id)
) TYPE=MyISAM;

CREATE TABLE commentaires (
com_id INT(11) AUTO_INCREMENT,
com_billet INT(11),
com_date DATETIME,
com_auteur VARCHAR(255),
com_texte TEXT,
PRIMARY KEY(com_id)
) TYPE=MyISAM;

INSERT INTO billets (billet_texte) VALUES ('mon superbe billet');
# Comme on vient de créer notre base on est sur que le billet à pour ID 1 sinon on est incapable pour le moment de faire la requête suivante.

INSERT INTO commentaires(com_billet,com_auteur,com_texte) VALUES (1, 'auteur1','Le premier commentaire');
INSERT INTO commentaires(com_billet,com_auteur,com_texte) VALUES (1, 'auteur2','Le second commentaire');

SELECT * FROM billets, commentaires
WHERE billets.billet_id = commentaires.com_billet
AND billet_id = 1;


Script 2 :
DROP DATABASE IF EXISTS mysqltuto;

CREATE DATABASE mysqltuto;

USE mysqltuto;

CREATE TABLE billets (
billet_id INT(11) UNSIGNED AUTO_INCREMENT,
billet_date DATETIME NOT NULL,
billet_texte TEXT NOT NULL,
PRIMARY KEY(billet_id)
) TYPE=MyISAM;

CREATE TABLE commentaires (
com_id INT(11) AUTO_INCREMENT,
com_billet INT(11) UNSIGNED NOT NULL,
com_date DATETIME NOT NULL,
com_auteur VARCHAR(255),
com_texte TEXT NOT NULL,
PRIMARY KEY(com_id)
) TYPE=MyISAM;

INSERT INTO billets (billet_date, billet_texte) VALUES (NOW(), 'mon superbe billet');

SET @last_id = (SELECT LAST_INSERT_ID()); #Utilisation d'une variable en MySQL

INSERT INTO commentaires(com_billet, com_date, com_auteur, com_texte) VALUES (@last_id, NOW(), 'auteur1', 'Le premier commentaire');
INSERT INTO commentaires(com_billet, com_date, com_auteur, com_texte) VALUES (@last_id, NOW(), 'auteur2', 'Le second commentaire');

SELECT * FROM billets, commentaires
WHERE billets.billet_id = commentaires.com_billet
AND billet_id = @last_id;


Script 3 :
DROP DATABASE IF EXISTS mysqltuto;

CREATE DATABASE mysqltuto;

USE mysqltuto;

CREATE TABLE billets (
billet_id INT(11) UNSIGNED AUTO_INCREMENT,
billet_date DATETIME NOT NULL,
billet_texte TEXT NOT NULL,
PRIMARY KEY(billet_id)
) TYPE=MyISAM;

CREATE TABLE commentaires (
com_id INT(11) AUTO_INCREMENT,
com_billet INT(11) UNSIGNED NOT NULL,
com_date DATETIME NOT NULL,
com_auteur VARCHAR(255),
com_texte TEXT NOT NULL,
PRIMARY KEY(com_id)
) TYPE=MyISAM;

INSERT INTO billets (billet_date, billet_texte) VALUES (NOW(), 'mon superbe billet');

SET @last_id = (SELECT LAST_INSERT_ID()); #Utilisation d'une variable en MySQL

INSERT INTO commentaires(com_billet, com_date, com_auteur, com_texte) VALUES (@last_id, NOW(), 'auteur1', 'Le premier commentaire');
INSERT INTO commentaires(com_billet, com_date, com_auteur, com_texte) VALUES (@last_id, NOW(), 'auteur2', 'Le second commentaire');

SELECT * FROM billets, commentaires
WHERE billets.billet_id = commentaires.com_billet
AND billet_id = @last_id;

# Démonstration d'un problème lors de l'effacement d'un billets avec commentaires, il reste les commentaires ... Quel intérêt ?
DELETE FROM billets;

SELECT * FROM billets, commentaires
WHERE billets.billet_id = commentaires.com_billet
AND billet_id = @last_id;


Script 4 :
DROP DATABASE IF EXISTS mysqltuto;

CREATE DATABASE mysqltuto;

USE mysqltuto;

CREATE TABLE billets (
billet_id INT(11) UNSIGNED AUTO_INCREMENT,
billet_date DATETIME NOT NULL,
billet_texte TEXT NOT NULL,
PRIMARY KEY(billet_id)
) TYPE=InnoDB;

CREATE TABLE commentaires (
com_id INT(11) AUTO_INCREMENT,
com_billet INT(11) UNSIGNED NOT NULL,
com_date DATETIME NOT NULL,
com_auteur VARCHAR(255),
com_texte TEXT NOT NULL,
PRIMARY KEY(com_id),
FOREIGN KEY(com_billet) REFERENCES billets(billet_id)
) TYPE=InnoDB;

INSERT INTO billets (billet_date, billet_texte) VALUES (NOW(), 'mon superbe billet');

SET @last_id = (SELECT LAST_INSERT_ID()); #Utilisation d'une variable en MySQL

INSERT INTO commentaires(com_billet, com_date, com_auteur, com_texte) VALUES (@last_id, NOW(), 'auteur1', 'Le premier commentaire');
INSERT INTO commentaires(com_billet, com_date, com_auteur, com_texte) VALUES (@last_id, NOW(), 'auteur2', 'Le second commentaire');

SELECT * FROM billets, commentaires
WHERE billets.billet_id = commentaires.com_billet
AND billet_id = @last_id;

# Démonstration d'un problème lors de l'effacement d'un billets avec commentaires, il reste les commentaires ... Quel intérêt ?
DELETE FROM billets;

SELECT * FROM billets, commentaires
WHERE billets.billet_id = commentaires.com_billet
AND billet_id = @last_id;


Script 5 :
DROP DATABASE IF EXISTS mysqltuto;

CREATE DATABASE mysqltuto;

USE mysqltuto;

CREATE TABLE billets (
billet_id INT(11) UNSIGNED AUTO_INCREMENT,
billet_date DATETIME NOT NULL,
billet_texte TEXT NOT NULL,
PRIMARY KEY(billet_id)
) TYPE=InnoDB;

CREATE TABLE commentaires (
com_id INT(11) AUTO_INCREMENT,
com_billet INT(11) UNSIGNED NOT NULL,
com_date DATETIME NOT NULL,
com_auteur VARCHAR(255),
com_texte TEXT NOT NULL,
PRIMARY KEY(com_id),
FOREIGN KEY(com_billet) REFERENCES billets(billet_id) ON DELETE CASCADE
) TYPE=InnoDB;

INSERT INTO billets (billet_date, billet_texte) VALUES (NOW(), 'mon superbe billet');

SET @last_id = (SELECT LAST_INSERT_ID()); #Utilisation d'une variable en MySQL

INSERT INTO commentaires(com_billet, com_date, com_auteur, com_texte) VALUES (@last_id, NOW(), 'auteur1', 'Le premier commentaire');
INSERT INTO commentaires(com_billet, com_date, com_auteur, com_texte) VALUES (@last_id, NOW(), 'auteur2', 'Le second commentaire');

SELECT * FROM billets, commentaires
WHERE billets.billet_id = commentaires.com_billet
AND billet_id = @last_id;

# Démonstration d'un problème lors de l'effacement d'un billets avec commentaires, il reste les commentaires ... Quel intérêt ?
DELETE FROM billets;

SELECT * FROM billets, commentaires
WHERE billets.billet_id = commentaires.com_billet
AND billet_id = @last_id;
Lassé par la pub ? Créez un compte
Lassé par la pub ? Créez un compte
Tom's guide dans le monde