본문 바로가기
DB/SQL

SQL DML,DDL 연습 문제

by wonduk 2023. 6. 28.
728x90

문제와 코드블럭안에 있는 것들은 답안입니다.

문제를 따로 적어보시고 한번씩 연습삼아서 풀어보시기 좋으실 것입니다.

꼭 저의 답만이 정답이 아니라 여러 답이 있을 수 있습니다 ^_^

 

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;

728x90

'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