מדריך SQL: מבוא לבסיס נתונים ושפת SQL (פקודת SELECT)

J

מדריך SQL – תוכן עיניינים:

  1. אז מהו מחזור חיים של המידע בארגון?
  2. מסד נתונים יחסי- רלציוני (Relational Database)
  3. מהי שפת SQL?
  4. מהם טיפוסי נתונים או Data Types ?
  5. פקודות SELECT – תחביר בסיסי
  6. פקודות SELECT – Alias
  7. פקודות SELECT – חישובים על עמודות
  8. פקודות SELECT – שימוש בפקודת DISTINCT

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

SQL היא שפה המשמשת אנשי נתונים בתפקידים שונים כאשר לימוד SQL ניתן אצלנו במסגרת מסלול ה-Business Analyst וכן במסלול BI EXPERT.

צפו בשיעור חזרה שמעביר שמעון דהרי על מושגי יסוד בשפת SQL

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

מדריך SQL: מבוא לבסיס נתונים

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

אז מהו מחזור חיים של המידע בארגון?

באופן די שרירותי אפשר לחלק את השלבים של מחזור חיי מידע ל-5 עיקריים:

מדריך SQL: השלבים של מחזור חיי מידע ל-5 עיקריים

  1. Data Source – מקור מידע מכל סוג שהוא: מידע שמכניסים משתמשים באתרי אינטרנט, ספרים שניתן לתמלל ולהעלות אותם לאינטרנט או לתוך מערכת כלשהי, מערכות פנים ארגוניות שהמשתמשים מזינים בהן מידע ועוד.
  2. Exchange, Transform & Load – ברגע שמכניסים מידע לארגון מסוים, אנחנו נכנסים לשלב של טעינה וסידור הנתונים בהתאם למבנה של מערכות יעודיות. ברוב המקרים המידע יעבור אוטומטית לבסיסי נתונים, אבל כמובן שבהתאם לגודל הארגון והסביבה הטכנולוגית לפעמים נשמע שמדובר בהקלדה ידנית, או העלאת קבצי מידע לתוך מערכות ע”י גורם כלשהו בארגון.
  3. Data Warehouse/Database – לאן המידע נכנס? מהם בסיסי נתונים? אלו הן מערכות מידע מקטנות, כמו מחשב אישי שבו נשמר מידע מסוים, ועד למערכות מאוד גדולות וכבדות – בסיסי נתונים גדולים מאוד – שרתים פיזיים (יכולים להיות חדרי מכונות ענקיים). המטרה לאחסן את המידע כדי שנוכל להשתמש בו בהמשך.
  4. Business Intelligence Tools – תשאול הנתונים והפקה של לקחים או תובנות עסקיות. מידע שמכניסים אותו מאוחסן בצורה של טבלה שמכילה פרטים מגוונים, וכמות הטבלאות יכולה להיות מאוד גדולה, כשמדובר בכמויות גדולות של מידע, אנחנו נזקקים למערכות שיודעות לעבד את המידע כדי ללמוד ממנו משהו. לרוב בתחום הזה אנחנו מדברים על כלי BI שונים.
  5. Output – שלב הצגת תוצאות עיבוד או ניתוח הנתונים, שמועבר לרוב למנהלים בכל הדרגים על מנת שיוכלו לקבל החלטות.

לקבלת פרטים אודות קורס SQL שנאיה קולג’ מציעה לחצו כאן

מסד נתונים יחסי- רלציוני (Relational Database)

יש לנו שתי שיטות לשמירה של מידע: רלציונית (כגון בסיסי נתונים של חברות Oracle, Microsoft, IBM ועוד) ולא רלציונית (כגון בסיסי נתונים של Big Data). בסיסי נתונים רלציוניים בנויים על עיקרון מוביל של יצירת קשר בין טבלאות, קשר בין אובייקטים.

לבסיסי נתונים ניגשים באמצעות מערכת שמנהלת את המידע – DBMS – Database Management System – מערכת שנועדה לקחת את המידע השמור ולנהל אותו.

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

לכל רשומה בטבלה יש שדהID שמזהה באופן ייחודי את הרשומה ונקרא “מפתח הרשומה”. שדות מפתח אלו מאפשרים להגדיר יחסים בין טבלאות שונות. שליפת מידע במסד נתונים רלציוני נעשות באמצעות שפת SQL. מדובר בממשק המאפשר גישה לנתונים.

מהי שפת SQL?

שפת SQL הינה “שפת שאילתות מובנית” (Structured Query Language) . זו שפה מאוד פשוטה, תפקידה העיקרי של השפה הוא לאחזר נתונים בתשובה לשאילתות. עם הזמן הורחב תפקידה מעבר לכך, ולכן מקובל כיום לכנות את הוראות השפה כ”משפטים” (SQL Statements) ולא “שאילתות” (SQL Queries) כבעבר.

מבנה השפה פשוט ומורכב מפקודות שנשלחות למחשב על מנת שיתרגם ל- 0/1 ויחזיר תשובה. המנוע של SQL יודע לקחת את השאילתה ולתרגם לשפת מחשב.

יצרניות ה-RDBMS אימצו את שפת SQL כסטנדרט. כל היצרניות הרחיבו את הסטנדרט והוסיפו פקודות ייחודיות משלהן. להלן השפות הפופולריות הקיימות בשוק:

Microsoft SQL Server: T-SQL (Transact SQL)

Oracle: PL/SQL (Procedural Language/ SQL)

MySQL: SQL/PSM (Persistent Stored Module)

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

מהם טיפוסי נתונים או Data Types ?

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

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

ישנן כמה משפחות עיקריות של טיפוסי נתונים, ובין היתר SQL Server של חברת מיקרוסופט מספק כמה סוגים ייחודיים משלו.

שפת SQL - טבלת Data Types

פקודות SELECT – תחביר בסיסי:

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

SELECT  *

FROM שם טבלה

לדוגמא:

SELECT  *

FROM Employees

בדוגמא זו הצגנו את כל הטבלה במלואה.

• במשפט SELECT:

  •  אנו בוחרים מה אנו רוצים להציג.
  •  סימן הכוכבית מציין כי אנו רוצים להציג את כל הנתונים של הטבלה.

• במשפט FROM:

  • אנו מציינים מאיזו טבלה אנו רוצים להציג את הנתונים.
  • לאחר פקודת FROM תמיד יופיע שם של טבלה.

ואם נרצה למשוך עמודות ספציפיות – נרשום זאת בהתאם:

SELECT  שם_עמודה, שם_עמודה, שם_עמודה

FROM שם_טבלה

לדוגמא:

SELECT  FirstName, LastName

FROM  Employees

בדוגמא זו בחרנו להציג עמודות מסוימות.

• במשפט SELECT:

  •  אנו בוחרים מה אנו רוצים להציג.
  •  לאחר פקודת ה-SELECT אנו מציינים את שמות העמודות אותן אנו רוצים להציג כאשר פסיק (,) מפריד ביניהן.
  •  ניתן לציין כמה עמודות שאנו מעוניינים, ניתן אף לציין את אותה עמודה יותר מפעם אחת.

למשוך עמודות ספציפיות – נרשום זאת בהתאם:

לשים לב!

• בשתי הדוגמאות הללו אנחנו רואים שהפקודות צבועות בצבע כחול – אלו מילים שמורות בתוך SQL SERVER, נצבעות באופן אוטומטי, והמערכת יודעת מהי משמעות של כל פקודה ופועלת בהתאם.

• כל הפקודות רשומות באותיות גדולות בתוך המילה – למנוע זה לא כל כך משנה, אבל למשתמשים זה חשוב לבצע הפרדה.

• פסיק (,) מפריד בין הפריטים שאותם מבקשים לקבל.

• רווחים בין פקודות ובין אובייקטים נועדו לכתיבת קוד נקי וברור לקריאה.

• יש להבדיל ברווחים שיכולים להופיע בשם של אובייקט שמורכב מכמה מילים (בדרך כלל שתי מילים). במקרים האלה אם יירשם הרווח – המערכת תגיב בשגיאה, לכן אובייקטים כגון שם עמודה נרשמים במילה אחת בלי רווחים

לקבלת פרטים אודות קורס Business Analyst שנאיה קולג’ מציעה לחצו כאן

פקודות SELECT – Alias

Alias – מאפשר לנו לתת שמות חלופיים לעמודות.

כותרת עמודה בפלט נקבעת ע”פ שם השדה במסד הנתונים. אם רוצים להציג עמודה תחת כותרת אחרת יש לתת לה כינוי Alias. השם החדש יופיע רק בתצוגה של הטבלה ולא ישנה דבר בטבלת מקור בבסיס הנתונים.

• שימוש ב- Alias בעזרת AS:

Select FirstName AS F_N

From Employees

•ניתן גם לעשות שימוש ב- Alias ללא AS רק במידה ומדובר בכינוי הכולל מילה אחת (ללא רווחים):

Select FirstName F_N

From Employees

• שימוש ב- Alias עם רווח בין המילים מחייב גרשיים – כך נוצרת מחרוזת:

  • ניתן להשתמש גם בסוגריים מרובעים […]
  • הסיבה לכך היא שרווח בין המילים נושא משמעות מבחינת המערכת, ולכן יש למצוא פתרון לרווח שלא נושא משמעות כלשהי

Select LastName AS  ‘Last name’

From Employees

לשים לב! אם משלבים מספר עמודות, לצורך החיפוש, חשוב להוסיף פסיק (,) בין שמות העמודות.

פקודות SELECT – חישובים על עמודות

  • חישובים על עמודות מסוג מספר:

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

SELECT OrderID, UnitPrice, UnitPrice*1.2

FROM [Order Details]

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

SELECT ProductName, UnitPrice, (UnitPrice+10)*1.1 RAISE

FROM Products

  • חישובים על עמודות מסוג מחרוזת:

SELECT FirstName, LastName + 300

FROM Employees

בדוגמא זו אנחנו נקבל שגיאה. לא ניתן לבצע חישובים מתמטיים על עמודות מסוג מחרוזת.

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

שרשור עמודות הוא מעין מיזוג ערכים של עמודות שונות, כאשר נרצה להציג תוכן של שתי עמודות (או יותר) תחת שם של עמודה אחת, אנו נוכל להשתמש בסימן השרשור – (+). על מנת לשרשר עם רווח בין העמודות ניתן להשתמש בתו רווח (‘ ‘).

לדוגמא: חיבור בין רחוב למשלוח ועיר למשלוח.

בדוגמא שלהלן אנחנו מבקשים לרשום בעמודה החדשה את הכתובת המלאה שבמקור מורכבת משתי עמודות: עמודת כתובת ועמודת עיר.

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

ניתן לשרשר לעמודה כל עמודה אחרת או כל טקסט – כאשר נרצה לכתוב טקסט אנו נקיף אותו בגרשים (‘טקסט’).

פקודות sql חישובים על עמודות מסוג מחרוזת

  • חישובים על עמודות אשר מכילות בתוכן ערכי NULL:

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

SELECT ProductName, UnitPrice, UnitPrice*10

FROM Products

נחזור על אותה הדוגמא שראינו קודם. ניתן לראות שיש שדות שמסומנים ב-NULL בעמודה של איזור המשלוח. המשמעות שבטבלת מקור השדה הזה ריק.

פקודות sql חישובים על עמודות אשר מכילות בתוכן ערכי NULL

פקודות SELECT – שימוש בפקודת DISTINCT

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

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

ניתן לבצע פעולת איחזור זו גם על מספר עמודות. במקרה הזה נקבל בטבלת התוצאות את רשימת השילובים בין שתי העמודות שחוזרים על עצמם.

SELECT CustomerID

FROM Orders

SELECT DISTINCT CustomerID

FROM Orders

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

פקודות SELECT – שימוש בפקודת DISTINCT

טבלת המקור שמכילה סה”כ 830 רשומות, אחרי הפעלת פקודת DISTINCT החזירה לנו רק 20 רשומות. אלה הם אותם איזורי השילוח שחוזרים על עצמם בטבלת המקור.

חשוב לציין שגם אם הרשומה חוזרת על עצמה רק פעם אחת או 200 פעם, היא תופיע עדיין בטבלת התוצאה כרשומה ייחודית שחוזרת על עצמה פעם אחת.

ניתן אחרי DISTINCT לכתוב יותר מעמודה אחת, פעולה שכזו תביא להצגת שילוב הערכים הייחודים מהעמודות השונות. בדוגמא שלנו אם ניקח איזור שילוח ועיר שילוח – נקבל תוצאה הבאה:

פקודות sql טבלת פלט

כפי שניתן לראות הטבלה מכילה כבר 70 רשומות, כי השילוב של שני הפרטמרים מופיע יותר פעמים.

 

 

במאמר זה הצגנו הסבר בסיסי על מסדי נתונים ומבוא לכתיבה בשפת SQL.

מתעניינים בלימוד SQL? מוזמנים להכנס לקישור המצורף – ולקבל את כל הפרטים

לקבלת פרטים אודות קורס SQL שנאיה קולג’ מציעה לחצו כאן