04. SQL syntax(2) - Query
- SELECT
1 | SELECT s/n [,s/n] FROM t/n [WHERE] [GROUP BY] [HAVING BY] [ORDER BY] | cs |
[WHERE], [GROUP BY], [HAVING BY], [ORDER BY]의 순서는 무관하나
QUERY의 효율성에 최적화된 방식이다.
* Expression 산술식
SELECT문에서 가져올 데이터에 대하여 특정 계산을 통해 목적에 맞는 결과 값이 나온다.
이를 통해 코딩할 때, 번거로움이 한층 사라진다.
1 2 3 4 5 | SELECT salary * 12 [AS] 연봉 FROM table; /* (특정 Title의 내용을 변경 할 때)(AS=>ALIAS) */ SELECT salary * 12 [AS] "연봉 (상여금 제외)" FROM table; /* (title 내용에 공백이 필요할 때 Double Quotation이 필요하다.) */ | cs |
* || 출력할 값 Append
1 | SELECT name||'님' from emp_test; | cs |
* DISTINCT c/n [,c/n]
중복 배제 출력. 여러 Title을 출력할때 그 조합에 대하여 중복을 검사한다.
한 Column이 중복된 값을 가질지라도 다른 Column이 중복된 값이 아니면 중복되어 출력된다.
SELECT DISTINCT name, dept_name FROM emp_test;
* WHERE
기본 연산자
1 2 3 4 5 6 7 | s/n = value s/n >= value /* (문자도 가능) */ /* <, >, =, >=, <=, !=(or <>), (DataType이 DATE인 경우 s/n >= 'value') */ | cs |
연산자 우선순위
1 2 | s/n >= value AND, OR ... /* (우선순위 : Not -> AND -> OR) */ | cs |
BETWEEN
1 2 3 4 5 6 | s/n BETWEEN valueA AND valueB /* 조건 : valueA < valueB. valueA >= valueB일 경우 에러가 발생하지 않지만 출력이 안나온다. valueA, valueB값 포함하여 출력, 문자도 마찬가지 적용가능 NOT BETWEEN도 적용가능 */ | cs |
LIKE
1 2 3 4 5 6 7 | s/n LIKE '김%' /* 김으로 시작하는 문자들을 가진 value */ s/n LIKE '김_' /* 김으로 시작하는 1개의 문자를 가진 value */ /* 응용 : _김_, 김__, 김%, %김% %는 무한개로 써도 1개 쓰는거랑 같다. DATE에도 적용가능 */ | cs |
IN(value [,value])
()안에 있는 값이 있는 것을 출력, NOT IN 적용 가능.
ESCAPE
Keyword를 일반 문자로 변환하는 Keyword
1 | WHERE name LIKE '__/%' ESCAPE '/'; | cs |
1 2 | ALL(value, value), ANY(value, value) /* 최소값, 최대값 */ | cs |
ORDER BY c/n [ASC | DESC][,c/n]
정렬.
NULL은 최대값으로 인식.(NULL자료를 조절하고 싶다면 NULLS FIRST 혹은 NULLS LAST를 작성한다.)
정렬 방식의 Default는 ASC.(전제척 순서 : 숫자 -> 문자(영어 -> 한글) 순으로)
c/n에 들어갈 수 있는 값 : expr | column | ALIAS | column index
c/n은 테이블에 있는 것중에 무엇이든 가능하다.(SELECT 앞에 있는 c/n이 없어도 무관)
출력할 c/n이 여러개 있을 때, 가장 앞쪽에 있는 c/n부터 순차적으로 정렬한다.
'Database > Theory' 카테고리의 다른 글
[Database/Theory]06. SQL syntax(4) - Constraint, rest (0) | 2016.06.07 |
---|---|
[Database/Theory]05. SQL syntax(3) - Function (0) | 2016.06.06 |
[Database/Theory]03. SQL syntax(1) - DDL, DML (0) | 2016.06.06 |
[Database/Theory]02. Notation rule, Data type (0) | 2016.06.06 |
[Database/Theory]01. 정의, SQL언어의 종류 (0) | 2016.06.06 |