SQL Server Essentials: שינוי נתוני טבלה עם SQL Insert, SQL Update, SQL Delete ו-Truncate

טבלאות הן אחד מרכיבי הליבה של כל מערכת מסד נתונים רצופת ו־SQL Server אינו שונה. הטבלאות אוספות את הנתונים ששימשו את מנוע מסד הנתונים הרצופי לשאילתות, דוחות ופעולות אחרות. במאמר זה, אני אראה לך כיצד לשנות נתונים מטבלת SQL Server באמצעות T-SQL INSERT, T-SQL UPDATE, T-SQL DELETE ו־TRUNCATE.

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

פרסומת

I created the following table in my previous article. The syntax from this simple example DDL command shows that the table has three columns and each of them uses a different data type:

CREATE TABLE dbo.myLogins
 (
     id INT NOT NULL PRIMARY KEY,
    name VARCHAR (20),
    login_date DATETIME
 );

במאמר זה, נתמקד בהוספת נתונים לטבלה באמצעות הצהרת INSERT ב־SQL, בשינוי נתונים בטבלה באמצעות הצהרת UPDATE ובמחיקת נתונים באמצעות הצהרת DELETE. נתונים בטבלה ניתן למחוק במספר שיטות שונות, לכן נכסה גם את ההבדל בין שימוש בהצהרת DELETE ובהצהרת TRUNCATE.

הוספת שורות באמצעות T-SQL INSERT

ניתן להוסיף נתונים לטבלת SQL Server במספר דרכים:

  • ניתן להשתמש ב־מנהל הסטודיו של SQL Server (SSMS) על מנת להוסיף שורות לטבלה
  • ניתן להשתמש ב־PowerShell
  • ניתן להשתמש באשף ייבוא ויצוא של SQL Server או בשירותי אינטגרציה כדי לייבא נתונים לטבלה
  • ניתן להשתמש בכלי שורת הפקודה כלי ה-BCP.

אמנם, הדרך הנפוצה ביותר להוספת נתונים לטבלה של SQL Server היא באמצעות הצהרת ההכנסה INSERT של SQL. ההצהרה ה־T-SQL INSERT מוסיפה שורה או יותר לטבלת SQL Server.

פרסומת

הדוגמה הבאה מציגה איך להוסיף שורה לטבלת הדוגמה שראיתם קודם:

INSERT INTO myLogins (id, name, login_date) VALUES (2, 'John Smith', '3-12-2023')

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

לבסוף, סעיף VALUES מספק את הערכים הממשיים שייכנסו לטבלה. כקיצור דרך, ניתן להשמיט את רשימת העמודות בהצהרת ה-INSERT. לדוגמה, ההצהרה הבאה בוצעת בדיוק את אותה הפונקציה כמו הדוגמה הקודמת:

INSERT INTO myLogins VALUES (2, 'John Smith', '3-12-2023')
As a shortcut, you can omit the column list in an INSERT statement (Image credit: Petri/Michael Otey)

אלא אם כן העמודה מוגדרת באמצעות המילים NOT NULL, ניתן גם לציין באופן מפורש NULL ברשימת הערכים של הפקודת INSERT. בנוסף, כאשר אין לך רצון לציין ערך עבור עמודה, תוכל להשאיר אותה מחוץ לרשימות העמודות והערכים שיגרום לה להכיל ערך NULL.

פרסום

הכנסת שורות לטבלה מתוצאות שאילתה

בנוסף לשימוש בפקודת INSERT סטנדרטית של T-SQL עם סעיף VALUES, ניתן גם להוסיף שורות לטבלה כתוצאה של שאילתת SQL. השאילתה יכולה להיות פשוטה או מורכבת, והתוצאות ניתן להכניס לטבלה היעד.

לדוגמה, כדי להעתיק שורות מהטבלה myLogins2 לטבלה myLogins ניתן להשתמש בשאילתה כמו שאתה רואה למטה:

INSERT INTO myLogins (id, name, login_date) SELECT id, name, login_date FROM myLogins2 where id > 50.

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

אך, בדוגמה זו, רק השורות עם ערך id גדול מ-50 יוחזרו ויתווספו לטבלת myLogins. בדוגמה זו הפשוטה, שמות העמודות זהים, אך זה אינו דרישה. כדי שזה יעבוד, נדרשת שורה אחת או יותר בטבלת myLogins2 שיש לה ערך id גדול מ-50 שאינם קיימים בטבלת myLogins.

עדכון שורות באמצעות T-SQL UPDATE

כמו הוספת שורות לטבלה, קיימות מספר דרכים לשנות שורות בטבלה. Query Designer של SSMS מאפשר לך לעדכן שורות באופן אינטראקטיבי, אך תוכל גם להשתמש ב-PowerShell או ב-Services של Integration.

אך, הדרך הנפוצה ביותר לשנות שורות קיימות בטבלת מסד נתונים היא להשתמש בהצהרת ה-UPDATE של SQL. ההצהרה T-SQL UPDATE משנה את הערכים בשורה או יותר בטבלת שרת SQL.

בדרך כלל, תרצה להשתמש בהצהרת UPDATE יחד עם WHERE clause כדי לציין אילו שורות לעדכן. אם אינך משתמש ב־WHERE clause, אז כל השורות בטבלה יעודכנו. הרשימה הבאה מציגה דוגמה פשוטה לשימוש בהצהרת T-SQL UPDATE כדי לשנות את הערכים בשורה אחת של טבלת myLogins.

UPDATE myLogins SET name = ‘John Smith’ WHERE id = 1

כפי שציינתי, אם היית משאיר את הWHERE clause, עמודת השם של כל שורה הייתה מוגדרת לערך החדש. באופן דומה, אם ה־WHERE clause כוללת מספר שורות כפי שיכול לקרות אם היית משתמש באופרטורים < או >, אז ייעדכנו מספר שורות תואמות.

עדכון שורות בטבלה עבור תוצאות שאילתה

כמו עם ההצהרה INSERT, ניתן גם לעדכן שורות בטבלה אחת באמצעות ערכים מטבלה אחרת. ברשימה הבאה, ניתן לראות כיצד להשתמש בעדכון SQL מטבלה אחרת.

UPDATE myLogins SET myLogins.name = myLogins2.name FROM myLogins2 WHERE myLogins.id = myLogins2.id

כאן, ניתן לראות שההצהרת UPDATE תפעל על טבלת myLogins, וכי עמודת השם תתעדכן באמצעות הערכים מטבלת myLogins2 כאשר הערך בעמודת id של שתי הטבלאות תואם.

The UPDATE statement lets you update rows in one table using values from another table (Image credit: Petri/Michael Otey)

ככל שתיכון, ישנן הרבה אפשרויות נוספות לשימוש בהצהרת העדכון. שאילתתך יכולה לעדכן שורות מרובות, להיות מורכבת יותר בשימוש בחיבורים, וניתן להשתמש ב TOP סעיף, סעיף ORDER BY, Common Table Expressions (CTEs) ועוד כדי לבנות את שאילתות העדכון שלך.

מחיקת שורות עם T-SQL DELETE ו-TRUNCATE

ככל שתיכון, ניתן למחוק שורות מטבלה באמצעות אשף השאילתות האינטראקטיבי של SSMS, PowerShell, או שירותי אינטגרציה. אך, השיטה הנפוצה ביותר היא באמצעות הצהרת המחיקה של SQL.

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

הדוגמה הבאה מציגה כיצד למחוק שורה אחת מטבלת myLogins:

DELETE FROM myLogins WHERE id = 1

כאן, ניתן לראות ששורה אחת בטבלת myLogins תימחק כאשר ערך העמודה id שווה ל-1. ניתן גם למחוק מספר שורות על ידי שינוי ה WHERE clause כפי שבהצהרת המחיקה הבאה, שמוחקת את כל השורות בהן ערך ה-id גדול מ-50.

DELETE FROM myLogins WHERE id &gt; 50
You can delete multiple rows by changing the WHERE clause (Image credit: Petri/Michael Otey)

כמו במצב העדכון, אם תשכח לציין את ה WHERE clause כל השורות בטבלה יימחקו. לדוגמה, הדוגמה הבאה מוחקת את כל השורות בטבלה myLogins:

DELETE FROM myLogins

מחיקת שורות מתוצאות שאילתה

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

DELETE FROM myLogins WHERE login_date &lt; '12-31-2022'

כאן, כל השורות בטבלת myLogins שיש להן תאריך שהוא קטן מ-12/31/22 בעמודת התאריך_כניסה יימחקו.

I’ve been using simple examples throughout this article, but like the INSERT and UPDATE statements, your queries can be much more complex. You could use JOINs and multiple tables in the DELETE statement’s subquery, use clauses like TOP and ORDER BY, and more.

מחיקה נגד גריסה

הפקודה T-SQL DELETE מסוגלת להסיר שורות אחת או יותר מטבלה. אף על פי כן, זו אינה הדרך היחידה למחוק שורות מטבלה. ניתן למחוק את כל השורות בטבלת שרת SQL באמצעות ההצהרה T-SQL TRUNCATE TABLE.

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

TRUNCATE TABLE myLogins

זה ימחוק את כל הנתונים בטבלת myLogins.

סיכום

במדריך זה, ראית כיצד להוסיף, לשנות ולמחוק שורות בטבלת שרת SQL באמצעות הצהרות ה- T-SQL INSERT, UPDATE ו- DELETE. בכל מקרה, הסברתי כיצד לעבוד עם ערכי שורה בודדים וכיצד לעבוד עם שורות מרובות כתוצאה משאילתה משנית. בנוסף, ראית כיצד ההצהרות DELETE ו-TRUNCATE שונות, אף על פי ששתיהן יכולות למחוק בסך הכל שורות מטבלה.

מאמר קשור:

Source:
https://petri.com/sql-insert-update-delete-truncate/