1. ما هي الصفقة؟
المعاملة هي آلية، تسلسل عمليات، تحتوي على مجموعة من أوامر تشغيل قاعدة البيانات، ويتم تقديم جميع الأوامر إلى النظام ككل
أو إلغاء طلب العملية، أي إما سيتم تنفيذ جميع قواعد البيانات هذه أو لن يتم تنفيذ أي منها. إنها مناسبة بشكل خاص لأنظمة قواعد البيانات التي يديرها عدة مستخدمين في نفس الوقت.
المعاملة عبارة عن سلسلة من العمليات التي يتم تنفيذها كوحدة عمل منطقية واحدة.
يجب أن تحتوي وحدة العمل المنطقية على 4 سمات:
الذرية: المعاملة هي عملية كاملة، ولا يمكن تقسيم عناصر المعاملة بشكل أكبر. يجب الالتزام بجميع العناصر أو التراجع عنها ككل.
الاتساق: عند اكتمال المعاملة، يجب أن تكون البيانات في حالة متسقة.
العزل: يتم عزل جميع المعاملات المتزامنة عن بعضها البعض عند تعديل البيانات.
المتانة: بعد إتمام المعاملة، يكون التأثير على النظام دائمًا.
2. قم بإنشاء معاملة
بدء المعاملة: بدء المعاملة
ارتكاب المعاملة: ارتكاب المعاملة
معاملة التراجع (التراجع): معاملة التراجع
شفرة
استخدم مسمار
يذهب
إذا كان موجودًا (اختر * من كائنات النظام حيث الاسم = "البنك")
إسقاط بنك الطاولة
إنشاء بنك الجدول
(
اسم العميل شار (10)، - اسم العميل
المال الحالي - الرصيد
)
يذهب
- أضف قيد التحقق من أن رصيد الحساب لا يمكن أن يكون أقل من 1
تغيير بنك الجدول
إضافة قيد CK_currentMoney check(currentMoney >= 1)
يذهب
أدخل في قيم البنك ('Zhang San'، 1000)
أدخل في القيم البنكية ('李思'،1)
اختر * من البنك
-------------------------------------------------- --------
--------------- * * * * 事* * 事* * * * -------------
-------------------------------------------------- --------
استخدم مسمار
يذهب
قم بتعيين nocount على - لا تعرض معلومات رقم الصف المتأثر
طباعة "البيانات قبل المعاملة:"
اختر * من البنك
يذهب
تبدأ الصفقة
أعلن @errorSum int
تعيين @errorSum=0
تحديث مجموعة البنك currentMoney = currentMoney-1000 حيث اسم العميل = 'Zhang San'
تحديث مجموعة البنك currentMoney = currentMoney+1000 حيث اسم العميل = '李思'
اضبط @errorSum = @errorSum + 1
طباعة "البيانات في المعاملة:"
اختر * من البنك
إذا @errorSum <> 0
يبدأ
طباعة "فشلت المعاملة، معاملة التراجع"
معاملة التراجع
نهاية
آخر
يبدأ
طباعة "المعاملة ناجحة، تنفيذ المعاملة، الكتابة على القرص الصلب، الحفظ الدائم"
ارتكاب الصفقة
نهاية
يذهب
طباعة "البيانات بعد المعاملة:"
اختر * من البنك
-------------------------------------------------- --------
--------------- * * * * اقتباس * * اقتباس * * * * -------------
-------------------------------------------------- --------
- الفهرس: إنها الطريقة الداخلية لـ SQL Server لتنظيم البيانات
--يمكن تقسيم الفهارس إلى الأنواع الثلاثة التالية؛
- الفهرس الفريد: لا يُسمح لصفين أن يكون لهما نفس قيمة الفهرس
- فهرس المفتاح الأساسي: نوع خاص من فهرس المفتاح الأساسي الذي يقوم تلقائيًا بإنشاء فهرس فريد عند تحديد مفتاح أساسي للجدول. يجب أن تكون كل قيمة في المفتاح الأساسي فريدة.
- فهرس متفاوت المسافات: الترتيب الفعلي للصفوف في الجدول هو نفس الترتيب المنطقي (الفهرس) لقيم المفاتيح. يمكن أن يحتوي الجدول على فهرس متفاوت المسافات واحد فقط (يمكن فهمه على أنه بينيين القاموس).
- فهرس غير مجمع: تحتوي البيانات والفهرس على نقاط إلى المواقع المقابلة حيث يتم تخزين البيانات. الترتيب الفعلي للصفوف في الجدول لا يتطابق مع الترتيب المنطقي لقيم المفاتيح. (يمكن فهمها على أنها MAP)
- الفهارس المجمعة أسرع من الفهارس غير المجمعة
--يمكن أن يكون هناك فهرس مجمع واحد فقط في الجدول، ولكن يمكن أن يكون هناك فهارس متعددة غير مجمعة. إذا قمت بتعيين عمود كمفتاح أساسي، فسيكون العمود عبارة عن فهرس مجمع بشكل افتراضي.
--لا يمكن أن يحتوي الجدول على فهرس، ولا يكون فهرس المفتاح الأساسي بالضرورة فهرسًا متفاوت المسافات.
--أين يتم استخدام الفهرس؟
--يتم البحث عن هذا العمود بشكل متكرر واستخدامه لفرز البيانات
--النوع السيئ يحتوي فقط على عدد قليل من القيم المختلفة ولا يوجد سوى عدد قليل من صفوف البيانات في الجدول، لذلك ليست هناك حاجة لاستخدام فهرس.
--القواعد
- إنشاء فهرس [فريد] [مجمع | غير متجمع] اسم_الفهرس على اسم_الجدول (اسم_العمود[، اسم_العمود]...)
--[
-- مع عامل التعبئة = x --عامل التعبئة x هو قيمة تتراوح بين 0 و100
--]
شفرة
استخدم مسمار
يذهب
إذا كان موجودًا (اختر [اسم] من sysindexes حيث [name]='IX_stuMarks_writerExam')
إسقاط الفهرس stuMarks.IX_stuMarks_writerExam - الاستعلام عما إذا كان الفهرس موجودًا بالفعل وحذفه إذا كان موجودًا
إنشاء فهرس غير عنقودي IX_stuMarks_writerExam على stuMarks(writerExam)
مع عامل التعبئة = 30 - المساحة المحجوزة لعامل التعبئة
يذهب
--استفسار
حدد * من stumarks (index=IX_stuMarks_writerExam)
- سيتم الإبلاغ عن خطأ: يوجد خطأ في بناء الجملة بالقرب من "الفهرس". إذا كنت تريد أن تكون جزءًا من تلميح جدول، فيجب أن تحتوي على الكلمة الأساسية "مع" والأقواس، مثل:
حدد * من stumarks مع (index=IX_stuMarks_writerExam)
حدد * من stumarks مع (index=IX_stuMarks_writerExam) حيث الامتحان الكتابي بين 60 و 90
-------------------------------------------------- --------
--------------- * * * * عرض* * الصورة* * * * ----------------
-------------------------------------------------- --------
العرض: هو جدول افتراضي، طريقة استعلام تعتمد على بيانات جدول واحد أو جداول متعددة.
الوظائف العامة: تصفية الصفوف في الجداول، ومنع المستخدمين غير المصرح لهم من الوصول إلى البيانات الحساسة، وتجريد جداول بيانات فعلية متعددة في جدول بيانات منطقي واحد
--القواعد:
--إنشاء طريقة عرض view_name
--مثل
--<اختر العبارة>
شفرة
استخدم مسمار
يذهب
إذا كان موجودًا (اختر * من كائنات النظام حيث الاسم = 'view_stuinfo_stumarks')
عرض إسقاط view_stuinfo_stumarks
يذهب
إنشاء عرض view_stuinfo_stumarks
مثل
حدد الاسم = stuname، رقم الطالب = stuinfo.stuno، درجة الاختبار الكتابي = الامتحان الكتابي، درجة اختبار الكمبيوتر = labexam،
متوسط الدرجات = (امتحان مكتوب + اختبار لاب) / 2 من stuinfo اليسار انضم إلى stumarks على stumarks.stuno = stumarks.stuno
يذهب