מחשבים, סוגי קבצים
SQL הברור: תיאור, דוגמאות, המאפיינים
לעתים קרובות, כאשר אתה משתמש ב- SQL כדי לאחזר נתונים מתוך טבלאות, המשתמש מקבל את הנתונים מיותר הוא קיומו של שורות כפולות זהות לחלוטין. כדי להימנע ממצב זה, להשתמש בטיעון מובחן SQL במשפט בחר. מאמר זה יעסוק דוגמאות של השימוש בטיעון זה, כמו גם מצבים שבהם היישום צריך להיות נטוש על ידי טיעון.
לפני שנמשיך לדון דוגמאות ספציפיות, ליצור את מסד הנתונים הנדרשים כמה שולחנות.
שולחן הכנה
תארו לעצמכם שיש לנו מידע חנויות מסד נתונים על הטפט מוצג בשתי טבלאות. טבלה זו oboi (טפט) עם שדות id (מזהה ייחודי), מהסוג (סוג של טפט -. נייר, ויניל, וכו '), צבע (צבעוניים), struct (מבנה) ואת המחיר (מחיר). והטבלה Ostatki (שאריות) עם שדות id_oboi (הפנית המזהה הייחודית בטבלה Oboi) והספירה (מספר הלחמניות במלאי).
מלא את טבלת הנתונים. בטבלה להוסיף את הטפט 9 רשומים:
oboi | ||||
id | סוג | צבע | struct | מחיר |
1 | נייר | סַסגוֹנִיוּת | מובלט | 56.9 |
2 | נייר דו שכבתי | בז ' | חלק | 114.8 |
3 | ויניל | אורנג ' | מובלט | 504 |
4 | גיזה | בז ' | מובלט | 1020.9 |
5 | נייר דו שכבתי | בז ' | חלק | 150.6 |
6 | נייר | סַסגוֹנִיוּת | חלק | 95.4 |
7 | ויניל | חום | חלק | 372 |
8 | גיזה | לבן | מובלט | 980.1 |
9 | בד | ורוד | חלק | 1166.5 |
הטבלה עם השרידים - תשעה תקליטים:
Ostatki | |
id_oboi | לספור |
1 | 8 |
2 | 12 |
3 | 24 |
4 | 9 |
5 | 16 |
6 | 7 |
7 | 24 |
8 | 32 |
9 | 11 |
אנו ממשיכים בתיאור הסדר המובהק ב SQL.
מיקום מובחן סעיף בחר
טיעון ברור צריך להיות ממוקם מייד אחרי מילת המפתח בוחר שבשאילתות. הוא מוחל על כל העמודות מפורטות המשפט בחר, משום שהיא תיכלל תוצאת השאילתה הסופית בהחלט מחרוזות זהות. לפיכך, אחת מספיק כדי לציין בעת כתיבת SQL «לבחור מובחנת» בקשה. יוצא מן הכלל הוא השימוש בפונקציות צבירה בתוך ברורות להסתכל קצת מאוחר.
יש לזכור כי רוב מסד הנתונים אינו מזהה את סוג הבקשה שלך:
SELECT Ostatki.Count מובחנת, Oboi ברורים. * מ oboi Inner Join Ostatki ON Oboi.id = Ostatki.id_oboi |
יש לא נחשב טיעון מספר פעמים או פעם פירט, אבל לפני השני, השלישי או אחר הטור הנבחר. אתם תקבלו שגיאה בהתייחסו שגיאה בתחביר.
שאילתות נפרדות Application בתקן
ברור כי עם שולחנות מבנה בתב"ע ובמילוים בתוך טבלה אחת נשלל המצב כאשר ישנם בהחלט מחרוזות זהות. לכן, ביצוע השאילתה «בחר * מובהק» עם מדגם של שולחן אחד אינו מעשי.
קח לדוגמא מצב שבו אנחנו צריכים לדעת איזה סוג יש לנו טפט, רק מטעמי נוחות, כדי למיין לפי סוג:
SELECT Oboi.type מהזמנת Oboi לפי סוג |
ולקבל את התוצאות:
סוג |
נייר |
נייר |
נייר דו שכבתי |
נייר דו שכבתי |
ויניל |
ויניל |
בד |
גיזה |
גיזה |
כפי שניתן לראות בטבלה יש שורות כפולות. אם נוסיף את ההצעה בחר ברור:
SELECT Oboi.type מובחנת מהזמנת Oboi לפי סוג |
אנחנו מקבלים את התוצאה בלי חזרות:
סוג |
נייר |
נייר דו שכבתי |
ויניל |
בד |
גיזה |
לפיכך, אם מזינים את הפרטים כראוי בטבלה, אז מיד לאחר שיחת טלפון או בקשה של הקונים נוכל לענות על זה הטפט נוזלי, פיברגלס וטפטים אקריליק זמינים בחנות הם לא. בהתחשב בכך בטווח של חנויות בדרך כלל לא הוגבל למאה טפט, להציג את רשימת הסוגים שאינם הייחודיים יהיה עתיר עבודה די.
יישום של פונקציות צבירה מובחנות בתוך
טיעון מובחן SQL ניתן להשתמש עם כל פונקציה במצטבר. אבל עבור היישום שלה המינימום ומקס לא תהיה כל השפעה, אך בעת חישוב הסכום או הערך הממוצע הוא לעתים רחוקות מצב שבו אף אחד לא יצטרך לקחת בחשבון את החזרות.
נניח שאנו רוצים לבדוק את הקיבולת של המחסן שלנו לשלוח את הבקשה הזו, מחשב את המספר הכולל של סלילי במלאי:
סכום SELECT (Ostatki.count) מ Ostatki |
בקשה תיתן את התשובה 143. אם, לעומת זאת, נשנינו ל:
סכום SELECT (Ostatki.count מובחנת) מ Ostatki |
נקבל את 119 הכולל, כטפט עבור מספרי חלק 3 ו 7 נמצאים במלאי באותו הסכום. עם זאת, ברור כי התשובה היא לא בסדר.
לרוב נעשה שימוש בפונקציה ספירה ברורה SQL. אז, אנחנו יכולים בקלות לברר כמה סוגים ייחודיים של טפטים, יש לנו:
בחר COUNT (Oboi.type מובחנת) מ oboi |
ולקבל את התוצאה של 5 - נייר רגיל ו ויניל שכבה כפולה בד לא ארוג. הרי כל ראה את הפרסומת כגון: "רק יש לנו מעל 20 סוגים שונים של טפטים," וההכוונה כי חנות זו אינה רק כמה עשרות לחמניות במגוון סוגים מודרניים טפט.
זה מעניין, כי באותה השאילתה, אתה יכול לציין פונקציות מרובות כמו רוזן מייחס ומובחן, בלעדיו. זהו המצב היחיד שבו בולט Select'e יכולים להיות פעמים נוכחיות מספר.
כאשר לנטוש את השימוש בטיעון
משימוש טיעון מובהק SQL צריך להיות נטוש באחד משני מקרים:
- אתה לבצע מבחר של שולחנות ובטוחים בשווי הייחודי לכל. במקרה זה, השימוש בטיעון זה ראוי, כי זה מהווה עומס נוסף על השרת או הלקוח (תלוי בסוג של DBMS).
- האם אתה מפחד לאבד את הנתונים שלך. תנו לנו להסביר.
נניח הבוס מבקש ממך לרשום את הטפט שיש לך, עם ציון של רק שתי עמודות - סוג וצבע. מתוך רגל, אתה נותן ויכוח ברור:
SELECT Oboi.type מובחנת, Oboi.color מ oboi ORDER BY Oboi.type |
וזה - לאבד כמה נתונים:
סוג | צבע |
נייר | סַסגוֹנִיוּת |
נייר דו שכבתי | בז ' |
ויניל | חום |
ויניל | אורנג ' |
בד | ורוד |
גיזה | בז ' |
גיזה | לבן |
זה עלול לתת את הרושם כי טפט הנייר (הקונבנציונלי ו-השכבה כפולה) יש לנו רק מוח אחד, למעשה, אפילו השולחן הקטן שלנו של שני מאמר (לגרום ללא נפרדים):
סוג | צבע |
נייר | סַסגוֹנִיוּת |
נייר | סַסגוֹנִיוּת |
נייר דו שכבתי | בז ' |
נייר דו שכבתי | בז ' |
ויניל | חום |
ויניל | אורנג ' |
בד | ורוד |
גיזה | לבן |
גיזה | בז ' |
לכן, כמו בכתב כל בקשה עם הצורך הברור הטיעון להיות זהיר המוסמכת להחליט על היישום שלה, בהתאם למשימה.
חלופה מובחנת
בניגוד לטענה הברורה - כל הטיעון. בבקשתה שורות כפולות מאוחסנות. אבל כמו באתר ברירת המחדל ומוצא כי יש צורך להציג את כל הערכים, את הטיעון הכל - זה דווקא במוקדמות מאשר טיעון פונקציה בפועל.
Similar articles
Trending Now