logo

SQL | אילוץ ייחודי

האילוץ UNIQUE ב-SQL מבטיח שערכים בעמודה או בקבוצת עמודות ברורים ומונעים כפילויות. שלא כמו PRIMARY KEY הוא מאפשר ערכי NULL מרובים מכיוון שכל NULL מטופל כייחודי בעוד שמפתח ראשי דורש שכל הערכים יהיו ייחודיים ולא NULL.

תכונות:

  • מבטיח לעמודות/עמודות יש ערכים ייחודיים.
  • מותרים מספר NULL.
  • יכול להחיל על עמודה אחת או יותר.
  • אינו יוצר אינדקס באופן אוטומטי (אם כי מסדי נתונים רבים עושים זאת לביצועים).
  • ניתן להוסיף או להסיר באמצעות ALTER TABLE.

תַחבִּיר:



CREATE TABLE table_name (  
 column1 datatype UNIQUE
 column2 datatype
 ...
);

בתחביר לעיל:

  • CREATE TABLE שם_טבלה: יוצר טבלה חדשה.
  • עמודה1 סוג נתונים ייחודי: מגדיר עמודה עם סוג נתונים ואוכף ערכים ייחודיים.
  • סוג נתונים של עמודה 2: מגדיר עמודה נוספת ללא האילוץ הייחודי.
  • חזור על עמודות נוספות לפי הצורך.

דוגמה לשימוש באילוץ ה-SQL UNIQUE

דוגמה 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)
);

בדוגמה זו השילוב של CustomerID ו-ProductID חייב להיות ייחודי כלומר לקוח לא יכול להזמין את אותו מוצר יותר מפעם אחת.

דוגמה 3: בדיקת ערכים ייחודיים באמצעות שאילתות משנה

SQL מאפשר לך לבדוק ייחוד בשאילתות משנה. אתה יכול להשתמש במילת המפתח UNIQUE בשאילתת משנה כדי להבטיח שהתוצאות לא מכילות ערכים כפולים.

SELECT CustomerID  
FROM Orders
WHERE UNIQUE (
SELECT OrderID
FROM OrderDetails
WHERE Orders.CustomerID = OrderDetails.CustomerID
);

בדוגמה זו אנו בודקים אם ישנם ערכי OrderID כפולים עבור כל לקוח בטבלת ההזמנות. אם שאילתת המשנה מחזירה ערכים ייחודיים, הלקוח מזהה ייבחר.

נקודות חשובות

  • מוערך כ-true בשאילתת משנה ריקה.
  • מחזירה true רק אם קיימים tuples ייחודיים כפלט של שאילתת המשנה (שני tuples הם ייחודיים אם הערך של תכונה כלשהי של שני tuples שונה).
  • מחזירה true אם לשאילתת המשנה יש שתי שורות כפולות עם תכונה אחת לפחות בתור NULL.
חידון מוצע חידון ערוך 6 שאלות

מה מבטיח האילוץ UNIQUE ב-SQL?

  • א

    העמודה מאחסנת רק ערכים שנשארו לא משוכפלים

  • ב

    עמודה מאפשרת ערכים מבלי לבדוק כפילויות

  • ג

    העמודה מקבלת מספר ערכים זהים בשורות

    כיצד להפעיל סקריפט בלינוקס
  • ד

    העמודה מאחסנת רק ערכים שהם תמיד שאינם NULL

הֶסבֵּר:

UNIQUE מבטיח שכל הערכים בעמודה (או בקבוצת העמודות) חייבים להיות ברורים ומונעים ערכים כפולים.

במה שונה UNIQUE ממפתח PRIMARY?

  • א

    UNIQUE מאפשר ערכי NULL רבים; המפתח הראשי לא

    java מקבל תאריך נוכחי
  • ב

    UNIQUE מסיר NULLs; המפתח הראשי תמיד מאחסן NULL

  • ג

    אינדקס כוחות ייחודיים; מפתח ראשי מונע אינדקסים

  • ד

    UNIQUE אוכפת מיון; מפתח ראשי מונע הזמנה

הֶסבֵּר:

UNIQUE מתיר ערכי NULL מרובים מכיוון שכל NULL נחשב שונה בשונה מ-PRIMARY KEY האוסר לחלוטין על NULL.

מה קורה בעת הוספת ערך כפול בעמודה UNIQUE?

  • א

    SQL מקבל שורה כפולה ומאחסן את שני הערכים

  • ב

    SQL מחליף את הערך הקודם באחרון שהוכנס

  • ג

    SQL דוחה כפילות ויוצר שגיאת שלמות

  • ד

    SQL ממיר ערך כפול ל-NULL באופן אוטומטי

הֶסבֵּר:

אם ערך מפר את האילוץ UNIQUE SQL חוסם את ההוספה או העדכון ומדווח על שגיאה.

זאב מול שועל

איזו הצהרה על UNIQUE ו-NULL נכונה?

  • א

    UNIQUE מתייחס לכל ערכי NULL ככפולים שווים

  • ב

    UNIQUE מתייחס לכל ערכי NULL כשורות ייחודיות נפרדות

  • ג

    UNIQUE ממיר את כל הערכים NULL למחרוזות ריקות

  • ד

    UNIQUE מאפשר NULL רק כאשר אין נתונים בעמודה

הֶסבֵּר:

מספר NULLs מותרים מכיוון שכל NULL מוערך כערך מובהק שאין להשוות תחת UNIQUE.

מדוע מסדי נתונים רבים יוצרים אינדקס עבור UNIQUE?

  • א

    לארגן ערכים בסדר אלפביתי לפני ההוספה

  • ב

    לעצב נתונים מספריים לפני אחסון בטבלה

  • ג

    כדי להמיר NULLs לערכים עוקבים ייחודיים

  • ד

    לשיפור בדיקת כפילויות במהלך האימות

הֶסבֵּר:

אינדקס עוזר למנוע לזהות במהירות ערכים כפולים מה שהופך את אכיפת האילוצים של UNIQUE ליעילה יותר.

מה בודקת מילת המפתח UNIQUE בשאילתת משנה?

java לעשות בזמן
  • א

    מבטיח שאילתת משנה מחזירה בדיוק עמודה מספרית אחת

  • ב

    מבטיח שפלט שאילתת משנה מכיל רק שורות נפרדות

  • ג

    מבטיחה ששאילתת משנה משווה ערכים מבלי להשתמש בצירופים

  • ד

    מבטיח ששאילתת המשנה תתעלם משורות המכילות NULL כלשהו

הֶסבֵּר:

UNIQUE מאמת ששאילתת המשנה אינה מייצרת כפילות כפולות - כל שורה המוחזרת חייבת להיות שונה בתכונה אחת לפחות.

SQL | אילוץ ייחודיהחידון הסתיים בהצלחה הציון שלך:  2/6דיוק: 0%התחבר כדי להציג הסבר 1/6 1/6 < Previous הבא >