SQL – Keys

SQL Server
SQL Server

Key ב-SQL הוא צירוף או איחוד של שדות שונים בטבלה שניתן להשתמש בו על מנת לשלוף רשומות או נתונים מהטבלה בהתאם לתנאי מסוים, כמו כן ניתן להשתמש בו על מנת ליצור מערכת יחסים בין טבלאות שונות.

SQL KEYS

ב-SQL קיימים סוגים שונים של-Keys שבאמצעותם ניתן למשל לזהות שורות מהטבלה (ID), או\וגם על מנת לתאר\ליצור מערכת יחסים בין טבלאות שונות.
לפני שנתחיל, נסתכל על סוגי ה-Keys אשר קיימים ב-SQL:

  • SUPER KEY – אוסף של מפתחות אשר שניתן להשתמש בהם על מנת לזהות רשומה באופן ייחודי בטבלה, PRIMARY KEY, UNIQUE KEY, ALTERNATE KEY למשל.
  • CANDIDATE KEY – אוסף של שורות\עמודות שניתן לזהות באופן ייחודי בטבלה. טבלה יכולה להכיל כמה כאלה, כאשר כל אחד(בלבד) מהם יכול לתפקד כ-PRIMARY KEY.
  • PRIMARY KEY – אוסף של שורות\עמודות בטבלה שיש להם מזהה ייחודי שניתן לזהות באמצעותו רשומות. הוא לא יכול לקבל את הערך –NULL, ורק CANDIDATE KEY אחד יכול להיות ה-PRIMARY KEY.
  • ALTERNATE KEY – מפתח זה יכול לתפקד כ-PRIMARY KEY, ברמת העיקרון, זהו CANDIDATE KEY שהוא כרגע לא ה-PRIMARY KEY.
  • COMPOSITE\COMPUND KEY – צירו, שורות\עמודות של טבלה. הוא יכול להיות CANDIDATE KEY או PRIMARY KEY.
  • UNINQUE KEY – בדומה ל-PRIMARY KEY, זהו אוסף של שורות\עמודות בטבלה שיש להם מזהה ייחודי שניתן לזהות באמצעותו רשומות, רק שלא ניתן להכיל בו ערכים כפולים.
  • FOREIGN KEY – שדה בטבלה מסוימת שהוא ה-PRIMARY KEY של טבלה אחרת. מפתח זה יודע להכיל ערכים כפולים.

PRIMARY KEY 

כפי שהוסבר זהו אילוץ אשר מזהה רשומות באופן ייחודי בטבלה, כלומר שהוא מכיל רק ערכים ייחודים (UNIQUE).
טבלה יכולה להכיל PRIMARY KEY אחד בלבד.
צרו את הטבלה הבאה:

CREATE TABLE Person 
(
    ID int NOT NULL PRIMARY KEY,
    FirstName nvarchar(50),
    (LastName nvarchar(50,
    Age int
)

כעת נכניס את הרשומות הבאות לטבלה:

INSERT INTO PERSON(ID, FirstName, LastName, Age)
VALUES
(1,'Jhon','Nemo',56),
(2,'Jhon','Nemo',56),
(3,'Ronny','Zaur',80),
(4,'Dina','Zaura',86),
(5,'Jeff','Fiejell',23),
(6,'Dona','Nona',32),
(7,'Shosh','Cohen',56),
(8,'Dave','Dangerous',56)
SQL PRIMARY KEY
SQL PRIMARY KEY

* שימו לב כי אם היינו מנסים להכניס את אותו ה-ID פעמיים היינו מקבלים שגיאה כמובן, על ה-ID להיות ייחודי.
לדוגמא תוכלו להבחין כי הדבר היחיד ששונה בין 2 הרשומות הראשונות הוא ה-ID.

FOREIGN KEY

כפי שהוסבר, FOREIGN KEY מתייחס ל-PRIMARY KEY של טבלה אחרת.
כעת ניצור טבלה של צבעים, על מנת שנוכל לתת צבע מועדף לכל אדם מהטבלה הראשונה:

INSERT INTO dbo.Colors (ID, ColorName)
VALUES
(1,'Red'),
(2,'Blue'),
(3,'Green'),
(4,'Yellow')

הדבר הבא שניצור זו טבלה שתראה לנו איזה צבע אוהב כל אדם מהטבלה הראשונה:

CREATE TABLE dbo.PersonVsColors
(
	PesonId int NOT NULL,
	ColorId int NOT NULL
	CONSTRAINT PK_Persons PRIMARY KEY CLUSTERED 
	(
		PesonId ASC,
		ColorId ASC
	)
	WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) 
	ON [PRIMARY]
)
ON [PRIMARY]
GO

ALTER TABLE dbo.PersonVsColors WITH CHECK ADD  CONSTRAINT FK_PersonVsColors_persons FOREIGN KEY(PesonId)
REFERENCES dbo.Person (Id)
GO

ALTER TABLE dbo.PersonVsColors CHECK CONSTRAINT FK_PersonVsColors_persons
GO 

כעת נוכל להכניס נתונים לטבלה זו בהתאם.
ואם נריץ שאילתה שמחזירה לנו את רשומות הטבלה:

SELECT PersonID, ColorID, ColorName  
FROM PersonVsColors JOIN Colors c ON c.ID = ColorId
GROUP BY  PersonID, ColorID, ColorName

נוכל לקבל את התוצאה הבא:

SQL FOREIGN KEY
SQL FOREIGN KEY

לקריאה מורחבת על Keys באתר של מייקרוסופט יש ללחוץ כאן 

רוצים לשתף את המדריך?

אהבתכם את המדריך? פתר לכם תקלה? הזמינו את כותב המדריך לכוס קפה

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

כתיבת תגובה

הזמינו אותי לכוס קפה
buy me coffee

אהבתכם את המדריך? פתר לכם תקלה? הזמינו את כותב המדריך לכוס קפה

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