11월 8일
모회사 면접을 보러 갔다가 DB조인문에 대한 문제가 나와서
공부할겸 만들어 봤음
*전공테이블
create table DEPT(
dept_no VARCHAR2(50),
dept_name VARCHAR2(100)
);
select * from DEPT;
insert into DEPT(dept_no,dept_name) values('D200','전자공학과');
insert into DEPT(dept_no,dept_name) values('D100','컴퓨터공학과');
drop table DEPT;
*학생테이블
create table STU(
dept_no VARCHAR2(50),
stu_no NUMBER(10,0),
stu_name VARCHAR2(100)
);
select * from STU;
insert into STU(dept_no,stu_no,stu_name) values ('D100',123,'홍길동');
insert into STU(dept_no,stu_no,stu_name) values ('D200',124,'김자바');
insert into STU(dept_no,stu_no,stu_name) values ('D100',125,'이신림');
drop table STU;
전공에서 '컴퓨터공학과'에 해당하는 학생이름을 구하기
select DISTINCT stu_name from STU inner join DEPT on STU.dept_no = STU.dept_no where STU.dept_no='D100';
해당 inner join문이다. 여기서 값이 중복이 되기 때문에 DISTINCT를 붙여 중복된 값을 제거함.
*1:N 관계
데이터베이스에서는 통으로 테이블 하나로 구성한것보다 여러 정보를 주제에 따라 분리해서 저장하는게 효율적.
필요에 따라 테이블을 조인하여 필요한 데이터를 추출하면 됨.
이때 두테이블을 조인을 위해서는 테이블이 1:N 관계로 연결되어야 함.
1:N 관계란 한쪽테이블에 하나의 값만 존재해야 하지만 연결된 다른 테이블에서 여러개의 값이 존재할 수 있는 관계
두테이블의 조인을 위해서는 pk-fk 키 관계로 맺어져야함.