본문 바로가기
정보처리기사/데이터베이스

정보처리기사 실기 - 데이터베이스 SQL

by boolean 2017. 4. 1.
728x90

정보처리기사 실기 - 데이터베이스 SQL

  • Join - inner join_equi-join

강의와 교수 테이블을 사용하여 강의이름, 강의실, 강의시간, 이수구분, 그리고 강의를 담당하는 교수의 교수이름, 소속학과, 전화번호를 출력하시오.


select a.강의이름, a.강의실, a.강의시간, a.이수구분, 

        b.교수이름, b.소속학과, b.전화번호

from 강의 a inner join 교수 b

on a.교수번호=b.교수번호;


학생과 수강신청 테이블을 사용하여 강의번호 'LA01'을 수강신청한 학생의 학생이름, 소속학과, 전화번호, 그리고 신청시각을 출력하시오.


select a.학생이름, a.소속학과, a.전화번호

        b.신청시각

from 학생 a inner join 수강신청 b

on a.학생번호=b.학생번호

where b.강의번호='LA10';


강의와 교수 테이블을 사용하여 강의의 강의번호, 강의이름, 이수구분 그리고 강의를 담당하는 교수의 교수이름과 직위를 출력하시오.


select a.강의번호, a.강의이름, a.이수구분

        b.교수이름, b.직위

from 강의 a inner join 교수 b

on a.교수번호=b.교수번호;



  • Join - inner join_non-equi-join

학사 테이블의 취득 점수가 속하는 등급을 등급기준표 테이블의 하한컬럼값과 상한 컬럼값을 조건으로 참조하여 조건에 해당하는 레코드들의 번호, 이름, 취득점수, 등급 컬럼을 검색하시오.


select a.번호, a.이름, a.취득점수

        b.등급

from 학사 a cross join 등급기준표 b

where a.취득점수 between b.하한 and b.상한



  • Join - outer join_left-outer-join


학생과 수강신청 테이블에서 모든 학생정보와 각 학생이 수강신청을 한 수강신청 정보를 출력하시오.



select a.*, b.*

from 학생 a left outer join 수강신청 b

on a.학생번호=b.학생번호;



  • Join - outer join_right-outer-join


학생과 수강신청 테이블에서 수강신청을 한 학생정보와 모든 수강신청 정보를 출력하시오.



select a.*, b.*

from 학생 a right outer join 수강신청 b

on a.학생번호=b.학생번호;




  • Join - self join


강의 테이블에 선수과목이 있는 강의 중에서 강의이름, 강의시간, 인원제한, 이수구분과 선수과목의 강의이름, 이수구분을 각각 '선수강의이름'과 '선수이수구분'이란 이름으로 출력하시오.



select a.강의이름, a.강의시간, a.인원제한, a.이수구분, a.선수과목,

         b.강의이름 as 선수강의이름, b.이수구분 as 선수이수구분

from 강의 a inner join 강의 b

on a.선수과목=b.강의번호;




Is null


상품 테이블에서 (가격)의 속성값이 NULL인 상품의 상품명을 내림차순으로 정령하여 검색하시오

상품 테이블 (상품코드, 상품명, 가격)


select 상품명

from 상품

where 가격 is null

order by 상품명 desc;

  • subQuery_ =


강의 테이블에서 강의번호 'KO31' 강의를 담당하는 교수의 교수번호, 교수이름, 연구실위치, 전화번호를 출력하시오.



select 교수번호, 교수이름, 연구실위치, 전화번호

from 교수

where 교수번호=(select 교수번호

                               from 강의

                               where 강의번호='KO31');



  • subQuery_ IN...LIKE


강의 테이블에서 전공강의를 담당하는 교수의 교수번호, 교수이름, 연구실위치, 전화번호를 출력하시오.



select 교수번호, 교수이름, 연구실위치, 전화번호

from 교수

where 교수번호in(select 교수번호

                               from 강의

                               where 이수구분 like '전공%');




  • subQuery_ >, <, >=, <=


학생 테이블 전체 학생 나이의 평균보다 나이가 많은 학생의 학생번호, 학생이름, 나이, 전화번호, 주소를 출력하시오.



select 학생번호, 학생이름, 나이, 전화번호, 추소

from 학생

where 나이>(select avg(나이)

                               from 학생);



  • subQuery_ EXISTS


수강신청과 강의 테이블을 사용하여 수강신청이 이루어진 강의의 강의정보를 출력하시오..



select *

from 강의

where exists (select *

                         from 수강신청

  where 강의.강의번호=수강신청.강의번호);


  • subQuery_ in


판매 테이블과 상품테이블을 이용하여 상품명이 '가공'으로 시작하는 상품의 판매량 합계를  검색하시오(단 하위질의 를  이용하시오)

판매 테이블 : (ID, 판매코드, 제품코드(fk), 판매량)

상품 테이블 : (ID, 상품명, 가격)


select sum(판매량)

from 판매

where 제품코드 in( select ID 

from 상품

where 상품명 like ('가공%'));


  • Grant 


수강테이블에 대해 김사랑에게 update 권한을 부여하고 다른 사람에게 update권한을 부여할 수 있는 권한을 부여하시오


grant update on 수강 to 김사랑 with grant option;



수강테이블에 대해 김사랑에게 부여된 update권한과 김사랑이 다른 사람에게 update 권한을 부여할수 있는 권한 그리고 김사랑이 다른 사람에게 부여한  update권한까지 모두 취소하시오


revoke update on 수강 from 김사랑 cascade;


  • alter_add


(academy) 테이블에 데이터 타입이 문자 15자리인 (주소) 속성을 추가하시오.


alter table academy add 주소 char(15);



  • alter_alter


(academy) 테이블의 주소 속성을  데이터 타입이 문자 15자리인 (juso) 속성으로 수정하시오.

alter table academy  주소 modify juso char(15);



  • alter_drop


(academy) 테이블의  (주소) 속성을 삭제하시오(참조 테이블까지 적용).

alter table academy drop juso cascade;


  • create_table


다음 테이블을 생성하여라 (제약조건 : 지우거나 업데이트 할 때 연쇄적으로 작동,마검일: 2015년12월25일 이후)

상점 테이블 : (상점코드, 상점명(fk), 매출, 마감일)

협력업체 테이블 : (상점코드,.....)


create table 상점(

상점코드 char(10),

상점명    char(10),

매출       int(15),

마감일    date,

primery key(상점코드),

foreign key(상점명) references 협력업체(상점코드),

on delete cascade, on update cascade,

constraint check 마감일>='2015-12-25');




  • create_schema


사용자 아이디가 블린인 booolean스키마를 생성하시오

create schema booolean authorization 블린;


  • create_domain


성별을 'male', 'female'로 정해진 문자로 표현되는 gender를 정의하시오.

create domain gender char(5);


  • create_index


(학생) 테이블의 학번 속성을 기준으로 인덱스 stc_idx를 생성하여서 클러스터링하시오.(내림차순).

학생 테이블 : (학번, 이름, 학년, 학과)


create index stc_idx

on 학생(학번 desc)

cluster;



  • create_View


(학생) 테이블 로 부터 컴퓨터학과 학생들만으로 뷰 (컴과뷰)를 구성하라

학생 테이블 : (학번, 이름, 학년, 학과)


create view 컴과뷰(학번, 이름, 학년)

as select 학번, 이름, 학년

from 학생

where 학과 = '컴퓨터과학과'

with check option;






정보처리기사 실기 - 데이터베이스 SQL

  • Join - inner join_equi-join

강의와 교수 테이블을 사용하여 강의이름, 강의실, 강의시간, 이수구분, 그리고 강의를 담당하는 교수의 교수이름, 소속학과, 전화번호를 출력하시오.









학생과 수강신청 테이블을 사용하여 강의번호 'LA01'을 수강신청한 학생의 학생이름, 소속학과, 전화번호, 그리고 신청시각을 출력하시오.








강의와 교수 테이블을 사용하여 강의의 강의번호, 강의이름, 이수구분 그리고 강의를 담당하는 교수의 교수이름과 직위를 출력하시오.









  • Join - inner join_non-equi-join

학사 테이블의 취득 점수가 속하는 등급을 등급기준표 테이블의 하한컬럼값과 상한 컬럼값을 조건으로 참조하여 조건에 해당하는 레코드들의 번호, 이름, 취득점수, 등급 컬럼을 검색하시오.









  • Join - outer join_left-outer-join


학생과 수강신청 테이블에서 모든 학생정보와 각 학생이 수강신청을 한 수강신청 정보를 출력하시오.










  • Join - outer join_right-outer-join


학생과 수강신청 테이블에서 수강신청을 한 학생정보와 모든 수강신청 정보를 출력하시오.










  • Join - self join


강의 테이블에 선수과목이 있는 강의 중에서 강의이름, 강의시간, 인원제한, 이수구분과 선수과목의 강의이름, 이수구분을 각각 '선수강의이름'과 '선수이수구분'이란 이름으로 출력하시오.











Is null


상품 테이블에서 (가격)의 속성값이 NULL인 상품의 상품명을 내림차순으로 정령하여 검색하시오

상품 테이블 (상품코드, 상품명, 가격)







  • subQuery_ =


강의 테이블에서 강의번호 'KO31' 강의를 담당하는 교수의 교수번호, 교수이름, 연구실위치, 전화번호를 출력하시오.










  • subQuery_ IN...LIKE


강의 테이블에서 전공강의를 담당하는 교수의 교수번호, 교수이름, 연구실위치, 전화번호를 출력하시오.











  • subQuery_ >, <, >=, <=


학생 테이블 전체 학생 나이의 평균보다 나이가 많은 학생의 학생번호, 학생이름, 나이, 전화번호, 주소를 출력하시오.










  • subQuery_ EXISTS


수강신청과 강의 테이블을 사용하여 수강신청이 이루어진 강의의 강의정보를 출력하시오..









  • subQuery_ in


판매 테이블과 상품테이블을 이용하여 상품명이 '가공'으로 시작하는 상품의 판매량 합계를  검색하시오(단 하위질의 를  이용하시오)

판매 테이블 : (ID, 판매코드, 제품코드(fk), 판매량)

상품 테이블 : (ID, 상품명, 가격)







  • Grant 


수강테이블에 대해 김사랑에게 update 권한을 부여하고 다른 사람에게 update권한을 부여할 수 있는 권한을 부여하시오






수강테이블에 대해 김사랑에게 부여된 update권한과 김사랑이 다른 사람에게 update 권한을 부여할수 있는 권한 그리고 김사랑이 다른 사람에게 부여한  update권한까지 모두 취소하시오





  • alter_add


(academy) 테이블에 데이터 타입이 문자 15자리인 (주소) 속성을 추가하시오.






  • alter_alter


(academy) 테이블의 주소 속성을  데이터 타입이 문자 15자리인 (juso) 속성으로 수정하시오.

alter table academy  주소 modify juso char(15);



  • alter_drop


(academy) 테이블의  (주소) 속성을 삭제하시오(참조 테이블까지 적용).





  • create_table


다음 테이블을 생성하여라 (제약조건 : 지우거나 업데이트 할 때 연쇄적으로 작동,마검일: 2015년12월25일 이후)

상점 테이블 : (상점코드, 상점명(fk), 매출, 마감일)

협력업체 테이블 : (상점코드,.....)















  • create_schema


사용자 아이디가 블린인 booolean스키마를 생성하시오




  • create_domain


성별을 'male', 'female'로 정해진 문자로 표현되는 gender를 정의하시오.




  • create_index


(학생) 테이블의 학번 속성을 기준으로 인덱스 stc_idx를 생성하여서 클러스터링하시오.(내림차순).

학생 테이블 : (학번, 이름, 학년, 학과)








  • create_View


(학생) 테이블 로 부터 컴퓨터학과 학생들만으로 뷰 (컴과뷰)를 구성하라

학생 테이블 : (학번, 이름, 학년, 학과)








댓글