SELECT colonne1, colonne2... FROM nom_table;
SELECT*FROM nom_table WHERE non_colonne <> "valeur à exclure";
SELECT*FROM nom_table WHERE nom_colonne = "valeur" XOR non_colonne2 = " valeur2";
SELECT*FROM nom_table WHERE nom_colonne <=> NULL;
SELECT * FROM nom_table WHERE nom_colonne IS NULL;
IS NULL/ IS NOT NULL
SELECT*FROM nom_table ORDER BY nom_colonne LIMIT nombre OFFSET 0;
nombre = reel
OFFSET 0 = a partir quelle ligne en recupere les resultats
SELECT * FROM nom_table WHERE nom_colonne LIKE "%\%%";
SELECT*FROM nom_table WHERE nom_colonne NOT LIKE "%a%";
SELECT*FROM nom_table WHERE nom_colonne LIKE BINARY "%La%";
SELECT*FROM nom_table WHERE nom_colonne IN (v1, v2...);
dans le terminal (mais pas MySQL) :
mysqldump -u nom_user -p --opt nom_bdd > sauvegarde.sql
a la place de sauvegarde tu peux enregistrer le fichier allieur en indiquant tout le chemin.
mysql nom_BDD < nom_ sauvegarde.sql
ou directement dans mysql
USE nom_base; source fichier.sql;
UPDATE nom_table SET nom_colonne = "v1", nom_colonne2 = "v2" WHERE id = num_choisi;
structure de données qui reprend la liste ordonnée des valeurs auxquelles il se rapporte.
index unique
index fulltext
SHOW INDEXES FROM nom_table;
CREATE INDEX nom_colonneindexacreer ON nom_table(colonne_a_indexer);
tu peux remplacer INDEX par UNIQUE ou FULLTEXT
ils prennent de la place en memoire
il ralentissent les requetes d'insertion, modification et suppression
Permet de s'assurer de ne jamais avoir 2 fois la meme valeur
permet de faire des recherches de manière puissante et rapide sur un texte (VARCHAR, CHAR, TEXT)
attention : FULLTEXT ne peut etre utiliser juste avec le moteur MyISAM
lors de la creation de la table
en l'ajoutant pas la suite
CREATE TABLE nom_table(colonne1 INT NOT NULL, colonne2 VARCHAR(40), colonne3 TEXT,
UNIQUE INDEX nomcolonne2_index (colonne2), FULLTEXT INDEX nomcolonne3_index (colonne3))
ENGINE=MyISAM;
ALTER TABLE nom_table ADD INDEX nom_index (colonne_index, colonne2_index...);
tu peux remplacer INDEX par UNIQUE ou FULLTEXT (MyISAM)
CREATE TABLE nom_table (col1 INT NOT NULL, col2 VARCHAR(20), col3 TEXT, CONSTRAINT nom_contrainte UNIQUE INDEX nom_colonne_index2 (col2))
ENGINE = MyISAM;
ALTER TABLE nom_table ADD CONSTRAINT nom_contrainte UNIQUE nom_colonne_index2 (col2);
ALTER TABLE nom_table DROP INDEX nom_index;
il faut niter qu'il n'est pas possible de modifier un index, il faut le supprimer puis en creer un nouveau.
naturelle
booleen
extension de requete
SELECT*FROM nom_table WHERE MATCH (col1, ...) AGAINST ("chaine de caractere");
il fait qu'un indexe fulltext existe sur les deux colonnes.
SELECT*, MATCH(nom_colonne1,...) ANGAINST ("chaine de caractere") FROM nom_table;
SELECT*FROM nom_table WHERE MATCH (colonne) AGAINST ("chaine de caractere" IN BOOLEAN MODE);
SELECT*FROM Livre WHERE MATCH (colonne) AGAINST ("+bonheur -ogres" IN BOOLEAN MODE);
+ = contient
- = ne contient pas
SELECT*FROM nom_table WHERE MATCH (nom_colonne) AGAINST (' "je t'aime" ' IN BOOLEAN MODE);
SELECT*FROM nom_table WHERE MATCH (nom_colonne,....) AGAINST ('d*' IN BOOLEAN MODE);
SELECT*FROM nom_table WHERE MATCH (colon1, ....) AGAINST ('caractere' WITH QUERY EXPANSION);
Create
Alter
Drop
Insert
Update
Delete
Select
Grannt
Revoke
Commit
Rollback
NOT NULL
DEFAULT
UNIQUE
CHECK
PRIMARY KEY
FOREIGN KEY
specifie les valeurs acceptables pour une colonne.
ALTER TABLE nom_table RENAME COLUMN colonne TO nouveau_nom_colonne;
ALTER TABLE nom_table RENAME TO nouveau_nom_table;
supprime toutes les contraintes de clé externe referancant cette table.
sont considerer comme des indexes
une cle primaire est un index UNIQUE sur une colonne qui ne peut pas etre NULL.
1 seule cle primaire par table
il peut y avoir que une seule colonne par table a contenir Autoincrement.
CREATE TABLE nom_table (
colonne1 INT AUTO_INCREMENT PRIMARY KEY,
colonne2 VARCHAR(31)
)
ENGINE=moteur;
CREATE TABLE nom_table(
id SMALLINT AUTO_INCREMENT,
espece VARCHAR(40) NOT NULL,
PRIMARY KEY (id)
)
ENGINE=moteur;
ALTER TABLE nom_table ADD [CONSTRAINT symbole_contrainte] PRIMARY KEY colonne_kp1;
ALTER TABLE nom_table DROP PRIMARY KEY;
CREATE TABLE Commande(
numero INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
client INT UNSIGNED NOT NULL,
quantite SMALLINT DEFAULT 1,
CONSTRAINT fk_client_numero
FOREIGN KEY client
REFERENCES Client numero
)
ENGINE=InnoDB;
ALTER TABLE Commande
ADD CONSTRAINT fk_client_numero FOREIGN KEY client
REFERENCES Client numero;
ALTER TABLE nom_table
DROP FOREIGN KEY nom_keyetrangere;
LEFT JOIN
RIGHT JOIN
INNER JOIN
FULL OUTER JOIN
AUTO JOINTURE
CROSS JOIN