מאמר מסדרה על יצירת פרויקט ג'אווה. המטרה שלו היא לנתח טכנולוגיות מפתח, התוצאה היא כתיבת בוט טלגרם. החלק המבוא נמצא כאן . אלוהה, מהנדסי תוכנה. היום אנחנו מדברים על מסדי נתונים ושפת SQL. למי מיועד המאמר הזה? כן לכל מי שמתעניין. חלקם יכולים להתחיל את המסע שלהם עם מאמר זה, אחרים יוכלו לרענן את הזיכרון שלהם בעובדות מעניינות. חלק זה יהיה תיאורטי בלבד. לפני שנספר לכם מה הם מסדי נתונים ותחביר SQL, עלינו להבין ולקבוע מדוע נלמד אותם. בשלב זה, נדבר רק על מסדי נתונים של SQL: לא נשקול את NoSQL בסדרת המאמרים הזו.
מסד נתונים: מה זה
מסד נתונים (להלן DB) הוא מקום שבו מאוחסנים נתונים מובנים , שניתן להשיג באמצעות שפת שאילתה. מסדי נתונים יכולים לא רק לאחסן, אלא גם לעבד ולשנות מידע בהיקפים גדולים. כהערה: נסה לשנות במהירות קבוצת ערכים ב-Excel על סמך כמה קריטריונים. עקרונית, שום דבר לא מסובך. לא כמו בעולם האמיתי הלא-דיגיטלי שלנו. לדוגמה, שינוי שמות של נתיבים, רחובות, ערים. אם הכל היה וירטואלי ונכנס למסד הנתונים, זה היה מנורמל, זה היה כמה זוטות. כפי שהוא, מדיות אחסון רבות סובלות מכיוון שאינן יכולות להשתנות באופן אוטומטי. בהקשר זה, SQL עבור מסדי נתונים היא שפה שמסד הנתונים מבין ומגיב בהתאם. נניח, שינוי שמה של העיר לא יהיה קשה; שינוי שמה של דנייפרופטרובסק לדניפרו ייראה בערך כך:UPDATE city SET name = “Днипро” WHERE id = 1231;
כל הבקשות הבאות למערכת כבר ייצרו את השם שאנחנו צריכים.
מדוע נדרשים מסדי נתונים?
כפי שכבר אמרתי, באמצעות מסדי נתונים ניתן לאחסן נתונים. אבל מה זה הנתונים האלה? כדי להבין שימוש בדוגמה מהחיים האמיתיים, נוכל לדבר על יישום כלשהו. למשל, על אותו בוט טלגרם. אנחנו רוצים לדעת כמה אנשים משתמשים בבוט. כיצד ניתן ליישם זאת? באפליקציית ג'אווה רגילה, ניתן ליצור אלמנטים ייחודיים רבים - סט, אשר יאחסן את הכינוי או הצ'אט מזהה של המשתמש. זה יעבוד? רָצוֹן. בדיוק עד להפסקת אפליקציית ג'אווה, ומיד עם הפעלתו מחדש, סט האלמנטים הייחודיים יהיה ריק. כלומר, הנתונים שהיו מאוחסנים באפליקציה הפועלת פשוט נעלמו. מה אתה יכול לעשות בנידון? אתה יכול להעביר את האחסון של מצב המערכת (נתונים) מיישום Java למקום אחר. אתה יכול לאחסן את זה בפורמט CSV בקובץ רגיל במחשב שלך. אתה יכול לעשות זאת בשורה אחת בקובץ נפרד. אתה יכול לעשות זאת ולאחר מכן להחליף נתונים אלה לפני שיישום Java נעצר. למרות שהערובה שההקלטה תצליח רחוקה מלהיות קרוב ל-100%, כי אפשר פשוט לשלוף את כבל החשמל של השרת וההקלטה לא תתרחש. לגישה זו יש חיסרון משמעותי: אין פונקציונליות להשגה, צבירה וחיפוש מידע ברמת הקובץ. כן, כמובן, אתה יכול לקרוא קובץ וליצור עבורו אובייקטים, אבל תצטרך לשאוב את כל הנתונים לאפליקציה בכל פעם. ויכולים להיות הרבה מהם, למשל, כמה גיגה-בייט. ניתן להימנע מכך על ידי אחסון נתונים במסד נתונים. אֵיך? דרך טבלאות ויחסים ביניהם. על זה מבוססים כל מסדי הנתונים היחסיים.SQL: שפה שמסדי נתונים מבינים
ישנן מערכות ניהול מסדי נתונים (להלן DBMS) והשפה שהם מבינים היא SQL. SQL היא שפת תכנות למניפולציה וניהול של מסדי נתונים. כדי להבין איך זה עובד, בואו נסתכל על האיור: המשתמש שולח שאילתות SQL ל-DBMS, ה-DBMS מבין מה צריך לעשות, עושה את זה, ואם הבקשה הייתה להשיג נתונים, אז מחזיר אותם. לכן, כמפתחים, עלינו לשלוט בשפת השאילתות של SQL. אולי תחשוב, "הו, שפה אחרת. בעזרת השם, אני בקושי מבין כאן את ג'אווה, ואתה מיד מציע לי שפה אחרת". זה לא נכון: SQL הומצא כשפת מפרט ל-DBMS כך שרואה חשבון שרחוקים מאוד מבסיסי נתונים ותכנות בכלל יוכלו לכתוב בשפה זו. זה אומר שלמד את זה לא יהיה כל כך קשה. העיקר הוא תרגול-תרגול-תרגול. היום תהיה תיאוריה, אבל המאמר הבא יעסוק בפרקטיקה. מכיוון שמסד נתונים יחסי הוא קבוצה של טבלאות-מערך דו-ממדיות ויחסים ביניהם, העבודה תעבוד סביבם. אם נדבר על דוגמה, נוכל להראות שתי טבלאות - "מדינות" ו"ערים" וכיצד הן מחוברות. בשלב זה, חשוב לנו להבין שהרשומות בטבלה הן נתונים על אובייקט כלשהו מעולם הג'אווה. לדוגמה, ניתן לתאר את שתי הטבלאות הללו ב-Java כך:public class Country {
private Long id;
private String name;
}
public class City {
private Long id;
private String name;
private Country country;
private Integer population;
}
ובכן, זה לא יפה, הא? מסד הנתונים יכול לאחסן כל מספר של טבלאות. במקרה שלנו יש שניים מהם.
מבנה השולחן
אני חושב שכולם נתקלו בטבלאות אקסל בצורה כזו או אחרת, ואתם מבינים את המונחים שורה ועמודה . בהקשר של מסדי נתונים מדברים יותר על רשומות ושדות: כך יוצא שכל אובייקט של המחלקה City הוא רשומה בטבלה במסד הנתונים.מפתח ראשי
לעתים קרובות קורה שלשדות בבסיסי נתונים יש אותם ערכים. למשל, רשתות חברתיות, שבהן ניתן למצוא יותר מאדם אחד לפי שם, שם משפחה ואפילו פטרוניום. ומסדי נתונים יחסיים דורשים שדה ייחודי שניתן להשתמש בו כדי לגשת לרשומה. זה נקרא המפתח הראשון או המפתח הראשי. בדרך כלל, השדה ID(id) משמש כמפתח כזה - זה קיצור של מזהה. זו הסיבה שאתה צריך להוסיף שדה מזהה לכל טבלה .מפתח חיצוני
בדוגמה שלנו, שדה כזה נמצא בטבלה City, המשתמשת במפתח מ-Country. וזה עובד כך: כל עיר מכירה מזהה מידע ייחודי למדינה שלה, ואם ניקח אותו וניצור שאילתה במאגר, נקבל מידע מקיף על המדינה. כפי שניתן לראות בתמונה, יש קשר בין שתי טבלאות: העיקרון של מפתח זר מוצג כאן.אילו סעיפים יש ב-SQL?
אגב, במהלך ראיונות הם נשאלים לעתים קרובות אילו פעולות יש ב-SQL:- DDL (Data Definition Language) היא קבוצה של אופרטורים שמשנים/יוצרים טבלאות, המבנה שלהן ועוד. כלומר, יצירת טבלה, מחיקתה, יצירת/מחיקת שדות בטבלאות; יצירת מפתח ראשי חדש וכן הלאה;
- DML (שפת מניפולציה של נתונים) היא קבוצה של אופרטורים המנהלים שינוי נתונים. כל אלו הן פעולות שמשנות נתונים במסד הנתונים: הוספה, קבלת, שינוי ומחיקה;
- DCL (שפת בקרת נתונים) היא אמצעי לאישור זכויות משתמש לביצוע פעולות. פעולות למתן גישה וזכויות למשתמש ספציפי כדי שיוכל לבצע פעולות DDL/DML.
אילו סוגי נתונים קיימים ב-SQL
טבלאות יכולות לאחסן ולעבד סוגים מסוימים של נתונים. הכל כאן יהיה דומה למה שאנו משתמשים בג'אווה. בואו נדבר על העיקריים שבהם. יש רק שלושה מהם, נוסיף אחרים לפי הצורך ו/או הרצון: כפי שניתן לראות מהתמונה, אלו הם:- INT - ערכי מספר שלמים. משמש עבור מזהה ייחודי ועבור מספר שלם פשוט;
- VARCHAR הוא המחרוזת שלנו ;
- DATE הוא LocalDate שלנו.
GO TO FULL VERSION