달력

22025  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

1. 기본적인 SELECT문 사용법

 SELECT 문장을 이용하여 데이터베이스로부터 저장되어 있는 데이터를 검색하는 방법에 대하여 알아보기로 한다.

 

1.1 SQL SELECT 문장의 성능

 1) Seletion : 질의에 대해 RETURN 하고자 하는 테이블의 행을 선택하기 위해 SQL 의 Selection 기능을 사용할 수 있습니다.

 2) Projection : 질의에 대해 RETURN 하고자 하는 테이블의 열을 선택하기 위해 SQL의 Projection 기능을 사용할 수 있습니다.

 3) Join : 공유 테이블 양쪽의 열에 대해 링크를 생성하여 다른 테이블에 저장되어 있는 데이터를 함께 가져오기 위해 SQL의 join 기능을 사용할 수 있습니다.

 

1.2 Syntax

 DISTINCT   중복 행 제거 옵션

 *              테이블의 모든 column 출력

 alias          해당 column에 대한 다른 이름 부여

 table_name 테이블명 질의 대상 테이블 이름

 WHERE      조건을 만족하는 행들만 검색

 condition   column, 표현식, 상수 및 비교 연산자

 ORDR BY   질의 결과 정렬을 위한 옵션(ASC:오름차순(Default),DESC내림차순)

 

 1.3 SQL 문장 작성법

 1) SQL 문장은 대소문자를 구별하지 않습니다.

 2) SQL 문장은 한 줄 또는 여러 줄에 입력될 수 있습니다.

 3) 하나의 명령어는 여러 줄에 나누거나 단축될 수 없습니다.

 4) 절은 보통 읽고 편집하기 쉽게 줄을 나누도록 합니다. (권장)

 5) 탭과 줄 넣기(들여쓰기)는 코드를 보다 읽기 쉽게 하기 위해 사용됩니다. (권장0

 6) 일반적으로 키워드는 대문자로 입력합니다. 다른 모든 단어, 즉 테이블 이름, 열 이름은 소문자로 입력합니다. (권장)

 7) SQL*Plus 에서 SQL 문장은 SQL 프롬프트에 입력되며 1라인 이후의 라인은 라인 번호가 붙습니다. 가장 최근의 명령어가 1개가 SQL buffer에 저장됩니다.

 

1.4 SQL 문장 실행

 1) 마지막 절의 끝에 ";"를 기술하여 명령의 끝을 표시한다.

 2) 버퍼에서 마지막 라인에 슬래시를넣습니다. (OS의 Editor 사용시)

 3) SQL 프롬프트에 슬래시를 입력합니다. (SQL Buffer의 내용 실행)

 4) SQL 프롬프트에서 SQL*Plus RUN 명령어를 실행합니다. (SQL Buffer의 내용 실행)

 

 

1.5 모든 열 선택

 SELECT 키워드에 "*"을 사용하여 테이블의 열 데이터 모두를 조회할 수 있습니다.

 

문제 1) SCOTT이 소유하고 있는 EMP Table의 모든 자료를 출력하여라.

 

1.6 특정 Column 선택

 테이블의 특정 Column을 검색하고자 할 경우 Column 이름을 ","로 구분하여 명시함으로써 특정 Column을 출력할 수 있습니다. 출력순서는 SELECT 문 뒤에 기술한 Column의 순서대로 출력됩니다.

 

문제 2) SCOTT 이 소유하고 있는 EMP Table 에서 사원 번호, 이름, 급여, 담당업무를 출력하여라.

 

1.7 Column의 출력 형태

 날짜 열 헤딩과 데이터 뿐만 아니라 문자 열 헤딩과 데이터는 열 폭 내에서 좌측 정렬됩니다. 숫자 헤딩과 데이터는 우측 정렬입니다.

 

1.8 산술 표현식

 데이터가 출력 되는 방식을 수정하거나 계산을 수행하고자 할 때 산술 표현식을 사용한다. 산술 표현식은 열 이름, 숫자 상수, 문자 상수, 산술 연산자를 포함할 수 있으며 연산자는 +(Add), -(Subtract), *(Multiply). /(Divide)을 사용합니다. SELECT 문장에서는 FROM절을 제외한 SQL 문장의 절에서 사용할 수 있습니다. 또한 산술 표현식이 하나 이상의 연산자를 포함한다면 일반적인 산술 연산자 우선 순위를 따른다.

 

문제 3) 모든 종업원의 급여를 $300 증가 시키기 위해 덧셈 연산자를 사용하고 결과에 SAL+300을 디스플레이 합니다.

 

참고

 계산된 결과 열 SAL+300 은 EMP 테이블의 새로운 열이 아님을 유의하십시오. 이것은 단지 디스플레이를 위한 것일 뿐입니다. 디폴트로 새로운 열의 이름 sal+300 은 생성된 계산식으로부터 유래합니다. 또한 SQL*Plus는 산술 연산자 앞뒤의 공백을 무시합니다.

 

1.9 Null 값의 처리

 행이 특정 열에 대한 데이터 값이 없다면, 값은 null이 됩니다. null 값은 이용할 수 없거나 지정되지 않았거나, 알 수 없거나 또는 적용할 수 없는 값입니다. null 값은 0 이나 공백과는 다릅니다. 0은 숫자이며 공백은 문자입니다. 열이 NOT NILL 로 정의되지 않았거나, 열이 생성될 때 PRIMARY KEY로 정의되지 않았다면, 어떤 데이터형의 열은 null 값을 포함할 수 있습니다. EMP 테이블의 COMM 열에서 오직 SALESMAN 만이 보너스를 받을 수 있음을 주목하십시오.

 

참고

 1) NULL은 이용할 수 없고 할당되지 않고 알려져 있지않고 적용 불가한 값을 의미한다.

 2) NULL이란 0이나 공백(space)과 다르다.

 3) 널 값을 포함한 산술 표현식 결과는 NULL이 된다.

 4) column에 데이터 값이 없으면 그 값 자체가 널 또는 널 값을 포함하고 있다.

 5) 넓 값은 1 바이트의 내부 저장 장치를 오버헤드로 사용하고 있으며 어떠한 datatype column 들이라도 널 값을 포함할 수 있다.

 

문제 4) EMP 테이블에서 사원번호, 이름, 급여, 보너스, 보너스 금액을 출력하여라

 

1.10 NVL 함수

 1) Null값을 어떤 특정한 값(실제 값)으로 변환하는데 사용한다.

 2) 사용될 수 있는 데이터 타입은 날짜, 문자, 숫자입니다.

 3) NVL 함수를 사용할 때 전환되는 값의 데이터 타입을 일치 시켜야 한다.

 

1.10.1 Syntax

expr1       Null 값을 포함하고 있는 Column이나 표현식

expr2       Null 변환을 위한 목표 값

 

1.10.2 다양한 데이터형에 대한 NVL 변형

 데이터형

변환 예 

NUMBER 

NVL(comm,0) 

DATE 

NVL(hiredate, '01-JAN-99') 

CHAR or VARCHAR2 

NVL(job, '업무없음') 

 

문제5) EMP 테이블에서 이름, 급여, 보너스, 연봉을 출력하여라

1.11 열에 별칭(Alias) 부여

 질의의 결과를 출력할 때 보통 SQL*Plus 는 열 Heading으로 선택된 열 이름을 사용합니다. 이 Heading은 때로 사용자가 이해하기가 어려운 경우가 있기 때문에 열 Heading을 변경하여 질의 결과를 출력하면 보다 쉽게 사용자가 이해할 수 있습니다.

 

1.11.1 열 별칭(Alias) 정의

 1) 열 Heading 이름을 변경 합니다.

 2) 계산에 유용합니다.

 3) 열 이름 바로 뒤에 사용합니다. 열 이름과 별칭 사이에 키워드 AS 를 넣기도 합니다.

 4) 공백이나 특수 문자 또는 대문자가 있으면 이중 인용부호(" ")가 필요 합니다.

 

문제6) EMP 테이블에서 ENAME를 NAME 로 SAL을 SALARY로 출력하여라

 

문제7) EMP 테이블에서 ENAME를 Name 로 SAL*12를 Annual Salary로 출력하여라

문제8) EMP 테이블에서 ENAME를 NAME로 SAL*12를 Annual Salary로 출력하여라

1.12 연결 연산자

 연결 연산자(||)를 사용하여 문자 표현식을 생성하기 위해 다른 열, 산술 표현식, 상수 값에 열을 연결 할 수 있습니다. 연결자의 왼쪽에 있는 열은 단일 결과 열을 만들기 위해 조합 됩니다.

 1) 열이나 문자 STRING을 다른 열에 연결 합니다.

 2) 두개의 "||"로 연결 합니다.

 3) 문자 표현식의 결과 열을 생성 합니다.

 

문제9) EMP 테이블에서 이름과 업무를 연결하여 출력하여라. 

 

1.13 LITERAL 문자 STRING

  LITERAL 은 열 이름이나 열 별칭이 아닌 SELECT 목록에 포함되어 있는 문자, 표현식, 숫자입니다. 그것은 RETURN 되는 각각의 행에 대해 출력됩니다. LITERAL 과 STRING 은 질의 결과에 포함될 수 있으며 SELECT 목록에서 열과 똑같이 취급됩니다. 날짜와 문자 LITERAL은 단일 인용 부호(' ')를 사용하여야 하고 숫자 LITERAL은 사용하지 않습니다.

 1) SELECT절에 포함된 LITERAL은 문자, 표현식, 숫자입니다

 2) 날짜와 문자 LITERAL 값은 단일 인용부호(' ')안에 있어야 합니다.

 3) 각각의 문자 STRING은 RETURN된 각 행에 대한 결과입니다.

 

문재 10) EMP 테이블에서 이름과 업무를 "KING is a PRESIDENT" 형식으로 출력하여라.

 

문제 11) EMP 테이블에서 이름과 연봉을 "KING: 1 Year salary = 60000" 형식으로 출력하여라

 

1.14 중복 행의 제거

 특별히 명시되지 않았다면, SQL*Plus 는 중복되지는 행을 제거하지 않고 Query 결과를 출력합니다. 결과에서 중복되는 행을 제거하기 위해서는 SELECT 키워드 바로 뒤에 DISTINCT를 기술한다.

 

문제 12) EMP 테이블에서 JOB을  모두 출력하여라

 

문제 13) EMP 테이블에서 담당하고 있는 업무의 종류를 출력하여라.

문제14) 부서별로 담당하는 업무를 한번씩 출력하여라.

Guidelines

 1) DISTINCT 라는 키워드는 항상 SELECT 바로 다음에 기술한다.

 2) DISTINCT 뒤에 나타나는 칼럼들은 모두 DISTINCT의 영향을 받는다.

 3) DISTINCT 뒤에 여러 개의 칼럼을 기술하였을 때 나타나는 행은 칼럼의 조합들이 중복되지 않게 나타난다.

 4) DISTINCT를 사용하여 나타나는 결과는 기본적으로 오름차순 정렬된다.

 

 

 

 

 

 

 

Posted by 전설의아이
|