Votre question

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

Tags :
  • Script
  • Programmation
Dernière réponse : dans Programmation
20 Juillet 2009 21:09:37

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;

Autres pages sur : redaction tuto possibilites mysql

a b L Programmation
22 Juillet 2009 19:00:45

hahah le 5émé script c'est celui que tu me donner pour mon site ^^
22 Juillet 2009 21:11:06

En gros oui :) 
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS