[موسیقی] داگ لوید: در فیلم های ما در مباحث توسعه وب، ما مفهوم ذکر کرده ام یک پایگاه داده چند بار، درست است؟ بنابراین یک پایگاه داده شما احتمالا با از آشنا می گویند با استفاده از مایکروسافت اکسل یا صفحات گسترده گوگل. این واقعا فقط یک سازمان مجموعه ای از جداول، ردیف، و ستون. و یک پایگاه داده است که در آن فروشگاه وب سایت ما اطلاعات مهم این است که برای وب سایت ما به درستی کار نکند. باز هم، به عنوان مثال واقعا مشترک در اینجا ذخیره سازی کاربری و کلمه عبور در یک پایگاه داده، به طوری که وقتی یک کاربر سیاهههای مربوط به وب سایت ما، پایگاه داده می تواند تردید به دیدن اگر آن کاربر در پایگاه داده وجود دارد. و اگر آنها، چک کردن که رمز عبور خود را صحیح است. و اگر رمز عبور خود را صحیح است، پس ما می توانیم آنها را هر صفحه را آنها درخواست. بنابراین شما احتمالا، آشنا هستید، دوباره با این ایده از اکسل و یا گوگل صفحات گسترده. ما پایگاه های داده، جداول، ردیف، و ستون. و این واقعا مرتب سازی بر از مجموعه های اساسی تجزیه سلسله مراتبی است. بنابراین در اینجا یک صفحه گسترده اکسل است. و اگر شما همیشه این را باز کرد یا یکی دیگر از برنامه های مشابه شما می دانید که این در اینجا rows-- 1، 2، 3، 4، 5، 6، 7. این ستون می باشد. شاید در اینجا، هر چند شما ممکن این ویژگی استفاده نمی وحشتناکی much-- من زوم in-- ما این ایده از یک ورق. بنابراین شاید این ورق، اگر من متناوب به عقب و جلو، جداول مختلفی که در پایگاه داده من وجود داشته باشد. و اگر ما به عنوان مثال تمام ادامه راه، نام این پایگاه داده کتاب 1 است. شاید من کتاب 2 و کتاب 3. بنابراین هر یک از فایل اکسل است پایگاه داده، هر ورق یک جدول است، و در داخل هر یک از جدول من این ایده را از سطر و ستون. پس چگونه با این پایگاه داده کار کنم؟ چگونه می توانم اطلاعات از آن را دریافت کنم؟ خب یک زبان به نام وجود دارد SQL-- که من معمولا فقط Sequel-- پاسخ و آن را برای مخفف زبان پرس و جو ساخت یافته. و آن را یک زبان برنامه نویسی است، اما آن را یک برنامه نسبتا محدود زبان. این کاملا مانند دیگران نیست که ما با کار کرده است. اما هدف از این زبان برنامه نویسی است به پرس و جو پایگاه داده، به درخواست اطلاعات از یک پایگاه داده، پیدا کردن اطلاعات در یک پایگاه داده، و به همین ترتیب. ما همچنین در CS50-- و آن را بسیار پلت فرم مشترک، آن را خروجی زیر نامیده می شود. این چیزی است که ما در این دوره استفاده کنید. این منبع باز است پلت فرم است که ایجاد یک به اصطلاح database-- رابطه یک پایگاه داده، به طور موثر. ما لازم نیست برای به دست آوردن به جزئیات بیش از حد در چه یک پایگاه داده رابطه است. اما زبان SQL است در کار بسیار ماهر با MySQL و دیگر مشابه سبک های پایگاه داده های رابطه. و تاسیسات بسیاری از خروجی زیر را با چیزی آمده نام از phpMyAdmin، که یک کاربر گرافیکی است interface-- GUI-- که باعث می شود آن را کمی بیشتر کاربر پسند برای اجرای نمایش داده شد پایگاه داده، چون پایگاههای نه تنها استفاده توسط برنامه نویسان پیشرفته، درست است؟ گاهی اوقات وجود دارد این کسب و کار کوچک، و آنها نمی توانیم به استخدام یک گروه از برنامه نویسان، اما آنها هنوز هم نیاز به ذخیره اطلاعات در پایگاه داده. چیزی شبیه به phpMyAdmin به آن را بسیار آسان برای کسی که قبل از به برنامه ریزی هرگز انتخاب کنید و با آن آشنا شود برای کار با پایگاه داده است. مشکل این است که، از phpMyAdmin، در حالی که آن را به یک ابزار فوق العاده برای یادگیری در مورد پایگاه های داده، آن را دستی است. شما در حال رفتن به برای ورود به آن و اجرای دستورات و نوع همه چیز در دستی. و همانطور که ما از ما می دانیم به عنوان مثال در برنامه نویسی تحت وب پی اچ پی، نیاز به صورت دستی انجام همه چیز در وب سایت ما، اگر ما می خواهیم پویا، فعال پاسخگو وب سایت، شاید بهترین روش است. ما می خواهیم به پیدا کردن راهی برای شاید این به طور خودکار به نحوی. و SQL ما را قادر به انجام این کار. بنابراین، هنگامی که ما قصد داریم به شروع به کار با SQL، ما برای اولین بار نیاز به یک پایگاه داده برای کار با. ایجاد یک پایگاه داده است چیزی است که شما احتمالا در phpMyAdmin را انجام خواهد داد، زیرا شما فقط نیاز به انجام آن یک بار، و نحو برای انجام این کار است که بسیاری راست تر است. آن را بسیار آسان تر برای انجام آن در یک رابط کاربر گرافیکی از تایپ کردن آن را به عنوان یک فرمان. دستور می توانید یک دست و پا گیر کمی دریافت کنید. به طور مشابه، ایجاد یک جدول می توانید بسیار کمی دست و پا گیر است. و بنابراین چیزهایی مانند ایجاد یک پایگاه داده و ایجاد یک جدول است که شما احتمالا تنها رفتن به انجام once-- یک بار در هر جدول، یک بار در هر database-- آن را OK به انجام این کار در یک رابط گرافیکی. در روند ایجاد یک جدول، شما همچنین برای مشخص کردن تمام از ستون هایی که در آن جدول باشد. چه نوع اطلاعاتی را که می خواهید برای ذخیره در جدول؟ شاید نام کاربر و تاریخ تولد، رمز عبور، شماره ID کاربر، و شاید شهرستان و دولت، درست است؟ و برای هر زمان ما می خواهیم به اضافه کردن یک کاربر به پایگاه داده، ما می خواهیم به تمام شش از آن تکه از اطلاعات است. و ما که با اضافه کردن ردیف به جدول. بنابراین ما برای اولین بار ایجاد یک پایگاه داده، پس از آن یک جدول را ایجاد کنیم. به عنوان بخشی از ایجاد یک جدول، از ما خواسته برای تعیین هر ستون که ما در این جدول است. و پس از آن به عنوان ما شروع به اضافه کردن اطلاعات به پایگاه داده و پرس و جو پایگاه داده بیشتر generally-- نه فقط با اضافه کردن، اما هر چیز دیگری ما do-- ما خواهید بود خرید و فروش با ردیف از جدول است، که یکی اطلاعات کاربر را از کل مجموعه. بنابراین هر ستون SQL قادر است برگزاری اطلاعات از یک نوع داده خاص است. بنابراین ما از این حذف ایده از انواع داده در PHP، اما آنها تماس در SQL است. و در بسیاری از انواع داده ها وجود دارد. در اینجا تنها 20 نفر از آنها، اما آن را حتی همه آنها نیست. بنابراین ما باید ایده ها مانند INTs-- Integers-- ما احتمالا می دانید که این ستون می توانید اعداد صحیح نگه دارید. و تغییرات وجود دارد thereon-- SMALLINT، TINYINT، MEDIUMINT، BIGINT. شاید ما همیشه باید چهار گزش است. شاید ما باید هشت بایت، و بنابراین ما می توانید این تغییرات را روی اعداد صحیح استفاده به فضای کمی بیشتر کارآمد می باشد. ما می توانیم اعداد اعشاری انجام دهید، ما می توانید اعداد اعشاری است. این بسیار مشابه هستند. برخی از تفاوت های وجود دارد، و اگر شما می به نگاه کردن به مرتب سازی بر SQL از راهنمای، شما می توانید ببینید چه اندک تفاوت های بین آنها می باشد. شاید ما می خواهید برای ذخیره اطلاعات در مورد تاریخ و زمان. شاید ما در حال پیگیری زمانی که کاربر تاریخ عضویت وب سایت ما، و بنابراین شاید ما می خواهیم به یک ستون که زمان تاریخ و یا یک زمان که نشان می دهد که کاربر در واقع امضا رسیده بود. ما می توانیم هندسه و linestrings است. این است که در واقع بسیار سرد است. ما می توانیم نقشه از یک منطقه جغرافیایی با استفاده از GIS مختصات به رسم منطقه است. پس در واقع می تواند این نوع ذخیره اطلاعات در یک ستون SQL. متن فقط حباب های غول پیکر از متن است، شاید. Enum ها به نوعی جالب. آنها در واقع در C. وجود ما نمی صحبت در مورد آنها به دلیل آنها نیست وحشتناکی معمولا استفاده می شود، حداقل CS50. اما این یک نوع داده شمارشی که قادر به نگه داشتن ارزش های محدود است. یک مثال بسیار خوب در اینجا خواهد بود برای ایجاد یک شمارشی که در آن هفت مقادیر ممکن عبارتند از یکشنبه، دوشنبه، سه شنبه، چهارشنبه، پنجشنبه، جمعه، شنبه، درست است؟ آن روز نوع داده هفته وجود ندارد، اما ما می تواند ایجاد نوع داده برشمرده چنین که ستون فقط می توانید نگه دارید یکی از آن هفت مقدار ممکن است. ما همه برشمرده ام از مقادیر ممکن. پس ما باید کاراکتر و varchar، و من رنگ سبز این چون ما در واقع هستید رفتن به یک دوم در مورد تفاوت صحبت بین این دو چیز است. بنابراین CHAR، بر خلاف C که در آن CHAR یک شخصیت بود، در SQL یک کاراکتر اشاره به رشته ای با طول ثابت شده است. و هنگامی که ما این ایجاد ستون، ما در واقع می توانید طول رشته را مشخص کنید. بنابراین در این مثال، ما ممکن است CHAR (10) می گویند. این بدان معناست که هر عنصر از آن ستون خواهد از 10 بایت اطلاعات تشکیل شده است. نه بیشتر نه کمتر. بنابراین اگر ما را امتحان کنید و در یک قرار 15 بیتی یا یک عنصر 15 شخصیت و یا ارزش را به این ستون، ما فقط دریافت 10 نخست. اگر ما در دو قرار داده است ارزش شخصیت طولانی، ما در حال رفتن به دو شخصیت ها، و پس از آن هشت گزش تهی. ما هرگز کارآمد تر از آن باشد. VARCHAR نوع مانند تصور ما از یک رشته که ما آشنا هستید با از C و یا از پی اچ پی. آن را یک رشته با طول متغیر است. و هنگامی که شما ایجاد این ستون، شما فقط تعیین حداکثر طول ممکن است. بنابراین شاید 99، و یا معمولا 255. خواهد بود که حداکثر طول. خوب اگر ما ذخیره سازی 15 رشته کاراکتر، ما 15 بایت استفاده کنید، شاید 16 بایت برای نابودگر تهی. اگر ما ذخیره شد سه رشته کاراکتر، سه یا چهار بایت استفاده کنید. اما ما کامل 99 استفاده نمی کند. پس چرا ما باید هر دو؟ خب، اگر ما نیاز به کشف کردن که چگونه چیزی است با VARCHAR، ما به نوع تکرار کرده اند در سراسر آن درست مثل ما در C بود و کشف کردن که در آن متوقف می شود. در حالی که اگر ما می دانیم که همه چیز در این ستون 10 بایت است، شاید ما می دانیم که اطلاعات، ما می توانید پرش 10 بایت، 10 بایت، 10 بایت، 10 بایت، و همیشه پیدا کردن ابتدای رشته. بنابراین ما ممکن است برخی از آنها فضای هدر رفته با یک کاراکتر، اما شاید یک تجارت وجود دارد کردن از داشتن سرعت بهتر در مرور در پایگاه داده است. اما شاید ما می خواهیم انعطاف پذیری از یک VARCHAR به جای having-- اگر CHAR ما 255 بود، اما بسیاری از کاربران ما تنها خواندن سه یا چهار بایت ارزش اطلاعات و یا سه یا چهار شخصیت ارزش از اطلاعات است. اما برخی از کاربران با استفاده از طیف 255، شاید VARCHAR خواهد بود مناسب تر است. این نوع از تجارت را خاموش، و به طور کلی برای اهداف CS50، شما لازم نیست که به نگرانی بیش از حد در مورد آیا شما استفاده از یک کاراکتر یا VARCHAR. اما در دنیای واقعی، این چیزها مهم چرا که همه از این ستون ها تا فضای فیزیکی واقعی. و فضای فیزیکی، در دنیای واقعی، در حق بیمه می آید. بنابراین یکی در نظر گرفتن دیگر وقتی شما در حال ایجاد یک جدول این است که انتخاب یک ستون به چه یک کلید اولیه نامیده می شود. و یک کلید اصلی یک ستون است که در آن هر ارزش واحد منحصر به فرد است. و این بدان معناست که شما به راحتی می توانید انتخاب کردن یک سطر فقط با نگاه در کلید اولیه آن ردیف. بنابراین برای مثال، شما به طور کلی، با کاربران، انجام دو کاربر چه کسی از همان شماره ID کاربر. و به این ترتیب شاید شما مقدار زیادی از اطلاعات، و شاید دو کاربران می توانند دارند name-- همان شما جان اسمیت و جان اسمیت. که لزوما یک مشکل نیست، چون چند نفر وجود دارد در جهان به نام جان اسمیت. اما ما تنها شماره ID یک کاربر 10، یک کاربر ID شماره 11، 12، 13. ما دو کاربران ندارد با همان تعداد، و تا شاید شماره ID کاربر می شود یک کلید اصلی است. ما هر گونه تقلید ندارد، و ما هم اکنون می توانید منحصر به فرد شناسایی هر سطر فقط با نگاه کردن به آن ستون. انتخاب کلید اصلی در واقع می تواند انجام عملیات جدول بعدی خیلی آسان تر به دلیل شما می توانید اهرم این واقعیت است که برخی از ردیف منحصر به فرد، و یا یک ستون خاص از پایگاه داده و یا جدول خود را منحصر به فرد برای انتخاب خواهد شد ردیف خاص است. شما همچنین می توانید اولیه مشترک کلید، که ممکن است شما مناسبت پیدا کنید برای استفاده، است که فقط یک ترکیبی از دو ستون است که تضمین شده است به منحصر به فرد. بنابراین شاید شما یکی از ستون است که به عنوان و BS، یک ستون که یکی، دو، و سه، اما شما تنها یک A1 تک، تک A2، و غیره و غیره. اما شما ممکن است یک B2، یک C2، و یا یک A1، A2، A3، A4. بنابراین شما نیز ممکن متعدد، چندین دارند BS، چند آنهایی که، Twos متعدد، اما شما فقط می توانید همیشه یک تنها A1، B2، C3، و غیره. همانطور که گفتم، SQL است زبان برنامه نویسی، اما آن را تا یک فرهنگ لغت بسیار محدود شده است. این کاملا به عنوان گسترده به عنوان C و PHP و زبان های دیگر که ما در این دوره صحبت کنید. این طولانی تر است زبان از آنچه که ما رفتن به بحث در مورد در این ویدئو، چرا که در این فیلم ما قصد داریم به بحث در مورد چهار عملیات که ما می توانید در یک جدول را انجام دهد. بیش از این وجود ندارد. ما می توانیم بیش از این کار، اما برای اهداف ما، ما در حال به طور کلی به توان با استفاده تنها چهار درج operations--، را انتخاب کنید، به روز رسانی و حذف کنید. و شما احتمالا می تواند به طور مستقیم حدس می زنم چه تمام این چهار چیز را انجام دهید. اما ما به یک بیت به از جزئیات در هر یک. بنابراین برای اهداف این ویدئو، اجازه دهید فرض کنیم ما به شرح زیر دو جداول در پایگاه داده است. ما یک جدول به نام است که کاربران چهار columns-- شماره ID، نام کاربری، رمز عبور و نام کامل. و ما باید یک دوم جدول در پایگاه داده همان به نام مادران که فقط ذخیره اطلاعات در مورد یک نام کاربری و یک مادر است. پس برای همه نمونه در این فیلم، ما با استفاده از این پایگاه داده ها و به روز رسانی بعدی به آن است. بنابراین اجازه دهید بگویم که ما می خواهید اضافه کردن اطلاعات به یک جدول. این چیزی است که عمل INSERT کند. در توضیح همه این دستورات، من قصد دارم به شما یک اسکلت کلی برای استفاده. از آنجا که در واقع، نمایش داده شد در حال رفتن نگاه بسیار مشابه، ما فقط رفتن در حال تغییر است قطعه کمی متفاوت از اطلاعات برای انجام کارهای مختلف با جدول. بنابراین برای INSERT، اسکلت به نظر می رسد نوع مانند این. ما می خواهیم برای وارد کردن به یک جدول خاص. پس ما باید یک پرانتز باز و یک لیست از ستون که ما می خواهیم به قرار دادن ارزش ها را به. نزدیک پرانتز، در مقادیر زیر را، و سپس دوباره، ما لیستی از مقادیر ما می خواهیم در جدول قرار داده است. بنابراین یک مثال از این می توان به موارد زیر. من می خواهم برای وارد کردن به جدول کاربران زیر columns-- نام کاربری، رمز عبور، و نام کامل. بنابراین یک ردیف جدید که در آن من قرار دادن در آن سه ستون و ما رفتن به در ارزش قرار نیومن، USMAIL و نیومن. بنابراین در این مورد، من قرار دادن نیومن کوچک در ستون نام کاربری، رمز عبور USMAIL، و نام و نام خانوادگی سرمایه N نیومن در ستون نام کامل است. بنابراین در اینجا چیزی پایگاه داده مثل قبل بود. در اینجا آنچه در جدول کاربران که بر روی بالا مانند قبل از ما این بود. پس از این اجرا ما پرس و جو، ما این را دریافت کنید. ما یک ردیف جدید به جدول اضافه شده است. اما متوجه این یک چیز که من مشخص نیست، اما به نوعی من یک مقدار کردم برای، که این 12 حق در اینجا. من می گویند من می خواستم قرار دادن شماره ID در آن وجود دارد. من می خواستم به قرار دادن نام کاربری و رمز عبور، نام کامل. و من که، که خوب است. اما من هم این 12. چرا من این 12؟ خب، معلوم است که زمانی که شما تعریف یک ستون است که برای رفتن به خود را کلید اصلی، که معمولا، مثل من گفت، تعداد ID. این همیشه لزوما برای رفتن به یک شماره ID، اما معمولا یک ایده خوب به نوعی از ارزش عدد صحیح است. شما باید گزینه در phpMyAdmin هنگامی که شما ایجاد پایگاه داده خود را و یا جدول خود را به مجموعه ای که ستون به عنوان خودرو افزایش. که یک ایده واقعا خوب است که شما در حال کار با یک کلید اصلی، چون شما می خواهید هر مقدار در آن ستون به منحصر به فرد. و اگر شما فراموش نکنید که به مشخص آن را برای بیش از یک نفر، شما در حال حاضر یک وضعیت که در که ستون دیگر منحصر به فرد. شما باید دو شاهد، بنابراین شما می توانید بدون دیگر منحصر به فرد شناسایی column-- و یا شما دیگر نمی تواند منحصر به فرد شناسایی یک ردیف بر اساس آن ستون است. این همه از دست رفته خود ارزش به عنوان یک کلید اولیه. و به این ترتیب ظاهرا آنچه من انجام داده اند در اینجا پیکربندی شناسه کاربر ستون به افزایش خودکار به طوری که هر هم اطلاعات اضافه کردن به جدول، آن را به طور خودکار به من بدهید یک مقدار را برای کلید اولیه. بنابراین من هرگز فراموش به انجام آن به دلیل پایگاه داده آن را برای من انجام خواهد داد. به طوری که نوع خوب. و به همین دلیل ما 12 در آن وجود دارد، چون من مجموعه ای که ستون تا افزایش خودکار. اگر من اضافه کسی دیگر آن می شود، 13، اگر من اضافه کسی دیگر آن می شود، 14، و غیره. بنابراین اجازه دهید فقط یک درج شده است. ما به جدول مادران قرار دادن، در به طور خاص، نام کاربری و مادر ستون، ارزش کرامر و BABS کرامر. و بنابراین ما قبل از این بود. پس از اجرای این ما پرس و جوی SQL، ما این. ما کرامر و BABS اضافه شده کرامر به جدول مادران. به طوری که قرار دادن. SELECT چیزی است که ما استفاده برای استخراج اطلاعات از جدول. پس این است که چگونه ما اطلاعات از پایگاه داده باشد. و دستورات بنابراین انتخاب در حال رفتن به اغلب در برنامه نویسی استفاده می شود. به طور کلی framework-- اسکلت کلی به نظر می رسد مثل این. انتخاب کنید مجموعه ای از ستون ها از یک میز، و سپس به صورت اختیاری شما می توانید یک condition-- مشخص و یا آنچه که ما به طور معمول پاسخ گزاره، معمولا مدت ما در SQL استفاده کنید. اما آن را اساسا چه ردیف خاص شما می خواهید برای دریافت. اگر می خواهید، به جای گرفتن همه چیز، آن را محدود کردن، این است که در آن شما می انجام این کار. و پس از آن در صورت تمایل، شما همچنین می توانید سفارش توسط یک ستون خاص است. بنابراین شاید شما می خواهید به همه چیز طبقه بندی شده اند بر اساس حروف الفبا در یک ستون بر اساس بر اساس حروف الفبا و یا در یکی دیگر از است. باز هم، که در آن و ORDER BY اختیاری هستند. اما آنها احتمالا می شود useful-- ویژه که در آن به مفید باشد محدود کردن بنابراین شما لازم نیست گرفتن کل پایگاه داده خود را به عقب و باید آن را پردازش کند، شما فقط قطعات از آن است که شما در مورد مراقبت. بنابراین برای مثال، ممکن است بخواهید برای انتخاب شماره ID و نام کامل از کاربران است. پس چه ممکن است این نگاه می کنید؟ بنابراین در اینجا جدول کاربران من است. من می خواهم به idnum را انتخاب کنید نام و نام خانوادگی و از کاربران است. چه هستم من برای به دست آوردن؟ من قصد دارم به این. من آن را متمرکز نمی، بنابراین من گرفتن شماره ID برای هر سطر و من گرفتن کامل نام را از هر ردیف. باشه. اگر من می خواهم برای انتخاب رمز عبور از کاربران WHERE-- بنابراین در حال حاضر من با اضافه کردن یک وضعیت، یک predicate-- که در آن idnum کمتر از 12 است. بنابراین در اینجا پایگاه داده من دوباره، کاربران جدول من در بالای صفحه. چه هستم من برای به دست آوردن اگر من می خواهم که اطلاعات را انتخاب کنید، رمز عبور، که در آن ID کاربر یا idnum کمتر از 12 است؟ من قصد دارم به این اطلاعات تماس، درست است؟ اتفاق می افتد که idnum 10 است، کمتر بیش از 12، شماره ID 11 کمتر از 12. من گرفتن رمز عبور برای آن ردیف. این چیزی است که من برای خواسته. در مورد این چی؟ اگر من می خواهم به ستاره از را انتخاب کنید جدول مادران که در آن نام کاربری برابر جری؟ OK، ستاره را انتخاب کنید خاص است مرتب کردن بر اساس کارت های وحشی به اصطلاح که ما با استفاده تا همه چیز را. به طوری که آنها می گویند را انتخاب کنید نام کاربری مادر کاما از هم، که رخ داده است به تنها دو ستون از این جدول، من فقط می تواند ستاره را انتخاب کنید و همه چیز که در آن نام کاربری برابر جری. و به این ترتیب این چیزی است که من می گرفتن اگر من که پرس و جو خاص ساخته شده است. در حال حاضر، پایگاه داده ها به دلیل بزرگ آنها اجازه می دهد ما برای سازماندهی اطلاعات شاید کمی موثرتر از ما در غیر این صورت ممکن است. ما الزاما به ذخیره هر قطعه مربوط به اطلاعات در مورد یک کاربر در همان جدول. ما دو جدول وجود دارد. ما نیاز به ذخیره نام مادر همه است، و شاید ما امنیت اجتماعی ندارد تعداد، ما باید تاریخ تولد خود را. که همیشه لازم نیست در همان جدول باشد. تا زمانی که ما می توانید به صورت روابط بین tables-- و این که در آن است که رابطه ای مدت پایگاه داده نوع می آید به play-- تا زمانی که ما می توانید به صورت روابط بین جداول، ما می توانیم از compartmentalize و یا چیزهای انتزاعی یک راه، که در آن ما تنها دارند اطلاعات واقعا مهم ما در مورد در جدول کاربر مراقبت. و بعد ما اطلاعات جانبی و یا اطلاعات اضافی در جداول دیگر که ما می توانیم به اصلی اتصال تماس جدول کاربران در یک روش خاص. بنابراین در اینجا ما این دو جدول، اما یک رابطه بین آنها وجود دارد، درست؟ آن را مانند به نظر می رسد نام کاربری ممکن است چیزی که در بین معمول وجود ندارد این دو جدول متفاوت است. بنابراین اگر ما در حال حاضر یک وضعیت که در آن ما می خواهید برای دریافت نام و نام خانوادگی کاربر را از جدول کاربر، و مادر خود نام را از جدول مادر؟ ما یک راه برای گرفتن ندارد که عنوان آن می ایستد، درست است؟ هیچ جدول تک است که شامل وجود دارد هر دو نام و نام خانوادگی و نام مادر. ما که گزینه را ندارد از آنچه که ما تا کنون دیده ام. و بنابراین ما باید به معرفی این ایده از یک بپیوندید. و می پیوندد احتمالا ترین complex-- این واقعا ترین عملیات پیچیده ما قصد داریم به بحث در مورد در این ویدئو. آنها کمی پیچیده است، اما هنگامی که شما از آن آویزان شدن از آن، آنها بیش از حد بد در واقع نیست. این فقط یک مورد خاص از یک SELECT. ما قصد داریم برای انتخاب یک مجموعه ای از ستون از یک جدول پیوستن در جدول دوم در برخی از گزاره است. در این مورد، فکر می کنم در مورد آن را دوست دارم this-- جدول یک یک دایره در اینجا است، جدول دو دایره دیگر در اینجا است. و این بخشی گزاره در وسط، آن را مرتب کردن بر اساس مانند اگر شما فکر می کنم در مورد به عنوان یک نمودار ون، چه آنها مشترک است؟ ما می خواهیم به پیوند این دو جدول بر اساس آنچه که در مشترک دارند و ایجاد این جدول فرضی که ادغام دو با هم است. بنابراین ما این را در یک دید به عنوان مثال و شاید این به شما کمک کند روشن آن را تا کمی. بنابراین شاید شما می خواهید را انتخاب کنید user.fullname و moms.mother از کاربران پیوستن به جدول مادران در هر وضعیت که در آن ستون نام کاربری همان بین آنها است. و این است که جدید نحو در اینجا، به این کاربر. و مادران .. اگر من انجام جداول چندگانه با هم، من می توانید یک جدول را مشخص کنید. من می توانم در تشخیص خاص که در در بسیار پایین وجود دارد. من می توانم نام کاربری تشخیص ستون از جدول کاربران از ستون نام کاربری جدول مادران که otherwise-- هستند اگر ما فقط گفت نام کاربری برابر نام کاربری و نشان می دهد که واقعا نمی معنی هر چیزی. ما می خواهیم به آن را انجام جایی که آنها مطابقت داشته باشد. بنابراین من می توانید جدول را مشخص و نام ستون در مورد یک وضعیت که در آن این امر می تواند مشخص نیست آنچه من صحبت کردن در مورد. به طوری که همه من انجام است که من وجود دارد گفت: این ستون از این جدول، و بسیار صریح است. بنابراین دوباره، من انتخاب نام و نام خانوادگی و نام مادر از جدول کاربران مرتبط با هم با جدول مادران در هر وضعیت جایی که آنها را به اشتراک که column-- آنها به اشتراک که نام کاربری مفهوم. بنابراین در اینجا ما قبل از جداول داشته است. این دولت از ما است پایگاه داده به عنوان آن در حال حاضر وجود دارد. اطلاعات ما در حال استخراج این برای شروع با است. این جدول جدید ما در حال رفتن است ایجاد ترکیب این با هم. و متوجه ما نمی برجسته ردیف نیومن در جدول کاربر، و ما در حال برجسته نیست ردیف کرامر در جدول مادران چرا که نه یکی وجود دارد در هر دو sets-- در هر دو جدول. تنها اطلاعات است که مشترک بین آنها جری در هر دو جدول و gcostanza در هر دو جدول است. و تا زمانی که ما انجام SQL بپیوندید، آنچه که ما get-- و ما انجام در واقع دریافت این. این نوع از یک متغیر موقت شده است. آن را مانند یک فرضی است ادغام دو جدول. ما در واقع چیزی شبیه به این، که در آن ما در جداول در هم ادغام شدند که اطلاعاتی که آنها مشترک است. بنابراین توجه داشته باشید که users.username و ستون moms.username، آن را دقیقا همان است. که اطلاعات این بود که سازگار از کاربران بود جدول و جدول مادران. و بنابراین ما آنها را با هم ادغام شدند. ما دور انداخته کرامر به خاطر او او در جدول کاربران وجود ندارد، و ما دور انداخته نیومن، به دلیل او در جدول مادران وجود ندارد. بنابراین این ادغام فرضی است با استفاده از عملیات بپیوندید از SELECT. و سپس ما برای دنبال نام و نام خانوادگی کاربر و مادر کاربر، و بنابراین این اطلاعات است که ما از پرس و جو به طور کلی گرفتن که ما با SELECT ساخته شده است. بنابراین ما جداول متصل به هم و ما استخراج آن دو ستون، و به طوری که آنچه که ما را دریافت کنید. اما SQL می پیوندد یک نوع پیچیده است. شما احتمالا آنها را انجام بیش از حد، اما فقط این ایده را از اسکلت دارند که شما می توانید به ادغام دو استفاده جداول با هم اگر به مورد نیاز است. آخرین دو یک کمی ساده تر قول می دهم. بنابراین به روز رسانی، ما می توانیم به روز رسانی استفاده برای تغییر اطلاعات در یک جدول. فرمت کلی است به روز رسانی برخی جدول، مجموعه ای از ستون به برخی از ارزش که در آن برخی گزاره راضی است. بنابراین برای مثال، ما ممکن است بخواهید برای به روز رسانی جدول کاربران و مجموعه ای از رمز عبور برای YADA YADA، که در آن شماره ID 10 است. بنابراین در این مورد، ما به روز رسانی جدول کاربران. شماره ID 10 برای است که ردیف اول وجود دارد، و ما می خواهیم برای به روز رسانی رمز عبور را بیارزش. و به این ترتیب این چیزی است که اتفاق می افتد. این بسیار ساده، درست است؟ این فقط یک بسیار ساده اصلاح به جدول. حذف در این عملیات ما مورد استفاده قرار حذف اطلاعات از یک جدول. DELETE FROM جدول که در آن برخی گزاره راضی است. ما می خواهیم از را حذف کنید جدول کاربران برای مثال که در آن نام کاربری نیومن است. شما احتمالا می توانید حدس بزنید چه خبر است به اتفاق می افتد در اینجا بعد از ما اجرای آن SQL پرس و جو، نیومن از جدول رفته است. بنابراین همه این عملیات، همانطور که گفته ام، بسیار آسان برای انجام در phpMyAdmin. این یک رابط کاربری بسیار کاربر پسند است. اما نیاز به تلاش کتابچه راهنمای کاربر. ما نمی خواهیم به کار تلاش کتابچه راهنمای کاربر. ما می خواهیم برنامه های ما برای انجام این کار برای ما، درست است؟ بنابراین ما ممکن است بخواهید به انجام این برنامه نویسی. ما می خواهیم به ترکیب SQL و چیز دیگری برای انجام این کار برای ما. اما آنچه را که ما دیده می شود که اجازه می دهد تا ما به برنامه نویسی انجام کاری؟ ما را دیده ام پی اچ پی، درست است؟ این به معرفی برخی از پویایی را به برنامه های ما است. و خوشبختانه، SQL و PHP بازی بسیار خوبی با هم. یک تابع در PHP وجود دارد به نام پرس و جو، که می تواند مورد استفاده قرار گیرد. و شما می توانید به عنوان عبور پارامتر یا برهان یک پرس و جو SQL به پرس و جو که شما می خواهم به اجرا کند. و PHP آن را به نمایندگی خود را انجام خواهد داد. بنابراین پس از متصل شده اید به پایگاه داده خود را با پی اچ پی، دو مقدماتی شما این کار وجود دارد. چیزی به نام از MySQLi وجود دارد و چیزی به نام PDO. ما نمی خواهد به بزرگ به میزان جزئیات وجود دارد. در CS50 ما با استفاده از PDO. بعد از اینکه شما متصل شده اید به پایگاه داده خود را، شما پس از آن می توانید نمایش داده شد را پایگاه داده خود را با عبور از نمایش داده شد به عنوان آرگومان به توابع پی اچ پی. و هنگامی که شما انجام این کار، شما ذخیره نتیجه را در یک آرایه انجمنی تنظیم شده است. و ما می دانیم چگونه به کار با آرایه های انجمنی در PHP. بنابراین من ممکن است چیزی می گویند مانند this-- $ results-- این است که در برابر PHP-- پرس و جو. و سپس در داخل از تابع پرس و جو که استدلال که من عبور به پرس و جو که به نظر می رسد مانند SQL. و در واقع این است که SQL. که رشته پرس و جو است که من می خواهم را برای اجرا در پایگاه داده است. و به این ترتیب به رنگ قرمز، این پی اچ پی است. این SQL است که من یکپارچه سازی را به PHP با ساخت آن آرگومان به تابع پرس و جو. من می خواهم به انتخاب نام کامل از کاربران که در آن شماره ID برابر با 10. و پس از آن شاید پس از من انجام داده ام که، من ممکن است چیزی شبیه به این می گویند. من می خواهم برای چاپ کردن تشکر پیام برای ورود. و من آن را می خواهم interpolate-- من می خواهم به عبارات نتایج $ نام کامل. و به طوری که چگونه من با آن کار می کنند آرایه انجمنی که من پشت کردم. $ نتایج را نام کامل اساسا تا پایان چاپ، برای ورود به سیستم، جری ساینفیلد. که نام کامل بود که در آن idnum برابر با 10. و به این ترتیب تمام من انجام است من now-- من ذخیره شده پرس و جو من، نتایج حاصل از پرس و جو من و در نتیجه یک آرایه انجمنی، نام کامل و نام است ستون من برای گرفتن شد. به طوری که کلید من به نتایج است آرایه انجمنی است که من می خواهم. بنابراین برای ورود به سیستم، $ نتایج، نام کامل چاپ خواهد شد، می چسبد درست در بین کسانی که در اشکال مختلف پرانتز، جری ساینفیلد. و من می خواهم برای چاپ کردن پیام برای ورود به سیستم جری ساینفیلد. در حال حاضر، ما احتمالا به سخت می خواهم نه کد مانند آن را در، درست است؟ ما ممکن است بخواهید برای انجام کاری مانند چاپ F، که در آن ما می توانیم جایگزین و شاید جمع آوری اطلاعات مختلف، و یا شاید فرآیند پرس و جو داشته اطلاعات متفاوت است. و به این ترتیب پرس و جو، پرس و جو تابع است این مفهوم از نوع تعویض بسیار شبیه به چاپ F درصد بازدید کنندگان و درصد C، علامت سوال است. و ما می توانیم درخواست استفاده علائم بسیار شبیه به f به متغیرهای جایگزین را چاپ کنید. بنابراین شاید برای کاربران خود وارد سیستم شوید در اوایل، و شما شماره ID کاربران خود را نجات داد در $ _SESSION از پی اچ پی فوق العاده جهانی در ID کلیدی است. بنابراین شاید بعد از آنها وارد شده، به شما در تنظیم $ _SESSION ID برابر با 10، برونیابی از مثال ما فقط یک ثانیه قبل دیدم. و تا زمانی که ما در واقع اجرا این پرس و جو از نتایج در حال حاضر، آن را در 10 پلاگین، و یا هر ارزش ID _SESSION $ است. و به طوری که ما اجازه می دهد به یک کمی بیشتر پویا. ما در حال سخت کدگذاری چیز در دیگر نیست. ما در حال ذخیره اطلاعات جایی و سپس ما می توانیم که اطلاعات دوباره به استفاده از مرتب کردن بر اساس تعمیم آنچه ما می خواهیم انجام دهید، و فقط پلاگین و تغییر رفتار صفحه ما بر اساس آنچه شماره ID کاربر در واقع پس از آنها در وارد کرده اید. همچنین ممکن است، هر چند، که نتایج خود را تنظیم کنید ممکن است از ردیف های متعدد تشکیل شده است. که در این صورت، شما باید آرایه ای از arrays-- آرایه ای از آرایه های انجمنی. و شما فقط نیاز به از طریق آن تکرار. و ما می دانیم که چگونه به تکرار از طریق یک آرایه در PHP، درست است؟ بنابراین در اینجا است که احتمالا بیشتر چیز پیچیده ما تا کنون دیده ام. این در واقع ادغام سه زبان با هم. در اینجا به رنگ قرمز، این برخی از HTML است. من ظاهرا starting-- این است یک قطعه از برخی HTML که من دارم. من شروع یک پاراگراف جدید که می گوید مادران از Seinfeld تلویزیون. و پس از آن بلافاصله پس از آن من شروع یک جدول. و پس از آن، من برخی از PHP، درست است؟ من همه از این کد PHP در آن وجود دارد. من ظاهرا رفتن یک پرس و جو. و به پرس و جو، من قصد دارم به با استفاده از مادران انتخاب کنید و از مادران است. پس این است که این getting-- SQL است. بنابراین آبی SQL است. قرمز ما یک ثانیه پیش دیدم HTML بود. و سبز در اینجا PHP است. بنابراین من ساخت یک پرس و جو به پایگاه داده من، من انتخاب همه مادران در جدول مادران. نه فقط محدود آن را به طور خاص ردیف، من برای همه آنها درخواست. سپس من را چک کنید اگر نتیجه این است نمی برابر برابر نادرست است. این تنها راه من از چک کردن مرتب سازی بر است اگر نتایج از برابر نیست به تهی، که ما را C برای مثال را ببینید. اساسا این است که فقط چک کردن به مطمئن شوید که آن را در واقع داده کردم. از آنجا که من نمی خواهم برای شروع چاپ از داده های اگر من هر گونه اطلاعات دریافت کنید. سپس برای هر یک از نتایج به عنوان یک نتیجه نحو حلقه foreach از پی اچ پی، همه من انجام است چاپ مادران $ نتیجه. و به این ترتیب من قصد دارم به یک مجموعه از همه از مادران each-- که این آرایه انجمنی از arrays-- و من چاپ هر یک به عنوان ردیف خود را از یک جدول. و این واقعا بسیار بسیار همه به آن وجود دارد. من می دانم که کمی وجود دارد کمی در رفتن در اینجا در این مثال آرایه از گذشته با arrays-- آرایه از آرایه های انجمنی. اما اکنون واقعا فقط جوش در SQL به ساخت یک پرس و جو، معمولا پس از انتخاب ما در حال حاضر قرار دادن اطلاعات به جدول، و پس از آن فقط کشیدن آن. و این است که ما آن را جلو در این مورد خاص. همه ما را از فرد استخراج مادران از جدول مادران. ما یک مجموعه کامل از آنها، و ما می خواهید از طریق تکرار و چاپ هرکدام. پس دوباره، این است که احتمالا به عنوان مثال پیچیده ترین ما دیده ایم چرا که ما در حال مخلوط کردن سه زبان های مختلف با هم، درست است؟ باز هم، ما در اینجا در HTML قرمز، مخلوط با برخی از SQL در اینجا به رنگ آبی، مخلوط با برخی از PHP به رنگ سبز. اما تمام این بازی به سادگی با هم، آن را تنها یک ماده از توسعه عادات خوب به طوری که شما می توانید آنها با هم کار کنند راه که می خواهید. و تنها راه برای انجام این کار واقعا است که به عمل، عمل، عمل. من داگ لوید هستم، این CS50.