MIDOONY Logo

Sql (بخش دوم - زبان کار با داده برای انجام اصلاح و پرس و جوی داده ها Data Manipulation Language)

1400/05/05
Sql (بخش دوم - زبان کار با داده برای انجام اصلاح و پرس و جوی داده ها Data Manipulation Language)

#Data_Manipulation_Language یا زبان کار با داده ( #DML ) برای اصلاح و پرس و جوی داده ها در پایگاه داده استفاده می گردد. این کار توسط دستورات SELECT، INSERT، UPDATE و DELETE انجام می شود. تعریف این دستورات بصورت زیر است:

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

دستور SELECT

این دستور برای استخراج داده ها از جداول براساس شرایط مشخص استفاده می شود. ترتیب اجزاء دستور بصورت زیر می باشد:

    SELECT DISTINCT item(s)
    FROM table(s)
    WHERE predicate
    GROUP BY field(s)
    ORDER BY fields
مثلا برای ایجاد لیست تلفن کارمندان از جدول Employees از دستور زیر استفاده می شود:
        SELECT LastName, FirstName, phone
        FROM Employees
        ORDER BY LastName
این دستور نام خانوادگی، نام و شماره تلفن کارمندان را مانند زیر نشان می دهد:
        LastName FirstName phone
        Hagans Jim 604-232-3232
        Wong Bruce 604-244-2322
در مثال بعدی از جدول Publishers شامل نام، شهر و کشور انتشارات استفاده می گردد:
    Publisher Name Publisher City Publisher Province Publisher Country
    Acme Publishing Vancouver BC Canada
    ABC Publishing Toronto ON Canda

همانطور که می بینید اسم کانادا دارای اشتباه است که بعدا توسط دستور UPDATE آنرا اصلاح می نماییم. برای استخراج نام انتشارات و نام شهر از دستور SELECT زیر استفاده می نماییم:

    SELECT PubName, city
    FROM Publishers

اگر حرف کاما از دستور بالا حذف شود فقط نام انتشارات نشان داده می شود که با اسم سرستون city نمایش داده خواهد شود چون sql کلمه city را به عنوان نام ستون در نظر می گیرد: 

    SELECT PubName city
    FROM Publishers

دستور SELECT با شرط

SELECT statement with WHERE criteria

گاهی اوقات فقط بخشی از جدول مدنظر ما می باشد، مثلا انتشارات واقع در شهر Vancouver. در این حالت از دستور WHERE city = ‘Vancouver’ استفاده می نماییم. 
عبارت BETWEEN در بخش WHERE برای محدود کردن رکوردها بکار می رود:

مثال اول

    SELECT StorID, qty, TitleID
    FROM Sales
    WHERE qty BETWEEN 20 and 50

مثال دوم

    SELECT StorID, qty, TitleID
    FROM Sales
    WHERE qty >= 20 and qty <= 50

مثال سوم

    SELECT StorID, qty, TitleID
    FROM Sales
    WHERE qty NOT BETWEEN 20 and 50

عبارت IN در بخش WHERE نیز رکوردها را محدود می کند:

    SELECT *
    FROM Publishers
    WHERE province = ‘BC’ OR province = ‘AB’ OR province = ‘ON’

دستور بالا بااستفاده از IN بصورت زیر می باشد:

    
SELECT * FROM Publishers WHERE province IN (‘BC’, ‘AB’, ‘ON’)

در مثال های بعدی کاربرد عبارت NULL و NOT NULL برای خالی بودن یا نبودن مقادیر را نشان داده شده است:

    SELECT price, title
    FROM Books
    WHERE price IS NULL

مثال بعدی

    SELECT price, title
    FROM Books
    WHERE price IS NOT NULL

با استفاده از عبارت LIKE در بخش WHERE و حروف نشان دهنده میزان تطابق می توان رکوردها را محدود نمود. این دستور روی ستون هایی از نوع char،  varchar،  text، datetime  و smalldatetime  استفاده می شود. برای مثال province = ‘N%’ تمام استان هایی که با حرف  N شروع می شوند را نشان می دهد.
حروف استفاده شده در دستور LIKE بشرح زیر هستند:

%  نشان دهنده هر عبارتی شامل صفر یا بیشتر حرف
_  نشان دهنده یک حرف تکی
[ ]  هر حرف تکی در محدوده مشخص مانند [a-f] یا  [abcdef]
[^]  هر حرف تکی که در محدوده مشخص نباشد مانند [^a - f] یا [^abcdef]

مثال اول: جستجوی نام خانوادگی ها که با حروف Mc شروع می شوند

    SELECT LastName
    FROM Employees
    WHERE LastName LIKE ‘Mc%’

مثال دوم: جستجوی نام خانوادگی ها که با حروف inger تمام می شوند

    SELECT LastName
    FROM Employees
    WHERE LastName LIKE ‘%inger’

مثال سوم: جستجوی نام خانوادگی ها که شامل حروف en می باشند

    SELECT LastName
    FROM Employees
    WHERE LastName LIKE ‘%en%’

جزء ORDER BY
از این جزء برای مرتب کردن لیست خروجی استفاده می شود. کلمه ASC برای ترتیب صعودی و کلمه DESC برای ترتیب نزوی بکار می رود.

مثال صعودی:

    SELECT *
    FROM Employees
    ORDER BY HireDate ASC

مثال نزولی:

    SELECT *
    FROM Books
    ORDER BY type, price DESC

جزء GROUP BY
این دستور برای گروه بندی سطرهای خروجی و ایجاد مقادیر سرجمع مانند زیر استفاده می شود:

    SELECT type
    FROM Books
    GROUP BY type

و بصورت کامل

    SELECT type AS ‘Type’, MIN(price) AS ‘Minimum Price’
    FROM Books
    WHERE royalty > 10
    GROUP BY type

مثال بالا با شرط قیمت های غیرخالی

    SELECT type, price
    FROM Books
    WHERE price is not null

و بصورت کامل

    SELECT type AS ‘Type’, MIN(price) AS ‘Minimum Price’
    FROM Books
    WHERE price is not null
    GROUP BY type

دستور COUNT با GROUP BY
اگر بخواهیم مقادیر مختلف را در گروه های مجزا شمارش نماییم از این دستور استفاده می نماییم، مانند شمارش تعداد کتاب ها براساس نوع آنها:

    SELECT COUNT(*)
    FROM Books
    GROUP BY type

دستور AVG و SUM با GROUP BY
همچنین دستور AVG برای محاسبه میانگین و دستور SUM برای جمع مقادیر هر گروه استفاده می شود.

مثال اول

    SELECT AVG(qty)
    FROM Books
    GROUP BY type

مثال دوم

    SELECT SUM(qty)
    FROM Books
    GROUP BY type

مثال سوم

    SELECT ‘Total Sales’ = SUM(qty), ‘Average Sales’ = AVG(qty), stor_id
    FROM Sales
    GROUP BY StorID ORDER BY ‘Total Sales’

جزء HAVING
این دستور برای محدود کردن سطرها بکار می رود مانند دستور WHERE با این تفاوت که در این دستور از توابع تجمیعی می توانیم استفاده نماییم که در WHERE امکان نداشت.

مثال

    SELECT au_fname AS ‘Author”s First Name’, province as ‘Province’
    FROM Authors
    GROUP BY au_fname, province
    HAVING province <> ‘BC’

#Database

#Sql

0 1129
دیدگاه کاربران
0 دیدگاه
شما هم دیدگاه خود را ارسال کنید