הקדמה
באפליקצית לוח מודעות שבניתי, רציתי לשמור ארכיון של כל המודעות שנתפרסמו בלוח.
בניתי שתי טבלאות.
1. messages
2. archive
כל הודעה שהיתה נמחקת או שפג תוקפה היתה עוברת מטבלת ההודעות לטבלת הארכיון.
כעת רציתי שבסוף השנה יוכל מנהל הלוח לנקות את טבלת הארכיון ולשמור את כל ההודעות בטבלה חדשה למשל archive2002 לצורך תיעוד או כל צורך אחר.
אך האם לצורך כך, נצטרך לבנות טבלה חדשה, ולעשות העברה מסורבלת של הנתונים מטבלת הארכיון ? לא !
ב SQL יש דרך יותר קלה לעשות זאת. ע"י משפט ה SQL שאפרט בהמשך, נעשה מעין copy&paste לכל או לחלק מהנתונים מטבלה אחת, לתוך טבלה חדשה.
המאמר מחולק לשני חלקים: משתמשי ACCESS ו SQLserver ומשתמשים יותר רציניים ORACLE וכו'
ACCESS/SQLserevr
התחביר כאן הוא:
SELECT * INTO new_table_name FROM table
ובמקרה שלי :
SELECT * INTO archive2002 FROM archive
הערות:
1. המשפט עובד לכל אפשרויות ה select. כלומר לא חייבים לבחור את כל הרשומות. אפשר לתת תנאים ולהעתיק רק כמה רשומות מתוך הטבלה. לדוגמא:
SELECT id,title,body INTO archive2002 FROM archive WHERE date>#01/01/2002#
2. הטבלה החדשה אליה אתם רוצים להעתיק נוצרת ע"י המשפט ומקבלת את מאפייני הרשומות המועתקות. מכאן שאסור שתהיה לכם טבלה בשם דומה.
ORACLE
ORACLE לא תומכים בפורמט לעיל ויש להם פורמט אחר והוא:
CREATE TABLE new_table_name AS SELECT * FROM table
ההערות מהסעיף הקודם תקפות גם לכאן.
עכשיו משהעתקתי את כל הרשומות לטבלה חדשה אפשר למחוק את כל הרשומות מטבלת הארכיון.
בשביל לקבל את כל ההגדרות המקצועיות בקשר למשפטי ה SQL לעיל פשוט הקלידו select into table או create table as select בגוגל.
|