מחשביםסוגי קבצים

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 צריך להיות נטוש באחד משני מקרים:

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

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

SELECT Oboi.type מובחנת, Oboi.color

מ oboi

ORDER BY Oboi.type

וזה - לאבד כמה נתונים:

סוג

צבע

נייר

סַסגוֹנִיוּת

נייר דו שכבתי

בז '

ויניל

חום

ויניל

אורנג '

בד

ורוד

גיזה

בז '

גיזה

לבן

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

סוג

צבע

נייר

סַסגוֹנִיוּת

נייר

סַסגוֹנִיוּת

נייר דו שכבתי

בז '

נייר דו שכבתי

בז '

ויניל

חום

ויניל

אורנג '

בד

ורוד

גיזה

לבן

גיזה

בז '

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

חלופה מובחנת

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

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 iw.birmiss.com. Theme powered by WordPress.