슬라이드 1 - Tistory

Download Report

Transcript 슬라이드 1 - Tistory

데이터베이스
Ch7. SQL 언어
우송대학교
IT경영학부
Ch 7. SQL 언어
1. SQL 언어
(1) 질의어 (Query Language)
1) DBMS 에서 데이터베이스로부터 데이터를 뽑아내어 사용가능한
형식으로 나타내어 주는 소프트웨어 툴 혹은 함수
2) 독자적이고 상호 작용 형태로 터미널에서 많이 사용하고 있는
비절차적 언어이며 고급명령어 형태의 독립된 데이터 조작어
3) In DBMS, a query is software tool or function that extracts data
from the database and presents it in a usable format.
(DBMS 에서 질의는 데이터베이스로부터 데이터를 추출하고 사용
가능한 형태로 제공하는 소프트웨어 도구 혹은 함수이다.)
4) SQL (Structured Query Language)
A standardized query language for requesting information from
a database.
(데이터베이스에 정보를 요구하는 표준 질의어)
Page : 2
Ch 7. SQL 언어
(2) SQL 분류
1) DDL (Data Definition Language)
명령어
CREATE
기 능
SCHEMA, DOMAIN, TABLE, VIEW, INDEX 정의
ALTER
TABLE 정의 변경
DROP
SCHEMA, DOMAIN, TABLE, VIEW, INDEX 삭제
① 데이터베이스 스킴은 데이터 정의 언어라는 특별한 언어로서 표현
된 정의의 집합으로 지정됨
② 번역한 결과가 데이터사전(data-dictionary 또는 data directory)
이라는 특별한 파일에 여러 개의 테이블로서 저장됨
③ 데이터베이스 관리 시스템(DBMS) 내에서 사용자의 편의와 구현상
의 편의를 위해 명령어를 제공함
Page : 3
Ch 7. SQL 언어
④ 데이터베이스를 정의하거나 그 정의를 수정할 목적으로 사용하는 언어
⑤ 데이터베이스 언어 중 데이터베이스의 객체들, 즉 테이블, 뷰, 인덱스 등
에 대한 구조인 스키마를 정의하고 변경하며 삭제할 수 있는 기능
⑥ 외부 스키마 명세 및 스키마에 사용되는 제약조건 명세
⑦ The language that allow users to create new database and specific
their schema.
(사용자가 새로운 데이터베이스와 자신들의 특정 스키마를 만들게 하는
언어)
Page : 4
Ch 7. SQL 언어
2) DML (Data Manipulation Language)
명령어
기 능
SELECT
튜플 검색
INSERT
튜플 삽입
DELETE
튜플 삭제
UPDATE
튜플 변경
① 사용자나 응용 프로그램과 데이터베이스 관리 시스템(DBMS) 간의
인터페이스를 제공
② Give users the ability to query the data and modify the data,
using an appropriate language.
(데이터베이스 사용자에게 적절한 명령어를 사용하여 데이터를 수정
하거나 데이터를 질의 할 수 있게 하는 것)
③ The language that enables users to access and manipulate data
as organized by the appropriate data model.
(사용자가 적절한 데이터모델로 구성된 데이터에 접근하고 조작할 수
있게 하는 언어)
Page : 5
Ch 7. SQL 언어
3) DCL (Data Control Language)
명령어
기능
COMMIT
정상적인 완료
ROLLBACK
트랜잭션 실패, 원래의 상태로
GRANT
사용권한 부여
REVOKE
사용권한 취소
① 데이터베이스를 공용하기 위한 데이터 제어를 정의하고 기술하는
언어 (데이터의 보호와 관리)
② 데이터 보안
③ 데이터 무결성 및 회복
④ 병행수행
Page : 6
Ch 7. SQL 언어
(3) DDL
1) CREATE
① CREATE SCHEMA
• 스키마를 정의
• 스키마의 식별을 위한 스키마와 해당 스키마의 소유권자/ 허가권자
를 정의함
• 기본 구조
Create Schema 스키마이름 authorization 사용자 id
• 예제
ID 가 임꺽정인 사용자의 스키마 ‘수위실’ 정의
⇨ CREATE SCHEMA 수위실 AUTHORIZATION 임꺽정;
Page : 7
Ch 7. SQL 언어
② CREATE DOMAIN
• 도메인을 정의
• 정의된 도메인명은 일반적인 데이터 타입처럼 사용
• 기본 구조
Create Domain 도메인이름 data-type
※ data-type 의 종류
- 정수, 실수, 날짜, 시간
- 형식화 된 숫자
- 고정길이 문자, 가변길이 문자
- 고정길이 비트열, 가변길이 비트열
Page : 8
Ch 7. SQL 언어
• 예제
CREATE DOMAIN SUNG CHAR(1)
DEFAULT ‘여’
도메인 무결성
CONSTRAINT VALID-SUNG CHECK (VALUE IN (‘남’, ‘여’));
Page : 9
Ch 7. SQL 언어
③ CREATE TABLE
• 테이블을 정의
• 기본 구조
Create Table 테이블이름 {
( 속성명 data-type),
Primary key (기본키 속성명),
Unique (대체키 속성명 ),
Foreign key (외래키 속성명),
References 참조테이블(기본키 속성명),
Check (조건식);
};
Page : 10
Ch 7. SQL 언어
• 예제
CREATE TABLE 학생{
학번 CHAR(18),
이름 CHAR(18) NOT NULL,
성별 SUNG,
생년월일 DATE,
PRIMARY KEY(학번), UNIQUE(생년월일),
FOREIGN KEY(학과코드) REFERENCES 학과(학과코드)
ON DELETE SET NULL ON UPDATE CASCADE,
생년월일 CHECK >=‘1974-05-01’
};
Page : 11
참조 무결성
Ch 7. SQL 언어
④ CREATE VIEW
• 뷰를 정의
• 기본 구조
Create View (속성명, ...)
As Select 속성명, ...
From 테이블명
where 조건;
[With Check option]
• 예제
CREATE VIEW 여학생(이름, 성별)
AS SELECT 이름, 성별
FROM 학생
WHERE 성별=‘여 ’;
Page : 12
Ch 7. SQL 언어
⑤ CREATE INDEX
• 인덱스를 정의
• 기본 구조
Create [unique] index 인덱스이름
On 기본테이블이름(속성이름 정렬방식);
※ 정렬방식 오름차순 내림차순 : ASC( ), DESC( )
• 예제
CREATE UNIQUE INDEX 고객번호_idx
ON 고객(고객번호 DESC);
(고객 테이블에서 UNIQUE 한 특성 (중복값이 없는 속성으로
인덱스 생성)을 갖는 고객번호 속성에 대해 내림차순으로 정렬하여
‘고객번호_idx‘라는 이름으로 인덱스 정의)
Page : 13
Ch 7. SQL 언어
2) ALTER TABLE
① 테이블에 대한 정의를 변경
②기본 구조
Alter Table 테이블이름 ADD
속성이름 data-type [default 값];
Alter Table 데이블이름 ALTER 속성이름 data-type [set default ];
Alter Table 테이블이름 DROP 속성이름 data-type [cascade];
③ 예제
ALTER TABLE 학생 ADD 취미 CHAR(18);
⇨ 새로운 속성 추가
ALTER TABLE 학생 ALTER 성별 SET DEFAULT ‘남 ’;
⇨ 기본값 변경
ALTER TABLE 학생 DROP 생년월일;
⇨ 속성 제거
Page : 14
Ch 7. SQL 언어
3) DROP
① 스키마, 도메인, 테이블, 뷰, 인덱스를 제거하는 명령문
② 기본 구조
Drop
SCHEMA
이름 [CASCADE | RESTRICT]
DOMAIN
TABLE
VIEW
INDEX
Page : 15
Ch 7. SQL 언어
③ 예제
DROP SCHEMA 수위실 CASCADE;
DROP TABLE 학생 RESTRICT;
※ CASCADE : 제거할 개체를 참조하는 다른 모든 개체를 함께 제거
RESTRICT : 다른 개체가 제거할 개체를 참조중일 경우 제거가 취소됨
⇨ 참조 무결성 위배 방지
Page : 16
Ch 7. SQL 언어
(4) DML
1) SELECT
① 테이블을 구성하는 튜플들 중에서 조건을 만족하는 튜플을 검색하여
임시 테이블을 구성하는 명령
② 기본 구조
SELECT
속성명, …
FROM
테이블명, …
[WHERE 조건]
Page : 17
Ch 7. SQL 언어
③ 예제 (기본 구조)
• 수강생 테이블의 전체속성(*) 을 나타내시오.
⇨ SELECT * FROM 수강생
(=SELECT 이름, 과목, 주소, 수강료 FROM 수강생)
• 수강생 테이블에서 중복 제거 된 과목만 검색하시오.
⇨ SELECT 과목 DISTINCT FROM 수강생
• 수강생 테이블에서 과목이 정보인 모든 튜플을 검색하시오.
SELECT * FROM 수강생 WHERE 과목 =' 정보 '
• 수강생 테이블에서 과목이 정보이고 주소가 남구인 모든 튜플을 검색
하시오.
⇨ SELECT * FROM 수강생 WHERE 과목='정보' AND 주소='남구'
Page : 18
Ch 7. SQL 언어
• 수강생 테이블에서 이름이 '김' 으로 시작하는 모든 튜플을 검색하시오.
⇨ SELECT * FROM 수강생 WHERE 이름 LIKE ‘김%'
※ %는 모든 문자이며, _는 한자리 문자임
• 수강생 테이블에서 수강료가 30이상 90이하인 모든 튜플을 검색하시오.
⇨ SELECT * FROM 수강생 WHERE 수강료 BETWEEN 30 AND 90
• 수강생 테이블에서 과목이 NULL인 모든 튜플을 검색하시오.
⇨ SELECT * FROM 수강생 WHERE 과목 IS NULL
Page : 19
Ch 7. SQL 언어
④ 확장 구조
SELECT
속성명, ...
FROM
테이블명 , ...
[WHERE 조건]
[GROUP BY 속성명, ...
[HAVING 조건]
[ORDER BY 속성명[ASC|DESC];
• DISTINCT
DISTINCT 는 생략이 가능하며, 생략하게 되면 ALL 이 됨
• [GROUP BY 속성[HAVING 조건 ]]
조건에 맞는 그룹별로 처리함
• [ORDER BY 속성[ASC | DESC]]
정렬 ASC : 오름차순 (A-Z, ㄱ-ㅎ ), DESC : 내림차순
Page : 20
Ch 7. SQL 언어
• GROUP BY
특정 속성을 기준으로 그룹화 하여 검색할 때 그룹화 할 속성을 지정
• HAVING
GROUP BY 와 함께 사용되며, 그룹에 대한 조건 지정
• 집단 함수
- COUNT( ): 속성 그룹별 튜플 수
- AVG( ) : 속성 그룹별 평균
- SUM( ) : 속성 그룹별 합계
- MAX( ) : 속성 그룹별 최대값
- MIN( ) : 속성 그룹별 최소값
• EXISTS(Q)
질의 Q의 결과에 최소한 한 개의 튜플이 있다면 참, 그렇지 않으면 거짓
을 반환
Page : 21
Ch 7. SQL 언어
• NOT EXISTS(Q)
질의 Q의 결과에 튜플이 없다면 참, 그렇지 않으면 거짓을 반환
• 비교연산자
= : 같다
<> : 같지 않다
> : 크다
< : 작다
>= : 크거나 같다
<= : 작거나 같다
IN : 포함되어 있다
• IS NULL
조건을 지정하는 WHERE 절에서 속성의 값이 NULL인 것을 검색
• IS NOT NULL
조건을 지정하는 절에서 WHERE 속성의 값이 NULL이 아닌 것을 검색
• 하위 질의
조건절의 주어진 질의를 먼저 수행하여 그 검색 결과를 조건절의 피연산자
로 사용함
Page : 22
Ch 7. SQL 언어
⑤ 예제
• 수강생 테이블에서 과목이 정보인 튜플을 검색하되, 이름을 기준으로
내림차순 정렬하여 모든 튜플을 검색하시오.
(정렬 방법을 명시하지 않을 경우 기본적으로 ASC (오름차순) 정렬됨)
⇨ SELECT * FROM 수강생 WHERE 과목 ='정보'
ORDER BY 이름 DESC
• 수강생 테이블에서 수강료가 100 이상인 과목별 수강생이 2명 이상인
수강생수를 검색하시오.
⇨ SELECT 과목, COUNT(*) AS 수강생수 FROM 수강생
WHERE 수강료 >=100 GROUP BY 과목 HAVING COUNT(*)>=2
• 장학금을 받는 학생의 이름과 수강과목, 주소를 검색하시오.
⇨ SELECT 이름, 과목 ,주소 FROM 수강생 WHERE 이름
IN (SELECT 이름 FROM 장학생)
Page : 23
Ch 7. SQL 언어
• 책명이 운영체제인 책의 가격을 검색하시오.
⇨ SELECT 가격 FROM 도서가격 WHERE 책번호 =
(SELECT 책번호 FROM 도서 WHERE 책명 ='운영체제')
• 수강생 테이블과 정회원 테이블의 모든 튜플을 중복 없이 하나의 결과로
검색하시오.
⇨ SELECT * FROM 수강생
UNION
SELECT * FROM 정회원
※ UNION : 둘 이상의 질의 결과를 중복 없이 하나의 결과로 조작할 수
있게 함
UNION ALL : 중복 허용
Page : 24
Ch 7. SQL 언어
2) INSERT
① 데이터베이스에 저장된 자료(튜플) 를 검색, 삽입, 삭제, 갱신, 재구성
하기 위한 언어
② 기본 구조
INSERT INTO 테이블명(속성명, …) VALUES(데이터값, …);
③ 예제
• 수강생 테이블에 김길현, 정보, 남구, 100을 넣어라.
⇨ INSERT INTO 수강생 VALUES ('김길현','정보','남구',100)
• 수강생 테이블에 이름, 수강료 에 이상인, 120 을 넣어라 .
⇨ INSERT INTO 수강생 (이름,수강료) VALUES ('이상인',120)
Page : 25
Ch 7. SQL 언어
• 수강생 테이블에서 주소가 남구인 이름, 과목, 수강료를 SELECT 해서
정보수강생 테이블을 만들어 이름, 과목, 수강료를 넣어라.
⇨ INSERT INTO 정보수강생 (이름,과목,수강료)
SELECT 이름,과목,수강료 FROM 수강생 WHERE 주소='남구‘
속성
테이블
Page : 26
조건
Ch 7. SQL 언어
3) UPDATE
① 테이블에 있는 튜플들 중에 특정 튜플의 내용을 갱신할 때 사용
② 기본 구조
UPDATE 테이블명 Set 속성명 = 데이터값 WHERE 조건;
③ 예제
• 수강생 테이블에서 이름이 최영희인 튜플의 과목을 사무로 바꾸시오.
⇨ UPDATE 수강생 SET 과목 = '사무' WHERE 이름 = '최영희'
• 수강생 테이블에서 과목이 워드인 튜플의 수강료를 +10 하시오.
⇨ UPDATE 수강생 SET 수강료 = 수강료 +10 WHERE 과목 = '워드'
Page : 27
Ch 7. SQL 언어
Page : 28
Ch 7. SQL 언어
4) DELETE
① 테이블에 있는 튜플들 중에서 특정 튜플을 삭제할 때 사용하는 명령문
② The Command removes tuples from a relation.
(릴레이션에서 튜플을 제거하는 명령어)
③ 기본 구조
DELETE FROM 테이블명 WHERE 조건;
④ 예제
• 수강생 테이블에서 과목이 사무인 것만 삭제하시오.
⇨ DELETE FROM 수강생 WHERE 과목 = '사무'
• DELETE 는 튜플을 삭제하는 명령어 (테이블 X)
⇨ DELETE FROM 수강생
※ DROP은 테이블 자체를 삭제하는 명령어이고, DELETE는는 튜플
을 삭제하는 명령어임
Page : 29
Ch 7. SQL 언어
Page : 30
Ch 7. SQL 언어
(5) DCL
1) GRANT
① 데이터베이스 사용자에게 사용권한 부여
② 기본 구조
GRANT 권한 ON 테이블명 TO 사용자명 [WITH GRANT OPTION];
③ 예제
• GRANT SELECT ON 수강생 TO KSH;
(KSH 는 다른 사람에게 권한을 부여할 수 없음)
⇨ 권한 : ALL, INSERT, DELETE, UPDATE, SELECT 등
※ WITH GRANT OPTION
사용자가 받은 권한을 다른 사용자에게 부여할 수 있음
Page : 31
Ch 7. SQL 언어
2) REVOKE
① 데이터베이스 사용자의 사용 권한을 취소
② 기본 구조
REVOKE 권한 ON 테이블명 FROM 사용자명 [CASCADE];
③ 예제
• REVOKE SELECT ON 수강생 FROM KSH [CASCADE];
⇨ KSH에게 수강생 테이블에 대한 권한 취소
※ CASCADE
권한을 부여받은 사용자가 다른 사용자에게 부여한 권한도 취소
Page : 32
Ch 7. SQL 언어
3) COMMIT
데이터베이스 조작 작업을 영구적으로 반영하여 완료함
4) ROLLBACK
데이터베이스 조작 작업이 비정상적으로 종료되었을 때 원래의 상태로
복구
Page : 33
Ch 7. SQL 언어
(6) 내장(삽입) SQL
1) 내장 SQL 의 정의
응용 프로그램 안에 데이터베이스에서 사용하는 데이터를 정의 또는
질의하는 SQL 문장을 넣어 프로그램이 실행될 때 함께 실행되도록
호스트 프로그램 언어로 만든 삽입된 SQL 문
2) 내장 SQL 의 특징
① 응용 프로그램 내에 데이터를 정의하거나 질의하는 SQL 문장을
내포하여 프로그램이 실행될 때 함께 실행되도록 함
② Host Program 의 컴파일 시 선행처리기에 의해 내장 SQL문은
분리되어 컴파일 됨 (내장 SQL 프로그램은 컴파일보다 우선하는
전 처리기에 의해 처리됨)
• 내장 SQL을 포함한 프로그램을 번역하여 실행시키는데 필요한 요소
- 호스트 프로그램 컴파일러
- 예비 컴파일러
- 컴파일러
Page : 34
Ch 7. SQL 언어
③ 호스트 변수와 데이터베이스 필드의 이름은 같아도 됨
④ 호스트 언어의 실행문이 나타날 수 있는 곳이면 어디든지 나타날 수 있음
⑤ 삽입 SQL 문은 호스트 변수를 포함할 수 있음
⑥ SQL 문장의 식별자로서 EXEC SQL 을 앞에 기술함
⑦ SQL 에 사용되는 호스트 변수는 콜론(:) 을 앞에 붙임
⑧ SQL code 의 값이 영(제로) 이면 성공적으로 수행되었음을 의미
⑨ 호스트 변수의 데이터 타입은 이에 대응하는 데이터베이스 필드의 SQL
데이터 타입과 일치해야 함
Page : 35
Ch 7. SQL 언어
3) 커서 (Cursor)
① SQL 문의 수행을 위해 별도의 메모리영역(Context Area) 을 할당함
② Context Area 는 SQL 문의 결과 Set과 수행된 SQL 문에 대한 정보를
가짐
③ 사용자는 Cursor 를 통하여 Context Area 의 통제와 관리가 가능함,
즉 커서는 Context Area 에 대한 핸들
4) 커서 관련 명령어
① DECLARE
커서를 정의하는 등 커서에 관련된 선언을 하는 명령
② OPEN
커서가 질의 결과의 첫 번째 튜플을 포인트 하도록 설정하는 명령
③ FETCH
질의 결과의 튜플들 중 현재의 자음 튜플로 커서를 이동시키는 명령
Page : 36
Ch 7. SQL 언어
④ CLOSE
질의 수행 결과에 대한 처리 종료 시 커서를 닫기 위해 사용하는 명령
• 예제
DECLARE
v_dept dept.dname%type;
CURSOR cur_dept IS --------------Cursor 선언
select dname from dept;
BEGIN
OPEN cur_dept; -- Cursor open
FETCH cur_dept INTO v_dept; -- 첫 번째 row fetch
FETCH cur_dept INTO v_dept; -- 두 번째 row fetch
FETCH cur_dept INTO v_dept; -- 세 번째 row fetch
FETCH cur_dept INTO v_dept; -- 네 번째 row fetch
CLOSE cur_dept;
END;
Page : 37
Ch 7. SQL 언어
1. 데이터 정의 언어(Data Definition Language : DDL) 와 관련된 설명으로 옳지
않은 것은? (0103)
가. 데이터베이스 스킴은 데이터 정의 언어라는 특별한 언어로서 표현된 정의의
집합으로 지정된다.
나. DDL 은 번역한 결과가 데이터사전 (data-dictionary) 이라는 특별한 파일에
여러개의 테이블로서 저장된다.
다. 데이터 사전은 단순 데이터 (simple data) 를 수록 하고 있는 파일이다.
라. 데이터베이스 관리 시스템 (DBMS) 내에서 사용자의 편의와 구현상의 편의
를 위해 명령어를 제공하는 것은 DDL 이다 .
2. 관계 데이터 언어 (Data Language) 중에서 데이터의 보안, 무결성, 회복과 밀접
한 관련이 있는 데이터 언어는? (0109, 0305, 0605)
가. 데이터 정의어(Data Definition Language)
나. 데이터 조작어(Data Manipulation Language)
다. 데이터 제어어(Data Control Language)
라. 도메인 관계해석 질의어(Query By Example)
Page : 38
Ch 7. SQL 언어
3. SQL에서 명령어 짝의 사용이 부적절한 것은 ? (0209, 0403)
가. UPDATE... / SET...
나. INSERT... / INTO...
다. DELETE... / FROM...
라. CREATE VIEW... / TO...
4. STUDENT 테이블을 생성한 후, GENDER 필드가 누락되어 이를 추가하려고
한다. 이에 적합한 SQL 명령어는? (0405)
가. CREATE
나. ALTER
다. ADD
라. MODIFY
5. SQL의 DROP 문은 어떠한 목적으로 사용되는가? (0603)
가. 스키마, 테이블 및 뷰의 제거 시에 사용된다.
나. 스키마, 테이블 및 뷰의 정의 시에 사용된다.
다. 데이터베이스의 무결성을 체크하는데 사용된다.
라. 데이터베이스를 최적화하는데 사용된다.
Page : 39
Ch 7. SQL 언어
6. 기본 테이블 R를 이용하여 뷰 V1을 정의하고, 뷰 V1을 이용하여 다시 뷰 V2가
정의되었다. 그리고 기본 테이블 R과 뷰 V2를 조인하여 뷰 V3을 정의하였다.
이때 다음과 같은 SQL 문이 실행되면 어떤 결과가 발생하는지 올바르게 설명
한 것은? (0007, 0109, 0403)
DROP VIEW V1 RESTRICT :
가. V1 만 삭제된다 .
나. R, V1, V2, V3 모두 삭제된다.
다. V1, V2, V3 만 삭제된다.
라. 하나도 삭제되지 않는다.
7. 다음 SQL 문의 실행결과를 가장 올바르게 설명한 것은? (0103)
DROP Table 인사 Cascade ;
가. 인사 테이블을 제거한다.
나. 인사 테이블을 참조하는 테이블과 인사 테이블을 제거한다.
다. 인사테이블이 참조중이면 제거하지 않는다.
라. 인사 테이블을 제거할 지의 여부를 사용자에게 다시 질의한다.
Page : 40
Ch 7. SQL 언어
8. 다음 문장이 뜻하는 것은 무엇인가 SQL ? (9908)
INSERT INTO 컴퓨터과 테이블(학번, 이름, 학년)
SELECT 학번, 이름, 학년 FROM 학생테이블
WHERE 학과 = ‘컴퓨터’ ;
가. 학생테이블에서 학과가 컴퓨터인 사람의 학번, 이름, 학년을 검색하라.
나. 학생테이블에 학과가 컴퓨터인 사람의 학번, 이름, 학년을 삽입하라.
다. 학생테이블에서 학과가 컴퓨터인 사람의 학번, 이름, 학년을 검색하여
컴퓨터과 테이블에 삽입하라.
라. 컴퓨터과 테이블에서 학과가 컴퓨터인 사람의 학번, 이름, 학년을 검색
하여 학생테이블에 삽입하라.
9. 학생(STUDENT) 테이블에 전산과 학생이 50명, 전자과 학생이 100명, 기계과
학생이 50명 있다고 할 때, 다음 SQL 문 ㉠, ㉡, ㉢ 의 실행 결과 튜플 수는 각
각 얼마인가? (단, DEPT 필드는 학과명을 의미한다.) (9908)
㉠ SELECT DEPT FROM STUDENT;
㉡ SELECT DISTINCT DEPT FROM STUDENT;
㉢ SELECT COUNT (DISTINCT DEPT) FROM
STUDENT WHERE DEPT = ‘전산과’;
가. ㉠ 3
다. ㉠ 200
㉡3
㉡3
㉢1
㉢ 50
나. ㉠ 200
라. ㉠ 200
Page : 41
㉡3
㉢1
㉡ 200 ㉢ 50
Ch 7. SQL 언어
10. 회사원이라는 테이블에서 사원명을 찾을 때, 연락번호가 Null값이 아닌 사원명
을 모두 찾을 때의 SQL 질의로 옳은 것은? (0106)
가. SELECT 사원명 FROM 회사원 WHERE 연락번호 !=NULL;
나. SELECT 사원명 FROM 회사원 WHERE 연락번호 <> NULL;
다. SELECT 사원명 FROM 회사원 WHERE 연락번호 IS NOT NULL;
라. SELECT 사원명 FROM 회사원 WHERE 연락번호 DON'T NULL;
11. 아래의〔인사〕테이블과〔차량〕 테이블을 이용하여 SQL 문을 수행했을 경
우의 결과는? (0303)
select 종류 from 차량 where 사원번호 =
(select 사원번호 from 인사 where 성명 =
오형우);
[인사] 성명
김이순
박이준
이형수
오형우
소속
사원번호
총무과
25
자재과
56
영업과
23
교육과
43
가. 43
나. 56
[차량] 사원번호
23
25
43
56
다. C
Page : 42
라. D
종류
A
B
C
D
Ch 7. SQL 언어
12. 관계 데이터베이스의 테이블 지점정보 (지점코드, 소속도시, 매출액)에 대해
다음과 같은 SQL문이 실행되었다. 그 결과에 대한 설명으로 부적합한 것은?
(0106)
SELECT 소속도시, AVG(매출액)
FROM 지점정보 WHERE 매출액 >1000
GROUP BY 소속도시
HAVING COUNT(*) >= 3;
가. WHERE 절의 조건에 의해 해당 도시의 지점들의 매출액 평균이
1000 이하인 경우는 출력에서 제외된다.
나. 지점이 3 군데 이상 있는 도시에 대해 각 도시별로 그 도시에 있는
매출액 1000초과인 지점들의 평균 매출액을 구하는 질의이다.
다. SELECT 절의 "AVG(매출액)" 을 "MAX(매출액)"으로 변경하면
각 도시 별로 가장 높은 매출을 올린 지점의 매출액을 구할 수 있다.
라. HAVING절에서 "COUNT(*)>=3" 을 " SUM (매출액)>=5000"으로
변경하면 어느 한 도시의 지점들의 매출액 합이 5000 이상인 경우만
그 도시 지점들의 매출액 평균을 구할 수 있다.
Page : 43
Ch 7. SQL 언어
13. 다음과 같은 일련의 권한 부여 SQL 명령에 대한 설명 중 부적합한 것은?
(9904 0505)
DBA: GRANT SELECT ON STUDENT TO
U1 WITH GRANT OPTION;
U1: GRANT SELECT ON STUDENT TO U2;
DBA: REVOKE SELECT ON STUDENT
FROM U1 CASCADE;
가. U1 은 STUDENT 에 대한 검색 권한이 없다.
나. DBA 는 STUDENT 에 대한 검색 권한이 있다.
다. U2 는 STUDENT에 대한 검색 권한이 있다.
라. U2 는 STUDENT 에 대한 검색 권한을 다른 사용자에게
부여할 수 없다.
Page : 44
Ch 7. SQL 언어
14. Embedded-SQL 의 설명으로 옳지 않은 것은? (0203 0308)
가. 응용 프로그램 내에 데이터를 정의하거나 질의하는 SQL 문장을 내포하여
프로그램이 실행될 때 함께 실행되도록 한다.
나. Host Program 의 컴파일 시 선행처리기에 의해 내장 SQL 문은 분리되어
컴파일 된다 .
다. 호스트 변수와 데이터베이스 필드의 이름은 같아도 된다.
라. 내장 SQL문의 호스트 변수의 데이터 타입은 이에 대응하는 데이터베이스
필드의 SQL 데이터 타입과 일치하지 않아도 된다.
15. 삽입 (embedded) SQL문이 포함된 응용 프로그램에서 프로그램의 중간에
‘EXEC SQL FETCH C1.....‘ 과 같은 문장이 포함되어 있다면, 이 문장이 나타
나기 전에 반드시 먼저 나타나야 되는 삽입 SQL 명령어들로 구성된 것은 ?
(0103)
가. DECLARE CURSOR
나. DECLARE CURSOR, OPEN
다. DECLARE CURSOR, OPEN, PREPARE
라. DECLARE CURSOR, OPEN, PREPARE, EXECUTE
Page : 45