وبلاگ فرهاد مرتضی پور

Farhad Mortezapour's Blog

وبلاگ فرهاد مرتضی پور

Farhad Mortezapour's Blog

مدیریت منابع پردازنده در LINQ

وقتی برای نخستین‌بار برنامه‌های کامپیوتری تولید شدند، تنها محاسبات سریال انجام می‌دادند و این محاسبات در هسته پردازنده کامپیوتر انجام می‌شد؛ یکی پس از دیگری. امروزه، همه چیز تغییر‌کرده است. محاسبات به‌صورت‌موازی و همزمان انجام می‌شوند و فناوری‌های پردازش‌موازی این کار را به‌راحتی انجام ‌دهند‌. ادامه مطلب ...

ویژگی‌ های جدید در SQL Server 2008 R2

پایگاه ‌داده SQL Server 2008 R2 آخرین پایگاه‌ داده رابطه‌ای مایکروسافت برای کاربردهای سازمانی است که پلتفرم کسب‌وکار هوشمند (BI) مایکروسافت را نیز شامل ‌می‌شود. این پلتفرم بر‌اساس قابلیت‌های جدیدی که در SQL Server 2008 R2 وجود دارد، بنا شده ‌است. اگرچه عبارت R2 در ظاهر به معنای بهبود نسخه قبلی، یعنی 2008 R1 است که قبلاً ارائه شده‌بود، اما مایکروسافت، مجموعه گسترده‌ای از قابلیت‌های جدید را فراهم کرده که برای نخستین ‌بار در SQL Server 2008 R2 ارائه شده ‌اند. در این نسخه پشتیبانی از قابلیت‌های جدید مربوط به ارائه مستقیم سرویس‌های BI و قابلیت‌های جدید فراوان در استفاده از روش‌های Pivot کردن داده، به عنوان ویژگی‌های جدیدی به شمار می‌رود که به تازگی به این نرم‌افزار افزوده شده‌است، اما بیشتر تحولات در SQL Server 2008 R2 به واسطه امکانات جدید و ارائه سرویس‌های جدیدی است که قبلاً در این پایگاه‌داده موجود نبود. ادامه مطلب ...

OLAP پردازش تحلیلی آنلاین

OLAP مخفف واژه های Online analytical processing بوده و در زبان پارسی “پردازش تحلیلی آنلاین” ترجمه می شود. رویکردی در جهت یافتن تحلیل های موثر از داده هاست و پشتیبانی از داده های چند بعدی از دیگر خصوصیات آن به شمار می رود. حال می بایست به چند سوال پاسخ داد:

  • داده های چند بعدی چیست؟
  • تحلیل داده ها به چه معناست؟
  • کاربرد OLAP در چه حوزه هایی بررسی می شود؟
  • مولفه های دخیل در فراهم سازی خوراک OLAP کدامند؟
ادامه مطلب ...

Self Join

از Self Join در بدست آوردن رکورد هایی که با رکورد های دیگری در همان جدول ارتباط دارند استفاده می شود. برای مثال جدول employees رو در نظر بگیرید ، هر کارمند می تواند یک مدیر داشته باشد. Self Join در SQL به معنی پیوند یک جدول با خودش می باشد. شما می توانید از یک نام مستعار برای همان جدول استفاده کنید تا بتوانید Self Join را بین آنها اعمال نمایید.

ادامه مطلب ...

پارامتر ها در ADO.NET

اگر تجربه استفاده از نگارشهای قدیمی تر ASP کلاسیک را داشته باشید احتمالا با ساختار زیر آشنا هستید. این مثال با استفاده از مقادیر بدست آمده از یک فرم، یک عبارت SQL می سازد:

 

 MySQL = "SELECT CustomerID, CompanyName, ContactName, City, Country, Phone " & _
"FROM Customers " & _
"WHERE " & _
"Country IN (" & _
" ' " & Request("Country1") & "', " & _
" ' " & Request(Country2") & "')" & _
CompanyName >='" & Request("StartRange") "' " & _
"OREDR By CompanyName"

 

به علاوه احتمالا می دانید که برای تضمین اجرای SQL خود باید روی قالب داده کار بیشتری انجام دهید (کارهایی از قبیل جایگزین کردن علامتهای نقل قول تکی با علامتهای نقل قول دوتایی، سنجش اعتبار انواع داده ها و غیره).

 ASP.NET با معرفی عبارتهای SQL پارامتری شده این فرآیند را حذف می کند. کافی است با استفاده از مجموعه Parameters  از کلاس Command پارامترهای مورد نظر خود را تعریف کنید.

پارامتری کردن کلاس Command چند فایده دارد. به سنجش اعتبار داده ها کمک می کند، خوانائی کد را تقویت می کند، انعطاف پذیری طراحی شئ گرا را به همراه می آورد، و از همه مهمتر این که امکان تعریف صریح نوع داده را فراهم می کند. از آنجائی که اطلاعات نوع داده در کد ASP.NET کامپایل می شود، تعیین نوع داده در زمان اجرا توسط سرویس دهنده SQL انجام نمی شود، و این باعث افزایش سرعت اجرا می گردد. جهت آشنائی با کلاس های SQLParameters و SQLParameter به راهنمای مربوطه مراجعه نمائید.

اکنون با استفاده از این دو کلاس مثال اولیه SQL فوق را بصورت پارامتری می سازیم. به خاطر داشته باشید که ابتدا فضانام های ضروری را در برنامه تان وارد کنید. در این مثال خاص ما قصد داریم که از فضا نام SqlClient استفاده کنیم. لذا فضا نام های زیر را باید تعریف کنیم:

 

<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>


حالا باید متغیرها را تعریف و مقداردهی اولیه کنیم:

 

Dim MyConnection As SQLConnection
Dim MyCommand As SQLCommand
Dim MySQL As String

 

برای ساخت دستور SQL، شناسه های متغیر را درج می کنیم که با علامت @ در جاهای مناسب نشان داده می شوند (یک بار دیگر تاکید می کنیم که برای ساخت مؤثر برنامه های کاربردی وب مبتنی بر داده ها داشتن درکی کامل از SQL ضروری است). سپس مقادیر این شناسه ها را با استفاده از متدها و خصوصیتهایی که قبلا توصیف شدند مشخص می کنیم:

 

MyConnection = New SQLConnection("server=localhost;uid=sa;pwd=;dsn=Northwind")
MySQL = "SELECT CustomerID, CompanyName, ContactName, City, Country, Phone " & _
"FROM Customers " & _
"WHERE " & _
"Country IN (@Country1, @Country2) AND " & _
"CompanyName >= @StartRange " & _
"ORDER BY Country, CompanyName"

'Create the SQLCommand using the connection and SQL string.
MyCommand = New SQLCommand(MySQL, MyConnection)

 

در این لحظه پارامترهای SQL را به مجموعه Parameters از شئ SQLCommand که نمونه سازی کرده ایم اضافه می کنیم:

 

' Specify the name, type and size of the parameters to add to the collection
MyCommand.Parameters.Add(New SQLParameter("@Country1", SQLDataType.VarChar, 50))
MyCommand.Parameters.Add(New SQLParameter("@Country2", SQLDataType.VarChar, 50))
MyCommand.Parameters.Add(New SQLParameter("@StartRange", SQLDataType.VarChar, 1))

'Assign values to these parameters... in many situations this would be requested from the form object
'and would not actually be hard coded as we do in this example.
MyCommand.Parameters("@Country1").Value = "
Germany"
MyCommand.Parameters("@Country1").Value = "
UK"
MyCommand.Parameters("@StartRange").Value = "D"

 

توجه داشته باشید که فضانام OleDb برای مشخصات نوع داده، خصوصیتی به نام OleDBType دارد که تا حدودی متفاوت است.

در زیر یک ترکیب نحوی دیگر برای انجام همین کار می آوریم و آن هم عبارت است از افزودن سه پارامتر به شئ SQLCommand. فرق بین این دو تنها در خوانایی و ترجیح برنامه نویس است.

 

Dim pCountry1 As New SQLParameter("@Country1", SQLDataType.VarChar, 50)
Dim pCountry2 As New SQLParameter("@Country2", SQLDataType.VarChar, 50)
Dim pStartRange As New SQLParameter("@StartRange", SQLDataType.VarChar, 1)

MyCommand.Parameters.Add(pCountry1)
MyCommand.Parameters.Add(pCountry2)
MyCommand.Parameters.Add(pStartRange)

pCountry1.Value = "Germany"
pCountry1.Value = "
UK"
pStartRange.Value = "D"

 

برای دیدن نتایج عبارت SQL پارامتری شده، از شئ SQLDataReader و برای نشان دادن نتایج صفحه نمایش، از کنترل DataGrid استفاده کرده ایم:

 

MyConnection.Open()
Dim myDR As SQLDataReader = myCommand.ExecuteReader()
MyDataGrid.DataSource = myDR
MyDataGrid.DataBind()
MyConnection.Close()


برگرفته از کتاب آموزشی ASP.NET از انتشارات کانون نشر علوم

UNION ALL

سلام

 

امروز با یک مثال ساده کاربرد UNION ALL رو توضیح خواهم داد

 

دو جدول بصورت زیر داریم

 

Table1

ID

1

1

1

2

3

 

Table2

ID

1

1

2

3

4

 

حالا میخواهم ID های مشترک تیبل 1 و 2 را با هم انتخاب کنم :

SELECT Table1.ID FROM Table1 WHERE Table1.ID=1 
UNION ALL
SELECT Table2.ID FROM Table2 WHERE Table2.ID=1

نتیجه :

 

ID

1

1

1

1

1

انواع JOIN در SQL

Inner Join : در این روش سطرهایی نمایش داده می شوند که در هر دو جدولی که با هم Join شده اند وجود دارند. فرض کنید که دو جدول به نام titles و publishers داریم و می خواهیم برای هر title ، publisher آنرا تعیین کنیم. در اینصورت از Inner Join بصورت زیر استفاده می کنیم :

SELECT title, pub_name
FROM titles INNER JOIN
publishers ON titles.pub_id = publishers.pub_id

در اینصورت title هایی که publisher ندارند یا publisher هایی که title ندارند هیچ کدام در خروجی نمی آیند.

Outer Join : در این روش سطرهایی از جدول اصلی که سطر متناظرشان در جدول دیگر وجود ندارد هم در خروجی می آیند. بسته به اینکه بخواهیم کدامیک از سطرهایی که در جدول دیگر متناظر ندارند هم در خروجی بیایند، سه نوع Outer Join بصورت زیر تعریف می شود :

1- Left Outer Join : تمام سطرهای جدول اولی (جدولی که در سمت چپ Join قرار گرفته است) در خروجی ظاهر می شوند. ولی سطرهایی از جدول دوم که متناظری در جدول اول ندارند در خروجی نمی آیند. بعنوان مثال دستور زیر تمام title ها ، حتی آنهایی که publisher ندارند، را در خروجی نشان می دهد :

SELECT titles.title_id, titles.title, publishers.pub_name
FROM titles LEFT OUTER JOIN publishers
ON titles.pub_id = publishers.pub_id

2- Right Outer Join : تمام سطرهای جدول دومی (جدولی که در سمت راست Join قرار گرفته است) در خروجی ظاهر می شوند. بعنوان مثال دستور زیر تمام publisher ها را نشان می دهد حتی آنهایی که title ندارند هم در خروجی نمایش داده می شوند:

SELECT titles.title_id, titles.title, publishers.pub_name
FROM titles RIGHT OUTER JOIN publishers
ON titles.pub_id = publishers.pub_id

3- Full Outer Join : تمام سطرهای هر دو جدول در خروجی می آیند چه در جدول دیگر متناظر داشته باشند چه نداشته باشند. به عنوان مثال دستور زیر تمام title ها و تمام publisher ها را نشان می دهد:

SELECT titles.title_id, titles.title, publishers.pub_name
FROM titles FULL OUTER JOIN publishers
ON titles.pub_id = publishers.pub_id

Cross Join : نتیجه این Join تمام ترکیباتی است که از قرار گرفتن هر سطر از جدول اولی در کنار تمام سطرهای جدول دومی بدست می آید(همانند حاصلضرب دکارتی). بعنوان مثال authors Cross Join Publisher مجموعه تمام حالتهای ممکن author/publisher را در خروجی تولید می کند :

SELECT * FROM authors CROSS JOIN publishers

مقدمه MySQL

MySQL یک سیستم مدیریت پایگاه داده رابطه ای (RDBMS) است که امکان ذخیره سازی، جستجو، مرتب کردن و بازیابی داده ها را فراهم می کند. سرور MySQL به چندین کاربر اجازه استفاده همزمان از داده ها را می دهد و دسترسی افراد معتبر به داده ها را تسریع می کند. بنابراین MySQL یک سرور چند کاربره و چند ریسمانه است. اگرچه تاریخچه پیدایش MySQL به سال1979 بر می گردد اما عرضه عمومی آن از سال 1996 آغاز شده است. این سیستم مدیریتی پایگاه داده، رایج ترین پایگاه داده کد باز (open Source) محسوب می شود.

برتری های MySQL

رقبای اصلی MySQL عبارتند از: PostgreSQL, SQL Server, و Oracle. در برابر این رقبا، MySQL از مزیت های زیر بهره مند است:
کارائی بالا
هزینه پائین
سهولت پیکربندی و یادگیری
قابلیت حمل
در دسترس بودن کد اصلی
خدمات پشتیبانی مناسب