آموزشگاه برنامه نویسی تحلیل داده
آموزشگاه برنامه نویسی تحلیل داده

آموزش Sequence در SQL Server

دوره های مرتبط با این مقاله

Sequence (دنباله) در SQL Server

Sequence یک دنباله یا مجموعه ای از اعداد است که پشت سرهم ایجاد شده و به یک ستون از جدول تخصیص داده می شود. sequence در واقع عملکردی مشابه ستون شناسه (identity column) دارد، با این تفاوت که در صورت نیاز به یک identity بایستی آن را در یک ستون از جدول مورد نظر ایجاد کنید و سپس زمانی که به آن identity در ستون جدول دیگری نیاز پیدا می کنید، باز باید identity را در ستون جدول غیر ایجاد نمایید. در حالی که sequence یک شی برنامه نویسی شده، مانند یک تابع، می باشد که شما در سطح پایگاه داده ایجاد می کنید و بعد آن را به هر جدولی که می خواهید اعمال می نمایید.


آغاز کار

  1. Microsoft SQL Server را راه اندازی نموده و به سرویس دهنده متصل شوید.
  2. بر روی اسم سرور راست کلیک کرده و سپس گزینه ی New Query را انتخاب کنید.

ایجاد یک Sequence به صورت ویژوال

به منظور ایجاد یک sequence به صورت ویزاردی، به Object Explorer مراجعه کرده و سپس به ترتیب گره های پایگاه داده ی دلخواه و Programmability را باز نمایید. حال بر روی Sequences راست کلیک کرده و گزینه ی New Sequence.. را انتخاب کنید:


آموزش SQL

در پی انتخاب گزینه ی مزبور، یک کادر محاوره ای به نام New Sequence با تعدادی مقدار پیش فرض پدیدار می شود:


آموزش SQL

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


ایجاد Sequence با کد نویسی

نحوه ی ایجاد یک sequence با کدنویسی و دستورات T-SQL به صورت زیر می باشد:


CREATE SEQUENCE [schema_name . ] sequence_name
    [ AS [ built_in_integer_type | user-defined_integer_type ] ]
    [ START WITH  ]
    [ INCREMENT BY   ]
    [ { MINVALUE [   ] } | { NO MINVALUE } ]
    [ { MAXVALUE [   ] } | { NO MAXVALUE } ]
    [ CYCLE | { NO CYCLE } ]
    [ { CACHE [   ] } | { NO CACHE } ]
    [ ; ]

عبارت را با دستور CREATE SEQUENCE آغاز نمایید.

ویژگی های Sequence

Sequence شباهت های زیادی به ستون identity داشته و در حقیقت در بسیاری ویژگی ها با آن مشترک می باشد. اما ویژگی های دیگری دارد که در ستون identity یافت نمی شود:
1. Name: از آن جایی که sequence یک شی در پایگاه داده محسوب می شود، انتخاب اسم برای آن الزامی است.
2. Schema: همان طور که در بالا نیز به آن اشاره شد، sequence یک شی بوده و به همین خاطر بایستی به یک schema تعلق داشته باشد. اگر از قبل یک schema ایجاد کرده اید، کافی است اسم آن را پیش از اسم sequence درج نمایید. در صورتی که schema مشخصی تعریف نکرده باشید، dbo به عنوان پیش فرض مورد استفاده قرار می گیرد.
3. Data Type: درست مشابه ستون identity، شی sequence یک دنباله از مقادیر عددی از نوع صحیح می باشد که نوع داده ای آن به صورت پیش فرض بر روی bigint (عدد صحیح بسیار بزرگ) تنظیم شده است. می توانید آن را از پیش فرض به tinyint، smallint یا int تغییر دهید. حتی می توانید نوع داده ای float-point/ممیز شناور (decimal یا numeric) را اعمال نمایید. در صورت اعمال نوع داده ی ذکر شده باید دقت اعشار را نیز مشخص نمایید.
در کادر کشویی Data Type گزینه ی int را انتخاب نمایید.
4. Starting point (نقطه ی شروع): در زمان ایجاد یک sequence، می بایست نقطه ای (عددی) که دنباله از آن شروع می شود را مشخص کنید. برای این منظور راه های مختلفی پیشرو دارید. می توانید تعیین کنید که دنباله از 1 شروع شود و به بالا افزایش یابد و یا:


  • در صورتی که یک sequence از نوع tinyint ایجاد کنید، می توانید مقدار شروع را بر روی 0 تنظیم کنید که دنباله را از این عدد آغاز کرده و همین طور بالا می رود. در غیر این صورت، می توانید مقدار شروع را 255 تنظیم نمایید، بدین معنی که می خواهید دنباله از 255 شروع شده و همین طور به پایین کاهش یابد. Starting point اختیاری بوده و در صورت مشخص نکردن مقدار آن، به صورت پیش فرض بر روی 0 تنظیم می شود.
  • اگر یک sequence از نوع داده ای smallint ایجاد کنید، در آن صورت می توانید نقطه ی شروع دنباله را بین محدوده ی -32,768 و 32,767 قرار دهید. پس از آن مشخص می کنید که می خواهید دنباله به پایین شمرده شود یا به بالا افزایش یابد. در صورت تنظیم نکردن مقدار starting point، به صورت پیش فرض بر روی -32768 تنظیم می شود.
  • در صورت ایجاد sequence از نوع bigint، می توانید مقدار شروع دنباله را بین محدوده ی -9,223,372,036,854,775,808 و9,223,372,036,854,775,807 تنظیم کنید. در صورت مشخص نکردن مقدار شروع، به صورت پیش فرض بر روی -9,223,372,036,854,775,808 تنظیم می گردد.

5. Increment Value (مقدار افزایش): همچنین بایستی مشخص کنید مقدار به چه اندازه (چند واحد) افزایش/کاهش یابد. باز هم چندین گزینه پیشرو دارید. اگر می خواهید به بالا افزایش یابد، در آن صورت Increment Value می بایست مثبت باشد. اگر می خواهید مقدار کاهش یابد، در آن صورت increment value باید عدد منفی باشد. در صورت مشخص نکردن increment value (واحد افزایش/کاهش)، مقدارش به صورت پیش فرض دنباله به اندازه ی یک واحد (1) افزایش/کاهش می یابد.
6. Boundaries (مشخص کردن حد و مرز): بر خلاف identity، دنباله می تواند حد و مرز داشته باشد: یک مقدار که sequence نباید از آن کوچکتر باشد (Minimum value) و یک مقدار که نباید از آن بزرگتر شود (فراتر رود.Maximum value). این دو به ترتیب مقادیر حداقل و حداکثر هستند.


  • Minimum value: اگر این مقدار را مشخص نکنید، به صورت پیش فرض با همان مقدار starting point تنظیم می شود. در غیر این صورت، اگر:
    1. اگر یک شی sequence از نوع tinyint تعریف کنید، مقدار کمینه که نبایستی از آن کوچکتر باشد، عدد 0 خواهد بود.
    2. اگر یک sequence از نوع smallint ایجاد نمایید، حداقل مقدار -32,768 می باشد.
    3. در صورت ایجاد sequence از نوع int، مقدار کمینه می تواند -2,147,483,648 باشد.
    4. اگر یک شی sequence از نوع bigint ایجاد کنید، مقدار کمینه می تواند -9,223,372,036,854,775,808 باشد.
  • Maximum Value:
    1. در صورت ایجاد یک sequence از نوع tinyint، اگر خود مقداری مشخص نکنید، maximum value یا مقدار که دنباله نباید از آن بزرگ تر شود، به صورت پیش فرض 255 خواهد بود. یا می توانید یک مقدار بین starting point (مقدار شروع) و عدد 255 را انتخاب کنید.
    2. اگر یک sequence از نوع smallint ایجاد نمایید، در صورت مشخص نکردن مقدار حداکثر، به صورت پیش فرض بر روی32,767 تنظیم می شود.
    3. چنانچه یک sequence از نوع smallint ایجاد کنید، در صورت مشخص نکردن مقدار حداکثر و سقف آن، به طور پیش فرض بر روی 32,767 تنظیم می شود.
    4. چنانچه sequence از نوع int ایجاد کنید، اگر خود مقداری تعیین نکنید، به طور پیش فرض بر روی 2,147,483,648 تنظیم می شود.
    5. اگر یک sequence از نوع bigint تعریف کنید، مقدار بیشینه به طور پیش فرض بر روی9,223,372,036,854,775,807 تنظیم می شود.

7. Cycle: این گزینه به پایگاه داده دستور می دهد در صورت رسیدن به مقدار بیشینه، دنباله را از مقدار کمینه (minimum value)، نه از مقدار شروع starting point، دوباره آغاز کند.
8. Cache: در برخی موارد، تولید یک sequence می تواند عملیات سنگینی باشد و بسیاری از منابع رایانه را به خود تخصیص دهد. برای کمک به موتور پایگاه داده، می توانید به آن دستور دهید از حافظه ی نهان (cache) برای رصد و حفظ اعداد موجود در دنباله استفاده کند.


آموزش کاربردی: ایجاد sequence

1. داخل پنجره ی Object Explorer، در زیر پایگاه داده University6 (که در درس قبلی ایجاد کردیم)، گره Programmability را باز نمایید.
2. بر روی Sequences راست کلیک نموده و گزینه ی New Sequence... را انتخاب کنید.
3. در فیلد Sequence name، واژه ی SeqSchedules را وارد کنید.
4. بر روی دکمه ی آموزش SQLدر سمت راست کادر متن Sequence Schema کلیک نمایید.
5. در کادر متن Enter the Object Names، واژه ی Academics را وارد کنید.
6. حال دکمه ی OK را کلیک نمایید.
7. در کادر کشویی Data Type، گزینه ی int را انتخاب کنید.
8. در کادر متن Start Value، 10101 را به عنوان مقدار شروع وارد نمایید.
9. در کادر متن Increment By، عدد 1 را وارد نمایید.


آموزش SQL

10. OK را کلیک کنید.
11. داخل Query Editor کلیک نموده و کلیدهای Ctrl + A را همزمان فشار دهید.
12. اکنون به منظور ایجاد یک sequence و جدول (با کدنویسی و دستورات SQL) که از آن استفاده کند، کد زیر را وارد نمایید.


USE University6;
GO
CREATE SEQUENCE Academics.SeqStudents
    AS Int
    START WITH   1
    INCREMENT BY 1;
GO

13. دکمه ی F5 را فشار داده تا مجموعه دستورات اجرا شوند.


استفاده از Sequence

Sequence پس از ایجاد به یک شی تبدیل می شود و شما می توانید در هر جدول جدیدی که ایجاد می کنید، آن مورد استفاده قرار دهید. از آن جایی شی sequence مقادیر عددی افزایشی منحصربفرد تولید می کند که مورد استفاده ی ستون جدول قرار می گیرد، در زمان ایجاد فیلد جدید در یک جدول، data type آن را بر روی نوعی تنظیم نمایید که با نوع داده ای sequence سازگاری و همخوانی داشته باشد.


مثال:
    
 CREATE TABLE Inventory.StoreItems
(
    ItemNumber int,
    ItemName nvarchar(60),
    UnitPrice money
);
GO

شی Sequence به هنگام درج داده در جدول بکار می رود. در زمان مشخص کردن مقدار ستون مربوط به آن sequence، فرمول زیر را وارد کنید:


NEXT VALUE FOR [schema_name . ] sequence_name

در آن هنگام موتور DB عدد بعدی را در دنباله/Sequence پیدا کرده و آن را به ستون مربوطه تخصیص می دهد.


مثال:
CREATE SCHEMA Inventory;
GO
CREATE SEQUENCE Inventory.ItemsCodes
    AS int
	START WITH 10001
	INCREMENT BY 1;
GO
CREATE TABLE Inventory.StoreItems
(
	ItemNumber int,
	ItemName nvarchar(60),
	UnitPrice money
);
GO
INSERT INTO Inventory.StoreItems
VALUES(NEXT VALUE FOR Inventory.ItemsCodes, N'Short Sleeve Shirt', 34.95),
      (NEXT VALUE FOR Inventory.ItemsCodes, N'Tweed Jacket', 155.00),
      (NEXT VALUE FOR Inventory.ItemsCodes, N'Evaded Mini-Skirt', 72.45),
      (NEXT VALUE FOR Inventory.ItemsCodes, N'Lombardi Men''s Shoes', 79.95);
GO

نتیجه ی زیر حاصل می گردد:
UnitPrice
ItemName
ItemNumber
34.95
Short Sleeve Shirt
10001
155.00
Tweed Jacket
10002
72.45
Evaded Mini-Skirt
10003
79.95
Lombardi Men's Shoes
10004

آموزش کاربردی

1. داخل Query Editor کلیک کرده و دکمه های Ctrl + A را فشار دهید.
2. حال کد زیر را وارد نمایید:


USE University6;
GO
INSERT INTO Academics.UndergraduateSchedules(UndergraduateScheduleID, SemesterID, StartDate, EndDate, TeacherNumber, CourseCode, CourseDeliveryTypeCode, LocationCode)
VALUES(NEXT VALUE FOR Academics.SeqSchedules, 101, N'20120109', N'20120205', N'820384', N'LBRS 100', N'L', N'ONLNE'),
      (NEXT VALUE FOR Academics.SeqSchedules, 101, N'20120109', N'20120205', N'979384', N'LBRS 100', N'L', N'ONLNE');
GO
INSERT INTO Academics.UndergraduateSchedules(UndergraduateScheduleID, SemesterID, StartDate, EndDate, StartTime, EndTime, Weekdays, TeacherNumber, CourseCode, CourseDeliveryTypeCode, LocationCode, RoomNumber)
VALUES(NEXT VALUE FOR Academics.SeqSchedules, 101, N'20120109', N'20120318', N'08:15', N'10:10', N'M-W', N'293804', N'WRTG 101', N'F', N'LATAC', N'204'),
      (NEXT VALUE FOR Academics.SeqSchedules, 101, N'20120109', N'20120318', N'10:25', N'12:20', N'M-W', N'293804', N'WRTG 101', N'F', N'LATAC', N'104'),
      (NEXT VALUE FOR Academics.SeqSchedules, 101, N'20120109', N'20120226', N'08:15', N'10:10', N'M-W-F', N'293804', N'WRTG 101', N'F', N'LATAC', N'102'),
      (NEXT VALUE FOR Academics.SeqSchedules, 101, N'20120109', N'20120226', N'10:25', N'12:20', N'M-W-F', N'293804', N'WRTG 101', N'F', N'LATAC', N'102'),
      (NEXT VALUE FOR Academics.SeqSchedules, 101, N'20120109', N'20120318', N'10:25', N'12:20', N'M-W', N'520203', N'MATH 106', N'F', N'LATAC', N'102');
GO

3. برای اجرای کد، دکمه ی F5 را فشار دهید.
4. داخل Query Editor کلیک کرده و Ctrl + A را بزنید.
5. جهت مشاهده ی لیستی از زمان بندی ها، دستور زیر را تایپ کنید:


SELECT schd.*
FROM Academics.UndergraduateSchedules schd;
GO

6. اکنون کد را اجرا نمایید.


جزئیات درباره ی Sequence – به اشتراک گذاری یک Sequence

شی sequence را می توان به اشتراک گذاشت، بدین معنا که پس از ایجاد sequence، می توان آن را به هر جدولی که مایلید (یا به آن دنباله از اعداد نیاز دارد) اعمال نمود. اگر در زمان استفاده از sequence ای که متعلق به یک جدول دیگر است، همان دستور NEXT VALUE FOR را استفاده کنید، دنباله ی اعداد از جایی که در جدول قبلی پایان یافت ادامه می یابد. این امر خلاف قاعده نیست، بلکه کاملا برنامه ریزی شده می باشد تا از این طریق جداول مختلف بتوانند از یک شی sequence استفاده نمایند.


Reset یک sequence (دوباره آغاز کردن یک دنباله)

Reset کردن یک sequence، عبارتند از آغاز مجدد آن دنباله از یک نقطه (عدد یا مقدار) معین. برای این منظور، فرمول زیر را وارد نمایید:


ALTER SEQUENCE [schema_name. ] sequence_name
    [ RESTART [ WITH constant ] ]
    [ INCREMENT BY constant ]
    [ { MINVALUE constant } | { NO MINVALUE } ]
    [ { MAXVALUE constant } | { NO MAXVALUE } ]
    [ CYCLE | { NO CYCLE } ]
    [ { CACHE [ constant ] } | { NO CACHE } ]
    [ ; ]

Sequence یک شی برنامه نویسی شده مانند یک تابع است که طراح یا توسعه دهندگان بانک اطلاعاتی در سطح پایگاه داده ایجاد می کنند و آن را به جداول مختلف اعمال می کند.


آموزش کاربردی

1. داخل Query Editor کلیک نموده و با فشردن کلیدهای Ctrl + A تمامی دستورات قبلی را انتخاب و حذف نمایید.
2. حال دستور زیر را وارد کنید:


USE University6;
GO
ALTER SEQUENCE Academics.SeqSchedules
RESTART WITH 10201
INCREMENT BY 1;
GO
INSERT INTO Academics.UndergraduateSchedules(UndergraduateScheduleID, SemesterID, StartDate, EndDate, StartTime, EndTime, Weekdays, TeacherNumber, CourseCode, CourseDeliveryTypeCode, LocationCode, RoomNumber)
VALUES(NEXT VALUE FOR Academics.SeqSchedules, 102, N'20120514', N'20120819', N'08:15', N'10:10', N'M-W', N'293804', N'WRTG 101', N'F', N'LATAC', N'204');
GO
INSERT INTO Academics.UndergraduateSchedules(UndergraduateScheduleID, SemesterID, StartDate, EndDate, StartTime, EndTime, Weekdays, TeacherNumber, CourseCode, CourseDeliveryTypeCode, LocationCode, RoomNumber)
VALUES(NEXT VALUE FOR Academics.SeqSchedules, 102, N'20120514', N'20120819', N'10:25', N'12:20', N'M-W', N'603925', N'EDPD 100', N'F', N'HMNSS', N'101');
GO
INSERT INTO Academics.UndergraduateSchedules(UndergraduateScheduleID, SemesterID, StartDate, EndDate, StartTime, EndTime, Weekdays, TeacherNumber, CourseCode, CourseDeliveryTypeCode, LocationCode, RoomNumber)
VALUES(NEXT VALUE FOR Academics.SeqSchedules, 102, N'20120514', N'20120819', N'08:15', N'10:10', N'T-H', N'520203', N'MATH 106', N'F', N'LATAC', N'104');
GO
INSERT INTO Academics.UndergraduateSchedules(UndergraduateScheduleID, SemesterID, StartDate, EndDate, TeacherNumber, CourseCode, CourseDeliveryTypeCode, LocationCode)
VALUES(NEXT VALUE FOR Academics.SeqSchedules, 102, N'20120514', N'20120205', N'820384', N'LBRS 100', N'L', N'ONLNE');
GO
INSERT INTO Academics.UndergraduateSchedules(UndergraduateScheduleID, SemesterID, StartDate, EndDate, StartTime, EndTime, Weekdays, TeacherNumber, CourseCode, CourseDeliveryTypeCode, LocationCode, RoomNumber)
VALUES(NEXT VALUE FOR Academics.SeqSchedules, 102, N'20120514', N'20120819', N'08:15', N'10:10', N'M-W', N'160205', N'CMSC 101', N'F', N'SEAMT', N'210');
GO
INSERT INTO Academics.UndergraduateSchedules(UndergraduateScheduleID, SemesterID, StartDate, EndDate, StartTime, EndTime, Weekdays, TeacherNumber, CourseCode, CourseDeliveryTypeCode, LocationCode, RoomNumber)
VALUES(NEXT VALUE FOR Academics.SeqSchedules, 102, N'20120514', N'20120819', N'13:25', N'15:20', N'M-W', N'297940', N'MATH 115', N'F', N'NAASB', N'102');
GO
INSERT INTO Academics.UndergraduateSchedules(UndergraduateScheduleID, SemesterID, StartDate, EndDate, StartTime, EndTime, Weekdays, TeacherNumber, CourseCode, CourseDeliveryTypeCode, LocationCode, RoomNumber)
VALUES(NEXT VALUE FOR Academics.SeqSchedules, 102, N'20120514', N'20120819', N'08:15', N'10:10', N'T-H', N'283029', N'HIST 140', N'F', N'HMNSS', N'103');
GO
ALTER SEQUENCE Academics.SeqSchedules
RESTART WITH 10301
INCREMENT BY 1;
GO
INSERT INTO Academics.UndergraduateSchedules(UndergraduateScheduleID, SemesterID, StartDate, EndDate, StartTime, EndTime, Weekdays, TeacherNumber, CourseCode, CourseDeliveryTypeCode, LocationCode, RoomNumber)
VALUES(NEXT VALUE FOR Academics.SeqSchedules, 103, N'20120920', N'20121014', N'08:15', N'10:10', N'M-W', N'293804', N'WRTG 101', N'F', N'LATAC', N'101');
GO
INSERT INTO Academics.UndergraduateSchedules(UndergraduateScheduleID, SemesterID, StartDate, EndDate, StartTime, EndTime, Weekdays, TeacherNumber, CourseCode, CourseDeliveryTypeCode, LocationCode, RoomNumber)
VALUES(NEXT VALUE FOR Academics.SeqSchedules, 103, N'20120920', N'20121014', N'10:25', N'12:20', N'M-W', N'640840', N'MATH 106', N'F', N'LATAC', N'106');
GO
INSERT INTO Academics.UndergraduateSchedules(UndergraduateScheduleID, SemesterID, StartDate, EndDate, StartTime, EndTime, Weekdays, TeacherNumber, CourseCode, CourseDeliveryTypeCode, LocationCode, RoomNumber)
VALUES(NEXT VALUE FOR Academics.SeqSchedules, 103, N'20120920', N'20121014', N'13:25', N'15:20', N'M-W', N'283029', N'HIST 140', N'F', N'HMNSS', N'103');
GO
INSERT INTO Academics.UndergraduateSchedules(UndergraduateScheduleID, SemesterID, StartDate, EndDate, StartTime, EndTime, Weekdays, TeacherNumber, CourseCode, CourseDeliveryTypeCode, LocationCode, RoomNumber)
VALUES(NEXT VALUE FOR Academics.SeqSchedules, 103, N'20120920', N'20121014', N'13:25', N'15:20', N'T-H', N'283029', N'HIST 140', N'F', N'HMNSS', N'103');
GO
ALTER SEQUENCE Academics.SeqSchedules
RESTART WITH 10401
INCREMENT BY 1;
GO
INSERT INTO Academics.UndergraduateSchedules(UndergraduateScheduleID, SemesterID, StartDate, EndDate, StartTime, EndTime, Weekdays, TeacherNumber, CourseCode, CourseDeliveryTypeCode, LocationCode, RoomNumber)
VALUES(NEXT VALUE FOR Academics.SeqSchedules, 104, N'20130107', N'20130217', N'08:15', N'10:10', N'M-W', N'283029', N'HIST 140', N'F', N'HMNSS', N'105');
GO
INSERT INTO Academics.UndergraduateSchedules(UndergraduateScheduleID, SemesterID, StartDate, EndDate, StartTime, EndTime, Weekdays, TeacherNumber, CourseCode, CourseDeliveryTypeCode, LocationCode, RoomNumber)
VALUES(NEXT VALUE FOR Academics.SeqSchedules, 104, N'20130107', N'20130217', N'15:35', N'17:30', N'M-W', N'249382', N'GVPS 140', N'F', N'HMNSS', N'107');
GO

3. با زدن کلید F5 کد را اجرا نمایید.
4. بار دیگر داخل پنجره ی ویرایش کوئری کلیک نموده و دستورات وارد شده ی قبلی را حذف کنید.
5. به منظور مشاهده ی فهرستی از زمان بندی ها، کد زیر را وارد کنید:


SELECT schd.UndergraduateScheduleID,
       schd.SemesterID, 
       schd.StartDate, 
       schd.EndDate, 
       schd.TeacherNumber, 
       schd.CourseCode, 
       schd.CourseDeliveryTypeCode, 
       schd.LocationCode
FROM Academics.UndergraduateSchedules schd;
GO	

6. برای اجرای دستورات بالا، کلید F5 را فشار دهید.


انتخاب یک Sequence معین به عنوان پیش فرض


تا به حال برای مشخص کردن مقدار ستون بعدی از جدولی که برای آن sequence تعریف کرده بودیم، دستور NEXT VALUE FOR را فراخوانی می کردیم. اگر قرار است برای درج داده در جدول همان sequence را (بارها) فراخوانی کنیم، در آن صورت می توان شی sequence را به عنوان مقدار پیش فرض ستون مورد نظر تنظیم نمایید. با انجام این کار دیگر نیازی به ذکر ستون در دستور INSERT نیست.


مثال:
USE LambdaSquare1;
GO
CREATE TABLE Rentals.Registrations
(
	RegistrationID int not null
		DEFAULT (NEXT VALUE FOR Rentals.SeqRegistrations),
	RegistrationDate Date,
	EmployeeNumber int, -- Processed By
	TenantCode int, -- Processed For
	UnitNumber int not null,
	RentStartDate date,
	Notes nvarchar(max)
);
GO

پس از تنظیم sequence به عنوان مقدار پیش فرض ستون، می توان مقادیر ستون را به همان شیوه ای که برای ستون identity ایجاد می کردید، مشخص کنید (البته بدون ذکر کردن اسم ستون در دستور INSERT).


INSERT INTO Academics.UndergraduateStudents(StudentNumber, FirstName, MiddleName, LastName, BirthDate, Gender, EmailAddress, MajorID, MinorID, Username)
VALUES(N'88130480', N'Marie', N'Annette', N'Robinson', Administration.SetDateOfBirth(-6817), N'F', N'mrobinson@yahoo.com',    1021, 1004, N'mrobinson'),
      (N'24795711', N'Roger', N'Dermot',  N'Baker',    Administration.SetDateOfBirth(-6570), N'M', N'rbaker2020@hotmail.com', 1005, 1002, N'rbaker');
GO
INSERT INTO Academics.UndergraduateStudents(StudentNumber, FirstName, LastName, BirthDate, Gender, EmailAddress, MajorID, MinorID, Username)
VALUES(N'18073572', N'Patrick', N'Wisne', Administration.SetDateOfBirth(-11012), N'M', N'pwisdom@attmail.com', 1001, 1008, N'pwisne');
GO

آموزش کاربردی


1. دستورات زیر را وارد Query Editor نمایید:


USE University6;
GO
CREATE TABLE Academics.UndergraduateStudents
(
StudentID int not null
DEFAULT (NEXT VALUE FOR Academics.SeqStudents),
StudentNumber nvarchar(8) not null,
FirstName nvarchar(20),
MiddleName nvarchar(20),
LastName nvarchar(20),
BirthDate date,
Gender nvarchar(3) default N'N/A',
MajorID int not null
);
GO
INSERT INTO Academics.UndergraduateStudents(StudentNumber, FirstName, MiddleName, LastName, BirthDate, Gender, MajorID)
VALUES(N'88130480', N'Marie', N'Annette', N'Robinson', Administration.SetDateOfBirth(-6817), N'F', 1021),
(N'24795711', N'Roger', N'Dermot',  N'Baker',    Administration.SetDateOfBirth(-6570), N'M', 1005);
GO
INSERT INTO Academics.UndergraduateStudents(StudentNumber, FirstName, LastName, BirthDate, Gender, MajorID)
VALUES(N'18073572', N'Patrick', N'Wisne', Administration.SetDateOfBirth(-11012), N'M', 1001);
GO
INSERT INTO Academics.UndergraduateStudents(StudentNumber, FirstName, MiddleName, LastName, BirthDate, Gender, MajorID)
VALUES(N'22803048', N'Gary', N'Jonathan', N'Jones', Administration.SetDateOfBirth(-19926), N'M', 1019),
(N'97394285', N'Jessica', N'Danielle', N'Weisburgh', Administration.SetDateOfBirth(-12081), N'F', 1009),
(N'97596002', N'Laurent', N'Frank', N'Simonson', Administration.SetDateOfBirth(-17503), N'M', 1016),
(N'94708257', N'Christopher', N'Sheldon', N'Dale', Administration.SetDateOfBirth(-6570),  N'M', 1006),
(N'48009520', N'Diane', N'Kathy', N'Paglia', Administration.SetDateOfBirth(-13840), N'F', 1006),
(N'13048039', N'Joseph', N'Christian', N'Riback', Administration.SetDateOfBirth(-7909),  N'M', 1011),
(N'92270397', N'Patrick', N'Jonathan', N'Brzeniak', Administration.SetDateOfBirth(-17361), N'M', 1021);
GO
INSERT INTO Academics.UndergraduateStudents(StudentNumber, FirstName, LastName, BirthDate, Gender, MajorID)
VALUES(N'70840584', N'Tracy', N'Sikorowski', Administration.SetDateOfBirth(-11650), N'M', 1006);
GO

2. اکنون کد بالا را اجرا کنید.
3. به منظور مشاهده ی فهرستی از دانش آموزان، دستور زیر را جایگزین کد قبلی نمایید


SELECT Students.StudentID ID,
       Students.StudentNumber [Student #],
       Students.FirstName [First Name],
       Students.MiddleName [Middle Name],
       Students.LastName [Last Name],
       FORMAT(Students.BirthDate, N'D') [Birth Date],
       DATEDIFF(yyyy, BirthDate, SYSDATETIME()) Age,
       CASE Students.Gender
		WHEN N'M' THEN N'Male'
		WHEN N'F' THEN N'Female'
		ELSE N'Unknown'
       END Gender,
       MajorID Major
FROM Academics.UndergraduateStudents Students
ORDER BY Students.StudentID;
GO

4. برای اجرای دستور فوق، کلید F5 را فشار دهید.

  • 1444
  •    1100
  • تاریخ ارسال :   1395/01/16

دانلود PDF دانشجویان گرامی اگر این مطلب برای شما مفید بود لطفا ما را در GooglePlus محبوب کنید
رمز عبور: tahlildadeh.com یا www.tahlildadeh.com
ارسال دیدگاه نظرات کاربران
شماره موبایل دیدگاه
عنوان پست الکترونیک

ارسال

آموزشگاه برنامه نویسی تحلیل داده
آموزشگاه برنامه نویسی تحلیل داده

تمامی حقوق این سایت متعلق به آموزشگاه تحلیل داده می باشد .