יסודות SQL

למד על DDL, DML ו JOINs

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

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

אודות SQL

ההגייה הנכונה של SQL היא בעיה במחלוקת בתוך קהילת מסד הנתונים. בתקן ה- SQL שלה, מכון התקנים האמריקני הצהיר כי ההגייה הרשמית היא "תור אל". עם זאת, אנשי מקצוע רבים באתר לקחו את ההגייה סלנג "המשך". הבחירה בידיים שלך.

SQL מגיע טעמים רבים. מסדי נתונים אורקל להשתמש PL / SQL קנייני שלה. Microsoft SQL Server עושה שימוש ב- Transact-SQL. כל הווריאציות מבוססות על תקן ANSI SQL בתעשייה. מבוא זה משתמש ANSI- תואם פקודות SQL שפועלים על כל מערכת מסד נתונים מודרניים יחסיים.

DDL ו DML

פקודות SQL ניתן לחלק לשתי תת שפות עיקריות. שפת Data Definition (DDL) כוללת את הפקודות המשמשות ליצירת ולהשמדת מסדי נתונים ואובייקטים במסד הנתונים. לאחר שמבנה מסד הנתונים מוגדר עם DDL, מנהלי מסד נתונים ומשתמשים יכולים להשתמש ב- Data Manipulation Language (DML) כדי להוסיף, לאחזר ולשנות את הנתונים הכלולים בו.

פקודות שפה הגדרת נתונים

שפת Data Definition משמשת ליצירת ולהשמדת מאגרי נתונים ואובייקטים של מסדי נתונים. פקודות אלה משמשות בעיקר על ידי מנהלי מסד נתונים במהלך שלבי ההתקנה וההסרה של פרוייקט מסד נתונים. הנה מבט על מבנה ושימוש של ארבעה פקודות DDL בסיסיים:

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

יצירת עובדים DATABASE

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

יצירת טבלה personal_info (char_name first_name (20) לא null, char_name last_name (20) לא null, employee_id int לא ריק)

קובע טבלה בשם "personal_info" במסד הנתונים הנוכחי. בדוגמה, הטבלה מכילה שלוש תכונות: first_name, last_name ו- employee_id יחד עם מידע נוסף.

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

עובדי USE

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

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

אלטר טבלה personal_info הוסף שכר כסף null

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

יְרִידָה. הפקודה האחרונה של Data Definition Language, DROP, מאפשרת לנו להסיר אובייקטי מסד נתונים שלמים מ- DBMS שלנו. לדוגמה, אם ברצוננו להסיר לצמיתות את הטבלה personal_info שיצרנו, נשתמש בפקודה הבאה:

DROP טבלה Personal_info

באופן דומה, הפקודה הבאה תשמש להסרה של מסד הנתונים של העובד כולו:

DROP DATABASE עובדים

השתמש בפקודה זו בזהירות. הפקודה DROP מסירה מבני נתונים שלמים ממסד הנתונים. אם ברצונך להסיר רשומות בודדות, השתמש בפקודה DELETE של שפת מניפולציית הנתונים.

פקודות שפה מניפולציה של נתונים

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

לְהַכנִיס. הפקודה INSERT ב- SQL משמשת להוספת רשומות לטבלה קיימת. אם נחזור לדוגמה האישית מהקטע הקודם, דמיינו כי מחלקת משאבי אנוש שלנו צריכה להוסיף עובד חדש למסד הנתונים שלה. תוכל להשתמש בפקודה הדומה לזו הבאה:

הכנס ערכים אישיים ('בארט', 'סימפסון', 12345, $ 45000)

שים לב כי יש לציין ארבעה ערכים עבור הרשומה. אלה תואמים את תכונות הטבלה בסדר שבו הם הוגדרו: first_name, last_name, employee_id ומשכורת.

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

הפקודה המוצגת להלן מאחזרת את כל המידע הכלול בטבלה personal_info. שים לב כי הכוכבית משמשת כתו כללי ב- SQL. זה פשוטו כמשמעו "בחר הכל מהטבלה personal_info."

בחר * מתוך personal_info

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

בחר Last_name מתוך personal_info

ניתן להשתמש במשפט WHERE כדי להגביל את הרשומות שאוחזרו לאלו שעומדות בקריטריונים שצוינו. המנכ "ל עשוי להיות מעוניין בבדיקת רשומות כוח האדם של כל העובדים בשכר גבוה. הפקודה הבאה מאחזרת את כל הנתונים הכלולים ב- personal_info עבור רשומות בעלות ערך שכר הגבוה מ- $ 50,000:

בחר * מתוך personal_info איפה משכורת> $ 50000

עדכון. הפקודה UPDATE ניתן להשתמש כדי לשנות את המידע הכלול בתוך טבלה, או בתפזורת או בנפרד. נניח כי החברה מעניקה לכל העובדים תוספת שכר של 3% בשכרם בשנה. הפקודה הבאה של SQL יכולה לשמש להחלה מהירה זו על כל העובדים המאוחסנים במסד הנתונים:

UPDATE personal_info SET משכורת = שכר * 1.03

כאשר העובד החדש בארט סימפסון מדגים ביצועים מעל ומעבר לשיחת חובה, ההנהלה רוצה לזהות את הישגי הכוכבים שלו עם העלאת 5,000 $. ניתן להשתמש במשפט WHERE כדי לבודד את Bart עבור העלאה זו:

UPDATE personal_info SET משכורת = שכר + $ 5000 כאשר employee_id = 12345

לִמְחוֹק. לבסוף, בואו נסתכל על הפקודה DELETE. אתה תמצא את התחביר של פקודה זו דומה לזה של פקודות DML אחרים. למרבה הצער, הדו"ח האחרון שלנו הרווחים של החברה לא בדיוק לענות על הציפיות בארט עניים כבר פוטר. ניתן להשתמש בפקודה DELETE עם סעיף WHERE כדי להסיר את הרשומה שלו מהטבלה personal_info:

מחק מ - index_info היכן עובד

מצטרף

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

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

יצירת טבלה disciplinary_action (action_id int לא null, employee_id int לא null, הערות char (500))

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

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

בחר Personal_info.first_name, personal_info.last_name, disciplinary_action.comments מאת personal_info, disciplinary_action WHERE personal_info.employee_id = disciplinary_action.employee_id and personal_info.salary> 40000

הקוד מציין את שני הטבלאות שאנו רוצים להצטרף לפסקה FROM ולאחר מכן כולל הצהרה במשפט WHERE כדי להגביל את התוצאות לרשומות שהיו תואמות את תעודות הזהות של העובד, ועמדנו בקריטריונים שלנו לשכר הגבוה מ -40,000 דולר.