הקדמה - מסד נתונים - Database¶
- מסד נתונים או באנגלית database או בקיצור DB זה תוכנה שמטרתה לשמור מידע.
- מסדי נתונים שומרים מידע בצורה יעילה, מאפשרים שליפה של המידע ומניפולציה על המידע
- חשבו על כל הפעמים שהשתמשתם בקבצים כדי לשמור נתונים, זה לא היה הכי נוח, ולא הכי יעיל - לשם זה מסדי נתונים קיימים.
שפת שליפה - Query language¶
- המון פעמים נרצה לכתוב תכנות שיודעות לדבר עם DB-ים.
למשל: תוכנה ששומרת מידע בDB, שולפת מידע, מכניסה מידע, או מוחקת מידע. - תוכנות מתקשרות עם DB-ים באמצעות "שפת שליפה" או באנגלית query languege
- שפת שליפה היא שפה שמטרתה לעזור לנו לעשות שליפות על הDB ועוד.
- שפות שליפה פופלוריות הן למשל: SQL, NoSQL, GraphQL
סוגים שונים של מסדי נתונים¶
- מסד נתונים רלציוני (טבלאי): מסד נתונים מסוג זה שומר את המידע בטבלאות, כדי לשלוף על מסדים מהסוג הזה נשתמש בשפת שליפה SQL, דוגמה של מסדי נתונים רלציונים: MySQL, PostgreSQL, SQLite
- מסד נתונים א-רלציוני (לא טבלאי): מסד נתונים מסוג זה שומר מידע שלא נשמר טוב בטבלאות, יכול להיות מידע שנשמר כמו מילון, ג'סונים, ועוד. כדי לשלוף על מסדים מהסוג הזה נשתמש בשפת שליפה NoSQL, דוגמה של מסדי נתונים א-רלציונים: MongoDB, Cassandra.
- מסדי נתונים מובני עצמים (אובייקטים): מסד נתונים ששומר מידע בצורה של אובייקט, דומה למסדים א-רלציונים, יש המון סוגים שונים של מסדים כאלה.
איך לבחור מסד נתונים לפרויקט שלך?¶
- איזה סוג מידע אנחנו שומרים בפרויקט? מידע טבלאי או מידע לא טבלאי (מידע שבא יותר בצורת JSON)
- כמה מידע אנחנו צריכים לשמור? איזה מסדי נתונים יכולים לשמור כמות כזו של מידע?
- איזה סוגים של שליפות / מניפולציות אנחנו נרצה לעשות על המידע? איזה מסדי נתונים תומכים בזה?
שפת שליפה SQL¶
- בהרצאה הזו נלמד על שליפות עם SQL ואיך להשתמש בSQL בפייתון עם הDB שנקרא MySql
- זכרו - SQL זה בשביל DB-ים רלציונים, ממליץ מאוד בפרויקטים שלכם לבחור DB ושפת שליפות, ממליץ לנסות גם בעצמכם לנסות להשתמש בDB א-רלציוני כמו mongoDB עם שפת NoSQL
יצירת טבלה חדשה עם SQL¶
- כדי לשמור מידע בDB אנחנו נצטרך לצור טבלה, הנה שאילת SQL שיוצרת טבלה
- הולך ליצור טבלה חדשה, עם 3 שדות.
- מפתח id - זהו מזהה מיוחד לכל משתמש בטבלה (מספר שלם) (מפתח ראשי)
- שם משתמש - שם המשתמש (טקסט)
- סיסמה - הסיסמה של המשתמש (טקסט)
| id | username | password |
|---|---|---|
הכנסת מידע לטבלה¶
- הוספנו ערך חדש לטבלה
users עם הערכים שם username=Amit ו - password=Password1, הid (המפתח הראשי) מתווסף אוטומטית
שליפת מידע מהDB¶
- זה ישלוף את כל השמות משתמשים, והסיסמאות מהטבלה
users
| username | password |
|---|---|
| Amit | Password1 |
| Shir | 123456 |
| Ben | iloveyou |
- זה ישלוף את כל השמות משתמשים, והסיסמאות מהטבלה
users כאשר השם משתמש שלהם הוא "Amit" (תנאים)
| username | password |
|---|---|
| Amit | Password1 |
- שליפה של שדה ספציפי - במקרה זה password
| password |
|---|
| Password1 |
- שליפה על כל הערכים בDB
| id | username | password |
|---|---|---|
| 1 | Amit | Password1 |
| 2 | Shir | 123456 |
| 3 | Ben | iloveyou |
מחקית מידע מהDB¶
- כדי למחוק מידע נכתוב שאילתת שליפה רגילה כמו מקודם, רק שבמקום SELECT נכתוב DELETE
שילוב טבלאות עם JOIN¶
כאשר יש לנו נתונים המפוצלים במספר טבלאות, נוכל לחבר ביניהם באמצעות JOIN:
INNER JOIN¶
מחזיר רק רשומות שיש להן התאמה בשתי הטבלאות:
LEFT JOIN¶
מחזיר את כל הרשומות מהטבלה השמאלית, גם אם אין התאמה בטבלה הימנית:
RIGHT JOIN¶
מחזיר את כל הרשומות מהטבלה הימנית, גם אם אין התאמה בטבלה השמאלית:
שילוב תוצאות עם UNION¶
מאפשר לשרשר תוצאות משאילתות שונות:
פונקציות שימושיות ב-SQL¶
בSQL אנחנו יכולים להשתמש בפונקציות שונות כדי לעשות להחזיר חישובים מסויים שעשינו על הטבלאות.
פונקציות מתמטיות¶
SELECT
COUNT(*) as total_users,
AVG(age) as average_age,
MAX(salary) as max_salary,
MIN(salary) as min_salary,
SUM(sales) as total_sales
FROM employees;
פונקציות מחרוזות¶
SELECT
CONCAT(first_name, ' ', last_name) as full_name,
UPPER(username) as uppercase_username,
LOWER(email) as lowercase_email,
SUBSTRING(address, 1, 10) as short_address
FROM users;
פונקציות תאריך¶
SELECT
NOW() as current_datetime,
DATE_FORMAT(birth_date, '%Y-%m-%d') as formatted_date,
DATEDIFF(NOW(), join_date) as days_since_joining
FROM members;
המשיכו להתאמן על SQL עם האתר הבא:
https://sqliteonline.com/