Oracle
08. 실습(20081029)
Gungume
2009. 1. 9. 10:41
E-R 다이어그램을 이용 테이블 만들기
- CREATE TABLE 교수(
교수번호 number(10) primary key
, 교수이름 varchar2(50) not null
, 학과 varchar2(20) not null
, 전공 varchar2(20) not null
); - CREATE TABLE 학생(
학번 number(10) primary key
, 이름 varchar2(50) not null
, 주소 varchar2(200)
, 학년 number(1)
, 지도교수번호 number(10) references 교수(교수번호)
); - CREATE TABLE 과목(
과목번호 varchar2(4) primary key
, 과목이름 varchar2(50)
, 학점 number(1)
, 강의교수번호 number(10) references 교수(교수번호)
, 강의실 varchar2(3)
, 강의시간 varchar2(5)
); - CREATE TABLE 등록(
학번 number(10) references 학생(학번)
, 과목번호 varchar2(4) references 과목(과목번호)
, 성적 varchar2(2)
, constraint enroll_pk primary key(학번,과목번호)
);
교재 P4-7 문제 실습
(1) 31번 부서의 이름과 그 부서에 근무하는 사원의 이름을 출력하시오
- SQL> conn test00/test00
Connected.
SQL> SELECT d.name, e.last_name
2 FROM s_dept d, s_emp e // Alias => s_dept는 d로, s_emp는 e로~
3 WHERE d.id = e.dept_id AND d.id = 31;- NAME LAST_NAME
------------------------- ----------------
Sales Nagayama
Sales Magee
(2) 1, 2번 지역의 이름과 그곳에 있는 부서의 이름을 출력하시오
- // 잘못쳤음~
- SQL> SELECT d.name, d.name
2 FROM s_region r, s_dept d
3 WHERE r.id = d.region_id AND (r.id = 1 or r.id = 2); - NAME NAME
------------------------- -------------------------
Administration Administration
Finance Finance
Operations Operations
Operations Operations
Sales Sales
Sales Sales - 6 rows selected.
(3) Bunny Boot라는 제품에 대한 주문번호, 주문날짜, 수량을 출력하시오.
- SQL> SELECT o.id, o.date_ordered, i.quantity, p.name
2 FROM s_ord o, s_item i, s_product p
3 WHERE o.id = i.ord_id AND i.product_id = p.id AND p.name = 'Bunny Boot'; - ID DATE_ORD QUANTITY
---------- -------- ----------
NAME
--------------------------------------------------
100 92/08/31 500
Bunny Boot - 109 92/09/08 150
Bunny Boot
(4) Asia 지역 고객의 이름과 전화번호, 담당 영업사원의 이름을 출력하시오.
- SQL> SELECT c.name, c.phone, e.last_name
2 FROM s_customer c, s_region r, s_emp e
3 WHERE c.region_id = r.id AND c.sales_rep_id = e.id AND r.name = 'Asia'; - NAME PHONE
-------------------------------------------------- -------------------------
LAST_NAME
-------------------------
OJ Atheletics 81-20101
Nguyen - Delhi Sports 91-10351
Nguyen - Kam's Sporting Goods 852-3692888
Dumas
Oracle 1 문제
- 1~3번 (test00 계정 사용), 4~5번(scott 계정 사용)
(1) s_emp 테이블에서 title의 두번째 문자가 'a' 인 사원의 이름은?
- SQL> SELECT last_name
2 FROM s_emp
3 WHERE title LIKE '_a%'; - LAST_NAME
-------------------------
Urguhart
Menchu
Biri
Catchpole
Havel
Magee
Giljum
Sedeghi
Nguyen
Dumas - 10 rows selected.
(2) 연봉(salary*12) 이 1000 에서 2000 사이인 사원의 이름은?
- SQL> SELECT last_name
2 FROM s_emp
3 WHERE salary*12 BETWEEN 1000 AND 2000; - no rows selected
(3) title이 'Stock Clerk'인 사원의 봉급을 역순으로 정렬하여 출력.
- SQL> SELECT last_name, salary
2 FROM s_emp
3 WHERE title='Stock Clerk'
4 ORDER BY salary DESC; - LAST_NAME SALARY
------------------------- ----------
Maduro 1400
Nozaki 1200
Schwartz 1100
Smith 940
Dancs 860
Markarian 850
Chang 800
Patel 795
Patel 795
Newman 750 - 10 rows selected.
(4)사원번호, 사원이름, 부서 이름, 부서위치를 출력하세요
- SQL> SELECT e.empno 사원번호, e.ename 사원이름, d.dname 부서이름, d.loc 부서위치
2 FROM emp e, dept d
3 WHERE e.deptno=d.deptno; - 사원번호 사원이름 부서이름 부서위치
---------- ---------- -------------- -------------
7782 CLARK ACCOUNTING NEW YORK
7839 KING ACCOUNTING NEW YORK
7934 MILLER ACCOUNTING NEW YORK
7369 SMITH RESEARCH DALLAS
7876 ADAMS RESEARCH DALLAS
7902 FORD RESEARCH DALLAS
7788 SCOTT RESEARCH DALLAS
7566 JONES RESEARCH DALLAS
7499 ALLEN SALES CHICAGO
7698 BLAKE SALES CHICAGO
7654 MARTIN SALES CHICAGO
7900 JAMES SALES CHICAGO
7844 TURNER SALES CHICAGO
7521 WARD SALES CHICAGO - 14 rows selected.
(5)사원번호, 사원이름, 부서 이름, 봉급등급을 출력하세요
- SQL> SELECT e.empno 사원번호, e.ename 사원이름, d.dname 부서이름, 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; - 사원번호 사원이름 부서이름 봉급등급
---------- ---------- -------------- ----------
7369 SMITH RESEARCH 1
7900 JAMES SALES 1
7876 ADAMS RESEARCH 1
7521 WARD SALES 2
7654 MARTIN SALES 2
7934 MILLER ACCOUNTING 2
7844 TURNER SALES 3
7499 ALLEN SALES 3
7782 CLARK ACCOUNTING 4
7698 BLAKE SALES 4
7566 JONES RESEARCH 4
7788 SCOTT RESEARCH 4
7902 FORD RESEARCH 4
7839 KING ACCOUNTING 5 - 14 rows selected.
(6)부서번호가 10번인 사원의 사원번호, 사원이름, 부서 이름, 봉급등급을 출력하세요
- SQL> SELECT e.empno 사원번호, e.ename 사원이름, d.dname 부서이름, 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; - 사원번호 사원이름 부서이름 봉급등급
---------- ---------- -------------- ----------
7934 MILLER ACCOUNTING 2
7782 CLARK ACCOUNTING 4
7839 KING ACCOUNTING 5
이 글은 스프링노트에서 작성되었습니다.