نمونه برداری از جدول sql. زبان SQL. انتخاب داده ها (عبارت SELECT). استفاده از SQL در Microsoft Access

دستور SQL SELECT برای پرس و جوهایی برای انتخاب داده ها از پایگاه داده در نظر گرفته شده است. می توان آن را هم بدون شرایط (انتخاب همه ردیف ها در همه ستون ها یا همه ردیف ها در ستون های خاص) و هم با شرایط متعدد (انتخاب ردیف های خاص) که در عبارت WHERE مشخص شده است استفاده کرد. بیایید با ابزارهای SQL که می توان از آنها برای تنظیم این شرایط در انتخاب داده استفاده کرد و همچنین نحوه استفاده را یاد گرفتیم. عبارت SELECTدر سوالات فرعی

برای انتخاب ستون های جدول انتخاب کنید

یک پرس و جو با دستور SELECT برای انتخاب تمام ستون های جدول دارای دستور زیر است:

* از TABLE_NAME را انتخاب کنید

یعنی برای انتخاب تمام ستون های جدول بعد از کلمه SELECT باید یک ستاره قرار داد.

مثال 1یک پایگاه داده شرکت وجود دارد. دارای جدول سازمان (ساختار شرکت) و کارکنان (کارکنان). لازم است تمام ستون ها را از جداول انتخاب کنید. کوئری مربوطه برای انتخاب تمام ستون ها از جدول Org به شرح زیر است:

SELECT * FROM ORG

این پرس و جو موارد زیر را برمی گرداند (برای بزرگنمایی تصویر، با دکمه سمت چپ ماوس روی آن کلیک کنید):

پرس و جو برای انتخاب همه ستون ها از جدول Staff به شکل زیر است:

انتخاب * از کارکنان

این پرس و جو موارد زیر را برمی گرداند:


برای انتخاب برخی از ستون‌های جدول، به جای ستاره، باید نام تمام ستون‌هایی را که باید انتخاب شوند، با کاما از هم جدا کنیم:

برای انتخاب از TABLE_NAME، ستون‌ها را انتخاب کنید

مثال 2لازم است ستون‌های Depnumb و Deptname را از جدول Org انتخاب کنید که به ترتیب حاوی داده‌های مربوط به تعداد بخش‌های شرکت و نام آنها است. پرس و جو برای دریافت چنین انتخابی به صورت زیر خواهد بود:

DEPNUMB، DEPTNAME FROM ORG را انتخاب کنید

و از جدول Staff، باید ستون های DEPT، NAME، JOB را انتخاب کنید که به ترتیب حاوی داده هایی در مورد تعداد بخشی که کارمند در آن کار می کند، نام و موقعیت او است:

بخش، نام، شغل از کارکنان را انتخاب کنید

برای انتخاب ردیف‌های جدول خاص، همراه با عبارت SELECT، از قبل به کلمه کلیدی WHERE نیاز داریم که به مقداری یا چندین مقدار موجود در ردیف‌های مورد علاقه ما اشاره می‌کند. اکثر اصطلاحات سادهبا استفاده از عملگرهای مقایسه و برابری (, =) و همچنین کلمه کلیدی IS مشخص می شوند. ممکن است چندین شرط وجود داشته باشد، سپس آنها با استفاده از کلمه کلیدی AND فهرست می شوند. پرس و جوهای انتخاب ردیف دارای نحو زیر هستند:

مثال 4در مثال قبلی، ردیف‌هایی را از جدول فقط با مقدار یک ستون انتخاب کردیم - DEPT. فرض کنید اکنون باید داده هایی را در مورد کارمندانی که در بخش 38 کار می کنند و موقعیت آنها یک کارمند است (Clerk) انتخاب کنیم. برای انجام این کار، در بخش WHERE، مقادیر مربوطه باید با استفاده از کلمه AND ذکر شود:


مثال 5لازم است از جدول Staff شناسه و نام آن دسته از کارمندانی که اندازه کمیسیون آنها نامشخص است انتخاب کنید. برای انجام این کار، در قسمت WHERE، قبل از تعیین مقدار ستون COMM - NULL، باید نه علامت مساوی، بلکه کلمه IS را قرار دهید:

این کوئری داده های زیر را برمی گرداند:


از علائم مقایسه نیز برای نشان دادن مقادیر در ردیف هایی که باید انتخاب شوند استفاده می شود.

استفاده از محمولات SELECT و IN، OR، BETWEEN، LIKE

گزاره ها - کلمات IN، OR، BETWEEN، LIKE در عبارت WHERE - همچنین به شما امکان می دهند محدوده خاصی از مقادیر (IN، OR، BETWEEN) یا مقادیر در ردیف ها (LIKE) را انتخاب کنید که می خواهید انتخاب کنید. جدول. پرس و جوهایی با گزاره های IN، OR، BETWEEN دارای نحو زیر هستند:

پرس و جوهایی با گزاره LIKE دارای نحو زیر هستند:

مثال 7فرض کنید می‌خواهید از جدول Staff نام، موقعیت و تعداد سال‌های کار کارکنان شاغل در بخش‌های با شماره‌های 20 یا 84 را انتخاب کنید. این کار را می‌توانید با پرس و جو زیر انجام دهید:

نتیجه اجرای پرس و جو:


مثال 8فرض کنید اکنون می خواهید همان داده های مثال قبلی را از جدول Staff انتخاب کنید. پرس و جو با کلمه OR مشابه پرس و جو با کلمه IN است و مقادیر مورد نظر را در براکت ها فهرست می کند. درخواست به شرح زیر خواهد بود:

مثال 9بیایید از همان جدول نام، سمت و تعداد سالهای کار برای کارمندانی که حقوق آنها بین 15000 تا 17000 است را انتخاب کنیم:

نتیجه اجرای پرس و جو:


گزاره LIKE برای انتخاب رشته هایی استفاده می شود که مقادیر آنها حاوی کاراکترهای مشخص شده بعد از گزاره بین آپستروف ها (") است.

مثال 10بیایید از همان جدول اسامی، موقعیت‌ها و تعداد سال‌های کار برای کارمندانی را انتخاب کنیم که نامشان با حرف S شروع می‌شود و شامل 7 کاراکتر است:

کاراکتر زیر خط (_) به معنای هر کاراکتری است. نتیجه اجرای پرس و جو:


مثال 11.بیایید از همان جدول اسامی، موقعیت‌ها و تعداد سال‌های کار برای کارمندانی را انتخاب کنیم که نامشان با حرف S شروع می‌شود و شامل هر حرف دیگری در هر عددی است:

نماد درصد (%) به معنای هر تعداد کاراکتر است. نتیجه اجرای پرس و جو:


مقادیر مشخص شده با استفاده از گزاره های IN، OR، BETWEEN، LIKE را می توان با استفاده از کلمه NOT معکوس کرد. سپس داده های درخواستی معنای مخالف خواهند داشت. اگر از NOT IN (20، 84) استفاده کنیم، داده های کارمندانی که در همه بخش ها کار می کنند به جز آنهایی که شماره های 20 و 84 دارند نمایش داده می شود. در بازه زمانی 15000 تا 17000. یک پرس و جو با NOT LIKE داده های کارمندانی را که نام آنها شروع نمی شود یا شامل کاراکترهای مشخص شده با NOT LIKE نیست را برمی گرداند.

پرس و جوهای SQL را با گزاره های SELECT و IN، NOT IN، BETWEEN خودتان بنویسید و سپس راه حل ها را ببینید.

یک پایگاه داده "تئاتر" وجود دارد. جدول Play حاوی داده‌های پخش است. تیم جدول - در مورد نقش بازیگران. جدول بازیگر درباره بازیگران است. مدیر جدول - درباره کارگردانان. فیلدهای جدول، کلیدهای اصلی و خارجی در شکل زیر قابل مشاهده است (برای بزرگنمایی، دکمه سمت چپ ماوس را کلیک کنید).


مثال 12.نمایش لیستی از بازیگرانی که هرگز تایید نشده اند نقش رهبری. در جدول تیم، داده‌های مربوط به نقش‌های اصلی در ستون تیم اصلی موجود است. اگر نقش اصلی باشد، "Y" در خط مربوطه مشخص می شود.

SELECT و ORDER BY - مرتب سازی (ترتیب) ردیف ها

پرس و جوهای SQL SELECT که تاکنون تجزیه شده اند، ردیف هایی را برگردانده اند که می توانند به هر ترتیبی باشند. با این حال، اغلب لازم است رشته ها را بر اساس ترتیب عددی، حروف الفبا و معیارهای دیگر مرتب کنیم. این کار با استفاده از کلمه کلیدی ORDER BY انجام می شود. چنین پرس و جوهایی دارای نحو زیر هستند:

مثال 15اجازه دهید از جدول کارکنان کارکنان بخش شماره 84 را انتخاب کنید و سوابق را بر اساس تعداد سالهای کار به ترتیب صعودی مرتب کنید (ترتیب کنید):

کلمه ASC نشان می دهد که ترتیب مرتب سازی صعودی است. این کلمه اختیاری است، زیرا ترتیب مرتب سازی صعودی پیش فرض است. نتیجه اجرای پرس و جو:


مثال 16اجازه دهید لازم باشد همان داده‌های مثال قبلی را انتخاب کنید، اما رکوردها را بر اساس تعداد سال‌های کار به ترتیب نزولی مرتب کنید:

کلمه DESC نشان می دهد که ترتیب مرتب سازی نزولی است. نتیجه اجرای پرس و جو:


SELECT و DISTINCT - ردیف های تکراری را حذف کنید

زمانی که شرط منحصر به فرد بودن برای مقادیر ردیف جدول مشخص نشده باشد، ممکن است سطرهای یکسان در نتایج پرس و جو ظاهر شوند. اغلب شما می خواهید فقط رشته های منحصر به فرد را نمایش دهید. این کار با استفاده از عبارت DISTINCT بعد از دستور SELECT انجام می شود.

مثال 17.اجازه دهید مشخص شود که چه بخش هایی وجود دارد و چه موقعیت هایی در میان بخش هایی که تعداد آنها کمتر از 30 است. این کار را می توان با استفاده از پرس و جو زیر انجام داد:

نتیجه اجرای پرس و جو:


عبارت SELECT در پرس و جوهای فرعی SQL

تا اینجا ما با ساختارهای SQL با یک دستور SELECT سروکار داشتیم که در آن شرایط انتخاب داده ها و داده های انتخاب شده در همان جدول پایگاه داده وجود دارد. در عمل اغلب اتفاق می افتد که داده هایی که باید انتخاب شوند در یک جدول و شرایط در جدول دیگر وجود دارد. اینجاست که پرس و جوهای فرعی به کمک می آیند: مقادیر شرط انتخاب از پرس و جو دیگری (عنوان فرعی) که با SELECT نیز شروع می شود، بازگردانده می شوند. پرس و جوهایی با پرس و جوهای فرعی می توانند یک یا چند ردیف ایجاد کنند.

مثال 18.همه میزهای ORG و STAFF یکسان است. بگذارید مشخص شود کارمند با کدام بخش کار می کند شماره شناسایی 280 و جایی که این واحد در آن قرار دارد. اما اطلاعات مربوط به بخش ها در جدول ORG و اطلاعات مربوط به کارکنان در جدول STAFF ذخیره می شود. این کار را می توان با پرس و جوی فرعی زیر انجام داد، که در آن SELECT بیرونی در جدول ORG و SELECT داخلی در جدول STAFF قرار دارد:

نتیجه اجرای پرس و جو:


مثال 19.بگذارید اکنون مشخص شود که کارمندان در کدام بخش ها (بدون تکرار) هستند حقوقکمتر از 13000. برای انجام این کار، در قسمت WHERE از SELECT خارجی (پرس و جو در جدول ORG) یک شرط مشخص شده است که محدوده ای از مقادیر (IN) را می پذیرد و SELECT داخلی (به جدول STAFF) فقط محدوده مورد نیاز از مقادیر را برمی گرداند:

پایگاه های داده رابطه ای و زبان SQL

پرس و جو - پرس و جوهای ساختار یافته به پایگاه داده. چرا دقیقا دوره برنامه نویسی? با وجود این واقعیت که بسیاری از "سربرگ ها" استدلال می کنند که SQL نیست، اما زبان پرس و جو، من معتقدم که دوره های مطالعه آن را می توان و باید به عنوان دروس برنامه نویسی طبقه بندی کرد. اول از همه، آنها را دوره های تهیه پیش نویس درخواست نکنید، زیرا از این طریق می توان آنها را با دوره های مخصوص مقامات تازه کار یا دادستان اشتباه گرفت. ثانیاً، کار با پایگاه‌های اطلاعاتی آنقدر در هم تنیده است که فقدان مهارت‌های SQL دامنه یک برنامه‌نویس خاص را کاملاً محدود می‌کند. و ثالثاً ، پرس و جوهای ساختاریافته (نه لزوماً برای پایگاه داده ها) دیگر در حومه زبان های برنامه نویسی نیستند - آنها قبلاً از آن عبور کرده اند و فناوری می تواند به عنوان نمونه ای از آن باشد.

همه نمونه ها بر اساس پرس و جوها در سه جدول ساخته شده اند،


حاوی اطلاعات زیر:

  • D_STAFF- لیست کارکنان شرکت؛

    • S_NAME - نام کامل
    • S_POSITION - موقعیت (دایرکتوری)؛
    • S_EXPERIENCE - تجربه کاری (تعداد صحیح سالها)؛
    • S_CHIEF_ID - کارمند برتر شرکت (رابطه "رئیس" - "فرد")؛
    • S_COMMENTS - یک یادداشت.


  • D_PROFIE- لیستی از پروفایل های کاربر، که طبق افسانه، در قلمرو شرکت مورد نظر مستقر شده است و به خودکارسازی برخی از فرآیندهای تجاری آن کمک می کند. این سیستم می تواند توسعه داخلی "1C - Enterprise" یا سیستمی مبتنی بر آن باشد بسته نرم افزاری SAP R / 3 که برجسته ترین نماینده این کلاس است نرم افزارخارج از کشور؛

    • XD_IID - شناسه رکورد منحصر به فرد.
    • P_NAME - نام نمایه (نقش)؛
    • P_COMMENTS - یک یادداشت.


  • D_STAFF_PROFILE- جدولی که کارمندان شرکت (D_STAFF) را با پروفایل های کاربر سیستم (D_PROFILE) مرتبط می کند. هر ورودی در این جدول رابطه ای است که تعیین می کند آیا یک کارمند می تواند با تمام حقوق و مجوزهای پروفایلی که انتخاب کرده است وارد شود یا خیر. هر کارمند می تواند چندین پروفایل به او مجاز باشد و هر پروفایلی می تواند با چندین کارمند مختلف مرتبط باشد. بنابراین، جدول D_STAFF_PROFILE یک رابطه چند به چند را تعریف می کند.

مروری کوتاه بر نحو پرس و جوهای SQL در نظر گرفته شده

به روز رسانی داده یا دستور UPDATE

هدف از دستور UPDATE به روز رسانی است سوابق موجوددر جدول مشخص شده مشخص می کنیم که کجا و چه چیزی را می خواهیم تغییر دهیم و بعد از کلمه کلیدی WHERE معیارهای انتخاب رکوردهای به روز شده را تعیین می کنیم. در دستور به‌روزرسانی داده، مانند سایر پرس‌و‌جوهای SQL، می‌توانید از سؤالات فرعی استفاده کنید: به عنوان مثال، می‌توانید به عنوان مقدار اختصاص داده شده به فیلد، نتیجه یک سؤال فرعی را که فقط یک ستون و یک ردیف را برمی‌گرداند، تعریف کنید.

به‌روزرسانی مجموعه (=) یا به‌روزرسانی مجموعه (= (انتخاب از کجا))

افزودن داده یا دستور INSERT

افزودن رکوردهای جدید به جدول مشخص شده. اینجا هم هیچ چیز پیچیده ای نیست. جدول، لیست فیلدها و لیست مقادیر اضافه شده به این فیلدها را مشخص می کنیم. حدس زدن آنچه که استفاده از پرس و جوی فرعی SQL می تواند بدهد نیز آسان است - کپی کردن آرایه داده انتخاب شده با استفاده از SELECT در جدول مشخص شده (در فیلدهای فهرست شده جدا شده با کاما). طبیعتاً تعداد و نوع ستون‌ها در کوئری SELECT باید با تعداد و نوع فیلدهای جدولی که درج در آن ساخته می‌شود مطابقت داشته باشد.

درج در [()] مقادیر () یا درج در [()] (انتخاب از کجا)

حذف داده ها یا دستور DELETE

حذف ردیف‌هایی از یک جدول یا از چندین جدول به طور همزمان، که ردیف‌های آن‌ها با شرایط ترکیب می‌شوند. در اینجا همه چیز نیز آشکار است. نشان می دهیم که داده ها را از کدام جدول حذف می کنیم و در قسمت WHERE داده هایی را که قرار است حذف شوند انتخاب می کنیم. نوع دوم پرس و جوی SQL با استفاده از دستور DELETE یک نحو تعمیم یافته برای حذف رکوردها از چندین جدول به طور همزمان نشان می دهد. در شرایط انتخاب (در قسمت WHERE) می توانید از subqueries نیز استفاده کنید.

DELETE FROM یا DELETE FROM

اگر همه چیز کم و بیش روشن باشد، پس با خود فرآیند یادگیری آشنا می شویم یا شروع می کنیم.

    انجام پرس و جوهای ساده SQL با استفاده از دستور SELECT. تعریف معیارهای ساده و مرکب برای انتخاب رکوردها با استفاده از عبارت WHERE. با استفاده از عملگرهای BETWEEN و LIKE. ساخت یک پرس و جو سلسله مراتبی با استفاده از نام مستعار جدول و فیلد.



محتوای مقاله
1. ساده ترین پرس و جوهای MySQL
2. پرس و جوهای SELECT ساده
3. پرس و جوهای INSERT ساده (ورودی جدید).
4. به روز رسانی ساده (بازنویسی، پیوست) نمایش داده شد
5. درخواست های DELETE ساده (حذف ورودی).
6. جستارهای ساده DROP (حذف جدول).
7. پرس و جوهای پیچیده MySQL
8. پرس و جوهای MySQL و متغیرهای PHP

1. ساده ترین پرس و جوهای SQL

1. همه پایگاه های داده را فهرست می کند.

نمایش پایگاه های داده؛
2. همه جداول موجود در پایگاه داده base_name را فهرست می کند.

نمایش جداول در base_name.

2. جستجوهای ساده SELECT (انتخاب) در پایگاه داده MySQL

انتخاب کنید- یک پرس و جو که داده های موجود را از پایگاه داده انتخاب می کند. می توانید گزینه های انتخاب خاصی را برای انتخاب مشخص کنید. به عنوان مثال، ماهیت درخواست در زبان روسی به این شکل به نظر می رسد - این و آن ستون ها را از فلان جدول انتخاب کنید که در آن پارامتر فلان ستون برابر با مقدار است.

1. همه داده ها را در جدول tbl_name انتخاب می کند.

SELECT * FROM tbl_name؛
2. تعداد رکوردهای جدول tbl_name را نمایش می دهد.

SELECT count(*) FROM tbl_name;
3. (SELECT) را از (FROM) جدول tbl_name (LIMIT) 3 رکورد، از 2 شروع می‌کند.

SELECT * FROM tbl_name LIMIT 2,3;
4. (SELECT) ALL (*) رکوردها را از (FROM) جدول tbl_name انتخاب کرده و آنها را (ORDER BY) بر اساس فیلد id به ترتیب مرتب می کند.

SELECT * FROM tbl_name ORDER BY id;
5. (SELECT) ALL رکوردها را از (FROM) جدول tbl_name انتخاب می کند و آنها را (ORDER BY) بر اساس فیلد id به ترتیب معکوس مرتب می کند.

SELECT * FROM tbl_name ORDER BY id DESC.
6. انتخاب می کند ( انتخاب کنید) همه رکوردهای (*) از ( از جانب) جداول کاربرانو آنها را مرتب کنید ( سفارش داده شده توسط) در این زمینه شناسهبه ترتیب صعودی، حد ( حد) 5 رکورد اول.

انتخاب * از کاربران ORDER BY ID LIMIT 5;
7. تمام رکوردها را از جدول انتخاب می کند کاربران، جایی که میدان fnameمطابق با مقدار است گنا.

SELECT * FROM users WHERE fname="Gena";
8. تمام رکوردها را از جدول انتخاب می کند کاربران، جایی که مقدار فیلد fnameشروع با GE.

SELECT * از کاربران WHERE fname مانند "Ge%"؛
9. تمام رکوردها را از جدول انتخاب می کند کاربران، جایی که fnameبه پایان می رسد با na، و ورودی ها را به ترتیب ارزش مرتب می کند شناسه.

انتخاب * از کاربران WHERE نام f LIKE "%na" ORDER BY id;
10. تمام داده ها را از ستون ها انتخاب می کند fname, ناماز روی میز کاربران.

نام f، lname از کاربران را انتخاب کنید.

11. فرض کنید یک کشور در جدول داده های کاربر خود دارید. بنابراین اگر می خواهید فقط لیستی از مقادیر رخ داده را نمایش دهید (به طوری که برای مثال روسیه 20 بار نمایش داده نشود، بلکه فقط یک بار نمایش داده شود)، از DISTINCT استفاده کنید. از انبوه ارزش های تکراری روسیه، اوکراین، بلاروس استنتاج می شود. بنابراین از جدول کاربرانستون ها کشور ALL مقادیر UNIQUE نمایش داده خواهد شد

انتخاب کشور متمایز از کاربران؛
12. همه داده های ردیف را از جدول انتخاب می کند کاربرانجایی که سندارای مقادیر 18،19 و 21 است.

SELECT * از کاربران WHERE IN (18،19،21)؛
13. انتخاب می کند مقدار MAX سندر جدول کاربران. یعنی اگر بالاترین مقدار را در جدول داشته باشید سن(از سن انگلیسی) 55 است، سپس نتیجه پرس و جو 55 خواهد بود.

انتخاب حداکثر (سن) از کاربران.
14. داده ها را از جدول انتخاب کنید کاربرانتوسط زمینه ها نامو سنجایی که سنکمترین مقدار را به خود می گیرد.

انتخاب نام، حداقل (سن) از کاربران.
15. داده ها را از جدول انتخاب کنید کاربراندر این زمینه نامجایی که شناسهمساوی با 2 نیست.

انتخاب نام از کاربران WHERE id!="2";

3. عبارت INSERT ساده (ورودی جدید).

درج کنید- یک پرس و جو که به شما امکان می دهد در ابتدا یک رکورد را در پایگاه داده وارد کنید. یعنی یک رکورد (خط) جدید در پایگاه داده ایجاد می کند.

1. میکند رکورد جدیددر جدول کاربران، در زمینه نامدرج سرگئی، و در زمینه سن 25 را درج می کند. بنابراین، یک ردیف جدید با مقادیر داده شده به جدول اضافه می شود. اگر تعداد ستون‌های بیشتری وجود داشته باشد، بقیه یا خالی یا با مقادیر پیش‌فرض باقی می‌مانند.

INSERT INTO کاربران (نام، سن) VALUES ("Sergey"، "25");

4. درخواست های به روز رسانی ساده در برابر پایگاه داده MySQL

به روز رسانی- یک پرس و جو که به شما امکان می دهد مقادیر فیلد را بازنویسی کنید یا چیزی را به یک ردیف از قبل موجود در پایگاه داده اضافه کنید. به عنوان مثال، یک رشته آماده وجود دارد، اما پارامتر سن باید در آن بازنویسی شود، زیرا در طول زمان تغییر کرده است.

1. جدول کاربران سن 18 می شود.

به روز رسانی کاربران SET سن = "18" WHERE id = "3";
2. همه چیز مانند درخواست اول است، فقط نحو درخواست را نشان می دهد، جایی که دو یا چند فیلد رونویسی می شوند.
جدول کاربران WHERE id مقدار فیلد 3 است سنمی شود 18 و کشورروسیه.

به روز رسانی کاربران تعیین سن = "18"، کشور = "روسیه" WHERE id = "3";

5. حذف ساده (حذف رکورد) نمایش داده شد در برابر پایگاه داده MySQL

حذفپرس و جوی است که یک ردیف را از جدول حذف می کند.

1. یک ردیف را از جدول حذف می کند کاربرانجایی که شناسهبرابر با 10

حذف از کاربران WHERE id = "10";

6. DROP ساده (حذف جدول) نمایش داده شد به پایگاه داده MySQL

رها کردنپرس و جوی است که یک جدول را حذف می کند.

1. کل جدول را حذف می کند tbl_name.

DROP TABLE tbl_name;

7. پرس و جوهای پایگاه داده MySQL پیچیده

پرس و جوهای کنجکاوی که حتی کاربران باتجربه نیز می توانند از آنها استفاده کنند

شناسه، نام، کشور را از کاربران، مدیران WHERE TO_DAYS(NOW()) - TO_DAYS(تاریخ_ثبت) انتخاب کنید<= 14 AND activation != "0" ORDER BY registration_date DESC;
این پرس و جو پیچیده ستون ها را انتخاب می کند شناسه، نام، کشوردر جداول کاربران، مدیرانجایی که تاریخ ثبت نام(تاریخ) قدیمی تر از 14 روزها و فعال سازینا برابر 0 ، مرتب سازی بر اساس تاریخ ثبت نامبه ترتیب معکوس (در ابتدا جدید).

به روز رسانی کاربران SET سن = "18+" WHERE سن = (انتخاب سن از کاربران WHERE مرد = "مرد");
موارد فوق نمونه ای از به اصطلاح است پرس و جو در پرس و جودر SQL سن کاربران را به 18+ به‌روزرسانی کنید، که در آن جنسیت مرد است. من این نوع درخواست را توصیه نمی کنم. از تجربه شخصی می گویم که بهتر است چندین مورد جداگانه ایجاد کنید - آنها سریعتر کار می کنند.

8. پرس و جوهای پایگاه داده MySQL و PHP

در پرس و جوهای MySQL در یک صفحه PHP، می توانید متغیرها را به عنوان مقادیر مقایسه و غیره درج کنید. یکی دو نمونه

1. تمام رکوردها را از جدول انتخاب می کند کاربران، جایی که میدان fnameبا مقدار متغیر مطابقت دارد $name.

SELECT * FROM users WHERE fname="$name";
2. جدول کاربران WHERE id مقدار فیلد 3 است سنبه مقدار متغیر $age تغییر می کند.

به روز رسانی کاربران SET سن = "$age" WHERE id = "3";

توجه!اگر به نمونه دیگری علاقه دارید، در نظرات بنویسید!

این درس زبان پرس و جو را در نظر می گیرد: عبارت SELECT sql - برای انتخاب داده ها

SQL Query را انتخاب کنیدبرای انتخاب عادی از پایگاه داده در نظر گرفته شده است. آن ها اگر فقط نیاز داریم که داده ها را بدون انجام هیچ پردازشی با آنها و بدون ایجاد تغییرات در پایگاه داده دریافت کنیم، می توانیم با خیال راحت از این zapmagaros استفاده کنیم.

نحو بیانیه را انتخاب کنید

SELECT * FROM table_name.

زمانی که همه رکوردها را از جدول پایگاه داده انتخاب می کنیم، این ساده ترین راه برای کار با اپراتور است.

علامت * نشان می دهد واکشی تمام رکوردها از یک جدول. در این حالت، ستون‌ها و ردیف‌های مجموعه نتایج مرتب نمی‌شوند.

نمونه هایی از پرس و جوهای انتخاب sql را در نظر بگیرید:

مثال :اگر همانطور که قبلاً توضیح داده شد یک پایگاه داده محلی ایجاد کرده اید و جداول را پر کرده اید (یا از سرویس sqlFiddle استفاده کرده اید)، مثال زیر را اجرا می کنیم.
تمام رکوردها را از جدول معلمان انتخاب کنید

SELECT * FROM table_name LIMIT 2,3;

در مثال، 3 رکورد از جدول انتخاب شده است که با 2 رکورد شروع می شود.
این پرس و جو به ویژه هنگام ایجاد بلوکی از صفحات ناوبری مورد نیاز است.

به فیلدهای مجموعه نتیجه را ترتیب دهید، آنها باید بعد از کلمه SELECT با کاما از هم جدا شوند:

انتخاب نام، zarplata، حق بیمه از معلمان سفارش بر اساس نام.

مقادیر نام فیلدها، zarplata، premia را انتخاب می کند و بر اساس نام فیلد مرتب می کند (به ترتیب حروف الفبا)


مثال: DB "فروشگاه کامپیوتر". اطلاعات مربوط به سرعت و حافظه رایانه ها را انتخاب کنید. شما می خواهید نتایج تنظیم شده بر اساس سرعت پردازنده را به ترتیب صعودی مرتب کنید.

«سرعت»، «حافظه» را از «کامپیوتر» به ترتیب 1 ASC انتخاب کنید

نتیجه:

می توانید بر اساس دو فیلد مرتب کنید:

انتخاب نام، zarplata، حق بیمه از معلمان سفارش بر اساس نام DESC;

مقادیر نام فیلدها، zarplata، premia را انتخاب می کند و بر اساس نام فیلد به ترتیب نزولی مرتب می کند.


حذف مقادیر تکراری در SQL

در مواردی که نیاز به دریافت ردیف های منحصر به فرد دارید، می توانید از کلمه کلیدی DISTINCT استفاده کنید.

متمایز(ترجمه شده از انگلیسی DIFFERENCE) - استدلالی که مقادیر دوگانه را حذف می کند:

نمونه ای از پایگاه داده "موسسه":می خواهید گزینه های احتمالی برای میزان حق بیمه را بدانید. اگر از Distinct استفاده نکنید، نتیجه دو مقدار یکسان خواهد بود. با معرفی Distinct می توانید مقادیر تکراری را در sql حذف کنید - در نتیجه مقادیر تکراری تکرار نمی شوند.

    انتخاب سرعت، حافظه از کامپیوتر.

    نتیجه:

    در جدول PC، قسمت کد کلید اصلی است. از آنجایی که این فیلد در پرس و جو وجود ندارد، ردیف های تکراری در مجموعه نتایج بالا وجود دارد.

    هنگامی که نیاز به دریافت رشته های منحصر به فرد دارید (به عنوان مثال، ما فقط به ترکیب های مختلف سرعت پردازنده و اندازه حافظه علاقه مند هستیم، و نه ویژگی های همه رایانه های موجود)، پس باید از Distinct استفاده کنید:

    انتخاب سرعت متمایز، حافظه از کامپیوتر.

    انتخاب سرعت متمایز، حافظه از کامپیوتر.

    نتیجه:

    sql 1_1 job را انتخاب کنید. DB "موسسه"یک کوئری برای واکشی شناسه و نام از جدول معلمان اجرا کنید. نام خانوادگی معلم را به ترتیب نزولی مرتب کنید

    زبان sql: شرایط که در آن

    شرط با حکم محقق می شود
    جایی که
    که بعد از عبارت FROM نوشته می شود.

    در این حالت، تنها آن دسته از رکوردهایی که مقدار گزاره برابر با TRUE (true) است وارد مجموعه نتیجه می شوند.

    نمونه ای از پایگاه داده "موسسه":نمایش داده های معلم از جدول معلمان، که نام خانوادگی آنها است ایوانف

    شرایط چندگانه در SQL

    گزاره ها (شرایط) می توانند از یک عبارت واحد یا هر ترکیبی از عبارات ساخته شده با عملگرهای بولی تشکیل شوند:

  1. و،
  2. یا نه
  3. نمونه ای از پایگاه داده "موسسه":نمایش کد معلمی که حقوقش است 10000 ، و حق بیمه 500

    عملگرهای رابطه ای که در شرایط:
    = برابر
    > بیشتر از
    >= بزرگتر یا مساوی
    نا برابر

    بین در SQL (بین)

    گزاره BETWEEN بررسی می کند که آیا مقادیر عبارت مورد آزمایش در محدوده مشخص شده توسط عبارات مرزی که با کلمه کلیدی AND به هم می پیوندند قرار می گیرند یا خیر.

    نحو:

    <Проверяемое выражение>بین<Начальное выражение>و<Конечное выражение>

    نمونه ای از پایگاه داده "موسسه":چاپ نام خانوادگی و حقوق معلمی که حقوقش بین 5000 تا 10000 است.

    نمونه ای از پایگاه داده "موسسه":نمایش نام خانوادگی و حقوق معلمی که حقوقش بین 5000 تا 10000 نیست.

    در محمول

    گزاره IN تعیین می کند که آیا مقدار عبارت مورد آزمایش در مجموعه مقادیری که به صراحت تعریف شده است پیدا می شود یا خیر.

    نحو:

    < Проверяемое выражение>[نه]در(< набор значений> )

    <Проверяемое выражение>که در (<набор значений>)

    نمونه ای از پایگاه داده "موسسه":نمایش اسامی معلمانی که حقوق آنها 5000، 10000 یا 11000 است.

    نمونه ای از پایگاه داده "موسسه":نمایش نام معلمانی که حقوق آنها جزو مقادیر نیست: 5000، 10000 یا 11000

    sql job 1_3 را انتخاب کنید. DB "موسسه"نام خانوادگی، حقوق و پاداش معلمان را که پاداش آنها از 2000 تا 5000 روبل است، تولید کنید.

  • ترجمه
  • آموزش
آیا باید “SELECT * WHERE a=b FROM c” یا “SELECT WHERE a=b FROM c ON *” باشد؟

اگر شما هم مثل من هستید، موافق خواهید بود: SQL یکی از آن چیزهایی است که در نگاه اول آسان به نظر می رسد (مثل انگلیسی خوانده می شود!)، اما به نحوی باید هر پرس و جوی ساده ای را در گوگل جستجو کنید تا سینتکس صحیح را پیدا کنید.


و سپس پیوستن، تجمیع، سوالات فرعی شروع می شود، و معلوم می شود که کاملاً آشغال است. مثل این:


SELECT Members.firstname || "" || Members.lastname AS "Full Name" FROM borrowings INNER JOIN اعضا ON Members.memberid=borrowings.memberid INNER JOIN books ON books.bookid=borrowings.bookid WHERE borrowings.bookid IN (انتخاب bookid FROM books WHERE stock>(انتخاب میانگین ) از کتابها)) GROUP BY اعضا.نام، اعضا.نام خانوادگی;

Bue! این کار هر مبتدی یا حتی یک توسعه دهنده متوسط ​​را اگر برای اولین بار SQL را ببیند، ترسانده است. اما همه چیز آنقدرها هم بد نیست.


به راحتی می توان آنچه را که شهودی است به خاطر آورد، و با این راهنما، امیدوارم بتوانم مانع ورود به SQL برای مبتدیان را کاهش دهم، در حالی که برداشت تازه ای از SQL را برای افراد با تجربه تر ارائه دهم.


اگرچه سینتکس SQL در پایگاه داده های مختلف تقریباً یکسان است، این مقاله از PostgreSQL برای پرس و جوها استفاده می کند. برخی از نمونه ها در MySQL و سایر پایگاه های داده کار خواهند کرد.

1. سه کلمه جادویی

SQL چیزهای زیادی دارد کلید واژه ها، اما SELECT، FROM و WHERE تقریباً در هر کوئری وجود دارند. کمی بعد متوجه خواهید شد که این سه کلمه بنیادی ترین جنبه های ساخت پرس و جو در برابر پایگاه داده را نشان می دهند و سایر پرس و جوهای پیچیده تر، فقط افزونه هایی در بالای آنها هستند.

2. پایگاه ما

بیایید نگاهی به پایگاه داده ای بیندازیم که در این مقاله به عنوان مثال از آن استفاده خواهیم کرد:







ما کتابخانه کتاب و مردم داریم. همچنین جدول ویژه ای برای دفاتر صادر شده حسابداری وجود دارد.

  • جدول «کتاب‌ها» اطلاعاتی درباره عنوان، نویسنده، تاریخ انتشار و در دسترس بودن کتاب ذخیره می‌کند. همه چیز ساده است.
  • در جدول "اعضا" - نام و نام خانوادگی همه افرادی که برای کتابخانه ثبت نام کرده اند.
  • جدول "قرض گیری" اطلاعات مربوط به کتاب های امانت گرفته شده از کتابخانه را ذخیره می کند. ستون bookid به شناسه کتاب قرض گرفته شده در جدول "کتابها" و ستون Memberid به شخص مربوطه در جدول "اعضا" اشاره دارد. همچنین تاریخ صدور و تاریخ بازگرداندن کتاب را داریم.

3. درخواست ساده

بیایید با یک درخواست ساده شروع کنیم: ما نیاز داریم نام هاو شناسه ها(id) تمام کتاب های نوشته شده توسط نویسنده "دن براون"


درخواست به این صورت خواهد بود:


SELECT bookid AS "id", title FROM books WHERE author="Dan Brown";

و نتیجه به این صورت است:


شناسه عنوان
2 نماد گمشده
4 دوزخ

خیلی ساده. بیایید درخواست را تجزیه کنیم تا بفهمیم چه خبر است.

3.1 FROM - از کجا داده ها را دریافت می کنیم

این ممکن است در حال حاضر بدیهی به نظر برسد، اما FROM بعداً هنگامی که به جوین ها و سوالات فرعی می رسیم بسیار مهم خواهد بود.


FROM به جدول برای پرس و جو اشاره می کند. این می تواند یک جدول از قبل موجود باشد (مانند مثال بالا)، یا جدولی که در جریان از طریق پیوندها یا سوالات فرعی ایجاد شده است.

3.2 WHERE - چه داده هایی برای نشان دادن

WHERE به سادگی مانند یک فیلتر رفتار می کند خطوطکه می خواهیم نمایش دهیم. در مورد ما، ما فقط می‌خواهیم ردیف‌هایی را ببینیم که مقدار ستون نویسنده «دان براون» است.

3.3 SELECT - نحوه نمایش داده ها

اکنون که تمام ستون های مورد نیاز خود را از جدول مورد نیاز خود داریم، باید تصمیم بگیریم که دقیقا چگونه این داده ها را نشان دهیم. در مورد ما، ما فقط به عنوان و شناسه کتاب نیاز داریم، بنابراین این کاری است که ما انجام می دهیم. انتخاب کنیدبا SELECT . در همان زمان، می توانید نام ستون را با استفاده از AS تغییر دهید.


کل پرس و جو را می توان با یک نمودار ساده تجسم کرد:


4. اتصالات (اتصالات)

اکنون می‌خواهیم عناوین (نه لزوما منحصربه‌فرد) همه کتاب‌های دن براون را که از کتابخانه به امانت گرفته شده‌اند، و زمانی که آن کتاب‌ها باید بازگردانده شوند، ببینیم:


SELECT books.title AS "Title"، borrowings.returndate AS "تاریخ بازگشت" FROM borrowings JOIN books ON borrowings.bookid=books.bookid WHERE books.author="Dan Brown";

نتیجه:


عنوان تاریخ بازگشت
نماد گمشده 2016-03-23 00:00:00
دوزخ 2016-04-13 00:00:00
نماد گمشده 2016-04-19 00:00:00

در بیشتر موارد، درخواست مشابه مورد قبلی است. به غیر ازبخش FROM. معنیش اینه که ما در حال جستجوی داده ها از جدول دیگری هستیم. ما به جدول «کتاب‌ها» یا جدول «قرض‌گیری» دسترسی نداریم. در عوض، ما به میز جدید، که با پیوستن این دو جدول ایجاد شده است.


قرض ها JOIN books ON borrowings.bookid=books.bookid است، در نظر بگیرید، میز جدید، که با ترکیب تمام رکوردها از جداول "دفترها" و "قرض گیری" در جایی که مقادیر دفترچه ای مطابقت دارند تشکیل شده است. نتیجه چنین ادغامی خواهد بود:



و سپس به همان روشی که در مثال بالا آمده است، از این جدول یک پرس و جو می کنیم. این بدان معناست که هنگام پیوستن به جداول، فقط باید نگران نحوه انجام این اتصال باشید. و سپس درخواست به همان اندازه که در مورد "درخواست ساده" از نقطه 3 روشن می شود.


بیایید یک اتصال کمی پیچیده تر با دو جدول را امتحان کنیم.


حالا می‌خواهیم نام و نام خانوادگی افرادی را که کتاب‌های نویسنده «دن براون» را از کتابخانه گرفته‌اند، دریافت کنیم.


این بار از پایین به بالا برویم:


مرحله 1- داده ها را از کجا می گیریم؟ برای به دست آوردن نتیجه ای که می خواهیم، ​​باید جداول "عضو" و "کتاب" را با جدول "قرض گیری" بپیوندیم. بخش JOIN به شکل زیر خواهد بود:


قرض ها به کتاب ها بپیوندید ON borrowings.bookid=books.bookid عضویت در اعضای ON Members.memberid=borrowings.memberid

نتیجه اتصال در لینک قابل مشاهده است.


گام 2چه داده هایی را نشان می دهیم؟ ما فقط به اطلاعاتی علاقه مندیم که نویسنده کتاب "دن براون" باشد.


WHERE books.author="Dan Brown"

مرحله 3چگونه داده ها را نمایش دهیم؟ اکنون که داده ها دریافت شده است، فقط باید نام و نام خانوادگی کسانی که کتاب ها را گرفته اند را نمایش دهید:


SELECT Members.firstname AS "First Name", Members.Lastname AS "Last Name"

فوق العاده! فقط کافی است سه جزء را ترکیب کنیم و درخواست مورد نیاز خود را ایجاد کنیم:


SELECT Members.firstname AS "First Name", Members.Lastname AS "Last Name" FROM borrowings JOIN books ON borrowings.bookid=books.bookid JOIN اعضا ON Members.memberid=borrowings.memberid WHERE books.author="Dan Brown";

چه چیزی به ما می دهد:


نام کوچک نام خانوادگی
مایک ویلیس
الن هورتون
الن هورتون

عالی! اما نام ها تکرار می شوند (آنها منحصر به فرد نیستند). ما به زودی این را برطرف خواهیم کرد.

5. تجمع

به طور کلی، برای تبدیل چند رشته به یک رشته به تجمیع نیاز است. در عین حال در حین تجمیع، منطق متفاوتی برای ستون های مختلف استفاده می شود.


بیایید به مثال خود ادامه دهیم که در آن نام های تکراری ظاهر می شوند. می توان دید که الن هورتون بیش از یک کتاب گرفته است، اما این بیشتر نیست بهترین راهاین اطلاعات را نشان دهید می توانید درخواست دیگری بدهید:


SELECT Members.firstname AS "First Name", Members.Lastname AS "Last Name", count(*) AS "تعداد کتاب های به امانت گرفته شده" FROM borrowings JOIN books ON borrowings.bookid=books.bookid JOIN اعضا ON Members.memberid=borrowings .memberid WHERE books.author="Dan Brown" GROUP BY Members.firstname, members.lastname;

که نتیجه مطلوب را به ما می دهد:


نام کوچک نام خانوادگی تعداد کتاب های امانت گرفته شده
مایک ویلیس 1
الن هورتون 2

تقریباً همه ادغام ها دارای یک بند GROUP BY هستند. این مورد، جدولی را که می‌توان با پرس و جو بدست آورد، به گروه‌هایی از جداول تبدیل می‌کند. هر گروه مربوط به یک مقدار (یا گروهی از مقادیر) منحصر به فرد از ستونی است که ما در GROUP BY مشخص کرده ایم. در مثال ما، نتیجه تمرین قبلی را به گروهی از رشته ها تبدیل می کنیم. ما همچنین یک تجمیع با count انجام می دهیم که چندین ردیف را به یک مقدار صحیح (در مورد ما تعداد ردیف ها) تبدیل می کند. سپس این مقدار به هر گروه اختصاص داده می شود.


هر ردیف در نتیجه حاصل تجمیع هر گروه است.



می توانید به این نتیجه منطقی برسید که تمام فیلدهای نتیجه یا باید در GROUP BY مشخص شوند، یا باید روی آنها تجمیع انجام شود. زیرا همه فیلدهای دیگر می توانند در ردیف های مختلف با یکدیگر متفاوت باشند و اگر آنها را با SELECT "th انتخاب کنید، مشخص نیست که کدام یک از مقادیر ممکن باید گرفته شود.


در مثال بالا، تابع count تمام ردیف ها را پردازش می کند (از آنجایی که ما تعداد ردیف ها را می شمردیم). توابع دیگر مانند sum یا max فقط ردیف های مشخص شده را پردازش می کنند. به عنوان مثال، اگر بخواهیم تعداد کتاب های نوشته شده توسط هر نویسنده را بدانیم، به این پرس و جو نیاز داریم:


انتخاب نویسنده، مجموع (سهام) FROM کتاب GROUP BY نویسنده.

نتیجه:


نویسنده مجموع
رابین شارما 4
دن براون 6
جان گرین 3
آمیش تریپاتی 2

در اینجا تابع sum فقط ستون سهام را پردازش می کند و مجموع تمام مقادیر هر گروه را محاسبه می کند.

6. سوالات فرعی


پرس و جوهای فرعی پرس و جوهای معمولی SQL هستند که در جستارهای بزرگتر جاسازی شده اند. آنها با توجه به نوع نتیجه برگشتی به سه نوع تقسیم می شوند.

6.1 میز دو بعدی

کوئری هایی هستند که چندین ستون را برمی گرداند. مثال خوباین پرس و جو از تمرین تجمع قبلی است. به‌عنوان یک پرسش فرعی، به سادگی جدول دیگری را برمی‌گرداند که می‌توان در آن پرس‌وجوهای جدید را انجام داد. در ادامه تمرین قبلی، اگر بخواهیم تعداد کتاب های نویسنده «رابین شارما» را بدانیم، یکی از راه های ممکن- از سوالات فرعی استفاده کنید:


SELECT * FROM (انتخاب نویسنده، مجموع(سهام) FROM books GROUP BY نویسنده) به عنوان نتایج WHERE author="Robin Sharma";

نتیجه:



می توان اینگونه نوشت: ["رابین شارما"، "دن براون"]


2. حالا از این نتیجه در یک کوئری جدید استفاده کنید:


SELECT عنوان، bookid FROM books WHERE author IN (انتخاب نویسنده FROM (انتخاب نویسنده، مجموع(سهام) FROM books GROUP BY نویسنده) AS نتایج WHERE sum > 3);

نتیجه:


عنوان کتابدار
نماد گمشده 2
وقتی بمیری چه کسی گریه خواهد کرد؟ 3
دوزخ 4

همان است که:


SELECT عنوان، bookid FROM books WHERE author IN ("Robin Sharma"، "Dan Brown");

6.3 ارزش های فردی

پرس و جوهایی وجود دارند که فقط یک سطر و یک ستون دارند. آنها را می توان به عنوان مقادیر ثابت در نظر گرفت و در هر جایی که از مقادیر استفاده می شود، مانند عملگرهای مقایسه، می توان از آنها استفاده کرد. آنها همچنین می توانند به عنوان جداول دو بعدی یا آرایه های تک عنصری استفاده شوند.


بیایید، برای مثال، اطلاعاتی در مورد همه کتابهایی که تعداد آنها در کتابخانه از میانگین مقدار در حال حاضر بیشتر است، بدست آوریم.


میانگین را می توان از این طریق بدست آورد:


میانگین (سهام) را از کتاب ها انتخاب کنید.

آنچه به ما می دهد:


7. عملیات را بنویسید

اکثر عملیات نوشتن پایگاه داده در مقایسه با عملیات خواندن پیچیده تر، بسیار ساده هستند.

7.1 به روز رسانی

نحو درخواست UPDATE از نظر معنایی مانند درخواست خواندن است. تنها تفاوت این است که به جای انتخاب ستون ها با SELECT "th، دانش را با SET "th تنظیم می کنیم.


اگر همه کتاب‌های دن براون گم شدند، باید مقدار کمیت را بازنشانی کنید. پرس و جو برای این خواهد بود:


UPDATE books SET stock=0 WHERE author="Dan Brown";

WHERE همان کار قبلی را انجام می دهد: ردیف ها را انتخاب می کند. به جای SELECT که هنگام خواندن استفاده می شد، اکنون از SET استفاده می کنیم. با این حال، اکنون باید نه تنها نام ستون، بلکه مقدار جدید این ستون را در ردیف های انتخاب شده نیز مشخص کنید.


7.2 حذف کنید

پرس و جوی DELETE فقط یک عبارت SELECT یا UPDATE بدون نام ستون است. به طور جدی. مانند SELECT و UPDATE، عبارت WHERE ثابت می ماند: ردیف هایی را که باید حذف شوند انتخاب می کند. عملیات حذف کل ردیف را از بین می برد، بنابراین تعیین ستون های جداگانه منطقی نیست. بنابراین، اگر تصمیم بگیریم تعداد کتاب‌های دن براون را بازنشانی نکنیم، بلکه همه ورودی‌ها را به طور کلی حذف کنیم، می‌توانیم درخواستی مانند این داشته باشیم:


DELETE FROM Books WHERE نویسنده = "Dan Brown";

7.3 درج کنید

شاید تنها چیزی که با انواع دیگر کوئری ها متفاوت است INSERT باشد. قالب این است:


INSERT INTO x(a,b,c) VALUES(x,y, z);

جایی که a، b، c نام ستون‌ها و x، y و z مقادیری هستند که باید به ترتیب در آن ستون‌ها درج شوند. اساساً همین است.


بیایید نگاهی به مثال خاص. در اینجا یک عبارت INSERT وجود دارد که کل جدول "کتاب" را پر می کند:


درج در کتابها (کتاب، عنوان، نویسنده، منتشر شده، سهام) VALUES (1"Scion of Ikshvaku"، "Amish Tripathi"، "06-22-2015"،2)، (2"The Lost Symbol"،" دن براون»، «2010-07-22»، 3)، (3، «وقتی بمیری چه کسی گریه خواهد کرد؟»، «رابین شارما»، «2006-15-06»، 4)، (4 «دوزخ» "دن براون"، "05-05-2014"، 3)، (5"گسل در ستاره های ما"، "جان گرین"، "01-03-2015"،3);

8. تأیید

ما به پایان رسیدیم، من یک آزمایش کوچک را پیشنهاد می کنم. به آن درخواست در همان ابتدای مقاله نگاه کنید. آیا میتوانی حلش کنی؟ سعی کنید آن را به بخش های SELECT , FROM , WHERE , GROUP BY تقسیم کنید و به اجزای پرس و جوی جداگانه نگاه کنید.


در اینجا به شکلی خواناتر است:


SELECT Members.firstname || "" || Members.lastname AS "Full Name" FROM borrowings INNER JOIN اعضا ON Members.memberid=borrowings.memberid INNER JOIN books ON books.bookid=borrowings.bookid WHERE borrowings.bookid IN (انتخاب bookid FROM books WHERE stock> (انتخاب میانگین ) از کتابها)) GROUP BY اعضا.نام، اعضا.نام خانوادگی;

این پرس و جو لیستی از افرادی را که کتابی را از کتابخانه امانت گرفته اند که مجموع آنها بالاتر از حد متوسط ​​است، برمی گرداند.


نتیجه:


نام و نام خانوادگی
لیندا تایلر

امیدوارم بدون هیچ مشکلی موفق شده باشید. اما در غیر این صورت، خوشحال می شوم که نظرات و انتقادات شما را بیان کنید تا بتوانم این پست را بهبود بخشم.

برچسب ها: اضافه کردن برچسب