• בלוג
  • עמוד 6
  • סדרת SQL בסיסי - פוסט 12 - עוד כמה יכולות של SELECT

סדרת SQL בסיסי - פוסט 12 - עוד כמה יכולות של SELECT

21/08/2024

הנה עוד כמה יכולות של פקודת SELECT שיעזרו לנו בכתיבת שאילתות.

1. כותרות לעמודות

מה קורה כששם העמודה בבסיס הנתונים ארוך מדי או לא מספיק אינפורמטיבי? הפקודה SELECT מאפשרת לנו להגדיר כותרת אחרת לעמודה באמצעות הוספת המילה as אחרי שם העמודה. זה נראה ככה (נסו את זה על בסיס הנתונים לדוגמה של SQLime):

SELECT id, name, city as City, salary as 'Hourly Wage' from employees;

שימו לב שאת City כתבתי כמילה בודדת אחרי as, אבל את Hourly Wage כבר הקפתי בגרש בודד כי מדובר בכמה מילים.

2. ערכים מחושבים

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

SELECT *, salary * 1.1 as 'After Raise' from employees;
id  name    city    department  salary  After Raise
11  Diane   London  hr  70  77
12  Bob London  hr  78  85.80000000000001
21  Emma    London  it  84  92.4
22  Grace   Berlin  it  90  99.00000000000001
23  Henry   London  it  104 114.4
24  Irene   Berlin  it  104 114.4
25  Frank   Berlin  it  120 132
31  Cindy   Berlin  sales   96  105.60000000000001
32  Dave    London  sales   96  105.60000000000001
33  Alice   Berlin  sales   100 110.00000000000001

3. בחירה בלי טבלה

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

select 2 + 5;

ונקבל את התוצאה 7. או בשביל לקבל מספר עמודות נוכל לכתוב:

select 2 as "A", 3 as "B", 5 as "C";

4. הצגת ערכים ייחודיים

נתבונן בתוצאות של:

select id, name, city, department from employees;

אנחנו רואים שהעובדים מחולקים בין המחלקות hr, it ו sales. אפשר לנסות להדפיס רק את שמות המחלקות ואז נקבל:

select department from employees;
department
hr
hr
it
it
it
it
it
sales
sales
sales

שזה בדיוק הרשימה הנכונה אבל למה כל השורות הכפולות? התשובה היא שזה שבחרתי עמודה מסוימת לא אומר כלום על העמודות האחרות, ומבחינת SQL הוא מציג את הערך של עמודת department לכל אחת מהשורות. אני יכול לבקש מ select לצמצם ערכים כפולים בעזרת המילה distinct. זה נראה ככה:

select distinct department from employees;

והתוצאה:

department
hr
it
sales