지지 On Air
2-1-2. SELECT문 본문
이제 SQL문의 시작으로 SELECT문 부터 살펴보겠습니다.
당연한 말이겠지만 1장 'SQL 기본' 에서는 SQL의 기초적인 내용부터 다루고 있으니 어렵지 않습니다.
꼭 이해하시고 활용하시면 좋겠습니다 :)
과목 II. SQL 기본과 활용
- 제1장 SQL 기본
> 제1절 SELECT 문
1. SELECT
SELECT문은 쉽게 말해 데이터를 조회하는 구문이다. 기본적인 골격은 다음과 같다.
SELECT [ALL/DISTINCT] 칼럼명1, 칼럼명2 ...
FROM 테이블명
- ALL : 디폴트 옵션이므로 별도로 표시하지 않아도 된다. 중복된 데이터가 있어도 모두 출력된다.
- DISTINCT : 중복된 데이터가 있을 경우 1건으로 처리해 출력한다.
쉬운 예제로 'PLAYER' 테이블에서 'PLAYER_ID', 'PLAYER_NAME', 'TEAM_ID', 'POSITION' 데이터를 조회하는 쿼리문을 작성하면 다음과 같다.
SELECT PLAYER_ID, PLAYER_NAME, TEAM_ID, POSITION
FROM PLAYER
이렇게 쿼리를 실행하면 다음과 같은 결과를 볼 수 있을것이다.
PLAYER_ID | PLAYER_NAME | TEAM_ID | POSITION |
A1001 | 박주호 | K01 | DF |
A1002 | 이승우 | K01 | FW |
A1003 | 조현우 | K02 | GK |
... | ... | ... | ... |
DISTINCT
DISTINCT 옵션을 사용한 예제는 다음과 같다.
TEAM_ID의 종류를 조회하기 위해 DISTINCT를 사용하였다.
SELECT DISTINCT TEAM_ID
FROM PLAYER
다음과 같은 결과가 출력된다.
TEAM_ID |
K01 |
K02 |
... |
애스터리스크(*) 사용하기
*는 해당 테이블의 모든 칼럼 정보를 보고싶을때 사용한다.
SELECT *
FROM PLAYER
다음과 같은 결과가 출력된다.
PLAYER_ID | PLAYER_NAME | TEAM_ID | POSITION | BACK_NO | HEIGHT | WEIGHT |
A0001 | 박주호 | K01 | DF | 6 | 175 | 71 |
A0002 | 이승우 | K01 | FW | 11 | 173 | 63 |
A0003 | 조현우 | K02 | GK | 21 | 189 | 75 |
A0004 | 기성용 | K03 | MF | 6 | 189 | 75 |
... | ... | ... | ... | ... | ... | ... |
해당 테이블의 모든 칼럼 정보가 출력된다.
ALIAS 부여하기
조회된 결과에 일종의 별명(ALIAS, ALIASES)을 부여해 칼럼 테이블을 변경할 수 있다.
칼럼 별명에 대한 사항을 정리하면 다음과 같다.
- 칼럼명 바로 뒤에 온다
- 칼럼명과 ALIAS 사이에 AS, as 키워드를 사용할 수 있다 (옵션)
- 이중 인용부호(Double quotation)는 ALIAS가 공백, 특수문자를 포함할 경우와 대소문자 구분이 필요할때 사용한다.
예제는 다음과 같다. 위의 예제에서 'PLAYER_NAME','POSITON' 등과 출력되었던 칼럼명을 '선수명', '위치' 등으로 출력하였다.
SELECT PLAYER_NAME AS 선수명, POSITION AS 위치, HEIGHT AS 키
FROM PLAYER
이때 AS는 꼭 사용하지 않아도 되지만, 가독성 측면에서 AS를 사용하는 편이 바람직하다.
결과는 다음과 같다.
선수명 | 위치 | 키 |
박주호 | DF | 175 |
이승우 | FW | 173 |
조현우 | GK | 189 |
기성용 | MF | 189 |
... | ... | ... |
2. 산술 연산자와 합성 연산자
산술연산자
산술 연산자는 NUMBER와 DATE 자료형에 대해 적용되며, 일반적으로 수학의 사칙연산과 동일하다. 또한 우선순위를 위한 괄호 적용이 가능하다. 수학에서와 마찬가지로 (),*,/,+,- 의 우선순위를 갖는다.
일반적으로 산술 연산을 사용하거나 특정 함수를 적용하면 칼럼의 레이블이 길어지기에 적절한 ALIAS를 새롭게 부여하는것이 좋다.
SELECT PLAYER_NAME AS '선수명', HEIGHT - WEIGHT AS '키-몸무게'
FROM PLAYER
PLAYER테이블에 선수명과 선수의 키-몸무게 값을 출력하는 쿼리문이다. 결과는 다음과 같다.
선수명 | 키-몸무게 |
박주호 | 4 |
이승우 | 10 |
조현우 | 14 |
기성용 | 14 |
... | ... |
합성연산자
문자와 문자를 연결하는 합성(CONCATENATION) 연산자를 사용하면 별도의 프로그램 도움없이 SQL 문장 만으로도 유용한 리포트를 출력 할 수 있다. 특징은 다음과 같다.
- 문자와 문자를 연결하는 경우 2개의 수직 바 (||)를 사용한다 (Oracle)
- 문자와 문자를 연결하는 경우 + 표시를 사용한다 (SQL Server)
- CONCAT (string1, string2) 함수를 사용할 수 있다. (Oracle, SQL Server)
- 칼럼과 문자 또는 다른 칼럼과 연결한다.
- 문자 표현식의 결과에 의해 새로운 칼럼을 생성한다.
다음 예제는 합성연산자를 사용하여 선수들의 이름, 키, 몸무게를 한 칼럼으로 조회하는 쿼리문이다.
SELECT PLAYER_NAME || ' 선수, ' || HEIGHT || ' cm, ' || WEIGHT || ' kg' as 체격정보
FROM PLAYER
결과는 다음과 같다.
체격정보 |
박주호 선수, 175 cm, 71 kg |
이승우 선수, 173 cm, 63 kg |
조현우 선수, 189 cm, 75 kg |
기성용 선수, 189 cm, 75 kg |
... |
이번 절에서는 selet문에 대한 기본 내용을 예제를 통해 다뤘습니다.
예제를 축구선수들로 시작했더니 생각나는 선수들을 계속 검색해봤네요 ㅋㅋㅋ
SQL을 처음 접하시는 분들도 쉽게 이해 하셨기를 바랍니다 :)
하트와 구독, 댓글은 큰 힘이 됩니다 ❤
본 포스팅은 '한국데이터산업진흥원' 에서 발행한 'SQL 전문가 가이드' 를 참고/인용 하였음을 밝힙니다.
'개발 > SQL [SQLD&SQLP]' 카테고리의 다른 글
2-1-3. 함수(2) (2) | 2022.07.22 |
---|---|
2-1-3. 함수(1) (4) | 2022.07.21 |
2-1-1. 관계형 데이터베이스 개요 [ SQLD / SQLP / SQL 전문가 가이드 ] (6) | 2022.07.17 |
1-2-5. 본질식별자 vs 인조식별자 [ SQLD / SQLP / SQL 가이드 ] (8) | 2022.07.16 |
1-2-4. Null 속성의 이해 [ SQLD / SQLP / SQL 가이드 ] (3) | 2022.07.14 |