آموزش SQL Server – مقدماتی

SQL یا Structured Query Language یک زبان دامنه ای خاص است که در برنامه نویسی استفاده می شود و برای مدیریت داده های موجود در یک RDBMS (relational database management system یا مدیریت پایگاه داده رابطه ای) یا RDSMS (relational data stream management system یا سیستم مدیریت جریان داده های رابطه ای) به کار می رود. این زبان یک زبان پرس و جوی ساختاریافته و یک زبان برنامه نویسی استاندارد شده است که برای مدیریت پایگاه داده های رابطه ای و انجام عملیات های مختلف بر روی داده های موجود در آن ها استفاده می شود. از این رو آموزش SQL اهمیت دارد.این ویژگی SQL در مدیریت داده های ساخت یافته، یعنی داده هایی که روابط بین موجودیت ها و متغیرها را در بر می گیرد، مفید است. SQL دو مزیت اصلی نسبت به سایر API های خواندن/نوشتن قدیمیتر مانند ISAM یا VSAM دارد:
- مفهوم دسترسی داشتن به تعداد زیادی از رکوردها را با یک فرمان را معرفی می کند.
- نیاز به مشخص کردن چگونگی دستیابی به یک رکورد را از بین می برد، به عنوان مثال با اندیس یا بدون اندیس.
SQL که در اصل بر اساس جبر رابطهای و حساب رابطهای چندگانه استوار است، شامل انواع مختلفی از اصطلاح ها است، که ممکن است به عنوان زیرزبانها (sublanguages) طبقهبندی شوند، مانند:
- data query language (DQL) (یک زبان کوئری داده)
- data definition language (DDL) (یک زبان تعریف داده)
- data control language (DCL) (یک زبان تعریف داده)
- data manipulation language (DML) (زبان دستکاری داده ها)
دامنه SQL شامل پرس و جوی داده ها (data query)، دستکاری داده ها (درج، به روز رسانی و حذف)، تعریف داده ها (ایجاد و ویرایش schema ها) و کنترل دسترسی به داده ها است.SQL Server یک سیستم مدیریت پایگاه داده رابطهای یا RDBMS است که توسط مایکروسافت توسعه یافته و به بازار عرضه شدهاست. SQL Server به عنوان یک سرور پایگاه داده، یک محصول نرمافزاری است که وظیفه اصلی ذخیره و بازیابی دادهها را طبق درخواست سایر برنامههای نرمافزاری دارد. در این دوره علاوه بر SQL Server، به طور کامل به آموزش SQL نیز پرداخته میشود.
در مدل رابطهای دادهها، زبان پرسمان ساختیافته (به انگلیسی: Structured Query Language) با کوتهنوشت SQL نوعی زبان خاص دامنه در برنامهنویسی است که برای مدیریت دادههای نگهداریشده در سیستم مدیریت پایگاهداده رابطهای (RDBMS) یا برای پردازشهای جریانی در سیستم مدیریت جریان داده رابطهای (RDSMS) طراحی شدهاست.این زبان مخصوصاً برای رسیدگی به داده ساختیافته مفید میباشد (یعنی دادهای که رابطه بین موجودیتها و متغیرها را در خود گنجاندهاست).
SQL دو مزیت اصلی نسبت به رابطهای کاربردی خواندن-نوشتن قدیمی تر مثل ISAM یا VSAM دارد: اولا، SQL مفهوم دسترسی به چندین رکورد با یک دستور منفرد را معرفی کردهاست، و دوما SQL نیاز به تعیین آنکه «چگونه» باید به یک رکورد رسید را حذف نمودهاست (مثلا با یا بدون یک اندیس). قلمرو SQL شامل پرسمان داده، دستکاری داده (ورود، به روزرسانی، و حذف)، تعریف داده (تولید طرحواره و دستکاری آن) و کنترل دسترسی به داده میشود. اگرچه SQL در اساس نوعی زبان اعلانی است (۴GL)، این زبان عناصر رویهای نیز دارد.مهمترین ویژگی هایی که برای SQL Server می توان نام برد عبارتند از:
- بانک اطلاعاتی آن از نوع رابطه ای یا relational است.
- از فایل های XML پشتیبانی می کند.
- ویژگی OLAP را دارد.
- می توان از trigger، view و stored procedure استفاده کرد.
- از لحاظ حجم و تعداد رکورد هیچ محدودیتی ندارد و از این لحاظ بسیار قدرتمند است.
- امکان استفاده از زبان طبیعی در جستجو ها وجود دارد.
- برای افزایش سرعت در بازیابی اطلاعات از Full Text Search می توان استفاده کرد.
تاریخچه SQL
SQL در IBM توسط Donald D. Chamberlin و Raymond F. Boyce در اوایل دهه 1970 توسعه یافت. این نسخه که در ابتدا زبان پرس و جوی ساختاریافته نام داشت، برای دستکاری و بازیابی داده های ذخیره شده در سیستم مدیریت پایگاه داده شبه رابطه ای اصلی IBM و System R، که گروهی در آزمایشگاه تحقیقاتی IBM San Jose در طول دهه 1970 توسعه داده بودند، طراحی شد.پس از آزمایش SQL در سایتهای آزمایشی ویژه مشتریان برای تعیین سودمندی و کاربردی بودن سیستم، IBM شروع به توسعه محصولات تجاری بر اساس نمونه اولیه System R خود، از جمله System/38، SQL/DS و DB2 کرد که در سالهای 1979، 1981 به صورت تجاری در دسترس قرار گرفت.
اگرچه SQL یک استاندارد ANSI/ISO است، اما نسخه های مختلفی از زبان SQL وجود دارد. با این حال، برای انطباق با استاندارد ANSI، همه آن ها حداقل از دستورات اصلی مانند SELECT ،UPDATE ،DELETE ،INSERT ،WHERE به روشی مشابه پشتیبانی می کنند.تا سال 1986، گروه های استاندارد ANSI و ISO به طور رسمی تعریف زبان استاندارد SQL را پذیرفتند. نسخه های جدید استاندارد شده در سال های 1989، 1992، 1996، 1999، 2003، 2006، 2008، 2011 و اخیرا در سال 2016 منتشر شدند.
SQL چگونه کار میکند؟
حجم زیادی از داده ها را مدیریت می کند، به خصوص اگر داده های زیادی وجود داشته باشد که به طور همزمان نوشته می شوند و تراکنش های داده بسیار زیاد باشد.نسخه ها و فریمورک های مختلفی برای SQL وجود دارد که رایج ترین آن ها MySQL است. MySQL یک راه حل منبع باز است که به تسهیل نقش SQL در مدیریت داده های back-end برای برنامه های کاربردی وب کمک می کند.
شرکت هایی مانند فیس بوک، اینستاگرام، واتس اپ و غیره همگی از SQL برای ذخیره سازی داده ها و راه حل های پردازش داده ها استفاده می کنند. هنگامی که یک کوئری SQL نوشته و اجرا می شود (یا تجزیه می شود)، توسط یک بهینه ساز کوئری پردازش می شود. کوئری به سرور SQL فرستاده می شود و سپس در سه مرحله کامپایل می شود: تجزیه، اتصال و بهینه سازی.
- تجزیه (parsing): فرآیندی برای بررسی سینتکس
- اتصال (Binding): فرآیندی برای بررسی معنای کوئری
- بهینه سازی (Optimisation): فرآیندی برای تولید روش اجرای کوئری
در مرحله سوم، همه جایگشت ها و ترکیب های ممکن برای یافتن موثرترین روش اجرای کوئری در یک زمان معقول ایجاد می شوند. هرچه کوئری کوتاه تر باشد، بهتر است.
دستور زبان
زبان SQL به چندین عنصر زبانی تقسیم می شود که عبارتند از:
- Clauses : بندهایی که اجزای تشکیل دهنده عبارت ها و کوئری ها هستند. (در برخی موارد، این بندها اختیاری هستند)
- Expressions : عباراتی که می توانند مقادیر اسکالر یا جدول هایی متشکل از ستون ها و سطر ها را تولید کنند.
- Predicates : شرایطی را مشخص میکند که میتواند با منطق سه مقداری SQL (three-valued logic (3VL)) یعنی درست/نادرست/ناشناخته یا مقادیر بولی ارزیابی شوند و برای محدود کردن اثرات عبارت ها و کوئری ها یا تغییر جریان برنامه استفاده شوند.
- Queries: داده ها را بر اساس معیارهای خاص بازیابی می کنند. کوئری ها یک عنصر مهم از SQL هستند.
- Statements: بیانیههایی که ممکن است تاثیر دائمی روی schema ها و دادهها داشته باشند یا ممکن است تراکنشها، جریان برنامه، اتصالات، سشن ها یا تشخیصها را کنترل کنند.
- دستورات SQL همچنین شامل نقطه ویرگول (";") پایان دهنده عبارت هستند. اگرچه در هر پلتفرمی مورد نیاز نیست، اما به عنوان بخشی استاندارد از دستور زبان SQL تعریف شده اند.
- فضای خالی ناچیز به طور کلی در عبارات و پرس و جوهای SQL نادیده گرفته می شود و قالب بندی کد SQL را برای خوانایی آسان تر می کند.
مهم ترین دستورهای SQL
- SELECT: داده ها را از پایگاه داده استخراج می کند.
- UPDATE: داده ها را در پایگاه داده به روز می کند.
- DELETE: داده ها را از پایگاه داده حذف می کند.
- INSERT INTO: داده های جدید را در پایگاه داده وارد می کند.
- CREATE DATABASE: یک پایگاه داده جدید ایجاد می کند.
- ALTER DATABASE: یک پایگاه داده را تغییر می دهد.
- CREATE TABLE: یک جدول جدید ایجاد می کند.
- ALTER TABLE: یک جدول را تغییر می دهد.
- DROP TABLE: یک جدول را حذف می کند.
- CREATE INDEX: یک اندیس ایجاد می کند (کلید جستجو).
- DROP INDEX: یک اندیس را حذف می کند.
نکته: کلمات کلیدی SQL به حروف بزرگ و کوچک حساس نیستند.
انواع داده های SQL
استاندارد SQL سه نوع نوع داده را تعریف می کند:
- انواع داده های از پیش تعریف شده
- انواع ساخته شده
- انواع تعریف شده توسط کاربر
انواع ساخته شده ARRAY، MULTISET، REF(erence) یا ROW هستند. انواع تعریفشده توسط کاربر با کلاسهای زبان های شیگرا، observer ها، جهشدهندهها، متدها، وراثت، overloading، رونویسی، رابطها و غیره قابل مقایسه هستند.
انواع داده های از پیش تعریف شده
o انواع کاراکترها
- Character (CHAR)
- Character varying (VARCHAR)
- Character large object (CLOB)
o انواع کاراکترهای National
- National character (NCHAR)
- National character varying (NCHAR VARYING)
- oNational character large object (NCLOB)
o انواع باینری
- Binary (BINARY)
- Binary varying (VARBINARY)
- Binary large object (BLOB)
o انواع عددی
- Exact numeric types (NUMERIC, DECIMAL, SMALLINT, INTEGER, BIGINT)
- Approximate numeric types (FLOAT, REAL, DOUBLE PRECISION)
- Decimal floating-point type (DECFLOAT)
o انواع زمانی یا Datetime types (DATE, TIME, TIMESTAMP)
Interval type (INTERVAL) o
Boolean o
oXML o
JSON o
SQL چه کاری می تواند انجام دهد؟
- SQL می تواند کوئری ها را در پایگاه داده اجرا کند.
- SQL می تواند داده ها را از پایگاه داده بازیابی کند.
- SQL می تواند رکوردها را در پایگاه داده وارد کند.
- SQL می تواند رکوردهای موجود در پایگاه داده را به روز کند.
- SQL می تواند رکوردها را از پایگاه داده حذف کند.
- SQL می تواند پایگاه داده جدیدی ایجاد کند.
- SQL می تواند جدول جدید در پایگاه داده ایجاد کند.
- SQL می تواند رویه های ذخیره شده را در یک پایگاه داده ایجاد کند.
- SQL می تواند View (نماها) را در پایگاه داده ایجاد کند.
- SQL می تواند مجوزها را روی جدول ها، رویه ها و نماها تنظیم کند.
پایگاه داده چیست؟
پایگاه داده یا Database به مجموعهای از اطلاعات با ساختار منظم گفته میشود. این پایگاههای اطلاعاتی معمولاً در قالبی که برای دستگاهها و رایانهها قابل خواندن و قابل دسترسی باشند، ذخیره میشوند.در دنیای امروز که حجم اطلاعات مورد پردازش و تولیدشده با سرعت بالایی در حال افزایش است، وجود ساختار مشخصی برای دیتابیسها بیش از هر زمانی حس میشود. در دهه 70 گروهی از شرکت IBM بر روی سیستم پایگاه دادهی سیستم R کار میکردند و زبان SQL را به منظور عملیات و بازیابی اطلاعات ذخیرهشده در سیستم R ایجاد کردند.
اما در کنار زبان، وجود یک سیستم مدیریت دیتابیس نیز به شدت حس میشد و این عاملی شد بر به وجود آمدن نرمافزارهایی مانند SQL Server که محیطی کاربرپسند و مناسب را در اختیار متخصصان دیتا قرار داده است. قدرت و راحتی کار با این نرمافزار منجر شد تا به یکی از نرمافزارهای محبوب در این زمینه تبدیل شود.در تعریف پایگاه داده باید بگوییم که دیتابیس در واقع مجموعهای از اطلاعات سازمان یافته است که با توجه به قوانین خاصی کنار یکدیگر قرار گرفتهاند. به زبانی دیگر اگر بخواهیم توضیح دهیم، وقتی که اطلاعات زیادی را با نظم و سازماندهی خاصی در کنار یکدیگر قرار میدهیم، بانک اطلاعاتی یا database ساختهایم.
در حوزهی برنامهنویسی و IT منظور از پایگاه داده محلی است که ما اطلاعات مربوط به نرمافزار یا وبسایت خود را ذخیره نمودهایم. پایگاه داده میتواند به کاربر این فرصت را بدهد که در زمان کمتر و دسترسی آسانتر، اطلاعات مورد نظر خود را پیدا کنند.دیتابیس به شما کمک میکند که اطلاعاتی که قصد جمعآوری دارید را با نظم و دقت بالاتری ذخیره نمایید. همچنین استفاده از پایگاه داده به ما مزایایی را اعطا میکند که چند مورد آن به شرح زیر است:
- استقلال اطلاعات
- حذف پیشامدهای تکراری
- بالا رفتن امنیت
- امکان دریافت نسخهی پشتیبان از دادهها
یکی از استفادههای بسیار زیادی که از پایگاه داده میشود، مدیریت دادهها در نرمافزارها است. حال قصد داریم مثالی برای درک بهتر پایگاه داده برای شما ذکر کنیم. برای این منظور وبسایت مکتبخونه را در نظر بگیرید:
- مکتب خونه دارای جدولی از اطلاعات کاربران ثبت نامی در database خود است.
- تمام مقالات و پستهای وبسایت در بخشی جداگانه به عنوان مجله مکتوب ذخیره میشود.
- در دسته بندیهای مختلف سایت مکتبخونه ویدیوهای آموزشی و دورههای آموزشی دانشگاههای معتبر نگهداری میشوند.
- هر بخش از این اطلاعات در جداولی به صورت کاملا منظم دستهبندی میشود و ممکن است این اطلاعات برای کاربر قابل نمایش باشد یا اینکه قابلیت نمایشی نداشته باشد.
- هر کدام از جداول مکتب خونه دارای ویژگیهای گوناگونی از موجودیتها هستند که پایگاه دادهی سایت مکتبخونه را شکل میدهند.
هر کدام از این جداولی که برای شما توضیح دادیم دارای نظم و سازماندهی بسیار دقیقی هستند و به صورت کاملا دقیق مدیریت میشوند، حال فرض کنید که اگر پایگاه دادهای وجود نداشت چه اتفاقی ممکن بود برای سایت مکتبخونه بیفتد.پایگاه داده دارای اجزای گوناگونی است که هر کدام از این قسمتها وظیفهی سازماندهی دادهها را دارند. هر کدام از این بخشها دارای نام جداگانهای هستند که میتوانیم موارد زیر را بیان نماییم:
- جدول (table)
- ستون یا مشخصه (attribute or column)
- ردیف یا سطر (row)
- نوع یا دامنه (domain or type)
- موجودیت (entity)
طراحی پایگاه داده نیاز به دانش و تخصص کافی در زمینهی عملکرد DBMSها دارد و افراد مختلفی در طراحی و مدیریت یک پایگاه داده نقش ایفا میکنند. این افراد را میتوان در شاخهها زیر دستهبندی نماییم:
- طراح پایگاه داده (Database Designer)
- مدیر پایگاه داده (Database Administrator)
- برنامهنویسان پایگاه داده (Database Programmers)
باید حتما خاطرنشان کنیم که هرکدام از این افراد ممکن است با مشکلات گوناگونی در زمینه طراحی پایگاه داده مواجه شوند که چند نمونه از این مشکلات برای شما بیان میکنیم:
- انتخاب نامناسب DBMS
- طراحی نامناسب پایگاه داده
- نامگذاری نامناسب جداول
- نداشتن منابع و رفرنسهای معتبر
- برطرف نکردن خطاهای احتمالی پایگاه داده
- نداشتن Primary key
- ورود تمام اطلاعات در یک جدول
- برقرار نکردن ارتباط مناسب میان جداول مختلف
پایگاه داده در اصل مجموعه ای سازمان یافته از اطلاعات است. این واژه از دانش رایانه سرچشمه می گیرد ،اما کاربر وسیع و عمومی نیز دارد، این وسعت به اندازه ای است که مرکز اروپایی پایگاه داده (که تعاریف خردمندانه ای برای پایگاه داده ایجاد می کند) شامل تعاریف غیر الکترونیکی برای پایگاه داده می باشد. در این نوشتار به کاربرد های تکنیکی برای این اصطلاح محدود می شود.یک تعریف ممکن این است که: پایگاه داده مجموعه ای از رکورد های ذخیره شده در رایانه با یک روش سیستماتیک (اصولی) مثل یک برنامه رایانه ای است که می تواند به سوالات کاربر پاسخ دهد. برای ذخیره و بازیابی بهتر، هر رکورد معمولا به صورت مجموعه ای از اجزای داده ای یا رویداد ها سازماندهی می گردد.
بخش های بازیابی شده در هر پرسش به اطلاعاتی تبدیل می شود که برای اتخاذ یک تصمیم کاربرد دارد. برنامه رایانه ای که برای مدیریت و پرسش و پاسخ بین پایگاه های داده ای استفاده می شود را مدیر سیستم پایگاه داده ای یا به اختصار (DBMS) می نامیم. خصوصیات و طراحی سیستم های پایگاه داده ای در علم اطلاعات مطالعه می شود.مفهوم اصلی پایگاه داده این است که پایگاه داده مجموعه ای از رکورد ها یا تکه هایی از یک شناخت است. نوعا در یک پایگاه داده توصیف ساخت یافته ای برای موجودیت های نگه داری شده در پایگاه داده وجود دارد: این توصیف با یک الگو یا مدل شناخته می شود. مدل توصیفی، اشیا پایگاه های داده و ارتباط بین آنها را نشان می دهد. روش های متفاوتی برای سازماندهی این مدل ها وجود دارد که به آنها مدل های پایگاه داده گوییم.
پرکاربرد ترین مدلی که امروزه بسیار استفاده می شود، مدل رابطه ای است که به طور عام به صورت زیر تعریف می شود: نمایش تمام اطلاعاتی که به فرم جداول مرتبط که هریک از سطر ها و ستون ها تشکیل شده است (تعریف حقیقی آن در علم ریاضیات برسی می شود). در این مدل وابستگی ها به کمک مقادیر مشترک در بیش از یک جدول نشان داده می شود. مدل های دیگری مثل مدل سلسله مراتب و مدل شبکه ای به طور صریح تری ارتباط ها را نشان می دهند.در مباحث تخصصی تر اصطلاح دادگان یا پایگاه داده به صورت مجموعه ای از رکورد های مرتبط با هم تعریف می شود. بسیاری از حرفه ای ها مجموعه ای از داده هایی با خصوصیات یکسان به منظور ایجاد یک پایگاه داده ای یکتا استفاده می کنند.
معمولا DBMS ها بر اساس مدل هایی که استفاده می کنند تقسیم بندی می شوند: ارتباطی،شی گرا، شبکه ای و امثال آن. مدل های داده ای به تعیین زبانهای دسترسی به پایگاه های داده علاقه مند هستند. بخش قابل توجهی از مهندسی DBMS مستقل از مدل های می باشد و به فاکتور هایی همچون اجرا، همزمانی،جامعیت و بازیافت از خطاهای سخت افزاری وابسطه است.در این سطح تفاوت های بسیاری بین محصولات وجود دارد.هر database در اسکیوال از قسمتهای مختلفی تشکیل شده است،این بخشها شامل موارد زیر است :
- Table
- View
- Stored procedre
- Function و ...
افزونه های رویه ای
SQL برای یک هدف خاص طراحی شده است: پرس و جو یا کوئری از داده های موجود در یک پایگاه داده رابطه ای. SQL یک زبان برنامه نویسی مبتنی بر مجموعه و تعریفی است، نه یک زبان برنامه نویسی مانند C یا BASIC. با این حال می توان با افزودن extension ها به SQL قابلیتهای زبان های برنامهنویسی رویهای، مانند ساختارهای کنترل جریان را به آن اضافه کنیم.
علاوه بر پسوندهای استاندارد SQL/PSM و پسوندهای اختصاصی SQL، قابلیت برنامهریزی رویهای و شی گرا در بسیاری از پلتفرمهای SQL از طریق یکپارچهسازی DBMS با زبانهای دیگر در دسترس است. استاندارد SQL پسوندهای SQL/JRT را برای پشتیبانی از کد جاوا در پایگاههای داده SQL تعریف میکند. Microsoft SQL Server 2005 از SQLCLR (SQL Server Common Language Runtime) برای میزبانی دات NET مدیریت شده در پایگاه داده استفاده می کند.
Table چیست ؟
جدول ( table ) در پایگاه داده ها چیست ؟ داده ها در دیتابیس یا پایگاه داده داخل جدول یا table ها ذخیره میشوند. هر database میتواند شامل چندین table باشد .هر جدول از تعدادی سطر و ستون تشکیل شده است.برای تمام ستون ها در دیتابیس بسته به نوع کارکرد آن میتوانید نوع مورد نظر خود را تعریف کنید ، مقدارهایی که درون هر فیلد ذخیره میشود بایستی با نوع انتخابی فیلد مطابقت داشته باشد.
جدول یک مجموعه ای است از اطلاعات ثبت شده مرتبط و وابسته به هم که از ستون ها و ردیف ها تشکیل شده است. جداول مهمترین عناصر سیستم های پایگاه داده هستند ، که برای ذخیره و نگهداری سازمان یافته اطلاعات مورد استفاده قرار می گیرند .جدول بخشی از پایگاه داده است. یک پایگاه داده از جداول مختلف تشکیل شده است.
مثال : برای ذخیرهسازی انواع مختلف داده ها شما نیازمند ایجاد جداول جداگانهای هستید. برای مثال، اگر شما یک نرم افزار مدیریت مدرسه دارید، ممکن است نیاز به ایجاد جداول زیر باشد:
Field چیست ؟
به هر یک از خانه های ستون یک جدول فیلد ( Field ) می گویند . هر فیلد یکی از خصوصیات آن موجودیت را به همراه مقدار آن مشخص می کند .هر فیلد در بر گیرنده یک صفت و ویژگی برای موجودیت می باشد ، که دارای 2 جزء اصلی است :
- اسم صفت خاصه : نام صفت مورد نظر را تعیین می کند . برای مثال فیلد نام ، نام خانوادگی ، و ... در جدول اطلاعات مربوط به شخص.
- مقدار صفت خاصه : در برگیرنده مقدار برای صفت مورد نظر است . برای مثال مقدار " سعید " به عنوان مقدار برای فیلد نام
یک فیلد نشانه یک ستون در جدول است. یک رکورد مجموعه ای از فیلدها است. تمام رکوردها در همان جدول همان فیلدها راخواهند داشت.
o مثال درباره فیلدها : اگر شما یک جدول با نام “Students” داشته باشید، ممکن است زمینه های زیر مورد نیاز باشند:
- Name – برای ذخیره نام و نام خانوادگی دانش آموزان
- Address – برای ذخیره آدرس
- DateofBirth - برای ذخیره تاریخ تولد دانش آموزان
- RegistrationDate – برای ذخیره تاریخ ثبت نام دانش آموز و ...
اگر شما فیلدی را به جدول اضافه کنید، این فیلد به تمام رکوردهای موجود آن جدول اضافه خواهد شد. در مثال فوق، تمامی رکوردهای جدول در “Students” همان ۴ فیلد را خواهند داشت.
Record چیست ؟
رکورد در پایگاه داده چیست ؟ به سطرهای یک جدول رکورد ( Record ) گفته میشود. هر رکورد مجموعه ای از اطلاعات طبقه بندی شده درباره یک موجودیت خاص است .
موجودیت
موجودیت پدیده ، شی یا فردی در محیط پایگاه داده است که می خواهیم اطلاعات مربوط به آن را نگهداری کنیم .
مثال : به طور مثال در محیط پایگاه داده یک محیط آموزشی، انواع موجودیت ها عبارتند از : دانشجو ، کلاس ، واحدهای درسی ، استاد ، دانشکده و … .یک رکورد نشان دهنده یک ورودی در جدول است. یک جدول می تواند هر تعداد رکورد داشته باشد.
o مثال از رکورد در پایگاه داده :
داده : اگر شما جدول “Students” برای ذخیره اطلاعات دانش آموزان داشته باشید، در این جدول یک رکورد نشان دهنده یک دانش آموز خواهد بود. برای اضافه کردن دانش آموز به برنامه، باید یک رکورد به جدول “Students” اضافه کنید. برای پاک کردن یا ویرایش اطلاعات دانش آموز هم باید شما یک رکورد را از این جدول حذف کنید.
View ها :
یک view یک مجموعه نتایج SQL است که در پایگاه داده همراه با یک برچسب ذخیره می شوند، بنابراین می توانید بعدا بدون نیاز به اجرای دوباره کوئری به آن بازگردید. viewها زمانی مفید هستند که یک کوئری SQL پرهزینه و سنگین داشته باشید. بنابراین به جای این که کوئری را بارها و بارها اجرا کنید تا مجموعه نتایج یکسانی ایجاد کند، میتوانید فقط یک بار این کار را انجام دهید و آن را به عنوان view ذخیره کنید. دستور کلی استفاده از آن به شکل زیر است:
CREATE VIEW view_name AS
SELECT column1, column2…..
FROM table_name
WHERE condition;
view_name: Name for the View
table_name: Name of the table
condition: Condition to select rows
کلیدهای اصلی (Primary) و خارجی (Foreign)
معمولا در یک پایگاه داده رابطهای، دادهها در جداول مختلفی که از ویژگیها (ستونها) و رکوردها (سطرها) ساخته شدهاند، سازماندهی میشوند. در هر جدول یک ستون وجود دارد که نشان دهنده کلید اصلی است. هر ورودی نشان دهنده یک سطر در آن جدول است. این ستون معمولا ID است. ستونی در جدول که از طریق مقادیر مشترک با کلید اصلی جدول دیگر ارتباط برقرار می کند، کلید خارجی نامیده می شود. کلیدهای خارجی نیز معمولا دارای عنوان id هستند اما با نام جدول ارجاع شده اضافه می شوند.این مفهوم هنگام ترکیب دو یا چند جدول با استفاده از JOIN اعمال می شود.
JOIN (اتصال) جدول ها :
همان طور که می دانیم داده های جدول، مهم ترین بخش هر پایگاه داده SQL است. برای استفاده موثر از آن، مدیران پایگاه داده باید به طور منظم رکوردها را از چندین جدول بر اساس شرایط خاص استخراج کنند و در صورت لزوم ترکیب کنند. SQL JOIN دقیقا برای همین است.JOIN یک عبارت SQL است که برای بازیابی داده ها از دو یا چند جدول بر اساس روابط منطقی بین جدول ها استفاده می شود. JOIN ها نشان می دهد که چگونه SQL باید از داده های یک جدول برای انتخاب سطر های جدول دیگر استفاده کند.
انواع مختلف JOIN در SQL
SQL Server از انواع مختلف JOIN از جمله JOIN INNER، SELF JOIN، CROSS JOIN و OUTER JOIN پشتیبانی می کند. در واقع، هر نوع اتصال، نحوه ارتباط دو جدول را در یک کوئری تعریف می کند. اتصال بیرونی (OUTER JOIN) به نوبه خود می توانند به اتصال بیرونی چپ (LEFT OUTER JOINS)، اتصال بیرونی راست (RIGHT OUTER JOINS) و اتصال بیرونی کامل (FULL OUTER JOINS) تقسیم شوند. برای نشان دادن بهتر نحوه عملکرد JOIN ها، دو جدول ایجاد می کنیم.
CREATE TABLE AdventureWorks2019.dbo.users
auid INT IDENTITY
,username VARCHAR(50) NOT NULL
,password VARCHAR(50) NOT NULL
,createdate DATETIME NOT NULL
,isActive TINYINT NOT NULL
CREATE TABLE AdventureWorks2019.dbo.userprofile
apid INT NOT NULL
,auid INT NOT NULL
,firstname VARCHAR(50) NOT NULL
,lastname VARCHAR(50) NOT NULL
,email VARCHAR(100) NOT NULL
,phone VARCHAR(45) NOT NULL
در مرحله بعد باید داده ها را در جدول های ایجاد شده درج کنیم.
USE AdventureWorks2019
GO
Insert into dbo.users
(auid, username,password, createdate, isActive)
values
(1,’admin’,’pswrd123′, GETDATE(), 1);
Insert into dbo.userprofile
(apid, auid, firstname, lastname, email, phone)
values
(1,1,’Jack’, ‘Wolf’, ‘bettestroom@gmail.com’,’600075764216′);
Insert into dbo.users
(auid,username,password, createdate, isActive)
values
(2, ‘admin1′,’pass506’, GETDATE(), 1);
Insert into dbo.userprofile
(apid, auid, firstname, lastname, email, phone)
values
(2, 3, ‘Tom’, ‘Collins’, ‘tnkc@outlook.com’,’878511311054′);
Insert into dbo.users
(auid, username,password, createdate, isActive)
values
(4,’fox12′,’45@jgo0′, GETDATE(), 1);
Insert into userprofile
(apid, auid, firstname, lastname, email, phone)
values
(4,5,’Bill’, ‘Fonskin’, ‘bill_1290@gmail.com’,’450985764216′);
Insert into dbo.users
(auid,username,password, createdate, isActive)
values
(6, ‘lexus1267′,’98hnfRT6’, GETDATE(), 1);
Insert into dbo.userprofile
(apid, auid, firstname, lastname,) email, phone)
values
(7, 7, ‘John’, ‘Hopkins’, ‘john_hompkins@mailchimp.com’,’878511311054′);
SQL INNER JOIN
عبارت INNER JOIN رکوردهایی را برمی گرداند که دارای مقادیر منطبق در هر دو جدول باشند.
سینتکس INNER JOIN به صورت زیر است:
SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;
SQL OUTER JOIN
برخلاف OUTTER JOIN ،INNER JOIN نه تنها رکوردهای منطبق، بلکه موارد غیرمنطبق را نیز برمی گرداند. در صورت وجود سطرهای غیر منطبق در جدولی که از اتصال جدول های پیشین به دست آمده، مقادیر NULL برای آن ها نشان داده می شود. دو نوع OUTER JOIN در SQL Server وجود دارد: SQL LEFT JOIN و SQL RIGHT JOIN. بیایید نگاهی دقیق تر به هر یک از آن ها بیندازیم.
SQL LEFT JOIN
SQL LEFT JOIN همه رکوردها را از جدول سمت چپ (جدول A) و رکوردهای منطبق از جدول سمت راست (جدول B) را برمی گرداند. در صورت عدم تطابق، 0 رکورد از سمت جدول راست خواهیم داشت.
SELECT column_name(s)
FROM tableA
LEFT JOIN tableB
SQL RIGHT JOIN
کلمه کلیدی RIGHT JOIN همه رکوردها را از جدول سمت راست (جدول 2) و رکوردهای منطبق را از جدول سمت چپ (جدول 1) برمی گرداند. در صورت عدم تطابق، 0 رکورد از سمت چپ خواهیم داشت.
SELECT column_name(s)
FROM tableA
RIGHT JOIN tableB
ON tableA.column_name = tableB.column_name;
SQL FULL OUTER JOIN
FULL OUTER JOIN همه رکوردها را زمانی که یک تطابق در رکوردهای جدول چپ (جدول A) یا راست (جدول B) وجود دارد، برمی گرداند.
SELECT column_name(s)
FROM tableA
FULL OUTER JOIN tableB
ON tableA.column_name = tableB.column_name
WHERE condition;
SQL CROSS JOIN
SQL CROSS JOIN ، هم چنین به عنوان JOIN دکارتی شناخته می شود. این نوع از JOIN تمام ترکیب سطر ها را از هر جدول بازیابی می کند. در این نوع JOIN، در صورت عدم ارائه شرط اضافی، با ضرب دکارتی هر سطر از جدول A در تمام سطر های جدول B، مجموعه نتیجه برگردانده می شود
SELECT *
FROM tableA
CROSS JOIN tableB;
SQL Self JoIN
Self JoIN یک JOIN معمولی است، اما جدول با خودش پیوند میخورد. این به این معنی است که هر سطر از جدول با خودش و سپس با هر سطر دیگر از جدول ترکیب می شود.
SELECT column_name(s)
FROM table1 T1, table1 T2
WHERE condition;
دستورات DML و DDL در اس کیو ال
SQL به دو قسمت تقسیم میشود :
- زبان دستکاری داده ها DML (Data Manipulation Language)
- زبان تعریف داده ها DDL (Data Definition Language)
دستورات DML شامل بخش های زیر میشوند :
- SELECT واکشی اطلاعات از دیتابیس
- UPDATE ویرایش اطلاعات دیتابیس
- DELETE پاک کردن اطلاعات از دیتابیس
- INSERT INTO اضافه کردن اطلاعات جدید به دیتابیس
دستورات DDL شامل بخش های زیر میشوند :
- CREATE DATABASE ایجاد یک دیتابیس جدید
- ALTER DATABASE ایجاد تغییرات در دیتابیس
- CREATE TABLE ایجاد یک table جدید
- 4ALTER TABLE اعمال تغییرات در table
- DROP TABLE پاک کردن یک table
- CREATE INDEX ایجاد یک شاخصه
- DROP INDEX حذف یک شاخص
تعریف شاخصه
Index : شاخص عبارتست از یک شماره که به هر یک از فیلدها در سطرهای یک جدول اختصاص داده می شود . شاخص ها در پشت پرده جداول ایجاد شده و از دید کاربر کاملا مخفی هستند . استفاده از شاخص ها باعث می شود تا برنامه بتواند مقادیر سطرهای مختلف را بر حسب مقدار یک فیلد و بر حسب شماره شاخص آنها از کم به زیاد یا بر عکس مرتب کند و در عملیات جستجو باعث بالا رفتن سرعت جستجو می شود .
انواع داده و متغیر در SQL
در این قسمت از آموزش sql ، انواع داده در اس کیو ال را شرح میدهیم.
انواع داده رشته ای در اسکیوال : Character strings
این نوع فیلد برای نگهداری عبارات و یا حروف ASCII میباشد. در این نوع فیلدها، برای نگهداری هر حرف، یک بایت اشغال میشود و لذا نیاز به Collation برای تعیین زبان اطلاعات میباشد.
- char(n) : اطلاعات متنی با طول ثابت از ۱ تا حداکثر ۸۰۰۰ حرف را در خود ذخیره میکنند.
- varchar(n): اطلاعات متنی با طول متغیر از ۱ تا حداکثر ۸۰۰۰ حرف را در خود ذخیره میکنند. فرق بین Char و VarChar در این است که در Char، طول رشته ثابت است. یعنی اگر یک فیلد را از نوع Char(20) معرفی کرده و در آن کلمه Orion را قرار دهیم، عین ۲۰ حرف استفاده خواهد شد. یعنی ۵ کاراکتر اول را کلمه مربوطه اشغال کرده و ۱۵ کاراکتر باقیمانده، Blank خواهند بود. اما در VarChar اینگونه نیست..
- varchar(n): اطلاعات متنی با طول متغیر از ۱ تا حداکثر ۸۰۰۰ حرف را در خود ذخیره میکنند. فرق بین Char و VarChar در این است که در Char، طول رشته ثابت است. یعنی اگر یک فیلد را از نوع Char(20) معرفی کرده و در آن کلمه Orion را قرار دهیم، عین ۲۰ حرف استفاده خواهد شد. یعنی ۵ کاراکتر اول را کلمه مربوطه اشغال کرده و ۱۵ کاراکتر باقیمانده، Blank خواهند بود. اما در VarChar اینگونه نیست..
- varchar(max): اطلاعات از ۱ تا ۲ مگا حرف ذخیره میشود و مکانیزم آن هم بصورت پوینتری میباشد.
- Text: اطلاعات از ۱ تا ۲ مگا حرف ذخیره میشود. این نوع داده همانند Image و VarBinary(MAX) در خود رکورد ذخیره نمیشوند. بلکه توسط یک پوینتر به جای دیگری اشاره میکنند. این نوع داده در SQL 10 حذف شده و بجای آنها از VarChar(MAX) استفاده میشود.
این نوع فیلدها برای نگهداری متون Unicode بوده و برای نگهداری هر حرف، از دو بایت استفاده میشود. پس مسلماً نسبت به نوع دادههای کاراکتری، حافظه بیشتری را به خود اختصاص میدهد و در ضمن کمی هم کندتر است. این نوع فیلدها، احتیاج به Collation ندارند.
- nchar(n): در این نوع داده، اطلاعات از ۱ تا حداکثر ۴۰۰۰ حرف با طول ثابت ذخیره میشود.
- nvarchar(n): در این نوع داده، اطلاعات از ۱ تا حداکثر ۴۰۰۰ بایت با طول متغیر ذخیره میشود.
- nvarchar(max): در این نوع داده از ۱ تا ۱ مگا حرف ذخیره میشود. مکانیزم آن هم بصورت Pointer میباشد.
- Ntext: در این نوع داده، از ۱ تا ۱ مگا حرف ذخیره میشود. مکانیزم آن هم بصورت Pointer .
انواع داده باینری در اسکیوال : Binary types
این نوع فیلدها برای نگهداری اطلاعات بصورت بایناری مانند تصاویر مناسب هستند
- Bit: یک فیلد دو بیتی است و میتواند ۰ و ۱ و Null را ذخیره کند.کاربرد آن در زمانهایی است که دو حالت وجود داشته باشد. مانند جنسیت زن و مرد.
- binary(n): این نوع فیلدها، از ۱ تا ۸۰۰۰ بایت را در خود جای میدهند.
- varbinary(n): این نوع فیلدها هم از ۱ تا ۸۰۰۰ بایت را در خود جای میدهند. (متغیر).
- varbinary(max): این نوع Datatype در SQL 2005 معرفی شده و تقریباً همانند دادههای Image هستند.
- image : این نوع فیلدها از ۱ تا حداکثر ۲ گیگابایت را میتوانند ذخیره کنند. فرق این نوع دادهها با دو نوع قبلی این است که در دو نوع قبلی، اطلاعات در خود رکورد ثبت میشوند ولی در این نوع دادهها، اطلاعات در یک Page ذخیره میشود و به جایش در رکورد، یک پوینتر ۱۶ بایتی ذخیره میشود. این نوع فیلدها در SQL 10 حذف شده و به جایش باید از VarBinary استفاده کرد.
انواع داده عددی در اس کیو ال : Number types
این نوع فیلد برای نگهداری اعداد صحیح و بدون اعشار استفاده میگردد و دارای ۴ نوع به شرح زیر است. در ضمن این نوع فیلدها رتبه یک سرعت در نوع فیلدهای عددی را دارد.
- tinyint یک بایت را اشغال میکند و میتواند از ۰ تا ۲۵۵ را در خود ذخیره کند.
- smallint یک عدد دو بایتی است و میتواند از ۳۲۷۶۷ منفی تا ۳۲۷۶۷ مثبت را در خود ذخیره کند.
- int یک عدد چهار بایتی است که میتواند اعداد بین مثبت و منفی ۲ میلیارد را در خود ذخیره کند.
- bigint یک عدد ۸ بایتی است که میتواند اعداد بین مثبت و منفی ۴ میلیارد را در خود ذخیره کند.
- decimal(p,s) این نوع فیلد برای نگهداری اعداد اعشاری با تعداد اعشار مشخص استفاده میگردد. این نوع فیلدها بسیار کند بوده و استفاده از آنها توصیه نمیگردد. که در آن Precision به معنای تعداد کل رقمهای عدد و Scale تعداد ارقام اعشار را مشخص میکند. مثلاً اگر فیلدری بصورت Deciaml(6,2) تعریف شود، حداکثر آن برابر ۹۹۹۹٫۹۹ میباشد..
- smallmoney یک عدد ۴ بایتی است که میتواند ۶ رقم صحیح و ۴ رقم اعشار را در خود ذخیره کند..
- money یک عدد ۸ بایتی است که میتواند ۱۵ رقم صحیح و ۴ رقم اعشار را در خود ذخیره کند..
- float(n) یک عدد ۸ بایتی که اعداد بصورت توانی از ۱۰ نگهداری میشوند. .
- real یک عدد ۴ بایتی است که اعداد بصورت توانی از ۱۰ نگهداری میشوند..
انواع داده تاریخ در اس کیوال : Date types
این نوع فیلدها برای نگهداری تاریخ میلادی و ساعت استفاده میشود و برای تاریخ شمسی کاربرد ندارد.
- datetime این نوع فیلد، ۸ بایتی است و از سال ۱۷۰۰ تا ۹۹۹۹ را با دقت هزارم ثانیه ذخیره میکند..
- smalldatetime این نوع فیلد، ۴ بایتی است و از سال ۱۹۰۰ تا ۲۰۷۹ را با دقت هزارم ثانیه ذخیره میکند..
- date این نوع فیلدها برای نگهداری تاریخ میلادی استفاده میشود.
- time این نوع فیلدها برای نگهداری ساعت استفاده میشود.
انواع دیگر داده ها در sql : Other data types
- sql_variant این نوع فیلد برای نگهداری انواع داده استفاده میشود و نوع آن با توجه به اولین مقداری که در آن قرار میگیرد تعیین خواهد شد. چون نوع و حجم فیلد مشخص نیست، لذا تنها یک اشارهگر ۱۶ بایتی در آن قرار گرفته و داده اصلی در فایل جداگانه نگهداری میشود. استفاده از این نوع فیلد، توصیه نمیگردد..
- uniqueidentifier .این فیلد ۱۶ بایتی، به ما کدی Unique یا تک میدهد که به اصطلاح GUID میگویند. یکی از کاربردهای آن در Replication است.
- xml این فیلد بیشتر برای انتقال اطلاعات و دستورات تحت web استفاده میشود و شامل انواع MetaData های مختلف است.
- cursor این فیلد مربوط به کنترل Cursor است .
دستور SELECT در sql
دستور SELECT در اسکیوال برای انتخاب و استخراج اطلاعات مورد نظر از یک یا چند جدول و سپس مشاهده نتایج در یک جدول موقت استفاده می شود :
SELECT column_name(s)
FROM table_name
- SELECT در اینجا به مفهوم فعل است و مشخص میکند که میخواهیم اطلاعاتی را بخوانیم .
- SELECT فهرست ستون ها مشخص میکند که قصد خواندن کدام ستون ها را از بانک داریم در صورتی که در این فهرست * قرار دهیم کلیه ستون های جدول نمایش داده میشود .
- با استفاده از کلمه FROM مشخص میکنیم که از کدام جدول یا جداول این ستون ها باید انتخاب شوند .
- time این نوع فیلدها برای نگهداری ساعت استفاده میشود.
دستور SELECT *
دستور SELECT * همه اطلاعات موجود در جدول را انتخاب میکند.برای انتخاب کلیه ستون های جدول در قسمت نام ستون باید علامت * را گذاشت استفاده کرد .
SELECT * FROM table_name
دستور SELECT DISTINCT در sql
چنانچه در ستون های مورد جستجو ، موارد تکراری وجود داشته باشد در نتیجه خروجی نمایش داده خواهند شد . برای جلوگیری از چنین موردی و عدم نمایش موارد تکراری پس از دستور Select عبارت DISTINCT نوشته می شود .
SELECT DISTINCT column_name(s)
FROM table_name
o مثال :تصور کنید یک جدول مشتری با ١٠٠٠ رکورد با ٩٠ درصد مشتری از کالیفرنیا، Query زیر کد CA را ٩٠٠٠ بار خواهد باز گرداند که اصلاً یک نتیجه مفیدی نمی باشد.
SELECT State From Customer
کلید واژه Distinct در این موقعیت شما را کمک می کند. Distinct که درست بعد از SELECT قرار می گیرد، به SQL Server دستور داده که سطرهای تکراری در نتایج را حذف نماید. بنابراین Query زیر هر کد ایالتی را فقط یک بار باز می گرداند به طور وضوح لیستی که شما جستجو می کنید.
SELECT DISTINCT State From Customer
نکته : همتای کلید واژه Distinct ، All می باشد که SQL Server را برای بازگرداندن همه سطرها آگاه می سازد خواه آن واحد باشد یا خیر. All پیش فرض دستور select است ، پس نیازی به نوشتن آن نیست.
دستور شرطی WHERE در sql
دستور Where برای اضافه کردن شرط یا شرط هایی جهت محدود کردن نتایج جستجو و یا استخراج نتایج دقیقتر برای داشتن خروجی که در ذهن ما وجود دارد استفاده می شود . این ذستور باید پس از دستور Select و تعیین ستون ها از جدول مورد نظر به کار رود .
با استفاده از عملگرهای AND ، OR و پرانتز می توان چندین شرط را با هم ترکیب کرد .خروجی برنامه با شرط هایی که روی دستور داده شده است مطابقت داده خواهد شد.
Select Name , Family
From Person
Where IdNumber= ” 1111″
در مثال بالا نام و فامیلی اشخاصی که فیلد IdNumber آنها برابر 1111 باشد توسط دستور where در اسکیوال برگردانده می شوند.
عملگر های And و Or در SQL
- عملگرهای And و Or برای ترکیب شرط ها در دستور Where در sql استفاده می شود .
- گاهی اوقات خروجی که ما میخواهیم در اس کیوال بایستی چند شرط مختلف داشته باشد . به طور مثال افرادی را میخواهیم که سن بالای 23 سال و مدرک تحصیلی بالای لیسانس داشته باشند . در این حالت بایستی هر کدام از شرط ها را جداگانه تعریف کرده و سپس آنها را با هم ترکیب کنیم . برنامه هر کدام از شرط ها را بررسی میکند و خروجی را نمایش میدهد.
- عملگر And برای اجرای دستور نیاز دارد تا تمام شرط های تعیین شده برای آن درست باشد .
SELECT * FROM Persons
WHERE FirstNam
e=’ saeed ‘
AND LastName=’ rajabi ‘
- عمگر Or فقط نیاز دارد که حداقل یکی از شرط ها درست باشد .
SELECT * FROM Persons
WHERE FirstName=’saeed’
OR FirstName=’rajabi’
- ترکیب عملگرهای And و Or
Select * From Persons
Where ( ( Grade = 16 AND Major = ‘Hard Ware’ ) OR ( Garde = 12 AND Major = ‘SoftWare’ ) ) ” ;
بیشتر بخوانید : آموزش هوش تجاری در SQL server و کاربردهای آن
دستور Order By در sql
اطلاعاتی که در دستور select در اس کیو ال به عنوان خروجی نمایش داده میشود ی بی نظم و یا بهتر بگوییم بدون نظم مد نظر ما است. مقادیر خروجی در ستون های جدول بر اساس مقدار هیج ستونی مرتب نمیشوند . با دستور دستور Order By میتوان اطلاعات جدول را بر اساس مقادیر یک یا چند ستون برحسب شاخص هایی مثل ترتیب حروف الفبا ، بزرگتر یا کوچکتر بودن اعداد و …مرتب کرد.
ساختار دستور Order By
SELECT column_name(s)
FROM table_name
ORDER BY column_name(s) [ASC|DESC]
علامات [] در اطراف where بدین معناست که میتوانید where را بکار نبرید. اما اگر بکار بردید حتما باید قبل از order باشد . ASC به معنای صعودی بودن (a to z)و DESC به معنای نزولی بودن است (z to a).پیش فرضش ACS است.
- نکته : همچنین این نیز امکان پذیرست که مرتب سازی را بر مبنای بیش از یک ستون انجام دهید .برای این منظور بخش مرتب سازی کد بالا بصورت زیر در میاید :
ORDER BY “column_name1” [ASC, DESC], “column_name2” [ASC, DESC]
o مثال :Select Name , Family From Person
Where idnumber=”11″
Order By Family
خروجی دستور بالا ، اشخاص با شرط ذکر شده در دستور where را بر اساس نام فامیلی مرتب صعودی میکند.
دستور Group By در sql
از دستور Group By در اس کیو ال برای دسته بندی یک ستون بر حسب مقادیر مشابه فیلدهای یک ستون دیگر استفاده می شود .
در هنگام استفاده از برخی از توابع درون ساخته SQL که عمل محاسبه ( مثل مجموع و میانگین ) را بر روی داده ها انجام می دهند ، این مشکل وجود دارد که این توابع قادر به جدا کردن و متمایز کردن اطلاعات موجود در دو ستون نسبت به هم نیستند و نتایج محاسبات را به صورت کلی برای همه آنها در نظر می گیرند . در این مواقع از دستور Group By استفاده میکنیم .
ساختار این دستور به صورت زیر است :
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
دستور Group By در sql وقتی استفاده میشود که ما در حال انتخاب چند ستون هستیم و حداقل یک عملگر محاسباتی در دستور select داریم . در این زمان ما باید تمام ستون های دیگر را گروه کنیم.
o مثال :
در مثال زیر مجموع نمرات هر دانش آموز را بصورت گروه بندی شده بر اساس فیلد نام دانش آموز به خروجی داده می شود :
Select Name ,Sum ( Grade ) As مجموع نمرات
From Class
Group By Name ;
نکته : دستور group by در اسکیوال از جمله ی پرکاربردترین دستورات است که یادگیری کامل این دستور ، میتواند تفاوت اسکریپت نویسی حرفه ای در sql باشد.
دستور شرطی Having در sql
دستور Having در اسکیوال برای افزودن شرط به توابع درون ساخته SQL استفاده می شود ، زیرا از دستور Where نمی توان برای کار با مقادیر خروجی توابع درون ساخته SQL استفاده کرد .به عبارت دیگر دستور Having در sql برای اعمال شرط به ستون ها اعمال می شود و همان کاری را می کند که Where در رکوردها انجام می دهد . دستور Having معمولا با دستور Group By می آید .ساختار دستور شرطی Having در sql به صورت زیر است :
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value
o مثال :در مثال زیر همچون مثال بخش دستور group by عمل شده ، با این تفاوت که بعد از گروه بندی بر اساس نام دانش آموزان و دادن خروجی جمع نمرات آنها ، خروجی شامل دانش آموزانی است که مجموع نمرات آنها بالاتر از 25 باشد :
جمع نمره Select Name , Sum ( Grade ) As مجموع نمرات
From Students
Group By Name
Having Sum ( Grade ) > 25
Order By Family
- نکته مثال : در مثال بالا به جای having نمیتوان از where استفاده کرد و برای اعمال شرط بر روی فیلدهای محاسباتی آمده در دستور group by باید از جمله شرطی having استفاده کرد.
دستور Insert در اس کیو ال
دستور Insert در sql برای وارد کردن و ایجاد یک رکورد جدید در جدول استفاده می شود .
دو روش استفاده از این دستور وجود دارد :
INSERT INTO table_name
VALUES (value1, value2, value3,…)
INSERT INTO table_name (column1, column2, column3,…)
VALUES (value1, value2, value3,…)
- نکته : می توان در دستور Insert در اسکیوال تعیین کرد که مقادیر مورد نظر به ترتیب به کدام ستون های جدول وارد شوند . برای این منظور ابتدا نام ستون های مورد نظر را به ترتیب جلوی نام جدول در یک پرانتز وارد کرده و با کاما از هم جدا می کنیم . سپس مقادیر متناظر را به همان ترتیب پس از واژه Vaues در پرانتز وارد می کنیم .
- نکته : چنانچه برای فیلد یا فیلدهایی مقداری در دستور insert در نظر گرفته نشود ، مقادیر پیش فرض تعیین شده و در صورت تعیین نکردن مقدار پیش فرض جای آنها در جدول خالی می ماند . فقط باید به ترتیب نام ستون ها و مقادیر دقت کرد .
Insert into Student ( Name , Family ) Values ( “Saeed” , “Rajabi” )
در مثال بالا نام Saeed در فیلد Name و نام Rajabi در فیلد Family میرود. بقیه ی فیلد ها در صورت تعیین کردن مقدار پیش فرض آن مقدار را میگیرند و در صورت تعیین نکردن آن ، مقدار خالی یا Null میگیرند
دستور Update در sql
دستور Update در اسکیوال برای تغییر اطلاعات موجود در یک فیلد و جایگزینی آن با یک مقدار جدید به کار می رود . ویرایش اطلاعات در بانک اس کیوال از جمله مهمترین اعمال هست که با استفاده از دستور Update امکان پذیر می باشد.
UPDATE table_name
SET column1=value, column2=value2,…
WHERE some_column=some_value
برای ویرایش کردن بیش از یک فیلد به روش زیر عمل میکنیم:
Update Person
Set Name = ” bahar” , Family = ” shokri” , id-number=” 11 “
Where ID =3222
برای ویرایش یک فیلد دستور زیر را مینویسیم :
Update Person
Set Name =” Ali “
Where Name = ” Ahmad
دستور Delete در اسکیوال
دستور Delete در sql برای حذف اطلاعات یک رکورد در جدول بانک اس کیو ال استفاده می شود. از دستور delete باید با دقت استفاده شود زیرا امکان بازگرداندن رکورد های حذف شده به این راحتی ها نیست !
DELETE FROM table_name
WHERE some_column=some_value
برای پاک کردن یک رکورد با شناسه مشخص از دستور زیر استفاده میکنیم.
Delete From Person
Where ID = “16 “
دستور Delete *
این امکان وجود دارد که با دستور Delete * بدون حذف یک جدول ، کلیه رکوردهای درون آن را پاک کرد.
Delete From Person
دستور TOP در sql
دستور TOP در دستور select اس کیو ال ، تعداد رکورهای خروجی را مشخص میکند.دستور top در sql برای جداولی که بالای هزاران رکورد دارند بسیار مفید میباشد. خروجی با تعداد رکوردهای بالا بر روی کارایی برنامه ی مرتبط با sql ممکن است تاثیر بگذارد.
مثال : با مثال زیر ما 2 رکورد از جدول را انتخاب می کنیم :
SELECT TOP 2 * FROM Persons
مثال : با مثال زیر ما میتوانیم 50 درصد از رکوردها در جدول بالا را انتخاب کنیم :
SELECT TOP 50 PERCENT * FROM Persons
عملگر Like در SQL
عملگر Like در شرط های sql ، برای الگوی خاص جستجو مورد استفاده قرار میگیرد. ساختار دستور like در اس کیو ال به صورت زیر است:
SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern
مثال : دستور زیر افرادی که شهر آنها با حرف s شروع میشوند را انتخاب مبکند.
SELECT * FROM Persons
WHERE City LIKE ‘s%’
مثال : دستور زیر افرادی که شهر آنها به حرف s ختم میشوند را انتخاب مبکند.
SELECT * FROM Persons
WHERE City LIKE ‘%s’
مثال : دستور زیر افرادی که شهر آنهاشامل حرف st میباشد را انتخاب مبکند.
SELECT * FROM Persons
WHERE City LIKE ‘%st%’
مثال : دستور زیر افرادی که شهر آنهاشامل حرف st نمیباشد را انتخاب مبکند.
SELECT * FROM Persons
WHERE City NOT LIKE ‘%st%’
علامت های شرطی در Like
یادآوری از دستور Like : همانطور که در مقاله ی قبلی در مورد دستور like در sql گفته شد ، هنگام کارکردن با رشته ها همیشه خواهان مطابقت کامل رشته ها نیستیم ، بلکه بخشی از رشته یا الگوی خاصی از آن بیشتر موردنظر است. در این هنگام می توان از دستور LIKE در شرط های اس کیو ال ، به جای علامت = استفاده کرد.
در دستور like ، دو کاراکتر % و _ به ترتیب به معنی چند کاراکتر و یک کاراکتر را برای تطابق می توان بکار برد.
در آموزش sql این علامت ها کاربرد بسیاری دارند.
مثال : اسامی کلیه مشتریانی که آدرس آنها شامل کلمه Main است بطوریکه قبل Main هر چند کاراکتری که خواست بیاید ولی بعد از Main فقط یک کاراکتر بیاید را پیدا کن :
SELECT customer_name
FROM customer
WHERE customer_street LIKE ‘%Main_’;
عملگر In در sql
عملگر In در اس کیو ال برای مشاهده اطلاعات رکوردهایی از جدول به کار می رود که شما مقدار دقیق حداقل یکی از فیلدهای آنرا می دانید . دستور in در اسکیول برای کوئری های پیچیده در اس کیو ال بسیار کاربردی است.
ساختار این دستور به صورت زیر است :
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,…)
مثال : از جدول Persons مشخصات افرادی را بدهید که نام خانوادگی آنها رجبی یا یوسفی است :
Select * From Persons
Where Family IN ( “رجبی” , “یوسفی” )
Alias در اس کیو ال
زمانی که با دستور select در sql یک کوئری اجرا کرده ایم نام یا عنوانی که در بالای هر ستون در خروجی نمایش داده می شود ، همان نام فیلد مربوط به داده در جدول اصلی پایگاه داده است .گاهی اوقات میخواهیم نام ستون ما در خروجی برابر با نام دلخواه ما باشد یا در مواردی که در بخش توابع SQL خواهیم دید ، یک ستون جدید ایجاد می کنیم که باید نامی برای آن تعیین شود در این موارد از ویژگی Alias استفاده میکنیم.
از ویژگی Alias برای در نظر گرفتن یک نام مستعار و مجازی برای قرار گرفتن در بخش عنوان هر ستون در خروجی دستور Select در اس کیو ال استفاده می شود.تعریف Alias برای جداول sql : کلمه کلیدی as در اس کیو ال این کار را انجام می دهد.
SELECT column_name(s)
FROM table_name
AS alias_name
تعریف Alias برای ستونها در sql :
SELECT column_name AS alias_name
FROM table_name
مثال:
Select Name As نام , Family As خانوادگی From Persons
Where id >15
Order By Family ;
می توان بر روی مقادیر ستون هایی که داده عددی دارند ، عملیات ریاضی ( مثل ضرب ، تقسیم و … ) انجام داده و سپس نتایج محاسبات را در یک ستون جدید با عنوان دلخواه تعیین شده توسط ویژگی Alias در خروجی دستور Select نمایش داد .در این حالت ستون یا ستون های به جدول خروجی اضافه می شود .
مثال : مثال زیر کاربردی از این مورد را در دستور select نشان میدهد :
Select Name+Family As “نام و نام خانوادگی” From Persons
Where id >15
Order By Family ;
دستورهای پیوند ( Join ) در SQL
از مجموعه دستورات Join در اس کیو ال ، برای پیوند جدول ها در پایگاه داده ها استفاده می شود. از دستور های Join ، برای ارتباط بین چندین جدول که با یکدیگر ارتباط دارند ، درواقع کلید خارجی برای آنها تعریف شده است، میتوان استفاده کرد.
تفاوتهای بین دستورات پیوند ( JOIN ) در SQL
- دستور INNER JOIN : خروجی دستور JOIN یا دستور INNER JOIN از بین سطرهایی انتخاب میشود که حداقل یک رابطه در هر دو جدول وجود داشته باشد.
- دستور LEFT JOIN : خروجی دستور LEFT JOIN از از جدول سمت چپ انتخاب میشود، حتی اگر هیچ رابطه ای با جدول سمت راست نداشته باشد.
- دستور RIGHT JOIN : خروجی دستور RIGHT JOIN از از جدول سمت راست انتخاب میشود، حتی اگر هیچ رابطه ای با جدول چپ نداشته باشد.
- دستور FULL JOIN : خروجی دستور FULL JOIN از بین سطرهایی انتخاب میشود که یک رابطه در یکی از جداول بایستی وجود داشته باشد.
تفاوت Join و InnerJoin
- تفاوت Join و InnerJoin در performance آنها می باشد. نتیجه ی اجرای هر دوی آنها یکسان است اما دستور InnerJoin دارای Prformance بالاتری می باشد و به همین دلیل توصیه می شود که از دستور InnerJoin استفاده شود.
دستور INNER JOIN در sql
- خروجی دستور INNER JOIN در اس کیو ال از بین سطرهایی انتخاب میشود که حداقل یک رابطه در هر دو جدول وجود داشته باشد.
- تفاوت دستور Join و دستور InnerJoin در performance آنها می باشد. نتیجه ی اجرای هر دوی آنها یکسان است اما دستور InnerJoin دارای Prformance و کارایی بالاتری می باشد و به همین دلیل توصیه می شود که از دستور InnerJoin استفاده شود.
شکل کلی این دستور به صورت زیر است که در آن کلمه ی کلیدی ON فیلد رابطه رو در دو جدول مشخص میکند :
SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name
در دستور INNER JOIN در اس کیو ال بایستی حداقل یک رابطه در هر دو جدول وجود داشته باشد که بعد از کلمه کلیدی On می آید.
- نکته مهم : مهم ترین دستور ها در آموزش sql ، دستور inner join می باشد که یادگیری کامل دستور join میتواند تفاوت اصلی آموزش حرفه ای اس کیو ال باشد.
مثال : اگر رکوردی (خروجی) که در جدول “Persons” وجود دارد هیچ تطابقی با خروجی های جدول “Orders” نداشته باشد ، این رکوردها در خروجی این دستور sql نمایش داده نمیشوند.
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.P_Id=Orders.P_Id
ORDER BY Persons.LastName
دستور LEFT JOIN در sql
خروجی دستور LEFT JOIN در اس کیو ال از از جدول سمت چپ انتخاب میشود، حتی اگر هیچ رابطه ای با جدول سمت راست نداشته باشد.
شکل کلی دستور left join در sql بصورت زیر است :
SELECT column_name(s)
FROM table_name1
LEFT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
نکته : در بعضی دیتابیس ها دستور LEFT JOIN با نام دستور LEFT OUTER JOIN استفاده میشود که تفاوتی در این زمینه وجود ندارد.
مثال : در این مثال جدول اصلی ، جدول Persons میباشد که در سمت چپ JOIN قرار دارد و خروجی ها بر اساس این جدول تنظیم میشوند.
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
LEFT JOIN Orders
ON Persons.P_Id=Orders.P_Id
ORDER BY Persons.LastName
در صورت نداشتن رابطه ی بعضی ای رکورد ها با جدول سمت راست ، فیلد های آن null انتخاب میشوند که با ترکیب آن با دستور isNull در اس کیو ال میتوانید خروجی های دلخواه خود را با استفاده از دستور left join بدست آورید.
دستور RIGHT JOIN در sql
خروجی دستور RIGHT JOIN در اس کیو ال از از جدول سمت راست انتخاب میشود، حتی اگر هیچ رابطه ای با جدول چپ نداشته باشد. ساختار دستور right join به صورت زیر است :
SELECT column_name(s)
FROM table_name1
RIGHT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
- نکته : در بعضی دیتابیس ها دستور RIGHT JOIN با نام دستور RIGHT OUTER JOIN استفاده میشود.
مثال : در این مثال جدول اصلی ، جدول Orders میباشد که در سمت راست JOIN قرار دارد و خروجی ها بر اساس این جدول تنظیم میشود.
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
RIGHT JOIN Orders
ON Persons.P_Id=Orders.P_Id
ORDER BY Persons.LastName
در صورت نداشته رابطه ی بعضی ای رکورد ها با جدول سمت چپ ، فیلد های آن null انتخاب میشوند که با ترکیب آن با دستور isNull در اس کیو ال میتوانید خروجی های دلخواه خود را با استفاده از دستور right join بدست آورید.
دستور FULL JOIN در sql
خروجی دستور FULL JOIN در sql از بین سطرهایی انتخاب میشود که یک رابطه در یکی از جداول بایستی وجود داشته باشد.
به طور خلاصه دستور full join ( دستور full outer join ) بصورت or کار میکند و دستور inner join بصورت and .
SELECT column_name(s)
FROM table_name1
FULL JOIN table_name2
ON table_name1.column_name=table_name2.column_name
مثال : در مثال زیر ما میخواهیم با استفاده از دستور full join در اسکیوال ، همه ی افراد با سفارش هایشان و همه ی سفارشات با افراد مربوط به آنها را در خروجی نمایش دهیم.
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
FULL JOIN Orders
ON Persons.P_Id=Orders.P_Id
ORDER BY Persons.LastName
دستور UNION در sql
- از دستور Union برای ترکیب و ادغام دو یا چند ستون مختلف از 2 یا چند جدول و نشان دادن آنها در یک ستون مشترک استفاده می شود .
- در دستور union ، نوع داده ای ستون های انتخاب شده برای ترکیب باید یکسان باشند .
- دستور Union در هنگام ترکیب فیلد ها ، در صورت برخورد با مقادیر تکراری آنها را حذف کرده و از هر مقدار یک نمونه را نمایش می دهد . ساختار دستور union به صورت زیر است:
SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2
مثال :
SELECT E_Name FROM Employees_Norway
UNION
SELECT E_Name FROM Employees_USA
برای مشاهده تمام مقادیر ، حتی مقادیر تکراری باید از دستور Union ALL استفاده کرد
ساختار این دستور به صورت زیر است :
SELECT column_name(s) FROM table_name1
UNION ALL
SELECT column_name(s) FROM table_name2
مثال :
SELECT E_Name FROM Employees_Norway
UNION ALL
SELECT E_Name FROM Employees_USA
Result
در آموزش sql ، دستور union و دستور union all کاربرد های ویژه و خاصی دارند.
دستور SELECT INTO در sql
از دستور Select Into در موارد زیر استفاده می شود :
- ایجاد یک Back Up ( نسخه پشتیبان ) از یک جدول .
- ایجاد یک آرشیو از رکوردهای یک جدول .
- قرار دادن برخی از رکوردها یا فیلدهای مورد نظر از یک جدول در یک جدول جدید .
- ایجاد یک نسخه پشتیبان از کل یک پایگاه داده در یک پایگاه داده جدید .
تمامی مثالهای زیر نحوه استفاده از دستور select into را نشان میدهد:
در این مثال (ساختار) ما می میخواهیم برخی از رکوردها یا فیلدهای مورد نظر از یک جدول در یک جدول جدید قرار دهیم:
We can select all columns into the new table:
SELECT *
INTO new_table_name [IN externaldatabase]
FROM old_tablename
در این مثال (ساختار) ما تنها می توانیم ستون ها را برای ایجاد یک جدول جدید انتخاب کنیم :
SELECT column_name(s)
INTO new_table_name [IN externaldatabase]
FROM old_tablename
در این مثال ما میخواهیم یک Back Up ( نسخه پشتیبان ) از یک جدول Persons ایجاد کنیم:
SELECT *
INTO Persons_Backup
FROM Persons
در این مثال ما میخواهیم یک کپی از جدول Persons را به یک پایگاه داده دیگر (Backup.mdb) اضافه کنیم :
SELECT *
INTO Persons_Backup IN ‘Backup.mdb’
FROM Persons
در این ساختار ما میتوانیم یک تعدادی از فیلدها را به جدول جدید کپی کنیم:
SELECT LastName,FirstName
INTO Persons_Backup
FROM Persons
در این مثال ما میخواهیم با داشتن یک دستور شرطی فیلدهایی را از جدول Persons به جدول Persons_Backup اضافه کنیم :
SELECT LastName,Firstname
INTO Persons_Backup
FROM Persons
WHERE City=’Sandnes’
انتخاب داده از بیش از یک جدول هم در دستور select into امکان پذیر است . در مثال زیر جدول “Persons_Order_Backup” شامل داده ها از دو جدول “Persons” و “Orders” میباشد.
SELECT Persons.LastName,Orders.OrderNo
INTO Persons_Order_Backup
FROM Persons
INNER JOIN Orders
ON Persons.P_Id=Orders.P_Id
ذکر نام یک پایگاه داده جدید در دستور Select Into اختیاری است . چنانچه نامی در این قسمت ذکر نشود ، برنامه نسخه پشتیبان را در همان پایگاه داده موجود ایجاد می کند و چنانچه نامی ذکر شود ، برنامه نسخه پشتیبان را در پایگاه داده ذکر شده ایجاد می کند .
مقدار Null در اس کیو ال
- در حالت کلی مقادیر ستون ها میتوانند مقدار null داشته باشند. زمانی که یک ستون اختیاری باشد ، شما میتوانید مقدار Null در آن ذخیره کنید. اختیاری به این معنی که میتوانید خالی رهایش کنید.
- مقدار پیش فرض در صورت مقدار ندادن به فیلدی در یک رکورد , مقدار Null است.
- با استفاده از دستور is null در sql میتوانیم فیلدهایی که مقادیر تهی دارند را با در دستور Select انتخاب کنیم.
- مقدار null از جمله مقادیری است که زیاد باهاش در آموزش sql سر و کار خواهیم داشت.
- نکته ی بسیاری مهم در مورد null یا تهی اینست که این مقدار با مقدار رشته ای space یا ' ' تفاوت کامل دارد. همچنین null را نباید با مقدار رشته ای آن یعنی 'null' اشتباه بگیریم.
دستور ISNULL در sql
از دستور ISNULL در اسکیوال زمانی استفاده میشود که شما میخواهید تمام فیلدهای null را در خروجی داشته باشید.مقدار null در اس کیو ال با space ‘ ‘ تفاوت دارد.ساختار دستور is null به همراه مثال آن به صورت زیر است که در این مثال تمام رکوردهایی که حاوی فیلد آدرس null هستند انتخاب می شوند.
SELECT LastName,FirstName,Address FROM Persons
WHERE Address IS NULL
بر عکس دستور is null در sql ، دستور is not Null هست که مقادیری را برمیگرداند که Null نباشد که بیشتر از این شکل از این دستور استفاده مشود.
مثال : در مثال زیر رکوردهایی که آدرس آنها تهی ( null ) نیستند ، انتخاب و در خروجی این دستور در اسکیوال می روند.
SELECT LastName,FirstName,Address FROM Persons
WHERE Address IS NOT NULL
نرمال سازی پایگاه داده
قبل از ورود به مرحله ی ایجاد جدول ها و نوشتن کد، در ابتدا باید زمانی را به توسعه ی یک مدل داده ی منطقی اختصاص دهند که حداقل سومین فرم نرمال را به دست می آورد.
توضیح : مدل سازی داده های منطقی جایی است که در آن ورودی های تجاری، مولفه های آن (ستون ها) و چگونگی ارتباط داخلی ورودی ها با یکدیگر که در نهایت جدول خواهند شد، را تعریف می کنید. این گام اولیه شامل پروسه ی هنجارسازی (Normalization) می شود. در هنجارسازی شما ورودی های خود را شکسته و حشو (redundancy) را از آنها حذف می کنید، هر گونه تکرار داده را نیز حذف کرده و ئر نهایت هر ماهیت (entity) دارای یک کلید اصلی می باشد که همه ی مولفه ها تنها به این کلید تکیه می کنند. این فرایند معمولا از طریق ابزار اعمال نفوذ (leveraging) مدل سازی داده اجرا می شود که می تواند مدل را تجسم کند.
سه مدل هنجارسازی پایه وجود دارد:
- اولین فرم نرمال (1 NF) (یک کلید اصلی شناسایی می شود، ویژگی ها به کوچکترین شکل مولفه کاهش می یابند، تکرار داده شناسایی شده و حذف می شود.)
- دومین فرم نرمال ( 2NF) ( ویژگی های بدون کلید اصلی که وابسته به کلید اصلی کل نیستند، حذف می شوند.)
- سومین فرم نرمال (3NF) وِیژگی های بدون (non-primary key attributes)کلید اصلی که دارای وابستگی به ویژگی های دیگری از نوع خود می باشند، حذف می شوند.
- فرم های نرمال دیگری از جمله Boyce-Codd(BCNF) ، چهارمین فرم نرمال (4NF) و پمجمین فرم نرمال (5NF) و غیره وجود دارند. من فکر می کنم دسترسی به سومین فرم نرمال کافیست، اما ممکن است نظر شما این نباشد.
دلیل تلاش برای طبیعی و هنجار کردن (Normalize) چیست؟ این امر می تواند به کاهش تعداد داده ها در جدول کمک کند که منجر به I/Os کمتر در بازیابی (retrieve) داده برای بررسی می شود و باعث ذخیره حجم حافظه در SQL Server نیز می شود. همچنین می تواند مانع پیامدهای با ناهنجاری هایی در اصلاح داده شود که در چنین پیامدهای ناهنجاری ممکن است موضوع در یک ستون آپدیت شود، در حالیکه در ستون دیگر حذف می شود. اخیرا برقراری یکپارچگی ارجاعی (referential integrity) مانند ارزیابی کلید خارجی آسانتر شده است.
بسته به طراحی شما، ممکن است یک پنالتی عملکرد برای طبیعی ساختن تا 3NF وجود داشته باشد و علاوه بر این ممکن است JOIN های زیادی لازم باشند تا درخواست یک بررسی را خرسند سازند. این مسئله نباید مانع شما در طراحی حداقل 3NF شود. اگر یک موضوع بررسی بعدا شناسایی شود، شما گزینه ی معرفی حشو کنترل شده را در طراحی خود دارید. در این فرایند به طور مشخص حشو را برای حل یک اجرا معرفی می کنید. به هرحال به طور خودکار denormalization را به یک طراحی اضافه نکنید. در عوض به یک موقعیت اجرای حقیقی اجازه ی دیکته کردن آن را بدهید.
آموزش Replication
همتاسازی (replication)، راه حلی مناسب برای مشکل انتقال داده ها بین سرورهای همیشه متصل است. با استفاده از ویزارد همتاسازی می توانید مکان شناسی (topology) همتاسازی را براحتی پیکربندی و مدیریت کنید. این مقاله به شما چگونگی پیکربندی توپولوژی سرورهای همیشه متصل را نشان می دهد.این مقاله چگونگی منتشر کردن داده ها از یک بانک اطلاعاتی به بانک اطلاعاتی دیگر را با استفاده از همتاسازی مبادله ای نشان می دهد. بخش اول چگونگی استفاده از SQL Server Management Studio را برای ایجاد یک publication نشان می دهد. بخش های بعدی چگونگی ایجاد و اعتبار سنجی یک subscription و چگونگی اندازه گیری latency را نشان می دهند.
پیش نیازها: مخاطبین این مقاله کسانی هستند که با عملیات های پایه ای بانک اطلاعاتی آشنا هستند، اما تجزبه محدودی از همتاسازی دارند.برای استفاده از این مقاله، سیستم شما باید اجزای زیر را داشته باشد:
در سرور publisher
هر نسخه ای از SQL Server 2005، به غیر از SQL Server 2005 Express Edition یا SQL Server Compact Edition. ایت نسخه ها نمی توانند publisherهای همتاسازی باشند.بانک اطلاعاتی نمونه AdventureWorks. برای بالا بردن امنیت، این بانک های اطلاعاتی بطور پیش فرض نصب نمی شوند.
در سرور subscriber
هر نسخه ای از SQL Server 2005، به غیر از SQL Server 2005 Compact Edition. این نسخه نمی تواند در همتاسازی یک subscriber باشد.
- نکته: همتاسازی بطور پیش فرض در SQL Server Express نصب نمی شود. publisher و subscriber می توانند یک نمونه از SQL Server 2005 را share کنند.
- نکته: در SQL Server Management Studio، باید با استفاده از یک login که عضوی از role ثابت سرور sysadmin است، به publisher و subscriber متصل شوید.
بخش اول: publish کردن داده ها با استفاده از Transactional Replication
در این بخش، با استفاده ازSQL Server Management Studio ، یک publication مبادله ای ایجاد خواهیم کرد تا یک subset فیلتر شده از جدول Product در بانک اطلاعاتی نمونه AdventureWorks، منتشر (publish) کنیم. همچنین لوگین SQL Server، را که توسط Distribution Agent استفاده می شود، به لیست دسترسی (access list) اضافه خواهیم کرد.
چگونگی ایجاد یک publication و تعریف articleها
در SQL Server Management Studio، به publisher متصل شوید و سپس node سرور را بسط دهید.
پوشه Replication را گسترش دهید، روی پوشه Local Publications کلیک راست و سپس روی New Publication کلیک کنید. ویزارد Publication Configuration شروع می شود.
روی صفحه Publication Database، گزینه AdventureWorks2008R2 را انتخاب و سپس روی Next کلیک کنید.
روی صفحه Publication Type، گزینه Transactional publication را انتخاب و سپس روی Next کلیک کنید.
روی صفحه Articles، ند Tables را بسط دهید، چک باکس Product را انتخاب کنید، و سپس Product را بسط دهید و علامت تیک ListPrice و StandardCost را بردارید. روی Next. کلیک کنید.
روی صفحه Filter Table Rows، روی Add کلیک کنید.
در پنجره Add Filter، روی ستون SafetyStockLevel کلیک کنید، روی فلش راست کلیک کنید تا آن ستون به عبارت WHERE کوئری فیلتر اضافه شود، و عبارت WHERE را بشرح زیر اصلاح کنید:
WHERE [SafetyStockLevel] < 500
روی OK و سپس روی Next کلیک کنید.
چک باکس Create a snapshot immediately and keep the snapshot available to initialize subscriptions را انتخاب و سپس روی Next کلیک کنید.
روی صفحه Agent Security، تیک Use the security settings from the Snapshot Agent را بردارید.
روی Security Settings برای Snapshot Agent کلیک کنید، عبارت \repl_snapshot را در باکس Process account وارد کنید، پسوردی برای این اکانت تعیین کنید، و سپس روی OK کلیک کنید.
مرحله قبل را تکرا کنید تا repl_logreader as the process account for the Log Reader Agent را تنطیم کنید، سپس روی Finish کلیک کنید.
روی صفحه Complete the Wizard، عبارت AdvWorksProductTrans را در باکس Publication name وارد کنید و سپس روی Finish کلیک کنید.
بعد از اینکه publication ایجاد شد، روی Close کلیک کنید تا ویزارد تمام شود.
اضافه کردن Distribution Agent login به PAL
در SQL Server Management Studio، به publisher متصل شوید و سپس node سرور را بسط دهید و سپس پوشه Replication را بسط دهید.
در پوشه Local Publications، روی AdvWorksProductTrans کلیک راست وسپس روی Properties کلیک کنید.
پنجره Publication Properties نمایش داده می شود.
صفحه Publication Access List را انتخاب و روی Add کلیک کنید.
در پنجره Add Publication Access، گزینه \repl_distribution را انتخاب و OK کنید.
تا اینجا، شما transactional publication را با موفقیت ایجاد کرده اید. در بخش بعدی، به این پابلیکیشن، subscribe خواهید شد.
بخش دوم: ایجاد Subscription در Transactional Publication
در این بخش، با استفاده از SQL Server Management Studio، یک subscription ایجاد خواهیم کرد.
چگونگی ایجاد subscription
در SQL Server Management Studio، به publisher متصل شوید و سپس node سرور را بسط دهید و سپس پوشه Rplication را بسط دهید.
در پوشه Local Publications، روی پابلیکیشن AdvWorksProductTrans کلیک راست کنید، و سپس روی New Subscriptions کلیک کنید. ویزارد New Subscription شروع می شود.
روی صفحه Publication page، گزینه AdvWorksProductTrans را انتخاب و سپس روی Next کلیک کنید.
روی صفحه Distribution Agent Location، گزینه Run all agents at the Distributor را انتخاب و سپس روی Next کلیک کنید.
روی صفحه Subscribers، اگر نام نمونه Subscriber نمایش داده نمی شود، روی Add Subscriber، و Add SQL Server Subscriber کلیک کنید، نام subscriber نمونه را در پنجره Connect to Server وارد کنید، و سپس روی Connect کلیک کنید.
روی صفحه Subscribers، نام subscriber نمونه را انتخاب کنید، و گزینه را از زیر Subscription Database انتخاب کنید.
در پنجره New Database، عبارت ProductReplica را در باکس Database name وارد و OK کنید. سپس روی Next کلیک کنید.
در پنجره Distribution Agent Security، روی دکمه ellipsis (…) کلیک کنید، عبارت < Machine_Name >\repl_distribution را در باکس Process account وارد کنید، پسورد این اکانت را وارد و OK کنید. سپس روی Next کلیک کنید.
روی Finish کلیک کنید تا مقدارهای پیش فرض روی صفحات باقیمانده را قبول کنید و ویزارد را تمام کنید.
تنظیم کردن پرمیشن های بانک اطلاعاتی در Subscriber
در SQL Server Management Studio، به subscriber متصل شوید، و به ترتیب Databases، ProductReplica، و Security را بست دهید، سپس روی Users کلیک راست و New Userرا انتخاب کنید.
در صفحه General، عبارت \repl_distribution را در باکس User name وارد کنید. روی دکمه ellipsis (…) و سپس Browse کلیک کنید، گزینه \repl_distribution را انتخاب و به ترتیب روی OK، Check Names، و OK کلیک کنید.
در Database role membership، گزینه db_owner را انتخاب کنید و سپس OK کنید تا کاربر ایجاد شود.
مشاهده وضعیت همزمان سازی subscription
در SQL Server Management Studio، به publisher متصل شوید و سپس node سرور را بسط دهید و سپس پوشه Replication را بسط دهید.در پوشه Local Publications، پابلیکیشن AdvWorksProductTrans را بسط دهید، در بانک اطلاعاتی ProductReplica، روی subscription کلیک راست کنید، و سپس روی View Synchronization Status را کلیک کنید. وضعیت کنونی هوزمان سازی نمایش داده می شود.اگر subscription زیر AdvWorksProductTrans نمایش داده نمی شود، دکمه F5 را فشار دهید تا لیست ریفرش شود.در این بخش، یک subscription به transactional publication ایجاد کردید. از آنجاییکه Distribution Agent برای این subscription بطور مستمر run می شود، subscription هنگام ایجاد شدن، شروع (initialized) نمی شود.
بخش سوم: اعتبار سنجی subscription و اندازه گیری latency
insert کردن یک tracer token و مشاهده اطلاعات روی token
در SQL Server Management Studio، به publisher متصل شوید و سپس node سرور را بسط دهید و سپس پوشه Replication را بسط دهید، سپس روی Launch Replication Monitor کلیک کنید. Replication Monitor نمایش داده می شود.
یک گروه Publisher را در پنل چپ بسط دهید، نمونه Publisher را بسط دهید. و سپس روی پابلیکیشن AdvWorksProductTrans کلیک کنید.
روی تب Tracer Tokens کلیک کنید.
روی Insert Tracer کلیک کنید.
زمان باقیمانده برای tracer token را در ستون های زیر مشاهده کنید: Publisher to Distributor, Distributor to Subscriber، و Total Latency. مقدار Pending نشان می دهد که token به نقطه معین شده نرسیده است.در این بخش، با موفقیت از tracer tokens برای تایید همتاسازی داده ها از Publisher به Subscriber استفاده کردید.همچنین می توانید داده ها را در جدول Product در پابلیشر، insert، update، و delete کنید، و جهت مشاهده این تغییرات بعد از اینکه همتاسازی شدند، جدول Product را در Subscriber، کوئری کنید
برنامه ی ذخیره شده ی Stored procedure
یک برنامه ی ذخیره شده چیزی جز کد SQL که ذخیره کرده اید، نیست بنابراین می توانید از این کد بارها و بارها استفاده کنید. بنابراین اگر به جای اینکه مجبور باشید query را هر زمان که به عنوان یک برنامه ذخیزه (stored procedure) کردید بنویسید، به یک query که بارها و بارها نوشته اید، فکر می کنید، می توانید برنامه ی ذخیره شده را فرابخوانید تا کد SQL ذخیره شده را به عنوان بخشی از برنامه ی ذخیره شده اجرا کنید.به علاوه به جای اجرای بارها و بارهای همان کد SQL، توانایی انتقال پارامترها به برنامه ی ذخیره شده را دارید، بنابراین با توجه به آنچه نیاز است، برنامه ی ذخیره شده می تواند براساس مقادیر پارامترهای منتقل شده عمل کند.
گزینه های مختلف برای ایجاد برنامه های ذخیره شده ی SQL Server
گزینه های مختلفی وجود دارند که می توانند برای ایجاد برنامه های ذخیره (stored procedures) شده استفاده شوند. در موضوعات بعدی در مورد ایجاد یک برنامه ی ذخیره شده ی ساده با گزینه های پیشرفته می باشد.برخی از این موضوعات که مورد بررسی قرار خواهند گرفت، عبارتند از:
- ایجاد یک برنامه ی ورودی ساده
- استفاده از پارامترهای ورودی
- استفاده از پارامترهای خروجی
- استفاده از Try Catch
ایجاد یک روش ساده ی ذخیره شده
همانطور که قبلا ذکر شده یک روش ذخیره شده چیزی به جز یک کد ذخیره شده ی SQL نیست که از آن بارها و بارها استفاده می کنید. در این قسمت ایجاد یک روش ذخیره شده ی ساده را بررسی می کنیم.
توضیحات:قبل از ایجاد روش ذخیره شده لازم است نتیجه ی نهایی را بدانید که آیا در حال انتخاب داده هستید یا وارد کردن داده و غیره.در این مثال تمام داده ها را از جدول Person.Address انتخاب می کنیم که در دیتابیس AdventureWorks ذخیره شده است.بنابراین کد ساده ی T-SQL مانند زیر خواهد بود که همه ی ردیف ها را از این جدول بازمی گرداند.
SELECT * FROM AdventureWorks.Person.Address
کد مورد نیاز برای ایجاد روش ذخیره شده در انجام این کار، مشابه کد زیر می باشد:
CREATE PROCEDURE uspGetAddress
AS
SELECT * FROM AdventureWorks.Person.Address
GO
در فراخوانی این برنامه برای گزارش دادن محتوا از جدول تعیین شده، کد مانند زیر خواهد بود:
EXEC uspGetAddress
uspGetAddress
در هنگام ایجاد یک برنامه ی ذخیره شده می توانید از CREATE PROCEDURE یا CREATE PROC استفاده کنید. پس از نام گذاری روش ذخیره شده لازم است از لغت کلیدی As استفاده کنید و بقیه ی آن کد معمول SQL است که به طور طبیعی استفاده می کنید.یک نکته ی مهم این است که نمی توانید از لغت کلیدی Go در روش ذخیره شده استفاده کنید. زمانیکه کامپایلر SQL Server لغت Go را ببیند، آن را پایان batch در نظر می گیرد.همچنین نمی توانید کانتکست دیتابیس را در داخل روش ذخیره شده با استفاده از “USE dbName” تغییر دهید، زیرا این نیز یک batch مجزا می شود و یک روش ذخیره شده مجموعه ای از تنها یک گروه از عبارات می باشد.
چگونگی ایجاد یک روش ذخیره شده ی SQL Server با پارامتره
قدرت واقعی روش های ذخیره شده توانایی انتقال پارامترها و واداشتن روش ذخیره شده به بررسی درخواست های متفاوتی که انجام می شود، می باشد. در این قسمت انتقال مقادیر پارامتر را به یک روش ذخیره شده بررسی می کنیم.
توضیحات:
همانطور که می توانید پارامترها را با کد SQL خود استفاده کنید، همچنین می توانید روش های ذخیره شده ی خود را طوری تنظیم کنید که یک یا دو مقدار پارامتر را بپذیرد.
یک پارامتر:
در این مثال جدول Person.Address را از دیتابیس AdventureWorks تنظیم می کنیم، اما به جای بازگشت همه ی رکوردها، آن را تنها به یک شهر خاص محدود می کنیم. در این مثال فرض بر این است که روی مقدار City که انتقال داده می شود، یک هماهنگی دقیق وجود دارد.
CREATE PROCEDURE uspGetAddress @City nvarchar(30)
AS
SELECT *
FROM AdventureWorks.Person.Address
WHERE City = @City
GO
برای فراخوانی این برنامه ی ذخیره شده آن را مانند زیر اجرا می کنیم:
EXEC uspGetAddress @City = ‘New York’
می توانیم همین کار را انجام دهیم اما به یوزرها اجازه دهیم تا برای جستجوی داده یک نقطه ی شروع ارائه می دهید. در اینجا می توانیم “=” را به یک LIKE تبدیل کنیم و از “%” استفاده کنیم.
CREATE PROCEDURE uspGetAddress @City nvarchar(30)
AS
SELECT *
FROM AdventureWorks.Person.Address
WHERE City LIKE @City + ‘%’
GO
در هر دو مثال قبل فرض بر این است که مقدار هر پارامتر همیشه منتقل خواهد شد. اگر سعی کنید برنامه را بدون انتقال یک پارامتر اجرا کنید، یک پیغام خطا مانند پیغام زیر دریافت خواهید کرد:
Msg 201, Level 16, State 4, Procedure uspGetAddress, Line 0
و
Procedure or function ‘uspGetAddress’ expects parameter ‘@City’, which was not supplied.
مقادیر پارامتر پیش فرض
در بسیاری موارد انتقال همه ی مقادیر پارامتر تمرین خوبی است، اما گاهی اوقات این کار غیرممکن است. بنابراین در این مورد از گزینه ی NULL استفاده می کنیم تا به شما اجازه دهیم مقدار یک پارامتر را انتقال ندهید. اگر این روش ذخیره شده را ایجاد کرده و اجرا کنیم، هیچ داده ای را بازنخواهد گرداند، زیرا در جستجوی مقادیر City است که برابر NULL می باشد.
CREATE PROCEDURE uspGetAddress @City nvarchar(30) = NULL
AS
SELECT *
FROM AdventureWorks.Person.Address
WHERE City = @City
GO
- ما می توانیم این روش ذخیره شده را تغییر داده و از تابع ISNULL استفاده کنیم تا به این مرحله برسیم. بنابراین اگر یک مقدار انتقال داده شود، این مقدار برای محدود کردن مجموعه ی نتیجه استفاده خواهد شد و اگر یک مقدار انتقال داده نشود، همه ی رکوردها را گزارش خواهد داد. (
- نکته: اگر ستون City دارای مقادیر NULL باشد، چنین مقادیری را در خود ندارد. شما مجبور خواهید بود منطق های دیگری مانند City IS NULL را به آن اضافه کنید.)
CREATE PROCEDURE uspGetAddress @City nvarchar(30) = NULL
AS
SELECT *
FROM AdventureWorks.Person.Address
WHERE City = ISNULL(@City,City)
GO
پارامترهای چندگانه :
برقراری پارامترهای چندگانه بسیار آسان می باشد. فقط کافیست هر پارامتر را لیست کرده و نوع داده به وسیله ی یک کاما مجزا می شود، مانند زیر
CREATE PROCEDURE uspGetAddress @City nvarchar(30) = NULL, @AddressLine1 nvarchar(60) = NULL
AS
SELECT *
FROM AdventureWorks.Person.Address
WHERE City = ISNULL(@City,City)
AND AddressLine1 LIKE ‘%’ + ISNULL(@AddressLine1 ,AddressLine1) + ‘%’
GO
برای اجرای این، هرکدام از کارهای زیر را می توانید انجام دهید:
EXEC uspGetAddress @City = ‘Calgary’
–or
EXEC uspGetAddress @City = ‘Calgary’, @AddressLine1 = ‘A’
–or
EXEC uspGetAddress @AddressLine1 = ‘Acardia’
بازگشت مقادیر پارامتر روش ذخیره شده به فراخوانی یک روش ذخیره شده
در بخش قبل در مورد چگونگی انتقال پارامترها به یک روش ذخیره شده (stored procedure) صحبت کردیم، اما گزینه ی دیگر انتقال مقادیر پارامتر از یک روش ذخیره شده به عقب می باشد. یک گزینه ی ممکن برای این کار این است که روش ذخیره شده ی دیگری را فرابخوانید که هیچ داده ای را گزارش نمی دهد، اما مقادیر پارامتر مورد استفاده با فراخوانی stored procedure را گزارش می دهد.
برقراری پارامترهای خارجی برای stored procedure اساسا مشابه برقراری پارامترهای ورودی می باشد، تنها تفاوت این است که شما از عبارت OUTPUT پس از نام پارامتر برای تعیین بازگشت یک مقدار استفاده می کنید. عبارت خروجی یا به وسیله ی کلمه ی کلیدی “OUTPUT” یا فقط “OUT” تعیین می شود.
خروجی ساده:
CREATE PROCEDURE uspGetAddressCount @City nvarchar(30), @AddressCount int OUTPUT
AS
SELECT @AddressCount = count(*)
FROM AdventureWorks.Person.Address
WHERE City = @City
یا به این روش انجام می شود:
CREATE PROCEDURE uspGetAddressCount @City nvarchar(30), @AddressCount int OUT
AS
SELECT @AddressCount = count(*)
FROM AdventureWorks.Person.Address
WHERE City = @City
برای فراخوانی stored procedure آن را مانند زیر اجرا می کنیم. ابتدا قصد داریم یک متغیر را اعلام کنیم، stored procedure را اجرا کنیم و سپس مقادیر گزارش داده شده را انتخاب کنیم:
DECLARE @AddressCount int
EXEC uspGetAddressCount @City = ‘Calgary’, @AddressCount = @AddressCount OUTPUT
SELECT @AddressCount
این کار مانند زیر نیز قابل انجام می باشد که نام های پارامتر stored procedure انتقال داده نمی شوند:
DECLARE @AddressCount int
EXEC uspGetAddressCount ‘Calgary’, @AddressCount OUTPUT
کاربردهای SQL
همان طور در پیش گفته شد، SQL یکی از پرکاربردترین زبان های کوئری در پایگاه های داده است. قصد دارم در زیر تعدادی از کاربردهای SQL را بیاورم:
- به کاربران امکان دسترسی به داده ها در سیستم های مدیریت پایگاه داده رابطه ای را می دهد.
- به کاربران امکان می دهد داده ها را توصیف کنند.
- به کاربران اجازه می دهد تا داده ها را در پایگاه داده تعریف کرده و آن داده ها را دستکاری کنند.
- با استفاده از ماژولهای SQL، کتابخانهها و پیشکامپایلرها، امکان جاسازی در زبانهای دیگر را میدهد.
- به کاربران اجازه می دهد تا پایگاه داده ها و جدول ها را ایجاد و پاک کنند.
- به کاربران اجازه می دهد تا View، رویه های ذخیره شده و توابع را در پایگاه داده ایجاد کنند.
- به کاربران اجازه می دهد تا مجوزها را روی جدول ها، رویه ها و View ها تنظیم کنند.
انتقادها
- طراحی
SQL به طرق مختلف از مبانی نظری خود، مدل رابطه ای و حساب چندگانه منحرف می شود. در مبانی SQL، یک جدول مجموعه ای از تاپل ها است، در حالی که SQL در عمل، جدول ها و نتایج کوئری لیستی از سطر ها هستند. یک سطر ممکن است چندین بار تکرار شود (به عنوان در عبارت LIMIT). منتقدان باور دارند که SQL باید با زبانی جایگزین شود که کاملا به اصول خود پایبند است.
- کامل بودن
مشخصات اولیه SQL از ویژگی های اصلی مانند کلیدهای اصلی پشتیبانی نمی کرد. مجموعه نتایج را نمیتوانستیم نامگذاری کنیم و زیر کوئری ها نیز تعریف نشده بودند. این توانمندی ها در سال 1992 اضافه شدند. نبود sum types مانعی برای استفاده کامل از انواع تعریف شده توسط کاربر SQL تعریف شده است. برای مثال، پشتیبانی از JSON با استاندارد جدیدی در سال 2016 تعریف شد.
- Null
مفهوم Null یا تهی بحث برانگیز است. Null نبودن یک مقدار را نشان می دهد و با اعداد صحیح یا یک رشته خالی فرق می کند. مفهوم Null منطق 3 ارزشی را در SQL اعمال می کند، که یک پیاده سازی ویژه از منطق کلی 3 ارزشی است.
- آیتم های تکراری
یکی دیگر از انتقاداتی که به SQL می شود این است که اجازه میدهد سطر های تکراری وجود داشته باشند. هم چنین در یکپارچهسازی با زبانهایی مانند پایتون مشکلاتی را ایجاد می کند. معمولا با تعریف یک کلید اصلی یا استفاده از یک محدودیت به نام unique در یک یا چند ستون، این مشکل حل می شود.
دوره های مرتبط
دوره کامل تضمینی هوش تجاری با رویکرد کسب درآمد در داخل و خارج از کشور
آنالیز داده و هوش تجاری یکی از پردرآمدهای شغل های دنیا چه در داخل کشور و چه خارج از کشور است. ما در دوره آموزشی صفر تا صد هوش تجاری را به صورت تضمینی آموزش میدهیم.
آموزش صفر تا صد طراحی؛ تحلیل و پیاده سازی سامانه های حرفه ای هوش تجاری با پاور بی آی
آموزش صفر تا صد طراحی؛ تحلیل و پیاده سازی سامانه های حرفه ای هوش تجاری با پاور بی آی در 98 ساعت و توسط اساتید مجرب آماده شده است.
دوره کامل مقدماتی آموزش هوش تجاری
شما در این دوره آموزشی (دوره کامل مقدماتی آموزش هوش تجاری) با مفاهیم و مقدمات هوش تجاری در SQL آشنا می شوید و متوجه می شوید که برای ساخت یک داشبورد در هر نرم افزاری نیاز به چه مراحل و اصول و پایه هایی دارید همچنین با سیستم های هوش تجاری بزرگ آشنا شده و خود را برای تحلیل طراحی و پیاده سازی یک سامانه هوش تجاری آماده می کنید.
دوره آموزش SSAS یا سرویس آنالیز ماکروسافت
دوره آموزش SSAS شامل آموزش کامل تمامی مباحث آنالیز داده و ساخت کیوب در سرویس آنالیز
دوره آموزش SSIS یا سرویس یکپارچه ساز ماکروسافت
دوره غیر حضوری SSIS شامل آموزش کامل تمامی مباحث ای تی ال (ETL ) داده ها به صورت کاملا عملی در محیط عملیاتی و مطابق با تکنولوژی های روز دنیا
دیدگاهتان را بنویسید