
SELECT היא הדרך הבסיסית להביא מידע מטבלה. ההרצאה עוברת על הווריאציות שלה על מסד הנתונים Northwind: כל העמודות, עמודות נבחרות, כינויים, עמודות חישוביות, שרשור, כפילויות והגבלת מספר הרשומות.Select * From Products מחזיר את כל העמודות ואת כל הרשומות. מסמנים רק את השורה שרוצים להריץ, כי אחרת רצות כמה שאילתות ומתקבלות כמה תוצאות.ProductName, UnitPrice, UnitsInStock. התוצאה כוללת גם את שמות העמודות, וזה מה שיחזור לאפליקציה ששלחה את השאילתה.as: אפשר להחזיר שם אחר לעמודה, למשל Name, Price, Stock. סיבות אפשריות: אבטחה (לא לחשוף את השם האמיתי), שם עמודה באות קטנה כמו שמקובל ב-JSON, או סתם שם פשוט יותר. השם במסד עצמו לא משתנה, רק בטבלת התוצאה.UnitPrice * 1.17 למחיר כולל מע"מ, וכאן כדאי לתת כינוי כמו VatPrice.+, למשל שם פרטי ושם משפחה לעמודה אחת של שם מלא. צריך להוסיף רווח כמחרוזת וכינוי כמו full name.Distinct: Select Distinct City From Employees מחזיר כל עיר פעם אחת, גם אם כמה עובדים גרים בלונדון.Top: Select Top 10 * From Products מחזיר את 10 הרשומות הראשונות. כדי לקבל למשל את היקרות ביותר צריך סינון ומיון, שיוסברו בהמשך.name מסומנת כמילה שמורה, ולכן אפשר לעטוף אותה בסוגריים מרובעים [Name].הטקסט המלא של הדקות הראשונות בהרצאה «בחירת רשומות ב-SQL» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אז אנחנו הולכים לעבוד על מסד הנתונים Northwind כי פשוט יש בו יותר מידע ויותר קל לראות עליו את השאילתות השונות. לכן הגדרנו פה use Northwind והדבר הראשון שאנחנו הולכים לראות זה איך אנחנו בוחרים מידע.
זאת פקודה מאוד פשוטה, סלקט אנחנו יכולים לבצע כמה וריאציות של הפקודה. דבר ראשון אני פשוט יכול להגיד אני רוצה לבחור את כל המידע מטבלה מסוימת הנה לדוגמה נעבוד על פרודקטס.
זה יהיה כוכבית Select כוכבית זה בעצם Select All ואני אומר לו From Products וזהו אם אני אריץ עכשיו הכל אז הוא יריץ גם את זה וגם את זה אבל רגע אז אני כבר לא צריך להריץ מפני שהוא כבר בחר את מסד הנתונים כאן לכן אנחנו יכולים לסמן רק את מה שאנחנו רוצים להריץ ולהריץ את זה. פה למטה אנחנו רואים את חלונית התוצאות את ה-Results יש פה Message כמה שורות התבצעו מתי זה קרה אנחנו
יכולים לראות שהוא בחר לנו את כל העמודות ואת כל הרשומות של טבלת המוצרים במסד הנתונים Northwind. זאת בעצם וריאציה ראשונה, תביא לי הכל כולל הכל.
יכול להיות שאנחנו אומרים, רגע, אני לא צריך להחזיר את כלל העמודות, יש עמודות ספציפיות שאני רוצה. זה יהיה Select ואני נותן לו פה את רשימת העמודות עם פסיקים.
לדוגמה, product name, unit price, units in stock, בצורה כזאת, from products, או פעם הפוך כתבתי, from products, בצורה כזאת. אם אני אריץ עכשיו את הכל execute, אז אנחנו נראה שתי תוצאות.
אתם יכולים לראות כאן שיש לנו תוצאה ראשונה ותוצאה פה שנייה, זה לא מה שאנחנו רוצים, כי בעצם הרצתי שתי שאילתות שונות, הרצתי את זאת ואת זאת, אז אנחנו תמיד נסמן מה אנחנו רוצים להריץ, אקסקיוט ונקבל רק את התוצאה שסימנו הנה פרודקט ניים יוניט פרייס יוניטס אין סטוק זה בעצם בוחר לנו את הנתונים ומחזיר תשובות למי שבעצם ביצע את
השאילתה אם האפליקציה תשלח למסד הנתונים את השאילתה הזאת זאת התוצאה שתוחזר לאפליקציה כולל העמודות האלה כולל השמות של העמודות יכול להיות שאתם אומרים תשמע זה מעולה שזה השמות של העמודות אבל אבל אני לא רוצה להחזיר לאפליקציה בדיוק את השמות האלה של העמודות.
יכול להיות משתי סיבות. סיבה אחת, אני רוצה לשנות את השמות בשביל security. לא רוצה שיידעו בדיוק איזה שם היה בתוך הדאטאבייס, אני רוצה להחזיר קצת שם אחר.
סיבה נוספת יכולה להיות שהמידע שמוחזר כאן הוא מתחיל באות גדולה, ואני רוצה שלצד של הלקוח יגיע שם עמודה באות קטנה. כי הלקוח, של הלקוח, כן, עובדת עם שמות שמתחילים באותיות קטנות.
גם זה יכול להיות. אם נתקלתם אולי בפורמט שנקרא ג'ייסון, אז מקובל שבפורמט הזה המידע יתחיל באות קטנה ולא באות גדולה, אבל יש כל מיני פורמטים שונים.
יכול להיות שזה המצב, ויכול להיות שסתם אני רוצה להחזיר שם פשוט יותר. זה נקרא כינוי, ואנחנו יכולים פשוט להגדיר as.
ובואו נניח שאני רוצה להחזיר product name בצורה כזאת. בואו רגע נריץ את זה ונראה שהעמודה הראשונה זה השם של ה-Product Name מפי קטנה וזה מה שיחזור לצד של ה-Front End.
בואו אבל נעשה אפילו קיצורים יותר, נגיד שזה Name וזה as Price, אם לא תהיו טענות, וזה as Stock ואני אריץ כרגע את השאילתה הזאת בלבד.
והנה השמות Name, Price, Stock. עכשיו השמות האלה לא שונו בתוך ה-Database, זה לא מה שקרה אם אני אכנס עכשיו לטבלה האמיתית בדאטאבייס אני אראה את השמות המקוריים זה כמובן אף אחד לא שינה את השמות האלה בתוך הדאטאבייס זה פשוט המידע שהוחזר נמצא בטבלה שספציפית רק הטבלה הזאת שחזרה זה השמות של העמודות
שלה זה מה שיגיע לאפליקציה שקוראת את המידע הזה ששלחה את השאילתה הזאת והיא יכולה להתעסק עם השמות האלה ולא עם השמות המקוריים שהיו במסעד הנתונים זה נקרא כינויים הסיבה שזה צבוע לי פה זה בגלל ש name זה מילה שמורה, אם אני רוצה להיות ודאי לגבי זה שאין איתה שום בעיה אז אני פשוט יכול לתפות אותה בסוגריים מרובעים.
גם אם יש לי שתי שמות לא מומלץ שיהיה שתי שמות לדוגמה product name בצורה כזאת. אם נריץ את זה נקבל product name בשתי שמות עם רווח, לא מומלץ בכלל, אני לא ממליץ לעשות דבר כזה אבל אני אשיב את זה ככה כי אני לא רואה עם זה שום בעיה.
מה קורה אם אנחנו רוצים להחזיר עמודה חישובית? עמודה חישובית זאת עמודה שלא קיימת בדאטאבייס והיא לא אמורה להיות קיימת בדאטאבייס, כי אפשר לחשב אותה תוך כדי, אנחנו לא רוצים לשמור בדאטאבייס מידע משוכפל.
בואו ניקח את השאילתא האחרונה, האמת אני לא כזה צריך את הכינויים כרגע, זה היה רק לצורך הבנה של מה זה כינויים, נישאר בלי הכינויים רק לצורך פשטות, והאמת אני צריך רק שם מוצר ומחיר, אבל אני רוצה גם מחיר כולל מע"מ.
אז אפשר להגיד תביא לי עוד עמודה שזה unit price ופשוט לעשות חישוב כפול 1.17 זה כרגע המע"מ והנה יש לנו כאן עמודה נוספת שלא הייתה קיימת בדאטאבייס וחישבנו אותה תוך כדי השאילתא.
אנחנו רואים את זה הכל בסדר אבל אין לנו כאן שם של העמודה זה באמת מצב שבו אנחנו כן רוצים לתת כינוי ובואו ניתן כינוי של וואט פרייס נניח, כאילו המחיר כולל מע"מ.
בואו נריץ, והנה יש לנו פה וואט פרייס, נגדיר את זה האמת בצורה כזאת כי הכל מתחיל באותיות גדולות אז זה בסדר. הנה יש לנו כאן עמודה חישובית שחישבנו תוך