تبلیغات
آموزش SQL
 
آموزش SQL
الان میجنبم! فردا برای جنبیدن دیر است!!!
درباره وبلاگ


این وبلاگ زیر نظر مهندس یوسفی فرد مدیر گروه رشته کامپیوتر دانشگاه تمیشان بهشهر می باشد. در این وبلاگ مطالب آموزشی مربوط به درس SQL Server را قرار داده ام . امید است که مورد توجه شما کاربران عزیز قرار گیرد.

مدیر وبلاگ : Elham Sarfaraz
نویسندگان
آمار وبلاگ
  • کل بازدید :
  • بازدید امروز :
  • بازدید دیروز :
  • بازدید این ماه :
  • بازدید ماه قبل :
  • تعداد نویسندگان :
  • تعداد کل پست ها :
  • آخرین بازدید :
  • آخرین بروز رسانی :

TRIGGER

 

 

TRIGGER: یعنی گرفتن BACKUP از رکوردهای حذف شده.

 

انواع TRIGGER :

INSTAED OF-1

AFTER-2

 

جداول TRIGGER:

  1-inserted

 2-deleted

در هنگام درج رکورد یک کپی در جدول  INSTAED ثبت می شود.

در هنگام حذف رکورد یک کپی در جدول  DELETED ثبت می شود.

 

مثال:فرض کنید برای جدول Students می خواهیم یک trigger بنویسیم که هر وقت چیزی در آن درج شد یه جایی به عنوان گزارش ثبت شود .

1-ابتدا جدول جدیدی به نام addReport  ایجاد  میکنیم .

CREATE  TABLE      AddReport

(

          Id     int     primary key    CLUSTERED   IDENTITY ( 1,1 ) ,

          TableName     nvarchar ( 50 ) ,

          Description      nvarchar ( MAX )

)

 2-ساخت TRIGGER روی جدول Students برای دستور Insert :

CREATR     TRIGGER      trgstudentsInsert       ON      students

        FOR  INSERT

AS

        INSERT    INTO    Addreport

            (tableName, Description)

VALUES (N ' students ' , N ' New record inserted  at   ' + CAST  ( GETDATE ( ) AS

NVARCHAR ( 50 ) ) )

 

حال می توانیم با نوشتن رکوری در جدول student  درج  گزارش را انجام دهیم .

 Students   INSERT INTO

FirstName, CID, orgID))

VALUES ( '----' , 10 , 20 )

 

مثال : می خواهیم بگوییم اگر رکوردی در جدول درج شد ، FirstName آن رکورد را نیز ثبت کند.

 

CREATE      TRIGGER      trgstuInsert    ON    students

          For Insret                                                              

As                                                                          

          DECLARE     @fname    Nvarchar ( 50 )                  

SELECT    @fname =                                             

          Firstname                                                              

FROM                                                                   

          Inserted;                                                                  

INSERT      INTO      Addreport                                    

              (TableName,Descrption)                                          

VALUES   ( ' Students ' , ‘ New students with  FirstName : ' +

                                  @fname +  ' was  Add at ' +                                      

                                  CAST ( GETDATE ( ) AS Nvarchar ( 50 ) )                            





نوع مطلب :
برچسب ها :
لینک های مرتبط :

       نظرات
دوشنبه 11 دی 1391
Elham Sarfaraz

توابع تبدیلی:

تابع CAST : عدد را به رشته تبدیل می کند .

مثال: دستور زیر عدد را به کارکتر تبدیل می کند .

SELECT                                                   

'$' + Cast ( Age   as   Nvachar (10) ) as  NewAge

FROM                                                       

      Students                                                    

 

 

ترکیب  داده یا Combining Datasets:

 

UNION: از این دستور برای اجتماع دو جدول استفاده می شود .

 

مثال:QUERY  زیر دو جدول را با هم اجتماع می کند .

 

SELECT   TOP   3

      Id,                     

      FirstName ,      

      LastName       

From

        Students              

 

UNION             

 

SELECT    TOP    3

         CID ,                     

         CityName ,           

     State                         

FROM                

         CityInfo              

 

 

INTERSECT: برای اشتراک بین نتیجه ی دو Query  به کار می رود .

 

SELECT

         Id,           

         FirstName,

         LastName,

FROM    

         Students   

WHERE 

          Age > 25  

 

INTERSECT

SELECT

         Id,           

         FirstName,

         LastName,

FROM    

         Students   

WHERE 

         CID =10      

 

EXCEPT: این تابع رکوردهای را از SELECT اول نشان می دهد که در SELECT دوم نباشد .

 

SELECT

         Id,           

         FirstName,

         LastName,

FROM    

         Students   

WHERE 

          Age > 25  

 

EXCEPT

SELECT

         Id,           

         FirstName,

         LastName,

FROM    

         Students   

WHERE

         CID =10    

     

ادامه مطلب


نوع مطلب :
برچسب ها :
لینک های مرتبط :

       نظرات
دوشنبه 11 دی 1391
Elham Sarfaraz

جلسه ششم

توابع سیستمی :

برای دیدن این توابع ابتدا نام data base مان را انتخاب می کنیم سپس Function را انتخاب می کنیم و بعد system function را.

توابع کار با رشته ها یا string function :

چند تابع مهم این قسمت را شرح می دهیم.

دستور  RIGHTو LEFT  :

دستورLEFT تعداد کارکترهای مورد نظر را از سمت چپ برمیگرداند و دستور RIGHT تعداد کارکترهای مورد نظر را از سمت راست برمیگرداند.

e.g)

LEFT   ( ' abcde ’ , 3 )

RIGHT  ( ' abcde ’, 2 )

مثال : از جدول students ، اولین و آخرین حرف نام هر یک از افراد را در یک ستون نمایش دهید .

SELECT                                                                

      FirstName;

      LEFT(firstName, 1)   +  '  -  ' + RIGHT(firstName, 1)

 FROM                                                                          

       Students                                                                

تابعLEN  :

این دستور طول یک رشته را برمیگرداند .

e.g)

LEN  ( ‘ abcde ‘ )

نتیجه 5 می باشد .

مثال : طول رشته ی همه ی اسامی را از جدول students در ستونی مجزا نمایش دهید .

 

SELECT                                                                         

       FirstName,

FirstName ) )       LEN

FROM                                                                         

Students        

                                                      

 LOWER: کارکترها را به حروف کوچک تبدیل می کند  .

UPPER: کارکترها را به حروف بزرگ تبدیل میکند   .

e.g)

select

LOWER  ( ' abcEFG ' )

UPPER  ( ' abcEFG ' )

 

LTRIM: این دستور از سمت چپ هرچه فضای خالی وجود دارد حذف می کند .

RTRIM: این دستور از سمت راست هرچه فضای خالی وجود دارد حذف می کند .

 

SELECT                             

     , ‘              abc        ‘        

      ‘[‘ + LTRIM ( '             abc        ') + ‘]’ ,

      ‘[‘ + RTRIM ( '             abc        ') + ‘]’ ,

 

دستور REVRES:  این دستور رشته ی دریافتی را برعکس میکند .

 

 

مثال: دستور زیر اسامی را بر عکس می کند .

SELECT                    

      Firstname,

      REVRES (FirstName),

FROM                       

      Students     

 

SUBSTRING: رشته وزیر رشته های مورد نظر مارا بر میگرداند .

مثال: در این دستور ما می گوییم که از کاراکتر چندم و به چه تعدادی شروع به کپی برداری کند.

SELECT 

         'abcdefgh',    

             SUBSTRING ('abcdefgh', 1  , 3)

 

REPLACE: این دستور برای جایگزین کردن کارکترها استفاده میشود .

مثال: دستور زیر هر کجا که * وجود دارد به جای آن # می گذارد .

SELECT 

      ' abc*def*gh**' ,                                    

      REPLACE ('abc*def*gh**' ,    '*' ,  '#')



ادامه مطلب


نوع مطلب :
برچسب ها :
لینک های مرتبط :

       نظرات
دوشنبه 11 دی 1391
Elham Sarfaraz

FUNCTIONS :

ساختار کلی دستور ایجاد تابع:

CREATE FUNCTION  <fn_name>

  (

              <parameter_list>

 

)

RETURNS <retun_type>

AS

BEGIN

        

   <T_sql Statements>

       

RETURN <return_value>

END


مثال: تابعی تعریف كنید كه 2 عدد بگیرد و آن دو را در هم ضرب كند و مقدار آن را برگرداند.

CREATE  FUNCTION  Mul

(

     @a int,

     @b int

)

RETURNS bigint

AS

BEGIN

          DECLARE @r  bigint

          SET  @r=@a*@b

                        RETURN @r

END

SELECT  DBO.Mul   (3,5)  AS   ZARB

استفاده از تابع در SQL:

مثال:
ستونی به نام ضرب ایجاد کنید كه ستون های ID,Age را در هم ضرب كند.

SELECT

    ID,

    Firstname,

    Lastname,

Age   

DBO.Mul (ID,Age)  AS  ZARB

FROM

       Student

 

CREATE  FUNCTION  Mul

(

     @a int,

     @b int

)

RETURNS bigint

AS

BEGIN

          DECLARE @r  bigint

          SET  @r = @a * @b

                        RETURN @r

END

 

e.g)

SELECT  DBO.Mul   (3,8)  AS   ZARB

SELECT

    ID,

    Firstname,

    Lastname,

Age   

DBO.Mul (ID,Age)  AS  ZARB

FROM

       Student






نوع مطلب :
برچسب ها :
لینک های مرتبط :

       نظرات
جمعه 8 دی 1391
Elham Sarfaraz

جلسه پنجم :

روال های ذخیره شده یا (stored procedures):

شکل کلی آن:

Create  Procedure    <sp_name>

 

           <parameters_list>

 

AS

         <sp_T_sql_statements>

 

 

مثال: یک stored procedures تعریف کنید که یک كد از جدول  Student بگیرد و اطلاعات مربوط به آن  كد را نشان دهد.

 

CREATE   PROCEDURE  GetStudentInfo

           @userID  int

AS

       SELECT

                         *

      FROM

                      Student

   WHERE

                   ID=@userID

 

-حالا اگر data base  را باز کنیم و بانکمان را انتخاب کنیم و از قسمت Programmbility ، پوشه ی Procedure Stored را باز کنیم خواهیم دید که یک Procedure Stored به نام GetStudentInfo برایمان ایجاد کرده .

 

 

دستور حذف Procedure Stored :

DROP   PROCEDURE  GetStudentInfo

 

چطور از  Stored Procedure ها استفاده كنیم؟

برای استفاده از Stored Procedure از این ساختار استفاده می كنیم.

ساختار كلی :

EXEC   <sp_name>   <Vaue_list>

 

مثال : دستور زیر اطلاعات كسی را كه ID آن 8 هست را نشان می دهد.

 

EXEC  GetStudentInfo   8

 

- Stored Procedure قبل را طوری تغییر دهید که با گرفتن FirstName و LastName و اطلاعات مربوط

را نشان دهد.

Alter   PROCEDURE  GetStudentInfo

             @Fname   nvarchar(50),

             @Lname   nvarchar(50)

AS

       SELECT

                        *

       FROM

                      Student

       WHERE

                     {Firstname  LIKE   '%' + @Fname  + '%'}  AND

                     {lastname  LIKE   '%' + @Lname  + '%'}

 

-دستور زیر اطلاعات آنهایی را نمایش می دهد که در نام و فامیلیشان حرف z وجود داشته باشد

     EXEC  GetStudentInfo  'z' , 'z'

 

 نكته: هر بار كه شما با EXEC یك Stored Procedure را اجرا می كنید در قسمت Message (1  RoWs  affected) را نشان می دهد ولی با استفده از دستور SET  NOCOUNT ON این متن نشان داده نمی شود.

 

 

e.g)

CREATE  PROCEDURE   GetuserFullName

                       @userID    int,

                       @Fullname   nvarchar(100)    output

AS

               SET  NOCOUNT    ON;

SELECT   @FullName=

                            (firstname +'      '+lastname)

 FROM

                            Student

WHERE

              ID=  @userID

 

این مثال یک ID می گیرد و FirstName و LastName آن فرد را نمایش می دهد .

 

DECLARE     @fn   nvarchar(100)

EXEC  GetuserFullname  5,@fn  output

Print   @fn

Firstname,Lastname كسی كه ID ان 5 هست را در متغیر FN می گذارد.


 





نوع مطلب :
برچسب ها :
لینک های مرتبط :

       نظرات
پنجشنبه 7 دی 1391
Elham Sarfaraz

Conditional Structure ( ساختارهای شرطی ) :

IF……ELSE   و   CASE

ابتدا کمی با بحث توابع آشنا می شویم: ما دو نوع متغیر داریم:     Variable ( Global , User )

فعلا با Global کاری نداریم ، User چگونه می تواند Vaeriable تعریف کند ؟

تعریف متغیر : شکل کلی تعریف User به صورت زیر است:

                                                                                                                                     DECLARE    @ < Var_id >  < Var_type >

e.g )

DECLARE     @n     int

DECLARE     @st     nvarchar ( 25 )

DECLARE     @c     char (1 )

DECLARE     @UserAverage     decimal (18 , 2 )

……….

مقدار دهی متغیر: ما با 2 دستور SELECT و SET می توانیم به متغیر هایمان مقدار بدهیم .

 شکل کلی مقدار دهی با SET به شکل زیر است :

SET         < var_id > = < value >

e.g)

SET      @n  =  24

SET      @st  =  N ‘ AliReza ‘

SET      @c  =  N ‘ # ‘

SET      @UserAverage  =  17.25

شکل کلی مقدار دهی با SELECT به شکل زیر است :

SELECT         < var_id > =  …..(که خودش دو حالت دارد ) :

1)      < EXPLICIT    Value >

2)      < Select         Statement >

مثال از حالت اول :

SELECT   @n  = 24

سوال از حالت دوم : Query بنوسید که بیشترین سن را از جدول Student برگرداند. (می خواهیم مقداری که بر می گرداند را به ما نشان نده و درون یک متغیر بریزد . ) برای این کار از دستور زیر استفاده می کنیم:

SELECT     @n  =  MAX ( age ) FROM    Students

e.g)

DECLARE     @n     int

DECLARE     @name     nvarchar ( 25 )

DECLARE     @avgAge     int

SET      @n =24

SET      @name = N ‘ Ali ‘

SET      @avgAge =34

SELECT

         @n       AS      Data ,

         @name       AS      username ,

         @AvgAge       AS      Age

_می خواهیم در متغیر n بیشترین سن از جدول Students را ذخیره کند و درون متغیر n بریزد و FirstName کسی را که ID اش 5 است را در متغیر name بریزد .

DECLARE     @n     int

DECLARE     @name     nvarchar ( 25 )

DECLARE     @avgAge     int

SELECT        @n =  MAX ( Age )      From Students 

SELECT        @name =  FirstName     From Students  WHERE    ID = 5

         @n       AS      Data ,

         @name       AS      username ,

         @AvgAge       AS      Age

ادامه مطلب


نوع مطلب :
برچسب ها :
لینک های مرتبط :

       نظرات
سه شنبه 7 آذر 1391
Elham Sarfaraz

نکته : اگر خواستیم رکوردی را در جدولی که IDENTITY است در ج کنیم و IDENTITY آن را هم خودمان تنظیم کنیم با فرض این که می دانیم آن تکراری نیست . باید قبل از دستور INSERT INTO ، IDENTITY را ON کنیم و بعد از دستور آن را OFF کنیم.

مثال :

SET     IDENTITY_INSERT     ORGANIZATION     ON

INSERT  INTO      ORGANIZATION

           (OrgID , OrgName)

VALUES ( 4 , N ‘ University ‘ )

SET     IDENTITY_INSERT      ORGANIZATION     OFF

حال اگر یکبار دستور زیر را اجرا کنیم ، می بینیم که سطر 4 به جدول ORGANIZATION اضافه شده است .

SELECT     *    FROM    ORGANIZATION



نوع مطلب :
برچسب ها :
لینک های مرتبط :

       نظرات
سه شنبه 7 آذر 1391
Elham Sarfaraz

پیوند جدول ها:

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

شرط ارتباط دو جدول:

برای ارتباط دو جدول باید شرط های زیر برقرار باشد

1 . وجود فیلد مشترک دقیقا از یک نوع و یک سایز .

2 . فیلد مشترک در یکی از جدول ها کلید اصلی و در جدول دیگر کلید خارجی باشد .

دستور JOIN : از دستور JOIN برای تلفیق جدول ها در پایگاه داده ها استفاده می شود .

انواع JOIN :

1 . INER JOIN      2 . OUTER JOIN     3 . CROSS JOIN

 



ادامه مطلب


نوع مطلب :
برچسب ها :
لینک های مرتبط :

       نظرات
سه شنبه 7 آذر 1391
Elham Sarfaraz

SubQuery  (Query های تودرتو) :

 Query ای است که در دل Query دیگری قراردارد.

SubQuery ها می توانند در قسمت های SELECT ، FROM و WHERE بیایند .

SELECT

          <Clumn_List>

FROM

           <data_Sourse>

WHERE

           <Condition>

ادامه مطلب


نوع مطلب :
برچسب ها :
لینک های مرتبط :

       نظرات
سه شنبه 7 آذر 1391
Elham Sarfaraz

  دستور HAVING :

از این دستور برای افزودن شرط به توابع درون ساخته SQL استفاده می شود ، زیرا از دستور WHERE نمی توان برای کار با مقادیر خروجی توابع درون ساخته SQL استفاده کرد . به عبارت دیگر HAVING برای اعمال شرط به ستون ها اعمال می شود و همان کاری را می کند که WHERE در رکورد ها انجام می دهد.

نکته : دستور HAVING معمولا با GROUP BY می آید . در HAVING نباید نام ستون محاسباتی را که ساختیم را بیاوریم، بلکه به جای آن باید دستوری که باعث ساخت آن ستون شده را بیاوریم .

مثال : QUERY بنویسید که اطلاعات شهری را برگرداند که میانگین سنی در آن کمتر از 40 باشد .





نوع مطلب :
برچسب ها :
لینک های مرتبط :

       نظرات
سه شنبه 7 آذر 1391
Elham Sarfaraz

توابع درون ساخته SQL :

زبان SQL دارا ی یکسری توابع درون ساخته (آماده) برای محاسبات بر روی داده های جداول و ارائه خروجی مناسب برای اهداف خاص است.

شکل کلی استفاده از توابع درون ساخته به شکل زیر است :

Select    Function *  ( FildeName)   From   TableName

   * Function =  FunctionName

1) تابع Avg :  برای محاسبه میانگین اعداد موجود در یک فیلد به کار می رود. این توابع اعداد را با هم جمع کرده و آنها را به طور اتوماتیک بر تعدادشان تقسیم می کند و نتیجه را به عنوان خروجی بر می گرداند.

2) تابع Sum : مجموع مقادیر اعداد در یک فیلد را محاسبه کرده و به عنوان خروجی بر می گرداند.

نکته : این 2 تابع باید با فیلد هایی که داده آنها از نوع عددی است ، به کار روند .

3) تابع Min : این تابع کمترین مقدار موجود در بین مقادیر فیلد های یک ستون را بر می گرداند .

4) تابع Max : این تابع بیشترین مقدار موجود در بین مقادیر فیلد های یک ستون را بر می گرداند .

5) تابع First : مقدار اولین رکورد را در یک فیلد بر می گرداند.

6) تابع Laste : مقدار آخرین رکورد را در یک فیلد بر می گرداند.

7) تابع Count : این تابع تعداد سطر های موجود در یک فیلد را شمرده و مقدار آن را بر می گرداند. به این تابع ، تابع سطر شمار هم می گویند.



مثال


نوع مطلب :
برچسب ها :
لینک های مرتبط :

       نظرات
سه شنبه 7 آذر 1391
Elham Sarfaraz

ساختار View :

1) یک نمایی از اطلاعات جدولمان به شکلی که می خواهیم است.

2) خود VIEW جایی برای ذخیره سازی اطلاعات نیست ، رکوردی در آن ذخیره نمی شود بلکه اطلاعات را از جدول ها می گیره.

3) VIEW فقط حاوی دستور یا ساختار SELECT است .

View چیست؟
یک
View در واقع نتیجه یک Select است، حال این Select می تواند ساده باشد و یا از ترکیب چند جدول حاصل شود. مثلا در یک جدول که اطلاعات دانش آموزان را نگهداری می کند، یک View می تواند: "کلیه دانش آموزانی باشد که معدل آنها 15 است". همانگونه که پیداست یک View در واقع نتیجه یک select روی یک یا چند جدول می باشد (یک select ساده از یک جدول و یا یک join).

نکات مهم در هنگام کار با view :

1- برخورد Sql Server با view در هنگام خواندن دادها (select)دقیقا مانند یک جدول حقیقی می باشد. در همین جا یک مزیت بزرگ view آشکار می شود: می توان در مراحل پیاده سازی نرم افزار ساختار یک view را تغییر داد و ان را بهبود بخشید بدون آنکه رابط کاربر و کدهای user interface تغییر اساسی کنند.

2- تنها در مورد view هایی که با یک select ساده (بدون join) ساخته می شوند می توان انتظار داشت که دستورات Insert، Update و Delete به درستی عمل کنند. بدین معنا که برخورد Sql Server با Viewدقیقا همانند یک جدول واقعی خواهد بود و دستورات DDL (Data Definition Language) و یا به عبارت ساده تر Insert، Update و Deleteعمل خواهند کرد.

چطور یک VIEW ایجاد کنیم؟

روی view کلیک راست کرده و New View را انتخاب می کنیم .

دستور SELECT را در قسمت SQL ،Paste می کنیم،اگر دستور صحیح بود جواب را در قسمت پایین نشان می دهد .و سپس می توانیم Saveکنیم .اگر دستور صحیح نباشد اجازه Save را به شما نمی دهد.

Snapshot: یک برش لحظه ای از زمان.

SELECT       

                 *

FROM

               VStudent



نوع مطلب :
برچسب ها :
لینک های مرتبط :

       نظرات
سه شنبه 7 آذر 1391
Elham Sarfaraz

درج دسته ای اطلاعات :

شکل کلی این دستور به شکل زیر است :

INSERT      INTO      <table_or_view>

           (  <column_list>  )

       < SELECT  -  Statement >

مثال : یک جدول با نام StuBk ایجاد کنید که اطلاعات ستون های SID ,Fname ,LastName را از جدول Students گرفته و در این جدول جدید نمایش دهد.

INSERT     INTO     StuBK

          (SID , Fname , LName )

    SELECT

                ID

                FirstName ,

                LastName

    FROM

             Students



نوع مطلب :
برچسب ها :
لینک های مرتبط :

       نظرات
سه شنبه 7 آذر 1391
Elham Sarfaraz

دستور UPDATE :

این دستور برای تغییر اطلاعات موجود در یک فیلد وجایگزینی آن با یک مقدار جدید به کار می رود.

شکل کلی این دستور به شکل زیر است :

UPDATE     <table_or_view>

         SET    Column1  = Value1  [,  Column2 = Value2 [ , …]]

[

         WHERE      <condition>

]

مثال


نوع مطلب :
برچسب ها :
لینک های مرتبط :

       نظرات
سه شنبه 7 آذر 1391
Elham Sarfaraz

دستور TRUNCATE Table :

این دستور همانند دستور DELETE سطر های جدول را پاک می کند. تفاوتش این است که این دستور شرط قبول نمی کند، در نتیجه همه ی سطر ها را پاک می کند. فرق دومش این است که تنظیمات جدول را هم Reset می کند.

شکل کلی این دستور به شکل زیر است :

TRUNCATE   TABLE      <table_name>

مثال :

TRUNCATE   TABLE      CityInfo

کل اطلاعات را از جدول اصلی حذف می کند.

نکته : اطلاعاتی که با دستور TRUNCATE حذف می شوند قابل بازیابی نیستند.





نوع مطلب :
برچسب ها :
لینک های مرتبط :

       نظرات
سه شنبه 7 آذر 1391
Elham Sarfaraz


( کل صفحات : 2 )    1   2