أنهيت هذا الكتاب في 20 صفحة. اعتقدت في البداية أن موضوع هذا الكتاب هو شرح t-sql في sql server 2005، لكن بعد قراءته وجدت أنه ليس كذلك. لا يوجد شرح منهجي لـ t-sql في الكتاب. تتحدث الفصول الثلاثة الأولى عن مبادئ الاستعلام، وتصنف الفصول الستة التالية مشاكل SQL الشائعة في فئة واحدة لكل فصل: الفصل الرابع الاستعلامات الفرعية وتعبيرات الجدول ووظائف الترتيب، الفصل الخامس ربط العمليات وتعيينها، الفصل السادس تجميع وتدوير البيانات، الفصل السابع TOP وALLPY، الفصل الثامن تعديل البيانات، الفصل التاسع الرسوم البيانية والأشجار والتسلسلات الهرمية والاستعلام العودي.
قال المؤلف في المقدمة أنك إذا قرأت هذا الكتاب بعناية وأمضيت بعض الوقت في حل التمارين الموجودة في الكتاب، فيمكنك إتقان الخبرة التي راكمها المؤلف لأكثر من عشر سنوات في فترة زمنية قصيرة. لقد قرأت هذا الكتاب وقرأت الكود الموجود في الكتاب بشكل أساسي، وأشعر أنني تعلمت الكثير من تجربة المؤلف، وأن المؤلف يتمتع بخبرة كبيرة. لا تُظهر العديد من الحلول مهارات المؤلف في لغة SQL فحسب، بل إن الخوارزميات تستحق التعلم أيضًا. بالإضافة إلى ذلك، العديد من الأسئلة تعطي حلولاً تحت SQL Server 2000 وحلول تحت SQL Server 2005. فيما يلي مثالان:
1. قم بإنشاء جدول بيانات بسرعة بعمود واحد فقط وتتراوح قيمة هذا العمود من 1 إلى 8000. يحتاج SQL إلى التنفيذ 14 مرة فقط (يقوم SQL الأول بإدراج البيانات 1، وفي المرة التالية 12 يقوم بإدراج البيانات ضمن 2 إلى السلطة. من 12 4096، ويتم إنشاء الأرقام المتبقية 8000-4096 التالية مرة واحدة) بدلاً من 8000 مرة:
قم بضبط NOCOUNT على؛
استخدم tempdb;
يذهب
إذا لم يكن OBJECT_ID('dbo.Nums') فارغًا
إسقاط الجدول dbo.Nums;
يذهب
إنشاء جدول dbo.Nums(n INT NOT NULL PRIMARY KEY);
أعلن @max AS INT، @rc AS INT؛
تعيين @max = 8000؛
SET@rc = 1;
أدخل في قيم الأرقام (1)؛
بينما @rc * 2 <= @max
يبدأ
أدخل في dbo.Nums SELECT n + @rc FROM dbo.Nums؛
SET @rc = @rc * 2;
نهاية
أدخل في dbo.Nums
حدد n + @rc من dbo.Nums WHERE n + @rc <= @max;
يذهب
2. بالنسبة للجداول ذات الهياكل العودية، يقدم المؤلف طريقة التصميم الشائعة (العودية) ويقدم أيضًا نموذج المجموعة المتداخلة الذي اقترحه جو سيلكو. وأعطى طريقة التنفيذ الأسرع الخاصة به. يقوم هذا النموذج بتعيين قيمتين عند كل عقدة من الرقم: lvalue وrvalue. القيمة اليسرى أقل من القيمة اليسرى لجميع العقد الثانوية، والقيمة الصحيحة أكبر من القيمة الصحيحة لجميع العقد الثانوية. الحساب النهائي للعلاقة العودية سريع جدًا. بالطبع، سيؤدي تغيير العقدة في هذا النموذج إلى إعادة حساب القيم اليسرى واليمنى لنصف العقد في المتوسط، لذلك فهو غير مناسب لجداول البيانات التي تتطلب تغييرات متكررة في الوقت الفعلي. SQL المحددة طويلة نسبيًا، إذا كنت مهتمًا، يمكنك قراءة الكتاب أو تنزيل الكود المصدري لهذا الكتاب.