مارس 5, 2019 Mostafa بدون دیدگاه

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

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

دستور 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 برای ترکیب و ادغام دو یا چند ستون مختلف از ۲ یا چند جدول و نشان دادن آنها در یک ستون مشترک استفاده می شود .
در دستور 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

 


برچسب ها