في البرنامج SQLite، يسمح الأمر ALTER TABLE بتعديل اسم جدول أو إصافة أعمدة إلى جدول موجود :
إضافة عمود
تستعمل الصيغة ADD COLUMN لإضافة عمود إلى الجدول المحدد :
في المثال التالي نقوم بإضافة العمود EmployerGenre أي جنس العامل إلى الجدول Employers حسب الكود التالي :
في المثال التالي نقوم بإضافة العمود EmployerGenre أي جنس العامل إلى الجدول Employers حسب الكود التالي :
alter table employers add EmployerGenre INTEGER DEFAULT 1 NOT NULL;
العمود EmployerGenre يحتوي على بيانات من نوع أعداد صحيحة غير معدومة والقيمة الافتراضية له هي 1.
نطبق القيود التالية عند استخدام "إضافة عمود" في صياغة الأمر SQLite:
أن لا يكون العمود مفتاح أساسي أو قيد فريد.
نطبق القيود التالية عند استخدام "إضافة عمود" في صياغة الأمر 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 ;
فتكون النتيجة كما يلي:
ATTESTATIONID ATESSTATIONLIBELLE ETABLISSEMENTDATE EMPLOYERID 1 ATTESTATION DE TRAVAIL 05/08/2016 1 2 ATTESTATION DE TRAVAIL 06/08/2016 4 3 ATTESTATION DE TRAVAIL 05/08/2016 9 4 ATTESTATION DE TRAVAIL 04/08/2016 8 5 ATTESTATION DE TRAVAIL 05/08/2016 7 6 ATTESTATION DE TRAVAIL 06/08/2016 3
حذف عمود
لحذف عمود ، نقوم بإنشاء جدول جديد باستعمال العبار SELECT ، في هذه العبارة نتجاهل العمود أو الأعمدة التي نريد حذفها
يقوم البرنامج SQLite بإنشاء الأعمدة التي نذكرها في العبارة SELECT فقط.
في الكود التالي نقوم بحذف العمود EtablissementDate من الجدول Attestations :
CREATE TABLE attestations1 as SELECT AttestationId,AtesstationLibelle,EmployerId From attestations;
بعدها نقوم بعرض البيانات الموجودة بالجدول الجديد كما يلي:
select * from attestations1
فتكون النتيجة كما يلي :
AttestationId | AtesstationLibelle | EmployerId |
--------- | ---------------------- | --------- |
1 | ATTESTATION DE TRAVAIL | 1 |
2 | ATTESTATION DE TRAVAIL | 4 |
3 | ATTESTATION DE TRAVAIL | 9 |
4 | ATTESTATION DE TRAVAIL | 8 |
5 | ATTESTATION DE TRAVAIL | 7 |
6 | ATTESTATION DE TRAVAIL | 3 |
الآن لدينا الجداول التالية : attestations, attestations1, employers
ليست هناك تعليقات:
إرسال تعليق