>컴퓨터 튜토리얼 >컴퓨터 지식 >ORACLE 데이터베이스 문제 연습

ORACLE 데이터베이스 문제 연습

PHPz
PHPz앞으로
2024-01-23 21:48:05624검색

ORACLE 데이터베이스 문제 연습

ORACLE 데이터베이스 연습 문제

scott/tiger 사용자 아래의 emp 테이블을 사용하여 다음 연습을 완료하세요. 테이블 구조는 다음과 같습니다

emp 직원 ​​테이블 필드 내용은 다음과 같습니다.

empno 사원번호

ename 직원 이름

직업

mgr 우수한 번호

hiredate 채용된 날짜

샐급

커미션

deptno 부서번호

1.30번 부서의 모든 직원을 선택하세요.

2. 모든 사무원(CLERK)의 이름, 번호, 부서 번호를 나열하세요.

3. 급여보다 커미션이 높은 직원을 찾아보세요.

4. 커미션이 급여의 60% 이상인 직원을 찾아보세요.

5. 부서 10의 모든 관리자(MANAGER)와 부서 20의 모든 사무원(CLERK)의 세부 정보를 알아보세요.

6. 부서 10의 모든 관리자(MANAGER), 부서 20의 모든 사무원(CLERK), 관리자도 사무원도 아니지만 급여가 2000 이상인 모든 직원의 세부 정보를 찾습니다.

7. 커미션형 직원의 다양한 직업을 알아보세요.

8. 수수료가 없거나 수수료가 100 미만인 직원을 찾습니다.

9. 매월 3일부터 말일까지 채용된 직원을 모두 찾아보세요.

10. 입사한 지 12년이 넘은 직원을 찾아보세요.

11. 모든 직원의 이름을 대문자로 표시합니다.

12. 직원의 이름을 정확히 5자로 표시하세요.

13."R" 없이 직원 이름을 표시하세요.

14. 모든 직원의 이름 중 처음 3자를 표시하세요.

15. 모든 직원의 이름을 표시하고 "A"를 모두

로 바꿉니다.

16. 10년 근속자의 이름과 고용 날짜를 표시합니다.

17. 직원 세부 정보를 이름별로 정렬하여 표시합니다.

18. 직원의 이름과 고용 날짜를 표시하고 근속 연수를 기준으로 가장 오래된 직원의 순위를 매깁니다.

19. 모든 직원의 이름, 직업, 급여를 직업별로 내림차순으로 표시하거나, 직업이 동일한 경우 급여순으로 표시합니다.

20. 모든 직원의 이름, 입사 연월을 입사일 기준으로 정렬하여 표시하며, 월이 동일할 경우 연도가 빠른 직원부터 정렬됩니다.

21. 한 달이 30일일 때, 나머지는 무시하고 전체 직원의 일급을 표시합니다.

22. (해당 연도) 2월에 고용된 모든 직원을 찾습니다.

23.각 직원에 대해 입사한 지 일수가 표시됩니다.

24. 이름 필드에 "A"가 포함된 모든 직원의 이름을 표시합니다.

25. 모든 직원의 근속연수를 연, 월, 일 형식으로 표시합니다. (대략)

오라클 질문

(1) depptno가 있는 dept에서 deptno를 선택합니다(em에서 deptno 선택);

(2) sal이 있는 em에서 empno,ename,sal 선택>(ename = 'SMITH'인 em에서 sal 선택);

(3)em e,dept d에서 e.ename,d.dname을 선택합니다. 여기서 e.deptno=d.deptno 및 e.job = 'CLERK';

(4) job이 있는 em에서 empno,ename 선택(ename = 'SCOTT'인 em에서 job 선택) ;

(5)EM 그룹에서 직업별로 직업,min(sal)을 선택합니다.

(6)dept d,em e에서 d.dname,min(e.sal)을 선택하세요

여기서 d.deptno=e.deptno 및 e.job = d.dname의 'MANAGER' 그룹;

Oracle 11G SQL 연습 숙제

7.급여가 있는 테이블에서 직원 이름, 급여를 선택합니다. 8.급여>평균(급여)이 있는 테이블에서 직원 이름, 급여를 직위별로 선택합니다.

9. 예: t1의 열 n 수는 [2,3]입니다. t2의 열 n 수는 [1,2,3,4]입니다.

select * from t2 여기서 n >any(t1에서 n 선택); 결과: 3,4.

참고: 테이블 t2의 열 n에 있는 숫자 중 어느 것이 테이블 t1의 열 n에 있는 숫자보다 가장 큰 숫자(최대값 포함)인지 쿼리하세요.

select * from t2 여기서 n = 임의(t1에서 n 선택); 결과: 2,3.

select * from t2 where n 10.select * from t2 where n >all(select n from t1);

select * from t2 where n 12.SELECT 열 이름(들) FROM table_name1 UNION SELECT 열_이름(들) FROM table_name2; 중복 열 없이 table_name1 및 table_name2 테이블을 병합합니다.

SELECT column_name(s) FROM table_name1 UNION ALL SELECT column_name(s) FROM table_name2; 두 테이블 table_name1과 table_name2의 모든 데이터를 연결했는데 중복이 있습니다.

오라클 저장 프로시저 질문 솔루션

테이블 SC 만들기(

스노INT,

CNO varchar(10),

학년 등급

);

SC 값에 삽입(95001, 'Math', 75);

SC 값에 삽입(95001, '中文', 92);

SC 값에 삽입(95002, '영어', 64);

SC VALUES에 삽입(95002, 'English', 77);

SC 값에 삽입(95003, 'Math', 85);

CREATE TABLE SC_TOTAL(

SNO INT 기본 키,

"수학" 번호(5,2),

"중국어" 숫자(5,2),

"영어" 번호(5,2),

"평균 점수" 숫자(5,2)

);

선언

v_row_count INT;

시작

sc_rec IN(SC에서 선택 *)

루프

-- 데이터가 사용 가능한지 확인

SELECT COUNT(*) INTO v_row_count

SC_TOTAL에서

SNO가 있는 곳 = sc_rec.SNO;

IF v_row_count = 0 THEN

--데이터가 먼저 삽입되지 않습니다.

SC_TOTAL(SNO) 값에 삽입(sc_rec.SNO);

끝나는 경우;

-- 강좌를 기반으로 특정 열을 업데이트합니다.

IF sc_rec.CNO = '수학' THEN

UPDATE SC_TOTAL SET "수학" = sc_rec.GRADE WHERE SNO = sc_rec.SNO;

ELSIF sc_rec.CNO = '중국어' THEN

UPDATE SC_TOTAL SET "中文" = sc_rec.GRADE WHERE SNO = sc_rec.SNO;

ELSIF sc_rec.CNO = '영어' THEN

UPDATE SC_TOTAL SET "영어" = sc_rec.GRADE WHERE SNO = sc_rec.SNO;

끝나는 경우;

-- 평균 점수를 계산합니다.

SC_TOTAL 업데이트

SET "평균 점수" = (NVL("수학", 0) + NVL("중국어", 0) + NVL("영어", 0))

/ (NVL2("수학",1,0) + NVL2("중국어",1,0) + NVL2("영어",1,0))

SNO가 있는 곳 = sc_rec.SNO;

END LOOP;

끝;

/

-- 데이터 확인.

SQL>SELECT * FROM SC_TOTAL;

SNO 수학 중국어 영어 평균점수

------------ ---------- ---------- ---------- --------- -

95001 75 92 83.5

95002 77 77

95003 85 85

위 내용은 ORACLE 데이터베이스 문제 연습의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 docexcel.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제