آموزش زبان SQL ( اوراکل )- قسمت چهارم

نوشته شده توسط :
آموزش زبان SQL ( اوراکل )- قسمت چهارم

 

در ادامه بخش های قبل آموزش زبان SQL  در قسمت می خواهیم به دستورات دیگری همچون right join ، left join، join و معرفی  Subquery  بپردازیم.

  10- دستور SQL Join :

دستور Join برای ایجاد پیوند جدول ها در پایگاه داده ها استفاده می شود. به عنوان مثال، شما اطلاعات جدول EMPLOYEE را نگاه کنید. شما می توانید پیدا کنید یک کارمند را اگر شما ID  بخش آن را بدانید . با این که، آن فقط یک عدد بی معنی می باشد ،

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

دستور JOIN جهار نوع دارد :

        INNER JOIN   (JOIN)

        LEFT OUTER JOIN  (LEFT JOIN)

        RIGHT OUTER JOIN (RIGHT JOIN)

        FULL OUTER JOIN    (OUTER JOIN)

        CROSS JOIN

10.1 -  دستور (INNER JOIN   (JOIN :

دستور  INNER JOIN  نمایش می دهد همه ردیف هایی از هر دو جدول  که حداقل یک داده متناظر در ستون های مرتبط با هم داشته باشد.

نحوه  syntax آن :

SELECT column_name(s)

FROM table1

INNER JOIN table2

ON table1.column_name=table2.column_name;

شما می توانید به جای  INNER JOIN از JOIN استفاده کنید. نتیجه همان است :

SELECT column_name(s)

FROM table1

JOIN table2

ON table1.column_name=table2.column_name;

مثال دیگر :

INNER JOIN دو جدول EMPLOYEE و DEPARTMENT :

Select Emp.Emp_Id

     ,Emp.First_Name

     ,Emp.Last_Name

     ,Emp.Dept_Id

     ,Dep.Name Dept_Name

From   Employee Emp

Inner  Join Department Dep

On     Emp.Dept_Id = Dep.Dept_Id

Order  By Emp.Emp_Id;

نحوه syntax  برای oracle  :

در بانک اطلاعاتی oracle  بهتر است از ضرب دکارتی به جای INNER JOIN استفاده شود.

Select Emp.Emp_Id

    ,Emp.First_Name

    ,Emp.Last_Name

    ,Emp.Dept_Id

    ,Dep.Name Dept_Name

From   Employee   Emp

    ,Department Dep

Where  Emp.Dept_Id = Dep.Dept_Id

Order  By Emp.Emp_Id;

 

10.2 - دستور LEFT OUTER JOIN  یا (LEFT JOIN)  :

دستور  LEFT JOIN تمام رکوردهای جدول سمت چپ (table1) و آن دسته از سطر های جدول سمت راست (table2) را که با جدول سمت چپ متناظر است نمایش می دهد. اگر در جدول سمت راست رکوردی متناظری وجود نداشته باشد نتیجه در سمت راست صفر خواهد بود.

 

تصویر زیر را نگاه کنید.

 مثال برای LEFT JOIN  :

Select Cus.Cust_Id

    ,Cus.Fed_Id

    ,Cus.State

    ,Ofc.Cust_Id As Ofc_Cust_Id

    ,Ofc.Officer_Id

    ,Ofc.Start_Date

    ,Ofc.Title

From   Customer Cus  -- Table1

Left   Outer Join Officer Ofc  -- Table2

On     Cus.Cust_Id = Ofc.Cust_Id;

نتیجه کوئری بالا :

نحوه syntax  برای oracle  :

در دیتابیس اوراکل با روش دیگری می توان LEFT JOIN  را پیاده سازی کرد.

می توان با ازافه کردن  (+) به فیلد شرط در جدول دوم این کار را انجام داد

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

Select Cus.Cust_Id

    ,Cus.Fed_Id

    ,Cus.State

    ,Ofc.Cust_Id As Ofc_Cust_Id

    ,Ofc.Officer_Id

    ,Ofc.Start_Date

    ,Ofc.Title

From   Customer Cus -- Table1

    ,Officer  Ofc -- Table2

Where  Cus.Cust_Id = Ofc.Cust_Id(+);

10.3- دستور RIGHT OUTER JOIN  یا (RIGHT JOIN) :

دستور  RIGHT JOIN تمام رکوردهای جدول سمت راست (table2) و آن دسته از سطر های جدول سمت چپ (table1) را که با جدول سمت راست متناظر است نمایش می دهد. اگر در جدول سمت چپ رکوردی متناظری وجود نداشته باشد نتیجه در سمت چپ صفر خواهد بود.

Select Cus.Cust_Id

    ,Cus.Fed_Id

    ,Cus.State

    ,Ofc.Cust_Id As Ofc_Cust_Id

    ,Ofc.Officer_Id

    ,Ofc.Start_Date

    ,Ofc.Title

From   Customer Cus  -- Table1

right   Outer Join Officer Ofc  -- Table2

On     Cus.Cust_Id = Ofc.Cust_Id;

نحوه syntax  برای oracle  :

در دیتابیس اوراکل با روش دیگری می توان RIGHT JOIN  را پیاده سازی کرد.

می توان با ازافه کردن  (+) به فیلد شرط در جدول دوم این کار را انجام داد

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

Select Cus.Cust_Id

    ,Cus.Fed_Id

    ,Cus.State

    ,Ofc.Cust_Id As Ofc_Cust_Id

    ,Ofc.Officer_Id

    ,Ofc.Start_Date

    ,Ofc.Title

From   Customer Cus -- Table1

    ,Officer  Ofc -- Table2

Where  Cus.Cust_Id(+) = Ofc.Cust_Id;

10.4- دستور FULL OUTER JOIN  یا (OUTER JOIN) :

دستور FULL JOIN ترکیبی از دو دستور RIGHT OUTER JOIN   و LEFT OUTER JOIN  می باشد و تمام ردیف های جدول سمت چپ (table1) و سمت راست (table2) را نمایش می دهد.

 

نحوه  syntax آن :

SELECT columns

FROM table1

FULL [OUTER] JOIN table2

ON table1.column = table2.column;

11- بررسی Subquery  :

در اوراکل، زیر پرس و جو (subquery) پرس و جو (query)می باشد در یک پرس و جو (query) دیگر  است. شما می توانید زیر پرس و جوی  در ساختار دستورات SQL را ایجاد کنید.

این subquery  می توانید در عبارت WHERE شرطی از جدول  دیگر (the FROM clause) باشد با یک عبارت select  دیگر (the SELECT clause) باشد.

 

11.1- معرفی  زیر پرس و جو  (Subquery) از نوع  the Where Clause

در اکثر موارد، زیر پرس و جو در عبارت WHERE  قرارمی گیرد . این Subquery  نیز می تواند به صورت Subquery  باشد.

Select Acc.Account_Id

     ,Acc.Open_Date

     ,Acc.Product_Cd

     ,Acc.Avail_Balance

From   Account Acc

Where  Acc.Cust_Id In

      (Select Cus.Cust_Id From Customer Cus Where Cus.Cust_Type_Cd = 'B')

 

11.2- معرفی زیر پرس و جوی (Subquery) از نوع the From Clause

یک Subquery همچنین می توانید بدنه همان دستور اول باشد. این مدل معمولاً یک تعریف VIEW در ون یک عبارت select می باشد.

 

Select Cus.Cust_Id

     ,Cus.Address

     ,Cus.Fed_Id

     ,Acc2.Sum_Avail_Balance

From   Customer Cus

     , -- Define a inline view.

      (Select Acc.Cust_Id

             ,Sum(Acc.Avail_Balance) As Sum_Avail_Balance

       From   Account Acc

       Group  By Acc.Cust_Id) Acc2

Where  Cus.Cust_Id = Acc2.Cust_Id;

11.3  - معرفی زیر پرس و جوی (Subquery) از نوع  the Select clause

یک زیر پرس و جوی (Subquery) همچنین می توانید به عنوان یک ستون در عبارت ما قرار گیرد.

Select Cus.Cust_Id

     ,Cus.Address

     ,Cus.Fed_Id

     ,(Select Sum(Acc.Avail_Balance)

       From   Account Acc

       Where  Acc.Cust_Id = Cus.Cust_Id) As Sum_Avail_Balance

From   Customer Cus;

 

 

با تشکر از همراهی شما دوستان عزیز

در زیر سرفصل را یک بار دیگر مرور می کنیم:

 

1- معرفی

2- یادگیری وصل شدن به پایگاه داده

3-  شروع سریع آموزش SQL

3.1- مثال برای کوئری

4- موارد خاص از اوراکل

4.1- دستور  DUAL

4.2- شی SEQUENCE

5-  پرس و جو ها ( QUERY )

5.1- دستور SQL Select

5.2- دستور SQL Distinct

5.3- دستور SQL Where

5.4- دستور SQL And Or

5.5- دستور SQL IN

5.6- دستور  SQL Between 

5.7- دستور  SQL Wildcard 

5.8- دستور  SQL Like 

5.9- دستور  SQL Order By 

5.10- دستور  SQL Group By 

5.11- دستور  SQL Having 

6- دستور  Insert 

6.1- دستور  Insert Into 

6.2- دستور  Insert Into Select 

7- دستور  Update 

8- دستور  Delete 

9- دستور  SQL Functions 

9.1- دستور  SQL Count 

9.2- دستور  SQL Sum 

9.3- دستور  SQL AVG 

9.4- دستور  SQL MIN 

9.5- دستور  SQL MAX 

10- دستور  SQL Join 

10.1- دستور ( INNER JOIN (or JOIN

10.2- دستور ( LEFT OUTER JOIN (or LEFT JOIN

10.3- دستور  (RIGHT OUTER JOIN (or RIGHT JOIN

10.4- دستور  (FULL OUTER JOIN (Or OUTER JOIN

11- معرفی Subquery 

11.1- معرفی Subquery in the Where Clause 

11.2- معرفی  Subquery in the From Clause 

11.3- معرفی Subquery in the Select clause