====== SQL, bases de données, etc ======
===== Importer une grosse base de données =====
mysql -u {username} -p {databasename} < file_name.sql
[[http://stackoverflow.com/questions/6163694/how-do-you-use-mysqls-source-command-to-import-large-files-in-windows]]
===== Requête pour savoir si une table existe =====
[[http://stackoverflow.com/questions/167576/check-if-table-exists-in-sql-server|!SO Bof]] [[http://stackoverflow.com/questions/8829102/mysql-check-if-table-exists-without-using-select-from|!SO OK]]
SHOW TABLES LIKE 'yourtable';
===== Jointures =====
http://sql.sh/cours/jointures http://sql.sh/cours/jointures/natural-join
===== Faire une colonne avec une condition =====
SELECT zed_customer.id_customer,
CASE WHEN zed_customer_group.id_group = 4
THEN 1
ELSE 0
END AS profil_valide
FROM zed_customer
LEFT JOIN zed_customer_group ON zed_customer.id_customer = zed_customer_group.id_customer
===== Ne remonter que le plus grand ou la dernière date d'un champ =====
Sachant qu'il y a des multiples entrées par id_customer mais ne veut que le dernier. On s'aide de [[http://sql.sh/cours/group-by|GROUP BY]] pour ça.
SELECT zed_customer.id_customer, MAX(zed_projet_acces.dossier_investissement) AS dossier_investissement, MAX(zed_projet_acces.documents) AS documents
FROM zed_customer
LEFT JOIN zed_projet_acces ON zed_customer.id_customer = zed_projet_acces.id_customer
GROUP BY zed_customer.id_customer
===== Requêteception =====
Comment imbriquer des SELECT.
SELECT a.id_customer, a.id_parrain, b.nb_filleuils
FROM zed_customer AS a
LEFT OUTER JOIN (SELECT id_parrain, COUNT(id_parrain) AS nb_filleuils
FROM zed_customer
GROUP BY id_parrain)
AS b ON a.id_customer = b.id_parrain
GROUP BY a.id_customer
===== Supprimer une ligne dans la BDD =====
[[https://www.w3schools.com/sql/sql_delete.asp|Référence]]
DELETE FROM table_name
WHERE condition;
On peut utiliser [[https://www.w3schools.com/sql/sql_like.asp|LIKE]] comme une condition :
SELECT * FROM submission WHERE title LIKE '%gladiator%'
// Delete the lines
DELETE FROM submission WHERE title LIKE '%gladiator%' OR title LIKE '%tournament%'
===== Fonctions liées à l'heure =====
[[http://sql.sh/fonctions/now|NOW()]] [[https://www.techonthenet.com/mysql/functions/date_add.php|DATE_ADD()]]
// Récupérer le datetime d'il y a 1 heure
DATE_ADD( NOW(), INTERVAL -1 HOUR )
===== LIMIT & OFFSET =====
[[https://www.petefreitag.com/item/451.cfm|Sauce]]\\
**LIMIT :** limite le nombre de résultat total\\
**OFFSET :** nombre d'entrée à sauter dans les résultats