#Data_Manipulation_Language یا زبان کار با داده ( #DML ) برای اصلاح و پرس و جوی داده ها در پایگاه داده استفاده می گردد. این کار توسط دستورات SELECT، INSERT، UPDATE و DELETE انجام می شود. تعریف این دستورات بصورت زیر است:
- SELECT - برای پرس و جوی داده در پایگاه داده
- INSERT - برای درج داده جدید در جداول
- UPDATE - برای تغییر داده ها در جداول
- DELETE - برای حذف داده ها از جداول
- هر جزء دستور در یک خط جدید شروع گردد
- شروع هر جزء با شروع سایر اجزاء همراستا باشد
- اگر یک جزء دارای چند بخش است، آنها باید در خطوط جداگانه قرار گیرند با رعایت تورفتگی نشان دهنده رابطه با سایر اجزاء
- برای کلمات کلیدی از حروف بزرگ استفاده می شود
- برای کلمات تعریف شده توسط کاربر از حروف کوچک استفاده می شود
دستور SELECT
این دستور برای استخراج داده ها از جداول براساس شرایط مشخص استفاده می شود. ترتیب اجزاء دستور بصورت زیر می باشد:
SELECT DISTINCT item(s) FROM table(s) WHERE predicate GROUP BY field(s) ORDER BY fields
SELECT LastName, FirstName, phone FROM Employees ORDER BY LastName
LastName FirstName phone Hagans Jim 604-232-3232 Wong Bruce 604-244-2322
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’
دیدگاه کاربران
0 دیدگاهشما هم دیدگاه خود را ارسال کنید