PracticU

אילוצים ב-SQL

בלי כתוביותעם כתוביות
PracticU › קורס DBA אפליקטיבי - שפת SQL למתחילים › אילוצים ב-SQL
מילון מושגים:
עמודה - שדה בטבלת מסד נתונים שמחזיק ערך מסוג מסוים עבור כל שורה, למשל שם או תאריך.
מפתח ראשי - עמודה או צירוף עמודות שמזהים באופן ייחודי כל שורה בטבלת מסד נתונים.
רשומה - שורה בטבלת מסד נתונים שמרכזת את כל השדות של פריט אחד, למשל כל הפרטים של לקוח יחיד.
מפתח זר - עמודה בטבלה שמפנה למפתח הראשי בטבלה אחרת, ובכך יוצרת קשר בין הטבלאות.
טבלה - מבנה במסד נתונים שמאחסן נתונים בשורות ועמודות. כל שורה היא רשומה וכל עמודה היא שדה.
תנאי - ביטוי לוגי בקוד שתוצאתו אמת או שקר, וקובע אילו פקודות יתבצעו בהתאם לערכו.
שם משתמש - מזהה ייחודי שמשתמש מזין כדי להזדהות במערכת, לרוב יחד עם סיסמה.

אילוצים ב-SQL
אילוץ (constraint) הוא כלל על עמודה או על כמה עמודות, שבודק שהמידע תקין ולא מאפשר להכניס מידע שגוי. ההרצאה עוברת על שישה סוגי אילוצים, ומדגימה בפירוט את שניים שעוד לא נראו.
ששת האילוצים
1. Primary Key: עמודה עם ערכים ייחודיים שמזהה רשומה באופן חד-ערכי. אין בה NULL והערך לא חוזר.
2. Foreign Key: עמודה שמקושרת למפתח ראשי בטבלה אחרת. היא נבדקת בהוספה ובעדכון, ומונעת מחיקה של מפתח ראשי שעדיין בשימוש. נוצרת כשמותחים קשר בדיאגרמה.
3. Non-null: חובה לספק ערך בעמודה. מגדירים זאת בהגדרת העמודה.
4. Default: ערך ברירת מחדל כשלא סופק ערך.
5. Unique: העמודה אינה מפתח ראשי ובכל זאת אסור בה ערכים כפולים. מותר NULL אחד בלבד.
6. Check: תנאי שאנחנו ממציאים, והערכים חייבים לעמוד בו.
הדגמת Unique ו-Check
1. Unique על אימייל: בטבלת התלמידים מסירים את האפשרות NULL מעמודת Email, כי היא משמשת לעיתים כשם משתמש. בדיזיינר פותחים Indexes and Keys, לוחצים Add, מגדירים Is Unique כ-Yes ובוחרים את עמודת Email. בהתחלה הוגדר בטעות על ID, ולכן הכפילות עדיין עברה.
2. התוצאה: הכנסת אימייל שכבר קיים נכשלת בהודעה violation of unique key. האפליקציה צריכה לטפל בשגיאה הזאת.
3. Check על שעות קורס: גם עמודת Hours מסוג tinyint מאפשרת 150 או 230 שעות. נכנסים ל-Manage Check Constraints, מוסיפים אילוץ ובשדה Expression כותבים שהערך גדול או שווה ל-0 וקטן או שווה ל-100. הכנסת 230 נכשלת, ו-30 עוברת.
אחרי ההרצאה תוכלו להגדיר על עמודות את ששת האילוצים ולהסביר מה כל אחד מונע.
השיעור הבא בקורס: מזהה ייחודי - SQL GUID

פרקי ההרצאה: אילוצים ב-SQL

  1. 00:00

    מה זה אילוצים Constraints

  2. 00:55

    אילוץ Foreign Key

  3. 01:35

    אילוץ Non-Null ו-Default

  4. 02:27

    אילוץ Unique

  5. 03:21

    הגדרת Unique על אימייל

  6. 04:16

    בדיקת מניעת כפילויות

  7. 05:17

    שגיאת ערך כפול

תמלול ההרצאה: אילוצים ב-SQL

הטקסט המלא של הדקות הראשונות בהרצאה «אילוצים ב-SQL» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    הנושא הבא שאנחנו הולכים לראות נקרא אילוצים. קונסטרנטס. מה זה אילוצים? אילוץ זה בעצם כלל או תנאי שאנחנו מגדירים על עמודה או על סדרת עמודות בטבלה.

  2. 00:17

    ומה שהוא עושה, הוא פשוט בודק שהמידע הוא תקין, שהוא אמין, שהוא נכון, ולא מאפשר לנו להכניס מידע שגוי. האילוץ הראשון הוא פריימריקי.

  3. 00:28

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

  4. 00:53

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

  5. 01:15

    היא בודקת את זה בזמן שאני מוסיף מידע, בזמן שאני מעדכן מידע ואם אני מוחק את הפריימרי אז היא אומרת, רגע, רגע, אתה לא יכול למחוק אותי כי עדיין קיים המידע הזה ב-Foreign Key, היא עושה את כל הבדיקות האלה, בואו ניזכר אם הגדרנו את הדיאגרמה ואנחנו בעצם מותחים מנקודה אחת לנקודה אחרת, Relation,

  6. 01:36

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

  7. 01:48

    הבא בתור זה non-null constraint. זה בעצם אותו אילוץ שראינו שהגדרנו שאומר אסור להכניס נאלים לערך. במילים אחרות, חובה לספק value. זה נמצא בעמודה הזאת.

  8. 02:04

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

  9. 02:14

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

  10. 02:36

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

  11. 02:50

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

  12. 03:01

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

  13. 03:18

    הרבה פעמים אימייל מהווה user name, כניסה. ואני רוצה לעשות אותו יוניק. אז אנחנו הולכים ל-indexes and keys, זה הנקודה הזאת פה. ואומרים לו, תשמע, אנחנו רוצים להוסיף כרגע עוד אילוץ, בואו נוסיף add, הנה הוא, אבל זה לא מפתח ראשי, אנחנו הולכים ל-easyunique ואומרים לו yes אתה אילוץ שמתאר

  14. 03:48

    uniqueness type unique בואו נבצע close ובואו נשמור. עכשיו הגדרנו על האימייל ערך יוניקי בואו נחזור לטבלת הסטודנטים תציג לי את המידע נוסיף סטודנט חדש ואני מוסיף מרג' סימפסון והיא למעשה משתמשת באימייל של בארט כי אין לה אימייל משלה או שיש לה והיא אוהבת

  15. 04:16

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

  16. 04:39

    אוי אוי אוי, הנה השגיאה. זה מוגדר לי על ה-students.id, זה מה ששכחתי, לא קרה כלום. אני רוצה להגדיר את זה על האימייל. בואו נעשה Close, נשמור.

  17. 04:50

    עכשיו הוא כמובן לא ייתן לי בגלל שזה חורג. טוב, בואו נמחק את זה. Delete, ביי. נחזור בחזרה, ננסה לשמור. והוא נתן לי לשמור עכשיו הקשר הזה, האילוץ הזה מוגדר כמו שצריך, היה חסר לי רק להגדיר שזה על האימייל כמובן, ומנסה שוב פעם להוסיף את מרג' סימפסון, ועם אימייל [email protected], היא גרה בתל אביב,

  18. 05:21

    Enter, יופי, זה מה שרציתי לקבל. רציתי לקבל את השגיאה הזאת, הוא אומר לי violation of unique key cannot insert duplicate key object, הוא אומר לי גם, ניסיתי להכניס בארט, הוא כבר קיים, אוקיי, אתה לא יכול לעשות את זה ואז כמובן שהאפליקציה תחטוף קריסה ותצטרך לטפל בזה.

  19. 05:42

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

  20. 05:52

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

לקורס המלא: קורס SQL ו‑DBA אפליקטיבי

ההרצאה הקודמת: יצירת קשר יחיד-ליחיד - ב-SQL

ההרצאה הבאה: מזהה ייחודי - SQL GUID

הרצאות קשורות מקורסים אחרים

  • עריכת אילוצים ויחס גובה רוחב
  • LINQ ל- SQL
  • התקנה של SQL
  • קורס BI - התקנת שרת SQL

קורסים נוספים במסלול

  • קורס NoSQL - MongoDB
  • קורס SSIS
  • קורס BI - ניתוח מסדי נתונים - Qlik Sense
  • קורס Power BI