[DB] DML: 검색문 SELECT의 SELECT절

젠니·2023년 5월 26일
0

데이터베이스

목록 보기
4/21

SELECT

Format

SELECT 		[ALL|DISTINCT] {{컬럼명 [[AS] 컬럼_별칭],}⁺ | *}
FROM 		테이블_리스트
[WHERE 		투플_조건식]
[GROUP BY 	컬럼명 [HAVING 그룹_조건식]]
[ORDER BY 	{컬럼명|컬럼_별칭|컬럼_위치 [ASC|DESC],}⁺]
[LIMIT 	[offset,] row_count];

F - W - G - H - S - O - L 순서로 실행된다.

Example

SELECT 		PLAYER_ID, PLAYER_NAME, BACK_NO
FROM 		PLAYER
WHERE 		TEAM_ID = 'K07';

WHERE절의 조건을 만족하는 튜플을 선택해서 PLAYER 테이블에서 뽑아내라는 뜻이다.

TEAM_ID = 'K07'인 선수들의 PLAYER_ID, PLAYER_NAME, BACK_NO가 출력된다.

SELECT 		LENGTH('SQL Expert') AS ColumnLength;

'SQL Expert' 문자열의 길이를 return 한 것을 ColumnLength로 출력한 것이다.

Query 종류

반환되는 결과의 형태에 따라 분류한다.

  • 단일값 쿼리: 실행 결과가 항상 1개 값이다.

  • 다중값 쿼리: 실행 결과가 튜플 한개의 집합이다.

  • 다중행 쿼리: 실행 결과가 튜플 n개의 집합이다.

1. SELECT절

Format

SELECT 		[ALL|DISTINCT] {{컬럼명 [[AS] 컬럼_별칭],}⁺| *}
FROM 		테이블_리스트;

SELECT절은 프로젝트 연산자를 사용한다.
ALL은 중복 포함이고(디폴트), DISTINCT는 중복을 제거하고 하나만 남겨둔다.

Example

SELECT 		PLAYER_ID, PLAYER_NAME, TEAM_ID, POSITION, BACK_NO,
HEIGHT, WEIGHT
FROM 		PLAYER;

ALL이 디폴트여서 중복제거가 안되지만, PLAYER_ID는 PK이기 때문에 중복 튜플이 나타나지 않는다.

SELECT 	DISTINCT POSITION
FROM 	PLAYER;

NULL값도 포함한다.

*

SELECT 	*
FROM 	PLAYER;

이 경우, PLAYER 테이블의 전체 튜플이 출력된다.

AS

SELECT 	PLAYER_NAME AS 선수명, POSITION AS 위치, HEIGHT AS 키,
		WEIGHT AS 몸무게
FROM 	PLAYER;

AS를 사용하면 alias 별칭을 사용할 수 있다. AS는 생략할 수 있다.

다만, alias는 WHERE절에 사용할 수 없다.

SELECT 	PLAYER_NAME AS 선수명, POSITION AS 위치, HEIGHT AS 키,
		WEIGHT AS 몸무게
FROM 	PLAYER
WHERE 	선수명 = '김태호';

❗ 이렇게 PLAYER_NAME이 아닌 alias 선수명을 WHERE절에 사용할 수 없다. 에러가 뜬다.

산술 연산자

SELECT 	PLAYER_NAME 이름,
		ROUND(WEIGHT / ((HEIGHT/100)*(HEIGHT/100)), 2) 'BMI 비만지수'
FROM 	PLAYER;

마지막 2는 소수점 둘째자리수까지 출력하라는 뜻이다.

합성 연산자

컬럼-컬럼 / 컬럼-문자열을 연결해서 새로운 컬럼을 생성한다.

SELECT 	CONCAT(PLAYER_NAME, '선수,', HEIGHT, 'cm,', WEIGHT, 'kg')
		체격정보
FROM 	PLAYER;

여기서 잠깐, String끼리는 ' '로 연결할 수 있지만, 컬럼명은 연결할 수 없다.

SELECT '선수' PLAYER_NAME 'cm' 'kg'
FROM PLAYER; 							/* 에러 */
profile
젠니의 개발 라이푸우

0개의 댓글