0% found this document useful (0 votes)
57 views

Test SQL

The document defines tables and views for an employee database. It creates tables for departments and employees, inserts sample data, defines views, and runs queries on the tables and views.

Uploaded by

Aziz tn
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
57 views

Test SQL

The document defines tables and views for an employee database. It creates tables for departments and employees, inserts sample data, defines views, and runs queries on the tables and views.

Uploaded by

Aziz tn
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 3

--1

CREATE TABLE DEPT( DEPTNO NUMBER(2),


DNAME CHAR(20),
LOC CHAR(20),
CONSTRAINT DEPT_CLEP PRIMARY KEY (DEPTNO),
CONSTRAINT DEPT_DOM1 CHECK (DNAME IN
('ACCOUNTING','RESEARCH','SALES','OPERATIONS')));

CREATE TABLE EMP ( EMPNO NUMBER(4),


ENAME VARCHAR(10),
JOB VARCHAR(9),
MGR NUMBER(4),
HIREDATE DATE,
SAL NUMBER(7,2),
COMM NUMBER(7,2),
DEPTNO NUMBER(2,0),
CONSTRAINT EMP_PK PRIMARY KEY(EMPNO),
CONSTRAINT EMP_HIERARCHY FOREIGN KEY(MGR) REFERENCES
EMP(EMPNO),
CONSTRAINT DEPT_FK FOREIGN KEY(DEPTNO) REFERENCES
DEPT(DEPTNO)
);

INSERT INTO EMP VALUES(7839, 'KING', 'PRESIDENT', NULL, '17-nov-1981', 5000,


NULL, 10);
INSERT INTO EMP VALUES(7566, 'JONES', 'MANAGER', 7839, '02-apr-1981', 2975,
NULL, 20);
INSERT INTO EMP VALUES(7902, 'FORD', 'ANALYST', 7566, '03-dec-1981', 3000,
NULL, 20);
INSERT INTO EMP VALUES(7369, 'SMITH', 'CLERK', 7902, '17-dec-1980', 800,
NULL, 20);
INSERT INTO EMP VALUES(7698, 'BLAKE', 'MANAGER', 7839, '01-may-1981', 2850,
NULL, 30);
INSERT INTO EMP VALUES(7499, 'ALLEN', 'SALESMAN', 7698, '20-feb-1981', 1600,
300, 30);
INSERT INTO EMP VALUES(7521, 'WARD', 'SALESMAN', 7698, '22-feb-1981', 1250,
500, 30);
INSERT INTO EMP VALUES(7654, 'MARTIN', 'SALESMAN', 7698, '28-sep-1981', 1250,
1400, 30);
INSERT INTO EMP VALUES(7844, 'TURNER', 'SALESMAN', 7698, '08-sep-1981', 1500,
0, 30);
INSERT INTO EMP VALUES(7900, 'JAMES', 'CLERK', 7698, '03-dec-1981', 950,
NULL, 30);
INSERT INTO EMP VALUES(7782, 'CLARK', 'MANAGER', 7839, '09-jun-1981', 2450,
NULL, 10);
INSERT INTO EMP VALUES(7934, 'MILLER', 'CLERK', 7782, '23-jan-1982', 1300,
NULL, 10);

--2
INSERT INTO DEPT VALUES (10, 'ACCOUNTING', 'NEW-YORK');
INSERT INTO DEPT VALUES (20, 'RESEARCH', 'DALLAS');
INSERT INTO DEPT VALUES (30, 'SALES', 'CHICAGO');
INSERT INTO DEPT VALUES (40, 'OPERATIONS', 'BOSTON');
--4
INSERT INTO EMP VALUES
(7657, 'WILSON', 'MANAGER', 7839, '17-NOV-91', 3500.00, 600.00, 10);
--1
UPDATE DEPT SET LOC = 'PITTSBURGH' WHERE DNAME = 'SALES';
--2
UPDATE EMP SET SAL = SAL * 1.1 WHERE COMM > 0.5 * SAL;
--3
UPDATE EMP
SET COMM = (SELECT AVG(COMM) FROM EMP)
WHERE HIREDATE < '01/01/82'
AND COMM IS NULL;
--4
DELETE FROM DEPT WHERE DEPTNO=20;

--1
SELECT ENAME, SAL, COMM, SAL + COMM FROM EMP WHERE JOB = 'SALESMAN';
--2
SELECT ENAME FROM EMP ORDER BY COMM / SAL DESC;
--3
SELECT ENAME FROM EMP WHERE COMM < .25 * SAL;
--4
SELECT COUNT(EMPNO) FROM EMP WHERE DEPTNO = 10;
--5
SELECT COUNT(EMPNO) FROM EMP WHERE COMM IS NOT NULL;
--6
SELECT COUNT(DISTINCT JOB) FROM EMP;
--7
SELECT JOB, AVG(SAL) FROM EMP GROUP BY JOB;
--8
SELECT SUM(SAL) FROM EMP, DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO
AND DNAME = 'SALES';
--9
SELECT ENAME, DNAME FROM EMP, DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO;
--10
SELECT ENAME, JOB, SAL FROM EMP WHERE SAL = (SELECT MAX(SAL) FROM EMP);
--11
SELECT ENAME FROM EMP WHERE SAL > (SELECT SAL FROM EMP WHERE ENAME='JONES');
--12
SELECT ENAME FROM EMP WHERE JOB = (SELECT JOB FROM EMP WHERE ENAME='JONES')
AND ENAME <> ’JONES’;
--13
SELECT ENAME FROM EMP WHERE MGR = (SELECT MGR FROM EMP WHERE ENAME='CLARK')
AND ENAME <> 'CLARK';
--14
SELECT ENAME FROM EMP WHERE (JOB, MGR) IN
(SELECT JOB, MGR FROM EMP WHERE ENAME = 'TURNER')
AND ENAME <> 'TURNER';
--15
SELECT ENAME FROM EMP WHERE HIREDATE < ALL
(SELECT HIREDATE FROM EMP WHERE DEPTNO = 10);
--16
SELECT SUBALTERNE.ENAME, SUPERIEUR.ENAME FROM EMP SUBALTERNE, EMP SUPERIEUR
WHERE SUBALTERNE.MGR = SUPERIEUR.EMPNO;
--17
SELECT SUB.ENAME FROM EMP SUB, EMP SUP WHERE SUB.MGR = SUP.EMPNO
AND SUB.DEPTNO <> SUP.DEPTNO;
--18
SELECT LEVEL, EMPNO, ENAME, JOB, MGR FROM EMP
CONNECT BY MGR = PRIOR EMPNO
START WITH MGR IS NULL
ORDER BY LEVEL;
--19
SELECT LEVEL, ENAME FROM EMP
WHERE ENAME <> 'JONES'
CONNECT BY MGR = PRIOR EMPNO
START WITH ENAME = 'JONES'
ORDER BY LEVEL;
--20
SELECT LEVEL, AVG(SAL) FROM EMP
CONNECT BY MGR = PRIOR EMPNO
START WITH MGR IS NULL
GROUP BY LEVEL;
--21
SELECT ENAME FROM EMP
WHERE ENAME <> 'JONES' AND ENAME <> 'SCOTT'
CONNECT BY MGR = PRIOR EMPNO
START WITH ENAME = 'JONES';
--22
SELECT ENAME FROM EMP
WHERE ENAME <> 'JONES'
CONNECT BY MGR = PRIOR EMPNO AND ENAME <> 'SCOTT'
START WITH ENAME = 'JONES';

--1
CREATE VIEW EMPDIR AS (SELECT EMPNO, ENAME FROM EMP);
SELECT * FROM EMPDIR;
--2
UPDATE EMPDIR SET ENAME = 'DARMONT' WHERE EMPNO = 7839;
SELECT * FROM EMPDIR;
SELECT * FROM EMP;
--3
CREATE VIEW EMPDEPT AS ( SELECT EMPNO, ENAME, E.DEPTNO, DNAME
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO );
SELECT * FROM EMPDEPT;
-- Interroger la vue EMPDEPT permet à un utilisateur de ne pas exprimer la
-- jointure entre EMP et DEPT.
--4
UPDATE EMPDEPT SET ENAME = 'SINBAD' WHERE EMPNO = 7698;
SELECT * FROM EMPDEPT;
SELECT * FROM EMP;
--5
INSERT INTO EMPDEPT VALUES(9999, 'NEWEMP', 99, 'NEWDEPT');
-- Cela ne fonctionne pas car la requête concerne les deux tables jointes
-- EMP et DEPT.
--6
SELECT TABLE_NAME, OWNER FROM ALL_TABLES;
--7
SELECT TABLE_NAME, TABLE_TYPE FROM USER_CATALOG;
--8
SELECT CONSTRAINT_NAME, TABLE_NAME, CONSTRAINT_TYPE, SEARCH_CONDITION
FROM USER_CONSTRAINTS;
--9
SELECT COLUMN_NAME FROM USER_TAB_COLUMNS WHERE TABLE_NAME = 'EMP';
--10
SELECT TABLE_NAME FROM USER_TAB_COLUMNS WHERE COLUMN_NAME = 'DEPTNO';
-- Les vues sont également présentes dans USER_TAB_COLUMNS.

You might also like