일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 프로그래머스
- 파이썬
- 1과목
- MYSQL
- SW봉사
- 자바
- python
- 시나공
- 코틀린
- 백준알고리즘
- 소프티어
- 문제풀이
- 정보처리산업기사
- BFS
- 공부일지
- 코딩교육봉사
- 회고
- kotlin
- SQL
- 백준
- C++
- 코딩봉사
- 스프링
- 백준 알고리즘
- 알고리즘
- java
- programmers
- CJ UNIT
- softeer
- 데이터베이스
- Today
- Total
JIE0025
[MSSQL] SELECT, MSSM 관련 개념 본문
<SELECT절>
쿼리의 결과를 테이블로 출력하고자 하는 특성(컬럼)을 지정
컬럼 구분자는 컴마 , 이다.
SELECT (출력하고자 하는 컬럼) FROM (테이블) |
SELECT orderid, orderdate, custid, empid
FROM Sales.Orders
<SELECT 를 컴마 없이 사용하면>
SMMS는
SELECT orderid AS orderdate와 같이 해석한다
<별칭의 사용>
쿼리에서 별칭은 변수처럼 사용가능한 것이다.
YEAR(orderdate) 를 별칭으로 orderyear을 사용하는 것을 볼 수 있다.
쿼리문 작성은 SELECT > FROM > WHERE 을 사용했지만,
쿼리문 실행은 FROM > WHERE > SELECT 순으로 실행되기 떄문에
WHERE 에서 별칭을 사용할 수 없다.
따라서 정상적으로 오류 없이 돌리기 위해
orderyear 대신 YEAR(orderdate)를 사용해야 한다.
두번째 실행 순서 오류
위와 같은 형식의 오류이다.
실행순서가 HAVING > SELECT이기 떄문에 별칭 사용이 안된다.
따라서
이렇게 바꾸어 주면 오류가 사라진다.
< DISTINCT >
중복된 결과는 출력하지 않는 것.
다음 명령어를 실행시켜보았을 떄 중복되는 결과를 확인할 수 있다.
DISTINCT 를 사용하면, 중복된 행들이 사라진다.
<SELECT 에서 별칭을 사용했을 때 나는 오류>
같은 SELECT 문에서 별칭을 사용한다면 어떨까?
오류가 나는것을 볼 수 있다.
SELECT 절 내에서 만든 컬럼 별칭이라고 하더라도
동일한 SELECT 절 내에서 참조할 수 없다.
>> SQL 코드 실행의 동시성
SELECT절을 살펴보자.
조각1 : YEAR(orderdate) AS orderyear
조각2 : orderyera +1 AS next year
조각1 이 실행된 후 조각2가 실행되는 것이 아닌,
조각1과 조각2가 동시에 실행되기 떄문에 별칭을 사용할 수 없는 것이다.
SQL 특징 2가지를 꼭 기억해야한다.
1) 구문 순서와 실행순서가 다른다
구문순서
SELECT > FROM > WHERE > GROUP BY > HAVING > ORDER BY
실행순서 (컴퓨터 처리 순서 )
FROM > WHERE > GROUP BY > HAVING > SELECT > ORDER BY
2) 같은 절에서 쿼리 조각들은 동시에 실행된다.
'개발 > Database' 카테고리의 다른 글
[MSSQL] 윈도우 함수 Window Function (0) | 2021.04.07 |
---|---|
[MSSQL] TOP filter 와 정렬(ASC,DESC) (0) | 2021.04.07 |
[MSSQL] GROUP BY, HAVING 이해하기 (0) | 2021.04.07 |
[MSSQL] SQL 쿼리 기초이론, 제약조건 (0) | 2021.03.31 |
[MSSQL] SQL 서버와 SSMS(관리도구) 설치, 데이터베이스 테이블 생성 (0) | 2021.03.11 |