نحوه راه اندازی گوشی های هوشمند و رایانه های شخصی. پرتال اطلاعاتی

SQL چیست. قابلیت زبان SQL

02/07/07 11.6K

مقدمه ای بر مدیریت پایگاه داده رابطه ای

sql اغلب زبان اسپرانتو برای سیستم های مدیریت پایگاه داده (DBMS) نامیده می شود. در واقع، هیچ زبان دیگری در جهان برای کار با پایگاه های داده وجود ندارد که در برنامه ها بسیار مورد استفاده قرار گیرد. اولین استاندارد sol در سال 1986 ظاهر شد و اکنون به رسمیت شناخته شده است. حتی در هنگام کار با DBMS های غیر رابطه ای می توان از آن استفاده کرد. برخلاف سایر ابزارهای نرم افزاری مانند زبان های C و Cobol که در انحصار برنامه نویسان حرفه ای هستند، sql توسط متخصصان رشته های مختلف استفاده می شود. برنامه نویسان، مدیران DBMS، تحلیلگران تجاری - همه آنها با موفقیت داده ها را با استفاده از sql پردازش می کنند. دانستن این زبان برای همه کسانی که باید با پایگاه داده سر و کار داشته باشند مفید است.

در این مقاله به مفاهیم اولیه sql خواهیم پرداخت. بیایید تاریخچه او را بگوییم (و چند افسانه را در این راه از بین ببریم). شما با مدل رابطه ای آشنا می شوید و می توانید اولین مهارت های کار با sql را کسب کنید که به تسلط بیشتر بر زبان کمک می کند.

آیا یادگیری sql سخت است؟ بستگی به این دارد که قرار است چقدر عمیق بروید. برای حرفه ای شدن باید زیاد مطالعه کنید. زبان sql در سال 1974 به عنوان موضوع یک مقاله تحقیقاتی کوتاه 23 صفحه ای شروع به کار کرد و از آن زمان تاکنون راه طولانی را پیموده است. متن استاندارد فعلی - سند رسمی "زبان استاندارد بین المللی پایگاه داده sql" (که معمولا sql-92 نامیده می شود) - شامل بیش از ششصد صفحه است، اما چیزی در مورد ویژگی های خاص نسخه های sol پیاده سازی شده در DBMS ها بیان نمی کند. از Microsoft، Oracle، Sybase و غیره. این زبان به قدری توسعه یافته و متنوع است که فقط فهرست کردن قابلیت های آن به چندین مقاله در مجله نیاز دارد، و اگر همه چیزهایی را که در مورد موضوع sol نوشته شده است جمع آوری کنید، یک کتابخانه چند جلدی دریافت خواهید کرد.

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

sql چیست؟

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

یک زبان کاربردی همه منظوره معمولاً امکاناتی برای ایجاد رویه‌ها دارد، اما SQL اینطور نیست. با کمک آن، نمی توانید مشخص کنید که چگونه یک کار خاص باید انجام شود، اما فقط می توانید تعیین کنید که دقیقاً چیست. به عبارت دیگر، هنگام کار با sql، ما به نتایج علاقه مند هستیم، نه رویه های به دست آوردن آنها.

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

DBMS رابطه ای چیست؟

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

مفهوم یک مدل رابطه ای برای اولین بار در کار دکتر E. F. Codd که در سال 1970 منتشر شد پیشنهاد شد. این مدل یک دستگاه ریاضی برای ساختاردهی و دستکاری داده ها را توصیف کرد و همچنین یک مدل انتزاعی برای نمایش هرگونه اطلاعات دنیای واقعی پیشنهاد کرد. پیش از این، هنگام استفاده از پایگاه داده، لازم بود ویژگی های خاص ذخیره سازی اطلاعات در آن در نظر گرفته شود. اگر ساختار داخلی پایگاه داده تغییر می کرد (مثلاً برای بهبود عملکرد)، لازم بود برنامه های کاربردی دوباره کار شوند، حتی اگر هیچ تغییری در سطح منطقی اتفاق نیفتد. مدل رابطه ای امکان جداسازی ویژگی های خصوصی ذخیره سازی داده ها را از سطح برنامه کاربردی فراهم کرد. در واقع، مدل به هیچ وجه نحوه ذخیره و دسترسی به اطلاعات را توصیف نمی کند. آنچه مورد توجه قرار می گیرد نحوه درک این اطلاعات توسط کاربر است. به لطف ظهور مدل رابطه ای، رویکرد مدیریت داده ها از نظر کیفی تغییر کرده است: از یک هنر به یک علم تبدیل شده است که منجر به توسعه انقلابی صنعت شد.

مفاهیم اساسی مدل رابطه ای

با توجه به مدل رابطه ای، یک رابطه یک جدول با داده است. یک رابطه ممکن است دارای یک یا چند ویژگی (ویژگی) مربوط به ستون های این جدول و مجموعه ای (احتمالاً خالی) از داده ها باشد که مجموعه ای از این ویژگی ها هستند (به آنها تاپل های n-ary یا رکورد می گویند) و مربوط به ردیف های جدول

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

بیایید به یک مثال نگاه کنیم. اجازه دهید دامنه روزهای هفته حاوی مقادیر از دوشنبه تا یکشنبه باشد. اگر یک رابطه دارای ویژگی WeekDay مربوط به این دامنه باشد، پس هر تاپلی در رابطه باید یکی از مقادیر فهرست شده در ستون WeekDay را داشته باشد. مقادیر January یا Cat مجاز نیستند ظاهر شوند.

لطفاً توجه داشته باشید: ویژگی باید یکی از مقادیر معتبر را داشته باشد. تعیین چندین مقدار به طور همزمان ممنوع است. بنابراین، علاوه بر الزامی که مقادیر ویژگی متعلق به یک دامنه خاص است، شرط اتمی بودن آن نیز باید برآورده شود. این بدان معنی است که این معانی نمی توانند تجزیه شوند، یعنی نمی توان آنها را بدون از دست دادن معنای اصلی به قطعات کوچکتر تجزیه کرد. به عنوان مثال، اگر مقدار مشخصه به طور همزمان شامل دوشنبه و سه شنبه باشد، می توان دو بخش را متمایز کرد و معنای اصلی را حفظ کرد - روز هفته. بنابراین، این مقدار مشخصه اتمی نیست. با این حال، اگر سعی کنید معنی "دوشنبه" را به قطعات تقسیم کنید، مجموعه ای از حروف جداگانه - از "P" تا "K" دریافت خواهید کرد. معنای اصلی از بین رفته است، بنابراین معنای "دوشنبه" اتمی است.

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

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

sql و مدل رابطه ای

اکنون که با مدل رابطه ای آشنا شدید، بیایید آن را فراموش کنیم. البته نه برای همیشه، بلکه فقط برای توضیح موارد زیر: اگرچه این مدل رابطه ای پیشنهادی دکتر Codd بود که در توسعه sql استفاده شد، اما مطابقت کامل یا تحت اللفظی بین این دو وجود ندارد (این یکی از دلایل آن است. چرا استاندارد sql-92 اصطلاح نگرش را ندارد). به عنوان مثال، مفاهیم یک جدول sql و یک رابطه معادل نیستند، زیرا جداول می توانند همزمان چندین ردیف یکسان داشته باشند، در حالی که تاپل های یکسان مجاز نیستند در روابط ظاهر شوند. علاوه بر این، SQL استفاده از دامنه های رابطه ای را فراهم نمی کند، اگرچه انواع داده ها تا حدی نقش دارند (برخی از حامیان تأثیرگذار مدل رابطه ای اکنون در تلاش هستند تا دامنه های رابطه ای را در استاندارد SQL آینده گنجانده شوند).

متأسفانه، ناهماهنگی بین sql و مدل رابطه‌ای در طول سال‌ها باعث ایجاد سوء تفاهم‌ها و اختلافات بسیاری شده است. اما از آنجایی که موضوع اصلی مقاله مطالعه sql است و نه مدل رابطه ای، در اینجا به این مشکلات پرداخته نمی شود. فقط به یاد داشته باشید که بین اصطلاحات استفاده شده در sql و مدل رابطه ای تفاوت هایی وجود دارد. در ادامه مقاله فقط از اصطلاحات پذیرفته شده در sql استفاده خواهد شد. به جای روابط، ویژگی ها و تاپل ها، از آنالوگ های sql آنها استفاده خواهیم کرد: جداول، ستون ها و ردیف ها.

sql استاتیک و پویا

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

نحوه یادگیری sql

اکنون شما آماده هستید تا اولین پرس و جوهای sql خود را بنویسید. اگر از طریق sql به پایگاه داده دسترسی دارید و می خواهید از مثال های ما در عمل استفاده کنید، موارد زیر را در نظر بگیرید: باید به عنوان یک کاربر با حقوق نامحدود وارد شوید و به ابزارهای نرم افزاری برای پردازش تعاملی پرس و جوهای sql نیاز خواهید داشت (اگر ما داریم). در مورد یک پایگاه داده شبکه صحبت کنید، باید با مدیر پایگاه داده خود در مورد اعطای حقوق مناسب به شما صحبت کنید). اگر از طریق sql به پایگاه داده دسترسی ندارید، نگران نباشید: همه مثال‌ها بسیار ساده هستند و می‌توانید بدون رفتن به دستگاه آن‌ها را «خشک» بفهمید.

برای انجام هر عملی در sql باید یک عبارت را به زبان sql اجرا کنید. انواع مختلفی از عبارات وجود دارد، اما در بین آنها سه گروه اصلی را می توان تشخیص داد: دستورات ddl (زبان تعریف داده)، دستورات dml (زبان دستکاری داده ها) و ابزارهای کنترل داده. بنابراین، به یک معنا، sql سه زبان مختلف را ترکیب می کند.

دستورات زبان توصیف داده ها

بیایید با یکی از دستورات اصلی ddl شروع کنیم - ایجاد جدول. انواع مختلفی از جداول در sql وجود دارد که اصلی ترین آنها دو نوع است: پایه (پایه) و انتخابی (نما). جداول پایه آنهایی هستند که به داده های واقعی مربوط می شوند. انتخابی جداول "مجازی" هستند که بر اساس اطلاعات به دست آمده از جداول پایه ایجاد می شوند. اما برای کاربران فرم ها مانند جداول معمولی به نظر می رسند. دستور create table برای ایجاد جداول پایه طراحی شده است.

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

ایجاد جدولTableName(ColumnDataType) ;

ایجاد و جدول کلمات کلیدی sql هستند. TableName، Column و DataType پارامترهای رسمی هستند که به جای آنها کاربر هر بار مقادیر واقعی را وارد می کند. پارامترهای Column و DataType در داخل پرانتز قرار می گیرند. در sql معمولاً از پرانتز برای گروه بندی عناصر فردی استفاده می شود. در این مورد، آنها به شما اجازه می دهند که تعاریف یک ستون را ترکیب کنید. نقطه ویرگول انتهایی یک جداکننده دستور است. باید هر عبارتی را در زبان sql خاتمه دهد.

بیایید به یک مثال نگاه کنیم. فرض کنید باید یک جدول برای ذخیره داده‌های مربوط به همه قرارها ایجاد کنید. برای انجام این کار، دستور را در sql وارد کنید:

ایجاد قرارهای جدول (تاریخ انتصاب_تاریخ) ;

پس از اجرای این دستور جدولی به نام انتصاب ایجاد می شود که در آن یک ستون به نام appointment_date وجود دارد که می توان داده هایی از نوع date را در آن نوشت. از آنجایی که هنوز هیچ داده ای وارد نشده است، تعداد ردیف های جدول صفر است (دستور ایجاد جدول فقط جدول را تعریف می کند؛ مقادیر واقعی با دستور insert وارد می شوند که بعداً مورد بحث قرار می گیرد).

پارامترهای انتصاب و appointment_date شناسه نامیده می شوند زیرا نام هایی را برای اشیاء پایگاه داده مشخص می کنند، در این مورد نام جدول و ستون را به ترتیب مشخص می کنند. دو نوع شناسه در sql وجود دارد: معمولی و مشخص. شناسه های هایلایت شده در دو گیومه قرار می گیرند و به حروف کوچک و بزرگ حساس هستند. شناسه های معمولی با هیچ کاراکتر محدودی متمایز نمی شوند و نوشته آنها به حروف کوچک و بزرگ حساس نیست. این مقاله فقط از شناسه های معمولی استفاده می کند.

کاراکترهای مورد استفاده برای ساخت شناسه ها باید قوانین خاصی را رعایت کنند. شناسه‌های معمولی فقط می‌توانند از حروف (نه لزوما لاتین، بلکه سایر حروف الفبا)، اعداد و کاراکتر زیر خط استفاده کنند. شناسه نباید حاوی علائم نگارشی، فاصله یا کاراکترهای خاص (#، @، % یا!) باشد. علاوه بر این، نمی تواند با یک عدد یا خط زیر شروع شود. شما می توانید از کلمات کلیدی sql جداگانه برای شناسه ها استفاده کنید، اما این توصیه نمی شود. یک شناسه برای تعیین یک شی در نظر گرفته شده است، بنابراین باید یک نام منحصر به فرد (در یک زمینه خاص) داشته باشد: شما نمی توانید جدولی با نامی ایجاد کنید که قبلاً در پایگاه داده یافت شده است. شما نمی توانید ستون هایی با نام های یکسان در یک جدول داشته باشید. ضمناً در نظر داشته باشید که انتصاب و قرارها برای sql یکسان هستند. تغییر حروف به تنهایی نمی تواند یک شناسه جدید ایجاد کند.

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

ایجاد جدولTableName(ColumnDataType[ (, ColumnDataType )]) ;

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

ایجاد جدول انتصابات2 (تاریخ_قرار، زمان_زمان قرار، توضیحات varchar (256)) ;

این دستور جدول appointments2 را ایجاد می کند (جدول جدید باید نام دیگری داشته باشد، زیرا جدول انتصاب ها از قبل در پایگاه داده وجود دارد). مانند جدول اول، دارای یک ستون appointment_date برای ثبت تاریخ های ملاقات است. علاوه بر این، یک ستون appointment_time برای ثبت زمان این جلسات ظاهر شده است. پارامتر توضیحات یک رشته متنی است که می تواند حداکثر 256 کاراکتر داشته باشد. این پارامتر به عنوان varchar (مخفف عبارت متغیر کاراکتر) مشخص شده است، زیرا از قبل مشخص نیست که چه مقدار فضا برای ورودی مورد نیاز است، اما واضح است که توضیحات بیش از 256 کاراکتر نخواهد داشت. هنگام توصیف یک پارامتر از نوع رشته کاراکتر (و برخی از انواع دیگر)، طول پارامتر نشان داده می شود. مقدار آن در پرانتز سمت راست نام نوع مشخص شده است.

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

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

ایجاد کارمندان جدول (نویسه نام خانوادگی (13) تهی نیست، نویسه نام اول (10) تهی نیست، تاریخ استخدام، کاراکتر شعبه (15)، درجه_سطح کوچک، اعشار حقوق (9، 2)).

تیم با چندین عنصر جدید ملاقات می کند. اول از همه، عبارت not null در انتهای تعریف ستون های last_name و first_name وجود دارد. با کمک چنین ساختارهایی، الزاماتی تنظیم می شود که باید رعایت شوند. در این حالت مشخص شده است که هنگام وارد کردن باید فیلدهای نام خانوادگی و نام خانوادگی پر شود. شما نمی توانید این ستون ها را خالی بگذارید (این کاملاً منطقی است: چگونه می توانید یک کارمند را بدون دانستن نام او شناسایی کنید؟).

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

تمام انواع داده‌های موجود در sql را می‌توان به شش گروه تقسیم کرد: رشته‌های کاراکتری، مقادیر عددی دقیق، مقادیر عددی تقریبی، رشته‌های بیت، زمان‌های تاریخ و فواصل. ما همه انواع را فهرست کرده‌ایم، اما این مقاله تنها برخی از آنها را به تفصیل مورد بحث قرار می‌دهد (مثلاً رشته‌های بیت برای کاربران معمولی جذابیت خاصی ندارند).

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

نوع داده بعدی که قبلاً با آن آشنا هستید متغیر کاراکتر (یا فقط varchar) است. به گروه رشته کاراکترها تعلق دارد. اگر از varchar برای ذخیره رشته هایی با طول متغیر استفاده می شود، آنگاه نوع char که در مثال سوم با آن مواجه شدیم برای ذخیره رشته هایی با تعداد کاراکتر ثابت در نظر گرفته شده است. برای مثال، ستون last_name شامل رشته‌هایی از 13 کاراکتر است، صرف نظر از نام‌های خانوادگی واقعی وارد شده، چه poe یا penworth-chickering (در مورد poe، 10 کاراکتر باقی‌مانده با فاصله پر می‌شوند).

از دیدگاه کاربر، varchar و char به یک معنا هستند. چرا معرفی دو نوع ضروری بود؟ واقعیت این است که در عمل معمولاً باید به دنبال مصالحه ای بین عملکرد و صرفه جویی در فضای دیسک باشید. به عنوان یک قاعده، استفاده از رشته هایی با طول ثابت مقداری از مزایای سرعت دسترسی را می دهد، اما اگر طول رشته بیش از حد طولانی باشد، فضای دیسک تلف می شود. اگر در انتصابات2 256 کاراکتر برای هر خط نظر رزرو کنید، ممکن است غیرمنطقی باشد. اغلب خطوط به طور قابل توجهی کوتاه تر می شوند. از سوی دیگر، نام‌های خانوادگی نیز از نظر طول متفاوت هستند، اما معمولاً به حدود 13 کاراکتر نیاز دارند. در این صورت ضرر و زیان حداقل خواهد بود. یک قانون کلی خوب این است: اگر می دانید که طول رشته کمی متفاوت است یا نسبتاً کوچک است، از char استفاده کنید. در موارد دیگر - varchar.

دو نوع داده جدید بعدی، کوچک و اعشاری، به گروه مقادیر عددی دقیق تعلق دارند. smallint مخفف عدد صحیح کوچک است. SQL همچنین یک نوع داده عدد صحیح را ارائه می دهد. وجود دو نوع مشابه در این مورد با ملاحظات صرفه جویی در فضا توضیح داده می شود. در مثال ما، مقادیر پارامتر grade_level را می توان با استفاده از یک عدد دو رقمی نشان داد، بنابراین از نوع smallint استفاده می شود. با این حال، در عمل همیشه مشخص نیست که پارامترها چه مقدار حداکثری می توانند داشته باشند. اگر چنین اطلاعاتی وجود ندارد، از عدد صحیح استفاده کنید. مقدار واقعی فضای اختصاص داده شده برای ذخیره پارامترهای کوچک و صحیح و محدوده مقادیر مربوط به این پارامترها، مختص هر پلتفرم است.

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

که در آن p تعداد ارقام اعشار، d تعداد ارقام اعشار است. به جای p، تعداد کل ارقام معنی دار را در مقادیر استفاده شده بنویسید و به جای d، تعداد ارقام اعشاری را بنویسید.

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

در ابتدا، ممکن است به نظر برسد که نحو دستورات sql بسیار پیچیده است. اما اگر مثال های بالا را با دقت مطالعه کنید به راحتی می توانید آن را درک کنید. یک عنصر اضافی در نمودار ظاهر شد - یک خط عمودی. این برای تمایز بین طرح های جایگزین است. به عبارت دیگر، هنگام تعریف هر ستون، باید نوع داده مناسب را انتخاب کنید (همانطور که به یاد دارید، پارامترهای اختیاری در براکت های مربع قرار می گیرند و ساختارهایی که می توانند چندین بار تکرار شوند در پرانتزهای فرفری قرار می گیرند؛ این کاراکترهای خاص نوشته نمی شوند. در دستورات واقعی sql). بخش اول نمودار اسامی کامل انواع داده ها را نشان می دهد، بخش دوم شامل نام اختصاری آنها است. در عمل می توان از هر یک از آنها استفاده کرد.

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

ایجاد جدول. دستور دستور create table به شرح زیر است: پارامترهای اختیاری در براکت مربع و ساختارهای تکرار شونده در براکت های مجعد نشان داده شده اند.

ایجاد جدول جدول (نویسه ستون (طول) [ محدودیت ] | متغیر متغیر (طول) [ محدودیت ] | تاریخ [ محدودیت ] زمان [ محدودیت ] | عدد صحیح [ محدودیت ] | کوچک [ محدودیت ] | اعشار (دقت، اعشار) [ محدودیت ] | شناور (دقت) [ محدودیت ] [( , کاراکتر ستون (طول) [ محدودیت ] | varchar (طول) [ محدودیت ] | تاریخ [ محدودیت ] | زمان [ محدودیت ] | درون [ محدودیت ] | کوچک [ محدودیت ] | dec (دقت، اعشار) [محدودیت] | شناور (دقت) [محدودیت]])؛

راز نام sql

در اوایل دهه 1970. ibm شروع به پیاده سازی مدل پایگاه داده رابطه ای پیشنهاد شده توسط دکتر Codd کرد. دونالد چمبرلین و گروهی از افراد دیگر در واحد تحقیقات پیشرفته یک زبان اولیه به نام زبان پرس و جو انگلیسی ساختاریافته یا به سادگی دنباله ایجاد کردند. متعاقباً گسترش و اصلاح شد. نسخه جدید ارائه شده توسط ibm، sequel/2 نام داشت. این به عنوان یک رابط برنامه نویسی (api) برای طراحی اولین سیستم پایگاه داده رابطه ای ibm، system/r استفاده شد. به دلایل مربوط به نکات ظریف حقوقی، ibm تصمیم گرفت نام را تغییر دهد: به جای sequel/2، از sql (زبان پرس و جو ساختاریافته) استفاده کنید. این مخفف اغلب "see-ku-el" تلفظ می شود.

تفاوت های قابل توجهی بین نمونه های اولیه اولیه و استاندارد sql وجود دارد که اکنون در سازمان های مختلف به رسمیت شناخته شده است. جیم ملتن، که استاندارد sql-92 را تهیه کرد، حتی اظهار داشت که بسیاری از مردم در این فکر اشتباه می کنند که کلمه "ساختار یافته" به درستی ویژگی های این زبان را منعکس می کند (jim melton and alan r. simon "درک جدید sql: راهنمای کامل .» san francisco : morgan kaufmann, 1993. isbn: 1-55860-245-3). بنابراین، در واقع sql فقط یک نام است، دنباله ای از حروف s-q-l و نه چیزی بیشتر.

خوب بد

در این فصل ...

  • SQL چیست؟
  • تصورات غلط SQL
  • نگاهی به استانداردهای مختلف SQL
  • مقدمه ای بر دستورات استاندارد SQL و کلمات رزرو شده
  • نمایش اعداد، نمادها، تاریخ ها، زمان ها و سایر انواع داده ها
  • مقادیر و محدودیت های تعریف نشده
  • استفاده از SQL در سیستم کلاینت/سرور
  • SQL در وب

SQLیک زبان منعطف است که می تواند به روش های مختلف استفاده شود. این رایج ترین ابزاری است که برای برقراری ارتباط با پایگاه داده رابطه ای استفاده می شود. در این فصل، من توضیح خواهم داد که SQL چیست و چیست، به ویژه اینکه SQL چگونه با سایر انواع زبان های کامپیوتری متفاوت است. سپس با دستورات و انواع داده هایی که SQL استاندارد پشتیبانی می کند آشنا می شوید. در ضمن مفاهیم پایه ای مانند مقادیر تعریف نشدهو محدودیت های. در نهایت، یک نمای کلی از نحوه تناسب SQL در محیط کلاینت/سرور و همچنین اینترنت و اینترانت سازمان ها ارائه خواهد شد.

SQL چیست و چیست؟

اولین چیزی که در مورد SQL باید فهمید این است که a نیست رویه ایمانند FORTRAN، Basic، C، COBOL، Pascal و Java. برای حل یک مشکل با استفاده از یکی از این زبان‌های رویه‌ای، باید رویه‌ای بنویسید که عملیات مشخص شده را یکی پس از دیگری انجام می‌دهد تا کار تکمیل شود. رویه ممکن است یک دنباله خطی باشد یا شامل انشعاب باشد، اما در هر صورت برنامه نویس ترتیب اجرا را مشخص می کند.

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

خوب. من فقط گفتم که SQL یک زبان رویه ای نیست. در اصل، این درست است. با این حال، با توجه به اینکه میلیون‌ها برنامه‌نویس در اطراف (و ممکن است شما یکی از آنها باشید) به حل مشکلات به صورت رویه‌ای عادت کرده‌اند، در سال‌های اخیر فشار زیادی برای افزودن برخی قابلیت‌های رویه‌ای به SQL وارد شده است. به همین دلیل است که نسخه جدید مشخصات SQL، SQL:2003، اکنون شامل ویژگی های زبان رویه ای مانند بلوک های BEGIN، دستورات IF شرطی، توابع و رویه ها می شود. با استفاده از این ابزارهای جدید، برنامه ها را می توان در یک سرور ذخیره کرد تا برای بسیاری از کاربران قابل استفاده مجدد باشد.

برای نشان دادن منظورم وقتی گفتم «به سیستم دقیقاً چه چیزی نیاز دارید بگویید»، فرض کنید یک جدول EMPLOYEE با داده‌های کارمند دارید و می‌خواهید همه ردیف‌هایی را از آن انتخاب کنید که با همه کارمندان ارشد مطابقت دارند. کارگران ارشد را می توان هر فردی بالای 40 سال یا بیش از 60000 دلار در سال تعریف کرد. انتخاب مورد نیاز را می توان با استفاده از پرس و جو زیر انجام داد:

انتخاب * از کارمندی که در آن سن > 40 یا حقوق > 60000;

این عبارت از جدول EMPLOYEE همه سطرهایی را انتخاب می کند که در آنها یا مقدار ستون AGE (سن) بیشتر از 40 است یا مقدار ستون حقوق و دستمزد بیشتر از 60000 است. SQL خودش می داند که چگونه اطلاعات را انتخاب کند. موتور پایگاه داده پایگاه داده را بررسی می کند و خودش تصمیم می گیرد که کوئری چگونه باید اجرا شود. تنها کاری که باید انجام دهید این است که مشخص کنید به چه داده هایی نیاز دارید.

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

پیاده سازی های مدرن SQL فاقد بسیاری از ساختارهای برنامه نویسی ساده ای هستند که برای اکثر زبان های دیگر اساسی هستند. برنامه های روزمره معمولاً حداقل به برخی از این ساختارها نیاز دارند، بنابراین SQL در واقع همینطور است زیر زبانداده ها. حتی با وجود اضافاتی که با استاندارد SQL:1999 به SQL آمدند و پسوندهای اضافی اضافه شده در SQL:2003، همچنان باید از یکی از زبان های برنامه نویسی مانند C با SQL برای ایجاد یک برنامه کامل استفاده کنید.

به یکی از روش های زیر می توانید اطلاعات را از پایگاه داده انتخاب کنید.

  • با استفاده از یک کوئری یکباره و غیرقابل برنامه ریزی از کنسول کامپیوتر، وارد کردن یک دستور SQL و خواندن نتایج اجرای آن بر روی صفحه نمایش. کنسول یک اصطلاح سنتی برای سخت افزار رایانه است که کار صفحه کلید و صفحه نمایش موجود در رایانه های شخصی مدرن را انجام می دهد. پرس و جوهای کنسول زمانی مفید هستند که نیاز به پاسخ سریع به یک درخواست خاص دارید. برای ارضای برخی نیازهای فعلی، ممکن است به داده هایی از پایگاه داده نیاز داشته باشید که قبلاً هرگز مورد نیاز نبوده است. ممکن است دیگر هرگز به آنها نیاز نداشته باشید، اما اکنون به آنها نیاز دارید. پرس و جوی SQL مناسب را از صفحه کلید وارد کنید و پس از مدتی نتیجه روی صفحه نمایش شما ظاهر می شود.
  • با استفاده از برنامه ای که اطلاعات را از یک پایگاه داده بازیابی می کند و سپس گزارشی را بر اساس این داده ها ایجاد می کند که روی صفحه نمایش داده می شود یا چاپ می شود. از SQL نیز می توان به این روش استفاده کرد. یک پرس و جو پیچیده SQL که ممکن است در آینده مفید باشد را می توان مستقیماً در برنامه قرار داد. این به شما امکان می دهد در آینده از آن استفاده مجدد کنید. بنابراین، فرمول پرس و جو یک بار اجرا می شود. فصل 15 نحوه درج کد SQL را در برنامه های نوشته شده به زبان دیگر پوشش می دهد.
پایگاه‌های داده‌ای که می‌توانند روی سیستم‌های رایانه‌ای متعدد از انواع مختلف کار کنند. در واقع، با کمک آن، کاربران می‌توانند داده‌ها را بدون توجه به اینکه روی یک رایانه شخصی کار می‌کنند، یک ایستگاه کاری شبکه یا یک رایانه بزرگ، دستکاری کنند.

یکی از زبان هایی که در نتیجه توسعه مدل داده های رابطه ای پدید آمد، زبان SQL (زبان پرس و جو ساختاریافته) است که اکنون بسیار گسترده شده و در واقع تبدیل شده است. زبان استاندارد پایگاه های داده رابطه ای. استاندارد SQL توسط موسسه استاندارد ملی آمریکا (ANSI) در سال 1986 منتشر شد و در سال 1987 توسط سازمان بین المللی استاندارد (ISO) به صورت بین المللی پذیرفته شد. استاندارد فعلی SQL با نام SQL/92 شناخته می شود.

استفاده از هر استانداردی نه تنها با مزایای متعدد و کاملا آشکار، بلکه با معایب خاصی همراه است. اول از همه، استانداردها توسعه صنعت مربوطه را در جهت خاصی هدایت می کنند. در مورد زبان SQL، داشتن اصول زیربنایی قوی در نهایت منجر به قابلیت همکاری بین پیاده‌سازی‌های مختلف آن می‌شود و هم به افزایش قابلیت حمل نرم‌افزار و پایگاه‌های داده به طور کلی و هم به تطبیق پذیری مدیران پایگاه داده کمک می‌کند. از سوی دیگر، استانداردها انعطاف پذیری و عملکرد یک پیاده سازی خاص را محدود می کنند. زیر پیاده سازی زبان SQL به محصول نرم افزار SQL سازنده مربوطه اشاره دارد. برای گسترش عملکرد، بسیاری از توسعه دهندگانی که به استانداردهای پذیرفته شده پایبند هستند، اضافه می کنند زبان استانداردپسوندهای مختلف SQL لازم به ذکر است که استانداردها نیازمند هر گونه تکمیل شده می باشند پیاده سازی زبان SQL دارای ویژگی های خاصی است و به طور گسترده نشان دهنده روندهای اصلی است که نه تنها منجر به سازگاری بین تمام پیاده سازی های رقیب می شود، بلکه به افزایش ارزش برنامه نویسان و کاربران SQL نیز کمک می کند. پایگاه های داده رابطه ایدر بازار نرم افزار مدرن

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

در حال حاضر، زبان SQL توسط ده‌ها DBMS از انواع مختلف پشتیبانی می‌شود که برای انواع مختلفی از پلتفرم‌های محاسباتی، از رایانه‌های شخصی گرفته تا رایانه‌های بزرگ، توسعه یافته‌اند.

تمام زبان های دستکاری داده ها برای بسیاری از DBMS ها قبل از ظهور ایجاد شده اند پایگاه های داده رابطه ای، بر روی عملیات با داده های ارائه شده در قالب رکوردهای فایل منطقی متمرکز شدند. البته این امر مستلزم آن بود که کاربر اطلاعات دقیقی از سازمان ذخیره‌سازی داده‌ها داشته باشد و تلاش جدی برای تعیین اینکه چه داده‌هایی مورد نیاز است، در کجا قرار دارند و چگونه به دست می‌آیند.

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

مقدمه ای بر فناوری مشتری-سرور

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

به لطف DBMS هایی که با سرورهای فایل کار می کنند، بسیاری از کاربران به پایگاه داده های مشابه دسترسی دارند. توسعه سیستم های مختلف خودکار برای مدیریت سازمان ها ساده شده است. اما با این رویکرد، تمامی پردازش درخواست‌های برنامه‌ها یا پایانه‌های کامپیوتر کاربر بر روی آن‌ها انجام می‌شود، بنابراین برای اجرای حتی یک درخواست ساده، خواندن یا نوشتن کل فایل‌ها از سرور فایل ضروری است و این منجر به تضاد می‌شود. موقعیت ها و اضافه بار شبکه برای رفع این کاستی ها پیشنهاد شد فناوری مشتری-سرور، اما در همان زمان یک زبان مشترک برای برقراری ارتباط با سرور مورد نیاز بود - انتخاب بر روی SQL افتاد.

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

در زمینه پایگاه داده، کلاینت رابط کاربری و منطق برنامه را کنترل می کند و به عنوان یک ایستگاه کاری عمل می کند که برنامه های پایگاه داده را اجرا می کند. کلاینت درخواست کاربر را می پذیرد، نحو را بررسی می کند و یک پرس و جو پایگاه داده در SQL یا زبان پایگاه داده دیگری متناسب با منطق برنامه ایجاد می کند. سپس پیامی به سرور می فرستد، منتظر پاسخ می ماند و داده های دریافتی را برای ارائه به کاربر قالب بندی می کند. سرور درخواست ها را به پایگاه داده دریافت و پردازش می کند و سپس نتایج را برای مشتری ارسال می کند. این پردازش شامل تأیید اعتبار مشتری، اطمینان از الزامات یکپارچگی، و انجام درخواست و به‌روزرسانی داده‌ها است. علاوه بر این، کنترل همزمان و بازیابی پشتیبانی می شود.

معماری سرویس گیرنده-سرور دارای چندین مزیت است.

هر دستور SQL با یک کلمه کلیدی شروع می شود، یک فعل که عملکرد فرمان را توصیف می کند، مانند CREATE. یک تیم می تواند یک یا چند جمله داشته باشد. این جمله داده‌هایی را که فرمان با آن کار می‌کند یا حاوی اطلاعات روشن‌کننده‌ای درباره عملکردی است که فرمان انجام می‌دهد، توصیف می‌کند. هر بند با یک کلمه کلیدی مانند WHERE شروع می شود. برخی از جملات در دستور مورد نیاز هستند، برخی دیگر نه. برخی جملات ممکن است حاوی کلمات کلیدی و عبارات اضافی باشند. بسیاری از جملات شامل نام جدول یا فیلد هستند. نام ها باید بین 1 تا 18 کاراکتر باشند، با یک حرف شروع شوند و فاقد فاصله یا نویسه های نقطه گذاری خاص باشند. کلمات کلیدی را نمی توان به عنوان نام استفاده کرد.

52. SQL (Structured Query Language) - زبان پرس و جو ساختاریافتهیک زبان پرس و جوی استاندارد برای کار با پایگاه داده های رابطه ای است.

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

SQL را می توان برای دسترسی به پایگاه داده در دو حالت استفاده کرد: کار تعاملیو در برنامه های کاربردی.

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

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

ساختار سطح بالا که یادآور زبان انگلیسی است.

· استقلال از DBMS خاص.

· در دسترس بودن استانداردهای در حال توسعه.

· توانایی انجام پرس و جوهای تعاملی برای بازیابی داده ها و اصلاح ساختار آنها.

· ارائه دسترسی نرم افزار به پایگاه های داده.

· پشتیبانی از معماری مشتری/سرور؛

· توسعه پذیری و پشتیبانی از فناوری های شی گرا.



· امکان دسترسی به داده ها در اینترنت.

توابع اصلی زبان SQL:

SQL – زبان پرس و جو تعاملی. کاربران دستورات SQL را به صورت تعاملی وارد می کنند تا داده ها را بازیابی کرده و روی صفحه نمایش دهند و تغییراتی در پایگاه داده ایجاد کنند.

SQL – زبان برنامه نویسی پایگاه داده. برای دسترسی به پایگاه داده، دستورات SQL در برنامه های کاربردی درج می شوند.

SQL – زبان مدیریت پایگاه داده. یک مدیر پایگاه داده می تواند از SQL برای تعریف ساختار پایگاه داده و کنترل دسترسی به داده ها استفاده کند.

SQL – زبان برنامه مشتری/سرور. در برنامه های کاربردی، SQL به عنوان وسیله ای برای سازماندهی ارتباط روی یک شبکه محلی با یک سرور پایگاه داده استفاده می شود که داده های مشترک و غیره را ذخیره می کند.

55. قابلیت های زبانزبان SQL که با آخرین استانداردهای SQL:2003، SQL:1999 مطابقت دارد، زبانی بسیار غنی و پیچیده است که درک فوری همه قابلیت‌های آن دشوار است و درک آن بسیار کمتر است. بنابراین، ما باید زبان را به سطوح تقسیم کنیم. در یکی از طبقه بندی های ارائه شده توسط استاندارد SQL، این زبان به سطوح «پایه» (ورودی)، «متوسط» (متوسط) و «کامل» تقسیم می شود. سطح پایه شامل حدود چهل فرمان است که می توان آنها را با توجه به عملکرد آنها در دسته بندی ها دسته بندی کرد.

جزئیات جدول را ایجاد کنید (NOMZ INT، نام کامل CHAR(15)، YEAR INT، جنسیت CHAR(3))

جزئیات جدول رها کردن

جزئیات جدول تغییر دهید (نمونه CHAR(10))

ایجاد نمای پیشرفت تحصیلی M1 AS SELECT *FROM Academic Performance WHERE GROUP= "M-1"

INSERT INTO Information VALUES (980101، "IVANOV I. I."، 1980، "HUSBAND")

DELETE FROM Details WHERE NOMZ=980201

به روز رسانی مجموعه اطلاعات نام کامل = "KRAVTSOVA I. I." WHERE NOMZ=980201

SELECT * FROM Information WHERE FULL NAME="SIDOROV S. S." OR FULL NAME="PETROV P. P."

54. انواع داده ها و عباراتبرای دسترسی به جدول رابطه ای در SQL، باید یک دستور بنویسید (مشخص کنید). انتخاب (انتخاب)کلمه کلیدیبه DBMS می گوید که این دستور چه عملی را انجام خواهد داد. دستورات پرس و جو با یک کلمه کلیدی شروع می شوند. علاوه بر SELECT، اینها می توانند کلمات باشند ايجاد كردن-ايجاد كردن، درج کنید-درج، حذف- حذف، مرتکب شدن- کامل و غیره

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

جایی که یک کلمه کلیدی به دنبال یک گزاره - شرطی که بر ورودی جدول تحمیل می شود که باید آن را برآورده کند تا در انتخاب گنجانده شود.

سفارش توسط -مرتب سازی رکوردهای نمایش داده شده (صعود - صعودی، نزولی - نزولی. اگر نوع مرتب سازی مشخص نشده باشد، مرتب سازی به ترتیب صعودی انجام می شود).

CHAR(طول) CHARACTER(طول)رشته های کاراکتر با طول ثابت

INTEGER INTتمام اعداد

کوچکعدد صحیح کوچک

NUMERIC(دقت، درجه) DECIMAL(دقت، درجه DEC(دقت، درجه)شماره نقطه ثابت

شناور (دقت)عدد ممیز شناور

دقت دو برابراعداد با قفل شناور، دقت بالا

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

ثابت هابرای نشان دادن مقادیر خاص داده استفاده می شود. ثابت های نقطه ثابتبه عنوان مثال: 21 -375.18 62.3

ثابت های ممیز شناور،به عنوان مثال: 1.5E7 -3.14E9 2.5E-6 0.783E24

ثابت های رشته ایباید در یک نقل قول محصور شود. نمونه هایی از این ثابت ها: "مینسک" "نیویورک" "ایوانف I. I."

مقدار از دست رفته(خالی). SQL از مدیریت داده های از دست رفته با استفاده از مفهوم مقدار گمشده پشتیبانی می کند.

اکثر DBMS های SQL گرا از به اصطلاح پشتیبانی می کنند توابع جمع (کل).. توابع انبوه متداول شامل موارد زیر است:

· شمردن- تعداد مقادیر در ستون جدول؛

· جمع- مجموع مقادیر در ستون؛

· AVG- میانگین حسابی مقادیر موجود در ستون؛

· حداکثر- حداکثر مقدار در ستون؛

· MIN- حداقل مقدار در ستون

از عبارات زیر می توان استفاده کرد: انواع اپراتور:

· حسابی: + (اضافه) - (منها کردن)، * (ضرب)، / (تقسیم)؛

· ارتباط: = (برابر)، > (بزرگتر)،< (меньше), >= (بزرگتر یا مساوی)،<= (меньше или равно), <>(نا برابر)؛

· بازی فکری: و(منطقی "AND")، یا("OR" منطقی)، نه(نفی منطقی)؛

56. دستورات کنترل تراکنشبه شما امکان می دهد از یکپارچگی پایگاه داده اطمینان حاصل کنید.

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

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

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

57. برای دسترسی به دستورات کنترلاینها دستوراتی برای انجام توابع مدیریتی هستند که حق (امتیاز) استفاده از جداول پایگاه داده به روشی خاص را اختصاص یا لغو می کنند. هر کاربر پایگاه داده دارای حقوق خاصی در رابطه با اشیاء پایگاه داده است.

حقوق– اینها اقداماتی با یک شی هستند که کاربر می تواند انجام دهد. حقوق می تواند در طول زمان تغییر کند: موارد قدیمی را می توان لغو کرد، موارد جدید را می توان اضافه کرد. حقوق زیر ارائه می شود:

· INSERT - حق اضافه کردن داده ها به جدول.

· به روز رسانی - حق تغییر داده های جدول.

· DELETE - حق حذف داده ها از جدول.

· مراجع - حق تعریف کلید اصلی.

58 تعبیه زبان در برنامه های کاربردی..به توکاراینها دستوراتی هستند که برای پیاده سازی دسترسی به پایگاه داده از برنامه های کاربردی نوشته شده در یک زبان برنامه نویسی خاص طراحی شده اند.

زبان پرس و جو ساختاریافته یا SQLیک زبان برنامه نویسی اعلامی برای استفاده در پایگاه داده های شبه رابطه ای است. بسیاری از ویژگی‌های اصلی SQL از حساب چندگانه گرفته شده‌اند، اما الحاقات اخیر به SQL شامل جبر رابطه‌ای بیشتر و بیشتر می‌شود.
SQL در ابتدا توسط IBM ایجاد شد، اما بسیاری از فروشندگان گویش های خود را توسعه داده اند. این استاندارد توسط مؤسسه استاندارد ملی آمریکا (ANSI) در سال 1986 و ISO در سال 1987 به تصویب رسید. در استاندارد زبان برنامه نویسی SQL، ANSI بیان کرد که تلفظ رسمی SQL "es q el" است. با این حال، بسیاری از متخصصان پایگاه داده از تلفظ "عامیانه" "Sequel" استفاده کردند که نشان دهنده نام اصلی زبان، Sequel است که بعداً به دلیل تضاد علامت تجاری و نام با IBM تغییر یافت. برنامه نویسی برای مبتدیان.
زبان برنامه نویسی SQLدر سال 1992 بازنگری شد و این نسخه با نام SQL-92 شناخته می شود. سپس سال 1999 دوباره مورد بازنگری قرار گرفت و به SQL:1999 (AKA SQL3) تبدیل شد. برنامه نویسی برای آدمک ها SQL 1999 از اشیایی پشتیبانی می‌کند که قبلاً در نسخه‌های دیگر پشتیبانی نمی‌شدند، اما تا اواخر سال 2001، تنها چند سیستم مدیریت پایگاه داده از پیاده‌سازی SQL پشتیبانی می‌کردند: SQL 1999.
SQL اگرچه به عنوان ANSI و ISO تعریف می شود، اما دارای تغییرات و پسوندهای زیادی است که اکثر آنها ویژگی های خاص خود را دارند، مانند پیاده سازی Oracle Corporation "PL/SQL" یا Sybase و پیاده سازی Microsoft به نام "Transact-SQL" که می تواند گیج کننده باشد. کسانی که با اصول برنامه نویسی آشنا هستند همچنین غیرمعمول نیست که پیاده‌سازی‌های تجاری پشتیبانی از ویژگی‌های اصلی استاندارد، مانند انواع داده‌ها مانند تاریخ و زمان را حذف کنند و برخی از انواع خود را ترجیح می‌دهند. در نتیجه، برخلاف ANSI C یا ANSI Fortran که معمولاً می‌توانند از پلتفرم به پلتفرم بدون تغییرات ساختاری عمده منتقل شوند، پرس‌وجوهای زبان برنامه‌نویسی SQL به ندرت می‌توانند بین سیستم‌های پایگاه داده مختلف بدون تغییرات قابل‌توجه منتقل شوند. اکثر افراد در صنعت پایگاه داده معتقدند که این عدم سازگاری عمدی است، تا هر توسعه دهنده سیستم مدیریت پایگاه داده خود را ارائه دهد و خریدار را به یک پایگاه داده خاص گره بزند.
همانطور که از نام آن پیداست، زبان برنامه نویسی SQL برای اهداف خاص و محدود طراحی شده است - پرس و جو از داده های موجود در یک پایگاه داده رابطه ای. به این ترتیب، این مجموعه ای از دستورالعمل های زبان برنامه نویسی برای ایجاد نمونه های داده است، به جای یک زبان رویه ای مانند C یا BASIC، که برای حل طیف وسیع تری از مسائل طراحی شده اند. پسوندهای زبانی مانند "PL/SQL" برای حل این محدودیت با افزودن عناصر رویه ای به SQL و در عین حال حفظ مزایای SQL طراحی شده اند. روش دیگر این است که دستورات زبان برنامه نویسی رویه ای را در پرس و جوهای SQL جاسازی کنیم و با پایگاه داده تعامل داشته باشیم. به عنوان مثال، اوراکل و دیگران از جاوا در پایگاه داده پشتیبانی می کنند، در حالی که PostgreSQL اجازه می دهد توابع به زبان های Perl، Tcl یا C نوشته شوند.
یک شوخی در مورد SQL: "SQL نه ساختار یافته است و نه یک زبان." نکته شوخی این است که SQL یک زبان تورینگ نیست. .

* از T را انتخاب کنید
C1 C2
1 آ
2 ب
C1 C2
1 آ
2 ب
C1 را از T انتخاب کنید
C1
1
2
C1 C2
1 آ
2 ب
* از T را انتخاب کنید که C1=1 است
C1 C2
1 آ

با توجه به جدول T، کوئری Select * from T تمام عناصر تمام ردیف های جدول را نمایش می دهد.
از همان جدول، کوئری Select C1 از T عناصر ستون C1 تمام سطرهای جدول را نمایش می دهد.
از همان جدول، پرس و جو Select * از T که در آن C1=1 همه عناصر تمام سطرها را نشان می دهد که مقدار ستون C1 "1" است.

کلمات کلیدی SQL

کلمات SQL به چند گروه تقسیم می شوند.

اولی است زبان دستکاری داده یا DML(زبان مدیریت داده). DML زیرمجموعه ای از زبانی است که برای پرس و جو از پایگاه داده و افزودن، به روز رسانی و حذف داده ها استفاده می شود.

  • SELECT یکی از متداول ترین دستورات DML است که به کاربر اجازه می دهد تا یک پرس و جو را به عنوان شرح مجموعه ای از نتیجه مورد نظر مشخص کند. پرس و جو مشخص نمی کند که نتایج چگونه باید مرتب شوند - ترجمه پرس و جو به فرمی که می تواند در پایگاه داده اجرا شود، وظیفه سیستم پایگاه داده، به طور خاص تر بهینه ساز پرس و جو است.
  • INSERT برای افزودن ردیف ها (مجموعه رسمی) به جدول موجود استفاده می شود.
  • UPDATE برای تغییر مقادیر داده ها در یک ردیف جدول موجود استفاده می شود.
  • DELETE ردیف های موجود را مشخص می کند که از جدول حذف می شوند.

می توان گفت که سه کلمه کلیدی دیگر در گروه DML قرار می گیرند:

  • BEGIN WORK (یا شروع معامله، بسته به گویش SQL) را می توان برای علامت گذاری شروع یک تراکنش پایگاه داده استفاده کرد که یا همه را کامل می کند یا اصلاً اجرا نمی شود.
  • COMMIT بیان می کند که تمام تغییرات داده های ایجاد شده پس از انجام عملیات ذخیره می شوند.
  • ROLLBACK مشخص می‌کند که تمام تغییرات داده‌ها پس از آخرین commit یا rollback باید از بین بروند، تا جایی که در پایگاه داده به عنوان "بازگشت" ثبت شده است.

COMMIT و ROLLBACK در زمینه هایی مانند کنترل تراکنش ها و قفل کردن استفاده می شود. هر دو دستورالعمل تمام تراکنش‌های جاری (مجموعه‌های عملیات روی پایگاه داده) را تکمیل می‌کنند و تمام قفل‌های تغییر داده‌ها را در جداول حذف می‌کنند. وجود یا عدم وجود یک BEGIN WORK یا عبارت مشابه به پیاده سازی SQL خاص بستگی دارد.

دسته دوم از کلمات کلیدی متعلق به گروه است زبان تعریف داده یا DDL (زبان تعریف داده). DDLبه کاربر اجازه می دهد تا جداول جدید و عناصر مرتبط با آنها را تعریف کند. اکثر پایگاه های داده تجاری SQL دارای پسوندهای DDL خود هستند که امکان کنترل عناصر غیر استاندارد، اما معمولاً حیاتی یک سیستم خاص را فراهم می کند.
نکات اصلی DDL دستورات ایجاد و حذف هستند.

  • CREATE اشیاء (مانند جداول) را که در پایگاه داده ایجاد می شوند را مشخص می کند.
  • DROP مشخص می کند که کدام اشیاء موجود در پایگاه داده معمولاً به طور دائم حذف خواهند شد.
  • برخی از سیستم های پایگاه داده نیز از دستور ALTER پشتیبانی می کنند که به کاربر اجازه می دهد یک شی موجود را به روش های مختلف تغییر دهد، مانند اضافه کردن ستون ها به جدول موجود.

سومین گروه از کلمات کلیدی SQL هستند زبان کنترل داده یا DCL (زبان کنترل داده). DCLمسئولیت حقوق دسترسی به داده ها را بر عهده دارد و به کاربر اجازه می دهد تا کنترل کند چه کسی برای مشاهده یا دستکاری داده ها در پایگاه داده دسترسی دارد. در اینجا دو کلمه کلیدی اصلی وجود دارد:

  • GRANT - به کاربر اجازه می دهد تا عملیات را انجام دهد
  • Revoke - توانایی کاربر برای انجام عملیات را حذف یا محدود می کند.

سیستم های پایگاه داده با استفاده از SQL

  • InterBase
  • MySQL
  • اوراکل
  • PostgreSQL
  • SQL Server

چگونه یک متخصص توسعه وب سایت شویم و شروع به کسب درآمد کنیم؟ دوره های ویدیویی ارزان با مقدمه مقدماتی.

بهترین مقالات در این زمینه