يضمن القيد الفريد في SQL أن تكون القيم الموجودة في عمود أو مجموعة من الأعمدة متميزة مما يمنع التكرارات. على عكس المفتاح الأساسي، فإنه يسمح بقيم NULL متعددة حيث يتم التعامل مع كل NULL على أنها فريدة بينما يتطلب المفتاح الأساسي أن تكون جميع القيم فريدة وغير فارغة.
سمات:
- يضمن أن العمود (الأعمدة) لها قيم فريدة.
- يُسمح بالقيم الخالية المتعددة.
- يمكن تطبيقه على عمود واحد أو أكثر.
- لا يقوم بإنشاء فهرس تلقائيًا (على الرغم من أن العديد من قواعد البيانات تقوم بذلك من أجل الأداء).
- يمكن إضافتها أو إزالتها باستخدام ALTER TABLE.
بناء الجملة:
CREATE TABLE table_name (
column1 datatype UNIQUE
column2 datatype
...
);
في بناء الجملة أعلاه:
- إنشاء جدول اسم_الجدول: يقوم بإنشاء جدول جديد.
- نوع بيانات العمود 1 فريد: يحدد عمودًا بنوع بيانات ويفرض قيمًا فريدة.
- نوع البيانات العمود 2: يحدد عمودًا آخر بدون القيد الفريد.
- كرر ذلك مع الأعمدة الإضافية حسب الحاجة.
مثال على استخدام قيد SQL الفريد
المثال 1: إنشاء جدول بقيود فريدة
لنقم بإنشاء جدول العملاء حيث يجب أن يكون عمود البريد الإلكتروني فريدًا.
CREATE TABLE Customers (
CustomerID INT PRIMARY KEY
Name VARCHAR(100)
Email VARCHAR(100) UNIQUE
Country VARCHAR(50)
);
في هذه الحالة يجب أن يكون لكل عميل عنوان بريد إلكتروني فريد. إذا حاولت إدراج بريد إلكتروني مكرر SQL سوف يثير خطأ.
INSERT INTO Customers (CustomerID Name Email Country)
VALUES (1 'John Doe' '[email protected]' 'USA');
INSERT INTO Customers (CustomerID Name Email Country)
VALUES (2 'Jane Smith' '[email protected]' 'Canada');
-- This will fail because '[email protected]' already exists
INSERT INTO Customers (CustomerID Name Email Country)
VALUES (3 'Alice Johnson' '[email protected]' 'UK');
سوف يفشل الإدراج الثالث لأن البريد الإلكتروني [email protected] موجود بالفعل في جدول العملاء.
مثال 2: استخدام UNIQUE مع أعمدة متعددة
يمكننا أيضًا تطبيق قيد UNIQUE على أعمدة متعددة للتأكد من أن مجموعة تلك الأعمدة فريدة من نوعها.
CREATE TABLE Orders (
OrderID INT PRIMARY KEY
CustomerID INT
ProductID INT
OrderDate DATE
UNIQUE (CustomerID ProductID)
);
في هذا المثال، يجب أن تكون مجموعة معرف العميل ومعرف المنتج فريدة مما يعني أنه لا يمكن للعميل طلب نفس المنتج أكثر من مرة.
المثال 3: التحقق من القيم الفريدة باستخدام الاستعلامات الفرعية
يسمح لك SQL بالتحقق من التفرد في الاستعلامات الفرعية. يمكنك استخدام الكلمة الأساسية UNIQUE في استعلام فرعي للتأكد من أن النتائج لا تحتوي على قيم مكررة.
SELECT CustomerID
FROM Orders
WHERE UNIQUE (
SELECT OrderID
FROM OrderDetails
WHERE Orders.CustomerID = OrderDetails.CustomerID
);
في هذا المثال، نتحقق مما إذا كانت هناك أية قيم مكررة لمعرف الطلب لكل عميل في جدول الطلبات. إذا قام الاستعلام الفرعي بإرجاع قيم فريدة، فسيتم تحديد معرف العميل.
حاول الصيد في جافا
نقاط مهمة
- يتم التقييم إلى true في استعلام فرعي فارغ.
- يُرجع صحيحًا فقط إذا كانت هناك صفوف فريدة موجودة كمخرجات الاستعلام الفرعي (تكون مجموعتان فريدتين إذا كانت قيمة أي سمة من الصفين مختلفة).
- يُرجع صحيحًا إذا كان الاستعلام الفرعي يحتوي على صفين مكررين مع سمة واحدة على الأقل كـ NULL.
ما الذي يضمنه القيد الفريد في SQL؟
- أ
يخزن العمود فقط القيم التي تظل غير مكررة
- ب
يسمح العمود بالقيم دون التحقق من التكرارات
- ج
يقبل العمود عدة قيم متطابقة في الصفوف
- د
يخزن العمود فقط القيم التي تكون دائمًا غير فارغة
يضمن UNIQUE أن جميع القيم الموجودة في العمود (أو مجموعة الأعمدة) يجب أن تكون متميزة مما يمنع الإدخالات المكررة.
كيف يختلف UNIQUE عن المفتاح الأساسي؟
- أ
UNIQUE يسمح بالعديد من القيم الفارغة؛ المفتاح الأساسي لا
- ب
UNIQUE يزيل القيم الخالية؛ يخزن المفتاح الأساسي دائمًا NULL
- ج
فهرسة القوى الفريدة؛ المفتاح الأساسي يمنع الفهارس
- د
UNIQUE يفرض الفرز؛ المفتاح الأساسي يتجنب الطلب
يسمح UNIQUE بقيم NULL متعددة لأن كل NULL يعتبر مختلفًا على عكس PRIMARY KEY الذي يحظر القيم الخالية تمامًا.
ماذا يحدث عند إدراج قيمة مكررة في عمود فريد؟
- أ
يقبل SQL الصف المكرر ويخزن كلا القيمتين
- ب
يستبدل SQL القيمة السابقة بالقيمة التي تم إدراجها مؤخرًا
- ج
يرفض SQL التكرارات وينشئ خطأ في التكامل
- د
يقوم SQL بتحويل القيمة المكررة إلى NULL تلقائيًا
إذا كانت إحدى القيم تنتهك القيد الفريد، فسيقوم SQL بحظر الإدراج أو التحديث والإبلاغ عن خطأ.
ما هي العبارة المتعلقة بـ UNIQUE و NULL الصحيحة؟
- أ
UNIQUE يعامل كافة القيم NULL كتكرارات متساوية
- ب
UNIQUE يعامل كافة القيم NULL كصفوف فريدة منفصلة
- ج
UNIQUE يحول كافة الإدخالات NULL إلى سلاسل فارغة
- د
UNIQUE يسمح بـ NULL فقط في حالة عدم وجود بيانات في العمود
يُسمح بالقيم الخالية المتعددة لأنه يتم تقييم كل NULL كقيمة مميزة غير قابلة للمقارنة ضمن UNIQUE.
لماذا تقوم العديد من قواعد البيانات بإنشاء فهرس لـ UNIQUE؟
- أ
لتنظيم القيم أبجديًا قبل الإدراج
- ب
لتنسيق البيانات الرقمية قبل تخزينها في الجدول
- ج
لتحويل القيم الخالية إلى قيم تسلسلية فريدة
- د
لتحسين التحقق من التكرارات أثناء التحقق من الصحة
يساعد الفهرس المحرك على اكتشاف القيم المكررة بسرعة مما يجعل فرض قيود UNIQUE أكثر كفاءة.
ما الذي تتحقق منه الكلمة الأساسية الفريدة في استعلام فرعي؟
- أ
يضمن أن يقوم الاستعلام الفرعي بإرجاع عمود رقمي واحد بالضبط
- ب
يضمن أن إخراج الاستعلام الفرعي يحتوي على صفوف مميزة فقط
- ج
يضمن أن الاستعلام الفرعي يقارن القيم دون استخدام الصلات
- د
يضمن أن الاستعلام الفرعي يتجاهل الصفوف التي تحتوي على أي قيمة فارغة
يتحقق UNIQUE من أن الاستعلام الفرعي لا ينتج أي صفوف مكررة - يجب أن يختلف كل صف تم إرجاعه في سمة واحدة على الأقل.
تم إكمال الاختبار بنجاح 2/6دقة : 0%قم بالدخول لمشاهدة الشرح 1/6 1/6 < Previous التالي >