الأربعاء، 27 ديسمبر 2017

الدرس السابع حذف الجداول باستخدام DROP TABLE

لحدف الجداول من قاعدة البيانات بأستخدام لغة SQL سوف نستخدم الايعاز DROP TABLE  وهو من ايعازات Data Definition Language او ما يعرف اختصارا ب DDL
 
 DROP TABLE table_name 
مثلا لحذف جدول الزبائن CUSTOMER يمكن كتابة وتنفيذ الايعاز التالي في SQL Server Management Studio
 
 DROP TABLE CUSTOMER 
ملاحظة
  • يجب ان نكون حذرين جدا عند حذف الجداول لان ايعاز  DROP TABLE سوف يحذف الجدول وكل البيانات المخزنة في هذا الجدول. لذلك يجب اخذ الاحتياطات اللازمة مثلا اذا كان الجدول يحتوي على معلومات حساسة قد تحتاج اليها لاحقا يمكن حفظ نسخة من هذا الجدول ولكن بأسم ثاني بأستخدام عبارة SELECT  INTO او الاحتفاظ بنسخة من ملفلت النسخ الاحتياطي لقاعدة البيانات (Backup Files) وبتالي نستطيع استرجاع المعلومات من النسخ الاحتياطي.
  • لتنفيذ هذا الايعاز يجب ان تمتك الصلاحيات الامنية المناسبة يجب ان يكون المستخدم عضو في الدور الامني المسمى db_owner role.

النسخ الاحتياطي للجدول ضمن قاعدة البيانات
لاخذ النسخ الاحتياطي للجدول قبل القيام بحذفه يمكن تنفيذ الايعاز SELECT INTO كما يلي 
 
 SELECT * INTO CUSTOMER_BK_01DEC2017 FROM CUSTOMER
سوف يقوم الايعاز اعلاه بتكوين جدول جديد (CUSTOMER_BK_01DEC2017) يماثل بمواصفاته (من حيث عدد الاعمدة ونوع البيانات لكل عمود)الجدول (CUSTOMER) وكذلك ينسخ كل البيانات من الجدول (CUSTOMER) ويخزنها في الجدول الجديد (CUSTOMER_BK_01DEC2017).أن تنفيذ هذا الايعاز سوف يكون الجدول الجديد بنفس قاعدة البيانات الحالية.
اذا اردنا ان نأخذ النسخ الاحتياطي في قاعدة بيانات اخرى (مثلا قاعدة بيانات مخصصة للنسخ الاحتياطي اسمها مثلا BACKUP) يمكن تنفيذ الايعاز التالي 
 
SELECT * INTO BACKUPDB.dbo.CUSTOMER_BK_01DEC2017 FROM CUSTOMER

في هذا الايعاز استخدمنا ما يعرف بالاسم الكامل للجدول الجديد الذي نريد ان نستخدمه كجدول احتياطي والاسم الكامل(BACKUPDB.dbo.CUSTOMER_BK_01DEC2017) مكون في هذه الحالة من ثلاثة اجزاء الجزء الاول يمثل اسم قاعد البيانات(BACKUPDB) الذي نريد تكوين الجدول فيها. والجزء الثاني يمثل مايعرف ب Schema او مالك هذ الكائن وهو في هذه (dbo) وهو الاسم الافتراضي لمالك قاعدة البيانات Database Owner والجز الاخير اسم الجدول الجديد (جدول النسخ الاحتياطي) (CUSTOMER_BK_01DEC2017).
للتحقق من ان عملية النسخ الاحتياطي تمت بنجاح نستطيع تنفيذ الايعاز التالي لمقارنة عدد السجلات في كلا الجدولين :
 
SELECT COUNT(*)  FROM CUSTOMER
SELECT COUNT(*)FROM BACKUPDB.dbo.CUSTOMER_BK_01DEC2017 
 
للتحقق من ان عملية النسخ الاحتياطي تمت بنجاح نستطيع تنفيذ الايعاز التالي لمقارنة اول الف سجل من كلا الجدولين عن طريق التحقق من البيانات بصريا  وبعد التأكد من ان الجدولين متطابقين يمكن تنفيذ ايعاز DROP TABLE
 
SELECT TOP 1000 *  FROM CUSTOMER
SELECT TOP 1000 *  FROM BACKUPDB.dbo.CUSTOMER_BK_01DEC2017 

ليست هناك تعليقات:

إرسال تعليق