حل اسئلة الكتاب السعودى فى شرح قواعد البيانات اوراكل
DESCRIPTION
حل اسئلة الكتاب السعودى فى شرح قواعد البيانات اوراكلTRANSCRIPT
٢٠١٠
Mohamed_Suez Mohamed_Suez Mohamed_Suez Mohamed_Suez
& HIS Wife& HIS Wife& HIS Wife& HIS Wife
ARABOUGARABOUGARABOUGARABOUG.org.org.org.orgإھداء إلى
3/3/2010
����� ��)SQL (�� ���� � ������� � ���� ������ ������ ����� �� �!�"# �
��$"���� ��%&��� �'�(��% )*��� )+��.
SQL> desc dept
Name Null? Type
-----------------------------------------
DEPTNO NOT NULL NUMBER(2)
DNAME
LOC VARCHAR2(13)
-------------------------------------------------------------------------------------------
SQL> select *
2 from dept;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
حـــــــلحـــــــلحـــــــلحـــــــل
Name Null? Type
----------------------------------------- -------- ----------------------------
DEPTNO NOT NULL NUMBER(2)
VARCHAR2(14)
LOC VARCHAR2(13)
-------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------
SQL> select empno,ename,job,hiredate
2 from emp;
EMPNO ENAME JOB HIREDATE
---------- ---------- --------- --------
7369 SMITH CLERK 17/12/80
7499 ALLEN SALESMAN 20/02/81
7521 WARD SALESMAN 22/02/81
7566 JONES MANAGER 02/04/81
7654 MARTIN SALESMAN 28/09/81
7698 BLAKE MANAGER 01/05/81
7782 CLARK MANAGER 09/06/81
7788 SCOTT ANALYST 19/04/87
7839 KING PRESIDENT 17/11/81
7844 TURNER SALESMAN 08/09/81
7876 ADAMS CLERK 23/05/87
EMPNO ENAME JOB HIREDATE
---------- ---------- --------- --------
7900 JAMES CLERK 03/12/81
7902 FORD ANALYST 03/12/81
7934 MILLER CLERK 23/01/82
14 rows selected.
حـــــــلحـــــــلحـــــــلحـــــــل
SQL> select empno,ename,job,hiredate
HIREDATE
--------
7369 SMITH CLERK 17/12/80
7499 ALLEN SALESMAN 20/02/81
7521 WARD SALESMAN 22/02/81
7566 JONES MANAGER 02/04/81
9/81
7698 BLAKE MANAGER 01/05/81
7782 CLARK MANAGER 09/06/81
7788 SCOTT ANALYST 19/04/87
7839 KING PRESIDENT 17/11/81
7844 TURNER SALESMAN 08/09/81
7876 ADAMS CLERK 23/05/87
EMPNO ENAME JOB HIREDATE
--------
7900 JAMES CLERK 03/12/81
7902 FORD ANALYST 03/12/81
7934 MILLER CLERK 23/01/82
SQL> select distinct job
2* from emp;
JOB
---------
CLERK
SALESMAN
PRESIDENT
MANAGER
ANALYST
حـــــــلحـــــــلحـــــــلحـــــــل
SQL> select empno employee_no, ename employee_name, job jobs
2* from emp
EMPLOYEE_NO EMPLOYEE_N JOBS
----------- ---------- ---------
7369 SMITH CLERK
7499 ALLEN SALESMAN
7521 WARD SALESMAN
7566 JONES MANAGER
7654 MARTIN SALESMAN
7698 BLAKE MANAGER
7782 CLARK MANAGER
7788 SCOTT ANALYST
7839 KING PRESIDENT
7844 TURNER SALESMAN
7876 ADAMS CLERK
EMPLOYEE_NO EMPLOYEE_N JOBS
----------- ---------- ---------
7900 JAMES CLERK
7902 FORD ANALYST
7934 MILLER CLERK
14 rows selected.
حـــــــلحـــــــلحـــــــلحـــــــل
SQL> select empno employee_no, ename employee_name, job jobs
أسئلة الفصل الثالث
SQL> select ename,sal
2 from emp
3 where sal>2850
4 order by sal desc;
ENAME SAL
---------- ----------
KING 5000
FORD 3000
SCOTT 3000
JONES 2975
حـــــــلحـــــــلحـــــــلحـــــــل
أسئلة الفصل الثالث
SQL> select ename,sal
٢ from emp
٣ where sal not between 1500 and
ENAME SAL
---------- ----------
SMITH 800
WARD 1250
JONES 2975
MARTIN 1250
SCOTT 3000
KING 5000
ADAMS 1100
JAMES 950
FORD 3000
MILLER 1300
حـــــــلحـــــــلحـــــــلحـــــــل
and 2850؛
SQL> select ename,sal
2 from emp
3 where(deptno=10 or deptno=30
4 order by sal desc;
ENAME SAL
---------- ----------
KING 5000
BLAKE 2850
CLARK 2450
ALLEN 1600
حـــــــلحـــــــلحـــــــلحـــــــل
30) and sal>1500
SQL> select ename,hiredate
2 from emp
3 where hiredate like'%82';
ENAME HIREDATE
---------- --------
MILLER 23/01/82
=================================
SQL> select hiredate
from emp
where ename = 'SCOTT';
HIREDATE
---------
19-APR-87
حـــــــلحـــــــلحـــــــلحـــــــل
وذلك ,ن ملحوظة & تظھر النتيجة كما بالسؤال
ملحوظة & تظھر النتيجة كما بالسؤال
SQL> select ename,sal,comm
2 from emp
3 where comm is not null;
ENAME SAL COMM
---------- ---------- ----------
ALLEN 1600 300
WARD 1250 500
MARTIN 1250 1400
TURNER 1500 0
حـــــــلحـــــــلحـــــــلحـــــــل
SQL> select ename
2 from emp
3 where ename like'__A%';
ENAME
----------
BLAKE
CLARK
ADAMS
حـــــــلحـــــــلحـــــــلحـــــــل
SQL> select ename
2 from emp
3 where ename like'%LL%';
ENAME
----------
ALLEN
MILLER
حـــــــلحـــــــلحـــــــلحـــــــل
1 SQL> select initcap(ename) EMP_NAME,length(ename)
NUMBER1,substr(ename,0,4) SECTION
2* from emp
EMP_NAME NUMBER1 SECT
---------- ---------- ----
Smith 5 SMIT
Allen 5 ALLE
Ward 4 WARD
Jones 5 JONE
Martin 6 MART
Blake 5 BLAK
Clark 5 CLAR
Scott 5 SCOT
King 4 KING
Turner 6 TURN
Adams 5 ADAM
EMP_NAME NUMBER1 SECT
---------- ---------- ----
James 5 JAME
Ford 4 FORD
Miller 6 MILL
حـــــــلحـــــــلحـــــــلحـــــــل
أسئلة الفصل الرابع
SQL> select initcap(ename) EMP_NAME,length(ename)
) SECTION
1 SQL> select ename || job TITLE
2 from emp
3* where deptno=30
TITLE
-------------------
ALLENSALESMAN
WARDSALESMAN
MARTINSALESMAN
BLAKEMANAGER
TURNERSALESMAN
JAMESCLERK
حـــــــلحـــــــلحـــــــلحـــــــل
SQL> select ename || job TITLE
1 SQL> select ename ENAME,round((months_between(sysdate,hiredate)/
2* from emp
ENAME ROUND((MONTHS_BETWEEN(SYSDATE,HIREDATE)/12),0)
---------- ----------------------------------------------
SMITH
ALLEN 29
WARD 29
JONES 29
MARTIN
BLAKE 29
CLARK 29
SCOTT 23
KING 28
TURNER
ADAMS 23
ENAME ROUND((MONTHS_BETWEEN(SYSDATE,HIREDATE)/12),0)
---------- ----------------------------------------------
JAMES
FORD 28
MILLER 28
حـــــــلحـــــــلحـــــــلحـــــــل
select ename ENAME,round((months_between(sysdate,hiredate)/
ENAME ROUND((MONTHS_BETWEEN(SYSDATE,HIREDATE)/12),0)
----------------------------------------------
29
ALLEN 29
WARD 29
JONES 29
MARTIN 28
BLAKE 29
CLARK 29
SCOTT 23
KING 28
28
ADAMS 23
ENAME ROUND((MONTHS_BETWEEN(SYSDATE,HIREDATE)/12),0)
----------------------------------------------
28
FORD 28
MILLER 28
select ename ENAME,round((months_between(sysdate,hiredate)/12),0)
SQL > select TO_CHAR(SYSDATE,'DAY "OF" MM YYYY')
2* from dual
TO_CHAR(SYSDATE,'DAY
--------------------
FRIDAY OF 03 2010
حـــــــلحـــــــلحـــــــلحـــــــل
SQL > select TO_CHAR(SYSDATE,'DAY "OF" MM YYYY')
SQL> Select to_date( ' FEBRUARY
2 From dual;
TO_DATE
---------
22-FEB-04
حـــــــلحـــــــلحـــــــلحـــــــل
SQL> Select to_date( ' FEBRUARY 22, 2004','mm / dd/yyyy')
SQL> select max(sal) MAXIMUM,min(sal) NINIMUM,sum(sal) SUM,round(avg(sal))
AVERAGE
; from emp
MAXIMUM NINIMUM SUM AVERAGE
---------- ---------- ---------- ----------
5000 800 29025 2073
حـــــــلحـــــــلحـــــــلحـــــــل
أسئلة الفصل الخامس
SQL> select max(sal) MAXIMUM,min(sal) NINIMUM,sum(sal) SUM,round(avg(sal))
MAXIMUM NINIMUM SUM AVERAGE
SQL> select max(sal) MAXIMUM,min(sal) NINIMUM,sum(sal) SUM,round(avg(sal))
SQL> select job,max(sal) as MAXIMUM,min(sal) as MINIMUM
from emp
; group by job
JOB MAXIMUM MINIMUM
--------- ---------- ----------
CLERK 1300 800
SALESMAN 1600 1250
PRESIDENT 5000 5000
MANAGER 2975 2450
ANALYST 3000 3000
حـــــــلحـــــــلحـــــــلحـــــــل
ob,max(sal) as MAXIMUM,min(sal) as MINIMUM
SQL> select job,count(job)
from emp
group by job;
JOB COUNT(JOB)
--------- ----------
CLERK 4
SALESMAN 4
PRESIDENT 1
MANAGER 3
ANALYST 2
حـــــــلحـــــــلحـــــــلحـــــــل
SQL> select count(distinct mgr) ‘NUMBER
; from emp
NUMBER1 OF MANAGER
------------------
6
حـــــــلحـــــــلحـــــــلحـــــــل
‘NUMBER1 OF MANAGER’
SQL> select e.ename,e.deptno,d.dname
2 from emp e,dept d
3 where e.deptno=d.deptno
4* and e.deptno=30;
ENAME DEPTNO DNAME
---------- ---------- --------------
ALLEN 30 SALES
WARD 30 SALES
MARTIN 30 SALES
BLAKE 30 SALES
TURNER 30 SALES
JAMES 30 SALES
6 rows selected.
حـــــــلحـــــــلحـــــــلحـــــــل
SQL> select e.ename,e.deptno,d.dname
SQL> select distinct( e.job),d.loc
2 from emp e,dept d
3 where e.deptno=d.deptno
4* and e.deptno=30;
JOB LOC
--------- -------------
SALESMAN CHICAGO
MANAGER CHICAGO
CLERK CHICAGO
حـــــــلحـــــــلحـــــــلحـــــــل
c
SQL> select e.ename,e.job,d.dname
2 from emp e,dept d
3 where e.deptno=d.deptno
4* and d.loc like 'DALLAS'
ENAME JOB DNAME
---------- --------- --------------
SMITH CLERK RESEARCH
JONES MANAGER RESEARCH
SCOTT ANALYST RESEARCH
ADAMS CLERK RESEARCH
FORD ANALYST RESEARCH
حـــــــلحـــــــلحـــــــلحـــــــل
SQL> select e.ename,e.job,d.dname
SQL> select e.ename,e.job,d.dname,e.sal,s.grade
2 from emp e,dept d,salgrade s
3 where (e.deptno=d.deptno
4 and e.sal between s.losal and s.hisal)
5 and e.deptno=10
6* order by sal;
ENAME JOB DNAME
---------- --------- -------------- ----------
MILLER CLERK ACCOUNTING 1300 2
CLARK MANAGER ACCOUNTING 2450 4
KING PRESIDENT ACCOUNTING 5
حـــــــلحـــــــلحـــــــلحـــــــل
> select e.ename,e.job,d.dname,e.sal,s.grade
and e.sal between s.losal and s.hisal)
ENAME JOB DNAME SAL GRADE
---------- ----------
MILLER CLERK ACCOUNTING 1300 2
CLARK MANAGER ACCOUNTING 2450 4
KING PRESIDENT ACCOUNTING 5000 5
SQL> select e.empno,e.ename,m.empno,m.ename
2 from emp e,emp m
3 where e.mgr=m.empno
4 and e.deptno=10;
EMPNO ENAME EMPNO ENAME
---------- ---------- ---------- ----------
7782 CLARK 7839 KING
7934 MILLER 7782 CLARK
حـــــــلحـــــــلحـــــــلحـــــــل
SQL> select e.empno,e.ename,m.empno,m.ename
----------
SQL> select ename,hiredate
2 from emp
3 where deptno=(select deptno
4 from emp
5 where ename like 'BLAKE');
ENAME HIREDATE
---------- --------
ALLEN 20/02/81
WARD 22/02/81
MARTIN 28/09/81
BLAKE 01/05/81
TURNER 08/09/81
JAMES 03/12/81
6 rows selected.
حـــــــلحـــــــلحـــــــلحـــــــل
SQL> select empno,ename
2 from emp
3 where sal> all(select avg(sal)
4 from emp)
5* order by sal desc;
EMPNO ENAME
---------- ----------
7839 KING
7902 FORD
7788 SCOTT
7566 JONES
7698 BLAKE
7782 CLARK
6 rows selected.
حـــــــلحـــــــلحـــــــلحـــــــل
SQL> select ename,deptno,job
2 from emp
3 where deptno=(select deptno
4 from dept
5* where loc like 'DALLAS')
ENAME DEPTNO JOB
---------- ---------- ---------
SMITH 20 CLERK
JONES 20 MANAGER
SCOTT 20 ANALYST
ADAMS 20 CLERK
FORD 20 ANALYST
حـــــــلحـــــــلحـــــــلحـــــــل
* where loc like 'DALLAS');
SQL> select empno,ename,job,sal
2 from emp
3 where sal< all(select sal
4 from emp
5 where job like 'SALESMAN')
6 and job<>'SALESMAN';
EMPNO ENAME JOB SAL
---------- ---------- --------- ----------
7369 SMITH CLERK 800
7876 ADAMS CLERK 1100
7900 JAMES CLERK 950
SQL> select sal
2 from emp
3 where job like 'SALESMAN';
SAL
----------
1600
1250
1250
1500
حـــــــلحـــــــلحـــــــلحـــــــل
SQL> select empno,ename,job,sal
where job like 'SALESMAN')
EMPNO ENAME JOB SAL
----------
7369 SMITH CLERK 800
CLERK 1100
7900 JAMES CLERK 950
SQL> select ename,deptno,sal
2 from emp
3 where (sal,deptno) in (select sal,deptno
4 from emp
5 where comm is not null)
6 order by sal;
ENAME DEPTNO SAL
---------- ---------- ----------
MARTIN 30 1250
WARD 30 1250
TURNER 30 1500
ALLEN 30 1600
SQL> spool off
حـــــــلحـــــــلحـــــــلحـــــــل
ere (sal,deptno) in (select sal,deptno
where comm is not null)
ENAME DEPTNO SAL
MARTIN 30 1250
WARD 30 1250
ALLEN 30 1600
SQL> select distinct e.ename,dal.dname ,e.sal
2 from emp e,(select m.sal,m.comm,d.dname
3 from emp m,dept d
4 where m.deptno=d.deptno
5 and d.loc = 'DALLAS')dal
6 where e.sal=dal.sal
7 and nvl(e.comm,0) = nvl(dal.comm,
8 order by sal;
ENAME DNAME SAL
---------- -------------- ----------
SMITH RESEARCH 800
ADAMS RESEARCH 1100
JONES RESEARCH 2975
FORD RESEARCH 3000
SCOTT RESEARCH 3000
حـــــــلحـــــــلحـــــــلحـــــــل
SQL> select distinct e.ename,dal.dname ,e.sal
from emp e,(select m.sal,m.comm,d.dname
where m.deptno=d.deptno
and d.loc = 'DALLAS')dal
) = nvl(dal.comm,0)
SQL> select ename,hiredate,sal
2 from emp
3 where (sal,nvl(comm,0)) in (select sal,nvl(comm,
4 from emp
5 where ename = 'SCOTT')
6 and ename<>'SCOTT';
ENAME HIREDATE SAL
---------- -------- ----------
FORD 03/12/81 3000
SQL> spool off
حـــــــلحـــــــلحـــــــلحـــــــل
)) in (select sal,nvl(comm,0)
ENAME HIREDATE SAL
FORD 03/12/81 3000
SQL>insert into emp
values(1111,'AHMED','ENGENEER',
1 row created.
============================================
commit
--
SQL >update emp
set sal=7000
where ename='AHMED';
1 row updated.
حـــــــلحـــــــلحـــــــلحـــــــل
,'AHMED','ENGENEER',7839,'01-01-2004',5000,200,10);
===============
SQL> update emp
2 set sal = 1000
3 where sal<900;
1 row updated.
SQL>commit
حـــــــلحـــــــلحـــــــلحـــــــل
SQL> insert into emp
2 values (&empno,&ename,&job,&mgr,&hiredate,&sal,&comm,&deptno);
Enter value for empno: 111
Enter value for ename: 'Moh_Suez'
Enter value for job: 'DBA'
Enter value for mgr: 0
Enter value for hiredate: '01-01-2010
Enter value for sal: 12000
Enter value for comm: 1200
Enter value for deptno: 10
old 2: values (&empno,&ename,&job,&mgr,&hiredate,&sal,&comm,&deptno)
new 2: values (111,'Moh_Suez','DBA',
1 row created.
حـــــــلحـــــــلحـــــــلحـــــــل
values (&empno,&ename,&job,&mgr,&hiredate,&sal,&comm,&deptno);
Enter value for ename: 'Moh_Suez'
2010'
: values (&empno,&ename,&job,&mgr,&hiredate,&sal,&comm,&deptno)
,'Moh_Suez','DBA',0,'01-01-2010',12000,1200,10)
values (&empno,&ename,&job,&mgr,&hiredate,&sal,&comm,&deptno);
: values (&empno,&ename,&job,&mgr,&hiredate,&sal,&comm,&deptno)
SQL> create table department
(Id number(7),Name varchar2(25
حـــــــلحـــــــلحـــــــلحـــــــل
25));
SQL> create table EMPLOYEE
2 (ID number(7),LAST_NAME varchar
number(7));
Table created.
حـــــــلحـــــــلحـــــــلحـــــــل
),LAST_NAME varchar2(25),FIRST_NAME varchar2(2525),DEPT_ID
SQL> alter table employee
2 modify ( 3 LAST_NAME varchar
Table altered.
حـــــــلحـــــــلحـــــــلحـــــــل
LAST_NAME varchar2(50));
SQL> create table employee
2 (ID,LAST_NAME,DEPT_ID)
3 as
4 select empno,ename,deptno
5 from emp;
Table created.******
SQL> select*
2 from employee;
ID LAST_NAME DEPT_ID
---------- ---------- ----------
7369 SMITH 20
7499 ALLEN 30
7521 WARD 30
7566 JONES 20
7654 MARTIN 30
7698 BLAKE 30
7782 CLARK 10
7788 SCOTT 20
7839 KING 10
7844 TURNER 30
7876 ADAMS 20
ID LAST_NAME DEPT_ID
---------- ---------- ----------
7900 JAMES 30
7902 FORD 20
7934 MILLER 10
14 rows selected.
حـــــــلحـــــــلحـــــــلحـــــــل
SQL> create table employee
as
4 select empno ID,ename
LAST_NAME,deptno DEPT_ID
5 from emp;
Table created.******
SQL> select *
2 from employee;
ID LAST_NAME DEPT_ID
---------- ---------- ----------
7369 SMITH 20
7499 ALLEN 30
7521 WARD 30
7566 JONES 20
7654 MARTIN 30
7698 BLAKE 30
7782 CLARK 10
7788 SCOTT 20
7839 KING 10
7844 TURNER 30
7876 ADAMS 20
ID LAST_NAME DEPT_ID
---------- ---------- ----------
7900 JAMES 30
7902 FORD 20
7934 MILLER 10
14 rows selected.
SQL> alter table employee2
2 add (FIRST_NAME varchar2(25
Table altered.
SQL> drop table employee;
Table dropped.
SQL> Rename employee2 to employee;
Table renamed.
SQL> alter table employee
drop (last_name);
Table altered
حـــــــلحـــــــلحـــــــلحـــــــل
25));
to employee;
أسئلة الفصل الحادى عشر وا,خير
SQL> create table DEPARTMENT ( deptno number(
varchar2(10),loc varchar2(15));
Table created.
حـــــــلحـــــــلحـــــــلحـــــــل
أسئلة الفصل الحادى عشر وا,خير
SQL> create table DEPARTMENT ( deptno number(3) primary key,dname
) primary key,dname
SQL> create table EMPLOYEE(empno number(
varchar2(10),
2 constraint emp_pk primary key(empno),
3* constraint emp_uk unique(dname) ) ;
Table created.
حـــــــلحـــــــلحـــــــلحـــــــل
SQL> create table EMPLOYEE(empno number(3) ,ename varchar2(10),dname
p_pk primary key(empno),
* constraint emp_uk unique(dname) ) ;
),dname
SQL> alter table employee
add constraint deptno_fk forign key(deptno) references dept(deptno);
Table altered.
SQL> alter table employee
add constraint sal_ck check(sal between
Table altered.
SQL> select constraint_name,column_name
from user_cons_column
where table_name='EMPLOYEE';
XXXXXXXXXXXXXXXXXX
SQL> select constraint-name,constraint_type
from user_constraint
where table_name='EMPLOYEE';
CONSTRAINT_NAME C
------------------------------ -
PK_EMP P
FK_DEPTNO R
حـــــــلحـــــــلحـــــــلحـــــــل
add constraint deptno_fk forign key(deptno) references dept(deptno);
al between 1000 and 5000);
SQL> select constraint_name,column_name
where table_name='EMPLOYEE';
name,constraint_type
where table_name='EMPLOYEE';