데이터 얻기 첫걸음을 내딛다.

 요약.
 1. 테이블에 저장된 모든 데이터를 보고자 합니다. SELECT와 FROM절로 만들어 보라.
-> SELECT 칼럼1, 칼럼2 FROM 테이블

 2. 전체 데이터 중 조건을 만족하는 값만 보고 싶습니다. WHERE 절을 이용해 보라.
-> WHERE 칼럼 조건 값

 3. 일정한 기분에 의해 정렬되어 표현하면 보다 쉽게 결과를 읽어 들일 수 있습니다. ORDER BY 절을 이용해 보라.
-> ORDER BY 칼럼 [ASC|DESC]

 4. 오늘 가장 많은 매출액을 올린 제품이 궁금하세요? GROUP BY가 여러분에게 그 답을 제시해 줄 것임.
-> GROUP BY

 5. GROUP BY 절의 결과로부터 특정 조건을 만족하는 값을 얻고자 한다면 HAVING 절을 사용하라.
-> HAVING 칼럼 연산자 값

====================================================

 SQL은 여러분이 데이터베이스와 이야기할 수 있는 언어입니다. 여러분이 한국어를 통해 사람들과 의사 표현을 주고 받듯이 데이터베이스에 저장된 데이터를 처리하기 위해서도 언어가 필요하지요. 즉 데이터베이스와의 소통을 위해 여러분이 알아두어야 하는 언어가 바로 SQL(Structured Query Language)입니다.

====================================================

 2.1 내 맘대로 데이터 얻기 – SELECT

 1) SELECT를 이용한 데이터 조회
 -> 테이블의 데이터를 조회하는 기본적인 SQL문은 다음과 같다.

 SELECT 칼럼 이름1, 칼럼 이름2
 FROM 테이블 이름;

 간단한 SQL문은 위와 같이 SELECT와 FROM절로 구성되어 있습니다. SELECT절 다음에는 칼럼 이름이 오며, FROM절 다음에는 테이블의 이름이 온다.

 2) 특정 칼럼 선택
 -> 특정 칼럼을 선택하고자 한다면 SELECT절에 아래와 같이 칼럼을 지정해 두면 됩니다. 첫 번째 컬름은 employee_id(사원번호)이며, 두 번째 칼럼은 last_name(사원의 이름)입니다.

SQL> SELECT employee_id, last_name
  2  FROM employees;

 
 이상에서 SELECT문은 SELECT 명령으로 시작해서 ;(세미콜론)으로 종료하며, SELECT절과 FROM절로 구성됨을 알 수 있습니다.
 그러나 질의 가 테이블에 저장된 전체 데이터를 모두 보여준다면 요즘과 같은 대용량의 데이터를 저장하는 테이블에서는 의미 없는 질의가 될 것입니다. 대용량의 데이터가 화면에 출력되는 모습만을 보게 되기 때문입니다.

====================================================

 2.2 WHERE절

 1) WHERE절의 기본
 -> WHERE절은 전체 데이터 중 조건을 만족하는 값만 얻을 수 있도록 합니다. WHERE절은 다음과 같이 이루어 집니다.

 WHERE 칼럼이름 조건 값

 그렇다면, 앞의 사원 테이블에서 이름이 King인 사원의 사원번호와 입사일 정보를 얻어보도록 하죠.

SQL> SELECT employee_id, hire_date
  2  FROM employees
  3  WHERE last_name=’King’;

EMPLOYEE_ID HIRE_DATE
———– ———
    156 30-JAN-96
    100 17-JUN-87

 WHERE절을 보면 last_name 칼럼의 값이 ‘King’과 일치하는 행을 찾습니다. 조건을 만족하는 행들 중에서 사원번호(employee_id)와 입사일(hire_date)칼럼에 대한 값을 반환합니다. 여기서 주의할 점은 테이블에 저장된 문자 데이터에 대해서는 대소문자를 구분한다는 것, 그리고 문자, 날짜 데이터는 ‘ (single quotation)으로 묶어서 표현해 주어야 한다는 것입니다.

SQL> SELECT employee_id, hire_date
  2  FROM employees
  3  WHERE last_name = ‘king’;

no rows selected

 2) AND를 이용한 조건절 작성
-> 전체 사원 중 급여가 $10,000 이상 $20,000 이하인 사원들을 얻어보는 예제입니다. 이 경우 문제를 다시 해석하면, 사원의 급여는 $10,000 이상이면서, $20,000 이하인 조건을 모두 만족해야 합니다. 이 경우 논리 연산자 AND를 사용해서 나타낼 수 있습니다.

SQL> SELECT employee_id, last_name, salary
  2  FROM employees
  3  WHERE salary >= 10000
  4  AND salary <= 20000;

 3) OR를 이용한 조건절 작성
-> 그렇다면, 사원가 직무가 ‘FI_MGR’과 ‘FI_ACCOUNT’인 사원들의 목록을 얻으려면 어떻게 해야 할까요. 즉 사원의 직무가 ‘FI_MGR’과 ‘FI_ACCOUNT’중 하나라도 만족하는 사원들을 모두 포함하는 결과를 예상할 수 있겠지요.

SQL> SELECT employee_id, last_name, salary
  2  FROM employees
  3  WHERE job_id = ‘FI_MGR’
  4  OR job_id = ‘FI_ACCOUNT’;

EMPLOYEE_ID LAST_NAME              SALARY
———– ————————- ———-
    109 Faviet                9000
    110 Chen                8200
    111 Sciarra                7700
    112 Urman                7800
    113 Popp                6900
    108 Greenberg               12000

6 rows selected.

 4) BETWEEN AND를 이용한 조건절 작성
 -> 범위를 지정할 때는 BETWEEN AND 조건을 권장합니다. 보다 간결하게 표현되기 때문입니다. 이는 복잡한 질의문에서 WHERE 조건절을 보다 분명히 나타낼 수 있는 장점이 있습니다. 그러나 $10,000을 초과하거나 $20,000 미만일 때는 > (크거나), < (작은) 와 같이 비교해야겠지요.

SQL> SELECT employee_id, last_name, salary
  2  FROM employees
  3  WHERE salary BETWEEN 10000 AND 20000;

 5) IN을 이용한 조건절 작성
 -> 만약 원하는 직무가 더 추가되는 경우는?

SQL> SELECT employee_id, last_name, job_id
  2  FROM employees
  3  WHERE job_id = ‘FI_MGR’
  4  OR job_id = ‘FI_ACCOUNT’
  5  OR job_id = ‘SA_MGR’
  6  OR job_id = ‘SA_REP’;

 이 경우 IN 조건을 통해 SQL 문장을 간결하게 나타낼 수 있다.

SQL> SELECT employee_id, last_name, job_id
  2  FROM employees
  3  WHERE job_id IN (‘FI_MGR’, ‘FI_ACCOUNT’, ‘SA_MGR’, ‘SA_REP’);

 6) IS NULL/NOT 을 이용한 조건절 작성
 -> 질의문이 조건을 만족하는 결과를 작성해 보았는데 그렇지 않은 경우도 생각해 볼 수 있을 것이다.

SQL> SELECT employee_id, last_name, salary, commission_pct
  2  FROM employees
  3  WHERE commission_pct IS NOT NULL;

 NULL이 할당되지 않은 값이므로 이에 대한 부정으로 NULL 앞에 NOT을 붙여 사용하면 된다. 부정은 이와 같이 조건의 앞에 붙여 사용할 수 있는데, NOT BETWEEN AND나 NOT IN과 같이 사용하며, 수식에서는 ‘!=’ (같지않음)의 의미가 있다.

 7) LIKE를 이용한 조건절 작성
 -> 1997년에 입사한 사원들의 리스트 얻기.

SQL> SELECT employee_id, last_name, hire_date
  2  FROM employees
  3  WHERE hire_date BETWEEN ’01/Feb/97′ AND ’31/Dec/97′;

 이 질의문은 다음과 같이 작성될 수도 있다.

SQL> SELECT employee_id, last_name, hire_date
  2  FROM employees
  3  WHERE hire_date LIKE ‘%97’;

 ‘%97’ 의 의미는 97로 끝나는 모든 값은 조건을 만족함을 나타내며, LIKE 조건과 함께 사용된다. 혹 여러분이 저장된 값의 일부만을 기억하고 있을 때에도 LIKE는 유용하게 사용할 수 있다.

 LIKE 절에서 사용할 수 있는 와일드 카드 및 ESCAPE 옵션
 -> 앞에서 사용한 ‘%’는 0~n 개의 문자열을 대체한다. 이외에도 단 하나의 글자만을 대체하는 ‘_’ 와일드 카드도 있다.
 그러면 %나 _가 포함된 문자열을 검색하고자 할 때는 어떻게 해야 할까. 이때는 ESCAPE 옵션을 사용하여 ESCAPE 문자를 지정한 후 ESCAPE 문자를 이용하여 %나 _를 와일드 카드가 아닌 하나의 문자를 인식하도록 할 수 있다. 다음은 last_name에 ‘Au%’로 시작하는 문자열을 검색하는 예제이다.

 SQL> SELECT employee_id, last_name
  2  FROM employees
  3  WHERE last_name LIKE ‘Au%%’ ESCAPE ”;

 참고로 연도를 이용하여 조건을 만족하는 값을 찾을 때는 정확히 4자리로 표현하는 것이 바람직하다. 앞서 연도 4자리 중 뒤 2자리만 나타낸다면 1990년과 2090년의 구분이 의미가 없어지기 때문이다.

 아래의 질의문은 함수를 이용하여 더욱 명확한 질의문을 작성해 본 예이다.

SQL> SELECT employee_id, last_name, hire_date
  2  FROM employees
  3  WHERE TO_CHAR(hire_date, ‘YYYY’) = ‘1997’;

 8) 연산자 정리
 = : 동일함(같음)을 테스트한다.

 !=, <>, ^= : 동일하지 않음(같지 않음)을 테스트한다.

 >=, >, <=, < : 큰 경우 혹은 크거나 같은 경우의 비교 테스트를 한다. 이와 반대의 경우도 적용된다.

 AND : ‘A AND B’의 경우 두 조건 모두를 만족해야 한다.

 OR : ‘A OR B’의 경우 두 조건 중 하나를 만족하는 경우이다.

 BETWEEN AND : 주어진 범위의 값에 해당하면 그 값을 반환한다.

 IN : 하나 이상의 동일 조건을 만족해야 하는 경우이다.

 LIKE : 조건의 일부와 일치하는 경우에 적용된다.

 IS NULL / IS NOT NULL : 할당되지 않은 값을 만족하는 경우이다. 할당된 값의 경우 NULL 앞에 NOT을 사용한다.

====================================================

 2.3 ORDER BY

 1) ORDER BY ASC
 -> 때로는 데이터를 일정한 기준에 의하여 정렬하여 표현하면 더욱 쉽게 결과를 읽어들일 수 있는데 ORDER BY 절을 이용하면 가능하다.

 ORDER BY 칼럼이름 [ASC/DESC]

 칼럼 이름 뒤 대괄호([ ])는 선택사항이며, 기본은 오름차순 정렬인 ‘ASC’이다. ‘ASC’는 ‘Ascend(올라가다)’의 약자이므로, 작은 값부터 큰 값의 순서로 정렬된 결과를 보여준다. 참고로 ‘DESC’는 ‘Descend(내려가다)’의 약자이다.

SQL> SELECT employee_id, last_name, salary
  2  FROM employees
  3  WHERE salary >= 10000
  4  ORDER BY salary;

 ORDER BY는 WHERE 조건절을 만족하는 결과로부터 특정 칼럼의 값을 기준으로 정렬한 결과를 보내준다. WHERE 조건을 만족하는 결과를 먼저 얻은 후, 그 결과로부터 특정 칼럼(salary)을 기준으로 정렬하여 최종 결과를 보여준다.

 2) ORDER BY DESC

SQL> SELECT employee_id, last_name, hire_date
  2  FROM employees
  3  WHERE hire_date >= ’01/Jan/00′
  4  ORDER BY hire_date DESC;

EMPLOYEE_ID LAST_NAME              HIRE_DATE
———– ————————- ———
    173 Kumar              21-APR-00
    167 Banda              21-APR-00
    166 Ande              24-MAR-00
    128 Markle              08-MAR-00
    165 Lee               23-FEB-00
    136 Philtanker              06-FEB-00
    183 Geoni              03-FEB-00
    149 Zlotkey              29-JAN-00
    164 Marvins              24-JAN-00
    199 Grant              13-JAN-00
    179 Johnson              04-JAN-00

11 rows selected.

 내림차순은 DESC(Descending) 키워드를 명시적으로 ORDER BY 절에서 나타내 주어야 한다.

====================================================

 2.4 GROUP BY

 1) GROUP BY를 이용한 그룹화
 -> SQL에서는 GROUP BY 절과 집합 함수를 이용함으로써 데이터를 활용할 수 있다. GROUP BY 절은 일반적으로 질의문으로부터 얻은 결과에 대해 GROUP BY 절에 명시한 칼럼의 값이 같을 때 그룹을 만들고, 이 그룹으로부터 SQL 표준 함수인 집합 함수를 통해 다양한 결과를 얻는다.

SQL> SELECT AVG(salary)
  2  FROM employees;

AVG(SALARY)
———–
 6461.68224

 대략 $6,462 정도를 얻을 수 있다. AVG() 함수는 하나 이상의 값들로부터 평균값을 반환한다. 그렇다면 $10,000 이상의 연봉자들의 평균은 얼마일까

SQL> SELECT AVG(salary)
  2  FROM employees
  3  WHERE salary >= 10000;

AVG(SALARY)
———–
 12631.5789

 이 경우는 WHERE절을 만족하는 행의 결과를 하나의 그룹으로 보고 평균을 얻은 경우이다.

 그렇다면, 부서별 급여의 평균을 얻어보자. 부서별 평균은 각각의 부서마다 평균을 얻어야 하므로 같은 부서 단위로 그룹을 묶어 평균을 얻는다.

SQL> SELECT department_id, AVG(salary)
  2  FROM employees
  3  GROUP BY department_id
  4  ORDER BY department_id;

DEPARTMENT_ID AVG(SALARY)
————- ———–
       10         4400
       20         9500
       30         4150
       40         6500
       50  3475.55556
       60         5760
       70        10000
       80  8955.88235
       90  19333.3333
      100         8600
      110        10150

DEPARTMENT_ID AVG(SALARY)
————- ———–
             7000

12 rows selected.

 결과를 보면 부서 아이디가 오름차순 정렬되어 부서마다 해당 부서에 속한 사원의 평균 급여를 얻어내고 있다. 참고로 NULL 값(할당되지 않은 값)은 오름차순 정렬할 때 위와 같이 가장 나중에 나타난다.

 다음의 조건을 만족하는 질의문을 작성해 보라.
 요구사항 – 직무별로 최대 급여와 최소 급여를 살펴 보고자 한다. 단 직무는 영업 부서로 제한한다.

 먼저 사원 테이블에서 고려해야 할 칼럼이 무엇인지 살펴보아야 한다. 그리고 영업 부서는 어떻게 표현되고 있는지 살펴보아야 한다. 영업 부서는 다시 영업 대표(SA_REP)와  이들의 관리자인 영업 관리자(SA_MIN)가 있다.

 그럼 우선 대상이 되는 질의문을 작성한다.

SQL> SELECT job_id, salary
  2  FROM employees;

 이 결로부터 먼저 부서를 제한한다.

SQL> SELECT job_id, salary
  2  FROM employees
  3  WHERE job_id IN(‘SA_REP’, ‘SA_MAN’);

 마지막으로 위 결로부터 급여의 최대값/최소값을 얻는다. 하나 이상의 행으로부터 최대값/최소값을 반환하는 MAX() / MIN() 함수를 사용한다.

SQL> SELECT job_id, MAX(salary), MIN(salary)
  2  FROM employees
  3  WHERE job_id IN(‘SA_REP’, ‘SA_MAN’)
  4  GROUP BY job_id;

JOB_ID       MAX(SALARY) MIN(SALARY)
———- ———– ———–
SA_MAN         14000         10500
SA_REP         11500          6100

 2) GROUP BY 응용
 -> 연도별 입자들의 평균은 얼마인지 나타내 보라.

SQL> SELECT hire_date, salary
  2  FROM employees;

 입사일(hire_date)을 연도로 변환한 후 GROUP BY를 이용하여 그룹화한다. TO_CHAR() 함수를 사용하면 날짜 형식의 데이터, 예를 들어 ’99/06/21’을 연도 4자리 데이터 ‘1999’로 변환할 수 있다.

SQL> SELECT hire_date, salary
  2  FROM employees
  3  GROUP BY TO_CHAR(hire_date, ‘YYYY’);
SELECT hire_date, salary
       *
ERROR at line 1:
ORA-00979: not a GROUP BY expression

 위의 오류를 보면 SELECT 절의 hire_date의 칼럼이 GROUP BY의 표현이 아니라는 오류를 나타내고 있다. 이와 같은 오류는 GROUP BY 절을 사용할 때 SELECT절에 사용될 수 있는 칼럼이 제한적임을 말해준다. 즉, GROUP BY절에서 사용한 칼럼과 그룹 함수(예를 들면, 평균을 구하는 AVG() 함수나 최대 값을 MAX() 함수 등)만이 사용될 수 있다.
 따라서, GROUP BY 식에서 사용한 칼럼이 TO_CHAR() 함수에 의해 값이 변형되었다면 변형된 형태 그대로 SELECT절에서 사용되어야 한다.

 SQL> SELECT TO_CHAR(hire_date, ‘YYYY’), AVG(salary)
  2  FROM employees
  3  GROUP BY TO_CHAR(hire_date, ‘YYYY’);

TO_C AVG(SALARY)
—- ———–
2000  5381.81818
1987       14200
1997  6460.71429
1994  9828.57143
1991        6000
1995        4525
1990        9000
1989       17000
1999  4938.88889
1996        8600
1993       17000

TO_C AVG(SALARY)
—- ———–
1998  4873.91304

12 rows selected.

 2.5 HAVING

 1) HAVING절의 이용
 -> 만약 처음 GROUP BY 수행 결과로부터 부서별 평균 급여가 $10,000 이상인 부서만을 얻고자 한다면 어떻게 해야 할까? GROUP BY 절의 결과로부터 특정 조건을 만족하는 값을 얻고자 한다면 HAVING절을 사용할 수 있다.

SQL> SELECT department_id, AVG(salary)
  2  FROM employees
  3  GROUP BY department_id
  4  HAVING AVG(salary) >= 10000;

DEPARTMENT_ID AVG(SALARY)
————- ———–
       70        10000
       90  19333.3333
      110        10150

 HAVING절은 GROUP BY 절의 수행 결과를 대상으로 다시 조건을 만족하는 결과를 얻어온다.

 2) 비효율적인 HAVING절
 -> 아래 SQL문은 HAVING절이 비효율적으로 사용된 경우이다. 요구 조건은 부서별 최대 급여를 얻는 것이다.

SQL> SELECT department_id, MAX(salary)
  2  FROM employees
  3  GROUP BY department_id
  4  HAVING department_id IN (10, 20);

DEPARTMENT_ID MAX(SALARY)
————- ———–
       20        13000
       10         4400

 어떤 구문이 개선되어야 하나? SQL문은 원하는 결과를 얻기 위해 다양하게 작성될 수 있다. 따라서 하나의 SQL문이 답이 될 수 없다. SQL문에서는 무엇이 최선의 질의문이 될 수 있느냐가 데이터베이스를 이용하여 개발하는 여러분에게 가장 중요한 핵심이라 할 수 있다.

 위의 실수는 어디에서 비롯되었는지 위 질의문의 수행 과정을 다시 한 번 생각해 보라. 두 가지 접근 방법을 생각해 볼 수 있다.

 먼저 출발은 같은 질의문으로부터 시작한다.

SQL> SELECT department_id, salary
  2  FROM employees;

 그리고 앞서 수행한 방법은 이 조건을 만족하는 107행을 대상으로 GROUP BY 절을 수행하여 아래와 같은 결과를 얻었다.
 
SQL> SELECT department_id, MAX(salary)
  2  FROM employees
  3  GROUP BY department_id;

DEPARTMENT_ID MAX(SALARY)
————- ———–
      100        12000
       30        11000
             7000
       20        13000
       70        10000
       90        24000
      110        12000
       50         8200
       40         6500
       80        14000
       10         4400

 이 결과로부터 HAVING절에서 원하는 부서 아이디에 해당하는 결과를 얻고 있다.

 또 다른 방법은 먼저 대상이 되는 부서 아이디를 WHERE절에서 제한하는 것이다.

SQL> SELECT department_id, salary
  2  FROM employees
  3  WHERE department_id IN (10, 20);

DEPARTMENT_ID      SALARY
————- ———-
       10        4400
       20       13000
       20        6000

 앞의 방법은 107행에 대해 동일 부서 아이디에 대해 급여 칼럼의 값을 하나씩 비교해 가면서 최대 값을 찾는 과정인데 반해 여기서는 3행에 대해서만 수행하고 있다. 어느 것이 더 효율적인 접근 방법이겠는가?

필리핀 자전거 여행기 후기…

이번
여행을 하면서 제일 힘들었던 점은 이별이었다
.
자전거를
끌고 다니느라 겪은 몸고생은 아무것도 아니었다
.
정이
들었다가도 이내 바로 이별하고
,

이별하는 것이 나에게는 가장 큰 아쉬움이며 큰
슬픔이었다
.
만나서
반가운 사람들도 이내 헤어져야 함을 느낄때 그것만큼
슬픈일이 있을까
..

  누군가를
만나고 헤어지고를 반복하는 것이 바로 여행이다
.
경치나
문화도 중요하지만 제일 중요한 것은 바로 사람이다
.
이번
보름간의 필리핀 여행 기행문 중에서 이렇다 할 관광명소
같은 것은 그다지 많이 나오지 않는다
.
보라카이도
목적지가 아니라 가다가 들린 셈이다
.
아니,
사실은
보라카이는 그냥 지나쳐 가려고 했었다
.
결국
발은 디디게 됐지만 겨우 하루만에 도망치듯 빠져
나왔다
.
그곳에는
우리가 평소에 만나왔던 필리피노들이 없었다
.
그래서
나는 그곳을 이번 여행의 최악으로 꼽는다
.

  언제고
다시금 필리핀으로 여행을 갈 것이다
.
그때쯤이면
지금보다 조금은 성숙해 있을 것이다
.
한층
성숙했던 모습으로 내가 만났던 이들을 다시한번 만나서
변화된 나의 모습을 보여주고 싶다
.

  그때
당신과의 인연이 나를 이렇게 변화시켰노라고 말하고
싶다
.

 그리고… 내 주위에 있는 여러분들에게도 이런 여행 하나쯤은 추천해 주고 싶다.


어때요, 부럽지 않았나요?

필리핀 자전거 여행기 1/21 (수) (여행 십육일째)

 필리핀에서의
마지막 날이다.
아침일찍
일어나 공항으로 갈 준비를 한다.
자전거,
옷가지,
등등등..준비는
완벽하다.
호텔을
나와서 택시를 탄다.

 택시기사가
공항까지 350페소를
부른다.
조용히
미터기로 가자고 한다.
이번엔
300페소를
부른다.
다시
미터기로 가자고 한다.
미터기로
공항에 도착하니 150
페소가
나온다.

택시에 자전거 싣기.JPG

 필리핀 여행의 철칙1. 택시를 탈때는 반드시 미터기로 갈것.

공항으로 가능다리.JPG

 공항으로 가는 다리

  공항에서
늦은 아침을 먹는데 가격이 장난이 아니다.
점점
더 한국의 물가가 느껴지는 것 같다. 맛은 꽝이었다.

공항 식당.JPG

 필리핀 세부 공항 식당… 절대 비추.

소림사!.JPG

 소림사 스님.ㅎㅎㅎ

 가방
무게를 재는 곳에서 문제가 발생했다.
하나하나
무게를 재는 것.
한국에서는
대충 하나만 재고 넘어갔었는데 하나하나 재는 것이
아무래도 오버차지가 될 것 같다.
아니나
다를까..나의
자전거 가방이 무게가 30Kg
넘었다.
패널티를
내겠구나 하는 생각에 약간 아찔했는데 다행이다.
그냥
넘어가 주었다.

제발...JPG

 제발..!

멋진하늘.JPG

 공항에서… 화창한 필리핀 날씨.. 가기전에 이런 아름다운 모습을 볼 수 있어 다행이었다.

또오세요 필리핀에.JPG

 또오세요! 필리핀에!

 한국으로
돌아오는 비행기안에서 필리핀을 하늘에서 바라보는데
정말 아름다웠다.
그동안
우리가 자전거를 타고 다닌 도로와 섬들이 너무나 작게
보인다.
푸른
에메랄드 빛 바다 도로로 다닐때는 보지 못했던 것들인데
하늘에서 보니 한눈에 들어온다.
약간
손해보는 느낌이다.

바다에 몸을 한번도 담구지 못했던 것.
우기
끝 부분에 필리핀에 와서 손해보는게 많다.
다음에
올때는 날짜를 적절하게 맞춰서 와야 겠다.

이런구름 본적 있나요.JPG

 이런 구름 본적 있나요?

비행기안.JPG

 비행기 안에서..ㅋㅋㅋ

푸른바다.JPG

 필리핀 푸른바다.

오른쪽 맥주에 주목.JPG

 귀국하는 비행기에서 먹은 기내식. 오른쪽 상단 맥주에 주목! 🙂

게임기능 됩니다.JPG

 게임 기능 됩니다.

게임.JPG

 이런게임

홍콩 면세점.JPG

 여기는 홍콩 면세점

 어느덧
한국에 도착하니 익숙한 말소리와 글씨들이 보인다.
사실
비행기안에서부터 한글과 한국말은 들려왔다.
하지만
한국땅에서 들으니 느낌이 남다르다.

한국으로...JPG

 이제는 한국으로….

 공항에서
집으로 향하는 리무진 버스안에서 지난 보름간의 일들을
떠올려본다.
무슨
일이 있었는지 무슨 말을 했었는지 하나하나 기억해본다.
평생
가지고 갈 좋은 추억들이다.
잊고
싶지않다.

드디어 한국.JPG

 여기는 한국!

  언제쯤
다시 해외 여행을 떠날 수 있을까.
다시금
떠날 수 있는 그날을 생각하며 이 여행의 마침표를
찍는다.

안녕.JPG

 안녕..!

필리핀 자전거 여행기 1/20 (화) (여행 십오일째)

 한국으로
돌아가기 하루 전이다.
아침부터
짐을 꾸려 내일 한국으로 돌아갈 채비를 한다.
근처
인터넷 카페에 가서 비행기 예약을 확인하고 여권과
다른 증명서들을 잃어버리지 않게 챙겨둔다.

740페소.JPG

 하룻밤에 790페소.

 자전거 조립중..

 기다리던
3시가
되었다.
약속한
장소에 나가니 아직 안나와있다.
설마하는
마음에 호텔로 찾아가니 호텔입구에서 마주친다.
다행이다.

  인원은
우리를 포함해 모두 11명.

많은 인원이다.
다같이
어디를 갈까…궁리끝에
세부 산토니뇨 교회를 가기로 한다.

 산토니뇨
교회는 1565년에
산토니뇨(어린예수)상이
발견된 곳에 세워진 교회이다.
500여년의
역사를 자랑하는 교회이며 인구의 대부분이 카톨릭인
필리핀에서 아주 중요시되는 교회이다.
세부에
대해 아는게 없어서 그냥 가이드북에 나와있는 장소를
이야기했는데 의외로 가까운 곳에 있었다.

웅장한 내부.JPG

 웅장한 내부

조용하다.JPG

 예배를 드리는지 조용하다…

  11명이
한꺼번에 지프니에 올라타니 무슨 전세버스같은
느낌이다.
교회에
도착하니 처음보는 교회 양식에 깜짝 놀란다.
흔히
보는 우리나라의 교회 모습이 아니라 Tv나
책으로만 보던 유럽의 교회같다.
정말로
이국적이다.(당연하다…)

단체샷.JPG

 다같이 모여 샷!

다같이 모여서.JPG

 여기서도 샷!

바이킹 화이팅.JPG

 바이킹 화이팅!

동전던지기.JPG

 분수에 동전 던지기.ㅎㅎㅎ 태운이 긴장했다.

촛불하나에 소원하나.JPG

 촛불 하나에 소원하나.

 그렇게
한창동안을 교회 관광을 하고 밖으로 나와 할로할로(필리핀식
팥빙수)를
먹으며 이야기를 나누는데 한국에 대한 관심이 엄청나다.
쉴새없는
질문에 하나하나 대답을 해주기 바쁘다.
대부분의
이야기가 한국에서의 생활과 연예인들에 관한 질문이다.
공대생인
나로서는 대답해주기 힘든 부분이기도 했다.

할로할로를 먹으면서.JPG

 할로할로는 우리네 팥빙수와 같다.

 저녁은
근사한 뷔페집에서 먹기로 했는데 의외로 값이 싸다.
일인당
100페소
정도.
우리에게는
부담없는 가격이지만 미안한 표정이다.
괜찮다며
적당한 유머를 해주니 그제서야 웃는다.
꾸밈없는
모습이 참 순수하다.

뷔페집 ㄲ.JPG

 뷔페집을 향하여!!

오붓하게.JPG

 둘이서 오붓하게

  저녁을
먹고 다가오는 작별의 시간.
내일
또 볼수 있냐는 말에 내일은 한국으로 돌아가는 날이라고
하니 아쉬워한다.
우리도
세부에서 좋은 추억을 만들어준 그네들에게 뭔가 많이
해주고 싶었는데 정말 아쉽다.
조금만
더 이곳에 있고 싶은데,

귀국 날짜를 이리 빨리 잡았을까..하는
뒤늦은 후회감이 몰려온다.
만남과
이별…
이런게
바로 여행이라는 것을 알고는 있지만 언제나 그렇듯
이별만큼은 쉽게 익숙해지지 않는다. 아니, 절대 익숙해질 수 없을 것 같다. 절대 그러고 싶지 않다.

헤어지기전.JPG

 헤어지기 직전… 이별이란.. (여담이지만 그때의 인연이 지금도 이어져 계속 연락을 주고받는 사이가 되었다. ^^)

 집으로
돌아오는 길에 바베큐와 술을 사서 필리핀에서의 마지막
만찬을 즐긴다.
언제다시
먹을 수 있을까하는 생각에 많이도 먹는다.

태운아 꼬치 안먹니.JPG

 태운아 꼬치 안먹니?? 우리가 다 먹는다??

최후의만찬.JPG

 저걸 두명이서 다 먹었다. 한 6000원 정도.

필리핀 자전거 여행기 1/19 (월) (여행 십사일째)

호텔을
옮기기 위해 또다시 짐을 꾸린다.
2 주일정도
이런일을 반복하니 이제는 제법 능숙하다.
어제
찍어둔 호텔로 서둘러 향한다. 정말
넓은 방이다.
깨끗한것이
마음에 든다.

 그런데
뭔가가 후다닥 움직이는 것이 보인다.
도마뱀이다.
벽과
천장 못올라

가는
곳이 없다.
잡고
보니 작고 귀여운 것이 우리나라 도마뱀과 판박이다.
앙증맞은
눈은 최고로 귀엽다.

도마뱀.JPG

 잡느라 고생했다.ㅋㅋ

  도마뱀을
놓아주고 어제 약속한 3시까지
시간이 남아 자전거를 분해하기로 한다.
호텔
매니저가 신기한 눈으로 바라본다.
대충
한국으로 귀국할 준비가 끝났다.
이제
제대로 된 세부 관광을 해보기로 한다.

간이 노래방.JPG

필리핀식 간이 노래방

  호텔의
위치는 다들 알고 있으므로 각각 떨어져서 세부 관광을
하기로 한다.
관광이라고
해봤자 근처를 걸어서 돌아다니는 것 뿐이다.
다같이
어제본 대학생들을 만나 보기로 했으나 이상하게 4시가
넘어서도 나타나지 않는다.
다들
실망을 하고 돌아간다.
나만
좀 더 지켜 보기로 했다.
나도
기다리다 지쳐서 학생들이 묶는 호텔 매니저에게
도착하면 내가 왔었다고 전해달라고 부탁을하고 근처를
좀 더 돌아다니기로 했다.

이것만 있으면 당신도 제다이.JPG

 이것만 있으면 당신도 제다이!

  6시가
넘었을 무렵 다시금 그 호텔로 찾아가니 학생들이
돌아와 있었다.
미안하다면서
오늘 세미나가 늦게 끝나서 방금전에 돌아왔단다.
사실
어제 확언을 한것도 아니었다.
그냥
지나가는 말로 내일 3시부터
6시까지
자유시간이니 그때 볼 수 있었으면 좋겠다라고 한 것
뿐이었는데 나 혼자만 너무 들뜬것이다.
그네들도
진짜로 올 줄은 몰랐었던 모양이다.
얼굴에
약간 놀란 기색이 보인다.

  실습에서
돌아와서 옷 을 갈아 입을 시간도 없이 이야기를 나누는데
교수님의 호출이 왔다.
아쉬워하며
내일 다시 만나자고 약속을 하고 헤어졌다.

 우리가
묶고 있는 호텔 바로앞에서는 매일밤 야시장이 열리는
듯 하다.
7시
무렵부터 도로를 막고 시장이 들어설 준비를 한다.
도로
곳곳마다 불을 밝히며 상점이 들어서고 먹거리를 판다.
구수한
바베큐 냄새가 진동을 한다.

곳 필리핀에서는 바비큐 요리가 일품이다.
값도
싸고 우리 입맛에 맞는 것이 냄새도 좋다.

사람당 배불리 먹어도 우리돈 3000원이
넘지 않는다.
하지만
술은 팔지 않는다.
노점상에서의
맥주 판매는 금지되어 있는 모양이다.

 처음에는
그냥 넘어갔는데 언젠가 밤 늦게 맥주가 필요한 적이
있었다.
편의점은
보이지 않고,
가게는
문을 닫은 늦은 시각이었는데 노점상에게 가서 은근슬쩍
물어보니 조심스레 맥주를 건네주었다.
역시
이곳도 사람사는 곳이다.