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로 출력한 것이다.
반환되는 결과의 형태에 따라 분류한다.
단일값 쿼리: 실행 결과가 항상 1개 값이다.
다중값 쿼리: 실행 결과가 튜플 한개의 집합이다.
다중행 쿼리: 실행 결과가 튜플 n개의 집합이다.
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 테이블의 전체 튜플이 출력된다.
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; /* 에러 */