Terminé este libro en 20 páginas. Originalmente pensé que el tema de este libro era la explicación de t-sql en SQL Server 2005, pero después de leerlo, descubrí que no lo era. No hay una explicación sistemática de t-sql en el libro. Los primeros tres capítulos hablan sobre los principios de la consulta, y los siguientes seis capítulos clasifican los problemas comunes de SQL en una categoría para cada capítulo: Capítulo 4 subconsultas, expresiones de tabla y funciones de clasificación, Capítulo 5 uniones y operaciones de conjuntos, Capítulo 6 agregación y rotación de data, Capítulo 7 TOP y ALLPY, Capítulo 8 Modificación de datos, Capítulo 9 Gráficos, árboles, jerarquías y consulta recursiva.
El autor dijo en el prefacio que si lees este libro con atención y dedicas algo de tiempo a hacer los ejercicios del libro, podrás dominar la experiencia acumulada por el autor durante más de diez años en un corto período de tiempo. He leído este libro y básicamente leí el código del libro. Siento que he aprendido mucho de la experiencia del autor, y el autor tiene mucha experiencia. Muchas soluciones no solo muestran las habilidades del autor en SQL, sino que también vale la pena aprender los algoritmos. Además, muchas preguntas brindan soluciones en SQL Server 2000 y soluciones en SQL Server 2005. Aquí hay dos ejemplos:
1. Genere rápidamente una tabla de datos con una sola columna. El valor de esta columna varía de 1 a 8000. El sql solo necesita ejecutarse 14 veces (el primer sql inserta datos 1 y las siguientes 12 veces inserta datos dentro de 2 a la potencia). de 12 4096, y los restantes Los siguientes números 8000-4096 se generan a la vez) en lugar de 8000 veces:
NO CONFIGURAR CUENTA EN;
UTILICE tempdb;
IR
SI OBJECT_ID('dbo.Nums') NO ES NULO
DROP TABLE dbo.Nums;
IR
CREAR TABLA dbo.Nums(n INT NO CLAVE PRIMARIA NULA);
DECLARAR @max COMO INT, @rc COMO INT;
ESTABLECER @máx = 8000;
ESTABLECER @rc = 1;
INSERTAR EN Núms VALORES(1);
MIENTRAS @rc * 2 <= @max
COMENZAR
INSERTAR EN dbo.Nums SELECCIONAR n + @rc DESDE dbo.Nums;
ESTABLECER @rc = @rc * 2;
FIN
INSERTAR EN dbo.Nums
SELECCIONE n + @rc DESDE dbo.Nums DONDE n + @rc <= @max;
IR
2. Para tablas con estructuras recursivas, el autor presenta el método de diseño común (recursión) y también presenta el modelo de colección anidada propuesto por Joe Celko. Y dio su propio método de implementación más rápido. Este modelo establece dos valores en cada nodo del número: lvalue y rvalue. El valor izquierdo es menor que el valor izquierdo de todos los nodos subordinados y el valor derecho es mayor que el valor derecho de todos los nodos subordinados. El cálculo final de la relación recursiva es muy rápido. Por supuesto, el cambio de un nodo en este modelo hará que en promedio la mitad de los nodos recalculen los valores izquierdo y derecho, por lo que no es adecuado para tablas de datos que requieren cambios frecuentes en tiempo real. El SQL específico es relativamente largo. Si está interesado, puede leer el libro o descargar el código fuente de este libro.