PRIMARY KEY
PK – מפתח ראשי:
– חייב להיות שונה ערך
– בטבלה הוא יכול להיות רק יחיד ובעזרתו ניתן לזהות את הרשומה בטבלה באופן חד-חד-ערכית.
– אסור שיהיה ערך NULL
דוגמה של מפתח אשר מורכב רק מעמודה אחת:
CREATE TABLE Persons ( ID int NOT NULL PRIMARY KEY, LastName varchar(255) NOT NULL, FirstName varchar(255), Age int );
דוגמה של מפתח אשר מורכב משתי עמודות
כלומר יכול להיות אותו id אבל LastName חייב להיות שונה:
CREATE TABLE Persons ( ID int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Age int, CONSTRAINT PK_Person PRIMARY KEY (ID,LastName) );
FOREIGN KEY
FK – מפתח זר, מקשר למפתח ראשי של טבלאות אחרות.
לצורך דוגמה, ניצור טבלה Products עם מפתח ראשי ProductID
* UnitPrice מסוג DECIMAL כאשר 13 זה מספר ספרות שלמות ו-2 זה מספר ספרות לאחר נקודה.
CREATE TABLE Products ( ProductID int NOT NULL PRIMARY KEY, ProductName varchar(255) NOT NULL, UnitPrice DECIMAL(13, 2) NOT NULL );
וניצור טבלה בשם Orders עם מפתח ראשי OrderID ומפתח זר ProductID.
כאשר ProductID זה מפתח ראשי עבור טבלה Products
CREATE TABLE Orders ( OrderID int NOT NULL PRIMARY KEY, OrderDate DATE, ProductID int FOREIGN KEY REFERENCES Products(ProductID) );
דרך אגב, ניתן לראות את המפתחות תוך בחירת טבלה newDB -> מפתחות
להשלמת הדוגמה שלנו, בואו נוסיף נתונים לטבלאות:
עבור טבלה Products
INSERT INTO Products ( ProductID, ProductName, UnitPrice) VALUES ( '1', 'Coffee', '12.30');
וגם
INSERT INTO Products ( ProductID, ProductName, UnitPrice) VALUES ( '3', 'Ice Cream', '15.45');
עבור טבלה Orders
INSERT INTO Orders ( OrderID, OrderDate, ProductID) VALUES ( '1', '23-JUN-20', '1');
וגם
INSERT INTO Orders ( OrderID, OrderDate, ProductID) VALUES ( '2', '25-JUN-20', '3');
ואז קבלנו קשר בין הטבלאות:
הזמנה עם OrderID=1 מטבלה Orders מקושרת לטבלה Products דרך ProductID=1
וגם הזמנה עם OrderID=2 מטבלה Orders מקושרת לטבלה Products דרך ProductID=3
CHECK
בדיקה שתנאי מתקיים, כאשר נתונים נכנסים לטבלה.
לדוגמה:
כל פעם כאשר יוכנס מידע לטבלה
אז תתבצע בדיקה אם הגיל הוא יותר או שווה ל-18.
CREATE TABLE PersonsTable ( ID int NOT NULL, FirstName varchar(255), Age int, CHECK (Age>=18) );
ננסה להכניס לטבלה PersonsTable גיל פחות מ-18
INSERT INTO PersonsTable (ID, FirstName,Age) VALUES ( '1', 'Daniel', '17');
נקבל