פרטי המסמך:

הועלה: סוג מסמך: מסמך אונליין מסמך אונליין
עמודים: 24 הורדות: 65540
מדריך למתחיל בשפת SQL. בין הנושאים הכלולים במסמך: פקודות בסיסיות: Insert, Select, Update. פקודות לניהול טבלה: Create, Drop. פקודות לאיחוד טבלאות: Inner Join, Left Join ועוד פקודות רבות אחרות.

1. מבוא – בסיסי נתונים ושפת SQL

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

המסמך אינו דורש ידע מוקדם בשום שפת תיכנות.

SQL הינו קיצור של Structured Query Language, או בעברית: "שפת שאילתה מובנית" וזאת משום שבראשית השפה תפקידה היה לממש בעיקר אחזור מידע בצורה נוחה יחסית ממקורות מידע אך עם הזמן הורחב תפקידה של השפה לעוד תחומים רבים כגון עדכון נתונים, הוספת נתונים, יצירת סכמות נתונים, וידוא תקינות נתונים, מימוש טרנזקציות על נתונים, ועוד הרבה תחומים נוספים.

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

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

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

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

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

חשוב לציין שישנם מימושים שונים לשפת SQL ולצערנו אין תאימות מוחלטת בין מימושים שונים גם בחלקים החופפים במימוש, וכך כמעט בטוח שיהיה צורך להתאים קוד SQL בהעתקתו בין מימושים שונים, למשל קוד SQL של ACCESS הינו שונה במעט מקוד SQL של Sql Server אף ששני המוצרים שייכים לחברת מיקרוסופט, ושניהם יהיו שונים מקודי SQL עבור MySQL ועבור Oracle של חברת Sun

מאת: רוזית

שם

מאת: אני

לא מצליחה

איך משתמשיםפ במקס ומינ
מאת: לימור

1.3.1.3. שליפת נתונים ממספר טבלאות

היי
הפקודה הזו לא עובדת... מה לא בסדר?
מאת: חיים

לפעמים שורף לי בתחת, מה עושים?

מאת: דני

אני רואה שזה פורסם ב-2005

האם זה רלוונטי להיום?
מאת: AA

תודה

הורדתי ועברתי על על הכל.עזר לי מאוד תודה רבה
מאת: Adi

subqueries

In the 2nd example for WHERE subqeiry, can I use the word AND in the condition,
If so, how?

thank you
מאת: Adi

UPDATE

Is the word TABLE in the UPDATE statement necessary
if so, why is it necessary in the #2nd example and not in the 1st
Can I use
UPDATE table_name SET col1=val1, col2=val2, ... WHERE condition

Thank you
מאת: נטע מאיירס

CREATE TABLE

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

תודה רבה!
מאת: שמואל בר

Where

בטבלה מס 1 יש לי שדה עם פקד של תיבה משולבת.
אני רוצה להציב בקרטריון של התיבה המשולבת תנאי :- שיבחרו בטבלה אחרת מס 2 רק הרשומות ששדה מסויים שלהם שווה לערך של שדה בטבלה 1 הנמצא באותה רשומה של הפקד. האם אפשר להציב בתנאי הקריטריון (בפקודת WHERE ) לא רק השוואה לרשימה של נתונים קבועים מראש, אלא גם השוואה למשתנה שנגזר Nרשומה ושדה מסויימים. איך כותבים את זה ב- SQL ?
מאת: מאיר

יצירת שאילתת SQL מתוך טופס

לכ' ניר אדר שלום !
אני רצה ליצור שאילתת SQL מתוך טופס באכסס בארוע בעת לחיצה של פקד ואני לא מצליח להבין את כללי התחביר.
למשל השאילתה הזו שכתבו לי אותה ובמקום להעברי נתונים לטבלה fordoh אני רוצה פשוט לבנות שאילתה רגילה ושתהא בסיס לדוחות שלי אז במקום Select *INTO fordoh ליצור שאילתה חדשה שמקבלת את הפרמטרים מהטופס

Dim WhereCond As String
WhereCond = " Where 1=1 "

Dim myqry As QueryDef
Set myqry = CurrentDb.QueryDefs("creattableforreports")
myqry.sql = "Select *INTO fordoh from Forcreatreport " & WhereCond
DoCmd.SetWarnings False
DoCmd.OpenQuery "creattableforreports", , acReadOnly
תודה לעוזרים מאת : מאיר
mc12@netvision.net.il
מאת: מאיר

כללי התחביר של כתיבת השאילה בתוך פקד בטופס

בבקשה ,בבקשה מכם תעזרו לי אני כל הזמן מסתבך ובעצם אף פעם אני לא מצליח לכתוב שגרה שמכילה שאילתת SQL , אני הולך לשאילתה לעיצוב שאילתה קיימת בתצוגת SQL ,מעתיק את התוכן ללוח
הולך לטופס ומדביק את התוכן לתוך אירוע בעת לחיצה ואז אני מקבל את כל השורות שהדבקתי ל אדום ,אני לא מצליח להבין את כללי התחביר של כתיבת שאילתת SQL . התוכלו לעזור לי ?
מאיר = mc12@netvision.net.il
אלף תודות לכם
מאת: tamar

innerjoin

אין כאן באמת הסבר
מאת: בני

תודה על הכל ,פשוט אין מילים ...הכל מובן וכתוב בצורה יפה .. :)

תודה על המידע אני מבין יותר בזכות האתר ..
כל הכבוד ליוצר האתר :)
מאת: חדשה

תודה

אין מילים הכל ברור ומסביר ברמה
מאת: דניאל

זה רק סיכום =.=

אני מחפש מדריך שילמד את השפה .. לא שיסביר אליה.
מאת: shoshan

תודה רבה - שמחים לעזור לכולם ללמוד SQL

:)
מאת: יניב

הסברים מצוינים

התוכן מעולה וההסברים טובים
מאת: מרוצה

ניר אדר- ממש ממש תודה !

אני כרגע לומד SQL, ונעזרתי המון בהסברים המצוינים הלאו
רציתי להגיד תודה ושאתה עושה עבודת קודש
שיתוף:
| עוד