ParsX.com
پذیرش پروژه از دانشجویی ... تا سازمانی 09376225339
 
   ProfileProfile   Log in to check your private messagesLog in to check your private messages  |  FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups Log inLog in   RegisterRegister 

دستور ALTER TABLE ‌براي اعمال تغييرات در جداول

 
Post new topic   Reply to topic    ParsX.com Forum Index -> اس . كيو . ال SQL
View previous topic :: View next topic  
Author Message
vahid
بي تو هرگز


Joined: 26 Nov 2004
Posts: 3067
Location: Tehran

PostPosted: Sun Feb 06, 2005 11:43 am    Post subject: دستور ALTER TABLE ‌براي اعمال تغييرات در جداول Reply with quote

Quote:
ALTER TABLE

اين دستور همانطور كه ميدانيد جزو دستورات DDL ميباشد .
پس از ساخت جدول و ورود داده ها به آن شايد لازم باشد پس از طي شدن زماني و استفاده از جدول متوجه شويد كه جدول شما ستوني كم دارد ! يا انكه نوع داده هاي ستوني از جدول شما مناسب ان داده ها نميباشد . مثلا ابتدا در هنگام ساخت جدول ستوني بنام GRADE ‌را با نوع داده صحيح انتخاب كرده ايد . اما بعدا متوجه شديد كه اين مقدار براي اين ستون كافي نيست .بنابراين نياز داريد به انكه نوع فيلدهاي جدول را تغيير دهيد .
البته اين دستور تنها براي تغيير دادن در نوع فيلد نيست كه براي تغيير اندازه سايز فيلد . تغيير نوع . يا انكه فيلد شما ميتواند مقدار تهي داشته باشد يا خير و تعدادي ديگر از تغييرات اين دستور مورد استفاده قرار ميگيرد . حتي شايد بخواهيد ستوني را حذف يا اضافه كنيد .
شماي اصلي دستور به صورت زير است :
ALTER TABLE table {ADD {COLUMN field type[(size)] [NOT NULL] [CONSTRAINT index] |
ALTER COLUMN field type[(size)] |
CONSTRAINT multifieldindex} |
DROP {COLUMN field I CONSTRAINT indexname} }

در قالب فوق :
table نام جدولي است كه قرار است تغييرات بر ان اعمال شود .
field نام فيلدي است كه قرار است در جدول اضافه پاك يا تغييرات بر ان اعمال شود .
type نوع فيلد مورد نظر است كه ميتواند عددي يا رشته اي و ياهر يك از انواع استاندارد داده اموزش داده شده دربخش قسمت دوم :‌ انواع داده ها در SQL باشد .
Size سايز فيلدهاي كاراكتري و باينري كه تنها در اين دو نوع داده قابل استفاده است .
index شاخصي كه قرار است براي اين فيلد در نظر گرفته شود .
multifieldindex شاخصهايي كه قرار است براي چندين فيلد در نظر گرفته شود .
indexname نام ايندكسي كه قرار است از چندين فيلد پاك شود
يك مثال ساده به همراه قالب دستور :
ALTER TABLE table_name
 ADD column_name column-definition;

فرضا :
alter table student add studet_test1 varchar(250)

براي افزودن چندين ستون :
ALTER TABLE table_name
ADD  (   column_1    column-definition,
   column_2   column-definition,
   ...   
   column_n   column_definition );

براي تغييرات نوع دستور :
ALTER TABLE table_name
 MODIFY column_name column_type;

مثال :
ALTER TABLE student
 MODIFY stno    varchar2(100)     not null;

براي چندين ستون :
ALTER TABLE table_name
MODIFY   (   column_1    column_type,
   column_2   column_type,
   ...   
   column_n   column_type );

براي تغيير نام يك ستون :
ALTER TABLE table_name
 RENAME COLUMN old_name to new_name;


در مثال زير يك كليد خارجي به جدول student با نام test_fk ايجاد ميكنيم كه با فيلد test_pk ‌از جدول grade ارتباط برقرار ميكند . :
ALTER TABLE student ADD CONSTRAINT test_fk FOREIGN KEY (test_pk) REFERENCES grade (test_pk);

حال همين فيلد را پاك ميكنيم :
ALTER TABLE Students DROP CONSTRAINT test_fk;

اگر بخواهيد با برنامه اي اينكار را بكنيد فرضا با visual basic از دستور زير استفاده ميكنيد :كه فقط يك مثال است :
Sub Create_Table_Script()

Dim db As Database

Set db = OpenDatabase("yourcustomers.mdb")

'alter employees table to add foreign key reference as above

db.Execute "ALTER TABLE student  ADD CONSTRAINT test_fk  FOREIGN KEY (test_pk) REFERENCES grade (test_fk);"

db.Close
End Sub

در دستور فوق سه گزينه اختياري داريم . اولي MODIFY ‌ براي اعمال تغييرات در نوع جدول . و گزينه دومي ADD ‌براي اضافه كردن ستوني به جدول و همچنين DROP ‌براي پاك كردن ستون .
مثالي براي تغيير نوع فيلد STNO ‌ را ميبينيم :
ALTER TABLE STUDENT MODIFY STNO VARCHAR(12);


در استفاده از دستور Add يادتان باشد كه اگر داده اي از قبل در ستون وارد كرده ايد نوع اين ستون نميتواند not null باشد بنابراين بايد ابتدا انرا از نوع null تعريف كنيد . سپس انرا با داده هايي پر كنيد و سپس انرا به نوع not null تغيير دهيد .
باز هم مثال :
ALTER TABLE Employees ALTER COLUMN Emp_Email TEXT(50);
Back to top
Display posts from previous:   
Post new topic   Reply to topic    ParsX.com Forum Index -> اس . كيو . ال SQL All times are GMT + 3.5 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum