관리 메뉴

JIE0025

[MSSQL] SELECT, MSSM 관련 개념 본문

개발/Database

[MSSQL] SELECT, MSSM 관련 개념

Kangjieun11 2021. 4. 7. 14:24
728x90

<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) 같은 절에서 쿼리 조각들은 동시에 실행된다.