2008년 4월 21일 (종합 정리)
문제1)
Titles 테이블의 컬럼 리스트를 보고자 할 때 아래와 같이 두가지 경우로 작성할 수 있다. 빈칸을 채우십시오.
1) sp_columns titles
2) select * from ( ) where id = object_id('titles')
답) syscolumns
문제2)
어떤 “aaa” 라는 테이블에서 “price”라는 가격 필드가 있다. 가격이 4,000 이상 6,000 이하인 품목 “product” 필드에 대한 개수를 구하는 SQL문을 이용하여 작성하십시오.
select count(product) from aaa
where price >= 4000 and price <= 6000;
혹은
select count(product) from aaa
where between 4000 and 6000;
문제3)
아래와 같이 동일한 기능을 하는 SQL문을 합계 함수를 이용하여 작성하십시오.
단, price 필드에서는 NULL 값이 있는 필드가 한 개도 없습니다.
select avg(price) from abc;
답) select sum(price) / count(price) from abc;
문제4)
아래의 두 구문이 동일한 구문이 되기 위해서 ( ) 안에 삽입되어야 할 구문을 기입하십시오.
select count(title) from titles
where price is null;
( )
select count(title) from titles
where price = null;
답)
set ansi_nulls off;
문제5)
아래의 네가지 테이블은 동일한 결과를 수행합니다. 빈란을 채우십시오.
1) select price from pubs..titles;
2) select price from titles;
3) select price from ( );
4) select price from ( );
답)
3) select price from ( dbo.titles );
4) select price from ( pubs.dbo.titles );
문제6)
아래의 조건으로 된 테이블을 작성하십시오.
보기) 테이블 이름 : java_member_table
필드명 데이터 타입 기본값 설 명 제약조건
member_id 가변길이 10자리 not null 회원아이디 PK(기본키)
member_name 가변길이 20자리 not null 회원 이름
member_jumin 고정길이 13자리 not null 회원주민번호 PK(기본키)
member_level 정수형 1자리 9 회원 등급
member_intro 2000자를 허용하는 유니코드 가변문자열 회원 소개
답)
create table java_member_table (
member_id varchar(10) not null,
member_name varchar(20) not null,
member_jumin char(13) not null,
member_level int(1) default 9,
member_intro nvarchar(2000),
primary key ( member_id, member_jumin )
)
문제7)
titles 테이블에서 가격이 기재되어 있지 않은 항목을 ‘100’으로 채워서 price 컬럼 자리에 화면 출력하는 SQL문을 작성합니다.
답)
select price = isnull(price, 100) from titles;
문제8)
“문제6” 에서 데이터를 아래와 같이 삽입한다고 하였을 때 빈칸에 들어갈 구문을 적으십시오.
insert into java_member_table ( )
values ('deuiv', '이산', '정조의 식솔들은 이산가족입니다', '7010101111111');
답)
insert into java_member_table ( 'member_id', 'member_name', 'member_intro', 'member_jumin')
values ('deuiv', '이산', '정조의 식솔들은 이산가족입니다', '7010101111111');
문제9)
주어진 어떤 특정한 기간 동안 판매한 도서량의 평균을 구하고자 합니다. 아래와 같이 주어졌을 때 빈칸을 채우십시오. 단, 도서 판매량 필드는 “qty”라고 가정합니다.
select ( ) from sales
where order_date >= '2007/01/01' and order_date <='2007/12/30';
답)
select avg(qty) from sales
where order_date >= '2007/01/01' and order_date <='2007/12/30';
혹은
select sum(qty) / count(qty) from sales
where order_date >= '2007/01/01' and order_date <='2007/12/30';
문제10)
데이터를 입력하다가 다음과 같이 에러 메시지가 출력되었다. 어떻게 조치해 주어야 에러를 해결할 수 있는지 방법을 기술하십시오. (SQL을 기입할 필요없이 방법만 간단히 기술합니다)
PRIMARY KEY 제약 조건 'PK__tmp_test__07F6335A'을(를) 위반했습니다. 'tmp_test' 개체에 중복 키를 삽입할 수 없습니다.
답)
primary key(기본키)가 중복되기 때문에 데이터 입력시 해당 필드에 중복되지 않는 다른 값을 입력하면 해결할 수 있습니다.
문제11) (기출)
Sales 테이블에서 가게 ID, 판매량, 평균을 보고자 합니다. 이것을 가게 ID 각각 결과를 내림차순으로 볼 수 있도록 조치합니다. 단, 평균에 대해서는 compute를 사용합니다.
답)
select stor_id, qty
from sales
order by stor_id desc
compute avg(qty) by stor_id;
문제12)
아래의 조건에 따른 빈칸을 채우십시오.
2007년 1년간의 도서판매량이 1000권 초과인 것을 각 ID 별로 조회하고자 합니다. 화면에는 “title_id”, “2007년 판매량”이라는 두가지의 필드로 출력될 수 있도록 조치합니다. 단 판매량 필드는 qty입니다.
select title_id, ( ) as '2007년 판매량'
from sales
where ord_date ( ) '2007/01/01' and '2007/12/31'
( ) title_id
having ( ) > 1000;
답)
select title_id, sum(qty) as '2007년 판매량'
from sales
where ord_date between '2007/01/01' and '2007/12/31'
group by title_id -- group by all title_id
having sum(qty) > 1000;
문제13)
4월중 블로그 테스트는 4월 29일에 수행합니다. 현재부터 그날까지 며칠이 남았는지를 구하는 SQL문을 작성하십시오.
답)
Select datediff(dd, getdate(), ‘2008.4.29’);
문제14)
날짜 형식을 일/월/년 순으로 바꾸는 명령을 적으십시오.
답)
set dateformat dmy;
문제15)
다음 기입된 SQL문에서 빈란(세곳)을 채우십시오.
select '오늘은 '+ convert(varchar, )
+ '월'
+ convert(varchar, )
+ '일'
+ ' '
+ ( )
+ '입니다. '
as '오늘의 날짜';
답)
select '오늘은 '+ convert(varchar, month(getdate()))
+ '월'
+ convert(varchar, day(getdate()))
+ '일'
+ ' '
+ datename(dw, getdate())
+ '입니다. '
as '오늘의 날짜';
## 문제16-20)
“문제6”의 테이블에서 다음과 같이 데이터가 입력되어 있다고 가정하였을 때, 아래와 같이 조치하십시오.
java_member_table (table name)
member_id member_name member_jumin member_level member_intro
jsp1234 홍길동 6010101111111 2 웹프로그래머
ejb5678 오달자 7002202222222 3 시스템프로그래머
uml91011 장길산 8008101111111 4 웹기획자
문제16)
위의 회원 데이터들을 레벨 내림차순으로 정렬하여 화면에 모든 필드를 출력하는 SQL문을 작성하십시오.
답)
select * from java_memebr_table
order by member_level desc;
문17)
위의 테이블에서 이름에 “길”자가 포함된 인원들을 찾아서 ID를 내림차순으로 조회하여 ID와 이름을 동시에 출력하는 쿼리문을 작성하십시오.
답)
select member_id, member_name from java_memebr_table
where member_name like '%길%'
order by member_id desc
문18)
위의 테이블에서 “오달자”씨가 직업을 “프로젝트매니저(1등급)”로 바꾸었을 때 데이터를 변경하고자 한다. 해당되는 SQL문을 작성하십시오.
답)
update java_member_table
set member_intro = '프로젝트매니저', member_level = 1
where member_name = '오달자';
-- 여기서 오달자 대신에 아이디나 주민번호등으로 검색해도 무방하다.
문19)
회원중에서 프로그래머에 해당하는 인원들을 찾아서 개발자로 변경하는 쿼리문을 작성하십시오.
답)
update java_member_table
set member_intro = replace(member_intro, '프로그래머','개발자’ )
from java_member_table
where member_intro like '%프로그래머';
문20)
위의 테이블에서 회원 이름 필드 자료형을 nvarchar(20)으로 변경하는
SQL문을 작성하십시오.
답)
alter table java_member_table
ALTER COLUMN member_name nvarchar(20) not null;