- -조인
--emp와 dept를 조인해서 emp사원의 이름과 부서명을 조회하시오
--SMITH RESEARCH DALLAS
--방법1
select e.ename 사원명, d.dname 부서명, d.loc 부서지역
from emp e, dept d
where e.deptno=d.deptno;
- -방법2
select emp.ename 사원명, dept.dname 부서명, dept.loc 부서위치
from emp, dept
where emp.deptno=dept.deptno;
- -방법3
select ename 사원명, dname 부서명, loc 부서위치
from emp e, dept d
where e.deptno=d.deptno;
- -Q.department와 professor를 조인하여 다음과 같이 출력하세요
--교수명 학과명
select p.name 교수명, d.dname 학과명
from professor p, department d
where p.deptno=d.deptno;
- -Q.emp.dept를 이용하여 부서번호가 10번인 부서의 사원들중 사원명,부서명,급여를 조회하시오
--한곳에만 있는 고유의 네임은 . 안붙여도됨(중복된 부서번호 제외)
select ename, dname, sal
from emp e, dept d
where e.deptno=d.deptno and d.deptno='10';
--e.deptno, d.deptno 필수/e.deptno로 써도 됨
- -Q.student, professor를 이용하여 다음과 같이 출력하시오
--학년 학생명 담당교수명
select studno 학번, s.name 학생명, p.name 담당교수명
from student s, professor p
where s.profno=p.profno;
- -Q.panmae, product를 이용하여 다음과 같이 출력하시오
-- 새우짱 총판매가격(p_total)
select p_name 상품명,p_price 제품가격,p_qty 제품재고량, p_total 총가격
from panmae pan,product pro
where pan.p_code=pro.p_code;
- -Q.student, department를 이용하여 다음과 같이 출력하시오
--학생명 제1전공
--서진수 컴퓨터 공학과
select name 학생명,dname 제1전공
from student s,department d
where s.deptno1=d.deptno;
- -DB정규화에 대해서 수업진행예정
--1.일단 비정규화된 테이블을 만들어서 데이타를 넣고 조회연습
--2.그 이후에 다시 두개의 테이블로 나누어서 데이타를 넣고 외부키(FOREIGN KEY)를 이용해서 연결해본다
--3.데이타 삭제시 정규화된 테이블의 경우 문제가 발생할 수 있다
--cascade 연사자를 이용해서 테이블을 생성 후 삭제할 수 있다
- -비정규화 된 테이블(한 테이블에 때려넣은 것)
--회사, 직원 테이블 : companysawon
--회사명 : company 문자열(20)
--회사주소 : address 문자열(30)
--회사전화 : phone 문자열(20)
--직원명 : sawon_name 문자열(20)
--직급 : position 문자열(20)
--이메일 : email 문자열(20)
--휴대폰 : hp 문자열(20)
create table companysawon (company varchar2(20),address varchar2(30),
phone varchar2(20), sawon_name varchar2(20), position varchar2(20),
email varchar2(20), hp varchar2(20));
insert into companysawon values ('삼성','서울시 강남구','02-222-2222','홍길동','과장','[email protected]','010-117-2212');
insert into companysawon values ('LG','서울시 서초구','02-123-1122','이홍기','부장','[email protected]','010-332-0022');
insert into companysawon values ('한화','경기도 용인시','02-333-4222','원빈','사원','[email protected]','010-001-2412');
- -거래처 회사에 대한정보를 거래처 직원을 내가 추가할때마다 모두 추가해야한다..즉 메모리 낭비가 심하다
--회사를 이전 아니면 직급이 바뀌면 많은 데이타를 한번에 모두 수정해야하므로 정말 번거롭다
--그래서 DB정규화가 필요하다 거래처 회사 정보 따로 직원 정보 따로 분리해서 만들어보자
- -정규화 디자인
--회사아이디 : compant_id 숫자(5) 기본키
--회사명 : company 문자열(20)
--회사주소 : address 문자열(30)
create table company(company_id number(5) primary key,
company varchar2(20), address varchar2(30), phone varchar2(20));
- -데이타 추가
insert into company values(10,'LG','서울시 서초구','01-111-2222');
insert into company values(20,'한화','경기도 용인시','031-321-7722');
insert into company values(30,'삼성','서울시 강남구','02-123-9999');
- -거래처 직원 테이블 : c_sawon
--직원명 : sawon_name 문자열(20)
--직급 : position 문자열(20)
--이메일 : email 문자열(20)
--휴대폰 : hp 문자열(20)
--회사아이디 : company_id number(5) : 외부키(Foreign key)
create table c_sawon(company_id number(5),
sawon_name varchar2(20), position varchar2(20),
email varchar2(20), hp varchar2(20),
CONSTRAINT c_sawon_fk_id foreign key(company_id)references company(company_id));
- -엔터 적용 그자리 재작성
insert into c_sawon values(20,'윤미래','대리','[email protected]','010-999-1258');
- -company와 관계되어진 테이블(c_sawon)에서 10,20번을 추가하였다
--20번 한화를 지워보자
delete from company where company_id=20;