Exemple de code avec SQL-Server :
SELECT FirstName FROM yourtable WHERE Difference('Johni', FirstName) >= 3 ORDER BY Difference('Johni', FirstName) DESC
Je regarde pour Postgre car la fonction doit aussi exister.
Edit : apparemment pour PostgreSQL c'est par ici.
Des indexes sous PostgreSQL qui sont spécialisés dans la recherche textuelle.
Et aussi ce lien sur les indexes BRIN spécialisés dans les données immutables.
Et cet autre lien sur les indexes HASH.
Excellent. D'autant plus que je suis passée sous Ktorm. Du coup cela me permet de tester le requêtes générées par KTorm facilement.
Merci à Shikiryu.
Objectifs :
- Trouver un framework qui soit une abstraction du langage SQL
- Ce framework doit être orienté objet (dans la mesure du possible), type-safe et thread-safe et gérer les transactions (autant dire que pour l'OOP, je sais déjà que je repasserai).
- Ce framework ne nécessite pas de créer des entités à la Hibernate.
Ma sélection :
Pour @Philou, @Doudou, @Chlouchloutte et @Lenny
MySQL conseil d'utiliser le type DATETIME pour stocker des dates, mais côté JVM quel est le type de données à utiliser ? Je résume ici la réponse :
- java.sql.Date permet de stocker une date mais sans l'heure.
- java.sql.Time permet de stocker l'heure mais sans la date.
- java.sql.Timestamp permet de stocker les deux.
Donc le type qui se rapproche le plus de DATETIME c'est java.sql.Timestamp.
Edit : et côté MySQL, que se passe-t-il ?
MySQL dispose de quatre types pour stocker les données temporelles :
- DATE pour stocker une date mais sans l'heure.
- TIME pour stocker une heure mais sans la date.
- DATETIME pour stocker un timestamp allant de 1000-01-01 00:00:00.000000 à 9999-12-31 23:59:59.999999.
- TIMESTAMP pour stocker un timestamp au format UTC allant de 1970-01-01 00:00:01 UTC à 2038-01-19 03:14:07 UTC.
Donc côté base de données vous êtes dans deux cas de figure qui ont eux-mêmes des sous-cas :
- Soit votre SI est mono-timezone et dans ce cas là, DATETIME vous accorde une plage de données plus large.
- Soit votre SI est multi-timezone (comme chez mon client actuel) et dans ce cas là vous avez deux sous-cas :
- Soit vous gérez la timezone côté serveur (Kotlin / Rust par exemple) => DATETIME.
- Soit vous gérez la timezone côté base et vous lui passez uniquement des timestamp UTC => TIMEZONE.
Plein d'articles sur le sujet. Cool j'en avais besoin :D
Manipuler les bases MtSQL en ligne de commande avec auto-completion.
Via une river
(Pour Chlouchloutte)
Plus j'utilise ActiveJDBC et plus je trouve ce framework excellent.
Une API intéressante. Je lui préfère ActiveJDBC pour le moment mais à voir.
Types de requêtes SQL avec la requête en dessous de son schéma pour mieux la comprendre.
Rapide, simple, efficace, pertinent.
Une petite liste de bonnes pratiques en SQL et JDBC.
Un guide complet (ou presque) sur SQL et en français (suggéré par Roudoudoutte).
Je coudifie la coudification de SebSauvage.
Accéder à une base MySQL en Python via le driver MysqlDB. Très facile à faire et très sympa à utiliser (quand on vient du monde Java).
À noter que pour installer le driver MysqlDb il suffit de lancer : sudo aptitude install python-mysqldb
Un lien que j'avais oublié de me bookmarker
Un tutoriel d'optimisation SQL.
Via jeekajoo : https://fralef.me/links/?V_ku7w