사용 관점에서 단순히 SELECT와 FROM 절만 이용하면, 실제로 원하는 자료가 제대로 있는지 확인하기 어렵다. 성능 관점에서 보면, SELECT와 FROM 절만 이용하는 필요하지 않은 자료들까지 DB로부터 요청하는 SQL문은 대량의 데이터들을 검색하기 위해 DB가 설치되어 있는 서버의 CPU나 MEMORY 같은 시스템 자원들을 과다하게 사용함으로써 많은 사용자들의 QUERY에 대해 바로 처리를 해주지 못하게 되고, 또한 검색된 많은 자료들이 네트워크를 통해서 전달됨으로써 문제점들이 발생하게 된다.
SELECT [DISTINCT] 칼럼명 [ALIAS명] FROM 테이블명 WHERE 조건식; |
UPDATE 테이블명 SET(컬럼명=컬럼값, ...) WHERE 조건식; |
DELETE FROM 테이블명 WHERE 조건식; |
SELECT *
FROM TEAM
WHERE TEAM_NAME = 'FC서울';
->처리 우선순위 : NOT > AND > OR
예시1) 팀ID가 K02이고, 포지션이 미드필더이며, 키가 180 이상인 플레이어의 [이름,등번호, 포지션]을 조회하라
SELECT PLAYER_NAME, BACK_NO, POSITION
FROM PLAYER
WHERE TEAM_ID = 'K02'
AND POSITION = 'MF'
AND HEIGHT >= 180;
예시2) 팀ID가 K02 또는 K07이고, 포지션이 미드필더 또는 DF인 플레이어의 [이름,등번호, 포지션]을 조회하라
SELECT PLAYER_NAME, BACK_NO, POSITION
FROM PLAYER
WHERE (TEAM_ID = 'K02' OR TEAM_ID = 'K07')
AND (POSITION = 'MF' OR POSITION = 'DF');
연산자 | 의미 |
BETWEEN a AND b | a와 b의 값 사이에 있으면 TRUE |
IN(LIST) | 리스트에 있는 값 중에서 어느 하나라도 일치하면 TRUE |
LIKE '비교문자열' | 비교문자열과 형태가 일치하면 TRUE |
IS NULL | NULL 값이면 TRUE |
LIKE에서는 '와일드카드' 를 사용할 수 있다.
와일드카드란? 한개 혹은 0개 이상의 문자를 대신해서 사용하기 위한 특수문자
NULL이란?
값이 존재하지 않는 것으로/ 확정되지 않은 값을 표현할 때 사용된다.
즉 어떤 값보다 크거나 작지도 않고 공백이나 0과 달리 비교 자체가 불가능한 값인 것이다.
그렇기 때문에 NULL값의 비교 연산은 불가능하며,
만일 비교연산을 실행하면 FALSE를 리턴하고,
수치 연산자( + , - , * , /)를 통해서 NULL값과 연산을 하게 되면 NULL값을 리턴하게 된다.
단지 NULL 값인지 아닌지를 IS를 통해서만 판단할 수 있다.
(한마디로 IS NULL 로만 널값 여부를 판단할 수 있다.)
종류 | 연산자 | 의미 |
부정 논리 연산자 | != | 같지 않다. (VAX, UNIX, PC) |
^= | 같지 않다. (IBM) | |
<> | 같지 않다. (모든 운영체제에서 사용가능) | |
NOT 칼럼명 = | ~와 같지 않다. | |
NOT 칼럼명 > | ~보다 크지 않다. | |
부정 SQL 연산자 | NOT BETWEEN a AND b | a 미만, b 초과 면 TRUE |
NOT IN(list) | list값과 일치하지 않으면 TRUE | |
IS NOT NULL | NULL이 아니면 TRUE |