المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : حل أسئلة مذاكرة قواعد المعطيات . . . . . .


Bl@ck Angel
12-27-2007, 06:28 PM
هذه أسئلة المذاكرة التعويضية التي جرة يوم الخميس ما قبل عيد الأضحى .....

1- أنشئ جدول emp
العمود no مفتاح أساسي.
الأسم ename لا يزيد عن 13 محرف ولا يقل عن 3 محارف
الكنية last لا تبدأ بفراغ.
التولد hiredate ليس قبل 11/1/1985
الجنسية nationality الأفتراضية syrian لا تقبل Null .
مع تسمية القيد.

create table EMP2 (
no number (5) CONSTRAINT con_PK PRIMARY KEY,
ename varchar(13) CONSTRAINT con_name check (length(ename)between 3 and 13),
last varchar(35) constraint con_last check(substr(last,0,1)<> ' '),
birthdate date constraint con_birth
check(birthdate>to_date('11/1/1985','dd/mm/yyyy')),
nationality varchar(35) default 'SYRIAN' not null,
constraint con_uinque unique(ename,last)
);


2-عرض أسماء و أرقام و أعمار و أسماء القسم للموظفين الذين يعملون في القسم ACCOUNTING أو القسم الذي عدد موظفيه 3 أو معاشهم أكبر من 3000.

select ename,empno,to_char(sysdate,'yyyy')-to_char(hiredate,'yyyy'),dname from emp e,dept d
where e.deptno=d.deptno and
( dname='ACCOUNTING' or e.deptno in
(select deptno from emp
group by deptno
having count(*)=3) or
sal>=3000);


3-عدل الأسم والكنية بحيث يتم أستبدال الأسم محل الكنية والكنية محل الأسم و ذلك للموظفين أرقامهم بين 2100 و 2400

update emp set ename=job,job=ename
where empno between 2100 and 2400;
select * from emp;


4-أنشئ view يعرض أسماء الموظفين و الأرقام والمعشات بحيث يتم زيادة المعاشات على النحو التالي
200 عن كل سنة مخدمة عن لأول عشر سنوات خدمة .
300 عن كل سنة فوق العشر سنين إلى 20 سنة.
وفوق العشرين سنة 350.

create or replace view v1 as select ename , empno ,
sal+(200*(to_char(sysdate,'yyyy')-to_char(hiredate,'yyyy'))) salary from emp
where (to_char(sysdate,'yyyy')-to_char(hiredate,'yyyy'))<=10;

create or replace view v2 as select ename , empno ,
sal+(300*(to_char(sysdate,'yyyy')-to_char(hiredate,'yyyy'))) salary from emp
where (to_char(sysdate,'yyyy')-to_char(hiredate,'yyyy')) between 11 and 20;

create or replace view v3 as select ename , empno ,
sal+(350*(to_char(sysdate,'yyyy')-to_char(hiredate,'yyyy'))) salary from emp
where (to_char(sysdate,'yyyy')-to_char(hiredate,'yyyy'))>20;

create view v4 as(
select * from v1
union
select * from v2
union
select * from v3);
أرجو من كل من وجد خطاء أن يدخل التصحيح في لمنتدى أو إن كان هناك حل أفضل ...
و بالتوفيق للجميع . . .