[Powered by Google Translate] [SQL] [כריסטופר ברתולומיאו] [אוניברסיטת הרווארד] [זה CS50] [CS50 טלביזיה] אז, מתכנתים להשתמש במסדי נתונים ככלי לשמירה ולארגון הנתונים הקבועים שלנו בתוך טבלאות. זה אומר שהנתונים שלך מאוחסנים בחציונים בלתי נדיפים, כגון כונן קשיח, וגם כאשר המחשב כבוי, הנתונים עדיין לא נפגעו. וכמו מתכנתים, התוכניות שלנו לנצל את מאגרי מידע לתרחישים כגון אחסון מידע משתמש מטפסים באינטרנט, מחפש את המלאי, או עדכון מידע על מה שאתרים להציג. אבל איך אנחנו בעצם אינטראקציה עם מסד הנתונים שלנו, או מה אנחנו משתמשים לקריאה, לאחסן, למחוק, ולעדכן את הנתונים שלנו בתוך טבלאות מסד נתונים אלה? ובכן, התשובה היא שאנו משתמשים בסוג מיוחד של שפת מסד נתונים שאינטראקציה ישירות עם טבלאות מסד הנתונים שלנו. שמה של שפת שאילתות מובנית, [שפת שאילתות מובנית] או מה שאני מכנה SQL. עכשיו, [Se-Quel], או SQL, היא לא שפת תכנות, אבל במקום זה, זה שפה שמספקת ערכה סטנדרטית של פקודות כדי לאחזר ולטפל בנתונים ממגוון מערכות ניהול מסדי נתונים. לצורך CS50, תלכו על פני ארבע פקודות בסיסיות: בחר, להוסיף, לעדכן ולמחוק. יתר על כן, אנו לנצל ממשק אינטרנט אתר בשם phpMyAdmin, שמותקן במכשיר כדי לכתוב משפטי SQL שלנו. לכן, כדי לעזור לך לזכור פקודות אלה, אני הבאתי עוגות בארון כדי לסייע בתרחישים שלנו. תגיד יש לך מסד נתונים של הקאפקייקס, בו תוכל לשמור את כל המידע על העוגות שלך. עכשיו, מסדי נתונים יכולים להכיל טבלאות רבות והלוחות עצמם יכולים להכיל הרבה עמודים. במאגר של הקאפקייקס שלנו, יש לנו טבלה בשם cupcake_cupboard. טבלה זו תשמש לאחסון כל המידע על קאפקייקס שהם, ובכן, בארון שלך. העמודות הנמצאות בתוך השולחן שלך מייצגות את התכונות של הקאפקייקס. לדוגמה, העמודות של cupcake_cupboard הן עוגת זהות, CakeType, CakeColor, וCakeIsNice. טור וליאני-מוקלד זה משמש כדי לקבוע אם העוגה היא יפה או לא יפה. אנחנו הולכים להתחיל לכתוב משפט בחירה. הצהרות בחרו משמשות לאחזור נתונים מטבלת מסד נתונים מסוימת. בתרחיש זה, אנחנו רוצים לדעת הכל על כל העוגות שקיימות בארון שלנו. התחביר כדי לעשות זאת הוא כוכב "בחר" בחלל, או *, שטח משטח השולחן שלנו, אשר cupcake_cupboard. בואו נלך קדימה ולבצע את זה. כפי שניתן לראות, כל אלה הם העוגות בארון שלנו. חשוב לציין ש*, או כוכבי, היא דמות ג'וקר שמציין את ההתכנסות של כל העמודות של טבלה כלשהי. בדרך כלל, אנו יכולים לגשת לעמודה או עמודות ספציפיות על ידי החלפה * עם שם העמודה בפועל. אם אנו רוצים עמודות מרובות, אבל לא כולם, אנחנו יכולים להשיג את זה על ידי כתיבת שמות העמודות התוחמים כל עמודה בפסיק. לדוגמה, בואו לאחזר CakeId וCakeType בטבלת cupcake_cupboard בלבד. התחביר כדי לעשות את זה הוא: פסיק CakeID חלל SELECT מרחב CakeType מהשולחן, cupcake_cupboard. בואו נלך קדימה ולבצע את זה. והנה, עכשיו יש לנו שתי עמודות המפורטים בלבד לכל הקאפקייקס בארון שלנו. אנחנו גם יכולים לחדד את תוצאות השאילתות שלנו על ידי ציון "איפה" סעיף רק אחרי שם הטבלה. לדוגמה, נראה שיש עוגה בארון שלנו כי הוא, ובכן, לא כל כך נחמד להסתכל. בואו להבין את כל העוגות בארון שלנו שהם, ובכן, לא כל כך נחמדים מחפשים באמצעות "איפה" סעיף. התחביר כדי לעשות את זה הוא: חלל * החלל בחר מcupcake_cupboard החלל מרחב שבו מרחב העמודה מותנה שלנו, במקרה זה CakeIsNice =, והערך בוליאני של שקר. חשוב לציין שאם אתה משתמש במחרוזות, יש לתחום אותו במרכאות בודדות. זה נכון לכל המחרוזות בSQL, או, במונחי מסד נתוני SQL, תווי חלופה מכונה varchar datatype. במקרה זה, אנו משתמשים אמת או שקר, שהוא ערך בוליאני ולא מחרוזת. בואו נלך קדימה ולבצע פקודה זו. והנה, זה המקרה שיש לנו שוקולד 1 לא כל כך נחמד הקאפקייקס בארון שלנו. בשלב בא, אנחנו הולכים לכתוב משפט INSERT. הצהרות הכניסו משמשות להוספה או להוסיף שורות נוספות של נתונים לתוך הטבלה במסד הנתונים שלך. בחינה מחדש התרחיש שלנו, בואו נניח שאנחנו פשוט עשינו הקאפקייקס מותג חדש. מאז אנחנו מאוד מאורגנים אוכלי cupcake, אנחנו הולכים לצריכים להכניס הקאפקייקס החדש בטבלת cupcake_cupboard. התחביר כדי לעשות זאת הוא זו: הכנס מרחב לתוך שטח השולחן שלנו, cupcake_cupboard, שטח (, וכאן אנו מציינים את שמות עמודות, מופרד באמצעות פסיק, פסיק פסיק CakeIsNice) חלל CakeColor CakeType. בעקבות זאת, אנו כותבים את מילת מרחב הערכים (וכאן אנחנו נכנסים הערך עבור כל עמודת בהתאמה, גם מופרדים באמצעות פסיק. ציטוט אחד, כי הם כל ערכי varchar אנחנו מקיפים אותם בגרשיים בודדים, הפסיק 'הפסיק' חמאת בוטני החום הבהיר האמיתי. עכשיו, זה חשוב לתת לכל שורה מספר ייחודי המזהה את עצמו. Autoincrementing טור מספק זה כ  "אין שתי תעודות זהות אי פעם יכולות להתקיים בטבלה זו." בואו נלך קדימה ולבצע. הנה זה בא, כל מאורגן. משפט SQL הבא שאנחנו נכתוב הוא הצהרת עדכון. הצהרת העדכון ניתן להשתמש כדי לשנות את הנתונים בעמודה עבור כל שורה קיימת בטבלה במסד הנתונים שלך. מוקדם יותר בתרחיש שלנו, תוך שימוש במשפט בחירה, זיהה הקאפקייקס בתוך השולחן שלנו cupcake_cupboard ערך CakeIsNice היה שקר. בואו נניח שבעוד הקאפקייקס חמאת הבוטנים שלנו היה בתנור, עשינו הקאפקייקס לא כל כך נחמד שלנו מאוד נחמד. להיות כל כך מאורגן במיוחד, אנחנו רוצים הקאפקייקס שלנו כדי לשקף ערך זה בטבלת cupcake_cupboard. לכן, בואו לעדכן הקאפקייקס השוקולד שלנו במסד הנתונים כדי לשקף את זה. התחביר הוא: חלל UPDATE שולחננו, cupcake_cupboard, מרחב SET חלל הטור שאנחנו רוצים לשנות, CakeIsNice =. אז הנה אנחנו במקום חלל הערך האמיתי החדש שלנו. עכשיו, בגלל שאנחנו לא רוצים לעדכן את כל השורות עם ערך זה, אנו רוצים לספק "איפה" סעיף שיגרום להם להתרכז לשורה המדויקת שברצונך לשנות. במקרה זה, אנחנו יודעים שיש רק מאפיין אחד שיש לו ערך CakeIsNice של שקר. יתר על כן, אנו גם להבטיח כי אנו מעדכנים את השורה הנכונה באמצעות "והסעיף". אנו משתמשים "וסעיף" כדי לחדד השאילתה שלנו עוד יותר. במקרה זה, משום שאנו יודעים כי הקאפקייקס הוא שוקולד, אנו נשתמש בעמודת CakeType זה. שבו שטח החלל שלנו מותנה עמודת חלל CakeIsNice = שקר, ו 'שוקולד'. חלל CakeType = לכן, לשים את הכל ביחד, הצהרת עדכון זה אומרת למצוא את כל העוגות בארון הקאפקייקס שלנו, ואם יש עוגה שהטור שלו CakeIsNice מכיל את ערך False וCakeType מכיל שוקולד הערך, אנחנו רוצים לעדכן את ערך CakeIsNice שורות הספציפיות לנכון. אז, בואו נלך קדימה ולהוציא לפועל את ההצהרה. ועכשיו, אנחנו מאורגנים. כל הדיבורים האלה של עוגות הפכו אותי קצת רעבים. אני חושב שאני צריך לעזור לעצמי אחד. אבל אם אני באמת אוכל העוגה הזאת, אני צריך לפחות גם להסיר את קיומה  משולחן cupcake_cupboard. כדי לעשות זאת, אנו נשתמש בהצהרה "מחק". ההצהרה "מחק" ניתן להשתמש כדי להסיר את כל או חלק משורות בטבלה. אם ברצונך להסיר חלק מהשורה ספציפית בטבלה, אז אתה חייב לספק סעיף "איפה", ובכך לציין עמודה שצריך להיות ייחודיים לשורה שברצונך להסיר. זה תחביר: DELETE חלל; השולחן, cupcake_cupboard, המרחב שלנו. עכשיו, בשלב זה, כל פעם שאתה כל כך רחוק בהצהרת המחיקה שלך אתה רוצה להיות זהיר מאוד. לדוגמה, אם אני רוצה להריץ שאילתא זה כמו שהוא ללא מתן חלק "איפה" סעיף אני אאבד את כל הנתונים בטבלת cupcake_cupboard זה, אלא משום שאני כבר יודע שתעודות הזהות של העוגה שלי הן ייחודיות, אני אשתמש זיהוי הקטיפה האדום עוגה לסעיף של "איפה". שבו שטח הטור שלנו, CakeID 1 =. בגלל זה הוא ערך שלם שאין צורך להקיף אותו במרכאות בודדות. אז, בואו להפעיל את המשפט. ובכן, עכשיו שאנחנו כבר נגבנו את קיומו של הקאפקייקס זה משולחן cupcake_cupboard, יש לנו דבר אחד שמאל בלבד: לגרום לזה להיעלם. אני כריסטופר רתולומיאו. זה CS50.