J'ai terminé ce livre en 20 pages. Au départ, je pensais que le thème de ce livre était l'explication de t-sql dans SQL Server 2005, mais après l'avoir lu, j'ai découvert que ce n'était pas le cas. Il n'y a pas d'explication systématique de t-sql dans le livre. Les trois premiers chapitres parlent des principes des requêtes, et les six chapitres suivants classent les problèmes SQL courants dans une catégorie pour chaque chapitre : chapitre 4 sur les sous-requêtes, les expressions de table et les fonctions de classement, chapitre 5 sur les jointures et les opérations d'ensemble, chapitre 6 sur l'agrégation et la rotation des requêtes. data, chapitre 7 TOP et ALLPY, chapitre 8 Modification des données, chapitre 9 Graphiques, arbres, hiérarchies et requêtes récursives.
L'auteur a déclaré dans la préface que si vous lisez attentivement ce livre et passez du temps à faire les exercices du livre, vous pourrez maîtriser l'expérience accumulée par l'auteur pendant plus de dix ans en peu de temps. J'ai lu ce livre et essentiellement lu le code dans le livre. J'ai le sentiment d'avoir beaucoup appris de l'expérience de l'auteur, et l'auteur est très expérimenté. De nombreuses solutions montrent non seulement les compétences de l'auteur en SQL, mais les algorithmes valent également la peine d'être appris. De plus, de nombreuses questions donnent des solutions sous SQL Server 2000 et des solutions sous SQL Server 2005. Voici deux exemples :
1. Générez rapidement une table de données avec une seule colonne. La valeur de cette colonne varie de 1 à 8 000. Le SQL ne doit être exécuté que 14 fois (le premier SQL insère les données 1 et les 12 fois suivantes insèrent les données dans 2 à la puissance. de 12 4096, et les numéros 8000-4096 suivants sont générés en une seule fois) au lieu de 8000 fois :
METTRE NOCOUNT SUR ;
UTILISER tempdb ;
ALLER
SI OBJECT_ID('dbo.Nums') N'EST PAS NULL
DROP TABLE dbo.Nums ;
ALLER
CREATE TABLE dbo.Nums(n INT NOT NULL PRIMARY KEY);
DÉCLARE @max AS INT, @rc AS INT;
RÉGLER @max = 8000 ;
FIXER @rc = 1 ;
INSÉRER DANS Nums VALUES(1);
PENDANT que @rc * 2 <= @max
COMMENCER
INSERT INTO dbo.Nums SELECT n + @rc FROM dbo.Nums;
SET @rc = @rc * 2;
FIN
INSÉRER DANS dbo.Nums
SELECT n + @rc FROM dbo.Nums WHERE n + @rc <= @max;
ALLER
2. Pour les tableaux à structures récursives, l'auteur introduit la méthode de conception commune (récursivité) et présente également le modèle de collection imbriquée proposé par Joe Celko. Et a donné sa propre méthode de mise en œuvre plus rapide. Ce modèle définit deux valeurs à chaque nœud du nombre : lvalue et rvalue. La valeur de gauche est inférieure à la valeur de gauche de tous les nœuds subordonnés et la valeur de droite est supérieure à la valeur de droite de tous les nœuds subordonnés. Le calcul final de la relation récursive est très rapide. Bien entendu, le changement d'un nœud dans ce modèle entraînera en moyenne le recalcul des valeurs gauche et droite par la moitié des nœuds, il ne convient donc pas aux tableaux de données qui nécessitent de fréquents changements en temps réel. Le SQL spécifique est relativement long. Si vous êtes intéressé, vous pouvez lire le livre ou télécharger le code source de ce livre.