본문 바로가기

Oracle/Oracle SQL

Database SQL_Select_연산자&조건부

Step 1. Select! 

- Sub : 연산자&조건부

 

이번에는 Select의 연산자와 조건부에 대해서 말을 할겁니다. 책읽다보니 SQL 포스팅이 늦어버렸네요..ㅎ

기본적으로 연산자라고 하면 어떤게 있을까요? 연산? 하면 딱 떠오르는 말이있죠 ㅎ 저만그런가요??

초등학교때부터 지겹도록 들어온 말. 사칙연산. 바로 덧셈, 뺄셈, 곱셈, 나눗셈 같은 산술연산이 있죠 ㅎ

그리고 누가 더 크고 작은지에 대한 비교연산, SQL의 합성 연산등이 있습니다.

정리하면 SQL Select에서는 합성연산, 산술연산, 비교연산 등이 있다는 겁니다.

 

그럼 연산들을 어떻게 쓸 수 있을까요? 그냥 SELECT 절에서 써도 무방합니다.

하지만 연산이란 대상이 있을 경우에 더 빛을 발하지 않을까요?ㅎ 특히 비교연산은 비교 대상이 있어야 겠지요 ㅎ

그래서 앞으로 우리가 쓸 것중 하나인 WHERE가 나옵니다. 바로 조건부라고 하죠 ㅎ

 

이전 포스트에서 Select에 대한 문법을 알려드렸습니다. 앞으로 group by나 having, order by 들이 나올 것이지만 하나하나 써야겠죠 ㅎ

우선 WHERE 까지 포함한 SELECT의 문법은 아래와 같습니다.

 

SELECT * | {[DISTINCT] column | expression [alias], ...}

FROM tables

[WHERE condition(s)];
 
어렵지 않죠?ㅎ 그냥 WHERE만 추가가 됐을 뿐입니다. where에는 조건만 들어가면 되는 거구요 ㅎ
생략도 가능합니다. 여태 where절 안써도 select 문이 잘됐잖아요 ㅎㅎ
SELECT문은 여기에 계속 플러스 플러스를 시킬거기 때문에 잘 알아두어야 합니다.
 
이제 실제로 연산이 어떻게 이루어지는지 또 어떻게 쓰이는 지에 대해서 보도록 하겠습니다.
첫번째로는 연결연산자를 설명을 드리겠습니다.
그냥 딱 연결이라는 말을 들었을때 어떻게 생각이 되나요? 연결은 말그대로 이쪽이랑 저쪽을 만나게 해주는것.
여러분들이 주선자가 되어서 남자에게 여자를 소개시켜주는것.. 이게 바로 연결이잖아효 ㅎㅎ
그럼 SQL에서는 연결을 어떻게 시켜주느냐~ㅎ || 표시로 연결을 시켜줍니다. \원표시위에 짝대기 같은거 두번을 써주는 거에요 ㅎ
그럼 뭐랑 뭐를 연결시켜주지? 컬럼과 컬럼을 연결시켜 주시는 겁니다 ㅎ 말로 설명하지 말고 보여달라구요? 보여드릴께요 ㅎ
우선 하나를 먼저 생각해보죠. 예를 들어 모르는사람이 여러분의 이름을 부릅니다. 홍길동! 하구요. 그럼 기분이 어떨까죠?
아.... 아무렇지도 않으시구나.. 전 좀 기분나쁜데 ㅎ 홍길동님~ 하면 뭔가 기분이 좋지 않을까요?ㅎ
하물며 바보라는 기계가 떡하니 모니터에 홍길동 이라고만 나오면 좀 그렇져?ㅎ 이런것들을 연결연산자로 해결할 수 있습니다.
 

 

아.. 약간씩 높이가 안맞네요..ㅎ 그래도 잘봐주세요 ㅎ

지금 조금씩 다른 SQL문들 썼습니다. 잘 보이시나요?ㅎ
1번 SELECT name FROM student;
2번 SELECT name||'님' FROM student;
3번 SELECT name||'님' "이름" FROM student;
이렇게 총 세개의 SQL을 썼습니다. 각각의 차이는 눈에 보이시죠?ㅎ
1번은 그냥 student 테이블의 name 컬럼을 불러온 것이고
2번은 student 테이블의 name을 불러오는데 연결연산자(||)를 써서 님을 붙였습니다. 이때 님에 ''홑따옴표가 붙은거 보이시죠?ㅎ
연결연산자를 쓸경우에는 이렇게 홑따옴표로 처음과 끝을 정해주셔야 합니다.
3번은 2번과 비슷하지만 마지막에 별칭을 쌍따옴표로 이름이라고 해서 아래에 출력되는 컬럼값이 NAME||'님' 이라고 되는것이 아니라
이쁘게 이쁘게 이름이라고 컬럼이 표시가 됩니다.

이것은 문자와 컬럼의 조합이었는데. 이번에는 컬럼과 컬럼을 한번 붙여볼까요?ㅎ
보통 직급이 있으신 분들은 직급을 뒤에 붙여서 부르기도 하죠?ㅎ 그래서 이렇게 해보겠습니다.

 

이번 그림을 보면 알수 있듯이 컬럼과 컬럼을 연결할 경우에는 홑따옴표가 붙지 않는다는것. 별칭을 쓰지 않았기 때문에 컬럼명이 NAME||POSITION으로 나왔다는 것을 알 수 있습니다. 이쁘게 하려면 별칭 써야겠죠 ㅎ 쌍따옴표로 ㅎ
 
연산연산자는 간단히 끝을 내고 이제 산술연산으로 들어가 보겠슴돠~ㅎ
산술연산은 간단히 사칙연산입니다. 그럼 사칙연산은 어느부분에?ㅎ 아까 말했다 싶이 SELECT절에서 쓰면됩니다 ㅎ
플러스! 먼저 해볼까요 ㅎ 한달중 가장 기분좋은 날이 언제일까요?ㅎ 월급날이겠죠?ㅎ 월급이 오른다면? 얼마나 좋겠습니까..ㅎ
월급좀 오르라고 SQL에 한번 시켜볼께요 ㅎㅎ 쇼핑도 하고 꽁돈도 생기게끔 ㅎㅎ

 

요로코롬 SAL+100하면!! 100이라는 숫자가 올랐습니다! 단위는 여러분들 상상에..ㅎㅎㅎ.. 시급일지 일당일지는 몰라요 ㅎ
SELECT 절에서의 +, -, *, / 모두다 가능하고 사칙연산에서의 우선순위가 있는 괄호( )도 가능합니다 ㅎ 알아서 각자 해보긔 ㅎ
마이너스는.. 나이줄이는 거에서 하시기 바랍니다 ㅎ 아무리 연습용 데이터여도.. 월급 깍이는건 기분이 나쁘잖아요 ㅎ 나이줄이면 좋고 ㅎ
 
간단히 산술연산도 끝냈네요 ㅎ 제가 너무 대충하나요??ㅎㅎ 아니에요.. 그렇지 않습니다..
이번에는 조건부인 WHERE를 추가해서 써보도록 하겠습니다. WHERE 쓰는건 비교연산자로 EQUAL(=)를 쓰는 게 가장 일반적이죠 ㅎ

 

이번에 쓴 SQL은 SELECT ename, deptno FROM emp WHERE deptno=20; 입니다.
영어해석하듯이 해볼까요?ㅎ emp 테이블에 deptno이 20인 데이터의 ename과 deptno을 출력하시오. 라고 해석하면쉽겠죠 ㅎ
데이터가 있는 테이블인 emp에서 deptno이 조건이기 때문에 deptno이 20인 데이터를 찾아서 select에 적힌 컬럼 ename과 deptno을 출력
간단하죠?ㅎ 영어해석하듯이 이렇게 조건에 따라 해석하면 편합니다 ㅎ 저만의 방법인지.. 다른사람들도 이렇게 하는지는 모르겠어요 ㅎ
 
이번에는 equal이 아닌 부등호(><)를 쓰는 것을 보여드리겠습니다. 그냥 = 이거 대신에 > < (웃는거아님..) 이런거 쓰면 되는거죠 ㅎ
단 비교대상을 잘 살펴봐야겠죠?ㅎ 단어를 부등호로 비교하게되면..?? 어떤결과가 나올까요?ㅎ 안나올거같죠? 나와요.. 신기신기..

 

이렇게 나옵니다.. 저도 테스트해보고 오.. 한 경우에요 ㅎ 지금 emp 테이블의 내용이 모두 다 대문자 이기 때문에 조건도 대문자로 SI 로!
소문자로 si 하신다면 내용은 나오지 않습니다. 왜냐구요? ''이 홑따옴표의 내용은 대소문자를 구분하며 식별하는데 쓰이기 때문입니다.
이렇게 문자도 알파벳에 따라 혹은 우리나라의 가나다라 순에 따라 값이 출력이 되듯이 숫자들 또한 부등호에 따라 출력이 됩니다.
아까 부등호 쓰는 것을 잘 하라고 했는데 그건 월급비교나 값의 비교를 하기에 적합 한 것들을 비교하는데 쓰는게 좀더 효율적이라는 겁니다. 또한 날짜도 비교가 가능한데요 이 경우에도 홑따옴표를 써주셔야 합니다. 날짜는 숫자로 보지 않고 date라는 날짜형으로 보니까요 ㅎ
 
기타적인 연산자들을 한번 표로 정리해서 보도록 하겠습니다. c언어나 자바와 비슷한 부분이 있죠 ㅎ 아무래도 언어니까요 ㅎ

 연산자의 종류

설 명 

 =

 같은 조건을 검색

 !=, <>

 같지 않은 조건을 검색

 >

 큰 조건을 검색

 >=

 크거나 같은 조건을 검색

 <

 작은 조건을 검색

 <=

 작거나 같은 조건을 검색

 BETWEEN A AND B

 A와 B사이에 있는 범위 값 모두 검색

 IN(a, b, c)

 A 이거나 B 이거나 C인 조건 검색

 Like

 특정 패턴을 가지고 있는 조건을 검색

 Is Null / Is Not Null

 Null 값을 검색/Null이 아닌 값 검색

 A AND B

 A조건과 B조건 모두 만족 하는 값 검색

 A OR B

 A조건이나 B조건 둘중 하나라도 만족하는 값 검색

 NOT A

 A가 아닌 모든 값 검색

 

이제 위의 연산자들을 써서 한번 해보도록 하겠습니다 ㅎ 차례차례 하나하나~ㅎ

먼저 같지 않은 조건을 검색하는 !=을 먼저 써보도록 하겠습니다. <>와 같은 의미이므로 <>는 안쓸께요 ㅎ 여러분은 해보세요 ㅎ

 

 

 

이 경우를 살펴보죠 ㅎ emp 테이블에서 deptno 전체값을 살펴 보겠습니다. 숫자는 10, 20, 30 으로 골고루 분포가 되어있고 14개의 행이 있습니다. 하지만 조건으로 WHERE deptno != 10을 해보죠 ㅎ

 

 

그랬더니! 시상에나.. 10이 사라지고 20과 30만 존재하는 결과값이 나왔습니다. 총 11행이 되었구요. 조건으로 쓴 WHERE deptno != 10이 제대로 들어가서 10이 제외 된 것을 알 수 있습니다.

 

이번엔 부등호인 >=을 써보도록 하겠습니다. 초과(>), 이상(>=), 미만(<), 이하(<=)는 모두 다 같은 방식이므로 설명은 하나로 퉁~ㅎ

 

 

 

자신이 ADAMS라고 합시다 ㅎ 자신의 월급이 1100인데 월급이 1100 이상인 사람이 궁금해서 이렇게 검색을 할 수도 있는 겁니다 ㅎ

부러우면 지는거지만... 월급 부러운건 어쩔수 없는거니까요 ㅠㅠ...

 

다음에 설명드릴 것은 Between A and B 로 사이에 있는 값 조회입니다. 영어문법이랑 똑같죠~ㅎ 얘도 영어라 이건가봐요..ㅎ

 

 

 요로코롬 나타나는 겁니다 ㅎ 지금 조건부 WHERE에 BETWEEN 1000 AND 2000 쓴거 보이시죠?ㅎ sal이 1000에서 2000 사이인 값을 조회하라는 겁니다. 정확히 말하면 1000이상 2000이하인 값이죠 ㅎ 그러므로 1999까지 조회하고 싶으면 2000을 쓰면 안되고 1999까지!
 
위 표에서 Between 다음에 뭐죠?ㅎ 스크롤 올리시기 귀찮다구요...? IN(a,b,c)를 설명드릴거에요
a이거나 b이거나 c인 값을 출력하는 연산이 되겠습니다! 결코 어렵지 않아요 ㅎ or랑 비슷한거라고 생각하시면 됩니다 ㅎ

 

 
이렇게 되는거죵ㅎㅎ 이전에 DEPTNO이 10, 20, 30 총 이렇게 세개의 부서번호가 있었습니다. 하지만 IN(10, 20)을 선언하므로써 두개만 나오는거죠 ㅎㅎ 어렵지않습니돠~ㅎ
 
이거랑 비슷하게 OR을 바로 해보겠습니다 ㅎ 똑같은 결과물을 보게 되실거에요 ㅎ

 

결과물이 어떻죠?ㅎ 똑같습니다. 하지만 WHERE절을 봤을때 어떤게 더 간단한가요? IN이 더간단하죠 ㅎ EQUAL을 쓰는 OR문은 IN이 더 쉽고 간단하게 먹힌다는것. 하지만 부등호나 뒤로 쭉쭉쭉 연관되어서 나갈경우에는 IN보단 OR가 더 실용적이고 효율적으로 쓰이겠죠 ㅎ
 
그럼 AND는 어떻게 할까요? AND는 두 조건다 만족을 해야하는 거잖아요? AND를 할땐 똑같은 칼럼내의 조건을 쓰면 안되겠죠?ㅎ
다른컬럼의 값을 써서 해야 제대로된 값을 뽑을 수가 있을겁니다. 아닌것도 있을 수 있지만요 ㅎ

 

저는 예를 이렇게 들어봤습니다. 직업이 애널리스트이고 부서번호가 20인 사람들을 찾아보았더니 이렇게 나왔네요 ㅎ
만약 OR를 썼다면 부서번호가 20인사람 모두와 직업이 애널리스트인 사람들 모두가 다 나왔을 겁니다 ㅎ
 
IN을 설명하고 연관되어서 OR를 설명하고 AND를 설명했더니 위에 표랑 좀 순서가 바꼈네요.. 위에 수정하기 귀찮으니까 그대로 갈께요 ㅎ
이번엔 Like를 설명 드릴겁니다. 영어에서의 Like는 무슨 뜻으로 쓰이나요? 일반적으로 ~와 같다. 라는 뜻으로 쓰입니다.
SQL에서도 동일하게 ~와 같다라는 뜻으로 쓰입니다. 하지만 특수한 경우로 쓰이죠. 부등호와 같은 것이 아니라는 겁니다 ㅎ
예를들어서 홍길동이라는 이름이 학생이름이라는 컬럼내에 있습니다. 하지만 우리는 홍이라는 성밖에 모른다면? 어떻게 검색하죠?
그렇기 때문에 SQL에서는 이것을 실현하기 위해 Like라는 연산자가 있습니다.
Like는 쓰는 목적에 따라서 조금씩 다르긴 한데요.
기본적으로 쓰이는 문법은 WHERE <컬럼명> Like <문자열패턴>입니다. 생각해야할것은 문자열 패턴이기 때문에 ''홑따옴표를 붙여야합니다. 또한 문자열 패턴에는 _(언더바)와 %(퍼센트)가 들어가는데요. 각각의 의미는 이렇습니다.
_(언더바) : 임의의 한 개 문자를 의미한다.
%(퍼센트) : 임의의 여러 개 문자를 의미한다.
 
다시말하면 언더바는 1개이상의 문자를 뜻하는 것이고 퍼센트는 0개이상의 문자를 뜻하는 겁니다.
어떻게 쓰이냐구요?ㅎ 이제 말할거에요! 재촉은 안좋은겁니다.. 천천히 ㅎㅎ
위에서 홍길동을 예를 들었으니 여기에서도 홍길동을 가지고 예를 들겠습니다.
 
%홍길동% : 홍길동이라는 단어가 포함되는 문자열을 검색하는 연산
%홍길동 : 홍길동이라는 단어로 끝나는 문자열을 검색하는 연산
홍길동% : 홍길동이라는 단어로 시작하는 문자열을 검색하는 연산
___ : 정확히 세개의 문자로 구성된 문자열을 검색하는 연산
___% : 최소 세개의 문자로 구성되 문자열을 검색하는 연산
홍_동 : 세글자인데 첫번째 글자가 홍이고 세번째 글자가 동인 문자열을 검색하는 연산
이정도로 예를 들면 될까요?ㅎ 이번엔 실제로 한번 해보죠 ㅎ 사람 이름 예가 제일 좋은 거 같아요 ㅎ
 

 

제일먼저 해본건 A%를 써서 A로 시작하는 단어들을 찾아보았는데 ALLEN과 ADAMS가 나왔죠?ㅎ

 

여기에서는 A로 끝난것을 봤더니 없어서 결과물 있는게 나을거 같아서 %S로 S로 끝나는 것을 봤더니 세건이 나오죠 ㅎ

 

여기에서는 J로 시작해서 S로 끝나는 단어들을 J%S를 사용해서 검색해 보았습니다. 두건이 나오죠!

 

하지만 여기에서는 언더바 하나만 했더니 안나옴..ㅠㅠ 아까 말했듯이 _는 하나를 말합니다. 그래서 세글자중에 찾아서 안되는겁니다.

 

하지만 언더바 세개를 연달아서 붙인다면?ㅎ 다섯글자인것중에 첫번째 J 마지막 S로 되어있기 때문에 정확히 나오죠 ㅎ
 
길고 긴 like의 설명이 끝이 났습니다 ㅎ 어렵진 않은데 헷갈릴 수 있기때문에 좀 예를 들었더니 길어졌네요..ㅎ
이번에는 Is Null / Is Not Null을 설명 할 건데요. Null이라는 것을 알고 계신가요? Null은 모르는값이라는 뜻을 가지고 있습니다.
0은 Null이 아닙니다. 값이 입력이 된것이기 때문이죠. 아에 입력되지 않은 모르는 값을 Null이라고 합니다.
Is Null과 Is Not Null은 컬럼이 Null인 값인지 아닌지를 판별하는 조건입니다. 또 한번 봐야겠죠 ㅎ

 

먼저 Is Null을 조건으로 주었습니다. 이제 Null이 무엇인지 아시겠나요?ㅎ comm에 아무것도 입력되지 않은것. 이것이 Null입니다.

 

그럼 Not Null은? 이렇게 값이 있는 것이죠. 제가 말했듯이 0도 값이 있는 것이죠. 값이 0인것을 알고 있으니까 Not Null입니다.
 
연산자의 마지막인 집합 연산자를 다뤄 보겠습니다! 집합연산자는 표에 표시는 안했는데요. 집합을 뜻하는것이 무엇이 있을까요?
합집합, 차집합, 교집합 등이 있겠죠 ㅎ 벤다이어그램이 생각나실지 모르겠습니다 ㅎ

 

요런거 기억나시나요?ㅎㅎ 보면 아~ 이거!! 나 알아 하실겁니다. 전 그렇게 믿어요..ㅎ
합집합은 A와 B를 더한것. 교집합은 A와 B가 겹친 중간 부분. 차집합은 순서가 중요한데요. A의 기준이면 A를 제외한 값들을 표시하는 것.
이것들이 과연 SQL에서는 어떻게 쓰일까요? UNION, UNION ALL, INTERSECT, MINUS 이렇게 총 네가지가 있습니다.
UNION : 두 집합을 더해서 결과를 출력. 종복 값 제거하고 정렬하는 집합 연산
UNION ALL : 두 집합을 더해서 결과를 출력. 중복 값 제거하지 않고 모든 값을 정렬하지 않고 출력하는 집합 연산
INTERSECT : 두 집합의 교집합 결과를 출력. 정렬하는 집합 연산
MINUS : 두 집합의 차집합 결과를 출력함. 쿼리의 순서가 매우매우 중요합니다.
 
집합연산을 쓸경우 주의해야 할 사항들이 몇가지가 있습니다.
첫번째로 두집합의 SELECT절에서 컬럼수가 같아야 합니다.
두번째로 두집합의 SELECT절에서 컬럼의 데이터형이 같아야 합니다.
세번째로 컬럼명은 달라도 상관 없습니다.
이러한 세가기 주의사항이 있기때문에 잘 써야 하는 것이 집합 연산이지만 집합연산은 매우 위험한 성능저하를 가져오는 이유 중 하나 입니다. 왜냐하면 정렬을 쓰기 때문입니다. 정렬이라는 것은 오름차순, 내림차순 같은 차순으로 정렬하는 것이기 때문에 일일이 비교를 하고 끼워넣고를 하는 과정에서 성능이 매우매우매우 저하가 되는 그러한 위험이 있습니다. 이경우 인덱스를 써서 정렬하는것이 가장 효율적입니다. 인덱스는 뒤에서 따로 할거에욤 ㅎㅎ
 
UNION과 UNION ALL에 대한 설명부터 시작해야겠죠?ㅎ 합집합이라고 했습니다. 그리고 각자 다른 성격을 띄고 있구요 ㅎ
UNINO은 정렬을 하고 중복을 제거 하는데 UNION ALL은 정렬을 하지 않고 중복을 제거하지 않습니다. 성능적으로 보면 UNION ALL이 부담이 조금이나마 덜갑니다. 왜냐하면 중복제거를 하지 않고 정렬을 하지 않기때문이죠 ㅎ

 

두개를 비교해 보겠습니다. 현재는 조건이 달라서 중복값이 없기 때문에 행수는 똑같습니다. 하지만 EMPNO을 봤을 때 정렬이 되어 있는지 아닌지는 볼 수 있죠 ㅎ UNION은 EMPNO을 가지고 정렬을 했고 UNION ALL은 EMPNO을 가지고 정렬을 하지 않았습니다.

여기서 알 수 있는 것은 집합연산을 했을 경우 정렬을 맨처음 SELECT절의 첫번째 컬럼을 가지고 자동으로 하는 것이라고 알 수 있습니다.
 
이번엔 교집합을 알아보죠 ㅎ INTERSECT라는 것으로 A와 B의 교차하는 지점을 찾아서 출력하는것. 한번 살펴볼까요?

 

 왼쪽은 INTERSECT를 쓴 결과 화면이고 오른쪽은 AND를 쓴 화면입니다. 어떤가요? 똑같습니다. 한개의 테이블내에서 할 경우는 AND가 훨씬더 효율적인 것을 알 수가 있습니다. 상황에 따라서 집한연산보다는 그냥 AND나 OR를 가지고 연산을 하는것. 그것이 센스! 가 아닐까 싶네요. 다른 테이블을 조회할 때에도 조인이나 다른 것들을 해서 하면 좀더 집합연산보다 빠른 연산이 되지 않을까? 하는 것이 저의 생각입니다. 측정할 수 있으면 측정해서 나중에 알려드리도록 할께요 ㅎ

 
MINUS는 차집합이죠. 테이블의 선정 순서가 중요하다고 생각하는 부분은 A에서 B를 뺴느냐 B에서 A를 빼느냐의 중요성이죠 ㅎ

 
이번에도 비교해서 볼까 합니다. 왼쪽은 MINUS를 쓴 상태, 오른쪽은 연산자 !=를 썼습니다. 결과는? 조금 다르죠 ㅎ 하지만 행은 똑같습니다. 왜냐~ MINUS는 정렬이 된다고 했습니다. 하지만 !=를 쓴 오른쪽 결과물에서는 정렬을 쓰지 않았기 때문이죠 ㅎ

이처럼 MINUS의 경우에도 다른방법으로 하는 것이 더 효율적으로 쓸 수 있다는 것. 머리를 잘 굴리면 더 효율적으로 성능이 나옵니다.
 
위에서 계속 정렬 정렬 했는데요. SQL의 정렬에 대해서 말을 하겠습니다.
SQL에서의 정렬은 ORDER BY라는 명령으로 할 수 있습니다. 이는 SQL의 마지막에 붙여야 하는 키워드 입니다.
문법을 또 한번 쓰자면 이와 같겠죠 ㅎ 참고로 ORDER BY는 SELECT문의 맨 마지막에 써야합니다. 중간에 GROUP BY나 HAVING이 들어가도 맨 마지막에 들어가야 하는 아이 입니다 ㅎ

SELECT * | {[DISTINCT] column | expression [alias], ...}

FROM tables

[WHERE condition(s)]
[ORDER BY {column, expr, numeric_position} [ASC|DESC]];
 
ORDER BY의 종류에는 ASC와 DESC가 있습니다. ASC는 오름차순, DESC는 내림 차순인데요.
오름차순 내림차순 쉽게 생각하면, 오름차순은 행이 아래로 갈수록 숫자가 점점 커지는것, 글자순이 점점 증가하는것 EX)1,2,3,4
내림차순은 행이 아래로 갈수록 숫자가 점점 작아지는것, 글자순이 점점 감소하는것이 되겠죠 ㅎ EX)4,3,2,1
MINUS에서 든 예를 가지고 오름차순 내림차순을 해보도록 하겠습니다.

 

왼쪽이 오름차순, 오른쪽이 내림차순인건 잘 아시겠죠?ㅎ ASC, DESC로 판단하시지 마시고.. ENAME을 보고 판단을 하셔야죠 ㅎ

 

A로 시작해서 S로 점점 증가하기 때문에 오름차순, S로 시작해서 A로 점점 감소하기 때문에 내림차순 OK?ㅎ 아셨으면 좋겠네요 ㅎ
 
이렇게 이번포스트에서는 SELECT STEP의 마지막인 연산 & 조건부를 말했습니다. 다음에는 함수로 포스팅을 시작하겠습니다!
드디어 STEP 2네요..ㅎ ADMIN도 올려야하는데 나태해져서 큰일 어여어여 해야겠죵 ㅎㅎ 다음 포스트에서 뵙겠슴다 ㅎ