샤르의 잡동사니 창고

[SQL] SELECT 구문의 기본

컴퓨터 2011. 3. 21. 23:55
* 추후에 제목이 수정될 수도 있습니다..

데이터베이스의 형태

오라클이나 My SQL 등은 관계형 데이터베이스를 기본으로 하며,
기본 데이터를 저장하기 위한 구조로 테이블을 사용합니다.

테이블은 표처럼 볼 수 있도록 로우(row)와 컬럼(column)으로 구성합니다.


컬럼(column)
↓
컬럼 이름 →
no name
job
로우(row) →
1
smith salesman
2
john
clerk
3 allen clerk

2차원 행열 구조를 가지는 테이블을 나타내면 이와 같은 전체 구조를 가지게 됩니다.
(발그림은 양해를... ^^;;)

로우(row)는 파일 시스템에서 레코드에 해당되는 것으로서 개별적인 정보를 지니고 있으며,
컬럼(column)은 서로 구분되는 속성으로 위의 표에서 no, name, job에 해당하며, 각각을 컬럼(열)이라 합니다.


데이터 형

NUMBER (전체 자릿수, 소수점 이하 자리 수)
   숫자 데이터를 저장하기 위한 형식으로, 소수점 이하 자리수를 생략한 채 전체 자릿수만 설정하면 소수점 이하는 반올림되어 정수 값만 저장됩니다.

DATE
  단어 그대로 날짜에 대한 데이터를 저장하기 위한 형식으로, 날짜 뿐만이 아닌 세기, 시간, 분, 초에 대한 정보도 담을 수 있습니다. 별 다른 설정을 하지 않는다면 년, 월, 일만을 출력하게 됩니다.
날짜의 기본적인 출력 형식은 YY/MM/DD 입니다. (한글판 기준)

VARCHAR2
  가변적인 길이의 문자열을 저장하기 위한 형식으로 저장 공간을 낭비하지 않습니다.


기본적인 SELECT 문

SELECT [DISTINCT] {*, 컬럼의 이름, 그 외}
FROM 테이블명
[WHERE 조건];

- [] 안의 내용은 생략 가능한 표현이며, SQL 문은 대소문자를 가리지 않습니다.

지정된 테이블에서 원하는 데이터를 가져올 때 사용하는 쿼리문으로,
{} 안의 내용 중 하나를 선택하여 데이터를 조회할 수 있습니다.

모든 데이터의 조회를 원하는 경우 *(asterisk:에스테리스크) 를 사용하며,
특정 컬럼의 데이터만을 조회할 때에는 컬럼의 이름을 적습니다.

가령, ENAME, JOB 이라는 컬럼에 해당하는 데이터를 EMP 이라는 테이블에서 조회하려면,
SELECT ENAME, JOB FROM EMP;
과 같이 기술하면 됩니다.

앞쪽에 생략할 수 있는 표현인 [DISTINCT] 는 중복된 데이터의 출력을 생략하고자 할 때 붙여줍니다.

별칭

SQL 쿼리문의 결과가 출력될 때, 컬럼의 이름이 출력되는 부분에 별칭을 부여할 수 있습니다.

SELECT ENAME [AS] "이름" FROM EMP;
기본적으로 컬럼에 이어 바로 AS를 기술하는데, 이를 생략하여도 결과는 마찬가지입니다.
이 경우 "이름"에서 쌍따옴표("")를 생략하여도 같은 결과가 출력되지만,
별명에 공백이나 특수 문자, 대소문자를 가리고 싶을 경우에는 반드시 사용해주어야 합니다.


SELECT 문에 조건 달기

SELECT 문에 WHERE절을 사용하여 조회 할 데이터의 조건을 설정할 수 있습니다.

비교연산자

비교연산자는 일반적으로 널리 사용되는 =, >, <, >=, <=, <> 가 있으며, 컬럼의 이름과 함께 사용됩니다.

SELECT * FROM EMP WHERE ENAME="SMITH";
EMP 라는 테이블에서 ENAME 이라는 컬럼에 SMITH 와 일치하는 데이터를 가지고 있는 행(row)만을 출력합니다.

SELECT * FROM EMP WHERE HIREDATE >= '1985/01/01';
EMP 라는 테이블에서 HIREDATE 가 1985/01/01 이후인 데이터를 가지고 있는 행(row)만을 출력합니다.

LIKE 연산자

LIKE 연산자는 임의의 문자 또는 문자열을 포함한 값을 찾으려 할 때에 사용할 수 있는 연산자입니다.

... WHERE '컬럼의 이름' LIKE '비교할 패턴'
기본적인 형태는 이러며, '비교할 패턴'에 들어갈 와일드카드 문자로는 0~N개를 대치하는 퍼센트(%)와 한 글자만을 대치하는 언더바(_)가 있습니다.

SELECT * FROM EMP WHERE ENAME LIKE '%A%';
EMP 라는 테이블에서 ENAME 이라는 컬럼에 A가 단 하나라도 들어가는 데이터는 모두 조회합니다.

SELECT * FROM EMP WHERE ENAME LIKE '_A%';
EMP 라는 테이블에서 ENAME 이라는 컬럼에 A가 두 번째로 사용된 데이터만 조회합니다.

만약 찾고 자 하는 데이터에 와일드카드 문자(_, %)가 포함되어 있을 경우,
ESCAPE 문자를 사용하여 검색할 수 있습니다.

SELECT * FROM EMP WHERE ENAME LIKE '%\%%' ESCAPE '\';
ESCAPE 문자는 특별히 정해진 것이 없으며, 사용자가 직접 이를 정할 수 있습니다.

IN 연산자

IN연산자는 컬럼=조건1 OR 컬럼=조건2 OR 컬럼=조건3 형식의 구문을 간략하게 표현할 수 있도록 해 줍니다.

... WHERE SAL = 300 OR SAL = 500 OR SAL = 1000;
이와 같은 구문을 IN연산자를 사용하면,

... WHERE SAL IN(300, 500, 1000);
과 같이 표현이 가능합니다.

이는 숫자 뿐만 아니라 문자열, 날짜의 비교에 대해서도 사용이 가능합니다.

BETWEEN ... AND 연산자

특정 범위 내의 값을 논리 연산자 AND로만 기술하게 되면 상당히 길어지게 될 수도 있는데,
BETWEEN ... AND 연산자를 활용하면 이를 간단하게 나타낼 수 있습니다.

... WHERE SAL > 300 AND SAL < 1000;
이와 같은 구문을

... WHERE SAL BETWEEN 300 AND 1000;
과 같이 표현 가능합니다.

NOT 연산자

조건절의 앞에 써서 그 연산을 부정하는데 사용합니다.
NOT을 사용하면 이 위의 모든 연산자의 결과를 부정할 수 있는데,
OR의 개념을 가진 IN 연산자에 한해 AND 의 개념으로 변경됩니다.

'컴퓨터' 카테고리의 다른 글

SSD 를 질렀습니다  (0) 2011.03.26
[Java] 배열  (0) 2011.03.25
[프로그래밍 언어론] EBNF  (0) 2011.03.25
SQL 주요 함수 #1  (0) 2011.03.23
파이어폭스4 정식 출시  (0) 2011.03.23
[프로그래밍 언어론] 구문분석의 모호성  (0) 2011.03.20
[프로그래밍 언어론] 구문 분석 방법  (2) 2011.03.20
[프로그래밍 언어론] 파스트리(Parse tree)의 개요  (2) 2011.03.20
[프로그래밍 언어론] BNF (Backus-Naur Form) 란?  (0) 2011.03.20
Base64 인코딩에 대한 잡설  (0) 2011.03.20
현재 브라우저에서는 댓글을 표시할 수 없습니다.
IE9 이상으로 브라우저를 업그레이드하거나, 크롬, 파이어폭스 등 최신 브라우저를 이용해주세요.
블로그 이미지

안드로이드 앱 개발을 업으로 삼고있는 헬조선 컴돌이의 잡동사니 창고

by Selnis

카운터

Total
Today
Yesterday

최근에 올라온 글

  • 더 보기

최근 댓글

방명록 : 관리자 : 글쓰기
Selnis's Blog is powered by daumkakao
Skin ⓘ material T Mark1 by 뭐하라

ⓒ 2015. Selnis all rights reserved.

favicon

샤르의 잡동사니 창고

안드로이드 앱 개발을 업으로 삼고있는 헬조선 컴돌이의 잡동사니 창고

  • 태그
  • 링크 추가
  • 방명록

관리자 메뉴

  • 관리자 모드
  • 글쓰기
  • 전체 (322)
    • 공지 (4)
    • 잡담 (35)
    • 게임 (150)
    • 컴퓨터 (123)

카테고리

PC화면 보기 티스토리 Daum

티스토리툴바