문제와 코드블럭안에 있는 것들은 답안입니다.
문제를 따로 적어보시고 한번씩 연습삼아서 풀어보시기 좋으실 것입니다.
꼭 저의 답만이 정답이 아니라 여러 답이 있을 수 있습니다 ^_^
1. 동아리(Dongari) 테이블을 생성하시오.
동아리ID, 동아리이름
create table Dongari(
d_id varchar2(50) primary key,
d_name varchar2(20) not null
);
2. 동아리(DongariJoin) 가입현황 테이블을 생성하시오.
=> 한 명의 학생이 여러 동아리에 복 수로 가입할 수 있음.
번호, 학생ID, 동아리ID
create table dongarijoin(
tel varchar2(50),
name varchar2(50)
d_id varchar2(50) references dongari(d_id)
);
--동아리 테이블과 동아리 가입현황 데이터에 다음코드 추가해주십시오.
--동아리 테이블 데이터
insert into dongari values('food123','food');
insert into dongari values('musical123','musical');
insert into dongari values('band123','band');
insert into dongari values('book123','book');
insert into dongari values('study123','stydy');
insert into dongari values('coding123','coding');
select * from dongari;
--동아리 가입현황 테이블데이터
insert into dongarijoin values('010-1234-1234','hkd','food123');
insert into dongarijoin values('010-1234-1111','lss','study123');
insert into dongarijoin values('010-1234-2222','kcs','musical123');
insert into dongarijoin values('010-1234-3333','sjg','band123');
insert into dongarijoin values('010-1234-4444','asd','food123');
insert into dongarijoin values('010-1234-5555','qwe','study123');
insert into dongarijoin values('010-1234-6666','wer',null);
insert into dongarijoin values('010-1234-6666','zxc',null);
insert into dongarijoin values('010-1234-6666','xcv',null);
3. 동아리 가입현황 목록을 출력하시오.
동아리이름, 학생명, 학생ID
-----------------------------------------
select dongari.d_name,dongarijoin.name, dongarijoin.d_id
from dongarijoin, dongari
where dongarijoin.d_id = dongari.d_id;

4. 동아리에 가입하지 않은 학생목록을 출력하시오.
학생이름
----------------------------------------------
select distinct(dongarijoin.name)
from dongarijoin, dongari
where dongarijoin.d_id is null;

5. 한 명의 학생도 가입하지 않은 동아리목록을 출력하시오.
=> 있다고 가정
동아리이름
select d_id
from dongari
minus
select dongari.d_id
from dongari,dongarijoin
where dongari.d_id = dongarijoin.d_id;

6. Book테이블을 생성하고, bid를 pk로 설정하고,데이터를 입력하시오.
bid varchar(10) -- 책번호
title varchar(20) -- 책제목
0001 자바
0002 Oracle
0003 HTML
0004 JSP
------------------------------------------------------------
create table Book(
bid varchar2(10) primary key,
title varchar2(20)
);
select * from book;
insert into book values('0001','자바');
insert into book values('0002','Oracle');
insert into book values('0003','HTML');
insert into book values('0004','JSP');
7.member2테이블을 생성하고 rentBook 테이블을 생성하시오. id,bid를 참조키로 설정하시오.
no는 pk.
member2
id varchar(50) PK
name varchar(50) not null
gander char(1) not null
joinDate date default sysdate
rentBook
no number -- 대출번호
id varchar(10) -- 학번
bid varchar(10) -- 책번호
rdate date -- 대출일
------------------------------------------------------------
--member2
create table member2(
id varchar2(50) primary key, --아이디
name varchar2(50) not null, --이름
gender char(1) not null, --성별
joinDate date default sysdate --회원가입일
);
create table rentBook(
no number, -- 대출번호
id varchar(10) references student(id), -- 학번
bid varchar(10) references Book(bid), -- 책번호
rdate date -- 대출일
);
테이블 생성 후 다음 데이터를 넣어주십시오
insert into member2 values('hkd','홍길동','m','2001-01-01');
insert into member2 values('lss','이순신','m','2003-02-01');
insert into member2 values('hj','황진이','f','2002-11-13');
insert into member2 values('wg','왕건','m','2005-12-21');
insert into member2 values('pms','박문수','m','2006-11-09');
8. 7번 테이블에 다음 데이터를 입력하시오.
1 20160001 0001 2016-12-01
2 20162233 0002 2016-12-02
create table rentBook(
no number, -- 대출번호
id varchar(10) references student(id), -- 학번
bid varchar(10) references Book(bid), -- 책번호
rdate date -- 대출일
);
select * from rentBook;
8. 7번 테이블에 다음 데이터를 입력하시오.
1 20160001 0001 2016-12-01
2 20162233 0002 2016-12-02
---------------------------------------------------------------------
insert into rentBook values(1, '20160001', '0001', '2016-12-01');
insert into rentBook values(2, '20162233', '0002', '2016-12-02');
9. 학번,학생명,대출한 책이름, 대출일을 출력하시오.
select student.id, student.name, book.title, rentBook.rdate
from student, book,rentBook
where student.id= rentBook.id and rentBook.bid = book.bid;

10. 한번도 대출되지 않은 책의 목록을 출력하시오.
select *
from book left outer join (select bid, count(bid) from rentBook group by bid) t1
on book.bid = t1.bid
where t1.bid is null
order by t1.bid;

'DB > SQL' 카테고리의 다른 글
| SQL DATE연산자 (0) | 2023.06.28 |
|---|---|
| SQL 집계함수(sum,avg,min ....) (0) | 2023.06.28 |
| SQL decode를 이용하여 출력하기 (0) | 2023.06.28 |
| SQL join을 이용한 DML 연습 문제 (0) | 2023.06.28 |
| SQL 제약조건 PK(Primary key),FK(Foreign Key) (0) | 2023.06.28 |