
CREATE TABLE - יצירת הטבלה מהסקריפט.ALTER TABLE ... ADD CONSTRAINT ... DEFAULT - הוספת ערך ברירת מחדל לעמודה קיימת.sp_addextendedproperty - הוספת תיאור לטבלה ולעמודה.הטקסט המלא של הדקות הראשונות בהרצאה «יצירת טבלה - ממשק גרפי» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
בשיעורים היום אני רוצה להדגים מבחינה ויזואלית-גרפית כיצד אנחנו יוצרים טבלאות במערכת תוך שימוש בכלי העבודה של ה-Management Studio. ראשית אנחנו פותחים כאן query חדש, ובתוך Databases אני מתחבר ל-Database הרלוונטי, דאטה בשלב אנחנו עובדים על Northwind, ובתוכו אני מגלה מספר סקשנים. שני סקשנים כרגע מעניינים אותי, זה ה-Tables,
ואני רוצה לעמת את Tables לעומת Views. Views, אנחנו ראינו כבר בשיעורים הקודמים שמדובר בהגדרה של Definition בלבד, עוד בטייבלס לא רק מדובר בהגדרה אלא גם בדאטה עצמו Storage פיזי עצמו שאני שומר בדיסק אם כן כשאני מגדיר טבלה טייבל אני חייב לספק שני דברים ראשית Definition
ודבר נוסף אנחנו חייבים גם לתת איך אנחנו יוצרים טבלאות אני פותח את הטבלאות ואני מגלה מסכת של טבלאות שקיימות לי כרגע בתוך בסיס נתונים נורפוויד אולם כשאני עומד על טייבלס קליק ימני נפתחת לי כאן האפשרות new table להגדיר טבלה חדשה טבלה עצמה אני צריך לציין מהם שמות העמודות אז בואו ניתן שם dump למי כל אחד עבור כל עמודה אני צריך
לציין מה הדאטה טייפ שלה ואם אני רוצה כאן להכין ספרים שלמים אז אני בוחר כאן את int ועבור כל עמודה אני צריך לציין האם היא מאפשרת הכנסה של now yes or no אלה הגדרות מנדטוריות בציוד למרות שה- allow is now הוא משהו דיפולטי אני לא חייב לציין אותו ברגע שאנחנו כותבים כאן סקריפט כאן
כאן הוא כבר, אני מתקבל, הצ'קבוקס הזה מתקבל לי בצורה אוטומטית. אני יכול כמובן להוריד אותו, להוסיף אותו ולשנות מהדיפולט עצמו.
אולם עבור כל עמודה אני מקבל כאן גם סקשן תחתון שנקרא column properties, הגדרות ברמה של עמודה. שוב חוזרים בהתחלה על כל ההגדרות שכבר ראינו אותן למעלה, שם העמודה, Allows, נהג ועדת הטייפס.
בנוסף לזה אני יכול גם לציין מהו ה-Default Value בגין העמודה הזאת, מה שמדובר בעמודה של אינטג'ר אני יכול להחליט שבהינתן המצב שבו המשתמש בפקודת אינסרט לא ציין ערך עבור העמודה כלום אחד הערך הדפולטי שייכנס הוא 0 או 100 או כל ערך אינטג'ר אחר שעומד בהגדרות של הדאטה טייפס כפי שציינתי מקודם כמובן שבמקרה שבו allows null אז הערך הדפולטי בהיעדר מתן ערך כלשהו בפקודת אינסרט
הערך הדפולטי שייכנס זה הערך נאל. כרגע אני דורס בעצם את הנאל ואני מציין כאן שבכל מצב אחר ייכנס כאן אפס. דבר נוסף שאנחנו יכולים לציין ברמה של עמודה, אנחנו יכולים להגדיר שהעמודה תהיה מסוג computed column, דהיינו עמודה שהיא מחושבת שהיא לא שומרת את הנתון עצמו פיזי בתוך הדיסק כחלק מהסטורג', כחלק מהמידע שלי של הטבלה,
אלא היא שומרת פורמולה, היא שומרת רק נוסחה. העמודה עצמה אינה מייצגת אלא נוסחה בלבד. ביצוע של הנוסחה עצמה מייצר את הנתון עצמו. למשל, אני יכול להגדיר כאן, בואו נגדיר מידע נוספת, call2 פותח כאן, והנוסחה שאני רוצה להגיד, אוקיי, call2 ייצג לי את טווח השנים החל מ-1990 ועד לזמן הזה.
הפונקציה שאנחנו נשתמש בה זה dateDif. ברמה של שנים אז אני כותב yy, החל מגט דייט ועד לראשון לראשון 1900. פונקציה זאת מייצרת לי בכל זמן הנתון את הפרש הדלתות בשנים בין התאריך הנוכחי לשנת 1900 ואת הנתון עצמו היא בעצם שומרת בתוך קולום 2. זה נקרא עמודה שהיא קומפיטד קולום שהיא לא מכילה דאטה
מסוים ולכן ברגע שאני יורד ומאשר את הפורמולה שימו לב שעבור column 2 אין לי data type ספציפי כזה או אחר, כיוון שאין לה data types.
כל מה שיש ב-column 2 זה נוסחה בלבד. גם על הנוסחה הזאת יש לי אפשרות, גם על Completed column יש לי אפשרות לציין האם היא תהיה persisted או non-persisted is persisted a different to know, כלומר תשמור נוסחה בלבד, אולם יש לי מצב, יש לי אפשרות לא לשמור רק נוסחה, אלא על מנת לזרז שאילתות של Select,
שאילתות של שליפת נתונים מתוך הטבלה, לא בכל שאילתא ועבור כל שורה ושורה אני מחשב את הנוסחה הזאת של דייטיב, ויש לי אפשרות: once חישבת את זה? Yes, is persisted, yes. דהיינו, תשמור את הנתון כחלק מהסטורית של הטבלה.
רוצה לומר, העמודה עצמה יש עליה מסך, מסכה של נוסחה, אולם בשעה שהרצת את הנוסחה עצמה היא נשארת רגישה לשינויים בנוסחה, אבל היא עדיין בכל פעם שמשתנה נתון כלשהו, היא מעדכנת את הטבלה ושומרת את הנתון Persisted קבוע בתוך הטבלה עצמה.
אני יכול לבחור שהיא תהיה Persisted, אני יכול להחליט שהיא תהיה Non-Persisted. במקרה הזה, על מנת שעמודה Computed Callum תהיה Persisted, הנוסחה חייבת להיות Deterministic, כלומר הערך המוחזר ממנה חייב להיות צפוי וניתן לחיזוי בכל רגע נתון, אני חייבת להיות מה שנקרא Persisted אם אני
אשמור כך את הטבלה עצמה אני אקבל הודעת שגיאה כיוון שנוסחת די דיף אינה דטרמיניסטית היא לא מחזירה לי ערך נתון קבוע בכל זמן נתון ולכן אני לא יכול לשמור אותה כPersisted אני מוכרח לציין כאן ש-Is Persisted שווה 0. דבר נוסף שאנחנו יכולים לעשות ברמה של עמודה זה להגדירה
ליד Definition This is כל טקסט שאנחנו רוצים דאמפ קולום כל טקסט שאנחנו רוצים זהו ההגדרה זאת תהיה ה-definition שלו זה ה-description שלו וזה יישמר לי כ-properties עבור אותה עמודה.
וואנה סיימתי לציין את כל העמודות שלי ואנחנו יכולים כמובן ללכת ולהוסיף עוד ועוד עמודות ואם עושים את קולום 2 אז לרדת לקולום 3 וכאן לרדת לתוך פרקר 50 להחליט שהוא נאלס או נוט נאלס וברגע שאנחנו מסיים כל מה שאנחנו צריכים לעשות זה ללחוץ כאן על כפתור סייג שמירה שמור לי את הטבלה לחלופין ניתן פשוט לצאת מהחלון הזה ווואנס
אנחנו יוצאים מהחלון הזה אנחנו מקבלים כבר הודעה מהמערכת סייג צ'יינג'ס פולווינג אייטמס כן אני רוצה לשמור לאיזה טבלה תן שם מיי טייבל מיי טייבל מיי פרסט טייבל בוא ניתן מצוין יצרתי את הטבלה נתתי לה כרגע שם