برنامج SQLite - الأمر Alter على جدول


في البرنامج SQLite، يسمح الأمر ALTER TABLE بتعديل اسم جدول أو إصافة أعمدة إلى جدول موجود  : 

إضافة عمود

تستعمل الصيغة ADD COLUMN لإضافة عمود إلى الجدول المحدد :
في المثال التالي نقوم بإضافة العمود EmployerGenre أي جنس العامل إلى الجدول Employers حسب الكود التالي :
alter table employers 
add  EmployerGenre INTEGER DEFAULT 1 NOT NULL;
 العمود EmployerGenre  يحتوي على بيانات من نوع أعداد صحيحة غير معدومة  والقيمة الافتراضية له هي 1.
نطبق القيود التالية عند استخدام "إضافة عمود" في صياغة الأمر  SQLite:
أن  لا يكون العمود مفتاح أساسي أو قيد فريد.
  • أن لا يكون العمود قيمة افتراضية CURRENT_TIME، CURRENT_DATE، CURRENT_TIMESTAMP، أو تعبير في أقواس.
  • إذا تم تحديد القيد NOT NULL، يجب أن يكون للعمود قيمة افتراضية غير فارغة.
  • إذا تم تمكين قيود المفاتيح الخارجية ويضاف عمود مع شرط "REFERENCES"، يجب أن يكون للعمود قيمة افتراضية، للقيمة  NULL.

إعادة تسمية الجدول

الأمر "RENAME TO" يسمح لنا بتغيير اسم الجدول.
الكود التالي يمكننا من إعادة تسمية أحد الجداول:
ALTER TABLE ATTESTATION
RENAME TO  ATTESTATIONS

تحديث أو حذف الأعمدة

سكليتي لا يدعم بنود مثل DROP COLUMN, ALTER COLUMN, و ADD CONSTRAINT، والتي هي جزء من معيار SQL.
ومع ذلك، هناك طرق أخرى لفعل هذه الأشياء مع SQLite.
فمثلا لتغيير اسم عمود نقوم بمايلي :
  • ننشأ جدول جديد يحتوي على نفس الأعمدة مع نفس نوع البيانات، ويكون الاختلاف فقط في اسم العمود الذي نريد تغيير اسمه .
  • نضيف جميع البيانات بالجدول القديم إلى الجدول الجديد،
  • نقوم بحذف الجدول القديم.
  • وفي الأخير نغير اسم الجدول الجديد إلى الاسم القديم:
في هذا المثال نريد تغيير اسم الحقل AttestationDateفي الجدول Attestations إلى الاسم الجديد EtablissementDate فنكتب الكود التالي :
أولا : نقوم بإنشاء الجدول Attestations1 كما يلي :
CREATE table Attestations1 (
AttestationId integer not null,
AtesstationLibelle varchar(100) not null,EtablissementDate Date,EmployerId Integer not null,PRIMARY KEY (AttestationId),
FOREIGN KEY(EmployerId) REFERENCES Employers(EmployerId)
); 
ثانيا: نقل البياانات إلى الجدولAttestations1
insert into Attestations1 select AttestationId, AtesstationLibelle ,AttestationDate,EmployerId   from attestations;

حذف الجدول Attestations
drop table Attestations;
إعادة تسمية الجدول
ALTER TABLE  Attestations1 RENAME TO Attestations;
عرض البيانات
select * from Attestations ; 
فتكون النتيجة كما يلي:

ATTESTATIONIDATESSTATIONLIBELLEETABLISSEMENTDATEEMPLOYERID
1ATTESTATION DE TRAVAIL05/08/20161
2ATTESTATION DE TRAVAIL06/08/20164
3ATTESTATION DE TRAVAIL05/08/20169
4ATTESTATION DE TRAVAIL04/08/20168
5ATTESTATION DE TRAVAIL05/08/20167
6ATTESTATION DE TRAVAIL06/08/20163

حذف عمود

لحذف عمود ، نقوم بإنشاء جدول جديد باستعمال العبار SELECT ، في هذه العبارة نتجاهل العمود أو الأعمدة التي نريد حذفها
يقوم البرنامج SQLite بإنشاء الأعمدة التي نذكرها في العبارة SELECT فقط.
في الكود التالي نقوم بحذف العمود EtablissementDate من الجدول Attestations :
CREATE TABLE  attestations1 as
SELECT AttestationId,AtesstationLibelle,EmployerId  From attestations;
بعدها نقوم بعرض البيانات الموجودة بالجدول الجديد كما يلي:
select * from attestations1
فتكون النتيجة كما يلي :
AttestationIdAtesstationLibelleEmployerId
----------------------------------------
1ATTESTATION DE TRAVAIL1
2ATTESTATION DE TRAVAIL4
3ATTESTATION DE TRAVAIL9
4ATTESTATION DE TRAVAIL8
5ATTESTATION DE TRAVAIL7
6ATTESTATION DE TRAVAIL3
الآن لدينا الجداول التالية : attestations, attestations1, employers

ليست هناك تعليقات:

إرسال تعليق

المشاركات الشائعة