PracticU

הוספת רשומות חדשות ב-SQL

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

הוספת רשומות חדשות ב-SQL
אחרי פקודות SELECT עוברים לקבוצת DML (Data Manipulation Language), הפקודות שמוסיפות, מעדכנות ומוחקות רשומות. ההרצאה עוסקת בהוספה עם Insert Into על טבלת Products.
השלבים העיקריים
1. מפתח ראשי אוטומטי: כש-ProductID הוא מספור אוטומטי, המסד מייצר אותו ולא מציינים אותו בפקודה. אילולא כך, היה צריך לקבוע את ערכו.
2. הוספה עם כל הערכים: Insert Into Products Values (...), עם ערכים לפי סדר העמודות: שם המוצר, SupplierID, CategoryID, QuantityPerUnit (מחרוזת), UnitPrice, UnitsInStock, UnitsOnOrder, ReorderLevel, Discontinued (0 הוא false). בדוגמה התווסף "פיצה" ברשומה 78.
3. הודעת התוצאה: מופיע "one row affected". הפקודה אינה SELECT ולכן לא מוצגים נתונים, ובטבלה עצמה צריך לרענן עם Ctrl+R.
4. שימוש ב-Default: במקום ערך אפשר לכתוב Default. אם לעמודה יש ערך ברירת מחדל (0 ב-UnitPrice, UnitsInStock, UnitsOnOrder) הוא נכנס, ואם אין, נכנס NULL כשהעמודה מאפשרת זאת (כמו ב-QuantityPerUnit).
5. Default בעמודת חובה נכשל: ב-ProductName (שדה חובה בלי ברירת מחדל) מתקבלת השגיאה cannot insert the value NULL.
6. הוספת חלק מהעמודות: אם נותנים פחות ערכים מעמודות, מתקבלת שגיאה שמספר העמודות לא תואם. הפתרון הוא לפרט אחרי שם הטבלה רשימת עמודות, למשל ProductName, SupplierID, UnitPrice, ולתת ערכים לפיהן. אפשר גם בסדר שונה מזה שבטבלה. שאר העמודות מקבלות NULL.
שימו לב
- עמודה שחובה להזין בה ערך ואינה מאפשרת NULL חייבת להופיע ברשימה.
- יש שתי שיטות: לתת ערך לכל העמודות לפי הסדר, או לציין במפורש לאילו עמודות הערכים נכנסים.
אחרי ההרצאה אפשר להוסיף רשומה חדשה לטבלה, במלואה או רק בעמודות הנדרשות.
השיעור הבא בקורס: עדכון רשומות קיימות ב-SQL

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

  1. 00:00

    הכרת פקודות DML

  2. 00:56

    פקודת INSERT INTO עם VALUES

  3. 02:11

    הרצת ההוספה וצפייה בטבלה

  4. 03:12

    שימוש בערך DEFAULT

  5. 04:42

    קבלת NULL מערך DEFAULT

  6. 05:38

    ניסיון DEFAULT בשדה חובה

  7. 06:11

    אי-התאמה במספר העמודות

תמלול ההרצאה: הוספת רשומות חדשות ב-SQL

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

  1. 00:02

    אנחנו מגיעים להוספה של רשומות חדשות. סיימנו את פקודות ה-select וכעת אנחנו עוברים לפקודות שנקראות DML. DML זה קיצור של Data Manipulation Language.

  2. 00:17

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

  3. 00:31

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

  4. 00:48

    אנחנו מתחילים להתייחס לחבר'ה האלה. בואו נתחיל. הפקודה נקראת insert into, שוב, אני אוהב את הפקודות של השפה לרשום באותיות גדולות, שם הטבלה product, ואז אילו values אנחנו רוצים להוסיף.

  5. 01:06

    אולי נשים את זה כאן, ואז נראה את כל ה-values שיש שלב שלב. יש לנו כאן product name. ה-values הולכים להיכנס בהתאמה לעמודות השונות, כאשר אוטומטית המפתח הראשי מדלגים עליו.

  6. 01:24

    הדאטאבס יודע לייצר עבורו מספור אוטומטי רץ. בואו נוסיף פיצה בתור product name, ו-Supply ID, בואו נניח 2, אני כרגע ממציא כמובן. Category ID, סתם אני זורק 4. Quantity Per Unit זה מחרוזת, בואו נגיד 1 Box.

  7. 01:43

    Unit Price, 50. בואו נניח Units in Stock, יש לנו 100 במלאי. כמה יש לנו בהזמנה כרגע? 0. Reorder Level, האמת אין לי מושג מה זה, אז בואו נגדיר גם 0. Discontinued זה האם המוצר קיים או לא קיים אצלנו.

  8. 02:00

    אז אם זה false הוא כאילו לא discontinued זה אומר שהוא כן קיים אצלנו ולכן אנחנו רוצים 0 שזה false. יש לנו כאן פקודה שמוסיפה רשומה חדשה וזה pizza.

  9. 02:16

    בואו נריץ את זה, נבצע execute ואנחנו בעצם מקבלים פה בעצם איזושהי מכרוזת. הודעה one row affected אנחנו לא פקודת סלקט אז אז אנחנו לא רואים את המידע שהתווסף פה בחזרה.

  10. 02:33

    אם אנחנו נלך לטבלה, נגלול פה למטה, האמת אנחנו עדיין לא רואים את זה, צריך לבצע קונטרול R כי המידע הוצג מלפני זה, נגלול פה למטה ונראה פיצה 78 כי זה מידע חדש, את המידע הקודם אני מחקתי, התקנתי מחדש את הדאטאבייס בשביל לנקות אותו. הנה פיצה והנה, שימו לב, 2 מבחינת סופלייר ID ו-4,

  11. 02:58

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

  12. 03:23

    ספר פלאפל, נניח שספק 3 מספק אותו מקטגוריה מספר 5, ויש לנו 50 Units in Box, סתם אני זורק. אחר כך יש לנו את המחיר, והמחיר זה, לא יודע, 20.

  13. 03:40

    Units in Stock, יש לנו 200, אבל את שלושת אלה, וואלה, תן לי את ה-Default. אנחנו יכולים פשוט לרשום את המילה ה-Default, ואנחנו רוצים לרשום default עבור Units in Order, דיפולט עבור רי אורדר לבל ודיפולט עבור דיסקונטיניוד.

  14. 03:59

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

  15. 04:13

    קצת לא רואים את ההבדל, אולי ננסה גם את זה דיפולט ו-units in stock default אולי סתם בשביל הכיף, אתם יודעים מה, בואו ננסה גם את זה דיפולט, יאללה, נתפרע.

  16. 04:26

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

  17. 04:48

    בואו נעיף מבט רק בטבלת הפרודקטס, הנה טבלת המוצרים, כאשר אם אנחנו הולכים פה ל-Quantity Per Units, ומסתכלים על-Default Value, אנחנו רואים שאין פה-Default Value, Quantity Per Units, אין, לכן הוא הוסיף לנו נ"ל.

  18. 05:09

    אם אני הולך ל-Unit Price, ה-Default היה 0, אני עד היום לא יודע למה הם עוטפים את זה בפעמיים סוגריים, Units in Stock 0, Units in Order 0, הם רואים שיש לחבר'ה האלה ערך דיפולט, לכן ערך הדיפולט מתקיים כשאנחנו כותבים דיפולט ואם אין מתקבל נל אם היה מותר להכניס נל.

  19. 05:30

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

  20. 05:43

    בואו נריץ את זה ואנחנו חוטפים פה שגיאה. cannot insert the value null into column product name. הוא כותב לנו column does not allow null וכמובן אין שם ערך default ולכן הוא לא הסכים. אם היה ערך default אז הוא מן הסתם היה מסכים להכניס את ערך ה-default.

  21. 06:02

    אז עכשיו השאלה היא מה קורה אם אנחנו רוצים להוסיף את המוצר תפוחים, Apple, בואו נוסיף Apple, אבל אנחנו לא רוצים להתחיל להתעסק עם כל ה-defaultים האלה.

  22. 06:15

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

  23. 06:27

    אז אנחנו מנסים להריץ והמערכת לא מסכימה. ומה שהוא אומר לנו זה מספר העמודות לא מתאים. column name or number of supplied values

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

ההרצאה הקודמת: החזרת מידע ממספר טבלאות - JOIN

ההרצאה הבאה: עדכון רשומות קיימות ב-SQL

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

  • רשומות DNS
  • רישום דומיין שלנו באופיס 365 - הוספת רשומות DNS
  • רשומות מסוג PTR
  • הוספת VMkernel

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

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