0% ont trouvé ce document utile (0 vote)
9 vues2 pages

Gestion des tables et sauvegardes SQL

Transféré par

yanisahlwit
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats TXT, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
9 vues2 pages

Gestion des tables et sauvegardes SQL

Transféré par

yanisahlwit
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats TXT, PDF, TXT ou lisez en ligne sur Scribd

-- EXO 1 avec Sqlite

DROP TABLE IF EXISTS locaux;


CREATE TABLE locaux(
id CHAR(4) PRIMARY KEY
);

DROP TABLE IF EXISTS niveaux;


CREATE TABLE niveaux(
id CHAR(4) PRIMARY KEY
);

DROP TABLE IF EXISTS examens;


CREATE TABLE examens(
id CHAR(4) PRIMARY KEY,
idn CHAR(4) REFERENCES niveaux(id),
date DATE NOT NULL DEFAULT '2024-06-01',
hd decimal(2,2) NOT NULL DEFAULT '8.5'
-- a little hacky, we could have used the TIME data type.
-- hd TIME NOT NULL DEFAULT '8:30'
);

DROP TABLE IF EXISTS deroule;


CREATE TABLE deroule(
idx CHAR(4) REFERENCES examens(id) ON DELETE CASCADE,
idl CHAR(4) REFERENCES locaux(id) ON DELETE CASCADE,
gr CHAR(4) NOT NULL DEFAULT 'A1'
);

-- 1)

INSERT INTO niveaux VALUES ('L3MI'), ('L3RNSI');


INSERT INTO locaux VALUES ('A13'), ('A14'), ('A16');
INSERT INTO examens (id, idn, date, hd)
VALUES ('DSS', 'L3MI', '2024-06-01', '12.5');
INSERT INTO deroule (idx, idl, gr) VALUES ('DSS', 'A16', 'A1'),
('DSS', 'A16', 'A2'),
('DSS', 'A16', 'A3');

-- PAs compté, juste pour tester les questions ci-après


INSERT INTO examens (id, idn, date, hd)
VALUES ('ABD', 'L3RNSI', '2024-06-01', '12.5');
INSERT INTO deroule (idx, idl, gr) VALUES ('ABD', 'A13', 'A1'),
('ABD', 'A13', 'A2'),
('ABD', 'A14', 'A3'),
('ABD', 'A14', 'A4');

-- 2) Où se trouvent les L3RNSI le 01/06/2024 à 13h


-- La commande .print est pour sqlite
.print "LES L3RNSI se trouvent dans:"
SELECT DISTINCT([Link])
FROM deroule AS D
LEFT JOIN examens AS E ON ([Link] = [Link])
WHERE ([Link] = 'L3RNSI') AND ([Link] = '2024-06-01')
AND ([Link] <= 13) AND (13 <= [Link] + 1.5);

-- 3) Soit utiliser les clé étrangères avec ON DELETE CASCADE soit un trigger:
-- Remarque: Cette syntaxe est bonne pour sqlite. Pour mariadb, utilisez la
-- syntaxe vue en cours.
DROP TRIGGER IF EXISTS del_exam;
CREATE TRIGGER del_exam
AFTER DELETE ON examens
BEGIN
DELETE FROM deroule WHERE (idx = [Link]);
END;;

-- 4) Sauvegarder: (Avec mariadb cette fois-ci)


-- mysqldump -uUser -pPassword examens | gzip > [Link]

-- 5) Automatiser la sauvegarde:
-- Écrire un script shell qui genère un nom de fichier de sauvegarde avec la
-- date actuelle.Définir un cronjob qui exécutera ce script à minuit chaque jour
-- comme suit (sans gestion des erreurs de sortie):
-- 0 0 * * * /home/me/[Link]

Vous aimerez peut-être aussi