블로그 이미지
'무른모'란 부드럽다라는 뜻을 가진 '무르다'라는 말과 도구, 연장을 뜻하는 '연모'라는 순 우리말의 합성어로 소프트웨어를 말합니다. seanhigher

카테고리

분류 전체보기 (161)
Blog srart (16)
Dev Center (94)
Real Life (13)
Mac life (21)
Naver life (17)
Total657,254
Today63
Yesterday89

'2010/08/16'에 해당되는 글 1건

  1. 2010.08.16 데이터 베이스에서 데이터를 불러오는 방법.
데이터베이스에는 수많은 데이터들이 저장되어 있다. 그 데이터를 불러오지 않으면 그것은 모두 쓸모없는 데이터들이 된다. 데이터베이스에서 데이터를 불러오기 위해서는 SELECT 라는 명령문을 사용하게 된다.



SELECT문 사용하기
셀렉트는 데이터를 출력하기 위한 가장 기본적인 명령이다. 데이터베이스에서의 기초라고 할 수 있다. 오라클레서 제공하는 XE 버전을 설치하게 되면 'HR' 계정이 있는데, 이것은 데이터베이스에 대한 연습을 하기 위해 이미 테이블들이 생성되어 있기 때문에, 기본적인 데이터베이스에 대한 연습을 하기에는 충분하다. 먼저 테이블의 목록을 보기 위해서 다음과 같이 입력하도록 한다.

SELECT * FROM TAB;

이것은 해석하자면 'TAB' 라는 테이블의 모든 정보를 보여달라는 것이다. SELECT '컬럼명' FROM '테이블명' 의 형식으로 사용되는 것이다. '*' 은 모든컬럼을 표시하라는 의미이고, 'TAB' 은 테이블명이다. 'TAB' 테이블은 사용자가 만드는 것이 아니라 데이터베이스에서 자동으로 만들어지는데, 그 사용자의 테이브에 대한 정보를 가지고있다. 위의 쿼리문을 입력하면 'HR'계정이 가지고 있는 테이블에 대한 정보를 보여줄 것이다.

보여지는 테이블 중에서 employees 테이블의 정보를 보고 싶다면..

SELECT * FROM employees;

위의 쿼리는 'employees' 테이블에 있는 모든 컬럼들과 정보를 보여줄 것이다. 이중에서 특정 부분(직원 번호, 이름, 급여) 만을 보고 싶다면 컬럼명을 명시하여 검색을 할 수 있다.

SELECT employee_id, last_name, salary FROM employees;

각 컬럼들은 콤마를 이용해 구분하도록 한다.



좀더 세밀한 검색하기.
기본 쿼리문에 WHERE 을 통해서 좀더 상세한 조건으로 원하는 결과를 검색을 할 수 있다. 특정한 데이터 값을 갖는다던지, 큰것과 작은것을 비교하는 것이 가능하다.

SELECT employee_id, last_name, salary FROM employees WHERE last_name = 'King';
SELECT employee_id, last_name, salary FROM employees WHERE salary > 10000;
SELECT employee_id, last_name, salary FROM employees WHERE last_name IN ('King', 'Abel', 'Smith');

위의 첫번째쿼리문은 'King'이란 이름을 갖고 있는 데이터를 보여주고, 두번째는 급여가 20000 보다 높은 사람의 데이터를 보여준다. 마지막의 쿼리문은 이름이 'King', 'Able', 'Smith'인 모든 사람을 보여주게 된다. 그 이름이 포함되지 않은 사람을 검색하고 싶다면 'IN' 대신에 'NOT IN'을 사용하면 된다. 그리고 조건이 여러개가 있을경우에는 함께 AND 와 OR 을 사용하여 조건을 추가하는 것이 가능하다.

SELECT employee_id, last_name, salary FROM employees WHERE last_name = 'King' AND salary > 10000;
SELECT employee_id, last_name, salary FROM employees WHERE last_name = 'King' OR salary > 10000;

급여가 10000 이상 20000 이하인 사람의 데이터를 검색하기 위해서는 부등호와 AND 를 조합하여 사용할 수 있지만, 'BETWEEN ~ AND' 를 사용해서도 표현할 수 있다.

SELECT employee_id, last_name, salary FROM employees WHERE salary >= 10000 AND salary <= 20000;
SELECT employee_id, last_name, salary FROM employees WHERE salary BETWEEN 10000 AND 20000;

위의 두 식은 같은 결과 값을 출력하게 된다. 일부 데이터중에는 값이 없는 것이 있을 수도 있는데, 이것은 'NOT NULL' 과 'IS NOT NULL' 의 식으로 표현할 수 있다. 직원들 중에서 커미션이 없는 직원들을 보고싶다면..

SELECT employee_id, last_name, salary, commission_pct FROM employees WHERE commission_pct IS NULL;

위와 같은 방식으로 쿼리문을 작성할 수 있을 것이다.



문자열을 비교하기.
직원의 이름들 중에서 'K'를 포함하는 사람들 검색하고 싶다면 어떤 조건을 주어야 할지 고민이 될 것이다. 특정 문자를 포함하는 조건을 주고 싶을땐, 'LIKE' 를 사용해서 검색할 수 있다.

SELECT employees_id, last_name, salary FROM employees WHERE last_name LIKE '%k%';
SELECT employees_id, last_name, salary FROM employees WHERE last_name LIKE '__k%';

'%' 기호는 한자리 이상의 모든 문자를 의미한다. '%k%' 는 'k' 를 포함하는 모든 문자열이 되는 것이다. '_'는 한 문자를 가르킨다. '__k%' 는 세번째 문자가 'k'인 모든 문자를 의하는 것이다. 이제 문자열에 대해서도 원하는 결과를 도출할 수 있게 되었다.



Date 로 검색하기.
오라클의 데이터 타입에는 문자열(char, varchar), 숫자(number), 날짜(date) 형식이 있다. Date 타입이 기본적으로 보여주는 형식은 'YY/MM/DD'의 모습을 가지고 있다. 현재의 시간을 나타내는 데이터로 'SYSDATE'를 사용할 수 있는데, 매우 세밀한 시간의 정보까지 가지고 있어서 자세한 시간의 출력을 하는것까지 가능하다.

SELECT SYSDATE FROM DUAL;
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') FROM DUAL;
SELECT TO_CHAR(10000, '$999,999') FROM DUAL;

위의 쿼리문에서는 간단하게 날까지만 출력을 하는 것이 가능하다. 쿼리문에서 사용된 'DUAL'은 테이블이 없는 상태에서 데이터를 출력하고자 할때, 가상의 테이블을 만들어주는 역할을 한다. 아래의 쿼리문은 현재의 시간을 '년도-월-날 시간:분:초'의 형식을 출력형식을 지정해주어 나타낼때 사용된다. 이때 사용되는 TO_CHAR() 라는 함수는 날짜의 형식뿐만 아니라 세번째의 쿼리문처럼 통화의 형태를 나타내는 것도 가능하다. 이와 비슷하게 TO_NUMBER() 라는 함수는 인자로 들어온 문자열을 숫자로 바꾸어주는 기능을 가지고 있다. 물론 안에 포함되는 문자는 숫자의 형태를 가지고 있어야 한다.

문자열 형태도 변환된 날자 데이터는 일반적인 문자열 검색과 동일하게 검색하는 것이 가능하다. 원하는 년도나, 월에 포함된 데이터를 선택한다던지, 일정기간내의 데이터를 검색하는 것도 가능하다.

SELECT employee_id, last_name, to_char(hire_date, 'YYYY/MM/DD') FROM employees
WHERE TO_CHAR(hire_date, 'YYYY/MM/DD') BETWEEN '1997/0101' AND '1997/12/31';

SELECT employee_id, last_name, to_char(hire_date, 'YYYY/MM/DD') FROM employees
WHERE TO_CHAR(hire_date, 'YYYY/MM/DD') LIKE '1997%';

위의 두 쿼리문은 1997년에 속한 데이터들을 출력해줄 것이다.
Posted by seanhigher

댓글을 달아 주세요

최근에 달린 댓글

글 보관함