آموزشsql
عملگر union در SQL
عملگر UNION دو یا چند دستور SELECT را با یکدیگر ترکیب می کند.
عملگر UNION
عملگر UNION برای ترکیب نتایج دو یا چند دستور SELECT استفاده می شود.
توجه داشته باشید که هر دستور SELECT در عملگر UNION باید تعداد ستونهای یکسانی را برگردانند. همچنین ستونها باید Data Type یکسانی داشته باشند. علاوه بر این ستونها در هر دستور SELECT باید به یک صورت مرتب شده باشند. (Order By)
فرم عملگر UNION:
SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2نکته: عملگر UNION تنها داده هایی را به صورت پیش فرض انتخاب می کند که از یکدیگر متمایز باشند. برای اینکه داده های تکراری را هم بیاوریم از UNION ALL استفاده کنید.
فرم عملگر UNION ALL:
SELECT column_name(s) FROM table_name1
UNION ALL
SELECT column_name(s) FROM table_name2نام ستون ها در جدول نتایج همیشه برابر نام ستونها در دستور SELECT اول در عملگر UNION می باشد.
مثال:
به جداول زیر نگاه کنید:
1- جدول کارمندان نروژی:
E_ID E_Name 01 Hansen, Ola 02 Svendson, Tove 03 Svendson, Stephen 04 Pettersen, Kari 2- جدول کارمندان آمریکایی:
E_ID E_Name 01 Turner, Sally 02 Kent, Clark 03 Svendson, Stephen 04 Scott, Stephen می خواهیم لیست اسامی کارمندان امریکایی و نروژی را به صورت متمایز ( بدون تکرار) داشته باشیم.
از دستور زیر استفاده می کنیم:
SELECT E_Name FROM Employees_Norway
UNION
SELECT E_Name FROM Employees_USAجدول نتایج به شکل زیر خواهد بود:
E_Name Hansen, Ola Svendson, Tove Svendson, Stephen Pettersen, Kari Turner, Sally Kent, Clark Scott, Stephen توجه:این دستور نمی تواند برای نمایش دادن اسامی تمام کارکنان امریکایی و نروژی استفاده شود. در مثال فوق دو کارمند با نام یکسان داریم و تنها بکی از آنها در جدول نتایج آمده است. دستور UNION تنها داده ها را به صورت متمایز (بدون تکرار) بر می گرداند.
مثال:
حال می خواهیم تمامی کارمندان آمریکایی و نروژی را لیست کنیم از دستور زیر استفاده می کنیم:
SELECT E_Name FROM Employees_Norway
UNION ALL
SELECT E_Name FROM Employees_USAنتیجه:
E_Name Hansen, Ola Svendson, Tove Svendson, Stephen Pettersen, Kari Turner, Sally Kent, Clark Svendson, Stephen Scott, Stephen عملگرهای and و or در SQL
عملگرهای AND و OR برای فیلتر کردن رکوردها، براساس بیشتر از یک شرط استفاده می شوند.
عملگرهای AND و OR
عملگر AND رکوردی را نمایش می دهد که هم شرط اول و هم شرط دوم در آن صدق کند.
عملگر OR رکوردی را نمایش می دهد که یا شرط اول و یا شرط دوم یا هر دو در آن صدق کند.
مثالی از عملگر AND
در جدول "Persons":
P_Id LastName FirstName Address City 1 Hansen Ola Timoteivn 10 Sandnes 2 Svendson Tove Borgvn 23 Sandnes 3 Pettersen Kari Storgt 20 Stavanger می خواهیم تنها افرادی را انتخاب کنیم که نام آنها مساوی "Tove" و نام خانوادگی آنها مساوی "Svendson" باشد.
برای این منظور از دستور SELECT زیر استفاده می کنیم.
SELECT * FROM Persons
WHERE FirstName='Tove'
AND LastName='Svendson'نتیجه به شکل زیر خواهد شد:
P_Id LastName FirstName Address City 2 Svendson Tove Borgvn 23 Sandnes مثالی از عملگر OR
می خواهیم افرادی را که نام آنها Tove یا Ola می باشد را انتخاب کنیم:
از دستور زیر استفاده می کنیم:
SELECT * FROM Persons
WHERE FirstName='Tove'
OR FirstName='Ola'نتیجه به شکل زیر خواهد بود:
P_Id LastName FirstName Address City 1 Hansen Ola Timoteivn 10 Sandnes 2 Svendson Tove Borgvn 23 Sandnes ترکیب AND و OR
می توانید AND و OR را با هم ترکیب کنید. (از پرانتز برای ترکیب عبارات استفاده کنید)
می خواهیم افرادی را انتخاب کنیم که نام خانوادگی آنها Svendson و نام آنها Tove یا Ola باشد.
از دستور زیر استفاده می کنیم:
SELECT * FROM Persons WHERE
LastName='Svendson'
AND (FirstName='Tove' OR FirstName='Ola')جدول نتیجه به شکل زیر خواهد بود:
P_Id LastName FirstName Address City 2 Svendson Tove Borgvn 23 Sandnes قرار دادن صفر در سمت چپ اعداد
صفر در سمت چپ یک عدد
جدول Products را در زیر داریم:
Prod_Id ProductName Unit UnitPrice 00001 Jarlsberg 1000 g 120000 00002 Mascarpone 1000 g 9505000 00003 Gorgonzola 1000 g 60200000 می خواهیم هنگام درج کردن محصولات، کد محصول همیشه، شامل 5 کاراکتر باشد.
از کوئری زیر استفاده می کنیم:
declare @max_ID char(5) select @max_ID=right( Replicate('0',5)+ cast( isnull( max( cast(Prod_ID as int) ) ,0 ) +1 as nvarchar ) ,5 ) from Products Insert into Products (prod_ID,ProductName,Unit,UnitPrice) Values(@max_ID,'Test','1000g',250000)
توجه: استفاده ازنوع داده های رشته ای به عنوان اندیس یا کلید اصلی، یک اشتباه در طراحی است.
توضیح: نوع داده varchar و هر نوع داده کاراکتری یا رشته ای بدترین نوع انتخاب برای اندیس جدول است. این اشتباه زمانی بدتر خواهد شد که از این فیلد به عنوان کلید اصلی نیز استفاده کنید؛ و سرانجام اشتباه با استفاده از این کلید به عنوان کلید خارجی تکمیل خواهد شد!
البته توجه داشته باشید که استفاده از فیلد اندیس کاراکتری در کنار کلید اصلی مشکل خاصی نخواهد داشت. فقط این مورد در صروت لزوم و زمانی که از آن فیلد به کرات برای جستجو استفاده می کنید مورد استفاده قرار دهید.
علت اشتباه بودن این انتخاب در ساخت جدول اندیس و تعداد مقایسه های انجام شده بر می گردد. به عنوان یک مثال ساده مقایسه، دو نوع عددی می توانند به راحتی توسط دستور عمل های CPU با یکدیگر مقایسه شوند، در حالی که درنوع کارکتری باید تک تک کارکاتر ها با استفاده از شبیه سازی نرم افزاری مقایسه شوند. در رشته های یونیکد هم که حجم کاراکتر ها دو برابر می شوند.
راه حل: راه حل بسیار ساده استفاده از انواع داده عددی مانند int یا bigint به عنوان کلید اصلی است. در عین حال می توانید در صورت نیاز از فیلد استفاده شده در مثال بالا نیز به عنوان یک فیلد اطلاعاتی نیز استفاده نمایید.
بنابراین:
Prod_ID Prod_Code ProductName Unit UnitPrice 1 00001 Jarlsberg 1000 g 120000 2 00002 Mascarpone 1000 g 9505000 3 00003 Gorgonzola 1000 g 60200000 برای مشاهده فیلم های آموزشی مقدماتی تا پیشرفته پایگاه داده SQLServer کلیک کنید.
کاربرد View در SQL
View یک جدول مجازی است.
این فصل نشان می دهد که چگونه یک View را ایجاد، حذف و یا تغییر دهیم.
دستور CREATE VIEW
در SQL یک View یک جدول مجازی است که نتیجه حاصل از عبارات و دستورات SQL می باشد.
یک view شامل سطر و ستونهایی دقیقا شبیه یک جدول واقعی است. فیلدها در یک View فیلدهایی هستند که از یک یا چند جدول واقعی در پایگاه داده گرفته شده اند.
شما می توانید توابع موجود در SQL، عبارت WHERE و JOIN را به یک View اضافه کنید و داده های نتیجه را به همان صورت که داده ها در یک جدول آورده می شوند، نشان دهید.
فرم CREATE VIEW:
CREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE conditionتوجه: یک View همیشه داده های به روز شده (up-to-date) را نشان می دهد! موتور یک پایگاه داده، داده های یک View را هر زمانی که View فرا خوانی می شود ، به روز می کند.
مثال:
اگر پایگاه داده Northwind را دارید شما می توانید چندین view را که به طور پیش فرض روی آن نصب شده است را ببینید.
View با نام Current Product List، لیست محصولات جاری (محصولاتی که تولید آنها متوقف نشده است) را از جدول Products نشان می دهد. این view توسط دستور زیر ایجاد می شود.
CREATE VIEW [Current Product List] AS
SELECT ProductID,ProductName
FROM Products
WHERE Discontinued=Noمی توانیم View فوق را به صورت زیر فراخوانی کنیم:
SELECT * FROM [Current Product List]مثال دیگری از View در پایگاه داده Northwind، تمام محصولاتی را که در جدول Products قیمت واحدشان بزرگتر از میانگین قیمت هاست را بر می گرداند:
CREATE VIEW [Products Above Average Price] AS
SELECT ProductName,UnitPrice
FROM Products
WHERE UnitPrice>(SELECT AVG(UnitPrice) FROM Products)می توانیم view فوق را به صورت زیر فراخوانی کنیم:
SELECT * FROM [Products Above Average Price]مثال دیگری از View در پایگاه داده Northwind، کل فروش را برای هر طبقه از محصولات در سال 1997 محاسبه می کند. توجه کنید که این view داده هایش را از view ی دیگری که Product Sales for 1997 نامیده می شود می گیرد.
CREATE VIEW [Category Sales For 1997] AS
SELECT DISTINCT CategoryName,Sum(ProductSales) AS CategorySales
FROM [Product Sales for 1997]
GROUP BY CategoryNameمی توانیم view فوق را به صورت زیر اجرا کنیم:
SELECT * FROM [Category Sales For 1997]همچنین می توان یک شرط روی Query فوق تعریف کرد. می خواهیم فروش کل محصولاتی که در گروه Beverages هستند را ببینیم.
SELECT * FROM [Category Sales For 1997]
WHERE CategoryName='Beverages'تغییر (به روز رسانی) یک View
می توانیم یک View را به وسیله دستور زیر به روز رسانی کنیم:
فرم دستور CREATE OR REPLACE VIEW:
CREATE OR REPLACE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE conditionمی خواهیم ستون Category را به Current Product List اضافه کنیم. به وسیله دستور زیر view را تغییر می دهیم:
CREATE VIEW [Current Product List] AS
SELECT ProductID,ProductName,Category
FROM Products
WHERE Discontinued=Noحذف یک View
می توانید یک view را به وسیله فرمان DROP VIEW حذف کنیم.
فرم DROP VIEW:
DROP VIEW view_nameبرای مشاهده فیلم های آموزشی مقدماتی تا پیشرفته پایگاه داده SQLServer کلیک کنید.
مقادیر null در SQL
مقدار NULL بیانگر داده ای است که مشخص نشده و فیلدی خالی است.
به طور پیش فرض، یک ستون از جدول می تواند مقدار NULL را در خود نگه دارد.
در این فصل می خواهیم، عملگرهای IS NULL و IS NOT NULL را توضیح دهیم.
مقدار NULL
اگر وارد کردن مقدار در ستونی در یک جدول، اختیاری باشد، می توانیم در رکورد جدید یا رکورد موجود بدون اضافه کردن مقداری در این ستون، مقدار NULL را در این فیلد داشته باشیم.
با مقدار NULL نسبت به مقادیر دیگر، رفتار متفاوتی می شود.
در فیلدهای نامشخص یا نامعلوم که مقداری وارد نمی شود، مقدار NULL وجود دارد.
توجه:NULL و صفر را نمی توان با هم یکی دانست، این دو معادل یکدیگر نیستند.
کار با NULL
به جدول Persons در زیر نگاه کنید:
P_Id LastName FirstName Address City 1 Hansen Ola Sandnes 2 Svendson Tove Borgvn 23 Sandnes 3 Pettersen Kari Stavanger فرض کنید که وارد کردن مقدار در ستون Address اختیاری باشد. این بدان معناست که اگر رکوردی را بدون وارد کردن مقداری در ستون Address درج کنیم، ستون Address با مقدار NULL ذخیره می شود.
چگونه می توانیم تست کنیم فیلدی مقدار NULL دارد؟
با عملگر های مقایسه ای مثل (=, <, >) نمی توان مقدار NULL را تست کرد.
بلکه باید از عملگرهای IS NULL و IS NOT NULL استفاده کنیم.
IS NULL
چگونه می توان رکوردهایی را که در ستون Address مقدار NULL دارند را انتخاب کرد؟
باید از عملگر IS NULL برای این کار استفاده کرد:
SELECT LastName,FirstName,Address FROM Persons
WHERE Address IS NULLنتیجه چنین خواهد بود:
LastName FirstName Address Hansen Ola Pettersen Kari نکته: همیشه از IS NULL برای مشاهده فیلدهای حاوی مقدار NULL استفاده کنید.
IS NOT NULL
چگونه رکوردهایی را که مقدارشان NULL نیست را از ستون Address انتخاب کنیم؟
باید از عملگر IS NOT NULL استفاده کنیم:
SELECT LastName,FirstName,Address FROM Persons
WHERE Address IS NOT NULLنتیجه چنین خواهد شد:
LastName FirstName Address Svendson Tove Borgvn 23 در فصل بعد به توابع () ISNULL() ,NVL() ,IFNULL() ,COALESCE نظری خواهیم داشت.
برای مشاهده فیلم های آموزشی مقدماتی تا پیشرفته پایگاه داده SQLServer کلیک کنید.
مقدمه آموزش SQL
SQL یک زبان استاندارد برای دسترسی به پایگاه داده می باشد. در این آموزش، چگونگی دسترسی به داده ها و دستکاری آنها را با استفاده از SQL فراخواهید گرفت.(مثل فرامین SELECT, UPDATE, DELETE, INSERT, WHERE)
نام مستعار در SQL
در SQL می توان یک نام مستعار (Alias) به جدول یا ستون داد.
نام مستعار (Alias) در SQL
شما می توانید به جدول یا ستون نام دیگری را با استفاده از تخصیص یک نام مستعار بدهید. این امکان می تواند هنگامی که شما ستون یا جدولی دارید که نام پیچیده یا طولانی ایی دارد قابلیت مفیدی باشد.
یک نام مستعار می تواند هر چیزی باشد اما معمولا کوتاه می باشد.
تخصیص یک نام مستعار برای جداول:
SELECT column_name(s)
FROM table_name AS alias_nameتخصیص یک نام مستعار برای ستون ها:
SELECT column_name AS alias_name
FROM table_nameمثال Alias:
فرض کنید یک جدول با نام Persons و جدولی دیگر با نام Product_Orders داریم. می خواهیم نام های مستعار P و po را به آنها بدهیم.
می خواهیم تمام سفارشاتی را که Ola Hansen مسئول آنها می باشد را لیست کنیم.
از دستور زیر استفاده می کنیم:
SELECT po.OrderID, p.LastName, p.FirstName
FROM Persons AS p,
Product_Orders AS po
WHERE p.LastName='Hansen' AND p.FirstName='Ola'نکته: جدا کننده بین اشیا در SQL علامت "," می باشد.
دستور مشابه بدون استفاده از Alias:
SELECT Product_Orders.OrderID, Persons.LastName, Persons.FirstName
FROM Persons,
Product_Orders
WHERE Persons.LastName='Hansen' AND Persons.FirstName='Ola'همانطور که در دستور های بالا می بینید نام مستعار، یک query را هم برای نوشتن و هم به لحاظ خواندن آسان تر می کند.
برای مشاهده فیلم های آموزشی مقدماتی تا پیشرفته پایگاه داده SQLServer کلیک کنید.
صفحه2 از2
- 1
- 2