PracticU

Identity

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

Identity
ההרצאה עוסקת בעמודת Identity, עמודה שהדאטאבייס מנהל את הערכים שלה, ומסבירה מה קורה כשמנסים לתת לה ערכים משלנו.
השלבים העיקריים
1. הכלל: בכל טבלה יכולה להיות עמודת Identity אחת בלבד, והיא חייבת להיות מסוג מספרי.
2. Seed ו-Increment: נקודת ההתחלה נקראת Seed וקצב הגדילה נקרא Increment. מקבלים את שניהם בפונקציות IDENTITY_SEED ו-IDENTITY_INCREMENT לפי שם הטבלה.
3. הכנסה ידנית: כשמנסים לתת ערך משלנו לעמודת Identity, השרת מחזיר שגיאה. כדי לקחת שליטה על העמודה מדליקים את SET IDENTITY_INSERT טבלה ON.
4. החזרת הניהול: SET IDENTITY_INSERT טבלה OFF מחזיר את הניהול לדאטאבייס.
5. מחיקה לא מאפסת את הספירה: אחרי מחיקה השורה הבאה ממשיכה מהערך האחרון שנוצר, ולכן נשארים פערים.
6. איפוס: DBCC CHECKIDENT מחזיר את הספירה לערך שבוחרים.
שימו לב
- Identity לא מבטיח ערכים חד-חד-ערכיים, כי אפשר לקחת את השליטה ולהכניס ערכים ידנית.
- כדי לאכוף ייחודיות צריך להוסיף אילוץ מתאים לטבלה.
- ההרצאה מזכירה שבגרסאות חדשות יותר יש אובייקט בשם Sequence, שייכלל בשיעור נפרד.
בסיום יודעים לקרוא את ההגדרות של Identity, לקחת עליו שליטה ולאפס את הספירה במידת הצורך.
השיעור הבא בקורס: אוביקט NULL

פרקי ההרצאה: Identity

  1. 00:00

    מהי עמודת Identity ומי שולט בערכיה

  2. 01:33

    עמודת Identity בטבלת Employees

  3. 02:13

    הגדרות Identity Specification בממשק

  4. 02:50

    כלל: עמודת Identity חייבת להיות מספרית

  5. 04:00

    קבלת ערכי Seed ו-Increment בשאילתה

  6. 04:52

    שגיאה בהכנסת ערך ידני לעמודת Identity

  7. 05:28

    הפעלת IDENTITY_INSERT לשליטה בערך

  8. 06:37

    הכנסת שורות נוספות ומפתח ראשי

תמלול ההרצאה: Identity

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

  1. 00:20

    שלום לכולם שיעורנו היום אנחנו נעמוד אחר יכולת מאוד מאוד שימושית בבסיס הנתונים של sql server הייתה מאוד שימושית בגרסה של 2008 r2 והשתדרגה משמעותית בגרסה של 2012 לכדי יצירת אובייקט חדש הנקרא sequence כפי שאנחנו נראה בשיעורים לאחר מכן.

  2. 00:44

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

  3. 00:57

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

  4. 01:14

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

  5. 01:38

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

  6. 01:56

    אנחנו פותחים, אנחנו מגלים את הנתונים, יש לנו את עמודות Employee ID, Last Name ו-First Name, כאשר אנחנו יודעים ש-Employee ID, העמודה, Employee ID מצוינת כ-Identity.

  7. 02:10

    קליקים אני על העמודה עצמה, אנחנו נכנסים כאן ל-Designer ומגלים שבשעה שאני עומד על ה-employee ID אני נכנס כאן לטאב של קולום פרופרטיז המאפיינים ואני גולל טיפה ללמטה על מנת לראות מאפיינים נוספים אנחנו מגלים שיש כאן identity specification

  8. 02:30

    תחת התיאור הזה מתחבאות להן שלוש שורות שלושת השורות הללו מציינות שורה ראשונה is identity תשובה בוליינית true or false האם העמודה הזאתי אידנטיטי כן או לא אוקיי במידה והיא אידנטיטי אני נותן למחשב הוראות כיצד צריך לעדכן את העמודה הזאת אידנטיטי אינקרמנט מהו קצב הגדילה

  9. 02:53

    ואידנטיטי סיד מהי נקודת ההתחלה כבר כאן אנחנו מבינים כלל אחד חשוב מאוד בנושא של אידנטיטי עמודות מסוג אידנטיטי חייבות להיות עמודות מסוג דאטה טייפ מספרי בלבד כשאנחנו מסתכלים כאן על העמודה עמודה של Employee ID היא מסוג Data Type של Integer ואשר על כן היא יכולה לקבל ערכים מספריים בלבד ורק עמודה מוגדרת כ-Integer

  10. 03:21

    יכולה להיות מוגדרת כ-Identity Specification True. ניכנס לעמודה נוספת, לעמודת Last Name, כאן ב-Identity Specification כמובן שאנחנו רואים שלא וגם אם אני ארצה לנסות ולשנות את זה ולכתוב כאן yes אני לא מצליח לקבל את האפשרות הזאת, כפי שציינו לפני חצי דקה last name הינה ורקר

  11. 03:45

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

  12. 04:15

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

  13. 04:31

    נפסיק, אנחנו רוצים לראות לא רק את ה-identity seed, בואו נראה גם את ה-identity increment. ה-ident increment נשלח לטבלת employees, סגור סוגריים להריץ, ואנחנו מקבלים שעמודת ה-identity בתוך תולדת employees מתחילה נקודת התחלה ב-1, והקצב הגדילה שלה בכל שורה נוספת הוא 1. אשר על כן,

  14. 04:57

    ברגע שאני אנסה לבצע insert לתוך תולדת employees לעמודת first name, last name, seek, employee ID, שלוש העמודות שאותן אני רוצה כרגע לאכפת, בערכים הבאים: תן להם איזשהו ערכי default, New First Name, Seek New Last Name ו-15 ערך כלשהו לתוך עמודת

  15. 05:16

    Employee ID. אחר שעמודת Employee ID מצוינת לנו כ-Identity, דברי להריץ שאם כזאת אנחנו מקבלים שגיאה ברורה מהמחשב.

  16. 05:25

    cannot insert explicit value for ident color in table employees when, וכאן אנחנו כבר מקבלים את הרמז לבאות When Identity Insert is a set to off. מכאן אני כבר מקבל את הרעיון שאני בעצם יכול לקחת שליטה על העמודה הזאת על ידי זה שאני מדליק את ה-Identity Insert, את המשתנה סביבת. איך אנחנו עושים זאת?

  17. 05:51

    Set Identity Insert של טבלת Employees on. אנחנו מדליקים אותו, ומרגע שאנחנו מדליקים אותו אף שהעמודה הזאת מצוינת כ-Identity, אנחנו לוקחים את השליטה אלינו.

  18. 06:04

    ומכאן את אותה שאילתא כפי שרשמתי מקודם: FirstName, LastName, EmployeeID, Values, NewFirstName, NewLastName, Values, 15. אנחנו רוצים לבצע את ה-insert אותו נכשלנו בביצוע בטרם שהדלקנו את המשתנה סביב ה-Identity Insert.

  19. 06:25

    אנחנו מריצים אותו, אני לחצתי בטעות פעמיים והצלחנו להכניס את השורה 15. בואו נבדוק זאת בבקשה. Select, F5, הנה עובד נוסף, נוסף לנו כרגע לחברה.

  20. 06:37

    זה העובד הזה. U last name, U first name, כאשר הקוד שלו הוא 15. אנחנו רוצים להכניס עובד נוסף, אנחנו רק צריכים לשמור על ערכים חד-חד-ערכיים, מכיוון שעמודת input לא יהיה די עניינה מסוג primary key, כלומר זה מפתח בטבלה, מה שדורש לנו ערכים יוניקים, ערכים חד-חד-ערכיים.

  21. 07:01

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

  22. 07:14

    ראינו כאן דבר מדהים, אף שהגדרתי עמודה, נגביר את המסך, אף שהגדרתי עמודה שהיא מסוג אידנטיטי, יש

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

ההרצאה הקודמת: דוגמא מעשית ל-Insert

ההרצאה הבאה: אוביקט NULL

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

  • זיהוי משתמשים - identity awareness - חלק 1

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

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