SQL (Structured Query Language) היא שפה סטנדרטית להגדרת נתונים ולטיפול בהם במסד נתונים יחסי. בהתאם למודל היחסים של הנתונים, מסד הנתונים נתפס כסט טבלאות, מערכות יחסים הן מיוצג על ידי ערכים בטבלאות, ונתונים מוחזקים על ידי ציון טבלת תוצאות שניתן לגזור מאחד או יותר שולחנות בסיס. שאילתות לובשות צורה של שפת פקודה המאפשרת לך בחר, הכנס, עדכן, מצא את מיקום הנתונים וכן הלאה.
בדלפי: TQuery
אם אתה מתכוון להשתמש ב- SQL ביישומים שלך, תכיר היטב את ה- TQuery רכיב. דלפי מאפשרת ליישומים שלך להשתמש בתחביר SQL ישירות באמצעות רכיב TQuery כדי לגשת לנתונים מטבלאות פרדוקס ו- dBase (באמצעות SQL מקומי - קבוצת משנה של SQL סטנדרטית של ANSI), מסדי נתונים בשרת המקומי InterBase ומסדי נתונים במסד נתונים מרוחק שרתים.
דלפי תומכת גם בשאילתות הטרוגניות כנגד יותר משרת או סוג טבלה אחד (לדוגמה, נתונים מטבלת אורקל וטבלת פרדוקס). ל- Query יש מאפיין בשם SQL, המשמש לאחסון הצהרת SQL.
TQuery מכסה הצהרת SQL אחת או יותר, מבצעת אותן ומספקת שיטות בהן אנו יכולים לתפעל את התוצאות. ניתן לחלק שאילתות לשתי קטגוריות: אלה המייצרים קבוצות תוצאות (כגון:
בחר הצהרה), וכאלה שלא (כגון עדכוןאו להכניס הצהרה). השתמש ב- TQuery. פתוח להפעלת שאילתה שמייצרת מערך תוצאות; השתמש ב- TQuery. ExecSQL כדי לבצע שאילתות שאינן מייצרות קבוצות תוצאות.הצהרות ה- SQL יכולות להיות גם אחת סטטי או דינמיכלומר, ניתן להגדיר אותם בזמן העיצוב או לכלול פרמטרים (TQuery. פרמים) שמשתנים בזמן הריצה. השימוש בשאילתות פרמטריות הוא מאוד גמיש מכיוון שאתה יכול לשנות את תצוגת המשתמש וגישה לנתונים בזמן העבודה בזמן ריצה.
יש להכין את כל הצהרות ה- SQL ההפעלה לפני שניתן יהיה לבצע אותן. תוצאת ההכנה היא הצורה ההפעלה או המבצעית של ההצהרה. שיטת הכנת הצהרת SQL והתמדה בצורתה המבצעית מבדילים בין SQL סטטי לבין SQL דינאמי. בזמן העיצוב שאילתה מוכנה ומבוצעת אוטומטית בעת הגדרת ה- שאילתא המאפיין הפעיל של הרכיב ל- True. בזמן הריצה מוכנה שאילתה עם קריאה להכנה ומבוצעת כאשר היישום קורא לשיטות הפתיחה או ExecSQL של הרכיב.
TQuery יכול להחזיר שני סוגים של קבוצות תוצאות: "לחיות"כמו לרכיב TTable (משתמשים יכולים לערוך נתונים עם בקרות נתונים, וכאשר מתרחשת קריאה לפוסט נשלחים שינויים למסד הנתונים),"לקריאה בלבד"למטרות תצוגה בלבד. כדי לבקש ערכת תוצאות חי, הגדר את המאפיין RequestLive של רכיב השאילתה ל- True והיה מודע לכך ש הצהרת SQL חייבת לעמוד בכמה דרישות ספציפיות (ללא סדר לפי, SUM, AVG וכו ').
שאילתה מתנהגת במובנים רבים מאוד כמו מסנן טבלה, ובמובנים מסוימים, שאילתה חזקה אפילו יותר מסנן מכיוון שהיא מאפשרת לך לגשת:
- יותר מטבלה אחת בכל פעם ("הצטרף" ב- SQL)
- קבוצה מוגדרת של שורות ועמודות מהטבלאות הבסיסיות שלה, במקום להחזיר את כולם תמיד
דוגמא פשוטה
עכשיו בוא נראה קצת SQL בפעולה. למרות שנוכל להשתמש באשף טופס מסד הנתונים כדי ליצור כמה דוגמאות SQL לדוגמה זו אנו נעשה זאת ידנית, צעד אחר צעד:
1. הציבו TQuery, TDataSource, TDBGrid, TEdit ורכיב TButton בטופס הראשי.
2. הגדר את המאפיין DataSet של רכיב TDataSource לשאילתה 1.
3. הגדר את המאפיין DataSource של רכיב TDBGrid ל- DataSource1.
4. הגדר את המאפיין DatabaseName של רכיב TQuery ל- DBDEMOS.
5. לחץ פעמיים על מאפיין SQL של TQuery כדי להקצות לו את הצהרת SQL.
6. כדי להפוך את נתוני התצוגה לרשת בזמן העיצוב, שנה את המאפיין Active של רכיב TQuery ל- True.
הרשת מציגה נתונים מטבלת Employee.db בשלוש עמודות (שם פרטי, שם משפחה, משכורת) גם אם Employee.db כולל 7 שדות, וערכת התוצאות מוגבלת לאותם רשומות בהן מתחיל ה- FirstName עם 'R'.
7. כעת הקצה את הקוד הבא לאירוע OnClick של הכפתור 1.
תהליך TForm1.Button1Click (שולח: TObject); התחל שאילתה1.סגור;{סגור את השאילתה}// להקצות ביטוי SQL חדש Query1.SQL.Clear; Query1.SQL.Td ('בחר EmpNo, FirstName, LastName'); Query1.SQL.Add ('FROM Employee.db'); Query1.SQL.Td ('WHERE משכורת>' + Edit1.Text); Query1.RequestLive: = נכון; שאילתה1.אפשר לפתוח; {שאילתה פתוחה + נתוני תצוגה}סוף;
8. הפעל את היישום שלך. כשאתה לוחץ על הכפתור (כל עוד לערוך 1 יש ערך מטבע תקף), הרשת תציג את שדות EmpNo, FirstName ו- LastName עבור כל הרשומות בהן השכר גדול מהמטבע שצוין ערך.
בדוגמה זו יצרנו הצהרת SQL סטטית פשוטה עם הגדרת תוצאות חיוניות (לא שינינו אף רשומה שהוצגה) רק למטרות תצוגה.