본문 바로가기
BackEnd/DB, SQL

SQL 1편: SELECT문

by summer_light 2021. 12. 17.

기본규칙

1) SQL문을 작성할 때는 적어도 테이블 이름열 이름은 대문자로 쓰는 것이 좋다:

SQL문은 대/소문자를 구분하지 않기 때문에, 대/소문자가 섞여 있는 프로그래밍 언어와 SQL문을 구분하고 가독성을 높이기 위해 실무에서는 SQL문 전체를 대문자로 사용하기도 한다.

 

 

 

데이터를 조회하는 방법 3가지

1) 셀렉션: 행 단위로 조회- 원하는 가로줄의 데이터만 선택

2) 프로젝션: 열 단위로 조회- 원하는 세로줄의 데이터만 선택

3) 조인: 두 개 이상의 테이블을 양 옆에 연결하여 하나의 테이블인 것처럼 데이터를 조회

 

 

 

SELECT 절, FROM 절: 데이터 조회

SELECT 열 이름1, 열 이름2...
FROM 조회할 테이블 이름;

 

- SELECT문은 출력되는 데이터의 정렬 순서를 보장하지 않는다. 

- 데이터를 제외한 SQL문의 띄어쓰기와 줄 바꿈은 명령 수행에 영향을 주지 않는다.  

*(애스터리스크): 전체를 나타낸다. 열 이름 대신 *을 쓰면 전체 열이 선택된다. 

 

 

 

DISTINCT: 중복 제거

선택한 열들의 데이터가 모두 중복되는 경우 제거한다. 

SELECT DISTINCT DEPTNO, JOB 
FROM EMP;

 

 

 

별칭 설정 4가지 방식 

최종 출력되는 열 이름을 임의로 지정할 수 있다. 이렇게 본래 열 이름 대신 붙이는 이름을 별칭(alias) 라고 한다. 다음 4가지 방식은 모두 같은 의미이다. A+B 연산을 한 열을 새롭게 C라고 이름을 짓겠다는 의미이다. 

 

1) A+B C

2) A+B "C"

3) A+B AS C

4) A+B AS "C"

 

네가지 방식 중에서도 큰 따옴표가 없고, AS를 명시하는 세 번째 방식이 주로 사용된다.

 

- AS가 있어야 어떤 단어가 별칭인지 쉽게 알아볼 수 있기 때문이다.

- "는 다른 프로그래밍 언어와 함께 사용될 경우 오류를 발생시킬 수 있는 요인이 될 수 있기 때문이다. SQL구문에도 "가 있는 경우 문자열의 지정 범위에 영향을 줄 수도 있다. 예를 들어 다음과 같은 코드에서 

String sql = "SELECT A, B, A+B AS "C" FROM TABLE";

문자열의 지정 범위가 의도하지 않게 아래처럼 되어 버려 오류가 발생한다.

"SELECT A, B, A+B AS "

" FROM TABLE"

 

 

 

ODRER BY: 출력 데이터 정렬하기

ORDER BY [정렬하는 열 이름] [ASC or DESC]

- SELECT문을 작성할 때 가장 마지막 부분에 쓴다. SELCT문을 통해 조회할 데이터를 모두 확정한 상태에서 정렬을 하기 때문이다.  

- 정렬 옵션을 설정하지 않은 경우 디폴트 값은 ASC(오름차순)이다. 여러 개의 정렬 기준을 설정하는 경우 먼저 쓴 조건이 더 높은 우선순위의 정렬 조건이 된다. 

- 정렬이 꼭 필요한 경우가 아니라면 무분별하게 사용하지 않는 것이 좋다. 정렬하는 작업 때문에 불필요한 시간 소모가 발생하기 때문이다. 이는 SQL문의 효율이 낮아진다는 의미이며, 곧 서비스의 응답 시간이 느려진다는 것을 뜻하기 때문이다. 

 

 

 

 

 

 

 

 

 

 

 

댓글