Lesson5-Part2

Lesson5-Part2

Beginning with SQL

إبـــــــــــــــــــــــــــــــــدأ مع SQL

بسـم الله والصلاة والسلام على رسول الله,

2 – الأمر ALTER TABLE:

تعني الكلمتين ALTER TABLE عدل –أو تعديل- جدول على التوالي وكما يتضح من مدلول الأمر أنه خاص بالتعديل على الجداول او الوحدات المُنشأة سابقاً داخل قاعدة بيانات مُعينة وهو يُشبه الأمر CREATE TABLE فى صيغة التركيب فقط إلى حد ما, لكن كُل منهم له وظيفته ومهامه. وقد تعرفنا على مهام وتركيب الأمر CREATE TABLE مُسبقاً أما بالنسبة للأمر ALTER TABLE فهو كما أسلفنا مُتخصص فى التعديل على الجداول المُنشأة ويحتوي على عدة بنود كل منها له مهامه الخاصة إما بإنشاء حقل جديد (ADD) داخل أحد الجداول المُنشأة مُسبقاً أو تعديل Data Type –نوع بيانات-  أو تمكين-تعطيل إحتواء الفراغات –NULL, NOT NULL- لحقل (ALTER COLUMN) موجود داخل جدول مُعين أو حذف حقل بإكمله (DROP COLUMN) من جدول مُعين أو تغيير إسـم حقل (SP_RENAME) أو حتى تغيير إسم جدول بأكمله (SP_RENAME) فى جدول مُعين ويكون تركيب الأمر ALTER TABLE ترتيباً  للبنود (Clauses) السابقة فى الصيغ التالية:


ALTER TABLE [YourTableName] ADD [Column_Name] [DataType](Length) NULL Or NOT NULL –إنشـاء حقل-

——————————————————-

ALTER TABLE [YourTableName] ALTER COLUMN [Column_Name] [DataType](Length) NULL Or NOT NULL –تعديل حقل-

——————————————————-

حــذف حقل–ALTER TABLE [YourTableName] DROP COLUMN [Column_Name]
——————————————————-

تعديل إسـم جدول– SP_RENAME ‘OldTableName‘,’NewTableName
——————————————————-

SP_RENAME ‘YourTableName.OldColumnName‘,’NewColumnName‘,’COLUMN’ تعديل إسـم حقل–

لنُطبق الأن بعض الأمثلة على الأمر CREATE TABLE بكافة بندوه, أحدهم فالأخر, هيا:

الأن سوف نقوم بإنشـاء جدول صغير ونتعمد نسيان إنشاء أحد الحقول داخله حتى نقوم بإستخدام الأمر ALTER TABLE لإضافة ذلك الحقل المَنسي, وليكن هو الجدول “tblJobs” الذى قُمنا بإنشاءه فى قاعدة بيانتنا خلال تلك الدروس وسنتعمد نسيان الحقل “jobDescription”:


CREATE TABLE tblJobs

(

      jobID   SMALLINT NOT NULL,

      jobName NVARCHAR(20) NOT NULL,

      jobSalary MONEY NULL,

PRIMARY KEY (jobID)

)

الأن قد قمنا بإنشاء الجدول tblJobs ولكن قد نسينا إنشاء الحقل jobDescription وسنستخدم الأن أولى جملاتنا الموجهة عن طريق الأمر ALTER TABLE هيا:

سيراً على صيغتنا الأولى, سيكون الأمر كالتالي:

ALTER TABLE tblJobs ADD jobDescription TEXT NULL

إنتهت الجملة!

وبنفس الطريقة لأي جدول تُريد إضافة اي حقل من أي نوع إليه, ولكن لحظة لحظة!

لقد أخطأت الأمر السابق حيث أن نوع البيانات الخاص بالحقل jobDescription فى قاعدة بياناتنا هو NVARCHAR وليس TEXT إذن سوف نضطر للتعديل على الحقل, ولكن ما رأيك بإن ننتهز الفرصة ونستخدم البند الثاني من بنود الأمر ALTER TABLE لتطبيق التعديل على ذلك الحقل؟!… هيا:


ALTER TABLE tblJobs ALTER COLUMN jobDescription NVARCHAR(50) NULL

إنتهت الجملة!

أما الأن فإذا عصبك أحد الحقول فإليك بالحل الفاصل أخر بنود الأمر ALTER TABLE وهو خاص بحذف الحقول نهائياً, وليكن أننا بصدد حذف الحقل jobDescription ذلك الحقل المسكين الذى أتينا به من هنا إلى هناك وهو فى شدة الإستسلام, هيا:


ALTER TABLE tblJobs DROP COLUMN jobDescription

إنتهت الجملة!

أمر فى شدة السهولة والسلاسة, ولكنك قد تتعجب أنني بدأت بالحديث عن الأمر ALTER TABLE قبل أن نُكمل الحديث عن مشكلتنا الأخيرة فى الدرس السابق حينما حاولنا إنشاء الجدول tblEmployees برمجياً ولكن أُعقنا فى تحديد علاقة الحقل الغريب jobID المتواجد بالوحدة “tblEmployees” بالحقل الأساسي له بالجدول “tblJobs”.. آاااه صح, ولكن كيف؟

فى الحقيقة إذا كنت مُحدَق العينين أثناء قراءتك لذلك الدرس الأكثر من ممل ليُمكنني أن أقول لك أنه يُمكنك إنشاء العلاقات بين الجداول برمجياً مهما كانت بكل بساطة ولكن بنسبة 80% فقط, لما؟

لأن هُناك أربعة من الـ KeyWords تنقصك فقط حتى تتمكن من ذلك, وما هي إذا؟

هي:


CONSTRAINT

FK_YourForiegnTable_YourPrimaryTable

FOREIGN KEY

REFERENCES

تعني كلمة CONSTRAINT  القيد او الحبل الرابط –وأعتقد أنك مبرمج لماح ستفهم تلقائياً أنه حبل العلاقات الذي تراه أثناء إنشائك للعلاقات يدوياً- وأما الكلمة الثانية فهو بند يبدأ بإختصار FK لـ Foreign Key ويفصل بين الجدول الفرعي والأساسي بعلامة Under Score(_) –نوعاً من أنواع التدقيق على المُحرر- وأما الثالثة Foreign Key فهي أكيد لتحديد الحقل الفرعي كما يتبين من أسمها وأما الأخير References فيعني مصـ(ا)ـدر ودون عبقرية فهو هنا ليُحدد مصدر الحقل الأساسي من الجدول الأساسي…. إنتهى.

الصيغة كما تعودنا, بكل بساطة:


ALTER TABLE [YourTableName] ADD CONSTRAINT FK_YourForiegnKeyTable_YourPrimaryKeyTable FOREIGN KEY (YourForiegnKeyField,…) REFERENCES YourPrimaryKeyTable(YouPrimaryKeyField)

تحديد مصادر الحقول الفرعية(إنشاء العلاقات)–

وسيراً على مِثالُنا المُعلق منذ الدرس السابق لنُحدد الأن العلاقة للحقل الغريب jobID المتواجد بالجدول tblEmployees والذى مصدره الأساسي طبعاً داخل الجدول tblJobs وتحديداً فى الحقل jobID, هيا:


ALTER TABLE tblEmployees ADD CONSTRAINT FK_tblEmployees_tblJobs FOREIGN KEY (jobID) REFERENCES tblJobs(jobID)

إنتهت الجملة!

أما الأن فدعنا نُعطي للجملة الأخيرة فى الدرس السابق نسبة 100% وذلك بإنشاءنا للجدول من الألف إلى الياء بما فيه من علاقات, هيا:


CREATE TABLE tblEmployees

(

               empID INT NOT NULL,

               empSignUpDate DATE NOT NULL,

               empFirstName NVARCHAR(20) NOT NULL,

               empMiddleName NVARCHAR(20) NOT NULL,

               empLastName NVARCHAR(20) NOT NULL,

               empDateOfBirth DATE NOT NULL,

               empGender REAL NOT NULL,

               empPhone NVARCHAR(20) NOT NULL,

               empMobile NVARCHAR(20) NULL,

               jobID SMALLINT NOT NULL,

 PRIMARY KEY (empID)

)

ALTER TABLE tblEmployees ADD CONSTRAINT FK_tblEmployees_tblJobs FOREIGN KEY (jobID) REFERENCES tblJobs(jobID)

هُنا يُمكنني أن أقول وبكل ثقة أنها جملة كاملة وناجحة 100% دون شك.

أما الأن فدعنا ننسى الـ Right Click>> Rename أو الضغط على مفتاح F2 لتعديل أسماء الكائنات ونستخدم الأمر الأكثر من رائع sp_RENAME ولكن قبل البدء يجب علي أن أُنبهك هنا بأن تكون حذراً أثناء تعديلك على أسماء الكائنات حتى لا يستدعي منك الأمر إعادة تحديد العلاقات من جديد وكتابة الكثير من جمل SQL وليس قضاء وقت كثير بإستخدام Ms-Mouse!, وسيراً على صيغتنا وتعديلاً لأسم الجدول tblJobs إلى TableJobs ومن ثُم إعادته إلى اسمه الطبيعي مره أُخرى حتى لا يزعل, هيا:


sp_RENAME ‘tblJobs’, ‘TableJobs’

لنعيده مره أخرى:


sp_RENAME ‘TableJobs’, ‘tblJobs’

هذا بالنسبة لإعادة تسمية الجداول أما لإعادة تسمية الحقول فهو هو نفس الأمر ولكن فقط زيادة قيمة ‘COLUMN’ للمعامل الأخير للأمر sp_RENAME وإتباع طريقة إحترام الكبير بذكر إسم الجدول قبل إسم الحقل كالـتالي وليكن أننا سنقوم بإعادة تسمية الحقل jobDescription ونُعيده مره أخرى, هيـا:


sp_RENAME ‘tblJobs.jobDescription’, ‘JobeDescription’, ‘COLUMN’

لنُعيده مره أخرى:


sp_RENAME ‘tblJobs.JobeDescription’, ‘jobDescription’, ‘COLUMN’

بالشفا, لقد إنتهينا من الأمر ALTER TABLE, أستطيع أن أقول الأن أنه بإمكانك بإذن الله الأن أن تقوم بإنشاء أي وحدة أو جدول بما تحتوي على أي نوع من أنواع الحقول وكذلك الأطوال المُحددة لكل مُنهما وأيضاً تحديد العلاقات فيما بينها, ولكن بكل أسف لا يُمكنك حذف جدول برمجياً, هيا لنُتم الأمر كاملاً.

3 – الأمر DROP TABLE:

دون أي ثرثرة فارغة الأمر أبسط من أن يأخذ نقطة وحده ولكنها أحد مُحاولات إثارة عصبيتك, يُمكنك حذف جدول بإكمله بإستخدام الأمر DROP TABLE والذى يعني على التوالي حذف -إلقاء- جدول وله صيغة مسكينة وحيدة, تتضح فى التالي:

حذف جدولDROP TABLE [YourTableName] —

وكمثالاً لنحذف الجدول المسكين tblJobs, هيا:

DROP TABLE tblJobs

إنتهت الجملة!

أستطيع الأن أخبرك بإننا قد إنتهينا بفضل الله من الأمرين CREATE TABLE, ALTER TABLE و DROP TABLE, بل وقد إنتهينا تقريباً أولى فروع القسم الأول Basic Section  وهو (DDL أو Data Definition Language –لا تنسى هذه المصطلحات- فالـ Expressions شئ هام إليك كمبرمج) حيث أنه لم يبقى لنا فيه إلا القليل وذلك لأنه بإطلاعك على ذلك الدرس والسابق له فتكون قد تجمعت إليك حصيلة قوية جداً لإساسيات سوف تُساعدك فى باقي الدروس القادمة بإذن الله, ودعني أُنبهك بإننا سنستثني أوامر الفهارس (INDEXES) وجداول الإستعلامات (VIEWS) حيث أنها مُرتبطة إرتباطاً قوياً بالفرع الأخير من ذلك القسم وهو الفرع (DQL أو Data Query Language) وسوف نتحدث عن الفرع الثاني من القسم الأول وهو الفرع (DML أو Data Manipulation Language) وذلك…

فى الدرس القادم بإذن الله>>

Advertisements

One thought on “Lesson5-Part2

  1. شكراً لك على جودة الطرح وروعة الأسلوب ..
    على أني موظف من فترة في data warehousing الا اني ارجع واستفيد من مقالاتك .. وربما كنت أكره قواعد البيانات لكني أحببتها بسبب مقالاتك السعيدة 🙂

    بانتظار الإكمال يا غالي ..

اترك رد

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   / تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   / تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   / تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   / تغيير )

Connecting to %s