본문 바로가기
데이터베이스/기초 SQL 입문

SQL문 작성 규칙 및 SELECT사용법

by 스키피땅콩버터 2020. 9. 1.
반응형

SELECT

 

SELECT [DISTINCT] {*|column명| 표현식} FROM 테이블명;

 

SELECT절 : 표시할 컬럼들을 지정함

FROM절 :  SELECT에 나열된 컬럼을 포함하는 테이블을 지정함

표현식 :  계산을 수행하거나 함수를 사용한 것을 의미함

 

SQL문 작성 규칙

- 인용부호를 붙이지 않으면 대소문자를 구분하지 않음

- 여러 라인에 걸쳐서 작성이 가능하며, 가독성을 위해 들여 쓰기 하는 것이 좋음

- 키워드는 여러행에 나누어 쓰거나 약어로 쓸 수 없음

(자료를 검색할때 사용하는 SELECT, FROM 이런 키워드를 줄여서 쓰거나 약어로 쓰면 안 되고 원래대로 써줘야 된다)

- 여러 컬럼을 검색할 경우 쉼표(,)로 컬럼을 구분함

- SELECT절에서 출력 결과에 표시할 순서대로 컬럼을 지정함

 

필요한 컬럼 지정 방법

1. 테이블 전체 컬럼을 검색할 경우 

-> 컬럼이름은 소문자, 대문자로 사용하든 똑같은 컬럼을 가져옵니다. (즉, 상관없다.)

 

SELECT * FROM player;

 

 

2. 테이블의 특정 컬럼을 검색할 경우 

->쉼표로 구분하여 지정

 

SELECT player_name, team_id, position FROM player;

 

 

3. 테이블 생성시(정의된 순서와 무관)

-> 컬럼을 표시할 순서대로 SELECT 절에 지정

 

SELECT team_id, position, player_name, player_id FROM player;

 

 

산술 연산자 종류

더하기(+), 빼기(-), 곱하기(*), 나누기(/)

간단한 사칙연산은 바로바로 시행해서 처리할 수 있으며, 테이블의 있는 자료를 조작해서 봐도 된다.

 

산술 연산자를 사용하여 숫자나 날짜 데이터에 대한 계산식 작성

 

SELECT player_name, height, height*2 FROM player_t;

실행(예)

연산자 우선순위

1. 곱하기 및 나누기를 더하기나 빼기보다 먼저 수행

2. 동등한 우선순위를 갖는 연산은 왼쪽에서 오른쪽으로 수행

3. 괄호를 사용해서 연산의 우선순위 조정 가능

 

 

컬럼 별칭(Alias)

- 컬럼의 원래 이름이 아닌 별도의 이름을 컬럼 HEADING에 표시

- 주로 연산이 수행된 컬럼에 사용함

- 컬럼명 다음에 AS를 쓴뒤, 그 뒤에 별칭으로 사용할 단어를 제시함

(AS는 생략 가능-> 콤마(,) 붙이기 전에 한깐뛰고 바로 별칭 써줘도 된다.)

- 특수 문자나 공백을 칼럼의 별칭으로 사용하고자 하면 별칭에 큰 따옴표("")를 사용함

 

Alias적용 전

 

Alias적용 후 

 

적용 완료 후 컬럼명이 SAL-> 급여로 변경된 것을 확인할 수 있습니다.

Select문에서 as를 생략해도 무관합니다.

 

문자 별칭에 숫자 앞쪽이나 중간에 오게 될때에는 "별칭" ("")를 붙여주셔야 합니다.

 

 

연결 연산자 

- 컬럼 또는 문자를 다른 컬럼과 연결할 때 사용함 (컬럼을 붙여서 조회한다고 보면 된다.)

- 두개의 수직 바(||)로 표시함

- 연산자의 좌우에 있는 컬럼이 결합되어 단일 컬럼으로 출력된다.

 

SELECT player_name || '운영자' FROM player;

 

 

 

중복행 제거 (DISTINCT)

- 컬럼에 있는 동일한 값은 한 번만 결과에 표시되도록함

- SELECT 바로 뒤에만 사용함 (From 전이여도 중간에 사용할 수 없다. 즉, 다른 컬럼 사이에 사용불가)

- DISTINCT 다음에 여러 열 지정이 가능함

- 모든 컬럼에 영향을 주어 결과로 고유한 컬럼 조합이 표시됨 

 

SELECT DISTINCT position FROM player;

SELECT DISTINCT team_id, position FROM player;

    그냥 조회시 
중복 제거 후 조회된 결과

두 개의 컬럼을 같이 중복제거시 -> 두개의 컬럼을 조합했을 때 중복을 제거하는 값을 보여준다.

두개의 컬럼을 조합하여 중복제거 결과


WHERE

- WHERE 절을 사용하여 질의에 반환되는 행을 제한할 수 있음

- WHERE 절은 조건을 기술하여, FROM절 바로 다음에 사용함

- 조건이 참일 경우 조건을 만족하는 행이 반환됨

- CHAR, VARCHAR2와 같은 문자형 타입과 DATE날짜 타입을 가진 컬럼을 특정 값과 비교 하기 위해서 

인용부호 (작은따옴표)로 묶어서 비교 처리를 해야 하지만

NUMBER 같은 숫자 형태의 값은 이용 부호를 사용하지 않고 그대로 사용하면 됨

SELECT [DISTINCT] {*| column명 | 표현식} FROM 테이블명 WHERE conditions(s);

 

비교 연산자

=(같음)

>(보다큼), >= (크거나 같음)

< (보다 작음), <= (작거나 같음)

<>, !=, ^=(같지 않음)

 

비교 연산자 

담당 포지션이  MF인 선수들의 선수 이름, 팀 ID, 포지션 조회

* 주의 :  컬럼의 문자 데이터 '' 꼭 감싸주어야 한다.

SELECT player_name, team_id, position 
FROM player WHERE
position = 'MF';

 

키가 180보다 크거나 같은 선수들의 이름, 키, 몸무게, 조회

*주의: 부등호 먼저 써주고 = 써주어야 한다.

SELECT player_name, height, weight
FROM player
WHERE height >= 180;

 

1=1로 조건을 넣어주면 전체 데이터가 조회된다. 

데이터를 추출하고 싶지 않을 때 간혹 1=2라는 조건을 넣어주기도 한다.

 

 

 

 

BETWEEN A AND B 연산자

- 조건절에 명시된 값이 지정된 A값과 B값 사이에 포함되는지 비교함

- 비교하는 값의 범위가 110에서 120 사이의 값이라고 하면, BETWEEN 110 AND 120으로 

형식으로 사용함

(주의!! 항상 사이에 있는 데이터를 조회할 때 작은 값을 먼저 큰 값을 뒤에 써주어야 합니다. )

 

몸무게가 85 이상 88 이하에 해당되는 선수들의 이름, 팀 ID, 몸무게 조회 

SELECT player_name, team_id, weight
FROM player
WHERE weight between 85 and 88;

 

추가적으로 문자로도 사이의 값을 조회할 수 있다.

아래의 'BOB'문자와 'JANE' 문자 사이의 값을 조회 -> B보다 크고 JANE보다 작은 값 들만 조회된 것을 볼 수 있다.

문자를 이용한 사이값 조회

 

 

IN 연산자

- 형태는 IN (값 1, 값 2, 값 3...)이며, 비교대상이 괄호 안의 값 중 하나와 일치하는 지를 확인함

- 비교하는 값이 하나이더라도 반드시 괄호와 같이 사용해야 함

- IN다음 비교하는 값은 문자 타입, 숫자 타입, 날짜 타입 모두 사용할 수 있음

즉, 어느 것 중에 하나이다. 라고 보면 된다.

 

[포지션이 GK, MF, IC에 속하는 선수들의 이름 조회]

SELECT player_name, e_player_name
FROM player
WHERE position in('GK', 'MF', 'TC');

 

[키가 168, 178, 188인 선수들의 이름, 팀 ID, 키 조회]

SELECT player_name, team_id, height
FORM player
WHERE height in(168, 178, 188);

 

 

 

LIKE 연산자(100프로 일치하는 데이터를 조회는 것은 아니다.)

- 특정 패턴에 속하는 값을 조회하고자 하는 경우 사용

- LIKE를 사용하여 특정 문자나 문자열이 포함되어 있는 지를 확인함

- Wildcard문자 (%, _)를 이용해 문자열 부분 매칭 여부를 확인함

   1. % 는 0개 문자 또는 1개 이상의 문자열이 올 수 있음을 의미함

   2. _(언더스코어)는 반드시 1개 문자가 있어야 함을 의미함

 

[이름첫 번째 글자가 '김'인 선수들 이름, 포지션 조회]

SELECT player_name, position
FROM player
WHERE player_name LIKE '김%';

 

[이름의 두 번째 글자가 '동'인 선수들의 이름, 팀 ID 조회]

SELECT player_name, team_id
FROM player
WHERE player_name LIKE '_동%';

세 번째의 값에 동이 들어가길 원한다면  ' __동%' 해주면 된다.

이처럼 원하는 위치만큼 언더바를 붙여주면 됩니다.

 

 

 

IS NULL

NULL값이란?

- 한 행의 특정 컬럼에 데이터 값이 없으면 그 값을 NULL(널)이라고 한다.

- 0이나 공백 문자 ('')가 들어가 있는 것과는 다르다.

- null값을 포함하는 연산의 경우 결과 값도 널임

null값을 연산하면 null

 

 

IS NULL (값이 NULL인 값)

- =, > , < 비교 연산자를 사용한 경우 항상 조건이 FALSE가 된다.

- IS NULL 연산자를 사용해서 NULL 여부를 확인함

IS NULL 

 

다음 글에는 복합 조건 지정 및 데이터 정렬하는 방법을 정리하도록 하겠습니다!

'데이터베이스 > 기초 SQL 입문' 카테고리의 다른 글

변환 함수  (0) 2020.09.13
날짜 연산 및 날짜 함수  (0) 2020.09.11
문자 숫자 함수  (0) 2020.09.06
복합조건 지정 및 데이터 정렬  (0) 2020.09.06
데이터베이스의 개념 및 SQL정의  (0) 2020.08.30