본문 바로가기

Development Note

1. SQL : 데이터 가져오기.. SELECT

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

가장 처음 나오는 예제.. 표를 보고 테이블을 만들고 데이터를 집어넣은후에 몇가지 SELECT 문장들을 실행해서 값의 결과를 적어가는 문제.. 쉽겠지 하고 아무 생각 없이 그냥 지면상으로만 봐왔는데..

막상 쿼리를 몇가지 돌려보니 의외의 결과값들을 찍어내는 경우가 많았다. 그래서 다시 같은 과오를
범하지 않게끔 ^^ 포스팅을 통해서 기억을 하도록 한다..

create table easy_drinks (
    drink_name          varchar2(20) not null,
    main                varchar2(20) not null,
    amount1             number(4,2) not null,
    second              varchar2(20)not null,
    amount2             number(4,2)not null,
    directions          varchar2(100)
);

사용자 삽입 이미지

<생성한 테이블의 정보>

몇가지 레코드 값들을 넣어 보았다.

사용자 삽입 이미지

예네들을 가지고 쿼리를 몇가지 돌려본다.... SQL 에 관해서는 문외한이지만 어느정도는 예측할 수 있다고 생각했는데 ㅋ 간단한 쿼리문에서도 막히니.. 열심히 공부하고 볼일이다.

1. select * from easy_drinks where main = 'Sprite';
-> main 필드가 Sprite 인 Lime Fizz 라는 음료가 나온다.

2. select * from easy_drinks where main = soda;
-> main 필드가 soda 인 애들이 나올 것 같았지만... 문자열을 의미하는 작은 따옴표를 제외하고 나니.. OTL 알고보니 에러였다. 이건 쿼리문에 대한 이해도라기 보다는 부주의다.

3. select * from easy_drinks where amount2 = 6;
-> amount2 필드값이 6인 애들이 나온다.

4. select * from easy_drinks where second = 'orange juice';
-> second 필드값이 orange juice 인 애들이 나온다.

5. select * from easy_drinks where amount1 < 1.5;
-> amount1 필드값이 1.5 미만인 애들이 나온다.

6. select * from easy_drinks where amount2 < '1';
-> 이거.. 안될거라고 생각하고 그냥 넘어갔던 부분인데.. 헉.. 젠장찌게.. 된다.. 문자열 1을 넣었지만 의도한 대로 1보다 작은 녀석들이 나온다.. 이거 간과하고 넘어갈 부분이 아닌듯..

7. select * from easy_drinks where main > 'soda';
-> 이거도 6번과 마찬가지로 안될거라고 생각했다. 하지만 왠걸 -_ㅠ 된다.. 문자열 값이라도 대소비교를 하는 것이다. 문자열 대소비교는 알파벳 순서대로 하고 있으니 s보다 큰거면 s 이후의 알파벳이 나오게 되겠지.. 그러니 pineapple 이라는 녀석이 나오게 된다.

8. select * from easy_drinks where amount1 = '1.5';
-> 소수점이라 안될줄 알았는데.. 역시 된다.. 하튼 그냥 대충하고 넘어갔으면 큰일날뻔..