الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

استعلام تعريف البيانات

بدأه morsyyy في 27 يونيو 2012 · 4 رد · 2,063 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

الى كل من يجاهد بوقتة وعلمة فى هذا المنتدى من مشرفين ومبرمجين ومحترفين لكم منى تحياتى وسلامى

اريد ان اتعلم ماهو "استعلام تعريف البيانات" وكيفية انشائة ولو تكرمتم اريد مثال بسيط لو امكن ....واكون شاكرا جدا

والسلام عليكم ورحمة الله وبركاته

#2
morsyyy كتب:

السلام عليكم

الى كل من يجاهد بوقتة وعلمة فى هذا المنتدى من مشرفين ومبرمجين ومحترفين لكم منى تحياتى وسلامى

اريد ان اتعلم ماهو "استعلام تعريف البيانات" وكيفية انشائة ولو تكرمتم اريد مثال بسيط لو امكن ....واكون شاكرا جدا

والسلام عليكم ورحمة الله وبركاته

اخي الفاضل : مرسي

السلام عليكم ورحمة الله وبركاته

هذه نبذه مختصرة عن استعلام لغة تعريف البيانات DDL - Data Definition language

المقدمة :

على خلاف الاستعلامات الأخرى، لا يعمل استعلام تعريف البيانات على استرداد البيانات . بدلاً من ذلك، يستخدم استعلام تعريف البيانات " لغة تعريف البيانات ( DDL - Data Definition language ) " لإنشاء كائنات قاعدة بيانات أو تعديلها أو حذفها.

ملاحظة : تعتبر لغة تعريف البيانات (DDL) جزءاً من لغة الاستعلامات المركبة (SQL).

نقاط هامة :

*. يمكن أن تكون استعلامات تعريف البيانات ملائمة جداً.

*. يمكنك حذف أجزاء من مخطط قاعدة البيانات وإعادة إنشائها بانتظام بواسطة تشغيل بعض الاستعلامات.

*. استخدم استعلام تعريف البيانات إذا كنت على دراية بجمل SQL وكنت تخطط لحذف جداول أو قيود أو فهارس أو علاقات معينة وإعادة إنشائها.

*. قم بعمل نسخة احتياطية من أي جداول مُضمنة قبل تشغيل استعلام تعريف بيانات.

تحذير : قد يكون استخدام استعلامات تعريف البيانات لتعديل كائنات قاعدة البيانات محفوفاً بالمخاطر، نظراً لأن الإجراءات غير مصحوبة بمربعات حوار التأكيد. فإذا ارتكبت خطأ ما، فقد تفقد البيانات أو تقوم بتغيير تصميم الجدول دون قصد. لذلك، كن حذراً عند استخدام استعلام تعريف البيانات لتعديل الكائنات الموجودة في قاعدة البيانات. وإذا لم تكن مسؤولاً عن الحفاظ على قاعدة البيانات التي تستخدمها، فيجب استشارة مسؤول قاعدة البيانات قبل تشغيل استعلام تعريف البيانات.

الكلمات الأساسية في " لغة تعريف البيانات (DDL) "

post-15367-060737900 1340774027_thumb.gi

لإنشاء قاعدة بيانات نكتبها بهذه الطريقة

CREATE DATABASE database_name

لإنشاء جدول في قاعدة البيانات نكتبه بهذه الطريقة

CREATE TABLE table_name
(column_name1 data_type,
column_name2 data_type,
.......
)

مثال

انشاء جدول اسمه Company وبه حقل C_ID مفهرس و يحتوي على البيانات التالية مع تحديد احجام الحقول :

الرقم C_ID

الاسم C_NAME

التيلفون C_PHONE

التاريخ C_DATE

ملاحظات NOTES

نكتبه بهذه الطريقة

CREATE TABLE Company 
([C_ID] integer,
[C_NAME] text (30),
[C_DATE] date,
[C_PHONE] text (20),
[NOTES] memo,
CONSTRAINT [Index1] PRIMARY KEY ([C_ID]));

إنشاء فهرس فريد بدون تكرار UNIQUE على حقل معين نكتبه بهذه الطريقة

CREATE UNIQUE INDEX index_name ON table_name (column_name)

انشاء فهرس INDEX مع السماح بالتكرار على حقل معين نكتبه بهذه الطريقه

CREATE INDEX index_name ON table_name (column_name)

مثال

انشاء فهرس على حقل C_NAME في الجدول Company نكتبه بهذه الطريقة

CREATE INDEX CompanyIndex ON Company (C_NAME)

إنشاء فهرس على حقل معين مع امكانية الفرز التنازلي Descending Order نكتبه بهذه الطريقة

CREATE INDEX CompanyIndex ON Company (C_NAME DESC)

لإنشاء فهارس على اكثر من حقل مثلا الحقل C_ID و الحقل C_NAME في الجدول Company نكتبه بهذه الطريقة

CREATE INDEX CompanyIndex ON Company (C_ID, C_NAME)

إستخدام عبارة ALTER TABLE لإنشاء حقول اضافة او حذف حقول من الجدول وتكون صيغتها بهذه الطريقة

ALTER TABLE table_name 
ADD column_name datatype

ALTER TABLE table_name 
DROP COLUMN column_name

ملاحظة : بعض قواعد البيانات لا تسمح بحذف الحقول بهذه الطريقة

مثال

لإضافة حقل المدينه City بحجم 30 حرف الى الجدول Company نكتبه بهذه الطريقة

ALTER TABLE Person ADD City varchar(30)

ولحذف الحقل المدينة City من الجدول Company نكتبه بهذه الطريقة

ALTER TABLE Company DROP COLUMN City

سؤال : هل من الممكن انشاء جداول جاهزه بكل الحقول المطلوبه ووضع الفهارس الخاصة بها ومن ثم عمل علاقات بين هذه الجداول بواسطة SQL ؟

جواب : نعم وبكل سهوله ونحن مغمضين اعيننا كمان فالموضوع اسهل من انك تشرب كوب شاي منعنش بنعناع المدينه فكل ما هناك اننا سنفتح الإستعلام فاضي ومن ثم نختار نوع الإستعلام الخاص بـ SQL ثم نختار تعريف بيانات ونبدأ في كتابة جملة الإستعلام بهذه الطريقة :

انشاء جدول الأصناف

CREATE TABLE [Categories] (
	[CategoryID] AUTOINCREMENT,
	[CategoryName] TEXT(15)  NOT NULL,
	[Description] MEMO ,
	[Picture] IMAGE,
	CONSTRAINT [CategoryName] UNIQUE ([CategoryName]),
	CONSTRAINT [PrimaryKey] PRIMARY KEY ([CategoryID]));

اخيرا نقوم بتشغيل الإستعلام للتأكد من عدم وجود اخطاء وسوف ينشأ لدينا جدول بإسم Categories ثم نقوم بحفظ الإستعلام بإسم مثلا qryCrTbEmployees نقوم الآن بإستعراض الجدول حتى نتأكد من الفهرس والحقول ثم نقوم بإغلاقه .

انشاء جدول الزبائن

CREATE TABLE [Customers] (
	[CustomerID] TEXT(5) ,
	[CompanyName] TEXT(40)  NOT NULL,
	[ContactName] TEXT(30) ,
	[ContactTitle] TEXT(30) ,
	[Address] TEXT(60) ,
	[City] TEXT(15) ,
	[Region] TEXT(15) ,
	[PostalCode] TEXT(10) ,
	[Country] TEXT(15) ,
	[Phone] TEXT(24) ,
	[Fax] TEXT(24) ,
	CONSTRAINT [PrimaryKey] PRIMARY KEY ([CustomerID]));

اخيرا نقوم بتشغيل الإستعلام للتأكد من عدم وجود اخطاء وسوف ينشأ لدينا جدول بإسم Customers ثم نقوم بحفظ الإستعلام بإسم مثلا qryCrTbCustomers .

إنشاء جدول الموظفين

CREATE TABLE [Employees] (
	[EmployeeID] AUTOINCREMENT,
	[LastName] TEXT(20)  NOT NULL,
	[FirstName] TEXT(10)  NOT NULL,
	[Title] TEXT(30) ,
	[TitleOfCourtesy] TEXT(25) ,
	[BirthDate] DATETIME,
	[HireDate] DATETIME,
	[Address] TEXT(60) ,
	[City] TEXT(15) ,
	[Region] TEXT(15) ,
	[PostalCode] TEXT(10) ,
	[Country] TEXT(15) ,
	[HomePhone] TEXT(24) ,
	[Extension] TEXT(4) ,
	[Photo] TEXT(255) ,
	[Notes] MEMO ,
	[ReportsTo] LONG,
	CONSTRAINT [PrimaryKey] PRIMARY KEY ([EmployeeID]));

اخيرا نقوم بتشغيل الإستعلام للتأكد من عدم وجود اخطاء وسوف ينشأ لدينا جدول بإسم Employees ثم نقوم بحفظ الإستعلام بإسم مثلا qryCrTbEmployees .

انشاء جدول تفاصيل الطلبات

CREATE TABLE [OrderDetails] (
	[OrderID] LONG,
	[ProductID] LONG NOT NULL,
	[UnitPrice] CURRENCY NOT NULL ,
	[Quantity] SMALLINT NOT NULL ,
	[Discount] SINGLE NOT NULL ,
	CONSTRAINT [PrimaryKey] PRIMARY KEY ([OrderID], [ProductID]));

اخيرا نقوم بتشغيل الإستعلام للتأكد من عدم وجود اخطاء وسوف ينشأ لدينا جدول بإسم OrderDetails ثم نقوم بحفظ الإستعلام بإسم مثلا qryCrTbOrderDetails .

انشاء جدول الطلبات

CREATE TABLE [Orders] (
	[OrderID] AUTOINCREMENT,
	[CustomerID] TEXT(5) ,
	[EmployeeID] LONG,
	[OrderDate] DATETIME,
	[RequiredDate] DATETIME,
	[ShippedDate] DATETIME,
	[ShipVia] LONG,
	[Freight] CURRENCY DEFAULT 0,
	[ShipName] TEXT(40) ,
	[ShipAddress] TEXT(60) ,
	[ShipCity] TEXT(15) ,
	[ShipRegion] TEXT(15) ,
	[ShipPostalCode] TEXT(10) ,
	[ShipCountry] TEXT(15) ,
	CONSTRAINT [PrimaryKey] PRIMARY KEY ([OrderID]));

اخيرا نقوم بتشغيل الإستعلام للتأكد من عدم وجود اخطاء وسوف ينشأ لدينا جدول بإسم Orders ثم نقوم بحفظ الإستعلام بإسم مثلا qryCrTbOrders .

انشاء جدول المنتجات

CREATE TABLE [Products] (
	[ProductID] AUTOINCREMENT,
	[ProductName] TEXT(40)  NOT NULL,
	[SupplierID] LONG,
	[CategoryID] LONG,
	[QuantityPerUnit] TEXT(20) ,
	[UnitPrice] CURRENCY ,
	[UnitsInStock] SMALLINT ,
	[UnitsOnOrder] SMALLINT ,
	[ReorderLevel] SMALLINT ,
	[Discontinued] BIT NOT NULL ,
	CONSTRAINT [PrimaryKey] PRIMARY KEY ([ProductID]));

اخيرا نقوم بتشغيل الإستعلام للتأكد من عدم وجود اخطاء وسوف ينشأ لدينا جدول بإسم Products ثم نقوم بحفظ الإستعلام بإسم مثلا qryCrTbProducts .

انشاء جدول الشحن

CREATE TABLE [Shippers] (
	[ShipperID] AUTOINCREMENT,
	[CompanyName] TEXT(40)  NOT NULL,
	[Phone] TEXT(24) ,
	CONSTRAINT [PrimaryKey] PRIMARY KEY ([ShipperID]));

اخيرا نقوم بتشغيل الإستعلام للتأكد من عدم وجود اخطاء وسوف ينشأ لدينا جدول بإسم Shippers ثم نقوم بحفظ الإستعلام بإسم مثلا qryCrTbShippers .

انشاء جدول الموردين

CREATE TABLE [Suppliers] (
	[SupplierID] AUTOINCREMENT,
	[CompanyName] TEXT(40)  NOT NULL,
	[ContactName] TEXT(30) ,
	[ContactTitle] TEXT(30) ,
	[Address] TEXT(60) ,
	[City] TEXT(15) ,
	[Region] TEXT(15) ,
	[PostalCode] TEXT(10) ,
	[Country] TEXT(15) ,
	[Phone] TEXT(24) ,
	[Fax] TEXT(24) ,
	[HomePage] MEMO ,
	CONSTRAINT [PrimaryKey] PRIMARY KEY ([SupplierID]));

اخيرا نقوم بتشغيل الإستعلام للتأكد من عدم وجود اخطاء وسوف ينشأ لدينا جدول بإسم Suppliers ثم نقوم بحفظ الإستعلام بإسم مثلا qryCrTbSuppliers .

الحمد الله انتهينا من انشاء الجداول جميعها ولو نلاحظ ان بعض الجداول قمنا بوضع لها فهرسين PrimaryKey مع الترقيم تلقائي وبعضها رقم فقط AUTOINCREMENT في نفس الجدول .

الآن جاء دور انشاء العلاقات بين الجدول وبنفس الطريقة السابقة نقوم بإستخدام عبارة ALTER TABLE مع عبارة ADD CONSTRAINT ثم نضع اسماء الجداول واسماء الحقول بهذه الطريقة :

انشاء علاقة واحد الى متعدد بين جدول الطلبات Orders وجدول الزبائن Customers حيث المفتاح الأساسي CustomerID موجود في جدول الزبائن والمفتاح الفرعي موجود في جدول الطلبات .

ALTER TABLE [Orders] ADD CONSTRAINT [CustomersID] FOREIGN KEY ([CustomerID]) REFERENCES [Customers] ([CustomerID]);

اخيرا نقوم بتشغيل الإستعلام للتأكد من عدم وجود اخطاء وسوف يقوم بإنشاء علاقة واحد الى متعدد بين الجدولين ثم نقوم بحفظ الإستعلام بإسم مثلا qryRelationshipOrderAndCustomers .

انشاء علاقة واحد الى متعدد بين جدول الطلبات Orders وجدول الزبائن Employees حيث المفتاح الأساسي EmployeeID موجود في جدول الموظفين والمفتاح الفرعي موجود في جدول الطلبات .

ALTER TABLE [Orders] ADD CONSTRAINT [EmployeesID] FOREIGN KEY ([EmployeeID]) REFERENCES [Employees] ([EmployeeID]);

اخيرا نقوم بتشغيل الإستعلام للتأكد من عدم وجود اخطاء وسوف يقوم بإنشاء علاقة واحد الى متعدد بين الجدولين ثم نقوم بحفظ الإستعلام بإسم مثلا qryRelationshipOrderSAndEmployees .

انشاء علاقة واحد الى متعدد بين جدول تفاصيل الطلبات Order Details وجدول الطلبات Orders حيث المفتاح الأساسي OrderID موجود في جدول الطلبات والمفتاح الفرعي موجود في جدول تفاصيل الطلبات .

ALTER TABLE [Order Details] ADD CONSTRAINT [OrderID] FOREIGN KEY ([OrderID]) REFERENCES [Orders] ([OrderID]);

اخيرا نقوم بتشغيل الإستعلام للتأكد من عدم وجود اخطاء وسوف يقوم بإنشاء علاقة واحد الى متعدد بين الجدولين ثم نقوم بحفظ الإستعلام بإسم مثلا qryRelationshipOrderDetailsAndOrders .

انشاء علاقة واحد الى متعدد بين جدول الطلبات Orders وجدول الشحن Shippers حيث المفتاح الأساسي ShipperID موجود في جدول الشحن والمفتاح الفرعي ShipVia موجود في جدول تفاصيل الطلبات .

ALTER TABLE [Orders] ADD CONSTRAINT [ShipVia] FOREIGN KEY ([ShipVia]) REFERENCES [Shippers] ([ShipperID]);

اخيرا نقوم بتشغيل الإستعلام للتأكد من عدم وجود اخطاء وسوف يقوم بإنشاء علاقة واحد الى متعدد بين الجدولين ثم نقوم بحفظ الإستعلام بإسم مثلا qryRelationshipOrdersAndShippers .

انشاء علاقة واحد الى متعدد بين جدول تفاصيل الطلبات OrdersDetails وجدول المنتجات Products حيث المفتاح الأساسي ProductID موجود في جدول المنتجات والمفتاح الفرعي ProductID موجود في جدول تفاصيل الطلبات .

ALTER TABLE [OrderDetails] ADD CONSTRAINT [ProductsOrder Details] FOREIGN KEY ([ProductID]) REFERENCES [Products] ([ProductID]);

اخيرا نقوم بتشغيل الإستعلام للتأكد من عدم وجود اخطاء وسوف يقوم بإنشاء علاقة واحد الى متعدد بين الجدولين ثم نقوم بحفظ الإستعلام بإسم مثلا qryRelationshipOrdersDetailsAndProducts .

انشاء علاقة واحد الى متعدد بين جدول المنتجات Products وجدول الأصناف Categories حيث المفتاح الأساسي CategoryID موجود في جدول الأصناف والمفتاح الفرعي موجود في جدول المنتجات .

ALTER TABLE [Products] ADD CONSTRAINT [CategoryID] FOREIGN KEY ([CategoryID]) REFERENCES [Categories] ([CategoryID]);

اخيرا نقوم بتشغيل الإستعلام للتأكد من عدم وجود اخطاء وسوف يقوم بإنشاء علاقة واحد الى متعدد بين الجدولين ثم نقوم بحفظ الإستعلام بإسم مثلا qryRelationshipProductsAndCategories .

انشاء علاقة واحد الى متعدد بين جدول المنتجات Products وجدول الموردين Suppliers حيث المفتاح الأساسي SupplierID موجود في جدول الموردين والمفتاح الفرعي موجود في جدول المنتجات .

ALTER TABLE [Products] ADD CONSTRAINT [SupplierID] FOREIGN KEY ([SupplierID]) REFERENCES [Suppliers] ([SupplierID]);

اخيرا نقوم بتشغيل الإستعلام للتأكد من عدم وجود اخطاء وسوف يقوم بإنشاء علاقة واحد الى متعدد بين الجدولين ثم نقوم بحفظ الإستعلام بإسم مثلا qryRelationshipProductsAndSuppliers .

بعد الإنتهاء من كل هذا نذهب الى مخطط العلاقات ونتأكد من عملنا هل هو سليم ام لا وسنجده بهذا الشكل

post-15367-086335700 1340774321_thumb.gi

وبهذا نكون قد انتهينا من من انشاء الجداول وانشاء العلاقات

الآن سوف اقوم بحذف الجداول والعلاقات جميعا من قاعدة البيانات لغرض الفحص في قاعدة جديده حيث سأقوم بإستيراد الإستعلامات فقط الى القاعدة الجديده ومن ثم اقوم بإنشاء نموذج فارغ تماما واضع به زر أمر ليقوم مشكورا بتشغيل جميع الإستعلامات لكي يتم انشاء الجداول والعلاقات بينها بدون تدخل مني حتى اتأكد ان عملنا مضبوط 100% ولا يوجد به اي خطا ونستطيع ان ننافس به مايكروسوفت .

اذا كل ما علينا اننا سنضع تحت زر الأمر في النموذج الكود التالي :

Private Sub CreateTablesAndRelationshipsBYSQL_Click()
DoCmd.OpenQuery "qryCrTbCategories"
DoCmd.OpenQuery "qryCrTbCustomers"
DoCmd.OpenQuery "qryCrTbEmployees"
DoCmd.OpenQuery "qryCrTbOrderDetails"
DoCmd.OpenQuery "qryCrTbOrders"
DoCmd.OpenQuery "qryCrTbProducts"
DoCmd.OpenQuery "qryCrTbShippers"
DoCmd.OpenQuery "qryCrTbSuppliers"
DoCmd.OpenQuery "qryRelationshipOrderAndCustomers"
DoCmd.OpenQuery "qryRelationshipOrderDetailsAndOrders"
DoCmd.OpenQuery "qryRelationshipOrdersAndEmployees"
DoCmd.OpenQuery "qryRelationshipOrdersAndShippers"
DoCmd.OpenQuery "qryRelationshipOrdersDetailsAndProducts"
DoCmd.OpenQuery "qryRelationshipProductsAndCategories"
DoCmd.OpenQuery "qryRelationshipProductsAndSuppliers"
MsgBox "تم إنشاء الجداول والعلاقات بنجاح", vbInformation, "مبروك"
End Sub

وفي أقل من ثانية واحده سيقوم بإنشاء الجداول والعلاقات وتصبح جاهزة للإستخدام .

وهذا هو البرنامج كاملا يوجد به كافة الإستعلامات لإنشاء الجداول وفهارسها وكذلك الإستعلامات الخاصة بإنشاء العلاقات بين الجداول وكذلك النموذج المطلوب .

ملاحطة : قبل الضغط على زر الأمر تأكد انه لا يوجد في البرنامج اي جداول او علاقات وبإمكانك التاكد من ذلك .

post-15367-080119200 1340774386_thumb.gi

zaCreateTablesAndRelationshipsBySQL.rar

سؤال : هل نستطيع عمل ذلك من خلال الكود البرمجي ؟

جواب : بكل سهولة نستطيع عمل ذلك ...

post-15367-042783800 1340774517_thumb.gi

zaCreateTablesAndRelationshipsByCode.rar

اتمنى ان يكون هذا الموضوع قد اجاب على بعض التساؤلات حول استعلام تعريف البيانات

بالتوفيق

المرفقات
DDL.gifDDL1.gifDDL2.gifDDL3.gif
3
#3

الاستاذة العظيمة زهره ام عهود

السلام عليكم ورحمة الله وبركاتة

احب ان اقول لك ان شرحك عظيم جدا والاستفاده من هذا الموضوع عظيمة بفضل الله اولا ثم بفضل اسلوب وطريقة الشرح فجزاك الله خيرا ووفقك لما يحبه ويرضى وزادك علما

فبرجاء تثبيت هذا الموضوع للاهمية

وياريت ان يكون هذا الشرح الجميل موجود على شيت ورد او pdf file ورفعه على المنتدى لو امكن

ويارب يجعلة فى ميزان حسناتكم

والسلام عليكم

#4

بارك الله فيك اختنا الغالية ام عهود جزاك الله خيرا على ما تقدميه لاخوانك في المنتدى الرائع سائلين المولى عز وجل ان يمن عليك بالصحة والعافية أميييييييييييييييييييييين يارب العالمين

#5

شرح اكتر من رائع ومعلومات جديدة عليا شكرا ليكى استاذتنا العملاقة زهرة

ولكن بدي سؤال

متى يمكننا الاستفادة من هذا الاستعلام التعريفى فى برامجنا ؟ اعطنى امثلة؟

من يعرف ان يعمل حسنا و لا يعمل فذلك خطية له.(يعقوب 4: 17)

مواضيع مشابهة