1-Select
دستور Select جهت بازیابی اطلاعات از جداول پایگاه داده استفاده می شود. بخشی این دستور از این دستور جهت فیلتر کردن رکوردها استفاده می شود.
Select * From Course(1-1
1-2)Select CourseName,Unit From Course Where CourseTypeIdRef=1
Select دومی نام و واحد دروسی را که از دروس عمومی باشند را بازیابی می کند.
2-Insert
دستور Insert جهت درج اطلاعات در جداول پایگاه داده استفاده می شود.
2-1)Insert Into Course ( CourseId,CourseName,Unit,CourseTypeIdRef) Values (1,'DataBase',3,2)
)Insert Into Course Select 1,'DataBase',3,22-2
3-Update
دستور Update جهت به روز کردن اطلاعات در جداول پایگاه داده استفاده می شود.
Update Course Set CouseName='DataStructure',Unit=4 Where CourseId=1
4-Delete
دستور Delete جهت به حذف اطلاعات در جداول پایگاه داده استفاده می شود.
Delete From Course Where CourseId=1
5-INNER JOIN
با بکار بردن این دستور می توان دو جدول را با هم الحاق کرد و با بکار بردن آن به دفعات در یک پرس و جو می توان الحاقی بزرگتر ایجاد کرد.
(1-5
5-2) SELECT StdInfo.FName + StdInfo.LName AS FullName, Course.CourseName, CourseType.CourseTypeName, CourseStatus.StatusName
FROM Course INNER JOIN
CourseType ON Course.CourseTypeIdRef = CourseType.CourseTypeId INNER JOIN
Register ON Course.CourseId = Register.CourseIdRef INNER JOIN
StdInfo ON Register.StdIdRef = StdInfo.StdId INNER JOIN
CourseStatus ON Register.StatusId = CourseStatus.StatusId
6- LEFT OUTER JOIN
این دستور کاملا مشابه INNER JOIN است با این تفاوت که تمام رکوردهای حائز شرایط جدولی را که در سمت چپ عبارت LEFT OUTER JOIN قرار گرفته است را بازیابی می کند .
این مسئله زمانی دیده می شود که در جدول سمت چپ در ستونی که شرط JOIN روی آن نوشته شده است مقدار NULL وجود داشته باشد.
SELECT StdInfo.FName + StdInfo.LName AS FullName, Course.CourseName, CourseType.CourseTypeName, CourseStatus.StatusName
FROM StdInfo INNER JOIN
Register ON StdInfo.StdId = Register.StdIdRef LEFT OUTER JOIN
CourseStatus ON Register.StatusId = CourseStatus.StatusId LEFT OUTER JOIN
Course ON Register.CourseIdRef = Course.CourseId LEFT OUTER JOIN
CourseType ON Course.CourseTypeIdRef = CourseType.CourseTypeId
7-RIFHT OUTER JOIN
این دستور کاملا مشابه INNER JOIN است با این تفاوت که تمام رکوردهای حائز شرایط جدولی را که در سمت راست عبارت RIGHT OUTER JOIN قرار گرفته است را بازیابی می کند .
این مسئله زمانی دیده می شود که در جدول سمت راست در ستونی که شرط JOIN روی آن نوشته شده است مقدار NULL وجود داشته باشد.
SELECT StdInfo.FName + StdInfo.LName AS FullName, Course.CourseName, CourseType.CourseTypeName, CourseStatus.StatusName
FROM StdInfo RIGHT OUTER JOIN
Register ON StdInfo.StdId = Register.StdIdRef RIGHT OUTER JOIN
CourseStatus ON Register.StatusId = CourseStatus.StatusId RIGHT OUTER JOIN
Course ON Register.CourseIdRef = Course.CourseId RIGHT OUTER JOIN
CourseType ON Course.CourseTypeIdRef = CourseType.CourseTypeId
8-FULL OUTER JOIN
این دستور تمام رکوردهای حائز شرایط را در عبارت JOIN بازیابی می کند.
SELECT Course.CourseName, CourseType.CourseTypeName
FROM Register FULL OUTER JOIN
Course ON Register.CourseIdRef = Course.CourseId FULL OUTER JOIN
CourseType ON Course.CourseTypeIdRef = CourseType.CourseTypeId
9-SELF JOIN
این دستور به ما امکان می دهد که یک جدول را با خودش JOIN کنیم .
این مسئله اغلب زمانی کاربرد دارد که یک ستون به ستونی از همان جدول Reference دهد.
SELECT *
FROM MIS.StateCity INNER JOIN
MIS.StateCity AS StateCity_1 ON MIS.StateCity.IDP = StateCity_1.id
ساختار جدول و نمایی از جدول در اشکال زیر نشان داده شده است.
10-CROSS JOIN
این دستور الحاق دو جدول بدون هیچ شرایطی را نشان می دهد.
اغلب زمانی کاربرد دارد که دو جدول هیچگونه شرایطی جهت الحاق ندارند.
حاصل این JOIN ضرب دکارتی رکوردهای جداول JOIN شده است.
SELECT CourseType,CourseName
FROM CourseType CROSS JOIN
Register
11- توابع آماری (SUM,COUNT,AVE,….)
این توابع در زمان Select گیری از یک جدول می توانند در کنار اسم فیلدی ذکر شوند و عمل مربوطه را روی آن فیلد خاص انجام دهند.
SELECT AVE(Mark) AS Average
FROM Register
WHERE (StdIdRef = 3830303)
Syntax بقیه توابع آماری نیز مثل بالاست.
با استفاده از این توابع می توان نتایج را گروه بندی کرد.
SELECT StdIdRef, AVE(Mark) AS Average
FROM Register
Group By StdIdRef
12- Select های تو در تو
به این وسیله می توان عبارات JOIN و یا عملیات مشابه آن را انجام داد.
به عبارت دیگر به این وسیله می توان Select ای حاصل از چند جدول داشته باشیم.
در بعضی موارد Select هایی را می توان با این قابلیت گرفت که با JOIN به سختی می توان گرفت یا شاید هم امکان پذیر نباشد.
اما توصیه بر استفاده از JOIN هاست.
SELECT * From Register Where CourseIdRef In
(
(SELECT CourseId From Course Where CourseTypeIdRef=1) As CourseIdList
)
SELECT FullName,CourseName From Register
INNER JOIN (SELECT FName+LName AS FullName,StdId From STdInfo) AS StdList ON Register.StdIdRef=StdList.StdId
INNER JOIN (SELECT CourseId,CourseName From Course Where CourseTypeIdRef=1) As CourseIdList ON Register.CourseIdRef=CourseIdList.CourseId
13-عملگر های (In,Exist,Except,Intersect ,Top,UNION)
این عملگر ها جهت فیلتر کردن خروجی یک SELECT یا JOIN که به نوعی یک عبارت SELECT محسوب می شود بکار می روند.
1-13) Top(n)
این عملگر n رکورد اول عبارت SELECT را به خروجی می برد.
SELECT Top(2) StdId From StdInfo
2-13) IN
این عملگر مقدار یک فیلد را با مقادیر موجود در یک مجموعه تطبیق می دهد.
SELECT * From Register Where CourseIdRef In
(
(SELECT CourseId From Course Where CourseTypeIdRef=1) As CourseIdList
)
SELECT * From Register Where CourseIdRef In
(1,2,3,4,5,6,7)
3-12)EXCEPT
Distinct تمام رکورد هایی را در عبارت SELECT بازیابی می کند که در مجموعه رکوردهای سمت راست عبارت EXCEPT نباشند
SELECT * From Register EXCEPT
(
(SELECT CourseId From Course Where CourseTypeIdRef=1) As CourseIdList
)
SELECT * From Register EXCEPT
(1,2,3,4,5,6,7)
4-12)INTERSECT
Distinct تمام رکورد هایی را در عبارت SELECT بازیابی می کند که در مجموعه رکوردهای سمت راست عبارت INTERSECT باشند.
SELECT * From Register INTERSECT
(
(SELECT CourseId From Course Where CourseTypeIdRef=1) As CourseIdList
)
SELECT * From Register INTERSECT
(1,2,3,4,5,6,7)
5-12)EXIST
وجود رکوردها را در یک Query تست می کند.
USE AdventureWorks
GO
SELECT DISTINCT c.FirstName, c.LastName, e.DepartmentID
FROM Person.Contact c JOIN HumanResources.Employee e
ON e.ContactID = c.ContactID WHERE EXISTS
(SELECT *
FROM HumanResources.Department d
WHERE e.DepartmentID = d.DepartmentID
(AND d.Name = 'Purchasing'
6-12) UNION
اجازه می دهد خروجی چند عبارت SELECT را بصورت اجتماع آنها ببینیم.
SELECT * From Course
UNION
SELECT * From StdInfo


