====== SQL ====== * [[https://blog.stephane-robert.info/docs/services/bdd/relationnelles/introduction/|Les bases de données relationnelles]] * [[https://www.depesz.com/2024/12/01/sql-best-practices-dont-compare-count-with-0/|SQL best practices – don’t compare count(*) with 0]] * [[sql:mysql|MySQL]] ==== Encodages ==== * [[https://wincent.com/wiki/Finding_out_the_encoding_of_a_MySQL_database]] * [[https://ixnfo.com/en/how-to-change-mysql-database-encoding-and-its-tables.html]] === Connaître l'encodage des bases de données === SELECT * FROM information_schema.schemata; === Connaître l'encodage des tables === SELECT table_schema, table_name, table_collation FROM information_schema.tables; === Changer l'encodage d'une table === [[https://stackoverflow.com/questions/1294117/how-to-change-collation-of-database-table-column|Source]] ''utf8mb4'' permet de stocker des caractères UTF8 sur 4 octets, donc notamment les émoticônes, à partir de MySQL 5.5: ALTER TABLE mytable CONVERT TO CHARACTER SET utf8mb4 ==== Égalité de chaînes de caractères sensibles à la casse ==== [[https://stackoverflow.com/questions/5629111/how-can-i-make-sql-case-sensitive-string-comparison-on-mysql|Source]] SELECT * FROM t WHERE BINARY colonne = 'value'; De la même manière avec les ''GROUP BY'' : SELECT BINARY colonne, COUNT(*) FROM t GROUP BY BINARY colonne; Le mot-clé ''BINARY'' semble ne pas fonctionner avec SQLite. ==== Ajouter un préfixe ou un suffixe à une chaîne ==== UPDATE matable SET mavaleur = CONCAT('préfixe ', mavaleur); ==== Min et max de deux éléments ==== SELECT GREATEST("abc", "def"), LEAST("abc", "def"); ==== Dates ==== === Extraire la date d'un datetime === [[https://stackoverflow.com/questions/1754411/how-to-select-date-from-datetime-column|Source]] WHERE DATE(datetime) = '2009-10-20' === Chaîne vers date === [[https://www.mysqltutorial.org/mysql-str_to_date/|Source]] SELECT STR_TO_DATE('21,5,2013','%d,%m,%Y'); ==== Créer une table depuis les résultats d'une requête ==== * [[https://learnsql.com/cookbook/how-to-create-a-table-from-an-sql-query/|Source]] CREATE TABLE results AS SELECT * FROM other_table; Il est aussi possible d'insérer les résultats d'une requête dans une table déjà existante : INSERT INTO results SELECT * FROM other_table; La syntaxe semble varier selon le SGBD utilisé. ==== Fonctions de fenêtrage ==== * [[https://openclassrooms.com/fr/courses/4449026-initiez-vous-a-lalgebre-relationnelle-avec-le-langage-sql/4563021-apprehendez-le-fenetrage-avec-over-et-partition-by]] * [[https://sqlpro.developpez.com/article/olap-clause-window/]]